NetBSD Problem Report #11546

Received: (qmail 4028 invoked from network); 22 Nov 2000 02:52:27 -0000
Message-Id: <200011220252.eAM2qDe17151@kaakeli.ssh.fi>
Date: Wed, 22 Nov 2000 04:52:13 +0200 (EET)
From: kivinen@ssh.fi
Reply-To: kivinen@ssh.fi
To: gnats-bugs@gnats.netbsd.org
Subject: setlocale does not support anything else than C and POSIX
X-Send-Pr-Version: 3.95

>Number:         11546
>Category:       lib
>Synopsis:       setlocale(LC_ALL, "fi_FI") does not have any effect
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    lib-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Nov 22 02:53:00 +0000 2000
>Closed-Date:    
>Last-Modified:  Wed Nov 22 14:09:00 +0000 2000
>Originator:     Tero Kivinen
>Release:        cvs trunk Nov 15
>Organization:
SSH Communications Security
>Environment:
System: NetBSD kaakeli.ssh.fi 1.5K NetBSD 1.5K (KAAKELI) #13: Wed Nov 15 14:53:20 EET 2000 ztk@kaakeli.ssh.fi:/usr/src/sys/arch/i386/compile/KAAKELI i386
Architecture: i386
Machine: i386
>Description:

	setlocale(LC_CTYPE, "xxx") does not work because there is no
	locale database files in the /usr/share/locale/.

	setlocale(LC_COLLATE, "xxx") does not work because it is not
	implemented at all.

	Also all other locale categories (LC_MONETARY, LC_NUMERIC,
	LC_TIME) are not implemented. 

>How-To-Repeat:

	Following program gives same output when run like

	./sorttest
	./sorttest fi_FI
	./sorttest fr_FR

	------------------------------------------------------------
	#include <stdio.h>
	#include <stdlib.h>
	#include <locale.h>
	#include <string.h>

	int main(int argc, char **argv)
	{
	  int i;
	  unsigned char sort_table[][50] = { "Testing",
					     "a", "b", "c", "d",
					     "A", "B", "C", "D",
					     "", "", "", "", "", "",
					     "Kukkuu" };

	  setlocale(LC_ALL, argv[1]);

	  for(i = 0; i < sizeof(sort_table) / sizeof(sort_table[0]); i++)
	    {
	      printf("%d: %s\n", i, sort_table[i]);
	    }
	  printf("\n");
	  qsort(&sort_table,
		sizeof(sort_table) / sizeof(sort_table[0]),
		sizeof(sort_table[0]),
		(int (*)(const void *, const void *)) strcoll);

	  for(i = 0; i < sizeof(sort_table) / sizeof(sort_table[0]); i++)
	    {
	      printf("%d: %s\n", i, sort_table[i]);
	    }
	  printf("\n");
	  exit(0);
	}
	------------------------------------------------------------


>Fix:

	Here is patch that will add an implementation of the LC_COLLATE
	category in the libc and after the patch file there is a
	uuencoded compressed tar file that contains LC_CTYPE and
	LC_COLLATE config files for lots of different locales.

	The data for those tables are taken from the
	pkgsrc/emulators/linux-locale package (i.e I created a linux
	program that will use the normal linux locale library to
	extract the information and store it in the NetBSD format.
	The tar must be unpacked to /usr/share directory (it does
	not include /usr/share path in the file names inside the tar).

	Because there wasn't any format for LC_COLLATE yet, I invented
	one for it: _CTYPE_ID, _CTYPE_REV, _CTYPE_NUM_CHARS, one byte per
	character conversion table.

	This implementation DOES NOT support multibyte locales, nor
	does it implement LC_MONETARY, LC_NUMERIC or LC_TIME
	categories. 	

*** /usr/src/lib/libc/gen/ccollate_.c.orig	Wed Nov 22 03:46:49 2000
--- /usr/src/lib/libc/gen/ccollate_.c	Wed Nov 22 04:10:49 2000
***************
*** 0 ****
--- 1,87 ----
+ /*	$NetBSD: collate_.c,v 1.14 1997/07/13 19:45:45 christos Exp $	*/
+ 
+ /*
+  * Copyright (c) 1989 The Regents of the University of California.
+  * All rights reserved.
+  * (c) UNIX System Laboratories, Inc.
+  * All or some portions of this file are derived from material licensed
+  * to the University of California by American Telephone and Telegraph
+  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+  * the permission of UNIX System Laboratories, Inc.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  * 3. All advertising materials mentioning features or use of this software
+  *    must display the following acknowledgement:
+  *	This product includes software developed by the University of
+  *	California, Berkeley and its contributors.
+  * 4. Neither the name of the University nor the names of its contributors
+  *    may be used to endorse or promote products derived from this software
+  *    without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  */
+ /* Copied and modified from cctype_.c by Tero Kivinen <kivinen@iki.fi> */
+ 
+ #include <sys/cdefs.h>
+ #if defined(LIBC_SCCS) && !defined(lint)
+ __RCSID("$NetBSD: collate_.c,v 1.14 1997/07/13 19:45:45 christos Exp $");
+ #endif /* LIBC_SCCS and not lint */
+ 
+ #define _CTYPE_PRIVATE
+ 
+ #include <sys/types.h>
+ #include <ctype.h>
+ 
+ const unsigned char _C_collate_[_CTYPE_NUM_CHARS] = {
+ 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 
+ 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 
+ 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 
+ 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 
+ 	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 
+ 	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 
+ 	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 
+ 	0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 
+ 	0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 
+ 	0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 
+ 	0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 
+ 	0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 
+ 	0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 
+ 	0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 
+ 	0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 
+ 	0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 
+ 	0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 
+ 	0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 
+ 	0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 
+ 	0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
+ 	0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 
+ 	0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
+ 	0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
+ 	0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
+ 	0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
+ 	0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
+ 	0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
+ 	0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
+ 	0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
+ 	0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
+ 	0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
+ 	0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+ };
+ 
+ const unsigned char *_collate_ = _C_collate_;
*** /usr/src/lib/libc/locale/collateio.c.orig	Wed Nov 22 03:46:32 2000
--- /usr/src/lib/libc/locale/collateio.c	Wed Nov 22 04:10:15 2000
***************
*** 0 ****
--- 1,130 ----
+ /*	$NetBSD: collateio.c,v 1.5 2000/07/01 00:05:27 matt Exp $	*/
+ 
+ /*
+  * Copyright (c) 1997 Christos Zoulas.  All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  * 3. All advertising materials mentioning features or use of this software
+  *    must display the following acknowledgement:
+  *	This product includes software developed by Christos Zoulas.
+  * 4. The name of the author may not be used to endorse or promote products
+  *    derived from this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ /* Copied and modified from ctypeio.c by Tero Kivinen <kivinen@iki.fi> */
+ 
+ #include <sys/types.h>
+ 
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #define _CTYPE_PRIVATE
+ #include <ctype.h>
+ #include "collateio.h"
+ 
+ extern const unsigned char      *_collate_;
+ extern const unsigned char _C_collate_[];
+ 
+ int
+ __loadcollate(name)
+ 	const char *name;
+ {
+ 	FILE *fp;
+ 	char id[sizeof(_CTYPE_ID) - 1];
+ 	u_int32_t i, len;
+ 	unsigned char *new_collate = NULL;
+ 
+ 	_DIAGASSERT(name != NULL);
+ 
+ 	if ((fp = fopen(name, "r")) == NULL)
+ 		return 0;
+ 
+ 	if (fread(id, sizeof(id), 1, fp) != 1)
+ 		goto bad;
+ 
+ 	if (memcmp(id, _CTYPE_ID, sizeof(id)) != 0)
+ 		goto bad;
+ 
+ 	if (fread(&i, sizeof(u_int32_t), 1, fp) != 1) 
+ 		goto bad;
+ 
+ 	if ((i = ntohl(i)) != _CTYPE_REV)
+ 		goto bad;
+ 
+ 	if (fread(&len, sizeof(u_int32_t), 1, fp) != 1)
+ 		goto bad;
+ 
+ 	if ((len = ntohl(len)) != _CTYPE_NUM_CHARS)
+ 		goto bad;
+ 
+ 	if ((new_collate = malloc(sizeof(u_int8_t) * (1 + len))) == NULL)
+ 		goto bad;
+ 
+ 	if (fread(new_collate, sizeof(u_int8_t), len, fp) != len)
+ 		goto bad;
+ 
+ 	(void) fclose(fp);
+ 	if (_collate_ != _C_collate_) {
+ 		/* LINTED const castaway ok */
+ 		free((void *) _collate_);
+ 	}
+ 	_collate_ = new_collate;
+ 	return 1;
+ bad:
+ 	free(new_collate);
+ 	(void) fclose(fp);
+ 	return 0;
+ }
+ 
+ int
+ __savecollate(name, new_collate)
+ 	const char *name;
+ 	unsigned char *new_collate;
+ {
+ 	FILE *fp;
+ 	u_int32_t i, len = _CTYPE_NUM_CHARS;
+ 
+ 	_DIAGASSERT(name != NULL);
+ 	_DIAGASSERT(new_collate != NULL);
+ 
+ 	if ((fp = fopen(name, "w")) == NULL)
+ 		return 0;
+ 
+ 	if (fwrite(_CTYPE_ID, sizeof(_CTYPE_ID) - 1, 1, fp) != 1)
+ 		goto bad;
+ 
+ 	i = htonl(_CTYPE_REV);
+ 	if (fwrite(&i, sizeof(u_int32_t), 1, fp) != 1) 
+ 		goto bad;
+ 
+ 	i = htonl(len);
+ 	if (fwrite(&i, sizeof(u_int32_t), 1, fp) != 1)
+ 		goto bad;
+ 
+ 	if (fwrite(new_collate, sizeof(u_int8_t), len, fp) != len)
+ 		goto bad;
+ 
+ 	(void) fclose(fp);
+ 	return 1;
+ bad:
+ 	(void) fclose(fp);
+ 	return 0;
+ }
*** /usr/src/lib/libc/locale/collateio.h.orig	Wed Nov 22 03:46:38 2000
--- /usr/src/lib/libc/locale/collateio.h	Wed Nov 22 04:10:28 2000
***************
*** 0 ****
--- 1,36 ----
+ /*	$NetBSD: collateio.h,v 1.1 1997/06/02 09:52:48 kleink Exp $	*/
+ 
+ /*
+  * Copyright (c) 1997 Christos Zoulas.  All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  * 3. All advertising materials mentioning features or use of this software
+  *    must display the following acknowledgement:
+  *	This product includes software developed by Christos Zoulas.
+  * 4. The name of the author may not be used to endorse or promote products
+  *    derived from this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ /* Copied and modified from ctypeio.h by Tero Kivinen <kivinen@iki.fi> */
+ 
+ __BEGIN_DECLS
+ int __loadcollate __P((const char *));
+ int __savecollate __P((const char *, unsigned char *));
+ __END_DECLS
*** /usr/src/lib/libc/locale/setlocale.c.orig	Wed Nov 15 05:59:42 2000
--- /usr/src/lib/libc/locale/setlocale.c	Wed Nov 22 03:41:55 2000
***************
*** 59,64 ****
--- 59,65 ----
  #include <string.h>
  #include <unistd.h>
  #include "ctypeio.h"
+ #include "collateio.h"

  /*
   * Category names for getenv()
***************
*** 263,268 ****
--- 264,276 ----
  		return NULL;

  	case LC_COLLATE:
+ 		if (__loadcollate(name)) {
+ 			(void)strncpy(current_categories[category],
+ 			    new_categories[category],
+ 			    sizeof(current_categories[category]) - 1);
+ 			return current_categories[category];
+ 		}
+ 		return NULL;
  	case LC_MESSAGES:
  	case LC_MONETARY:
  	case LC_NUMERIC:
*** /usr/src/lib/libc/string/strcoll.c.orig	Tue Sep 21 14:11:22 1999
--- /usr/src/lib/libc/string/strcoll.c	Wed Nov 22 04:11:28 2000
***************
*** 35,40 ****
--- 35,41 ----
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   */
+ /* Real implementation of strcoll by Tero Kivinen <kivinen@iki.fi> */

  #include <sys/cdefs.h>
  #if defined(LIBC_SCCS) && !defined(lint)
***************
*** 48,64 ****
  #include <assert.h>
  #include <string.h>

  /*
   * Compare strings according to LC_COLLATE category of current locale.
   */
  int
! strcoll(s1, s2)
! 	const char *s1, *s2;
  {
! 
  	_DIAGASSERT(s1 != NULL);
  	_DIAGASSERT(s2 != NULL);

! 	/* LC_COLLATE is unimplemented, hence always "C" */
! 	return (strcmp(s1, s2));
  }
--- 49,72 ----
  #include <assert.h>
  #include <string.h>

+ extern const unsigned char      *_collate_;
+ 
  /*
   * Compare strings according to LC_COLLATE category of current locale.
   */
  int
! strcoll(i1, i2)
! 	const char *i1, *i2;
  {
! 	const unsigned char *s1, *s2;
  	_DIAGASSERT(s1 != NULL);
  	_DIAGASSERT(s2 != NULL);

! 	s1 = (const unsigned char *) i1;
! 	s2 = (const unsigned char *) i2;
! 	
! 	while (_collate_[*s1] == _collate_[*s2++])
! 	  if (_collate_[*s1++] == 0)
! 	    return (0);
!         return (_collate_[*s1] - _collate_[*--s2]);
  }
*** /usr/src/lib/libc/string/strxfrm.c.orig	Tue Sep 21 14:11:23 1999
--- /usr/src/lib/libc/string/strxfrm.c	Wed Nov 22 04:11:52 2000
***************
*** 35,40 ****
--- 35,41 ----
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   */
+ /* Real implementation of strxfrm by Tero Kivinen <kivinen@iki.fi> */

  #include <sys/cdefs.h>
  #if defined(LIBC_SCCS) && !defined(lint)
***************
*** 48,53 ****
--- 49,56 ----
  #include <assert.h>
  #include <string.h>

+ extern const unsigned char      *_collate_;
+ 
  /*
   * Transform src, storing the result in dst, such that
   * strcmp() on transformed strings returns what strcoll()
***************
*** 59,77 ****
  	const char *src;
  	size_t n;
  {
! 	size_t srclen, copysize;

  	_DIAGASSERT(src != NULL);
  	_DIAGASSERT(dst != NULL);

! 	/*
! 	 * Since locales are unimplemented, this is just a copy.
! 	 */
! 	srclen = strlen(src);
! 	if (n != 0) {
! 		copysize = srclen < n ? srclen : n - 1;
! 		(void)memcpy(dst, src, copysize);
! 		dst[copysize] = 0;
  	}
! 	return (srclen);
  }
