This package was debianized by Jose Luis Tallon <jltallon@adv-solutions.net> on
Tue, 10 Oct 2006 01:42:09 +0200.

It was downloaded from http://www.hyperrealm.com/libconfig

Upstream Author: Mark A Lindner
	Mark Lindner - Lead developer & maintainer.
	Daniel Marjamdki - Enhancements & bugfixes.
	Andrew Tytula - Windows Port.
	Glenn Herteg - Enhancements, bugfixes, documentation corrections.
	Jose Luis Tallon - Enhancements, bugfixes


Copyright:	Copyright (C) 2005-2015  Mark A Lindner

License:	LGPL-2.1

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

   This library 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
   Lesser General Public License for more details.



On Debian systems, the full text of GNU's Lesser General Public License can
be found at /usr/share/common-licenses/LGPL-2.1


The Debian packaging is
copyright 2006-2009, Jose Luis Tallon <jltallon@adv-solutions.net>,
copyright 2011-2015, Jonathan McCrohan <jmccrohan@gmail.com>
and is licensed under the GPL version 2, see  `/usr/share/common-licenses/GPL-2'.
