# Copyright (c) 2011-2016 EclipseSource Muenchen 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
# 
# Contributors:
# Eugen Neufeld - initial API and implementation

bin.includes = .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = about.html