--- 62,79 ----
  	const char *src;
  	size_t n;
  {
! 	const unsigned char *s1;
! 	size_t l;

  	_DIAGASSERT(src != NULL);
  	_DIAGASSERT(dst != NULL);

! 	l = strlen(src);
! 	for(s1 = src; *s1 && n != 0; n--) {
! 		*dst++ = _collate_[*s1++];
! 		
  	}
! 	if (n != 0)
! 		*dst++ = '\0';
! 	return (l);
  }
*** /usr/src/lib/libc/gen/Makefile.inc.orig	Wed Nov 15 05:59:33 2000
--- /usr/src/lib/libc/gen/Makefile.inc	Wed Nov 22 03:45:18 2000
***************
*** 4,10 ****
  # gen sources
  .PATH: ${ARCHDIR}/gen ${.CURDIR}/gen

! SRCS+= 	_errno.c alarm.c assert.c basename.c clock.c closedir.c \
  	confstr.c ctermid.c ctype_.c daemon.c devname.c dirname.c \
  	disklabel.c err.c errx.c __errlist14.c errlist.c errno.c execl.c \
  	execle.c execlp.c execv.c execvp.c fmtcheck.c fmtmsg.c fnmatch.c \
--- 4,10 ----
  # gen sources
  .PATH: ${ARCHDIR}/gen ${.CURDIR}/gen

! SRCS+= 	_errno.c alarm.c assert.c basename.c ccollate_.c clock.c closedir.c \
  	confstr.c ctermid.c ctype_.c daemon.c devname.c dirname.c \
  	disklabel.c err.c errx.c __errlist14.c errlist.c errno.c execl.c \
  	execle.c execlp.c execv.c execvp.c fmtcheck.c fmtmsg.c fnmatch.c \
*** /usr/src/lib/libc/locale/Makefile.inc.orig	Wed Nov 15 05:59:42 2000
--- /usr/src/lib/libc/locale/Makefile.inc	Wed Nov 22 03:45:58 2000
***************
*** 5,11 ****
  .PATH: ${ARCHDIR}/locale ${.CURDIR}/locale

  SRCS+=	_def_messages.c _def_monetary.c _def_numeric.c _def_time.c \
! 	ctypeio.c localeconv.c nl_langinfo.c setlocale.c setlocale_sb.c

  MAN+=	nl_langinfo.3 setlocale.3

--- 5,11 ----
  .PATH: ${ARCHDIR}/locale ${.CURDIR}/locale

  SRCS+=	_def_messages.c _def_monetary.c _def_numeric.c _def_time.c \
! 	collateio.c ctypeio.c localeconv.c nl_langinfo.c setlocale.c setlocale_sb.c

  MAN+=	nl_langinfo.3 setlocale.3

