Code in this directory written at the IDA Supercomputing Research Center
carries the following copyright and license.

    Copyright 1993 United States Government as represented by the
    Director, National Security Agency.  This software may be used
    and distributed according to the terms of the GNU General Public License,
    incorporated herein by reference.

    In addition to the disclaimers in the GPL, SRC expressly disclaims any
    and all warranties, expressed or implied, concerning the enclosed software.
    This software was developed at SRC for use in internal research, and the
    intent in sharing this software is to promote the productive interchange
    of ideas throughout the research community.   All software is furnished
    on an "as-is" basis.  No further updates to this software should be
    expected.  Although updates may occur, no commitment exists.
