# Copyright (c) 2014-2016 Eike Stepper (Loehne, Germany) and others.
# 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
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
#    Eike Stepper - initial API and implementation

# UpdateTrigger = 20160322-1212

bin.includes = META-INF/,\
               about.html,\
               plugin.properties,\
               docs.txt,\
               html/,\
               about.mappings
src.includes = about.html,\
               buildLib.ant
