* GNU Libtool was conceived, designed and implemented by:

    Gordon Matzigkeit		gord@gnu.org

* GNU Libtool's Dynamic Loader library (libltdl) was conceived,
  designed and implemented by:

    Thomas Tanner		tanner@ffii.org

* GNU Libtool and libltdl have previously been maintained, enhanced,
  ported and otherwise advanced by:

    Alexandre Oliva		oliva@dcc.unicamp.br
    Ossama Othman		ossama@debian.org
    Robert Boehne		rboehne@ricardo-us.com
    Scott James Remnant		scott@netsplit.com
    Peter O'Gorman		peter@pogma.com
    Ralf Wildenhues		Ralf.Wildenhues@gmx.de
    Gary V. Vaughan		gary@vaughan.pe
    Bob Friesenhahn		bfriesen@simple.dallas.tx.us
    Peter Rosin			peda@lysator.liu.se
    Noah Misch			noah@cs.caltech.edu
    Charles Wilson		libtool@cwilson.fastmail.fm
    Brooks Moses		bmoses@google.com
    Alex Ameen			alex.ameen.tx@gmail.com

* GNU Libtool is currently being cajoled, bullied,
  rewritten and otherwise dragged into the future by:

    Ileana Dumitrescu	ileanadumitrescu95@gmail.com
-- 
  Copyright (C) 1996, 1998-2019, 2021-2024 Free Software Foundation,
  Inc.

  This file is part of GNU Libtool.

GNU Libtool is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.

GNU Libtool is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Libtool.  If not, see <https://www.gnu.org/licenses/>.
