Apache NetBeans Native Launchers
Copyright 2017-2021 The Apache Software Foundation

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

The code is based on NetBeans, that has been kindly donated to the Apache
Software Foundation by Oracle.

The code was Copyright 1997-2016 Oracle and/or its affiliates.  The Initial
Developer of the Original Software was Sun Microsystems, Inc. Portions
Copyright 1997-2006 Sun Microsystems, Inc.

