# Copyright (c) 2016, 2018 Obeo.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors: Obeo - initial API and implementation

featureName=EEF Extension Reference Widget Feature
featureProvider=Eclipse Modeling Project

descriptionUrl=http://www.eclipse.org/eef
description=Simple reference widget for Eclipse EEF
copyrightUrl=http://www.eclipse.org/eef
copyright=\
Copyright (c) 2016, 2018 Obeo and others.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License v2.0\n\
which accompanies this distribution, and is available at\n\
https://www.eclipse.org/legal/epl-2.0\n\
\n\
SPDX-License-Identifier: EPL-2.0\n\
\n\
Contributors:\n\
    Obeo - initial API and implementation\n

licenseUrl=https://www.eclipse.org/legal/epl-2.0
license=\
Eclipse Public License v2.0\
\n\
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.\n