----------------------------------------------------------------------
begin 644 locale.tar.gz
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
MYG^>_#\%Y_]A_RI/S/]WK.O]3\_F>W/F?FL\'?<WS/]T\7#T+'0IJG/]9
MZ>=H53$^RS8_K]Q,P_F>TJKS/8LTG`\JJ3H?]"G?]2"MJO$_=%ACF7]03_Z3
MTK?%8CDS_I'_&E_5]6\D\P_>R/^C_P?@]9^$A,9_?/\^@/_U_]O%?Z3]O[^^
M_N>[_F\/_VEG_9N45.?_1C#_H)[\QZ[_)!3V?R(C-?[3T6W6O$5+/7V#5JT-
MC8Q-3,W:M#6WL+2R;F=CV[Y#1SO[3@Z.3LXNKF[N'IY>G;U]1&**"6LI?+MT
M]5.BHSHUOAKK&&MOXB1_#B6G<X[BO/D!@4'!(:%AX1$+%BZ*7!RU)#HF-BX^
M(3$I.25UZ;+E*U:N6KUF[;KU&S9NVKQEZ[;M:>D9F3MV[MJ]9^^^_5D'#F8?
MRCF<>^3HL>,G\O)/GCI]YNRY\Q<*"HN*2THO7KI\Y>JUZS=NWBJ[?>?NO?L/
M'CYZ_.1I^;/G%4UU_'\W=-#`+X61_U2P_=^9_#?R7^-+I?["R7_*1,A_1"0T
M_GN5,/^)_(?YS[>8_]#_(RJU^9_W_">;_Y++<?\_$>'^/]S_IQS_@LA_<N__
MR,2X_X^(--2?Y_RG3"3"_"<1(?\A_R'_(?\)IO[(?T15Q_S/3_Z37?_)Q-C_
MEXR0_Y#_6/]_T(#/!.'_L>M_BJ+P_$\B4JD_^G]-KO[:R'\`5?`'2@!D^8[]
MK*OVM/#BEB;XJR'F5\+W^A_Y[TWX;U/5WU3X&H\_7LOCN=V'R'\DZW^.KC]'
M[=MI_DIG"6S':_#;L5KX#?.?;R2U^9]O_X^;_^78_XF,U/A/&>'4;VU@V$H]
MQZG7UD[D*?;IX.#8F3(UL;08/W'29"ZRV<9,*I.;>\R</7=^8'!H^()%BY?$
MQ"4DI2QE-@/2/+C5R=NYG9'UK#GS`H)"PB(61D9%Q\8G)J<R>P$9'MSFXNMJ
M^^J8:/>.7CJZ7=QLW)O9*XR;=^LJ\9]BY9?6?M^A8YU*)MQ^?G)[)@V>![)S
MCS([#PN++UUI<>UF&8V7SX[?R<@ZG/<@?<>N/?L/YAPY<?HLS9ZEEZ_>N'[K
M[J,GY17Y]R_>JVS)=SU(2SG^APMF_Y^8V_^'Y[\0477]A;+_CV+W_U'8_YV(
MM)'_T/]#_D/_[RW@O_^S=Q_`45U9&H#5(HHD"8$D)%!"&22Z^[W7K4"TC3W>
MF;%GQV./[=DJ:FIVMLI56\N6/:ZU"2(*$92SA`)"Y!P$B""RR2!RSHB<<X9]
M08UHGEI8N'7Z-OI_JFPPMG#5J=OW?3KWW8/^G\UCOO^S\/Z?[#^]$?>_D`3]
M/_3_Y/7?]Y\_?C^P81#X#OT_`][_H\D;]6\0!-;??[Q.A_,?)('_X#_X#_YC
MIO[P'VEJV?^MCL#Z^X_7X_T_FL!_\)^\_@?T8^/^%_GY'^<_J6)6?R;.?^IQ
M_I,P\!_\!__!?\S4'_XCC6K_M_GY3SW.?Q(&_H/_E/7_83^6_*?5P7\4,:L_
M._[C#>C_D03^@__@/_B/F?K#?Z11[?^,^(_#]W])HO*?:7Q#TQ;-6C97SW!H
MXN+#1PI<%_\`G:%MFXX=XD3^*;,:G-O%Q/9LWRVYN&2JA?GN^D!/)X^429.G
MU>Z_H-[!7F\?$>$:T:.[MD](I[!4WUZMPUOU-<8GN/<+]>X\JM)OV/`1;AEI
M61/S<@I+3?[3*/Z+-ODO,SV[(#^W:(K)?XZ*_Z+@OX]^SX;_>-E_TOPW^*_A
M8U9_AOQGQ/P?DL!_\!_\!_\Q4W_XCS2J_=_F_N-E_PFX_YLDZ/^A_Z>L_T\^
M8,-_@N(_]/](8E9_EOR'^U](`O_!?_`?_,=,_>$_TJCV?YO[3Y#]QZ/_1Q+X
M#_XSK7\VYO\)K][_@O\:/A;J;\/Y?_+]+T8#/O])8F_^\U24Y^+XFO^DKRS]
M6N.H@?]8\]^TMSS_E[UZ_E_%@/]6,U#_]\=_,^KP7_D;_JL0?[R$_ZA3Q_YO
MH_E_@CS_CT?_CR0J__7LI4R`D/VG'`5]W8":=IUZA&HC/3MWZ:Z3_/?3SX.'
M#ALN38!HVT8P&%V"X[-S"R9),QU6K%J]=OVF0T>.G3A[X=:=>P^>^43X=FS1
M84Q.7F&)-!)B9<6:=1LV2U,:SEV\+0+QN5^TO[MRR+0N`SJ'A'4+/Q5P.C#!
M*\HIJ&6,?DC<B]BN'B\';?$^</")Z_BQB>FIR9GY4R9/FU&V:&EYT<;M6W?N
MJ>3W7;ET[<:CJC,3QB5EI*5D39Q:.GWFDL7+EA?_LF/;KKV[N?U7+U^_^?C\
M4UO7@SHUZ__3_DSU_^`_DIC5GZ7^'_Q'$GOS'_I_=N8_]/\:K__0_V,^JOV?
MD?X?SG_2!/T_]/],ZY^-_I]![O])]__#?PT?"_6W>?_/B,]_DL!_\!_\!_\Q
M4W_XCS1U[/\VZO\9Y/Z?@/<_2`+_P7_*^O_L6S;Z?P:Y_R?@_3^2F-6?G?Z?
MP.'^9Y+`?_`?_`?_,5-_^(\TJOW?YOT_^?O_1LQ_H@G\!_\IZ__++^"_QK?^
MS>H/_S6Z^L-_\!_\!_\Q4W_XCS2J_1_^JSV-9/^'_QI7:M;_MXS,_S/*_N,$
M^(\B9O5GR'\ZG/\D"?P'_\%_\!\S]8?_2*/:_VWN/Z/\_I]1C_V?(O`?_">M
M_X$-A3^'=_&?3OR\@/\H4E/_!L*?PSOY3Z?'YS])[,Y_TI=QT"C0$_^'E8M`
MQ;_(7\'!4?JGK_^A#FK_.;S^ASJ8^\_%P?;/_^^[_TI>/?]/DY__3;\O/?_/
MMY+_SEG\[V_!?PWLOX6OZK]4KK_)=U+]U_Q*_VVPZ+?=\)\U8[[_-P#^'-[)
M?YP6[_^1Q.+]GTYM6K5MK;[_LV4'OQ[AVDA?_X#N.E<7#_>?!IGN_W1KSPN&
MCJ%C4M/S"Z;-6+!TO<B[G;N/B@"\>%GDW]/G72,"O=IUBD])RYLX=?K\)>M$
M'FZO/'+LQ*D+ER3_/0LR!G=^^_V?BV*ZA6G*0KS7GIVUT=GQ9=3"(7&>T8N[
M^*PY,W/#STU>C!^;V#0Y,S=[4M'D*2O*5ZUNMFO_WH-S#G/S)/_=/7]N7,*$
MYDD9.5G%A26ERY>MK&@A^6_V(?W<:U=NW+I3%6OK>E#'M/Y_8,5_@E;QGQ[^
MHTA-_1GS'\Y_D,3N_(?^G[W[#_V_]]M_Z/_94<SW?P;\)S__<7JC$?L_153^
M4[I_O_NT:8MF+9N_V?W[]F]-7'SX2('KXA^@,[1MT[%#W,C18Z3N7V*2<[N8
MV)[MNZ5,FCS-0G]/'^CIY)%<7#*U]OY@4.]@K[=U_X8,=8WHT5W;)Z136*IO
MK];AK?H:XQ/<^X5Z=QY5Z2<ZU"TS/;L@/[=HBJF_IU'Z>]'5_;VJC+2LB7DY
MA:6F_J"CTA^,JNX/-MK^WP]]__GC]PW4!*R___0&G/^DR1OU;Q`$OL/]GSH]
MOO]'$O@/_H/_X#]FZ@__D::6_=_J"*R__W@]SG_2!/Z#_Y3U_Z_O__Z?W_WC
MNX'_\_?_MC(#Z^<_G?S\+\!_)*F]_M9E8/W])_YKN/^%)/`?_`?_P7_,U!_^
M(XWE_=]Z#*R?_Z3G/\&@@_](8O7W_RR_WZ>\_V?Y_4"KO/]GX?T^H\E_%MX/
M-#1Z_PWH]V<F[G^1U[]>KX?_2&)6?R;N?^&4^U_0_R,)_`?_P7_P'S/UA_](
MH]K_;7W_B_S\QQD,\!])T/]#_T]9_Q]\SI3_./B/(F;U9\A_6IS_)PG\!__!
M?_`?,_6'_TBCVO]9\1_._Y`$_H/_E/7_X1_8\)]>\1_N?R&)6?U9\I^`SW^*
MP'_P'_P'_S%3?_B/-*K]W^;^D^]_,PCX_B])X#_XKWK],]+_XQ3_&>`_BIC5
MGR'_Z?#]/Y+`?_`?_`?_,5-_^(\TJOW?YO[CE/X?YO^2!/Z#_Y3U_Q%;_C/"
M?Q0QJS]+_L/[?R2!_^`_^`_^8Z;^\!]I5/L_*_[CL?]3!/Z#_Y3UW_]#-OS'
MR_[3X?X7DIC5GQW_\4;,_R,)_`?_P7_P'S/UA_](H]K_;>X_7CG_B?M?2`+_
MP7_5Z_\+-OPGR/[C</Z3)&;U9\=_@@[^(PG\!__!?_`?,_6'_TBCVO]M[C]!
M]I\1YS])`O_!?Z;U'_G=#P.CHH1HG6!="=;??YS`X?Y/DEBHOU4E6'__"5H=
M/O])8F_^\U24Y^+XFO^DKRS]6N.H@?]8\]^TMSS_E[UZ_E_%@/]6,U#_]\=_
M,^KP7_D;_JL0?[R$_ZA3Q_YO-0G6WW^"SHCW_TFB\E_O/LH$0-E_$@3-#=C$
MQ5O73:_U\O&-Y"3_#1H\=-B(D:-&QX]Q;F>,BFX?.C9O8G')[+GS%ZZL6+-N
MP^;#1X^?/'?QM@B\YWX]_#V<W!-R\XLFS9HS;\&*5:O7KM]TZ,BQ$V<OW+IS
M[\&S@-BNGA(QZS:@:WCWL(C3@:>"QW6.:1W2JB<?-_QEKZ!.+X9LZ7+PP%.W
MI`DI61EI.8532Z?/7+)XV7+-+SNV[=J[V[#_ZN7K-Q^?/Y,X/CDS/36[8(JH
MU+)%2\L=-V[?NG-/I;#ORJ5K-QY5/;%U/:A3L_X_^0L3_3^#5NG_X?PG2<SJ
MSU#_3X_W_TAB;_Y#_\_._(?^7^/U'_I_S$>U_]NZ_R<__W$&(\Y_D@3]/_3_
ME/7_N\^8\I\6_J.(6?T9\I\.[W^3!/Z#_^`_^(^9^L-_I%'M_XSXSX#Y3R2!
M_^`_9?W_\6LV_*?,?Q?@/Y*8U9\A_W$X_TD2^`_^@__@/V;J#_^11K7_V]Q_
M\OQW(^;_T@3^@_^4]?^G?BSY3\_#?Q0QJS]#_M-B_BM)X#_X#_Z#_YBI/_Q'
M&M7^SX;_Q)]B_Z<(_`?_5:___FSX3Z^<_]3!?Q0QJS]#_L/]+S2!_^`_^`_^
M8Z;^\!]I5/N_S?VG5_R'^[])`O_!?]7K_QN6_"?@_A>2F-6?(?]QZ/^1!/Z#
M_^`_^(^9^L-_I%'M_VSXSZC#_2\D@?_@/V7]?_$5&_[C%/]A_A])S.H/_S6Z
M^L-_\!_\!_\Q4W_XCS2J_=_F_N,4_^'\#TG@/_A/6?]?LC'_W>0_]/](8E9_
MEOR'\Q\D@?_@/_@/_F.F_O`?:53[/RO^0_^/)"K_*=/_/O[$L5F3YDW?G/[W
M]3>:=IWUW3F=MZ]?#[YU*[?V0X:+`$R0!-BV351TC$M88F%Q:>V^\]<&N+?H
MF%0T:8H%'_8,]'S;]+]!@YV[181']@KR"$GN$NL4VK*W,"J^0Y_@3EXC*GV&
MQ@US34O)R,O)FEAB\MU4Q7?&:M]5I:=FYN=F%TPV^7":XD-#M0\;L_\8.?_)
MR_XSX/X7DIC5GR'_\9C_0!+X#_Z#_^`_9NH/_Y%&M?_;W'^\[#_,_Z4)^G_H
M_RGK_RM&[G]1_,?C_A>2F-6?(?_A\Y\F\!_\!__!?\S4'_XCC6K_9\-_!B/.
M_Y`$_H/_I/7_KX;"GT-]_2>(ZU]G$.`_DM34OX'PY_!._M-Q6GS^4\0^_:=Q
M<7S-?])7EGZM<=3`?ZSY;]I;GO_+7CW_KV+`?ZL9J/_[X[\9=?BO_`W_58@_
M7L)_U#'?_QL`?P[U]9_T_,=Q6OB/)"K_]>ZCG``5]>?40H*@N0&;NG;6==-K
MO7W](KEV;=T[#AH\=-B(D:-&QX]Q<39&1;N%)63G%A3-F#5G7OF*5:O7;MRS
M[\"ATU77;CQZ<MR_1X!G*X^Q.7F%Q3-GSYV_?&7%FG6_[-U_\/"9\]=O/GYZ
MHFML8">)F'4;L'UX=TW$T:!C(>.ZQ+0);=V3CQM^LE>PUZDAFWPJ=[_HD#@^
M.?U.:F;^Y$E3IBU:4+;4<?W6S=MOW3/LO'3ARH-G9X\D34C)N"L:L%14Z.*%
M2Y8UV;!MRX[;]X5=ER]>??C\7.-=_P/Z,]+_$Y3Y?WKXCR)F]6>H_Z=%_X\D
M]ND_]/_LQG_H_S5>_Z'_QWQ4^[_-^W^R_PP"[G\CB=7[?\F%Q:53YR]<O&2-
MU.#;?O#PT>.*[TXI_;^4(E%F"Q:5+5TK-0AW'#IR[,39"S=N/7EV^C?V_W;*
M_;^,M*R\NSD32V9.GSUW^;*5%9JMNW?MO7T_>K_BNY.9Z=GY]W(+)L^:,6?>
MBO)5JQVW[:G<=^=!U($KEZX]>E'5J-=_Y#_^5Z<7C%9G8/W\9Y#[/SP'_U&D
MMOI;FX'U]Q_/X_PG35CSGV@Z!X5VRD],Q*O^M?@XKOQ#C=3U<W#1F/X_')6.
MH.-O])^+@^V?_QN7_V:(S_^S7CW_SX?_WC/_E8OU7_&J_FO@/[9B:?^W)@/K
MYS_I^8\W:''^AR0J_YD`YMS>Q<U5K;!VWF%]8_OU"8[LT>L#3P^?+C\/'39"
MZOXEC/7J)+*Q<]2XC*R)A=-GSIV_9-G*=1NV[MEWX,BE*[?N/'MQ6MM;Y]_!
M;WQFMM0?G+=@:?FJ]1NW[=U_\.CEJ[?O/G]Y1O]O7-?_TSA^T>0O?_WRJZ9?
M-_NF><!G02U"0L.[_<>__[GEWYR^;=7Q3ZU_:A/3,[KM[_F=AD/=/W4WIOWA
MP^$C??\H!.Z*.QPA\C`]:6%*SH,)I5/SBL^6S%Z^>,U)T:"5]Q[UOU9Q[,:3
M"U4GDA>EYCY,G#(M?]*YR7-6E*T])1IT]_W''UU???SFTXOG/[=U/:ACMOZ_
M^V%@5)00K>.L2\!W\)^@P_P'DEBHOU4)^`[^$_^.SW^*L.:_MP7^@__@/_@/
M_K-.ZMC_K4;`^OM/T`F8_T`2E?]Z51\`E?M__54'0)LX=^H1KHWTZ.+37=>F
M=7O7&O^U:RL8C"XAEOWG&^'7P<G-LO_\HP,Z_O6M!T`U8=U"'6.Z[@PZY!W5
M*C@M5C]\I%?/0'?1?YWK\!__%O]QU?[SM'4]J%/K^A=LZ3_CJ_L_X+^&CX7Z
MV]Y_./]/$KOSGW+*$^__V8O_\/Y?X_4?WO]C/G7L_S;RGU'Q'_9_DN#]/[S_
M]^;ZYZU\`K1>_C-J)?_Q'/Q'DMKK;]T3H/7S'R_[3R?@\Y\B=N<_!7G*BWX.
M&J7Q)_VWTE<0>8?^'V/^4S__EXC/_Z6B^Z3?7R;WAY3?KQ!_OP+]/[OWWT*Q
M_HO%^DN^FR[W=Q7?SY7[NY;[?VO0_Z./Y?W?>B=`Z^4_^?E/$'^._9\B*O_Q
M@D%T7$RL//^OIZD;^*H1J&G7*:1K:+"GEW=@6.M6KBXU,&O;IGM$I+/_H/&)
MJ9G2':!E2U>N6;>Y<L\^T7]2_^]XYZ`N'5JX#9Z0E)954CI]YI)EJ]:NW[)[
M[W[1?U+_[X1/#U]W\Y<-:Y/@Z!4'`N95^'4\6C3EK-/)EMIX[F#[^:MU'L>*
MIY[[Y=2F,4/B1CX8/G9!<G9!;OZL.8O2-^PLWWKO4;?MURY<>G+EQI&$H<-&
M/1PQ;F%*3F'>Q-ES%V=LW+5\V_W'X3NN7[S\].I-O:WK01W3^O^1E?L_Y?6O
M,_`X_TF2FOJS<O\GK]S_B?FO)+$[_[W^A^/^%WOT'^Y_>;_]A_M?["CF^S\#
M]W\JW__GM#C_21*KSW^W/-]=F?]N>3Z\5>:_6YCO;C3-?[`P'][0V.<__#B@
M_Q=,W/]IU,GW?W+P'TG,ZL_$_9\\YO\1!OZ#_^`_^(^9^L-_I%'M_[:^_U-^
M_N,,1OB/)%;WGV7?*?ZS[$.K^,^"[XS5OJNRX$-#M0\;M?^8>/]/6?\"A_L_
M26*A_C9\_X^7SW_H</Z#)/;F/T]%>7C_SU[\A_?_&J__\/X?\ZEC_[?-^W_R
M\Y^@,^+^3Y*H_&<Z\BG[[R/5!3":=IUZA&DC/3MWZ:Z3_/?3SX.'#ALNO0'8
MMHUT_TOPF)R\PI+9<^<OE%[OV[#Y\-'C)\]=O"T"\+E/A&_'%AWBLW,+)LV:
M,V^!]'K@^DW*_(=;=^X]>.87[>]N^=RGR8#.H>$AW4X'G`I,\(IR"FH9HQ\2
M]S*VJ\>+05N\#QYXZCIA7%)&6DK6Q*G2"=/%RY87_[)CVZZ]N_G]5R]?O_GX
M_)GQ8Q/34Y,S\Z=()U07+2TOVKA]Z\X]E=R^*Y>NW7A4]<36]:!.]?K_K^^8
M.?^IE\]_<@+\1Y&:^K-U_E.'^3\DL3?_H?]G9_Y#_Z_Q^@_]/^9COO^S</Y3
M>O[C]$:\_T&2WSK_[Y;4NGOZ[/F+E]7S_X:-3TQ-+RB:-%DDWJ*R<JD+N&V7
M-`7PG#+_+V[<A)2TB87%LA$7+Y.F`&[=>4!DX-EZSO\;7CW_[^%C>?[?_>5^
MM^_<=1L]<LS8B^<O)V=GYN9/FS)CEF9IQ<HUUZ]&W]R[>_^9DSNVC!H1GW"A
MZE)25D9.GF1$QR6K5JR^=B7JQI[*?:=/;#]EZWI0Y]7Z'_#QIVR<_U3FOV/^
M`TW,ZL_.^4_>B/M?2`+_P7_P'_S'3/WA/]*H]G^;G_^LGO^.\Y\D@?_@/]/Z
M9^/\9_7\/Q[^HXB%^MOX_"=OQ/?_:&)O_L/Y3SOS'\Y_-E[_X?PG\ZEC_[?1
M^<_J^7]X_Y\D%N<_R/Y3SW]HXN(MS7_P\O&-Y"3_W7W-?\:HZ/:A@\>,34S.
MS5=F0"PH6R,"4/%?E5\/?P\G]T'Q"1.2<O*D&8&B`!>O%@&H^.]<0&Q7S[?/
M?W`-[QX6L3EP4_"0SC&M0UKUY!\^OM`KJ-/Y^TNZ5*PZ[38\;N3H*Y>NC4]/
MS<R69D!H%BU?MO+6#<,=T7]G1?\-&SIBU.6+5\>EI61DE1273G5<6+YTQ<WK
MPFW1?V<:L?\&,G/^TZ#<_VF$_RA24W^VSG_JT?\CB;WY#_T_._,?^G^-UW_H
M_S$?\_V?A?.?!N7^3Q[[/T4LSG_7-'5LUD0]__WG-C7O_SD-<AE<<_]+ZU:"
MP=@N.-'\_3]IOM^Q4Q<O7[U^SR?"UZUY^Z3<_"*Y-RB]_K=QRSZ1?L=/7[IR
M[<9]OVC_7S'_O:WT_E],0(?`9*^HED$M8O6CXEU[=G7W&+'5>VC<,&?)=8]>
M/#!__V_W,_[)N3/G[]P\<51RX>.7#PNDWN#2LO(5DS;MW%ZYYSGWM.KLA;NW
M3MZV=3VH\VK]#_CX<S;.?QJ5^S_1_R.)6?W9.?\IZ/#]/Y+`?_`?_`?_,5-_
M^(\TJOW?YN<_C<K]G]C_20+_P7_2^O^>F?Z?4>[_";C_DR0U]6>K_\?A_B^2
MP'_P'_P'_S%3?_B/-.;[/PO]/]E_G`[[/TDP_P'S'^3UW_>?/W[?0(=`Z^,_
M7BO-_]0;.!W\1Y$WZM\@"'R']_]T>KS_31+X#_Z#_^`_9NH/_Y&FEOW?Z@BL
MC_^4YS]>;\#\)Y+`?_"?O/X'?-"?A?.?U?[3:W'^DR1F]6?G_"=OQ.<_2>`_
M^`_^@_^8J3_\1QK5_F_C\Y_*\Q]GX''^DR3P'_QG6O\LW/_):Y7Y[UH]_$<1
M"_6W_?V?Z/^1Q-[\A_L_[<Q_N/^S\?H/]W\RGSKV?YO<_ZD\_PDZ#O-_2?(N
M\]]#ZYK_;GF^NS+_W?)\^%\Y_STDK%OXJ8#3K\U_?Q';U>/EH"W>!PX^<;4P
MWYVOGN]^QL)\>*YZ/OQ36]>#.C7K_\-^;/3_=$K_#_XCB5G]6>K_P7\DL3?_
MH?]G9_Y#_Z_Q^@_]/^:CVO]MWO^3O_]O@/]H\EOG_\6-'#U&ZOXE)E7/_TLN
M+IE:>_]/F?^7,DF46:W]OWK._TNMGO\7GR#/_QM5Z2<ZU"TC+6MB7DYAJ:G_
MIU'Z?]&F_E]F>G9!?F[1%%/_SU'I__T_>^<!%M6Q]G$@Q:[8>P%4!!1W]VQ1
MT23&GIAF2;OWAAC-EVNN*3?&W-A;[/0F(-)![%T!>P&E"XH%"[U8`2N=;^:<
M799U7<CJ,F?6??_S:/`!R9(WLS._\W_+,/#_QHRFP_]C./\/ZO^(2$/\^??_
MH/Z;B(#_@/^`_X#_J(D_\!]1-7#^\^3_,9S_!_4?1`3\!_PGW_\3Z?#_&-;_
M$T+_3R)2B3\5_I^4XW^8_T-$P'_`?\!_P'_4Q!_XCZC4SG_>_3_V^;]4`L]_
MB0CJ_Z#^C]O_XZ?0P7]B;OX?^']$I!)_BOA/!/7?1`3\!_P'_`?\1TW\@?^(
M2NW\YYW_V/H/*?3_)"/@/^`_Q?,?FO(_\?P7X+^FEX;X\YC_B?E/(A``_Q$1
M\!_P'_`?\!\U\0?^(ZH&SG]>\S_%$CC_20CX#_A/\?R'#OZ3</Z/#/B/A#3$
MGW?^$\+S/R+2-_Z#_I]ZQG_0_]-P^0_Z?U*O!LY_GOA/PO*?%.H_B`CZ?T+_
M3V[_3YY.1_ZGA,W_%$/]'Q&IQ)^B_$]&!.__)*1O_`?^GY[Q'_A_ALM_X/]1
M+[7SG_?\3_;YOTP`]7]$!/X?^'^*_4^3_R>&_$\BTA!_WOT_$?1_)B)]XS_P
M__2,_\#_,US^`_^/>C5P_O/J_\D@_Y.(P/\#_P_M_Q]F-)7Y9Z0M_^'[OU`J
M$@/_D9`R_DUD_AF]E/\G%(+_1T3ZQG_@_^D9_X'_9[C\!_X?]5(]_YO`_#/2
MEO_8\U\DA?I_(@+_#_P_=O_;3QI'1_ZG#.:_$Y1*_.G)_Q1+P?\C(N`_X#_@
M/^`_:N(/_$=4:N<_[_F?,IC_3E#`?\!_BOU?Y_^+^<S_9/>_6"8%_B,A#?'G
M.?\3A9^!]W\2TCO^,S;A\CSQ[T8(ZTSP,L5@AS\PT<!_"FGBOSH9\7__UW_^
M"V+O_Z'U[O_A]>[_>]#]?Q^Z_Q]@[_\1Z-<V=/_?P68`'B',?\___=T4Q%_?
M^2^8Y;\PM+:C^$>B^$>CCXZR\:]%]+<7T=]^1'^8_Z+D_'>"S?[5GO^>YS?@
M/RW5P/G/4_ZGC)O_#N<_$:GQWQ#;H0*AB!&S_">1RA#4V2ER0A$7&K?I/-#,
M<D"G+ETM!K5L8=I.26BM6UE9V[3M-W?E&D?730$A8;L1!$8=2TA)O7CU1D'1
MP\<UW?IW[]"L_>]_K75R\PL,#=^#(##Z>.*%M$O7;A8B0JSM,;AGQPGJQ/D<
M$JY:;;YNO7.O>WWNN)0U[UNUV3\H^'!D[Z3[R7?3RTM*+_]OWOREBQ<NW^#I
MOM%GZY;M.Q\<.77BS+F8C+BL6SEY3RNN_/G'@F5+%JUP\/+P]MT6L6-7\='3
M)\^>C[T>GYV9F_^L$OB/[_H_H8#C/YC_1T0:XL\__T'_+R+2-_Z#^C\]X#^H
M_S-D_H/Z/SU2`^<_/_S'WO\D0A'T_R8BJ/^#^C^\_^?04O_'[G^AE('\3R)2
MQI^N^C\1U'\3D;[Q'^1_ZAG_0?ZGX?(?Y']2+]7SGX+Z/^[YOPCJ/\A(Y_F?
MFO,[N?Q/S?FA.LG_U)#?*9/G=^9IR`^5RO-##=;_FV,_;BH=_I^0F_\.\_^(
M2$/\>>__*83Z;R+2-_X#_T_/^`_\/\/E/_#_J%<#YS]/_I^0]?\DD/]#1"_C
M_UDUY/]I]O<X_T^S/_@W_;]!UI8V6>:9]?R_6CN+KC4+SO>\G%[97H._)Y;[
M>]D:_$%&[@]6\!T/TI+O_W]_3XW_)^3Z?TJ`_TA(&7^Z_#\A//\C(GWCO^;U
M/3]U_Z^Q'[?1+S#B__[_>O$?:?_OU>__?,?_]>$__8R_04GU_*?!_Q-R_A_T
M_R8B-?Y3(-<@&ZO!UL]Y;XL6+[%DWIW^R>?3WGE_S)0O!$.EDJ"P+5NW[]BY
M:_<>D1!QFW@RMO:B6/:+.1>7D)22>C$=,UYF=N[8J>.&#QF&K4$6_;`]F)A\
M(>W29<R(63EYX^TGV'$HN8IS%!T<G9Q=7-W</3R]-GK[^&[RV^P?$&C\\:<?
M??;MQ!$??/W>-[8?SIKQ9<0VV7>31HX*_VIT<$BHR1MOOO5VL^8M6K9JW:9M
M.]/V'3IVZMRE:[?N/7KVZMVG;S^SF?D%A46W[]R]=_]!<4GIPT>/GSQ]5E9>
M45E575-K;M%_P$"^XT%:BOW_&S7\)V+Y#^:_DY$R_G3Q'P//_XA([_B/;?UB
MS"5Z&AEC(Q";=Z:F<A?O%?T_S(=\W_]?=_X+0O?_$'3_QY\_S/8'X3Y_C/T\
MY'_J.__M1?'?C^*/^0['7\%W.UF^@_Q/JJ1Z_M/`?_C^QS`P_YV,U/A/T?*%
M]?^4?5\4-J!QFVX#S2T'=.W>@^O_HJ3#UJUL!@]IVV_1VO5NWL&AX1&[]NR+
M/GH:$=[ES/SBTD=/RGOV[]6Q68>%:]:Y;@P*"=NR<_?>J".G$"&FW\I[4/+P
M<5EOVSZ=-?=]4=B`JX619H>N]NUT,R.[LGEM]=!5S.'V!Z\(NMRXEE4AKJE*
M6[)BV5\'7!R<?`/]_;;M\/`Z?O)L;/QYZTNW"^_??99[/77Q\J4K]SMO</0)
MV+QIZW9WSV,GSL3$G;.Z6%1P[\[3'!'?\2"MNOUO/W$*%?,?V/TO$C$P_X^(
M5.)/S_P'"=3_D1'P'_`?\!_P'_"?@?.?XOSG>_X#QW]2&=1_$!'P'_`?WO_S
MJ/'_&,[_@_H_(E+&GQ;_CYW_(13#\S\B`OX#_@/^`_X#_C-L_IM'C?_'</X?
MY/\0D=[QWU]R_LNX@?BONG;H2CG_7;N.^*^J)FWULB4K#CBX."'\\^7X+_8L
MYK_"VYC_;J:N6KIX^?X-SHX(_WPX_HLY@_FOH,BP^<]^XG0Z_#\QZ_^)P?\C
M(I7X4^'_L?PG@?Q/,@+^`_X#_@/^`_XS</Y3G/^\^W_X_L?(!.#_$9$!\%_\
MV?.QB/_NW[W]8OZ+.W,N!O'?O3M%!LQ_\ZGQ_\2L_R<!_B,B9?PI\_^`_XB(
M-OYK[/6J]G_!XB;`ZV9QWQ#XK\G[?RCFOQ]"]_](=/^/EO?_/([X[23BM].(
MW\XB?HM%_'8>\5L\XK=$Q&_)B-\N('Y+0_QV"?';9<1O5Q&_92!^NX'X[1:Z
M_V>A^W\.NO_GH?M_`;K_%Z'[_QUT_[^'[O\/T/V_!-W_'Z+[_V-T_W^*[O]E
MZ/Y?@>[_5=#_A5#\%?/?#Z,5A=81>?_/$VB=0NL,6C%HG4,K#JT$M)+02D$K
M%:V+:*6C=06M:VA=1^LF6IEH9:.5BU8^6H5HW4;K+EKWT2I&JQ2M1V@]0>L9
M6N5H5:)5;=C\-Y\:_X_E/P;Z?Y.1&O\I0,]\@,7`_NHX9C98_-[(T>\R$NFH
M]ZT&#;6M:PRSU,8:<>(0.SP/8NUZ!R<7-P\O;U\__T#,@KC?YS[9.\.$EH+E
M*U>M6;?!T=G5W7.CSZ;-`1@%M^)^H?N'CQ\AFF'<2`>7>=^IT""BSP,'#QV.
MC(H^<O38\1,G3YT^<S8F]MSYN/B$Q*3DE`NI:1<OI5^^<O5:QO4;-V]E9F7G
MY.8UT`+FOS/YC@=IR??_[%G4\)^,F_\'_5^(2!E_NOA/!/F?1$0;_S4FF/_W
M6O`?S/\S9/X#_X\:J9[_-/`?>_Z+9'#^$Y'.Y_]IGN_'S?_3/!]0)_/_-,SW
MD\GG^^5IF`\HE<\'--3Y?[-_MI\TEH[\3QF;_RD2`O^1D$K\*<K_%$CA_9^$
M@/^`_X#_@/^HB3_P'U&IG?^\YW^RY[]4`N<_$0'_`?_A_3^7%O\/OQ?@_B^0
M_TE$ROC3Y?\Q,/^/B(#_@/^`_X#_J(D_\!]1J9[_%/A_[/V/8:#^CXQTSG^.
M?O[!X7L0X+$3_A+Q[+^LG'L/2AX^X_C/8=/FH+#="!#9"8$)>/A?9O;=^\6E
M3U^1_Y)8_G/Q=?/V\J@,C-BU;4?D\>BCH?$IZ:D7JV6U>7<*BIZ4WW+V<=WH
MZ5X1L&7GUNV'CT4="8E+OG0AK4I:DWL[O_!QV2.^XT%:=?O??M)4*OP_=O^+
M1`ST_R0BE?A3Y/\Q,/^5B(#_@/^`_X#_J(D_\!]1J9W_?/M_'/])95#_3T3`
M?\!_BOUO.WON+\.&288+);HE0>WX3\C=_R7`?R2D(?XZ)4'M^4\B$('_1T3Z
MQG_=.,HS-:G'?_@[XS\;FQ@#_]'&?^&-W/\/U-W_CU+`?\<IB/_KPW\1#?!?
MY'/\A_N_U`+_D58#Y[_.2%`[_L/W/XE0!L]_B4B-_T;*>WZR_%>O\:><`8W;
M=A]J);#MUJOW8"'FOS_G+UR\=-GR%2O_:M-:(I69#ESMN7%3`&[H$G7DV(E3
M,1?2+EV^?K/P]MW[C_H,Z=NY6:=5'EZ^_K@A3&3TT>,GSZ:D7DS/N%%0=.?>
MPW[#S;HTT/A3SH#M!EE;VEPUO])_38]A+08T'R%:M.2)G477QPMB>U96%+=?
MY[[!U=FQW"=H2TC8WL/[#VX^<SXY/K%:7)N9GYU;^NS:6K?U+DX.9=Z!X<&A
M>P[M.^!W^EQ27$(54W,K+RNGY.D#ON-!6G7[G]WY3>,`:L=_[/QW1@K]7XCH
MN?@WB0/X$OX?V_\5WO^;7OK&?^#_Z1G_@?]GN/P'_A_U>L'YKW,'4#O^P_<_
ML0#ZOY$1U/]!_9]R_PN;!`!?@O_$4/]'1L_'ORD`\"7X3X;]7WC_;WH!_P'_
M`?\!_U$3?^`_HGK1^:]K`'P)_A-"_1\9`?\!_^']_SLU_5\8;OZ?`/B/A)3Q
MIZO_BQB>_Q$1\!_P'_`?\!\U\0?^(RK5\Y^&_B\,U_\%GO\2$?`?\!^[_^W'
M3*2C_PO#S7\0`?^1D$K\*>K_(H3\?R("_@/^`_X#_J,F_L!_1*5V_O/>_X7A
MZC^@_I^(@/^`_[C]/VD:'?PG9OE/#/U?B$@E_A3Q'P/U?T0$_`?\!_P'_$=-
M_('_B$KM_.>=_\1L_8<`GO\2$?`?\)]B_]/1_Y/=_Q(Q^']$I"'^O/?_9"#_
MGXCTC?^@_Z>>\1_T_S1<_H/^G]2K@?.?I_Z?8J[_)_A_1/0R_3\'-=3_<Y67
MMU_@MAV[]N#VGJ=C\?R'G(*2AX^?5G']/U=O]-D<M'WG[KVX/>B9<U<S;MS*
M+2Q%@%C]-_M_6EK96&>:9]7K_UEC9]&U=L'YGNF7*]JO7^O@YN+DX1L:'!YQ
M8-^A2/^S"7%)J2GBBW>*[CTHR\O>L,[1W=79<U-8R):M!_<?C@J(28Q/3KO`
M7+I[^WYQ>7XEW_$@+<7^_Y_]I,ET^'\2SO\3`O^1D$K\*?+_8/X#&>D;_S6O
M[_FI^W^-_;B-?H$1__?_UXO_2/M_KW[_YSO^KP__Z6?\#4IJYS_O_I^$F_\G
MA?.?A-3X3X%<@VRL!EL_Y[TM6KS$DGEW^B>?3WOG_3%3OA`,E4J"PK9LW;YC
MYZ[=>T1"Q&WBR=CZ8T<_8/LO(0G/=\`,F)F=.W;JN.%#AF'KCT5#;/\E)N/Y
M$)@!LW+RQMM/L.-0<A7G*#HX.CF[N+JY>WAZ;?3V\=WDM]D_(-#XXT\_^NS;
MB2,^^/J];VP_G#7CRXAMLN\FC1P5_M7HX)!0DS?>?.OM9LU;M&S5NDW;=J;M
M.W3LU+E+UV[=>_3LU;M/WWYF,_,+"HMNW[E[[_Z#XI+2AX\>/WGZK*R\HK*J
MNJ;6W*+_@(%\QX.TY/O_QQG4]'^1L/U?&.C_0D3*^-/5_T4([_]$I'?\IT)[
M:OP'_I^A\Q_D?^HW_X'_1U2JYS\-_5]8_A-)H?\+$4'^)^1_LOO?_H-/:?+_
M1.#_$9%*_"GR_P3@_Q$1\!_P'_`?\!\U\0?^(RJU\Y\2_T\"SW^)"/@/^$^Q
M_VWG_3A[;A-`H';\)V7]'QG,?R<B]?CK'@*UYS^Q6`KS'X@(^`_X#_@/^(^:
M^`/_$=6+SW_=0J!V_(?O?V(V_PO._Z87\!_P']K__Z$G_U/*Y7]"_Q<B4L:?
MLOQ/\/^(B#;^:^SU-L9_.OA/PO?]'_@/ZO\,E__XC[]!2?7\IR'_4\KE?\+Y
M3T1J_*<H]+-[9^2[H]3+\49,F/Z?[^?\..W+K_[]T]@QDS]TW^BS"9?E!06/
M'X<X;=)W(>$1N/N+HLRO7A7@U[/_\<E['X=NV8J[ORBJ!.M5`?YS[K\^<S5N
MI(+/;>*L_YOYP^_??/IMV.>_O3]C]+R???T^^L-^RE3OTU]X>'I]<"WC^HV;
MMS*SLG-R\QJH]3-CB_TL!UE9VPP>8CM4(!0Q8HE4-FPXW_$@K;K];S]A'!WY
MGS(V_U,@!?XC(97XTY/_*99!_V<B`OY3$]_W?^`_X#_@/^`_(E([_WG/_V3/
M?ZF8@?.?A(#_@/\4^]_VA^]_^>V'V3-^GC%SQJSO?YJO*Q[4GO\DC$@,_$="
M#<9?1SRH/?^A_Q,@_X.(@/_4Q/?]'_@/^`_X#_B/B!H]_W7`@]KSGU0FA?E/
M1`3\!_RGMO]_U6T5H%;\QPAP_C?#P/QW(M(4?UU:@2\Q_T\*\Q_("/A/37S?
M_X'_@/^`_X#_B*BA\U]75J!6_,?>_R0RR/\AH]>4_RHX`*SD"+"J/@)6EY4#
M_]5)L?_GT%+_Q^Y_H50,\Q^(2!E_NNK_&'C_)R+:^*\Q0?\7X#_H__(:\Q_T
M?R$JU?.?@OH_]O['B&0P_X&(U/A//OY]K/&;)F^]H3;^_?/YK;L/M9+/?V^Q
MP'2ALO]+JY8(H-H.=%"=[X[![GIFX>V[]Q_W&=*WX]L='+U]_8,Q(+(S`,_C
MZ8`WLHKNW'OPI-]PL\Z-CG__L\T@:TN;$>:=^COU&-9\0#,[T<I5[4=:=.FZ
M/*[GXB5+V[DZNWN6U3Q5G>]^H4I<D9N=_[#X9H:;BX=7>>TSO_#0B&V'#D1&
M!\8F):2D5C.5>3D%CTINE?(=#]*JV__V$^B8_\X(N?D/T/^3B%3B3T/]GT3`
MS7^`_L]$!/P'_`?\!_Q'3?R!_XA*[?SGN_Z/O?\Q4NC_34;`?\!_>/__0HW_
M)^3\/ZC_(R)E_"GQ_SC^$T+^)QD!_P'_`?\!_U$3?^`_HE(]_VGP_UC^8P10
M_T=$,/\!YC^@_3^''OZ3L/PG@?GO1*2,/UW\!_-_R$CO^,_("&.?_'<Y!AKA
M/W(R9G^A9<Q]K!3[&>[+3/#/RGY@HGS])OB/P']\W__YJ/_*D-__@?_T,_X5
M\O@#_VDMU?.?!OZ3</P'^3]$I,9_\CJX$2S_V8U4V($*)]"X39=!9E:6G;MU
M'V#=LH5INU_^._>/^0L7+UV^LG6KP4-LV_9;M<'1Q<W+V]<O*"1,4>H7Q5J!
M/0;V[-"L_6H')U>V:#`XM*Y2,)JU`GL)>G=48<T7PF!<O'F"A3`QJ4]RUZ$I
M?9N+;'[_WX74M(N=+J5?OG+U6L::ZS=NKKNU/M/3(RO;7Z4'S)'BDM+#_=D:
MP+7/G+E&,`&!O_XV[\\%BY8@BCU:4QL3&<MW/$BK;O_;3QYM._-7(=IZ.B=!
M[?D/W?]A_@,1O2C^NB9![?E/+!9"_C\1T<9_C;W>YJ_VXZKUAU&^?B,C.4KR
M??\'_H/^+\!_T/^%B#2=_[HD0>WY3RR1P?P'(E+C/P5IC7QWU'OO/.>]X;8P
MXS_^YQ?_^L='GWSZU3=CWI\T<?G*56O6;7!T=G4?-Q:AVH3IGICM`NK!']?G
MY4S,N<^^GO+AZ`\P&OH'UH,_MDT,-@.GSIPV>6EC_5^6Q<4G)"9E):=@Z),S
M']OQ)3LGU\S<(B]?@7LE!<6E_0<,9'F/@[UGEC6U7S[?\67%7ZO7KG=P<G'S
M&#;\\^]FC>`['J2ELO]_FC?G^SDS?A'JF`"UXS]V_J<,\C_)Z,7QURT!:L]_
M$I$(^K\0$6W\UYC`_P/^`_\/^`_\/]U(\_FO.P+4CO_P_4\BAOQ/,@+_#_P_
MO/]_IR;_4\KE?\J`_TA(&7_*\C_!_R,B_>,_KN[/&"WT3V/%ZS`Q9?^^R2O6
M_V$^Y/O^;UC\%X'N_]OJ[O^[H?[O->._2!3_Z+KXGX#Z/[JD>O[3D/_)/O]G
MA&(X_TE(8_^7-YN]U?QM]?XO;[3K/M1:8-NU=Y_!PM:M.K2?C]&/G1#1M@T"
M1U/+=9X;-P=LW;Y[;]21$S'GDJY=OYE==.?AXZ>'R_H.Z=>I1<?U7M[^@=MV
M[-D7??1D[/GDC!NW<F[???3D662YV7#SO]'_Q=C*9I#)"(OT`9D]A[4<Z&XG
M6K:BQ\C^72XOR>JU8.$B#^?]KCZ.&\*V;`JJ"-EY[."9_+B$E"L74\4/3N66
MW*NI*G0YX.;KY!`>X1=<&;KK^*&S!?&)%ZY>2F.*3^>5WJ^M[L9W/$BK;O_;
M3YY&1_]/&=O_$_B/C%3B3U'_3P;>_XE([_A/_J]AOYL*_YGJ@O_`_^.#_Z*!
M_UYK_ML&_$>KU,Y_WOM_LO.?9,!_9*3&?PJ_C_7_U/#O"^,V77'_SRZX_R?V
M_Q9@ZXP=$-BZ%=O_LQ[?G3H7EW+]9B;'?Y%EN/]GLPX;-OH$!&W?N7?_D6.G
MS\=?P/UA6/Z+*N\WW*Q3H_@WOSO7__-*_U&X_Z>'G6CYRO8C+3I?7=JMY\)%
MBST/A&*^<_';%5P5'G'\4,R9I(34:^D7Q0_R,?]5%!X,<]_D[.BZ>7=(]9:M
M)P['GDU.3,NX?(DI+L#\5WF2[WB0UO^S=]Y!;9WI&C?.9@'31.^]=^GH2,(M
M<7*3G9N>33;9379G/+N9S-S<^*X3)W8<&W#%C6J*>^^]48U-L>G&F.)>Z;VZ
M83KWG",))(3,8L-W/L'[Y(^`%8$S[WSG_7YZWB)[_GW^]<]YO_[P'<O]?\SY
M%_"@_A.)AHL_!OU_(A'4?R`1\!_P'_`?\!_P'_"?;/YGK_^/OO\)>`+(_T@$
M_`?\-W#^O_N)1PA$[/(?*:[_$\'\3R0:+OX8\!\I@,__D`@W_N-,$7?U39%\
M(5WQ(/E^"M1_3D#^@_K/B<U_4/^)K93E?];XC[G_D4("YG\BD0+_2>%+SX!C
MJ*](8+J6[G-FOO.VBX_O['?-3&VL!^L_+<PI6K3R4U[_R7V+9V]DI[S^D_B0
M[_B;VM0OW_C+7[_Z^@]_>_.;/SI\ZJSNZN;A^8\_?Z'Q=\UOIQE_KK58>\:L
MZ3H?D3>%I5X?F(BB/OZOY2MM/Q$XW0HL\WY)_>?[(]1_OB>I__R,[7B@EMSY
M_^&7^7Y^@NF\,1X!.CK^(QC_CX3YGTBD)/YCBH"O,/^%"_O_T`@W_AM)P'_`
M?\!_P'_`?V.CE^3_,4/`T?$?P<Q_X\+\3R2"_C_H_QMZ_DDVYW^*^8\4`O\A
MT?#Q9WO^)RDB@?^02.7X3VTJ#7/B1>]3U,3@1[^7_@D4W@'_8<]_>ZG[_W[J
M_D^_GBA3'YA"O9X"_*?R_'>6BG\L%7^:[P[+U/>>9/A>.?^E`?^AE_+\S]+\
M3S'_\0C@/R12X#_)^,^93/VGPOC/3]1TS5T=W5S,+"R=W+6FZ7,&"S-UM+V\
M??3LEX2$16[:=^#(L:3DM(RL_-MW[Y=6U;5W="7T6#E;&ZD;+@T-C]J\_^#1
MX^<OI&=F7[US[T%9=?V+SN[$7AM?6Y,1QW_.7Y/ZT.',)3OC\CV':C3[-+AK
M^8\,SE[FF5;L/5R;UW]EG7_@ZI7+-YR+V+)KVXX3I^*B<VY>+"@N]+S^I*&I
MI>U9Y?J`94&K5@13E+A[^\Z3I^-C<F^E7"LI\KCQM+&Y]?%S@NUXH);T_"_"
M9?XGR8?YGP@U&'_,YG\"_R&1RO$?^'^JSG_@_TUL_@/_3X4DG_\QF/_)W/]@
M_B<J(?/_XD?P_Q)>R?_;.,3_BPR/C9+Q_Q(S:F3]OYZ^ZHBX:!G_+RFS5M;_
MZ^V?M/[?HKD??XW%_$_F_!.$D`O\AT)R\<=H_B?)A><_"JD<_TE^#<Q_F4#\
M!_-?)C;_P?P7;*60_]F>_RGF/Q$/]C\A$;+Y+PDCS'])?*7Y+Y%#YK]$Q1V(
MELQ_Z3MT)"UI</Y+#<U_7=7Q!V,D\U_Z#Q]-/S\X_Z66YK_N5+;C@5J2\__O
M>=CX?Z38_P/^0Z+!^./E_T'_'QJI*O]QQ/RG(.`_%>._L=[_#OR'%_^--O[`
M?T@EG_]Q\/](QO_C`O\AD0+_2<L]&?X;2G]_^T9-UXKPXO,L;>U\2:UIA@;^
M%/[1]+<A6$?;;_H,CGO(SMW[#Y^-C4^\E)&5DU=`\UUU/<5WG7WV7`<3=>/0
M77L.'#D7EY!T.3,[]\HU"@\K:QJ>M7=T]3O.<C(;B?Z6+-7S]/;PF>ULZAIF
M/5/33>,MP:H@H[==S"U6%-H$!"[3WQ@>M75SS/:]QX^>/'WA?$K:P?R2HAMW
M;HGN-3>V/NZNK8J,B-ZV9=..?2>.G3IS,3DU_=#5Z\4W[]X6WF]I:GO24]?+
M=CQ0:^#\S_E^X8+YXP.!H^<_0DCR@?]0:$C\QP4"1\=_/+K_#^K_$0GX#_@/
M^`_X#YOX`_\AU3#Y?\PA</3\1_*Y4/^#1,!_P'_,^9_[[OMXU'\*F/I/'O3_
M(9%<_+&H_^0Q\W]$,/\9B8#_@/^`_X#_L(D_\!]2*>1_UNL_Z?L?7PC[G]`(
M^`_X3WK^!^;_"MC<_R"`_>\(I23^+.Y_X(GWOX/_AT3`?\!_P'_`?]C$'_@/
MJ5Z2_UG:_R"`_>\(!?P'_"<^_Y]^C)/_1Q+`?R@D%W]\_#\!`<]_)`+^`_X#
M_@/^PR;^P'](I9#_,?'_1-#_CT3`?\!_TO./A_\G')C_"/PW_E(2?Y;]/P&7
M!_6?2*1J_&<FICSQO$\)_]$_F?Y>O!H0^`\K_CLTPOT_;N#^?Q$#_DO%(/X3
MA_^.O(3_DH;P7PKU3S_P'VJ])/^SY/\)&?]/!/-?D$B!_Z0K_QC^>T]A`82:
MKKFO&]?'C)[_2?/?XM^7!BQ;OF+EJM4ZVO3^!Y>@35MV[#EVXM29Y(NIZ9>S
M;]^]_["BINW)L_8>&V];8W6C-9NW[MQ[_.3ILQ=2TBYEY-RY]^!19>UC"A![
M[:;;FRC?^R=E0#U7=T^/4H<RI[46?IK.&C,(_\"^F8ZF_4MR+6_>ZM+?L"XD
M,B(L>MN!?8>.Q)U+2-J5F9]74%Q(7F^H:VKIJ"H/7A\:M3$\9OO!_8>/QL<F
MGM^==?7*M9(B_HW&^N;6SNINMN.!6M+S/TZC7QB-CO]$XOF?L/\=B0;CC\O\
M3YYX_Q_4?R*1JO$?^'\JQG_@_TU>_@/_#WO)YW\<YG^*Q/O_(/\CD0+_29>]
M,_O_AKI_W_[]#8X-Z2/@6]L[\(0ZVL9&@2M7KZ'=OY!0/=T9,V<9>(9MW;Y;
MAN]*;MRZ<[^TMKZQ^9DCX62F:1J^;<>>?10>GJ/Q,#/W^LW;=Q^4U34TM3QW
M?LO%8B3WSS]`W]O7B_NVJ[E[A.UL+8]I<T1!:TW><;.T6I5G1W&H8=3&F,T=
M?>T[I7RG1O-=4<_TKLKRZB>M#^]%1V[:TMG_8M>A`T>.)<0E)4_-+L@O+.[U
MZZZJJ'G:]N@QV_%`K8'S/_?3S_"H_Q0Q]9\"J/]$(KGXXU3_"?4?2`3\!_P'
M_`?\ATW\@?^02B'_LU[_R?"?B`OY'XF`_X#_J/,__SM<_#]F_QM/R!<`_Z'0
M8/SQ\O\(F/^,1,!_P'_`?\!_V,0?^`^IY/,_!OZ?>/\O(2(@_Z,0]/]!_Y_T
M\Q\L^O_$YU]`\H#_4$A)_%GO_R-@_C,2J1K_0?^?BO$?]/]-7OZ#_C_L]9+\
MST[_'W/_$_!@_Q,:*?"?N/OOO?<9_V]H]]_7?WV#8\GS)+@6-K8^?-K_6[(T
M8!G=_1>T1D]7Y#?=P&UM9/26;0<.'3E&(5[RQ?2"PN+K=QY4U=0U/+'SM3?5
M-%D7%;-U^\'#1X_')YZ_D'+I6E')C;L/JVOK&Y\ZS'0T&ZG[;_'O^AY>[MXW
MG6ZYK+>:H>4Z;189N/S9;&?SY_Z7K?.OMAB&;`B+Z.AKW[1KQYY]ITZ<.:>6
MFI61D]<C["I[5-'6=.]V:'#XQL[^%YMW[]R[__3)L[%3T[(S<Z_T"KK+2RL?
M-]]O93L>J"4Y_S_-P\;_XXG[_V#^"Q(-QA\O_X\/G_\AD:KQGP:%<ASZ9]$_
M<8H:#8(TO'$X$HI[3?[C3&'__C^Q^$_Q_K^7NO_OI[B/?IV^_TM?3V%>!_]/
MU?GO+!7_6"K^--_1\9?R_4F&[\'_PTKR^1\'_X_)_WPNS']!(@7^$P@IC)LQ
M<Q;C_\V6TN``"*KIF+DXN#J;FELXNDW3Y.@-.G/:6IY>WKIV_NLV1&[91P'@
MJ3/GDB]>OGJMZ%9I=>OCI\\[+9VL#-4-EJY=OW'SWOT'#Y\\??;\A4OY!84W
M'U6UM#UYUF'M8V,L5VLZ+`BNX279)SRT-;ISK[Q7H[O?-XB?J!__@&MR^VY9
M#]G55Q*X<OGJN(BPD&U[=NTX=B)Z4WKJE<S<;(\;];7-C2\J[Q<'K%BV*C8\
M-'CK[IW;CQZ/BDE+R<O(R7*_7E?3U-!>0;`=#]0:./]S/\=C_P-S_@F"Y`/_
MH9!<_''J_X/G/Q(!_P'_`?\!_P'_37+^D^9_MOO_Q/E?Q(7^#R0"_@/^H\__
MK]CX?P3C_PFA_A.)!N./E_]'@O^'1"K'?[*_'/K_5)'_H/]O8O,?]/^ID.3S
M/P[^'R&>_PGUGT@$_7_0_\><_SG?+UPP3DL@1L]_A%!``O^AT)#XCPL$CI[_
M2!X?_#\D`OX#_@/^`_[#)O[`?T@U3/X?<P@</?^1?!X/\C\*`?\!_S'G?^Z[
M7^!1_\D7UW_"_$\DDHL_U'].NO@#_P'_`?\!_V$3?^`_I%+(_ZS7?_+%]9]0
M_X-$P'_`?^+S__E?<.(_(?`?$LG%'R/^(X'_D`CX#_@/^`_X#YOX`_\AE4+^
MQX3_".`_)`+^`_Z3GG\\]C\(F?L_\!\:*8D_Z_L?H/\/C52-_V#_@XKQ'^Q_
MF+S\!_L?L-=+\C]+^Q_H^Y^``/Y#(P7^FR69^<+PG\S@%PD#JNF:^[IQ?<RL
MK+UX-/\M_GUIP++E]`8('6V!4,1Q"=JT9<>>8R=.G4FF%[QGW[Y[_V%%3=N3
M9^T]-MZVQNI&:S9OW2FS'_[.O0>/*FL?4X#8:S?=WN0E@U\D#*CGZN[I4>I0
MYK36PD_366,&X1_8-]/1M'])KN7-6UWZ&]:%1$:$16\[L._0D;AS"4F[,O/S
M"HH+R>L-=4TM'57EP>M#HS:&QVR7[H??3>^'+RGBWVBL;V[MK.YF.QZH)3G_
MX]7ZQVCT_,<3"@G@/Q0:C#]>\U_X(GC^HY"J\1_,_U0Q_H/YGY.-_V#^IPI)
M/O_C,/]%*)[_`OD?B51N_N=*>O[G'5NC>P_+NS5Z^WU7T/,_;W--[CXHZR)[
M^DH"5Z]9'A<2$2:=_YF:GIE])5=F_N>JH&6QP>&ATOF?*6D967DYDWW^YX+Y
M<[_X#(_Z3Y&X_A/V/R"17/PQJO\$_D,CX#_@/^`_X#_@OTG.?]+\SWK]ITA<
M_PG['Y`(^`_XCS[_"['Q_T2,_R>"_0](-!A_O/P_Z/]#(]SX3[&C3ZJ!SK^I
M0UY0D_U&&>!)I80/!S2%_?O_1."_6$3]7XKW]]>__[,=?U7GO_^D_V\_)OV?
MBN^?9)+/_SCX?PS_\0G8_X!$"OPGI2V&_Q2Z[_S5M(T=;!SMC4Q,;9TT-?1T
MERU?L6IU$-T!J#7-Q<U#QWI#2%A$9/2F+=MV[-I#8R!="DJW^R5?-+,SUU?G
M!(>&;XR*V;QU^\[=-`4>I4M!8^,3SU](L?"T-`@@2.&,M][]TX>??O&U%`"Y
M__+V\75U#^1YK31TY@M$^7[39\Z:38$IQ:44EGYTY>-/*&RDJ)&"1JO>M$O-
M.7GU68W%UV_2M:>E_>65U;4%&9TO"A]W/VU]WI.:WI2=6Y?94%1RXQ9=?-I7
M5E%5<_5R1_NUMJXG+<_8C@=J#9S_N5]\A87_)^0R_A_P'QK)Q1\C_T_`A^<_
M"N'&?R-)0P[61J(YY8;?4.-/^LT4]N__$X'_QF_^R^N^OTWIWX_FO],8Q%_5
M^4\97]/Q[Q^1OT;B]]=]/_A_<E+(_VS[?\S]CR\"_D,C!?[S\/2B<(O+8_B/
MX)-2/U!B!:KI#/(?[?\-.G/:6LXNKKK6/RWX=='B)?Z!]%R8=7(P2/&?@;K^
MS[\L_(WN&5RQ*FCM>CD8M'"S-%1L.!QJ!<:=.9'0D)I^^6K)HUR-BA::,$^=
MH^@R,_O*M2(&Z<JJ:NJ:Z([#CJZ>/IHP3\=2=)F5DU]8S"!A>75M?3/=<=C9
MW=OO'G_V9&)CVJ6,@NNE>5:5K6S'`[5DS[_/1Y]]X.<]]FL@1L]_?((+_(=$
MP\5_K#%P=/S'[/\AA20\_U$(-_X#_V]"\!_X?Y.7_\#_4R$IR_]CB8&CYS]2
MR`?^0R+P_\#_&SC_DOE/8SS^<Y3\)_9_N$+@/Q0:/OYC2X"OP'\B$=3_(Q%N
M_#>2P/]3"?X#_V_R\A_X?RHDY?E_[`AP=/S'S/_FD5#_@T3@_X'_-W#^?YS_
M@]^"L:\"?07^XQ.P_P&)AHG_F%>!O@+_45_!\Q^%<.,_\/\F!/^!_S=Y^0_\
M/Q62DOP_IE6@H^<_4B2$_0](!/X?^'_B\__5.WCT_Q%,_Y\`]C\@D5S\L>C_
M(\3S/^'S/R12*?ZSDR`>1_P?2TA033P05$R"P'^8\!\]WY.^WQ\9,M\3^`_X
M[QSS>CSS>M*0^:#`?TBED/]9[_]C\K\(/O]%(P7^DUIM#/\I;N`;RG\,%`8$
M4AA(\Y^[CK6"[3?`@&+^4[#]!AC0PL/28"'%?]-GOOWNGS[XZ#.I^\?]UHOB
M/^_?>)Z+&/[+RO$K+)XQ:_9;<](8!,S,_N]K11]^_,FGGZ?^V:HW\7SSI8SZ
ME,8"6?[+N]#Y(E_,?PE)3>F7ZRXV7)7EO]SDCO8KDY[_\*C_9,X_*83Z3R0:
M/O[LUW^2\/Q'(MSX;R1!_:=*\!_4?TY>_H/Z3Q62\OS/5OTGP=1_$O#Y+Q)!
M_2?4?PZ<?RSJ/_E,_2?T_Z'1,/''H?Y3((3^;R3"C?]>ZO]Q9%R_04'])W[\
M!_6?DY?_H/Y3A:0D_[-8_\D7?_X+_(=$4/\)]9]RYW\<%@&^"O_Q8/XG$@T3
M?RSXC][_`<__\9=*\1_4?ZH._T'])_`?U']B+R7YGWW^@\]_D0CJ/Z'^DSK_
MO_R(R_YW(<GL?Q>`_X=$@_''9?\[4__+X\/^=R3"C?]&D@8%>PSN,;!&?3&5
M(\9!2?VF$JSC2/ZM#`NEW,B9PO[]?R+PW\ON_WLE_@_].LU_\GR(]O[_8LC[
M@?]>/_YG)?XOS?=T_.7Y;FSY__80?H?ZSU%*/O]CL/^=N?_QJ0L`Y'\44N`_
M:;TGPW^2HD^9JDPU+1UW.UMK76,3-Q<-CKIA^XN.SJ[NGMZ^?FU-<T>+:?8_
M!RQ;&TJC'05VI\\F7LK(RK]QKZJFKJ'%U,C,R4%O0>#R=6$T&5)<>.9<TN7,
M[*LW[U?7UC>V6AI8>2@I^I2!T*7<DU['"VSX)86WGN@_:_/T)T[YG+CFR[M>
M=/LI^?QQ#EU>>G3%JJ#PF*B-N_>N#XZ-/W\A+<4U[]&#BK*F.\6Y='7J,0I2
M(S9%1^[9MR$D+B'Y8GJJ\Y72AY7ES7>]V8X':@V<_[E??H3'_!>!>/X+"?R'
M0G+QQVG^"\S_0B+@/^`_X#_@/^"_2<Y_TOS/^OP7`3/_A0?U/T@$_`?\1Y__
M>=CX?P+&_Q-R@?]0:##^F/E_4/^!1,!_P'_`?\!_P'^3F__F8>/_"<3^']3_
M(-&H^4_'S,7!U=G4W,+1C9[_,M@;J*WEZ>6M:^>_;D/D%KKH\]29<\D7+U^]
M5G2KM+KU\=/GG99.5H;J!DO7KM^XF:[Z/'GZ[/D+E_(+"F\^JFII>_*LP]K'
MQGAD_EO#2[)/N&-K]/!>>;=&?Z]O$#]1/_XVU^3!W;(NLJ^G)'#E\M5Q(6$1
MV_;LVG'L1/2FU/3,["NY'C?J:YL;7U3>+PY8L6Q5;'!H^-;=.[<?/1X5DY*6
MD967XWZ]KJ:IH;V"8#L>J#5P_N=^^0$>_I\0_#^$DHL_3OX??/Z'1,!_P'_`
M?\!_P'^3G/^D^9]U_T\(_A]"`?\!_]'G?QS&?@YH]/S'$PI%P'\H-!A_O/P_
MDH3G/PJI'O_)"/8_J"+_P?Z'B<U_L/]!A22?_W'P_QC^XQ.0_Y%HS/<_*-_O
M(-[_H'P_Q'^V_T%V7X-&9>M(^QU&V@_A+KM/PJJBA>UXH-;`^9_[S5=X^'\B
MVO_C<P7`?R@D%W^,_#\A?/Z'1*K'?^#_J3C_@?\WL?D/_#\5DD+^9]W_$S'^
M'PG]_T@T,?V_B)"PE_I_X<&AX/\QDCW_TOV?!*O[WYGS+^#!_$\D&C[^[.]_
M%\'S'XF`_X#_@/^`_X#_@/_D\S];^]]%S/YW`<S_1"+@/^"_H>=?@`'_$;#_
M#XF&CS\&_`?]WTBD>OPG(ZC_5$7^@_K/B<U_4/^I0E*>_UGF/YC_AD10_PGU
MG_3Y7X1+_Y^(*^[_`_\/B0;CCU?_GX`+SW\44CG^D_WE4S@*>DW_#_@/=_X#
M_P]W_GN]^(/_AU3R^1^#_C_F_L?G$^#_(9$"_S'P1W$?17_J;PZ!/XK.?M"S
M^O?O\WZTM+5S^4E;R\@PD,:X]1N"0T)U=1;\\JO^HO`=N_8=H->]4TQ%,1>]
MA?U!65U#4\MS>U<'4PV3L.T[]^ZG][VG4!"7E4=O8;]?6EO?V/S,T</)?`3X
MHVB3LWC);TL]_]<L(,)ZX31_S?^;'[36V,OY9XM5^3;+EJ\PB([<M*7SQ;8]
M1PX=.Y&4D'Q1+;>PH+B_V[VWJJ+F:=NC>U$;8S9WM&_=??C@T>.)\><O3,VY
M=K6HK\NMI[*\^DGKP\=LQP.U!L[_G.\7+I@_/A`X>OXCA$+P_Y!H2/S'!0)?
MP?_CD?#\1R+@/^`_X#_@/VSB#_R'5,/D_S&'P-'S'\GG@?^'1,!_P'_4^?_U
M?[#Q_\3S/P4P_Q.)!N./B__'%^__@_E?2(0;_XWQ_QYG^.\'_ECN[R_Y,[;O
M_\!_K\-_KW__9SO^DYO_V(__I))\_L?!_Q//_^1!_D<B!?Y3F_K&'][\H[J&
MYC0M;1U=/8Z^@:&1L8FIF;F%I96UC>W_MW<><%$<7QSW-/G;%3M846DVO-V[
MY2QI:C02C=V8F'+!AD1C+]$8>TWLO9<D*I:HL2("*BI%0,2"!>F]21'LZ']G
M]O:.\T`D86='>3^C'O*Y<[,_9V>^\^:]]WF?P3\.'>7R]3<_.(_^HF?_?H:C
MGKU[_31F;%^G_"<^T>%,A'HG3IT^XWGVVY':03V^S'?@$YW-/(A0\:2;NX?7
MN>_&??^59=-FS:VL;6SM6HCG4%\]@GK>^\+%2SZ^?OZ7`P*#K@1?#;EV_<;-
MT%NW[]P-NQ<>$1D5'1,;%Y^0F)2<DIJ6?G]`9E9V3BYN4C\!\>L0W*K^P4"<
MLS@Q8_PPPTG4X2/0T5.Y_2`M_?Z/MAL=_?\T:J'_'_1_)R(C_RFJ_\G"_A\1
MT<9_10GB?\!_$/][A_D/XG]$93+_RUW_$Z__5!HEY/\3D0G_B=5>WBO_?H7_
MF<;BRIDU5MMSJD9-FS$.5:O4J9V)TN@P5%6OQB-:S5:S?ENZ<C6B.TQV;N<O
M7/*]?`6EW<4V9ZW,*]:;N>3W%:L0'6(R/(6"A/Y!*&\OQOHCF_H%EGPQU)CY
M9<:O-=JT;:W\V-:BQ>PF'U9N6>D3S:,G=3O9-6B8>]HR*_M!K?ES%RY.C$]>
MOG[MQLU[_G+=KSCI>>9L>FK[C&M7;T1'!/K-F[-@44)<TK)U:S9LVOWGWGUE
M3WBX>Z6EM+L?$GP]*CP@4FX_2"O_^!?S?YD2+@!3?/Y3<6KH_T!$A?A?HB18
M?/[CE'#^GXR`_X#_@/^`_ZCQ'_B/J%XS_Y<8"1:?_SA6"?6_B0CX#_A/&/_]
MN](1_^-P_,^!!?XC(2/_J8C_J03^A_HO1`3\!_P'_`?\1XW_P']$93+_RQ[_
MXW#\C]'`_$]"D/\'^7_B^*<C_H?'/P?Y?V14B/\RQO]4./ZG@O,?1/2V\9^Y
M0'EF9?/Q'_ID]+6BK`+XCS;^VU/$^O^X?OWO00'_>5'@_[O#?ZZOX3^W5_C/
MD__Q$OB/M%XS_\L4_^-P_`_R_\C(A/_$Q#O,?R;9=YV'5[?X<?)(9_.&C9J/
M1OPW'>7_S9TW?\'":E7'C!U78\+B=1NV;$-Y?SCG[\*5J]=NW`F/YP'O06.K
M)G4KU%FT=OWFK2CQ#R?]>0<%AUR_?2\N(2DEV]*V:;TN13:`,)LT9>+4T!$W
MIRVI/[[2SQ5=1LV<G6O7[*><&1<;!`9DU%SV^XI53QZMV;1KQY^[_SE\[(3B
MO)_/Y9?/;/*B(V.STL-N+?UM^<K'#U=OW,E3ZI%#1X^7/>=[R?_%4^OG41$Q
MF6EW2VO_ATD3**O_HH'ZGT1D\)^N^B]JR/\CHK>-_R#^5VS^"X?XWQOQGR.E
M\;^\MY;_R,;_7(#_BB_C^9^>^B^0_T]&)OPG]GO'_?],24Q1K2';6L4T:&+9
M5EVY4JV:,U#UE$4H`EBU"H^)9BV6;N/)Z_`_)]#!3_^`X(BHF+CD5-2+[T53
M9;.ZY>LLV[[SKSU'CIYTN^CC=SGP:F1T;'Q*&FK%][+Y!U;FA31]SW<"M'JK
M-BWM/[2N9[N\4<>*=A4^XN8MJ/VQC47].2&-?YTYJ\:J%6LV;5BW9=>^O0?^
M/G/:\^RQH!O70F_?T]S-2,]Z<"HQ8?7*M9LWKM_ZQW[7@X<\W+W.';]R\_JM
M.^$.89GWLW.\D_+D]H.T].-?.Z`?'><_-?C\IP;B?T1DY#]%YS\YR/\C(N`_
MX#_@/^`_:OP'_B,JD_E?]O.?&GS^$^I_DQ'P'_`?/_XGCZ(D_L<IA?[O:N`_
M(C+X3UG\#_+_B(@V_C,E.E$5Q.]B6A->Z9#/3/?A"C.S@CXXOPKA0[W*R+_^
M?Q?.?Z+U_6Z\OC>L_STE6/^;KM^A_\/;P'_H^R?P]PW^_RT#_YN^OY3)>/Z7
M/_XGK/]4*B7P'Q&9\)\(8)C_3"E,4:5.L\;-F]:N6Z^)5<4*U:L)15EFSIH]
MIW(E&[L651L)S10*ZO)@;FE1H[P9[A518).(^BT;U)S,JAW:=_RX<S?''KU%
MY%0.;FW?UK;-5*;5E%K6*DYSR;==<$B'#S[\Z).SG7A4_>RB3_<K5S_G,;6/
M5]^&>:=.IY^_D.R9&H0R#\/"(U_R@)GH?^;)HX"L9P\R<I^?=$L[YYWDD1*(
M,@_OWHMXP0-J@I_[XX>7,Y]FW\^1VP_2TH]_[<!.-,3_."6#XW\JJ/])1$;^
M4Q3_8R'_CXB`_X#_@/^`_X#_2CG_B?._S/$_8?VG<M!`_4\B`OX#_N/'_Q07
M:N)_K-#_'?K_$9'!?UKB?VJ(_Q&4"?\I%/Q_"@/_Z;B(%/\5Q6<5=+^+.(?.
M@)817N;#._&[QN#WZA\5\#7P7TFO_XV_RL]_AK_)G?]S=[SV-U[_+]"_1E<2
MI+^62_QKM&H7KDE8OXM7%J6_MC#^=29/=,;7F(FO$GDL.&SL)N(_Q(;E='18
MD/_&Q/BN\9^!RGTP-8G,)+"22$DB8QNS-2+KG:\0G_%79PKD?P\]_Z.?(K-=
M>X7?KA?";^A5O/[*$HK@_\37\G^2S(]CXC*>_VF(_[%"_`_V?XG(A/]"(UK$
M)22U;(7[/[1N8Q^3\O#QTYSG8B?V<M7J(OZK4\^\B57E2C7,#*5!JU:QMK&M
MWJC;CZ/'3$``*+#?Y4!4`2;M?F;V"PO+^K4JUOQLU$]C)R(`%-@O`!6`N9F>
MD?7@90.[AK4UGP\;T7WDET.FS%\X:?%<'B%7;][OYN[J<=+[HL\Y/Y[7.O;\
MZN>#7E'COOAZVM]GH\?W::?HT+YLC^'.CB[]^O8?V'M`KV^__V'PC$'?:9V^
M&3IUYH)%DY?\.FO.+_/6;9@]_<BF-5L.'#U]9I\G#YN'3UVXY'O>_\[QL/!;
MD?&)R;&ICYX\R\T[)+<?I*4?_]HO>]$1_V.%_N\JX#\2,O*?BOB?KO\CY/\1
M$?`?\!_P'_`?\%\IYS]Q_I<]_L<*_1]@_Y>(@/^`_\3Q;S]IZ)0Q$D!@\?@/
MG_]C63C_242F_I<\!!:?_]0<U'\F(^`_X#_@/^`_X#_@/\/\7[(06#S^0^L_
MM8,#G/\D(N`_X#_]^)_B,G&H2\F?!/T7_,>IH?\#$17D?TD38/'YC_]7`/M_
M1&2:_Z=`S&>4_Z?(]XO<_%=`!4^%GOSR\9_X0J$'/X4I_!7P666`__XK_[W)
M^]'Z?XWN_6+^UW'^$XWYKRSO@7'^U@Y^_>^N6__/YCU`[T/\9\'?^W#^4XW?
M_Y)WT/C]6_CWG]:]?R>^\NWX_=OXZP_G_Y^$_#\?[+\OSPJ%^Q^J]S],[_^]
M=X#_;KY1_MX)GI6\=/R&*"J#YZ=G/$L%\U3U)N^/X$E/Y+\LGN@0QR'V,Z[?
MB?C/F-^">7X/T?&;R'^(WU#^7A[FO_^6_YD@XZ-8%A4V_Y<D`1:?_SA&`_T?
MB,B$_VS[V;48\$/+5CC_#W<"9!XC\GN*V@`^[Z"H4MNR8=,FM>K4;=0,Y?\9
M^*]RI>96UE4;%,Y_]1J;URAO5CC_6=C4K]EQ9*\^7P[^]OLA"Q=/GS%S]ER4
M-WC2[YSWQ<UN'NOOWHMXZ-Z[[Z!OOM,.7;0$-1Z<A_(&?;QXEMN2$A.7</9\
MU.?=OQHQK&?_@5,F_3Q_[>J-C\;%[G<]Z/(D/O%VZ+.\'-_H'HY?.P__(MEI
MZN1I"]:MV;1A?.J!?:A0:.2=6^%AN?ZE=?]GJA,U^7]JH?XGG/\D(H/_=.7_
MJ1AX_I,0;?5?BA+T?Z">_][6_@_AE/9_>!?KOTC1_P'ZO_\+&<__-.3_J87\
M/]C_)2))^C_LY:GL%&X`$70O(BHF/OE![J,G^?H_N/)0Y^:-&D!<"8^,CDU(
MR7GX^.E_[?\0;-3_@:>ZPZC_P^Z`:U=OW`[5W$U/S<AZEA@G]G\XN/_0$=3_
M84_@]9";=VXYA-U/R\Q^7FK[/TQUTG;N:N\R<6R[=EQ[ABM9&"P>_W$X_J>$
M_@]$5(C_)0J#_^+\IT8#YS^)Z&WC/W.!\H32GSK^0Y^,OE:450#_T<9_>XI8
M_Q_7K_\]*.`_+PK\?W?XS_4U_.?V"O]Y\C]>`O^1UFOF_Q*#P>+Q'X?C?VJ8
M_XG(A/_$@![F/P2"Q@RHJ&;1UDYI;]ZP46L&\=_/TW[Y==;L.7/GS:]:A7/0
MF-DL6+]QZTY4\-/=P^N<MP^JP1F3D)F=\_!YXS9-ZI2OO7##IFV[4,'/,YYG
MSU_P124X8Q.S>$#,LVS?M"Y"S-<S8'7;%JU:1C:+LEI4OUU%ZPH=V!DS7W1L
M7N_E=+\&-T.?UOAM\=+5*Y>OW?S7'WM<CQ\]Z;;]8H!_4$BP^GI*4MK]QW'1
MOR]9MF;5BG5;=O^Y=]^)8Z=.[[@4>/G*M:NJ&ZG)Z1E/XI_)[0=IZ<;_])'4
MQ/\XH?ZG`_`?"1G\IRO^!_5?R(@V_I/[?I21?_W_;O$?Z?@?]'^@A__>3O]+
ME8SG?QKB?WC_7\7`_$]$)ORG*%ONO??_5[Y"Q4J5JU2M5MVL1LU:M>O4K6=N
M4;]!PT:-FU@V;=;<RMK&UJY%RU;"Z5"<%JAIU[Y#1\-9T%>IL6BL,_21X%%R
M@1!17+IL^8J5JU:O6;MN_8:-FS9OV;IM^XZ=N_[X\Z_=>_:Z[MM_X.#?APX?
M^>?HL>,G3IYR.^U^QL/3Z^RY\]X7+E[R\?7SOQP0&'0E^&K(M>LW;H;>NGWG
M;MB]\(C(J.B8V+CXA,2DY)34M/3[&9E9V0]R<A\^>OSDZ;/G>2]*[_C7=J&D
M_B<G]/\#_B,B(_\IJO_)PO.?B&CCOR(E_2V1>_T/_`?\!_P'_$=$)O._[/4_
M.:'_'\S_1`3G/^'\ISC^[3_KS*H85N;Z+PYH_"N!_\BH(/_EK_^B5K%0_XN(
M@/],)/?Z'_@/^`_X#_B/B`J;_^6K_X+6?VHU\!\9`?\!_^G'O_,06OB/`?XC
MHX+\IX#_U,!_9`3\9R*YU__`?\!_P'_`?T14V/PO,_]QP']D!/P'_">,_P&#
MZ#C_J<'G/S4L\!\)&?E/T?E/CH/G/PG1QG]RWX\R\J__@?^`_X#_@/^(R&3^
ME_W\IP;W?V<U,/^3$/`?\)\X_NT[NSB7<.E/K.+SGTK)0?U/(C+UGXK^[RHU
MQ/^("/C/1'*O_X'_@/^`_X#_B*C@^5_._N\:'/]CH/XG$0'_`?_IQ_\0:OB/
M88#_B,C4?RKX3ZT$_B,BX#\3R;W^!_X#_@/^`_XCHH+G?_GYCP/^(R+@/^`_
M?OP/F?#)\,D3QDKS=S#LF_`?XZ!4JC@EYR#T?^/7_^R0"=IN_0Q=:22YN%(^
M_O7^\W=:JG\"Q?,?/?\YE0/X3T0Z_X<ZT3+^'91X_+,<[_]0)VW7_N"_E-+[
MS]]I*L8_]I]3H?U_\%]ZB?Y/HV;\L\+\KT3^3]-^UAG\EU)Z__D[3<?X9_'X
M5X/_1*3S?Q@]\[]*F/\9WO]A3MI/>X#_4DKO/W^GZ1C_:CS^E4KPGX1$_X=K
M.PV@PW_<_U6%U__XJL!_*67POW-7BOQG-8S@?_ZNQ!)<&OBO][]+=XK\5REU
M_G?I#OY+*8/_G](U_G7/_T]A_$LJ@_\]!]+AOP,>_ZC_,XNO"OR74CK_AX^A
MAO^%_7_4_XO%5P7^2RF#_XZ4//\%_U6<X+\C//\EE>C_1%KV_S7"^@_'?_%5
M@?]22O1_,B7[?XQ2M_^/YO_AD\%_B:7WGY+QSRA50OP?_"<BG?\C7*@9_QP>
M_RC_FQWAHNWF"/Y+*;W__)VF8_P+_(?C/^"_Y!+]GT#)_B_#Z,Y_H.<_OBKP
M7TH9_._2B2K_E8+_73J!_U(JG_]4[/^+_K.Z\0_[_]+*X#\=YW\9AA'6_XS@
M/YS_E58&_^G8_]?YKU:J!/]A_U]:Z?QWIN7\%\.PAO-?SDZP_RNQ]/Y3LO\O
M^,^Q>/\/_)=<HO^CJ1G_POE/G/_C/!KV_R26WG]:]G\98?^78\!_$M+Y[S)1
MZTB)_QIA_:?A_<=7!?Y+*='_2;0\_UG,_TH&C7^725I'./\KJ?3^\W>:BO$O
M^*]6<N`_">G\'S.:EOU_E3#_H_K_++XJ\%]*&?SOU9,._X7\'\Q_^*K`?RDE
M^C^6EOE?\%^)XW]CQFI[]0;_I93>?_Y.TS'^\?D_-:,"_TE(Y_^X2=H^=*S_
MU,+Z3XW\QU<%_DLIG?\3I]!R_H=CA?4_>O[CJP+_I93!__YTK/\YO/Y7JQC!
M__ZP_I=4.O^G4A/_T]5_0?V?V*E.P'\22^\_+?ROJ_^"\__!?Q`(!`*!0"`0
."`0J,?T?GJ1T`P`8"P!_
`
end
>Release-Note:
>Audit-Trail:

From: itojun@iijlab.net
To: kivinen@ssh.fi
Cc: gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 15:37:50 +0900

 >>Synopsis:       setlocale(LC_ALL, "fi_FI") does not have any effect

 	we are working on better locale support on minoura_xpg4dl branch.
 	we hope to bring it into the main tree by 1.6.

 itojun

From: Tero Kivinen <kivinen@ssh.fi>
To: itojun@iijlab.net
Cc: gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 15:16:28 +0200 (EET)

 itojun@iijlab.net writes:
 > >>Synopsis:       setlocale(LC_ALL, "fi_FI") does not have any effect
 > 	we are working on better locale support on minoura_xpg4dl branch.
 > 	we hope to bring it into the main tree by 1.6.

 Good.

 In a mean while I still need somewhat working locale, at least for
 LC_CTYPE. LC_COLLATE isn't that important but LC_CTYPE is really a
 must for NetBSD in production use, at least here in Finland.

 Do you think we could throw my patches in to 1.5, while waiting the
 new version? If there are copyright issues about copying that locale
 information from linux distribution we could make a separate pkg from
 those locale data files, but put the libc patches in. 
 -- 
 kivinen@ssh.fi                               Work : +358 303 9870
 SSH Communications Security                  http://www.ssh.fi/
 SSH IPSEC Toolkit                            http://www.ssh.fi/ipsec/

From: itojun@iijlab.net
To: Tero Kivinen <kivinen@ssh.fi>
Cc: bsd-locale@hauN.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 22:23:57 +0900

 >> >>Synopsis:       setlocale(LC_ALL, "fi_FI") does not have any effect
 >> 	we are working on better locale support on minoura_xpg4dl branch.
 >> 	we hope to bring it into the main tree by 1.6.
 >Good.
 >In a mean while I still need somewhat working locale, at least for
 >LC_CTYPE. LC_COLLATE isn't that important but LC_CTYPE is really a
 >must for NetBSD in production use, at least here in Finland.
 >Do you think we could throw my patches in to 1.5, while waiting the
 >new version? If there are copyright issues about copying that locale
 >information from linux distribution we could make a separate pkg from
 >those locale data files, but put the libc patches in. 

 	which do you mean by "throw in to 1.5"?
 	- putting your patch locally in your tree
 	- putting your patch into netbsd cvs tree
 	i believe we cannot really do the latter, as once we import some
 	locale support code, we introduce two incompatible locale database
 	format into the system.  we'll try to integrate minoura_xpg4dl tree
 	sooner.  also, we'll try to issue a pullup to 1.5 tree for
 	minoura_xpg4dl-based locale handling ode.

 itojun

From: itojun@iijlab.net
To: bsd-locale@hauN.org
Cc: Tero Kivinen <kivinen@ssh.fi>, gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 22:39:19 +0900

 >>In a mean while I still need somewhat working locale, at least for
 >>LC_CTYPE. LC_COLLATE isn't that important but LC_CTYPE is really a
 >>must for NetBSD in production use, at least here in Finland.
 >>Do you think we could throw my patches in to 1.5, while waiting the
 >>new version? If there are copyright issues about copying that locale
 >>information from linux distribution we could make a separate pkg from
 >>those locale data files, but put the libc patches in. 
 >	which do you mean by "throw in to 1.5"?
 >	- putting your patch locally in your tree
 >	- putting your patch into netbsd cvs tree
 >	i believe we cannot really do the latter, as once we import some
 >	locale support code, we introduce two incompatible locale database
 >	format into the system.  we'll try to integrate minoura_xpg4dl tree
 >	sooner.  also, we'll try to issue a pullup to 1.5 tree for
 >	minoura_xpg4dl-based locale handling ode.

 	oops, i looked at it again, and noticed that you did not modify
 	ctypeio.c and friends... do you need to patch libc to uspport LC_CTYPE?
 	i guess not (you just need locale definition files).
 	if my guess is correct, there should be fewer issues.

 itojun

From: Tero Kivinen <kivinen@ssh.fi>
To: itojun@iijlab.net
Cc: bsd-locale@hauN.org, gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 16:03:19 +0200 (EET)

 itojun@iijlab.net writes:
 > 	which do you mean by "throw in to 1.5"?
 > 	- putting your patch locally in your tree

 I have already done that, and I am using them myself.

 > 	- putting your patch into netbsd cvs tree

 This is waht I was asking. 

 > 	i believe we cannot really do the latter, as once we import some
 > 	locale support code, we introduce two incompatible locale database
 > 	format into the system.

 There is a version number and magic cookie in the beginning of each
 locale database file. Also there is already a format defined for the
 LC_CTYPE locale databases, I didn't add that format, it already
 existed in the src/lib/libc/locale/ctypeio.c. I think it will be quite
 easy to make it compatible with new version, just update version
 number for the next version. 

 > we'll try to integrate minoura_xpg4dl tree sooner.

 That is fine for me... I just don't want to wait for year or two to
 get working locale when 1.6 is out...

 > also, we'll try to issue a pullup to 1.5 tree for
 > minoura_xpg4dl-based locale handling ode.
 -- 
 kivinen@ssh.fi                               Work : +358 303 9870
 SSH Communications Security                  http://www.ssh.fi/
 SSH IPSEC Toolkit                            http://www.ssh.fi/ipsec/

From: Tero Kivinen <kivinen@ssh.fi>
To: itojun@iijlab.net
Cc: bsd-locale@hauN.org, gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 16:06:10 +0200 (EET)

 itojun@iijlab.net writes:
 > 	oops, i looked at it again, and noticed that you did not modify
 > 	ctypeio.c and friends... do you need to patch libc to uspport LC_CTYPE?
 > 	i guess not (you just need locale definition files).
 > 	if my guess is correct, there should be fewer issues.

 I left the ctypeio.c intact, but wrote collateio.c file that reads
 LC_COLLATE type files. The format is similar to LC_CTYPE, i.e same
 magic cookie, version number, and then unsigned char [256] for sort
 order table.

 It would be fine just to ignore the LC_COLLATE changes and take the
 LC_CTYPE locale files only, as the LC_CTYPE is much more important
 than LC_COLLATE support.
 -- 
 kivinen@ssh.fi                               Work : +358 303 9870
 SSH Communications Security                  http://www.ssh.fi/
 SSH IPSEC Toolkit                            http://www.ssh.fi/ipsec/

From: itojun@iijlab.net
To: Tero Kivinen <kivinen@ssh.fi>
Cc: bsd-locale@hauN.org, gnats-bugs@gnats.netbsd.org
Subject: Re: lib/11546: setlocale does not support anything else than C and POSIX
Date: Wed, 22 Nov 2000 23:08:46 +0900

 >> 	oops, i looked at it again, and noticed that you did not modify
 >> 	ctypeio.c and friends... do you need to patch libc to uspport LC_CTYPE?
 >> 	i guess not (you just need locale definition files).
 >> 	if my guess is correct, there should be fewer issues.
 >I left the ctypeio.c intact, but wrote collateio.c file that reads
 >LC_COLLATE type files. The format is similar to LC_CTYPE, i.e same
 >magic cookie, version number, and then unsigned char [256] for sort
 >order table.

 	actually we are looking toward stateful multibyte stream (external/file
 	representation) and 32bit wide character (internal representation)
 	support, we japanese need them badly... :-)

 >It would be fine just to ignore the LC_COLLATE changes and take the
 >LC_CTYPE locale files only, as the LC_CTYPE is much more important
 >than LC_COLLATE support.

 	hmm, i see.

 itojun
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.