Apache Sling XSS Bundle
Copyright 2014 The Apache Software Foundation

The Apache Sling XSS Bundle is based on source code originally developed
by Adobe Systems Inc. (http://www.adobe.com/).

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

This product includes software developed by the
The Open Web Application Security Project (https://www.owasp.org/).
