<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>About</title>
</head>
<body lang="EN-US">
	<h2>About This Content</h2>

	<p>November 30, 2017</p>
	<h3>License</h3>

	<p>
		The Eclipse Foundation makes available all content in this plug-in
		(&quot;Content&quot;). Unless otherwise indicated below, the Content
		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
		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
		For purposes of the EPL, &quot;Program&quot; will mean the Content.
	</p>

	<p>
		If you did not receive this Content directly from the Eclipse
		Foundation, the Content is being redistributed by another party
		(&quot;Redistributor&quot;) and different terms and conditions may
		apply to your use of any object code in the Content. Check the
		Redistributor's license that was provided with the Content. If no such
		license exists, contact the Redistributor. Unless otherwise indicated
		below, the terms and conditions of the EPL still apply to any source
		code in the Content and such source code may be obtained at <a
			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
	</p>
	
<h3>Third Party Content</h3>

<p>The Content includes items that have been sourced from third parties as set out below. If you 
did not receive this Content directly from the Eclipse Foundation, the following is provided 
for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
terms and conditions of use.</p>

<h4>OSGi Materials</h4>

<p>All files in the following sub-directories (and their sub-directories):</p>

<ul>
 <li>org/osgi</li>
</ul>

<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>

<blockquote>
Copyright (c) 2000, 2006
<br /><br />
OSGi Alliance
Bishop Ranch 6<br/>
2400 Camino Ramon, Suite 375<br/>
San Ramon, CA 94583 USA
<br /><br />
All Rights Reserved.
</blockquote>

<p>The OSGi Materials are provided to you under the terms and conditions of the Apache License, Version 2.0.  A copy of the license is contained
in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</p>

<p>Implementation of certain elements of the OSGi Materials may be subject to third party intellectual property rights, including without limitation, patent rights (such a third party may
or may not be a member of the OSGi Alliance).  The OSGi Alliance and its members are not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party
intellectual property rights.</p>

<small>OSGi&trade; is a trademark, registered trademark, or service mark of The OSGi Alliance in the US and other countries. Java is a trademark,
registered trademark, or service mark of Sun Microsystems, Inc. in the US and other countries. All other trademarks, registered trademarks, or
service marks used in the Content are the property of their respective owners and are hereby recognized.</small>

<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>

</body>
</html>