<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>

<product name="Papyrus IoTML" uid="org.eclipse.papyrus.iotml.product" id="org.eclipse.papyrus.iotml.product" application="org.eclipse.ui.ide.workbench" version="1.0.0" useFeatures="true" includeLaunchers="true">

   <aboutInfo>
      <image path="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus.png"/>
      <text>
         Papyrus IoTML

Version: {1}
Build id: {0}

Copyright CEA LIST and others 2019. http://www.eclipse.org/papyrus

(c) Copyright Eclipse contributors and others 2000, 2019.  All rights reserved. Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation, Inc., https://www.eclipse.org/. The Eclipse logo cannot be altered without Eclipse&apos;s permission. Eclipse logos are provided for use under the Eclipse logo and trademark guidelines, https://www.eclipse.org/logotm/. Oracle and Java are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

This product includes software developed by other open source projects including the Apache Software Foundation, https://www.apache.org/.
      </text>
   </aboutInfo>

   <configIni use="default">
   </configIni>

   <launcherArgs>
      <programArgs>-showsplash org.eclipse.papyrus.iotml.rcp --launcher.XXMaxPermSize 256m
      </programArgs>
      <programArgsLin>--launcher.GTK_version 2
      </programArgsLin>
      <vmArgs>-Xms256m -Xmx1024m -XX:MaxPermSize=256m -Dosgi.bundlefile.limit=200
      </vmArgs>
      <vmArgsLin>-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false
      </vmArgsLin>
      <vmArgsMac>-Xdock:icon=../Resources/Papyrus.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
      </vmArgsMac>
   </launcherArgs>

   <windowImages i16="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus16.png" i32="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus32.png" i48="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus48.png" i64="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus64.png" i128="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus128.png" i256="/org.eclipse.papyrus.iotml.rcp/icons/Papyrus256.png"/>

   <splash
      location="org.eclipse.papyrus.iotml.rcp"
      startupProgressRect="0,330,460,20"
      startupMessageRect="7,4,445,16"
      startupForegroundColor="9C9E9F" />
   <launcher name="papyrus-iotml">
      <linux icon="../org.eclipse.papyrus.iotml.rcp/icons/Papyrus.xpm"/>
      <macosx icon="../org.eclipse.papyrus.iotml.rcp/icons/Papyrus.icns"/>
      <win useIco="true">
         <ico path="../org.eclipse.papyrus.iotml.rcp/icons/Papyrus.ico"/>
         <bmp/>
      </win>
   </launcher>


   <vm>
   </vm>

   <license>
        <url>http://eclipse.org/legal/epl/notice.php</url>
        <text>
   Eclipse Foundation Software User Agreement
November 30, 2017

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY &quot;CONTENT&quot;).
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR
NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS
OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the
Eclipse Foundation is provided to you under the terms and conditions of
the Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
provided with this Content and is also available at https://www.eclipse.org/legal/epl-2.0/.
For purposes of the EPL, &quot;Program&quot; will mean the Content.

Content includes, but is not limited to, source code, object code,
documentation and other files maintained in the Eclipse Foundation source code
repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available
as downloadable archives (&quot;Downloads&quot;).

      - Content may be structured and packaged into modules to facilitate delivering,
         extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;),
         plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).
       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)
         in a directory named &quot;plugins&quot;.
       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.
         Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.
         Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version
         numbers of the Plug-ins and/or Fragments associated with that Feature.
       - Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files
         named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be
contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and
conditions governing Features and Included Features should be contained
in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature
Licenses may be located in any directory of a Download or Module
including, but not limited to the following locations:

       - The top-level (root) directory
       - Plug-in and Fragment directories
       - Inside Plug-ins and Fragments packaged as JARs
       - Sub-directories of the directory named &quot;src&quot; of certain Plug-ins
       - Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the
Provisioning Technology (as defined below), you must agree to a license (&quot;Feature 
Update License&quot;) during the installation process. If the Feature contains
Included Features, the Feature Update License should either provide you
with the terms and conditions governing the Included Features or inform
you where you can locate them. Feature Update Licenses may be found in
the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
Such Abouts, Feature Licenses, and Feature Update Licenses contain the
terms and conditions (or references to such terms and conditions) that
govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)
       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR
TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License
is provided, please contact the Eclipse Foundation to determine what terms and conditions
govern that particular Content.

Use of Provisioning Technology

