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

<product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="10.2.0.qualifier" useFeatures="false" includeLaunchers="true">

   <aboutInfo>
      <image path="/org.eclipse.cdt.debug.application/icons/about.png"/>
      <text>
         %aboutText
      </text>
   </aboutInfo>

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

   <launcherArgs>
      <programArgs>-data @noDefault
      </programArgs>
      <vmArgsLin>-Xms100m -Xmx512m  -Dosgi.requiredJavaVersion=11
      </vmArgsLin>
      <vmArgsMac>-Xms100m -Xmx512m  -XstartOnFirstThread -Dosgi.requiredJavaVersion=11 -Dorg.eclipse.swt.internal.carbon.smallFonts
      </vmArgsMac>
      <vmArgsWin>-Xms100m -Xmx512m   -Dosgi.requiredJavaVersion=11
      </vmArgsWin>
   </launcherArgs>

   <windowImages i16="/org.eclipse.cdt.debug.application/icons/cc16.png" i32="/org.eclipse.cdt.debug.application/icons/cc32.png" i48="/org.eclipse.cdt.debug.application/icons/cc48.png" i64="/org.eclipse.cdt.debug.application/icons/cc64.png" i128="/org.eclipse.cdt.debug.application/icons/cc128.png" i256="/org.eclipse.cdt.debug.application/icons/cc.png"/>

   <launcher name="cdtdebug">
      <linux icon="../org.eclipse.cdt.debug.application/icons/cc.xpm"/>
      <macosx icon="../org.eclipse.cdt.debug.application/icons/cc.icns"/>
      <win useIco="true">
         <ico path="../org.eclipse.cdt.debug.application/icons/cc.ico"/>
         <bmp/>
      </win>
   </launcher>

   <vm>
      <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
      <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
      <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</solaris>
      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
   </vm>

   <license>
        <url>http://eclipse.org/legal/epl/notice.php</url>
        <text>
   Eclipse Foundation Software User Agreement
