Apache Directory Shared
Copyright 2003-2008 The Apache Software Foundation

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

Additional copyright notices and license terms applicable are
present in the distribution/src/main/release/licenses directory.