The Eclipse Foundation makes available provisioning software, examples of which include,
but are not limited to, p2 and the Eclipse Update Manager (&quot;Provisioning Technology&quot;) for
the purpose of allowing users to install software, documentation, information and/or
other materials (collectively &quot;Installable Software&quot;). This capability is provided with
the intent of allowing such users to install, extend and update Eclipse-based products.
Information about packaging Installable Software is available at
http://eclipse.org/equinox/p2/repository_packaging.html (&quot;Specification&quot;).

You may use Provisioning Technology to allow other parties to install Installable Software.
You shall be responsible for enabling the applicable license agreements relating to the
Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
in accordance with the Specification. By using Provisioning Technology in such a manner and
making it available in accordance with the Specification, you further acknowledge your
agreement to, and the acquisition of all necessary rights to permit the following:

       1. A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute
          the Provisioning Technology on a machine (&quot;Target Machine&quot;) with the intent of installing,
          extending or updating the functionality of an Eclipse-based product.
       2. During the Provisioning Process, the Provisioning Technology may cause third party
          Installable Software or a portion thereof to be accessed and copied to the Target Machine.
       3. Pursuant to the Specification, you will provide to the user the terms and conditions that
          govern the use of the Installable Software (&quot;Installable Software Agreement&quot;) and such
          Installable Software Agreement shall be accessed from the Target Machine in accordance
          with the Specification. Such Installable Software Agreement must inform the user of the
          terms and conditions that govern the Installable Software and must solicit acceptance by
          the end user in the manner prescribed in such Installable Software Agreement. Upon such
          indication of agreement by the user, the provisioning Technology will complete installation
          of the Installable Software.

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&apos;s laws,
regulations and policies concerning the import, possession, or use, and
re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
         </text>
   </license>

   <plugins>
   </plugins>

   <features>
      <feature id="org.eclipse.platform"/>
      <feature id="org.eclipse.equinox.p2.user.ui"/>
      <feature id="org.eclipse.rcp"/>
      <feature id="org.eclipse.papyrus.iotml.feature" installMode="root"/>
      <feature id="org.eclipse.papyrus.iotml.rcp.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.iotml.wot.td.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.components.main.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.languages.common.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.languages.cpp.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.languages.java.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.transformation.main.feature" installMode="root"/>
	  <feature id="org.eclipse.papyrus.designer.monitoring.feature" installMode="root"/>
	  <!--<feature id="org.oneclicklabs.java.restful" installMode="root"/>-->
	  <feature id="org.eclipse.nebula.feature" installMode="root"/>
	  <feature id="org.eclipse.jetty.bundles.f" installMode="root"/>
	  <feature id="org.eclipse.emf.compare"/>
      <feature id="org.eclipse.emf.compare.diagram.gmf"/>
      <feature id="org.eclipse.emf.compare.egit"/>
      <feature id="org.eclipse.emf.compare.ide.ui"/>
      <feature id="org.eclipse.emf.compare.uml2"/>
      <feature id="org.eclipse.egit"/>
      <feature id="org.eclipse.jgit"/>
   </features>

   <configurations>
      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="1" />
      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
      <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
      <plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
      <property name="org.eclipse.update.reconcile" value="false" />
      <property name="osgi.bundles.defaultStartLevel" value="4" />
      <property name="osgi.instance.area.default" value="@user.home/workspace-papyrus-iotml" />
   </configurations>

   <repositories>
      <repository location="http://download.eclipse.org/modeling/mdt/papyrus/updates/nightly/master/" enabled="true" />
      <repository location="http://download.eclipse.org/releases/2019-03/" enabled="true" />
      <repository location="http://download.eclipse.org/eclipse/updates/4.11/" enabled="true" />
      <repository location="https://hudson.eclipse.org/papyrus/job/papyrus-marte-oxygen/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.marte.p2/target/repository/" enabled="true" />
      <repository location="https://hudson.eclipse.org/papyrus/view/Moka/job/papyrus-moka-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.moka.p2/target/repository/" enabled="true" />
      <repository location="https://hudson.eclipse.org/papyrus/view/Sysml/job/papyrus-sysml14-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.sysml14.p2/target/repository/" enabled="true" />
      <repository location="https://hudson.eclipse.org/papyrus/job/papyrus-designer-photon/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/" enabled="true" />
      <repository location="http://download.eclipse.org/modeling/mdt/papyrus/components/incubation" enabled="true" />
   </repositories>

   <preferencesInfo>
      <targetfile overwrite="true"/>
   </preferencesInfo>

   <cssInfo>
   </cssInfo>

</product>
