<?php
/**
 * Copyright (c) 2005, 2018 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Denis Roy (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle; ?></h1>
  <p>
    14th December, 2001<br> Modified: 3 May 2016
  </p>
  <p>Content on this web site may make reference to the following trademarks:</p>
  <p>Eclipse, Polarsys and Jetty are registered trademark of the Eclipse
    Foundation, Inc. in the United States, other countries, or both.</p>
  <p>IBM, WebSphere. DB2, MQSeries, and VisualAge are trademarks of
    International Business Machines Corporation in the United States, other
    countries, or both.</p>
  <p>C-bus is a trademark of Corollary, Inc. in the United States, other
    countries, or both.</p>
  <p>Java and all Java-based trademarks are trademarks of Oracle Corporation in
    the United States, other countries, or both.</p>
  <p>Microsoft, Windows, Windows NT, and the Windows logo are trademarks of
    Microsoft Corporation in the United States, other countries, or both.</p>
  <p>PC Direct is a trademark of Ziff Communications Company in the United
    States, other countries, or both and is used by IBM Corporation under
    license.</p>
  <p>
    ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel
    Corporation in the United States, other countries, or both.<br> (Click <a
      href="http://www.intel.com/sites/corporate/tradmarx.htm"
    >here</a> to see a complete list of Intel trademarks).
  </p>
  <p>UNIX is a registered trademark of The Open Group in the United States and
    other countries.</p>
  <p>Linux s the registered trademark of Linus Torvalds in the U.S. and other
    countries.</p>
  <p>Android is a trademark of Google Inc.</p>
  <p>Other company, product, and service names may be trademarks or service
    marks of others.</p>
  <br />
</div>