Apache Tuscany
Copyright (c) 2005 - 2009 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product also includes software under the BSD license 
(see the LICENSE file contained in this distribution), with
the following copyright:
  Copyright (c) 2006, Sun Microsystems, Inc. All rights reserved.

This product includes software under the Service Component Architecture JavaDoc, 
Interface Definition files and XSD files license.
  (c) Copyright SCA Collaboration 2006, 2007

This product includes software under the Service Data Objects JavaDoc and 
Interface Definition file license

(c) Copyright BEA Systems, Inc., International Business Machines Corporation, 
Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software, SAP AG., 
Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies, 
2005, 2006. All rights reserved.

This product includes software under the W3C(c) Software License
with the following copyright:
    
Copyright (c) 2008 World Wide Web Consortium, (Massachusetts Institute of Technology, 
European Research Consortium for Informatics and Mathematics, Keio University). 
All Rights Reserved. This work is distributed under the W3C(c) Software License [1] in 
the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231


