                wxWindows Free Documentation Licence, Version 3
                ===============================================

  Copyright (c) 1997 Julian Smart, Robert Roebling [, ...]

  Everyone is permitted to copy and distribute verbatim copies
  of this licence document, but changing it is not allowed.
   
                   WXWINDOWS FREE DOCUMENTATION LICENCE
     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  1. Permission is granted to make and distribute verbatim copies of this
  manual or piece of documentation provided any copyright notice and this
  permission notice are preserved on all copies.

  2. Permission is granted to process this file or document through a
  document processing system and, at your option and the option of any third
  party, print the results, provided a printed document carries a copying
  permission notice identical to this one.

  3. Permission is granted to copy and distribute modified versions of this
  manual or piece of documentation under the conditions for verbatim
  copying, provided also that any sections describing licensing conditions
  for this manual, such as, in particular, the GNU General Public Licence,
  the GNU Library General Public Licence, and any wxWindows Licence are
  included exactly as in the original, and provided that the entire
  resulting derived work is distributed under the terms of a permission
  notice identical to this one.

  4. Permission is granted to copy and distribute translations of this
  manual or piece of documentation into another language, under the above
  conditions for modified versions, except that sections related to
  licensing, including this paragraph, may also be included in translations
  approved by the copyright holders of the respective licence documents in
  addition to the original English.

                            WARRANTY DISCLAIMER

  5. BECAUSE THIS MANUAL OR PIECE OF DOCUMENTATION IS LICENSED FREE OF CHARGE,
  THERE IS NO WARRANTY FOR IT, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 
  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
  PARTIES PROVIDE THIS MANUAL OR PIECE OF DOCUMENTATION "AS IS" WITHOUT
  WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
  THE MANUAL OR PIECE OF DOCUMENTATION IS WITH YOU.  SHOULD THE MANUAL OR
  PIECE OF DOCUMENTATION PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
  NECESSARY SERVICING, REPAIR OR CORRECTION.

  6. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
  ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  REDISTRIBUTE THE MANUAL OR PIECE OF DOCUMENTATION AS PERMITTED ABOVE, BE
  LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  MANUAL OR PIECE OF DOCUMENTATION (INCLUDING BUT NOT LIMITED TO LOSS OF
  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
  PARTIES OR A FAILURE OF A PROGRAM BASED ON THE MANUAL OR PIECE OF
  DOCUMENTATION TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
  OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

