<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>About</title>
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
</head>
<body lang="EN-US">
<h2>About This Content</h2>
 
<h3>Copyright</h3>
<p>Copyright &copy; OSGi Alliance (2000, 2010). All Rights Reserved.</p>

<p>OSGi Alliance<br/>
Bishop Ranch 6<br/>
2400 Camino Ramon, Suite 375<br/>
San Ramon, CA 94583 USA
</p>

<h3>License</h3>
<p>The OSGi Alliance makes available all content in this jar (&quot;Work&quot;).  Unless otherwise indicated below, the Work is provided to you under the terms and conditions of the
Apache License, Version 2.0 (the &quot;License&quot;).  A copy of the License is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.</p>

<h3>Notices</h3>
<p>Implementation of certain elements of the Content 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>

<p>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.</p>

</body>
</html>
