# Notices for Eclipse EASE Modules

This content is produced and maintained by the Eclipse EASE project.

* Project home: https://www.eclipse.org/ease/

## Trademarks

Eclipse EASE is a trademark of the Eclipse Foundation.

## Copyright

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

## 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:

* http://git.eclipse.org/c/ease/org.eclipse.ease.core.git
* http://git.eclipse.org/c/ease/org.eclipse.ease.modules.git
* http://git.eclipse.org/c/ease/org.eclipse.ease.scripts.git
* https://git.eclipse.org/cgit.cgi/www.eclipse.org/ease.git