April 9, 2014

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 1.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)
    - 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>
      <plugin id="com.google.gson"/>
      <plugin id="com.ibm.icu"/>
      <plugin id="com.sun.jna"/>
      <plugin id="com.sun.jna.platform"/>
      <plugin id="com.sun.xml.bind"/>
      <plugin id="jakarta.xml.bind"/>
      <plugin id="javax.activation"/>
      <plugin id="javax.annotation"/>
      <plugin id="javax.el"/>
      <plugin id="javax.inject"/>
      <plugin id="javax.servlet"/>
      <plugin id="javax.servlet.jsp"/>
      <plugin id="javax.xml"/>
      <plugin id="javax.xml.stream"/>
      <plugin id="org.apache.batik.constants"/>
      <plugin id="org.apache.batik.css"/>
      <plugin id="org.apache.batik.i18n"/>
      <plugin id="org.apache.batik.util"/>
      <plugin id="org.apache.commons.codec"/>
      <plugin id="org.apache.commons.io"/>
      <plugin id="org.apache.commons.jxpath"/>
      <plugin id="org.apache.commons.logging"/>
      <plugin id="org.apache.felix.scr"/>
      <plugin id="org.apache.httpcomponents.httpclient"/>
      <plugin id="org.apache.httpcomponents.httpcore"/>
      <plugin id="org.apache.jasper.glassfish"/>
      <plugin id="org.apache.lucene.analyzers-common"/>
      <plugin id="org.apache.lucene.analyzers-smartcn"/>
      <plugin id="org.apache.lucene.core"/>
      <plugin id="org.apache.xmlgraphics"/>
      <plugin id="org.eclipse.cdt.core"/>
      <plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.native"/>
      <plugin id="org.eclipse.cdt.core.win32" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.cdt.debug.application"/>
      <plugin id="org.eclipse.cdt.debug.application.doc"/>
      <plugin id="org.eclipse.cdt.debug.core"/>
      <plugin id="org.eclipse.cdt.debug.core.memory"/>
      <plugin id="org.eclipse.cdt.debug.ui"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.floatingpoint"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.memorybrowser"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.search"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.traditional"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.transport"/>
      <plugin id="org.eclipse.cdt.dsf"/>
      <plugin id="org.eclipse.cdt.dsf.gdb"/>
      <plugin id="org.eclipse.cdt.dsf.gdb.ui"/>
      <plugin id="org.eclipse.cdt.dsf.ui"/>
      <plugin id="org.eclipse.cdt.gdb"/>
      <plugin id="org.eclipse.cdt.gdb.ui"/>
      <plugin id="org.eclipse.cdt.launch"/>
      <plugin id="org.eclipse.cdt.make.core"/>
      <plugin id="org.eclipse.cdt.managedbuilder.core"/>
      <plugin id="org.eclipse.cdt.managedbuilder.gnu.ui"/>
      <plugin id="org.eclipse.cdt.native.serial"/>
      <plugin id="org.eclipse.cdt.ui"/>
      <plugin id="org.eclipse.compare"/>
      <plugin id="org.eclipse.compare.core"/>
      <plugin id="org.eclipse.core.commands"/>
      <plugin id="org.eclipse.core.contenttype"/>
      <plugin id="org.eclipse.core.databinding"/>
      <plugin id="org.eclipse.core.databinding.observable"/>
      <plugin id="org.eclipse.core.databinding.property"/>
      <plugin id="org.eclipse.core.expressions"/>
      <plugin id="org.eclipse.core.filebuffers"/>
      <plugin id="org.eclipse.core.filesystem"/>
      <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.jobs"/>
      <plugin id="org.eclipse.core.net"/>
      <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
      <!-- Does not exist, see Bug 566638: plugin id="org.eclipse.core.net.linux.aarch64" fragment="true"/ -->
      <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.resources"/>
      <plugin id="org.eclipse.core.runtime"/>
      <plugin id="org.eclipse.core.variables"/>
      <plugin id="org.eclipse.debug.core"/>
      <plugin id="org.eclipse.debug.ui"/>
      <plugin id="org.eclipse.e4.core.commands"/>
      <plugin id="org.eclipse.e4.core.contexts"/>
      <plugin id="org.eclipse.e4.core.di"/>
      <plugin id="org.eclipse.e4.core.di.annotations"/>
      <plugin id="org.eclipse.e4.core.di.extensions"/>
      <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
      <plugin id="org.eclipse.e4.core.services"/>
      <plugin id="org.eclipse.e4.emf.xpath"/>
      <plugin id="org.eclipse.e4.ui.bindings"/>
      <plugin id="org.eclipse.e4.ui.css.core"/>
      <plugin id="org.eclipse.e4.ui.css.swt"/>
      <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
      <plugin id="org.eclipse.e4.ui.di"/>
      <plugin id="org.eclipse.e4.ui.dialogs"/>
      <plugin id="org.eclipse.e4.ui.ide"/>
      <plugin id="org.eclipse.e4.ui.model.workbench"/>
      <plugin id="org.eclipse.e4.ui.services"/>
      <plugin id="org.eclipse.e4.ui.widgets"/>
      <plugin id="org.eclipse.e4.ui.workbench"/>
      <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
      <plugin id="org.eclipse.e4.ui.workbench.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench3"/>
      <plugin id="org.eclipse.ecf"/>
      <plugin id="org.eclipse.ecf.filetransfer"/>
      <plugin id="org.eclipse.ecf.identity"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
      <plugin id="org.eclipse.emf.common"/>
      <plugin id="org.eclipse.emf.ecore"/>
      <plugin id="org.eclipse.emf.ecore.change"/>
      <plugin id="org.eclipse.emf.ecore.xmi"/>
      <plugin id="org.eclipse.equinox.app"/>
      <plugin id="org.eclipse.equinox.bidi"/>
      <plugin id="org.eclipse.equinox.common"/>
      <plugin id="org.eclipse.equinox.concurrent"/>
      <plugin id="org.eclipse.equinox.event"/>
      <plugin id="org.eclipse.equinox.frameworkadmin"/>
      <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
      <plugin id="org.eclipse.equinox.http.jetty"/>
      <plugin id="org.eclipse.equinox.http.registry"/>
      <plugin id="org.eclipse.equinox.http.servlet"/>
      <plugin id="org.eclipse.equinox.jsp.jasper"/>
      <plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
      <plugin id="org.eclipse.equinox.launcher"/>
      <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.gtk.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.p2.artifact.repository"/>
      <plugin id="org.eclipse.equinox.p2.core"/>
      <plugin id="org.eclipse.equinox.p2.director"/>
      <plugin id="org.eclipse.equinox.p2.engine"/>
      <plugin id="org.eclipse.equinox.p2.garbagecollector"/>
      <plugin id="org.eclipse.equinox.p2.jarprocessor"/>
      <plugin id="org.eclipse.equinox.p2.metadata"/>
      <plugin id="org.eclipse.equinox.p2.metadata.repository"/>
      <plugin id="org.eclipse.equinox.p2.operations"/>
      <plugin id="org.eclipse.equinox.p2.repository"/>
      <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
      <plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
      <plugin id="org.eclipse.equinox.p2.transport.ecf"/>
      <plugin id="org.eclipse.equinox.p2.ui"/>
      <plugin id="org.eclipse.equinox.p2.ui.sdk"/>
      <plugin id="org.eclipse.equinox.preferences"/>
      <plugin id="org.eclipse.equinox.registry"/>
      <plugin id="org.eclipse.equinox.security"/>
      <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
      <plugin id="org.eclipse.equinox.security.ui"/>
      <plugin id="org.eclipse.equinox.simpleconfigurator"/>
      <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
      <plugin id="org.eclipse.help"/>
      <plugin id="org.eclipse.help.base"/>
      <plugin id="org.eclipse.help.ui"/>
      <plugin id="org.eclipse.help.webapp"/>
      <plugin id="org.eclipse.jetty.http"/>
      <plugin id="org.eclipse.jetty.io"/>
      <plugin id="org.eclipse.jetty.security"/>
      <plugin id="org.eclipse.jetty.server"/>
      <plugin id="org.eclipse.jetty.servlet"/>
      <plugin id="org.eclipse.jetty.util"/>
      <plugin id="org.eclipse.jetty.util.ajax"/>
      <plugin id="org.eclipse.jface"/>
      <plugin id="org.eclipse.jface.databinding"/>
      <plugin id="org.eclipse.jface.notifications"/>
      <plugin id="org.eclipse.jface.text"/>
      <plugin id="org.eclipse.launchbar.core"/>
      <plugin id="org.eclipse.launchbar.ui"/>
      <plugin id="org.eclipse.ltk.core.refactoring"/>
      <plugin id="org.eclipse.ltk.ui.refactoring"/>
      <plugin id="org.eclipse.osgi"/>
      <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
      <plugin id="org.eclipse.osgi.services"/>
      <plugin id="org.eclipse.osgi.util"/>
      <plugin id="org.eclipse.search"/>
      <plugin id="org.eclipse.swt"/>
      <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
      <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.swt.gtk.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.team.core"/>
      <plugin id="org.eclipse.team.ui"/>
      <plugin id="org.eclipse.text"/>
      <plugin id="org.eclipse.tm.terminal.control"/>
      <plugin id="org.eclipse.tools.templates.core"/>
      <plugin id="org.eclipse.tools.templates.freemarker"/>
      <plugin id="org.eclipse.tools.templates.ui"/>
      <plugin id="org.eclipse.ui"/>
      <plugin id="org.eclipse.ui.cocoa" fragment="true"/>
      <plugin id="org.eclipse.ui.console"/>
      <plugin id="org.eclipse.ui.editors"/>
      <plugin id="org.eclipse.ui.forms"/>
      <plugin id="org.eclipse.ui.ide"/>
      <plugin id="org.eclipse.ui.navigator"/>
      <plugin id="org.eclipse.ui.navigator.resources"/>
      <plugin id="org.eclipse.ui.net"/>
      <plugin id="org.eclipse.ui.themes"/>
      <plugin id="org.eclipse.ui.views"/>
      <plugin id="org.eclipse.ui.views.log"/>
      <plugin id="org.eclipse.ui.views.properties.tabbed"/>
      <plugin id="org.eclipse.ui.workbench"/>
      <plugin id="org.eclipse.ui.workbench.texteditor"/>
      <plugin id="org.eclipse.urischeme"/>
      <plugin id="org.freemarker"/>
      <plugin id="org.sat4j.core"/>
      <plugin id="org.sat4j.pb"/>
      <plugin id="org.tukaani.xz"/>
      <plugin id="org.w3c.css.sac"/>
      <plugin id="org.w3c.dom.events"/>
      <plugin id="org.w3c.dom.smil"/>
      <plugin id="org.w3c.dom.svg"/>
   </plugins>

   <configurations>
      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
      <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.simpleconfigurator" autoStart="true" startLevel="1" />
      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
   </configurations>

   <repositories>
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
   </repositories>

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

   <cssInfo>
   </cssInfo>

</product>
