<pre>
# Notices for Eclipse MDM|BL

This content is produced and maintained by the Eclipse MDM|BL project,
it is a project of the openMDM(R) Eclipse Working Group.

* Project home: https://projects.eclipse.org/projects/technology.mdmbl

## Trademarks

Eclipse MDM|BL, MDM|BL and Eclipse openMDM(R) logo are registered trademarks
of the Eclipse Foundation.

## Copyright

All content is the property of the following respective authors or their employers.
For more information regarding authorship of content, please consult the listed
source code repository logs.

Copyright (c) 2016-2018 Gigatronik Ingolstadt GmbH
Copyright (c) 2016-2019 Peak Solution GmbH
Copyright (c) 2017-2018 science + computing AG Tuebingen (ATOS SE)
Copyright (c) 2017-2018 Canoo Engineering AG
Copyright (c) 2017 Florian Schmitt
Copyright (c) 2017-2019 Angelika Wittek
Copyright (c) 2018 Elektronische Fahrwerksysteme GMBH
Copyright (c) 2018-2019 Karakun AG

## Declared Project Licenses

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

## Source Code

The project maintains the following source code repositories:

org.eclipse.mdm.api.base.git          - The openMDM(R) API.
org.eclipse.mdm.api.default.git     - Extension of the openMDM(R) API containing default elements.
org.eclipse.mdm.api.odsadapter.git  - ODS implementation of persistence adapter.
org.eclipse.mdm.nucleus.git         - Core building blocks for the openMDM Business Logic and Web Frontend.

## Third-party Content

The Content includes items that have been sourced from third parties as set out below.
If you did not receive this Content directly from the Eclipse Foundation, the following
is provided for informational purposes only, and you should look to
the Redistributor's license for terms and conditions of use.


@angular/animations:7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api/animations
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/cdk:7.1.1
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api
    * Source:  https://github.com/angular/angular/releases/tag/7.1.1


@angular/common@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api/common
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4r

@angular/compiler@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/core@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/forms@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/http@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/platform-browser-dynamic@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/platform-browser@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/router@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

bootstrap@4.1.3
    * License: MIT
    * Licence Path: https://github.com/twbs/bootstrap/raw/master/LICENSE
    * Project: https://getbootstrap.com/
    * Source:  https://github.com/twbs/bootstrap

class-transformer@0.1.6
    * License: MIT
    * Licence Path: https://github.com/typestack/class-transformer/blob/master/LICENSE
    * Project: https://github.com/pleerock/class-transformer
    * Source:  https://github.com/pleerock/class-transformer

core-js@2.6.0
    * License: MIT
    * Licence Path: https://github.com/zloirock/core-js/raw/master/LICENSE
    * Project: https://github.com/zloirock/core-js
    * Source:  https://github.com/zloirock/core-js/releases/tag/v2.6.0

file-saver@1.3.3
    * License: MIT
    * Licence Path: https://github.com/eligrey/FileSaver.js/raw/master/LICENSE.md
    * Project: https://github.com/eligrey/FileSaver.js
    * Source:  https://github.com/eligrey/FileSaver.js

font-awesome@4.7.0
    * License: MIT
    * Licence Path: https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt
    * Project: https://fontawesome.com/
    * Source:  https://github.com/FortAwesome/Font-Awesome

ng2-split-pane@1.3.1
    * License: MIT
    * Licence Path: https://github.com/wannabegeek/ng2-split-pane/raw/master/LICENSE
    * Project: https://github.com/wannabegeek/ng2-split-pane
    * Source:  https://github.com/wannabegeek/ng2-split-pane

ngx-bootstrap@3.1.2
    * License: MIT
    * Licence Path: https://github.com/valor-software/ngx-bootstrap/blob/v3.1.2/LICENSE
    * Project: https://valor-software.com/ngx-bootstrap
    * Source:  https://github.com/valor-software/ngx-bootstrap/tree/v3.1.2

primeicons:1.0.0
    * License: MIT
    * Licence Path: https://github.com/primefaces/primeicons/blob/1.0.0/LICENSE
    * Project: https://www.primefaces.org/primeng
    * Source:  https://github.com/primefaces/primeicons/tree/1.0.0

primeng@7.0.1
    * License: MIT
    * Licence Path: https://github.com/primefaces/primeng/blob/7.0.1/LICENSE.md
    * Project: https://www.primefaces.org/primeng
    * Source:  https://github.com/primefaces/primeng/tree/7.0.1

rxjs@5.1.0
    * License: Apache-2.0
    * Project: https://rxjs-dev.firebaseapp.com/
    * Source:  https://github.com/ReactiveX/rxjs/tree/6.3.3

rxjs-compat:6.3.3
    * License: Apache-2.0
    * Project: https://rxjs-dev.firebaseapp.com/
    * Source:  https://github.com/ReactiveX/rxjs/tree/6.3.3/compat


zone.js@0.8.26
    * License: MIT
    * Licence Path: https://github.com/angular/zone.js/raw/master/LICENSE
    * Project: https://github.com/angular
    * Source:  https://github.com/angular/zone.js/releases/tag/v0.8.26
    
FFAMFAMFAM Silk Icon, Version 1.3
    * License: Creative Commons Attribution 3.0 License 
    * Licence Path: https://creativecommons.org/licenses/by/3.0/
    * Project: http://www.famfamfam.com/lab/icons/silk/
    * Source:  http://www.famfamfam.com/lab/icons/silk/


## Cryptography

Content may contain encryption software. The country in which you are currently
may have restrictions on the import, possession, and use, and/or re-export to
another country, of encryption software. BEFORE using any encryption software,
please check the country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is
permitted.
</pre>
