= Eclipse Foundation Technology Compatibility Kit License - v 1.0

Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors.

Redistribution and use in binary form is permitted provided that the following conditions are met:

1.  Use of the Technology Compatibility Kit accompanying this license ( the “TCK”) and its documentation is permitted solely for the purpose of testing compatibility of an implementation (the “Product”) of a specification (the “Specification”) made available by the Eclipse Foundation, Inc. (“Eclipse”).
2.  Only those modifications expressly permitted by the TCK and its documentation are permitted. Except in these limited circumstances, no modifications to the TCK are permitted under this license.
3.  A Product will be deemed to be “compatible” with the Specification if it fully and completely meets and satisfies all requirements of the TCK. 
4.  Before any claim of compatibility (or any similar claim suggesting compatibility) is made based on the TCK, the testing party must:
a.  use the TCK to demonstrate that the Product fully and completely meets and satisfies all requirements of the TCK; 
b.  make TCK test results showing full and complete satisfaction of all requirements of the TCK publicly available on the testing party’s website and send a link to such test results to Eclipse at mailto:tck@eclipse.org[tck@eclipse.org;] and
c.  comply with any requirements stated in the Specification with regard to subsetting, supersetting, modifying or extending the Specification in any Product claimed to be compatible with the Specification.
5.  The test results must be continuously available and the link must be live for at least as long as the Product is available in the marketplace.
6.  The TCK may not be used as a basis for any statements of partial compatibility. The TCK may only be used as a basis for true, factual statements of full compatibility of Products that fully meet and satisfy all requirements of the TCK. 
7.  A determination that a Product is compatible with the TCK does not, in itself, give rise to the right to use any name, mark, logo associated with the TCK, Eclipse, or Eclipse’s contributors or licensors.
8.  Upon the request of Eclipse, a tester will retract any statements of compatibility (or any similar claim suggesting compatibility) which Eclipse reasonably determines to be false or misleading or in violation of the terms of this license.
9.  Redistribution of the TCK must be under this Eclipse Foundation Technology Compatibility Kit License and must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10. Neither the name, trademarks or logos of Eclipse, nor the names, trademarks or logos of its contributors or licensors may be used to endorse or promote products tested with this software without specific prior written permission.
11. The source code for the TCK accompanying this license is available from Eclipse.

TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
