WIP: a way forward on bootstrap data

Started by John Naylorabout 8 years ago111 messages
#1John Naylor
jcnaylor@gmail.com
8 attachment(s)

Hi,

I was looking through the archives one day for a few topics that
interest me, and saw there was continued interest in making bootstrap
data less painful [1]/messages/by-id/20150220234142.GH12653@awork2.anarazel.de [2]/messages/by-id/CAGoxFiFeW64k4t95Ez2udXZmKA+tazUFAaSTtYQLM4Jhzw+-pg@mail.gmail.com. There were quite a few good ideas thrown
around in those threads, but not much in the way of concrete results.
I took a few of them as a starting point and threw together the
attached WIP patchset.

==
An overview (warning: long):

1 through 3 are small tweaks worth doing even without a data format
change. 4 through 7 are separated for readability and flexibility, but
should be understood as one big patch. I tried to credit as many
people's ideas as possible. Some things are left undone until basic
agreement is reached.

--
Patch 1 - Minor corrections

--
Patch 2 - Minor cleanup

Be more consistent style-wise, change a confusing variable name, fix
perltidy junk.

--
Patch 3 - Remove hard-coded schema information about pg_attribute from
genbki.pl.

This means slightly less code maintenance, but more importantly it's a
proving ground for mechanisms used in later patches.

1. Label a column's default value in the catalog header [3]/messages/by-id/20161113171017.7sgaqdeq6jslmsr3@alap3.anarazel.de.

Note: I implemented it in the simplest way possible for now, which
happens to prevents a column from having both FORCE_(NOT_)NULL and a
default at the same time, but I think in practice that would almost
never matter. If more column options are added in the future, this
will have to be rewritten.

2. Add a new function to Catalog.pm to fill in a tuple with default
values. It will complain loudly if it can't find either a default or a
given value, so change the signature of emit_pgattr_row() so we can
pass a partially built tuple to it.

3. Format the schema macro entries according to their types.

4. Commit 8137f2c32322c624e0431fac1621e8e9315202f9 labeled which
columns are variable length. Expose that label so we can exclude those
columns from schema macros in a general fashion.

--
Patch 4 - Infrastructure for the data conversion

1. Copy a modified version of Catalogs() from Catalog.pm to a new
script that turns DATA()/(SH)DESCR() statements into serialized Perl
data structures in pg_*.dat files, preserving comments along the way.
Toast and index statements are unaffected. Although it's a one-off as
far as the core project is concerned, I imagine third-parties might
want access to this tool, so it's in the patch and not separate.

2. Remove data parsing from the original Catalogs() function and
rename it to reflect its new, limited role of extracting the schema
info from a header. The data files are handled by a new function.

3. Introduce a script to rewrite pg_*.dat files in a standard format
[4]: /messages/by-id/D8F1D509-6498-43AC-BEFC-052DFE16847A@2ndquadrant.com
lines. It can also change default values on the fly. It is intended to
be run when adding new data.

4. Add default values to a few catalog headers for demonstration
purposes. There might be some questionable choices here. Review is
appreciated.

Note: At this point, the build is broken.

TODO: See what pgindent does to the the modified headers.

--
Patch 5 - Mechanical data conversion

This is the result of:

cd src/include/catalog
perl convert_header2dat.pl list-of-catalog-headers-from-the-Makefile
perl -I ../../backend/catalog rewrite_dat.pl *.dat
rm *.bak

Note: The data has been stripped of all double-quotes for readability,
since the Perl hash literals have single quotes everywhere. Patches 6
and 7 restore them where needed.

--
Patch 6 - Hand edits

Re-doublequote values that are macros expanded by initdb.c, remove
stray comments, fix up whitespace, and do a minimum of comment editing
to reflect the new data format.

At this point the files are ready to take a look at. Format is the
central issue, of course. I tried to structure things so it wouldn't
be a huge lift to bikeshed on the format. See pg_authid.dat for a
conveniently small example. Each entry is 1 or 2 lines long, depending
on whether oid or (sh)descr is present.

Regarding pg_proc.dat, I think readability is improved, and to some
extent line length, although it's not great:

pg_proc.h: avg=175, stdev=25
pg_proc.dat: avg=159, stdev=43

(grep -E '^DATA' pg_proc.h | awk '{print length}'
grep prosrc pg_proc.dat | awk '{print length}')

Many lines now fit in an editor window, but the longest line has
ballooned from 576 chars to 692. I made proparallel default to 'u' for
safety, but the vast majority are 's'. If we risked making 's' the
default, most entries would shrink by 20 chars. On the other hand,
human-readable types would inflate that again, but maybe patch 8 below
can help with editing. There was some discussion about abbreviated
labels that were mapped to column names - I haven't thought about that
yet.

--
Patch 7 - Distprep scripts

1. Teach genbki.pl and Gen_fmgrtab.pl to read the data files, and
arrange for the former to double-quote certain values so bootscanner.l
can read them.

2. Introduce Makefile dependencies on the data files.

The build works now.

Note: Since the original DATA() entries contained some (as far as I
can tell) useless quotes, the postgres.bki diff won't be zero, but it
will be close.

Performance note: On my laptop, running Make in the catalog dir with
no compilation goes from ~700ms on master to ~1000ms with the new data
files.

--
Patch 8 - SQL output

1. Write out postgres.sql, which allows you to insert all the source
BKI data into a development catalog schema for viewing and possibly
bulk-editing [5]/messages/by-id/20150304150712.GV29780@tamriel.snowman.net. It retains oids, and (sh)descr fields in their own
columns, and implements default values.

2. Make it a distclean target.

TODO: Find a way to dump dev catalog tuples into the canonical format.

--
Not implemented yet:

-Gut the header files of DATA() statements. I'm thinking we should
keep the #defines in the headers, but see below:
-Update README and documentation

--
Future work:
-More lookups for human-readable types, operators, etc.
-Automate pg_type #defines a la pg_proc [6]/messages/by-id/15697.1479161432@sss.pgh.pa.us, which could also be used
to maintain ecpg's copy of pg_type #defines.

--
[1]: /messages/by-id/20150220234142.GH12653@awork2.anarazel.de

[2]: /messages/by-id/CAGoxFiFeW64k4t95Ez2udXZmKA+tazUFAaSTtYQLM4Jhzw+-pg@mail.gmail.com

[3]: /messages/by-id/20161113171017.7sgaqdeq6jslmsr3@alap3.anarazel.de

[4]: /messages/by-id/D8F1D509-6498-43AC-BEFC-052DFE16847A@2ndquadrant.com

[5]: /messages/by-id/20150304150712.GV29780@tamriel.snowman.net

[6]: /messages/by-id/15697.1479161432@sss.pgh.pa.us

==

I'll add this to the next commitfest soon.

-John Naylor

Attachments:

0001_corrections_v1.patchtext/x-patch; charset=US-ASCII; name=0001_corrections_v1.patchDownload
 src/backend/catalog/Catalog.pm             |  3 ++-
 src/backend/catalog/Makefile               |  2 +-
 src/backend/utils/Gen_fmgrtab.pl           |  3 ++-
 src/include/catalog/pg_partitioned_table.h |  2 +-
 src/include/catalog/pg_sequence.h          | 10 ++++++++++
 src/include/catalog/pg_subscription_rel.h  |  5 +----
 6 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 54f8353..0b260ec
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 36,42 ****
  		'int64'         => 'int8',
  		'Oid'           => 'oid',
  		'NameData'      => 'name',
! 		'TransactionId' => 'xid');
  
  	foreach my $input_file (@_)
  	{
--- 36,43 ----
  		'int64'         => 'int8',
  		'Oid'           => 'oid',
  		'NameData'      => 'name',
! 		'TransactionId' => 'xid',
! 		'XLogRecPtr'    => 'pg_lsn');
  
  	foreach my $input_file (@_)
  	{
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
new file mode 100644
index fd33426..30ca509
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** POSTGRES_BKI_SRCS = $(addprefix $(top_sr
*** 45,51 ****
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h toasting.h indexing.h \
  	toasting.h indexing.h \
      )
  
--- 45,51 ----
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h \
  	toasting.h indexing.h \
      )
  
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index ee89d50..c0efc07
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
***************
*** 2,8 ****
  #-------------------------------------------------------------------------
  #
  # Gen_fmgrtab.pl
! #    Perl script that generates fmgroids.h and fmgrtab.c from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
--- 2,9 ----
  #-------------------------------------------------------------------------
  #
  # Gen_fmgrtab.pl
! #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
new file mode 100644
index 525e541..731147e
*** a/src/include/catalog/pg_partitioned_table.h
--- b/src/include/catalog/pg_partitioned_table.h
***************
*** 10,16 ****
   * src/include/catalog/pg_partitioned_table.h
   *
   * NOTES
!  *	  the genbki.sh script reads this file and generates .bki
   *	  information from the DATA() statements.
   *
   *-------------------------------------------------------------------------
--- 10,16 ----
   * src/include/catalog/pg_partitioned_table.h
   *
   * NOTES
!  *	  the genbki.pl script reads this file and generates .bki
   *	  information from the DATA() statements.
   *
   *-------------------------------------------------------------------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
new file mode 100644
index 8ae6b71..6de54bb
*** a/src/include/catalog/pg_sequence.h
--- b/src/include/catalog/pg_sequence.h
***************
*** 1,3 ****
--- 1,13 ----
+ /* -------------------------------------------------------------------------
+  *
+  * pg_sequence.h
+  *	  definition of the system "sequence" relation (pg_sequence)
+  *
+  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * -------------------------------------------------------------------------
+  */
  #ifndef PG_SEQUENCE_H
  #define PG_SEQUENCE_H
  
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
new file mode 100644
index 991ca9d..5748297
*** a/src/include/catalog/pg_subscription_rel.h
--- b/src/include/catalog/pg_subscription_rel.h
***************
*** 23,37 ****
   */
  #define SubscriptionRelRelationId			6102
  
- /* Workaround for genbki not knowing about XLogRecPtr */
- #define pg_lsn XLogRecPtr
- 
  CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
  {
  	Oid			srsubid;		/* Oid of subscription */
  	Oid			srrelid;		/* Oid of relation */
  	char		srsubstate;		/* state of the relation in subscription */
! 	pg_lsn		srsublsn;		/* remote lsn of the state change used for
  								 * synchronization coordination */
  } FormData_pg_subscription_rel;
  
--- 23,34 ----
   */
  #define SubscriptionRelRelationId			6102
  
  CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
  {
  	Oid			srsubid;		/* Oid of subscription */
  	Oid			srrelid;		/* Oid of relation */
  	char		srsubstate;		/* state of the relation in subscription */
! 	XLogRecPtr	srsublsn;		/* remote lsn of the state change used for
  								 * synchronization coordination */
  } FormData_pg_subscription_rel;
  
0002_cleanup_v1.patchtext/x-patch; charset=US-ASCII; name=0002_cleanup_v1.patchDownload
 src/backend/catalog/Catalog.pm   | 14 +++++++-------
 src/backend/catalog/genbki.pl    | 38 +++++++++++++++++++++-----------------
 src/backend/utils/Gen_fmgrtab.pl |  5 +++--
 3 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 0b260ec..6bc14d2
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 163,169 ****
  				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
  				$catalog{rowtype_oid} =
  				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
! 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 'True' : '';
  				$declaring_attributes = 1;
  			}
  			elsif ($declaring_attributes)
--- 163,169 ----
  				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
  				$catalog{rowtype_oid} =
  				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
! 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
  				$declaring_attributes = 1;
  			}
  			elsif ($declaring_attributes)
*************** sub Catalogs
*** 176,182 ****
  				}
  				else
  				{
! 					my %row;
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
--- 176,182 ----
  				}
  				else
  				{
! 					my %column;
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
*************** sub Catalogs
*** 189,206 ****
  						$atttype .= '[]';            # variable-length only
  					}
  
! 					$row{'type'} = $atttype;
! 					$row{'name'} = $attname;
  
  					if (defined $attopt)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
! 							$row{'forcenull'} = 1;
  						}
  						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
  						{
! 							$row{'forcenotnull'} = 1;
  						}
  						else
  						{
--- 189,206 ----
  						$atttype .= '[]';            # variable-length only
  					}
  
! 					$column{type} = $atttype;
! 					$column{name} = $attname;
  
  					if (defined $attopt)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
! 							$column{forcenull} = 1;
  						}
  						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
  						{
! 							$column{forcenotnull} = 1;
  						}
  						else
  						{
*************** sub Catalogs
*** 208,214 ****
  "unknown column option $attopt on column $attname";
  						}
  					}
! 					push @{ $catalog{columns} }, \%row;
  				}
  			}
  		}
--- 208,214 ----
  "unknown column option $attopt on column $attname";
  						}
  					}
! 					push @{ $catalog{columns} }, \%column;
  				}
  			}
  		}
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 256a9c9..4bd614f
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** use strict;
*** 20,26 ****
  use warnings;
  
  my @input_files;
! our @include_path;
  my $output_path = '';
  my $major_version;
  
--- 20,26 ----
  use warnings;
  
  my @input_files;
! my @include_path;
  my $output_path = '';
  my $major_version;
  
*************** print $bki "# PostgreSQL $major_version\
*** 105,111 ****
  my %schemapg_entries;
  my @tables_needing_macros;
  my %regprocoids;
! our @types;
  
  # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
--- 105,111 ----
  my %schemapg_entries;
  my @tables_needing_macros;
  my %regprocoids;
! my @types;
  
  # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
*************** foreach my $catname (@{ $catalogs->{name
*** 124,130 ****
  	my $first = 1;
  
  	print $bki " (\n";
! 	foreach my $column (@{ $catalog->{columns} })
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
--- 124,131 ----
  	my $first = 1;
  
  	print $bki " (\n";
! 	my $schema = $catalog->{columns};
! 	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
*************** foreach my $catname (@{ $catalogs->{name
*** 150,157 ****
  	}
  	print $bki "\n )\n";
  
!    # open it, unless bootstrap case (create bootstrap does this automatically)
! 	if ($catalog->{bootstrap} eq '')
  	{
  		print $bki "open $catname\n";
  	}
--- 151,159 ----
  	}
  	print $bki "\n )\n";
  
! 	# Open it, unless bootstrap case (create bootstrap does this
! 	# automatically)
! 	if (!$catalog->{bootstrap})
  	{
  		print $bki "open $catname\n";
  	}
*************** foreach my $catname (@{ $catalogs->{name
*** 169,189 ****
  			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
! 			foreach my $att (keys %bki_values)
  			{
  
  				# Substitute constant values we acquired above.
  				# (It's intentional that this can apply to parts of a field).
! 				$bki_values{$att} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
! 				$bki_values{$att} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
  				# Replace regproc columns' values with OIDs.
  				# If we don't have a unique value to substitute,
  				# just do nothing (regprocin will complain).
! 				if ($bki_attr{$att}->{type} eq 'regproc')
  				{
! 					my $procoid = $regprocoids{ $bki_values{$att} };
! 					$bki_values{$att} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
  			}
--- 171,193 ----
  			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
! 			foreach my $column (@$schema)
  			{
+ 				my $attname = $column->{name};
+ 				my $atttype = $column->{type};
  
  				# Substitute constant values we acquired above.
  				# (It's intentional that this can apply to parts of a field).
! 				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
! 				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
  				# Replace regproc columns' values with OIDs.
  				# If we don't have a unique value to substitute,
  				# just do nothing (regprocin will complain).
! 				if ($atttype eq 'regproc')
  				{
! 					my $procoid = $regprocoids{ $bki_values{$attname} };
! 					$bki_values{$attname} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
  			}
*************** foreach my $catname (@{ $catalogs->{name
*** 215,221 ****
  			printf $bki "insert %s( %s )\n", $oid,
  			  join(' ', @bki_values{@attnames});
  
! 		   # Write comments to postgres.description and postgres.shdescription
  			if (defined $row->{descr})
  			{
  				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
--- 219,226 ----
  			printf $bki "insert %s( %s )\n", $oid,
  			  join(' ', @bki_values{@attnames});
  
! 			# Write comments to postgres.description and
! 			# postgres.shdescription
  			if (defined $row->{descr})
  			{
  				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
*************** foreach my $catname (@{ $catalogs->{name
*** 240,250 ****
  
  			# Currently, all bootstrapped relations also need schemapg.h
  			# entries, so skip if the relation isn't to be in schemapg.h.
! 			next if $table->{schema_macro} ne 'True';
  
  			$schemapg_entries{$table_name} = [];
  			push @tables_needing_macros, $table_name;
- 			my $is_bootstrap = $table->{bootstrap};
  
  			# Generate entries for user attributes.
  			my $attnum       = 0;
--- 245,254 ----
  
  			# Currently, all bootstrapped relations also need schemapg.h
  			# entries, so skip if the relation isn't to be in schemapg.h.
! 			next if !$table->{schema_macro};
  
  			$schemapg_entries{$table_name} = [];
  			push @tables_needing_macros, $table_name;
  
  			# Generate entries for user attributes.
  			my $attnum       = 0;
*************** foreach my $catname (@{ $catalogs->{name
*** 259,265 ****
  				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
! 				if ($is_bootstrap eq ' bootstrap')
  				{
  					bki_insert($row, @attnames);
  				}
--- 263,269 ----
  				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
! 				if ($table->{bootstrap})
  				{
  					bki_insert($row, @attnames);
  				}
*************** foreach my $catname (@{ $catalogs->{name
*** 276,282 ****
  
  			# Generate entries for system attributes.
  			# We only need postgres.bki entries, not schemapg.h entries.
! 			if ($is_bootstrap eq ' bootstrap')
  			{
  				$attnum = 0;
  				my @SYS_ATTRS = (
--- 280,286 ----
  
  			# Generate entries for system attributes.
  			# We only need postgres.bki entries, not schemapg.h entries.
! 			if ($table->{bootstrap})
  			{
  				$attnum = 0;
  				my @SYS_ATTRS = (
*************** foreach my $catname (@{ $catalogs->{name
*** 296,302 ****
  
  					# some catalogs don't have oids
  					next
! 					  if $table->{without_oids} eq ' without_oids'
  						  && $row->{attname} eq 'oid';
  
  					bki_insert($row, @attnames);
--- 300,306 ----
  
  					# some catalogs don't have oids
  					next
! 					  if $table->{without_oids}
  						  && $row->{attname} eq 'oid';
  
  					bki_insert($row, @attnames);
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index c0efc07..a51a755
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
*************** die "No include path; you must specify -
*** 57,62 ****
--- 57,64 ----
  
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
+ my $INTERNALlanguageId =
+ 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
  # Read all the data from the include/catalog files.
  my $catalogs = Catalog::Catalogs($infile);
*************** foreach my $row (@$data)
*** 78,85 ****
  	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
! 	# Note assumption here that INTERNALlanguageId is 12.
! 	next if $bki_values{prolang} ne '12';
  
  	push @fmgr,
  	  { oid    => $row->{oid},
--- 80,86 ----
  	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
! 	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
  	  { oid    => $row->{oid},
0003_pgattr_schema_isolation_v1.patchtext/x-patch; charset=US-ASCII; name=0003_pgattr_schema_isolation_v1.patchDownload
 src/backend/catalog/Catalog.pm     |  49 +++++++++++-
 src/backend/catalog/genbki.pl      | 158 ++++++++++++++++++-------------------
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_attribute.h |  22 +++---
 4 files changed, 140 insertions(+), 92 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 6bc14d2..246aa36
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 44,49 ****
--- 44,50 ----
  		my %catalog;
  		$catalog{columns} = [];
  		$catalog{data}    = [];
+ 		my $is_varlen     = 0;
  
  		open(my $ifh, '<', $input_file) || die "$input_file: $!";
  
*************** sub Catalogs
*** 169,175 ****
  			elsif ($declaring_attributes)
  			{
  				next if (/^{|^$/);
! 				next if (/^#/);
  				if (/^}/)
  				{
  					undef $declaring_attributes;
--- 170,183 ----
  			elsif ($declaring_attributes)
  			{
  				next if (/^{|^$/);
! 				if (/^#/)
! 				{
! 					if (/^#ifdef\s+CATALOG_VARLEN/)
! 					{
! 						$is_varlen = 1;
! 					}
! 					next;
! 				}
  				if (/^}/)
  				{
  					undef $declaring_attributes;
*************** sub Catalogs
*** 177,182 ****
--- 185,194 ----
  				else
  				{
  					my %column;
+ 					if ($is_varlen)
+ 					{
+ 						$column{is_varlen} = 1;
+ 					}
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
*************** sub Catalogs
*** 186,192 ****
  					if ($attname =~ /(.*)\[.*\]/)    # array attribute
  					{
  						$attname = $1;
! 						$atttype .= '[]';            # variable-length only
  					}
  
  					$column{type} = $atttype;
--- 198,204 ----
  					if ($attname =~ /(.*)\[.*\]/)    # array attribute
  					{
  						$attname = $1;
! 						$atttype .= '[]';
  					}
  
  					$column{type} = $atttype;
*************** sub Catalogs
*** 202,207 ****
--- 214,223 ----
  						{
  							$column{forcenotnull} = 1;
  						}
+ 						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+ 						{
+ 							$column{default} = $1;
+ 						}
  						else
  						{
  							die
*************** sub SplitDataLine
*** 240,245 ****
--- 256,290 ----
  	return @result;
  }
  
+ # Fill in default values of a record using the given schema. It's the
+ # caller's responsibility to specify other values beforehand.
+ sub AddDefaultValues
+ {
+ 	my ($row, $schema, $catname) = @_;
+ 
+ 	die "Schema undefined for $catname\n"
+ 	  if !defined $schema;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 
+ 		if (defined $row->{$attname})
+ 		{
+ 			;
+ 		}
+ 		elsif (defined $column->{default})
+ 		{
+ 			$row->{$attname} = $column->{default};
+ 		}
+ 		else
+ 		{
+ 			die "Unspecified value in $catname.$attname\n";
+ 		}
+ 	}
+ }
+ 
  # Rename temporary files to final names.
  # Call this function with the final file name and the .tmp extension
  # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 4bd614f..1876399
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** foreach my $catname (@{ $catalogs->{name
*** 119,125 ****
  	  . $catalog->{without_oids}
  	  . $catalog->{rowtype_oid} . "\n";
  
- 	my %bki_attr;
  	my @attnames;
  	my $first = 1;
  
--- 119,124 ----
*************** foreach my $catname (@{ $catalogs->{name
*** 129,135 ****
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
- 		$bki_attr{$attname} = $column;
  		push @attnames, $attname;
  
  		if (!$first)
--- 128,133 ----
*************** foreach my $catname (@{ $catalogs->{name
*** 257,281 ****
  			foreach my $attr (@user_attrs)
  			{
  				$attnum++;
! 				my $row = emit_pgattr_row($table_name, $attr, $priornotnull);
! 				$row->{attnum}        = $attnum;
! 				$row->{attstattarget} = '-1';
! 				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
  				if ($table->{bootstrap})
  				{
! 					bki_insert($row, @attnames);
  				}
  
  				# Store schemapg entries for later.
! 				$row =
! 				  emit_schemapg_row($row,
! 					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
! 				push @{ $schemapg_entries{$table_name} }, '{ '
! 				  . join(
! 					', ',             grep { defined $_ }
! 					  map $row->{$_}, @attnames) . ' }';
  			}
  
  			# Generate entries for system attributes.
--- 255,279 ----
  			foreach my $attr (@user_attrs)
  			{
  				$attnum++;
! 				my %row;
! 				$row{attnum}   = $attnum;
! 				$row{attrelid} = $table->{relation_oid};
! 
! 				emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
! 				$priornotnull &= ($row{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
  				if ($table->{bootstrap})
  				{
! 					bki_insert(\%row, @attnames);
  				}
  
  				# Store schemapg entries for later.
! 				emit_schemapg_row(\%row, $schema);
! 				push @{ $schemapg_entries{$table_name} },
! 				    '{ '
! 				  . join(', ', grep { defined $_ } @row{@attnames})
! 				  . ' }';
  			}
  
  			# Generate entries for system attributes.
*************** foreach my $catname (@{ $catalogs->{name
*** 294,309 ****
  				foreach my $attr (@SYS_ATTRS)
  				{
  					$attnum--;
! 					my $row = emit_pgattr_row($table_name, $attr, 1);
! 					$row->{attnum}        = $attnum;
! 					$row->{attstattarget} = '0';
  
  					# some catalogs don't have oids
  					next
  					  if $table->{without_oids}
! 						  && $row->{attname} eq 'oid';
  
! 					bki_insert($row, @attnames);
  				}
  			}
  		}
--- 292,310 ----
  				foreach my $attr (@SYS_ATTRS)
  				{
  					$attnum--;
! 					my %row;
! 					$row{attnum}        = $attnum;
! 					$row{attrelid}      = $table->{relation_oid};
! 					$row{attstattarget} = '0';
! 
! 					emit_pgattr_row(\%row, $attr, 1, $schema);
  
  					# some catalogs don't have oids
  					next
  					  if $table->{without_oids}
! 						  && $row{attname} eq 'oid';
  
! 					bki_insert(\%row, @attnames);
  				}
  			}
  		}
*************** exit 0;
*** 380,398 ****
  #################### Subroutines ########################
  
  
! # Given a system catalog name and a reference to a key-value pair corresponding
! # to the name and type of a column, generate a reference to a hash that
! # represents a pg_attribute entry.  We must also be told whether preceding
  # columns were all not-null.
  sub emit_pgattr_row
  {
! 	my ($table_name, $attr, $priornotnull) = @_;
  	my $attname = $attr->{name};
  	my $atttype = $attr->{type};
- 	my %row;
  
! 	$row{attrelid} = $catalogs->{$table_name}->{relation_oid};
! 	$row{attname}  = $attname;
  
  	# Adjust type name for arrays: foo[] becomes _foo
  	# so we can look it up in pg_type
--- 381,397 ----
  #################### Subroutines ########################
  
  
! # Given the schema of pg_attribute, generate an entry for it using information
! # about the attribute it describes.  Any value that is not handled here
! # must be supplied by the caller. We must also be told whether preceding
  # columns were all not-null.
  sub emit_pgattr_row
  {
! 	my ($row, $attr, $priornotnull, $pgattr_schema) = @_;
  	my $attname = $attr->{name};
  	my $atttype = $attr->{type};
  
! 	$row->{attname} = $attname;
  
  	# Adjust type name for arrays: foo[] becomes _foo
  	# so we can look it up in pg_type
*************** sub emit_pgattr_row
*** 406,428 ****
  	{
  		if (defined $type->{typname} && $type->{typname} eq $atttype)
  		{
! 			$row{atttypid}   = $type->{oid};
! 			$row{attlen}     = $type->{typlen};
! 			$row{attbyval}   = $type->{typbyval};
! 			$row{attstorage} = $type->{typstorage};
! 			$row{attalign}   = $type->{typalign};
  
  			# set attndims if it's an array type
! 			$row{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
! 			$row{attcollation} = $type->{typcollation};
  
  			if (defined $attr->{forcenotnull})
  			{
! 				$row{attnotnull} = 't';
  			}
  			elsif (defined $attr->{forcenull})
  			{
! 				$row{attnotnull} = 'f';
  			}
  			elsif ($priornotnull)
  			{
--- 405,427 ----
  	{
  		if (defined $type->{typname} && $type->{typname} eq $atttype)
  		{
! 			$row->{atttypid}   = $type->{oid};
! 			$row->{attlen}     = $type->{typlen};
! 			$row->{attbyval}   = $type->{typbyval};
! 			$row->{attstorage} = $type->{typstorage};
! 			$row->{attalign}   = $type->{typalign};
  
  			# set attndims if it's an array type
! 			$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
! 			$row->{attcollation} = $type->{typcollation};
  
  			if (defined $attr->{forcenotnull})
  			{
! 				$row->{attnotnull} = 't';
  			}
  			elsif (defined $attr->{forcenull})
  			{
! 				$row->{attnotnull} = 'f';
  			}
  			elsif ($priornotnull)
  			{
*************** sub emit_pgattr_row
*** 431,437 ****
  				# fixed-width and prior columns are all NOT NULL ---
  				# compare DefineAttr in bootstrap.c. oidvector and
  				# int2vector are also treated as not-nullable.
! 				$row{attnotnull} =
  				    $type->{typname} eq 'oidvector'   ? 't'
  				  : $type->{typname} eq 'int2vector'  ? 't'
  				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
--- 430,436 ----
  				# fixed-width and prior columns are all NOT NULL ---
  				# compare DefineAttr in bootstrap.c. oidvector and
  				# int2vector are also treated as not-nullable.
! 				$row->{attnotnull} =
  				    $type->{typname} eq 'oidvector'   ? 't'
  				  : $type->{typname} eq 'int2vector'  ? 't'
  				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
*************** sub emit_pgattr_row
*** 440,464 ****
  			}
  			else
  			{
! 				$row{attnotnull} = 'f';
  			}
  			last;
  		}
  	}
! 
! 	# Add in default values for pg_attribute
! 	my %PGATTR_DEFAULTS = (
! 		attcacheoff   => '-1',
! 		atttypmod     => '-1',
! 		atthasdef     => 'f',
! 		attidentity   => '',
! 		attisdropped  => 'f',
! 		attislocal    => 't',
! 		attinhcount   => '0',
! 		attacl        => '_null_',
! 		attoptions    => '_null_',
! 		attfdwoptions => '_null_');
! 	return { %PGATTR_DEFAULTS, %row };
  }
  
  # Write a pg_attribute entry to postgres.bki
--- 439,450 ----
  			}
  			else
  			{
! 				$row->{attnotnull} = 'f';
  			}
  			last;
  		}
  	}
! 	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
  # Write a pg_attribute entry to postgres.bki
*************** sub bki_insert
*** 467,474 ****
  	my $row        = shift;
  	my @attnames   = @_;
  	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
! 	my $bki_values = join ' ', map { $_ eq '' ? '""' : $_ } map $row->{$_},
! 	  @attnames;
  	printf $bki "insert %s( %s )\n", $oid, $bki_values;
  }
  
--- 453,459 ----
  	my $row        = shift;
  	my @attnames   = @_;
  	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
! 	my $bki_values = join ' ', map $row->{$_}, @attnames;
  	printf $bki "insert %s( %s )\n", $oid, $bki_values;
  }
  
*************** sub bki_insert
*** 476,509 ****
  # quite identical, to the corresponding values in postgres.bki.
  sub emit_schemapg_row
  {
! 	my $row        = shift;
! 	my @bool_attrs = @_;
  
! 	# Replace empty string by zero char constant
! 	$row->{attidentity} ||= '\0';
  
! 	# Supply appropriate quoting for these fields.
! 	$row->{attname}     = q|{"| . $row->{attname} . q|"}|;
! 	$row->{attstorage}  = q|'| . $row->{attstorage} . q|'|;
! 	$row->{attalign}    = q|'| . $row->{attalign} . q|'|;
! 	$row->{attidentity} = q|'| . $row->{attidentity} . q|'|;
  
! 	# We don't emit initializers for the variable length fields at all.
! 	# Only the fixed-size portions of the descriptors are ever used.
! 	delete $row->{attacl};
! 	delete $row->{attoptions};
! 	delete $row->{attfdwoptions};
  
! 	# Expand booleans from 'f'/'t' to 'false'/'true'.
! 	# Some values might be other macros (eg FLOAT4PASSBYVAL), don't change.
! 	foreach my $attr (@bool_attrs)
! 	{
! 		$row->{$attr} =
! 		    $row->{$attr} eq 't' ? 'true'
! 		  : $row->{$attr} eq 'f' ? 'false'
! 		  :                        $row->{$attr};
  	}
- 	return $row;
  }
  
  sub usage
--- 461,509 ----
  # quite identical, to the corresponding values in postgres.bki.
  sub emit_schemapg_row
  {
! 	my $row           = shift;
! 	my $pgattr_schema = shift;
  
! 	foreach my $column (@$pgattr_schema)
! 	{
! 		my $pgattr_name = $column->{name};
! 		my $pgattr_type = $column->{type};
  
! 		# Supply appropriate quoting for these fields.
! 		if ($pgattr_type eq 'name')
! 		{
! 			$row->{$pgattr_name} = q|{"| . $row->{$pgattr_name} . q|"}|;
! 		}
! 		elsif ($pgattr_type eq 'char')
! 		{
  
! 			# Replace empty string by zero char constant
! 			if ($row->{$pgattr_name} eq q|""|)
! 			{
! 				$row->{$pgattr_name} = '\0';
! 			}
  
! 			$row->{$pgattr_name} = q|'| . $row->{$pgattr_name} . q|'|;
! 		}
! 
! 		# Expand booleans from 'f'/'t' to 'false'/'true'.
! 		# Some values might be other macros (eg FLOAT4PASSBYVAL),
! 		# don't change.
! 		elsif ($pgattr_type eq 'bool')
! 		{
! 			$row->{$pgattr_name} =
! 			    $row->{$pgattr_name} eq 't' ? 'true'
! 			  : $row->{$pgattr_name} eq 'f' ? 'false'
! 			  :                               $row->{$pgattr_name};
! 		}
! 
! 		# We don't emit initializers for the variable length fields at all.
! 		# Only the fixed-size portions of the descriptors are ever used.
! 		if ($column->{is_varlen})
! 		{
! 			delete $row->{$pgattr_name};
! 		}
  	}
  }
  
  sub usage
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
new file mode 100644
index a2cb313..71fc579
*** a/src/include/catalog/genbki.h
--- b/src/include/catalog/genbki.h
***************
*** 31,36 ****
--- 31,39 ----
  #define BKI_FORCE_NULL
  #define BKI_FORCE_NOT_NULL
  
+ /* Specifies a default value for a catalog field */
+ #define BKI_DEFAULT(value)
+ 
  /*
   * This is never defined; it's here only for documentation.
   *
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
new file mode 100644
index bcf28e8..5436a90
*** a/src/include/catalog/pg_attribute.h
--- b/src/include/catalog/pg_attribute.h
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 54,60 ****
  	 * that no value has been explicitly set for this column, so ANALYZE
  	 * should use the default setting.
  	 */
! 	int32		attstattarget;
  
  	/*
  	 * attlen is a copy of the typlen field from pg_type for this attribute.
--- 54,60 ----
  	 * that no value has been explicitly set for this column, so ANALYZE
  	 * should use the default setting.
  	 */
! 	int32		attstattarget BKI_DEFAULT(-1);
  
  	/*
  	 * attlen is a copy of the typlen field from pg_type for this attribute.
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 90,96 ****
  	 * descriptor, we may then update attcacheoff in the copies. This speeds
  	 * up the attribute walking process.
  	 */
! 	int32		attcacheoff;
  
  	/*
  	 * atttypmod records type-specific data supplied at table creation time
--- 90,96 ----
  	 * descriptor, we may then update attcacheoff in the copies. This speeds
  	 * up the attribute walking process.
  	 */
! 	int32		attcacheoff BKI_DEFAULT(-1);
  
  	/*
  	 * atttypmod records type-specific data supplied at table creation time
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 98,104 ****
  	 * type-specific input and output functions as the third argument. The
  	 * value will generally be -1 for types that do not need typmod.
  	 */
! 	int32		atttypmod;
  
  	/*
  	 * attbyval is a copy of the typbyval field from pg_type for this
--- 98,104 ----
  	 * type-specific input and output functions as the third argument. The
  	 * value will generally be -1 for types that do not need typmod.
  	 */
! 	int32		atttypmod BKI_DEFAULT(-1);
  
  	/*
  	 * attbyval is a copy of the typbyval field from pg_type for this
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 131,143 ****
  	bool		attnotnull;
  
  	/* Has DEFAULT value or not */
! 	bool		atthasdef;
  
  	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
! 	char		attidentity;
  
  	/* Is dropped (ie, logically invisible) or not */
! 	bool		attisdropped;
  
  	/*
  	 * This flag specifies whether this column has ever had a local
--- 131,143 ----
  	bool		attnotnull;
  
  	/* Has DEFAULT value or not */
! 	bool		atthasdef BKI_DEFAULT(f);
  
  	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
! 	char		attidentity BKI_DEFAULT("");
  
  	/* Is dropped (ie, logically invisible) or not */
! 	bool		attisdropped BKI_DEFAULT(f);
  
  	/*
  	 * This flag specifies whether this column has ever had a local
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 148,157 ****
  	 * not dropped by a parent's DROP COLUMN even if this causes the column's
  	 * attinhcount to become zero.
  	 */
! 	bool		attislocal;
  
  	/* Number of times inherited from direct parent relation(s) */
! 	int32		attinhcount;
  
  	/* attribute's collation */
  	Oid			attcollation;
--- 148,157 ----
  	 * not dropped by a parent's DROP COLUMN even if this causes the column's
  	 * attinhcount to become zero.
  	 */
! 	bool		attislocal BKI_DEFAULT(t);
  
  	/* Number of times inherited from direct parent relation(s) */
! 	int32		attinhcount BKI_DEFAULT(0);
  
  	/* attribute's collation */
  	Oid			attcollation;
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 160,172 ****
  	/* NOTE: The following fields are not present in tuple descriptors. */
  
  	/* Column-level access permissions */
! 	aclitem		attacl[1];
  
  	/* Column-level options */
! 	text		attoptions[1];
  
  	/* Column-level FDW options */
! 	text		attfdwoptions[1];
  #endif
  } FormData_pg_attribute;
  
--- 160,172 ----
  	/* NOTE: The following fields are not present in tuple descriptors. */
  
  	/* Column-level access permissions */
! 	aclitem		attacl[1] BKI_DEFAULT(_null_);
  
  	/* Column-level options */
! 	text		attoptions[1] BKI_DEFAULT(_null_);
  
  	/* Column-level FDW options */
! 	text		attfdwoptions[1] BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_attribute;
  
0004_conversion_scripts_and_headers_v1.patchtext/x-patch; charset=US-ASCII; name=0004_conversion_scripts_and_headers_v1.patchDownload
 src/backend/catalog/Catalog.pm            | 156 +++++--------
 src/include/catalog/convert_header2dat.pl | 370 ++++++++++++++++++++++++++++++
 src/include/catalog/pg_aggregate.h        |  38 +--
 src/include/catalog/pg_authid.h           |  22 +-
 src/include/catalog/pg_class.h            |  54 ++---
 src/include/catalog/pg_opclass.h          |  16 +-
 src/include/catalog/pg_operator.h         |  28 +--
 src/include/catalog/pg_opfamily.h         |   8 +-
 src/include/catalog/pg_proc.h             |  54 ++---
 src/include/catalog/pg_type.h             |  40 ++--
 src/include/catalog/rewrite_dat.pl        | 346 ++++++++++++++++++++++++++++
 11 files changed, 899 insertions(+), 233 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 246aa36..ebed363
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
***************
*** 1,7 ****
  #----------------------------------------------------------------------
  #
  # Catalog.pm
! #    Perl module that extracts info from catalog headers into Perl
  #    data structures
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
--- 1,7 ----
  #----------------------------------------------------------------------
  #
  # Catalog.pm
! #    Perl module that extracts info from catalog files into Perl
  #    data structures
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
*************** package Catalog;
*** 16,32 ****
  use strict;
  use warnings;
  
- require Exporter;
- our @ISA       = qw(Exporter);
- our @EXPORT    = ();
- our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
- 
  # Call this function with an array of names of header files to parse.
! # Returns a nested data structure describing the data in the headers.
! sub Catalogs
  {
! 	my (%catalogs, $catname, $declaring_attributes, $most_recent);
  	$catalogs{names} = [];
  
  	# There are a few types which are given one name in the C source, but a
  	# different name at the SQL level.  These are enumerated here.
--- 16,29 ----
  use strict;
  use warnings;
  
  # Call this function with an array of names of header files to parse.
! # Returns a data structure describing the schemas of the system catalogs.
! sub ParseHeader
  {
! 	my (%catalogs, $catname, $declaring_attributes);
  	$catalogs{names} = [];
+ 	$catalogs{toasting} = [];
+ 	$catalogs{indexing} = [];
  
  	# There are a few types which are given one name in the C source, but a
  	# different name at the SQL level.  These are enumerated here.
*************** sub Catalogs
*** 43,55 ****
  	{
  		my %catalog;
  		$catalog{columns} = [];
- 		$catalog{data}    = [];
  		my $is_varlen     = 0;
  
  		open(my $ifh, '<', $input_file) || die "$input_file: $!";
  
  		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
- 		my $natts_pat = "Natts_$filename";
  
  		# Scan the input file.
  		while (<$ifh>)
--- 40,50 ----
*************** sub Catalogs
*** 78,145 ****
  			s/\s+/ /g;
  
  			# Push the data into the appropriate data structure.
! 			if (/$natts_pat\s+(\d+)/)
! 			{
! 				$catalog{natts} = $1;
! 			}
! 			elsif (
! 				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
! 			{
! 				check_natts($filename, $catalog{natts}, $3, $input_file,
! 					$input_line_number);
! 
! 				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
! 			}
! 			elsif (/^DESCR\(\"(.*)\"\)$/)
! 			{
! 				$most_recent = $catalog{data}->[-1];
! 
! 				# this tests if most recent line is not a DATA() statement
! 				if (ref $most_recent ne 'HASH')
! 				{
! 					die "DESCR() does not apply to any catalog ($input_file)";
! 				}
! 				if (!defined $most_recent->{oid})
! 				{
! 					die "DESCR() does not apply to any oid ($input_file)";
! 				}
! 				elsif ($1 ne '')
! 				{
! 					$most_recent->{descr} = $1;
! 				}
! 			}
! 			elsif (/^SHDESCR\(\"(.*)\"\)$/)
  			{
! 				$most_recent = $catalog{data}->[-1];
  
- 				# this tests if most recent line is not a DATA() statement
- 				if (ref $most_recent ne 'HASH')
- 				{
- 					die
- 					  "SHDESCR() does not apply to any catalog ($input_file)";
- 				}
- 				if (!defined $most_recent->{oid})
- 				{
- 					die "SHDESCR() does not apply to any oid ($input_file)";
- 				}
- 				elsif ($1 ne '')
- 				{
- 					$most_recent->{shdescr} = $1;
- 				}
- 			}
- 			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
- 			{
- 				$catname = 'toasting';
  				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
! 				push @{ $catalog{data} },
  				  "declare toast $toast_oid $index_oid on $toast_name\n";
  			}
  			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
  			{
- 				$catname = 'indexing';
  				my ($is_unique, $index_name, $index_oid, $using) =
  				  ($1, $2, $3, $4);
! 				push @{ $catalog{data} },
  				  sprintf(
  					"declare %sindex %s %s %s\n",
  					$is_unique ? 'unique ' : '',
--- 73,93 ----
  			s/\s+/ /g;
  
  			# Push the data into the appropriate data structure.
! 			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
  			{
! 				# Clear last catname so we don't overwrite that
! 				# catalog's schema with a blank one.
! 				undef $catname;
  
  				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
! 				push @{ $catalogs{toasting} },
  				  "declare toast $toast_oid $index_oid on $toast_name\n";
  			}
  			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
  			{
  				my ($is_unique, $index_name, $index_oid, $using) =
  				  ($1, $2, $3, $4);
! 				push @{ $catalogs{indexing} },
  				  sprintf(
  					"declare %sindex %s %s %s\n",
  					$is_unique ? 'unique ' : '',
*************** sub Catalogs
*** 147,153 ****
  			}
  			elsif (/^BUILD_INDICES/)
  			{
! 				push @{ $catalog{data} }, "build indices\n";
  			}
  			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
  			{
--- 95,101 ----
  			}
  			elsif (/^BUILD_INDICES/)
  			{
! 				push @{ $catalogs{indexing} }, "build indices\n";
  			}
  			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
  			{
*************** sub Catalogs
*** 228,259 ****
  				}
  			}
  		}
! 		$catalogs{$catname} = \%catalog;
  		close $ifh;
  	}
  	return \%catalogs;
  }
  
! # Split a DATA line into fields.
! # Call this on the bki_values element of a DATA item returned by Catalogs();
! # it returns a list of field values.  We don't strip quoting from the fields.
! # Note: it should be safe to assign the result to a list of length equal to
! # the nominal number of catalog fields, because check_natts already checked
! # the number of fields.
! sub SplitDataLine
  {
! 	my $bki_values = shift;
  
! 	# This handling of quoted strings might look too simplistic, but it
! 	# matches what bootscanner.l does: that has no provision for quote marks
! 	# inside quoted strings, either.  If we don't have a quoted string, just
! 	# snarf everything till next whitespace.  That will accept some things
! 	# that bootscanner.l will see as erroneous tokens; but it seems wiser
! 	# to do that and let bootscanner.l complain than to silently drop
! 	# non-whitespace characters.
! 	my @result = $bki_values =~ /"[^"]*"|\S+/g;
  
! 	return @result;
  }
  
  # Fill in default values of a record using the given schema. It's the
--- 176,217 ----
  				}
  			}
  		}
! 		# Prevent toasting and indexing blank %catalog vars from
! 		# over-writing the last real catalog.
! 		if (defined $catname)
! 		{
! 			$catalogs{$catname} = \%catalog;
! 		}
  		close $ifh;
  	}
  	return \%catalogs;
  }
  
! # Takes an array of names of data files containing Perl data structure
! # literals. This function simply calls eval on the whole string.
! # XXX This is much slower than parsing DATA() statements was.
! # Is there a better way?
! sub ParseData
  {
! 	my %catalog_data;
! 	foreach my $input_file (@_)
! 	{
! 		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
! 		my $raw_data = do
! 		{
! 			local $/ = undef;
! 			open my $ifh, "<", $input_file || die "$input_file: $!";
! 			<$ifh>;
! 		};
! 		my $parsed_data;
! 		eval '$parsed_data = ' . $raw_data;
  
! 		# XXX: Is this enough error reporting?
! 		print "Error : $@\n" if $@;
  
! 		$catalog_data{$filename} = $parsed_data;
! 	}
! 	return \%catalog_data;
  }
  
  # Fill in default values of a record using the given schema. It's the
*************** sub AddDefaultValues
*** 280,286 ****
  		}
  		else
  		{
! 			die "Unspecified value in $catname.$attname\n";
  		}
  	}
  }
--- 238,255 ----
  		}
  		else
  		{
! 			printf "Unspecified value in $catname.$attname:\n";
! 
! 			# Give user a clue where the problem was.
! 			# We could call this function after reading each hash
! 			# retail, and give a line number, but that would be more
! 			# complicated. Just print out the given values.
! 			my $msg;
! 			foreach (keys %{$row})
! 			{
! 				$msg .= "$_ => $row->{$_}, ";
! 			}
! 			die "$msg\n";
  		}
  	}
  }
*************** sub RenameTempFile
*** 298,304 ****
  	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
  }
  
- 
  # Find a symbol defined in a particular header file and extract the value.
  #
  # The include path has to be passed as a reference to an array.
--- 267,272 ----
*************** sub FindDefinedSymbol
*** 330,351 ****
  	die "$catalog_header: not found in any include directory\n";
  }
  
- 
- # verify the number of fields in the passed-in DATA line
- sub check_natts
- {
- 	my ($catname, $natts, $bki_val, $file, $line) = @_;
- 
- 	die
- "Could not find definition for Natts_${catname} before start of DATA() in $file\n"
- 	  unless defined $natts;
- 
- 	my $nfields = scalar(SplitDataLine($bki_val));
- 
- 	die sprintf
- "Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
- 	  $file, $line, $natts, $nfields
- 	  unless $natts == $nfields;
- }
- 
  1;
--- 298,301 ----
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index ...d61cdc8
*** a/src/include/catalog/convert_header2dat.pl
--- b/src/include/catalog/convert_header2dat.pl
***************
*** 0 ****
--- 1,370 ----
+ #!/usr/bin/perl -w
+ #----------------------------------------------------------------------
+ #
+ # convert_header2dat.pl
+ #    Perl script that reads BKI data from the catalog header files
+ #    and writes them out as native perl data structures. Commments and
+ #    white space are preserved. Some functions are loosely copied from
+ #    src/backend/catalog/Catalog.pm, whose equivalents will be removed.
+ #
+ # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ # Portions Copyright (c) 1994, Regents of the University of California
+ #
+ # /src/include/catalog/convert_header2dat.pl
+ #
+ #----------------------------------------------------------------------
+ 
+ use strict;
+ use warnings;
+ 
+ use Data::Dumper;
+ # No $VARs - we add our own later.
+ $Data::Dumper::Terse = 1;
+ 
+ my @input_files;
+ my $output_path = '';
+ my $major_version;
+ 
+ # Process command line switches.
+ while (@ARGV)
+ {
+ 	my $arg = shift @ARGV;
+ 	if ($arg !~ /^-/)
+ 	{
+ 		push @input_files, $arg;
+ 	}
+ 	elsif ($arg =~ /^-o/)
+ 	{
+ 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+ 	}
+ 	else
+ 	{
+ 		usage();
+ 	}
+ }
+ 
+ # Sanity check arguments.
+ die "No input files.\n" if !@input_files;
+ foreach my $input_file (@input_files)
+ {
+ 	if ($input_file !~ /\.h$/)
+ 	{
+ 		die "Input files need to be header files.\n";
+ 	}
+ }
+ 
+ # Make sure output_path ends in a slash.
+ if ($output_path ne '' && substr($output_path, -1) ne '/')
+ {
+ 	$output_path .= '/';
+ }
+ 
+ # Read all the input header files into internal data structures
+ # XXX This script is not robust against non-catalog headers. It's best
+ # to pass it the same list found in backend/catalog/Makefile.
+ my $catalogs = catalogs(@input_files);
+ 
+ # produce output, one catalog at a time
+ foreach my $catname (@{ $catalogs->{names} })
+ {
+ 	my $catalog = $catalogs->{$catname};
+ 	my $schema  = $catalog->{columns};
+ 
+ 	# First, see if the header has any data. This is necessary
+ 	# not only because of catalogs with no data, but also because some
+ 	# values coming down the pike are comments or newlines.
+ 	my $found_one = 0;
+ 	foreach my $data (@{ $catalog->{data} })
+ 	{
+ 		if (ref $data eq 'HASH')
+ 		{
+ 			$found_one = 1;
+ 		}
+ 	}
+ 	next if !$found_one;
+ 
+ 	my @attnames;
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 		push @attnames, $attname;
+ 	}
+ 
+ 	my $datfile = "$output_path$catname.dat";
+ 	open my $dat, '>', $datfile
+ 	  or die "can't open $datfile: $!";
+ 
+ 	# Write out data file.
+ 	print $dat "# $catname.dat\n";
+ 
+ 	# Note: Put extra newlines after brackets because otherwise
+ 	# some catalogs have newlines and some don't, because of whitespace
+ 	# around DATA() comments.
+ 	print $dat "[\n\n";
+ 
+ 	foreach my $data (@{ $catalog->{data} })
+ 	{
+ 
+ 		# Either a newline or comment - just write it out.
+ 		if (! ref $data)
+ 		{
+ 			print $dat "$data\n";
+ 		}
+ 		# Hash ref representing a data entry.
+ 		elsif (ref $data eq 'HASH')
+ 		{
+ 			# Split line into tokens without interpreting their meaning.
+ 			my %bki_values;
+ 			@bki_values{@attnames} = split_data_line($data->{bki_values});
+ 
+ 			# Flatten data hierarchy.
+ 			delete $data->{bki_values};
+ 			my %flat_data = (%$data, %bki_values);
+ 
+ 			# Strip double quotes for readability. Most will be put
+ 			# back in when writing postgres.bki
+ 			foreach (values %flat_data)
+ 			{
+ 				s/"//g;
+ 			}
+ 
+ 			print $dat Dumper(\%flat_data);
+ 			print $dat ",\n";
+ 		}
+ 	}
+ 	print $dat "\n]\n";
+ }
+ 
+ 
+ # This function is a heavily modified version of its former namesake
+ # in Catalog.pm. There's probably some dead code here. It's not worth removing.
+ sub catalogs
+ {
+ 	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+ 	$catalogs{names} = [];
+ 
+ 	# There are a few types which are given one name in the C source, but a
+ 	# different name at the SQL level.  These are enumerated here.
+ 	my %RENAME_ATTTYPE = (
+ 		'int16'         => 'int2',
+ 		'int32'         => 'int4',
+ 		'int64'         => 'int8',
+ 		'Oid'           => 'oid',
+ 		'NameData'      => 'name',
+ 		'TransactionId' => 'xid',
+ 		'XLogRecPtr'    => 'pg_lsn');
+ 
+ 	foreach my $input_file (@_)
+ 	{
+ 		my %catalog;
+ 		$catalog{columns} = [];
+ 		$catalog{data}    = [];
+ 		my $is_varlen     = 0;
+ 		my $saving_comments = 0;
+ 
+ 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+ 
+ 		# Scan the input file.
+ 		while (<$ifh>)
+ 		{
+ 			# Determine that we're in the DATA section and should
+ 			# Start saving DATA comments.
+ 			if (/(\/|\s)\*\s+initial contents of pg_/)
+ 			{
+ 				$saving_comments = 1;
+ 			}
+ 
+ 			if ($saving_comments)
+ 			{
+ 				if ( m;^(/|\s+)\*\s+(.+); )
+ 				{
+ 					my $comment = $2;
+ 
+ 					# Ugly way to strip */ off the end
+ 					if ($comment =~ m;\*/$;)
+ 					{
+ 						$comment =~ s/.{2}$//;
+ 					}
+ 
+ 					# Turn C-style comment into Perl-style.
+ 
+ 					# Filter out comments we know we don't want.
+ 					if ($comment !~ /^-+$/
+ 						and $comment !~ /initial contents of pg/
+ 						and $comment !~ /PG_\w+_H/)
+ 					{
+ 						# Trim whitespace.
+ 						$comment =~ s/^\s+//;
+ 						$comment =~ s/\s+$//;
+ 						push @{ $catalog{data} }, "# $comment";
+ 					}
+ 				}
+ 				elsif (/^$/)
+ 				{
+ 					# Preserve blank lines
+ 					# Newline gets added by caller.
+ 					push @{ $catalog{data} }, '';
+ 				}
+ 			}
+ 			else
+ 			{
+ 				# Strip C-style comments.
+ 				s;/\*(.|\n)*\*/;;g;
+ 				if (m;/\*;)
+ 				{
+ 					# handle multi-line comments properly.
+ 					my $next_line = <$ifh>;
+ 					die "$input_file: ends within C-style comment\n"
+ 					  if !defined $next_line;
+ 					$_ .= $next_line;
+ 					redo;
+ 				}
+ 			}
+ 			# Remember input line number for later.
+ 			my $input_line_number = $.;
+ 
+ 			# Strip useless whitespace and trailing semicolons.
+ 			chomp;
+ 			s/^\s+//;
+ 			s/;\s*$//;
+ 			s/\s+/ /g;
+ 
+ 			# Push the data into the appropriate data structure.
+ 			if (
+ 				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+ 			{
+ 				if ($2)
+ 				{
+ 					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+ 				}
+ 				else
+ 				{
+ 					push @{ $catalog{data} }, { bki_values => $3 };
+ 				}
+ 			}
+ 			elsif (/^DESCR\(\"(.*)\"\)$/)
+ 			{
+ 				$most_recent = $catalog{data}->[-1];
+ 
+ 				# this tests if most recent line is not a DATA() statement
+ 				if (ref $most_recent ne 'HASH')
+ 				{
+ 					die "DESCR() does not apply to any catalog ($input_file)";
+ 				}
+ 				if (!defined $most_recent->{oid})
+ 				{
+ 					die "DESCR() does not apply to any oid ($input_file)";
+ 				}
+ 				elsif ($1 ne '')
+ 				{
+ 					$most_recent->{descr} = $1;
+ 				}
+ 			}
+ 			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+ 			{
+ 				$most_recent = $catalog{data}->[-1];
+ 
+ 				# this tests if most recent line is not a DATA() statement
+ 				if (ref $most_recent ne 'HASH')
+ 				{
+ 					die
+ 					  "SHDESCR() does not apply to any catalog ($input_file)";
+ 				}
+ 				if (!defined $most_recent->{oid})
+ 				{
+ 					die "SHDESCR() does not apply to any oid ($input_file)";
+ 				}
+ 				elsif ($1 ne '')
+ 				{
+ 					$most_recent->{shdescr} = $1;
+ 				}
+ 			}
+ 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+ 			{
+ 				$catname = $1;
+ 				$catalog{relation_oid} = $2;
+ 
+ 				# Store pg_* catalog names in the same order we receive them
+ 				push @{ $catalogs{names} }, $catname;
+ 
+ 				$declaring_attributes = 1;
+ 			}
+ 			elsif ($declaring_attributes)
+ 			{
+ 				next if (/^{|^$/);
+ 				next if (/^#/);
+ 				if (/^}/)
+ 				{
+ 					undef $declaring_attributes;
+ 				}
+ 				else
+ 				{
+ 					my %column;
+ 					if ($is_varlen)
+ 					{
+ 						$column{is_varlen} = 1;
+ 					}
+ 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+ 					die "parse error ($input_file)" unless $attname;
+ 					if (exists $RENAME_ATTTYPE{$atttype})
+ 					{
+ 						$atttype = $RENAME_ATTTYPE{$atttype};
+ 					}
+ 					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+ 					{
+ 						$attname = $1;
+ 						$atttype .= '[]';
+ 					}
+ 
+ 					$column{type} = $atttype;
+ 					$column{name} = $attname;
+ 
+ 					push @{ $catalog{columns} }, \%column;
+ 				}
+ 			}
+ 		}
+ 		if (defined $catname)
+ 		{
+ 			$catalogs{$catname} = \%catalog;
+ 		}
+ 		close $ifh;
+ 	}
+ 	return \%catalogs;
+ }
+ 
+ # Split a DATA line into fields.
+ # Call this on the bki_values element of a DATA item returned by catalogs();
+ # it returns a list of field values.  We don't strip quoting from the fields.
+ # Note: it should be safe to assign the result to a list of length equal to
+ # the nominal number of catalog fields, because the number of fields were
+ # checked in the original Catalog module.
+ sub split_data_line
+ {
+ 	my $bki_values = shift;
+ 
+ 	# This handling of quoted strings might look too simplistic, but it
+ 	# matches what bootscanner.l does: that has no provision for quote marks
+ 	# inside quoted strings, either.  If we don't have a quoted string, just
+ 	# snarf everything till next whitespace.  That will accept some things
+ 	# that bootscanner.l will see as erroneous tokens; but it seems wiser
+ 	# to do that and let bootscanner.l complain than to silently drop
+ 	# non-whitespace characters.
+ 	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+ 
+ 	return @result;
+ }
+ 
+ sub usage
+ {
+ 	die <<EOM;
+ Usage: convert_macro2dat.pl [options] header...
+ 
+ Options:
+     -o               output path
+ 
+ convert_macro2dat.pl generates data files from the same header files
+ currently parsed by Catalag.pm.
+ 
+ EOM
+ }
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
new file mode 100644
index 13f1bce..f7be2c0
*** a/src/include/catalog/pg_aggregate.h
--- b/src/include/catalog/pg_aggregate.h
***************
*** 55,83 ****
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	regproc		aggfnoid;
! 	char		aggkind;
! 	int16		aggnumdirectargs;
  	regproc		aggtransfn;
! 	regproc		aggfinalfn;
! 	regproc		aggcombinefn;
! 	regproc		aggserialfn;
! 	regproc		aggdeserialfn;
! 	regproc		aggmtransfn;
! 	regproc		aggminvtransfn;
! 	regproc		aggmfinalfn;
! 	bool		aggfinalextra;
! 	bool		aggmfinalextra;
! 	char		aggfinalmodify;
! 	char		aggmfinalmodify;
! 	Oid			aggsortop;
  	Oid			aggtranstype;
! 	int32		aggtransspace;
! 	Oid			aggmtranstype;
! 	int32		aggmtransspace;
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		agginitval;
! 	text		aggminitval;
  #endif
  } FormData_pg_aggregate;
  
--- 55,83 ----
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	regproc		aggfnoid;
! 	char		aggkind BKI_DEFAULT(n);
! 	int16		aggnumdirectargs BKI_DEFAULT(0);
  	regproc		aggtransfn;
! 	regproc		aggfinalfn BKI_DEFAULT(-);
! 	regproc		aggcombinefn BKI_DEFAULT(-);
! 	regproc		aggserialfn BKI_DEFAULT(-);
! 	regproc		aggdeserialfn BKI_DEFAULT(-);
! 	regproc		aggmtransfn BKI_DEFAULT(-);
! 	regproc		aggminvtransfn BKI_DEFAULT(-);
! 	regproc		aggmfinalfn BKI_DEFAULT(-);
! 	bool		aggfinalextra BKI_DEFAULT(f);
! 	bool		aggmfinalextra BKI_DEFAULT(f);
! 	char		aggfinalmodify BKI_DEFAULT(r);
! 	char		aggmfinalmodify BKI_DEFAULT(r);
! 	Oid			aggsortop BKI_DEFAULT(0);
  	Oid			aggtranstype;
! 	int32		aggtransspace BKI_DEFAULT(0);
! 	Oid			aggmtranstype BKI_DEFAULT(0);
! 	int32		aggmtransspace BKI_DEFAULT(0);
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		agginitval BKI_DEFAULT(_null_);
! 	text		aggminitval BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_aggregate;
  
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
new file mode 100644
index 9b6b52c..984f661
*** a/src/include/catalog/pg_authid.h
--- b/src/include/catalog/pg_authid.h
***************
*** 44,63 ****
  
  CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
  {
! 	NameData	rolname;		/* name of role */
! 	bool		rolsuper;		/* read this field via superuser() only! */
! 	bool		rolinherit;		/* inherit privileges from other roles? */
! 	bool		rolcreaterole;	/* allowed to create more roles? */
! 	bool		rolcreatedb;	/* allowed to create databases? */
! 	bool		rolcanlogin;	/* allowed to log in as session user? */
! 	bool		rolreplication; /* role used for streaming replication */
! 	bool		rolbypassrls;	/* bypasses row level security? */
! 	int32		rolconnlimit;	/* max connections allowed (-1=no limit) */
  
  	/* remaining fields may be null; use heap_getattr to read them! */
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		rolpassword;	/* password, if any */
! 	timestamptz rolvaliduntil;	/* password expiration time, if any */
  #endif
  } FormData_pg_authid;
  
--- 44,63 ----
  
  CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
  {
! 	NameData	rolname;						/* name of role */
! 	bool		rolsuper BKI_DEFAULT(f);		/* read this field via superuser() only! */
! 	bool		rolinherit BKI_DEFAULT(t);		/* inherit privileges from other roles? */
! 	bool		rolcreaterole BKI_DEFAULT(f);	/* allowed to create more roles? */
! 	bool		rolcreatedb BKI_DEFAULT(f);		/* allowed to create databases? */
! 	bool		rolcanlogin BKI_DEFAULT(f);		/* allowed to log in as session user? */
! 	bool		rolreplication BKI_DEFAULT(f);	/* role used for streaming replication */
! 	bool		rolbypassrls BKI_DEFAULT(f);	/* bypasses row level security? */
! 	int32		rolconnlimit BKI_DEFAULT(-1);	/* max connections allowed (-1=no limit) */
  
  	/* remaining fields may be null; use heap_getattr to read them! */
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		rolpassword BKI_DEFAULT(_null_);	/* password, if any */
! 	timestamptz rolvaliduntil BKI_DEFAULT(_null_);	/* password expiration time, if any */
  #endif
  } FormData_pg_authid;
  
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
new file mode 100644
index b256657..435d82a
*** a/src/include/catalog/pg_class.h
--- b/src/include/catalog/pg_class.h
***************
*** 32,57 ****
  CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  {
  	NameData	relname;		/* class name */
! 	Oid			relnamespace;	/* OID of namespace containing this class */
  	Oid			reltype;		/* OID of entry in pg_type for table's
  								 * implicit row type */
! 	Oid			reloftype;		/* OID of entry in pg_type for underlying
  								 * composite type */
! 	Oid			relowner;		/* class owner */
! 	Oid			relam;			/* index access method; 0 if not an index */
! 	Oid			relfilenode;	/* identifier of physical storage file */
  
  	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
! 	Oid			reltablespace;	/* identifier of table space for relation */
! 	int32		relpages;		/* # of blocks (not always up-to-date) */
! 	float4		reltuples;		/* # of tuples (not always up-to-date) */
! 	int32		relallvisible;	/* # of all-visible blocks (not always
  								 * up-to-date) */
! 	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
! 	bool		relhasindex;	/* T if has (or has had) any indexes */
! 	bool		relisshared;	/* T if shared across databases */
! 	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
! 	char		relkind;		/* see RELKIND_xxx constants below */
  	int16		relnatts;		/* number of user attributes */
  
  	/*
--- 32,57 ----
  CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  {
  	NameData	relname;		/* class name */
! 	Oid			relnamespace BKI_DEFAULT(PGNSP);	/* OID of namespace containing this class */
  	Oid			reltype;		/* OID of entry in pg_type for table's
  								 * implicit row type */
! 	Oid			reloftype BKI_DEFAULT(0);		/* OID of entry in pg_type for underlying
  								 * composite type */
! 	Oid			relowner BKI_DEFAULT(PGUID);		/* class owner */
! 	Oid			relam BKI_DEFAULT(0);			/* index access method; 0 if not an index */
! 	Oid			relfilenode BKI_DEFAULT(0);	/* identifier of physical storage file */
  
  	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
! 	Oid			reltablespace BKI_DEFAULT(0);	/* identifier of table space for relation */
! 	int32		relpages BKI_DEFAULT(0);		/* # of blocks (not always up-to-date) */
! 	float4		reltuples BKI_DEFAULT(0);		/* # of tuples (not always up-to-date) */
! 	int32		relallvisible BKI_DEFAULT(0);	/* # of all-visible blocks (not always
  								 * up-to-date) */
! 	Oid			reltoastrelid BKI_DEFAULT(0);	/* OID of toast table; 0 if none */
! 	bool		relhasindex BKI_DEFAULT(f);	/* T if has (or has had) any indexes */
! 	bool		relisshared BKI_DEFAULT(f);	/* T if shared across databases */
! 	char		relpersistence BKI_DEFAULT(p); /* see RELPERSISTENCE_xxx constants below */
! 	char		relkind BKI_DEFAULT(r);		/* see RELKIND_xxx constants below */
  	int16		relnatts;		/* number of user attributes */
  
  	/*
*************** CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI
*** 59,85 ****
  	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
  	 * contain entries with negative attnums for system attributes.
  	 */
! 	int16		relchecks;		/* # of CHECK constraints for class */
  	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
! 	bool		relhaspkey;		/* has (or has had) PRIMARY KEY index */
! 	bool		relhasrules;	/* has (or has had) any rules */
! 	bool		relhastriggers; /* has (or has had) any TRIGGERs */
! 	bool		relhassubclass; /* has (or has had) derived classes */
! 	bool		relrowsecurity; /* row security is enabled or not */
! 	bool		relforcerowsecurity;	/* row security forced for owners or
  										 * not */
! 	bool		relispopulated; /* matview currently holds query results */
! 	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
! 	bool		relispartition; /* is relation a partition? */
  	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
  	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
  								 * this is really a MultiXactId */
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
! 	aclitem		relacl[1];		/* access permissions */
! 	text		reloptions[1];	/* access-method-specific options */
! 	pg_node_tree relpartbound;	/* partition bound node tree */
  #endif
  } FormData_pg_class;
  
--- 59,85 ----
  	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
  	 * contain entries with negative attnums for system attributes.
  	 */
! 	int16		relchecks BKI_DEFAULT(0);		/* # of CHECK constraints for class */
  	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
! 	bool		relhaspkey BKI_DEFAULT(f);		/* has (or has had) PRIMARY KEY index */
! 	bool		relhasrules BKI_DEFAULT(f);	/* has (or has had) any rules */
! 	bool		relhastriggers BKI_DEFAULT(f); /* has (or has had) any TRIGGERs */
! 	bool		relhassubclass BKI_DEFAULT(f); /* has (or has had) derived classes */
! 	bool		relrowsecurity BKI_DEFAULT(f); /* row security is enabled or not */
! 	bool		relforcerowsecurity BKI_DEFAULT(f);	/* row security forced for owners or
  										 * not */
! 	bool		relispopulated BKI_DEFAULT(t); /* matview currently holds query results */
! 	char		relreplident BKI_DEFAULT(n);	/* see REPLICA_IDENTITY_xxx constants  */
! 	bool		relispartition BKI_DEFAULT(f); /* is relation a partition? */
  	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
  	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
  								 * this is really a MultiXactId */
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
! 	aclitem		relacl[1] BKI_DEFAULT(_null_);		/* access permissions */
! 	text		reloptions[1] BKI_DEFAULT(_null_);	/* access-method-specific options */
! 	pg_node_tree relpartbound BKI_DEFAULT(_null_);	/* partition bound node tree */
  #endif
  } FormData_pg_class;
  
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
new file mode 100644
index 28dbc74..d441e1f
*** a/src/include/catalog/pg_opclass.h
--- b/src/include/catalog/pg_opclass.h
***************
*** 50,63 ****
  
  CATALOG(pg_opclass,2616)
  {
! 	Oid			opcmethod;		/* index access method opclass is for */
! 	NameData	opcname;		/* name of this opclass */
! 	Oid			opcnamespace;	/* namespace of this opclass */
! 	Oid			opcowner;		/* opclass owner */
! 	Oid			opcfamily;		/* containing operator family */
! 	Oid			opcintype;		/* type of data indexed by opclass */
! 	bool		opcdefault;		/* T if opclass is default for opcintype */
! 	Oid			opckeytype;		/* type of data in index, or InvalidOid */
  } FormData_pg_opclass;
  
  /* ----------------
--- 50,63 ----
  
  CATALOG(pg_opclass,2616)
  {
! 	Oid			opcmethod;							/* index access method opclass is for */
! 	NameData	opcname;							/* name of this opclass */
! 	Oid			opcnamespace BKI_DEFAULT(PGNSP);	/* namespace of this opclass */
! 	Oid			opcowner BKI_DEFAULT(PGUID);		/* opclass owner */
! 	Oid			opcfamily;							/* containing operator family */
! 	Oid			opcintype;							/* type of data indexed by opclass */
! 	bool		opcdefault BKI_DEFAULT(t);			/* T if opclass is default for opcintype */
! 	Oid			opckeytype BKI_DEFAULT(0);			/* type of data in index, or InvalidOid */
  } FormData_pg_opclass;
  
  /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
new file mode 100644
index ff9b470..dd4c7e1
*** a/src/include/catalog/pg_operator.h
--- b/src/include/catalog/pg_operator.h
***************
*** 33,52 ****
  
  CATALOG(pg_operator,2617)
  {
! 	NameData	oprname;		/* name of operator */
! 	Oid			oprnamespace;	/* OID of namespace containing this oper */
! 	Oid			oprowner;		/* operator owner */
! 	char		oprkind;		/* 'l', 'r', or 'b' */
! 	bool		oprcanmerge;	/* can be used in merge join? */
! 	bool		oprcanhash;		/* can be used in hash join? */
! 	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
! 	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
! 	Oid			oprresult;		/* result datatype */
! 	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
! 	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
! 	regproc		oprcode;		/* OID of underlying function */
! 	regproc		oprrest;		/* OID of restriction estimator, or 0 */
! 	regproc		oprjoin;		/* OID of join estimator, or 0 */
  } FormData_pg_operator;
  
  /* ----------------
--- 33,52 ----
  
  CATALOG(pg_operator,2617)
  {
! 	NameData	oprname;							/* name of operator */
! 	Oid			oprnamespace BKI_DEFAULT(PGNSP);	/* OID of namespace containing this oper */
! 	Oid			oprowner BKI_DEFAULT(PGUID);		/* operator owner */
! 	char		oprkind BKI_DEFAULT(b);				/* 'l', 'r', or 'b' */
! 	bool		oprcanmerge BKI_DEFAULT(f);			/* can be used in merge join? */
! 	bool		oprcanhash BKI_DEFAULT(f);			/* can be used in hash join? */
! 	Oid			oprleft;							/* left arg type, or 0 if 'l' oprkind */
! 	Oid			oprright;							/* right arg type, or 0 if 'r' oprkind */
! 	Oid			oprresult;							/* result datatype */
! 	Oid			oprcom BKI_DEFAULT(0);				/* OID of commutator oper, or 0 if none */
! 	Oid			oprnegate BKI_DEFAULT(0);			/* OID of negator oper, or 0 if none */
! 	regproc		oprcode;							/* OID of underlying function */
! 	regproc		oprrest BKI_DEFAULT(-);				/* OID of restriction estimator, or 0 */
! 	regproc		oprjoin BKI_DEFAULT(-);				/* OID of join estimator, or 0 */
  } FormData_pg_operator;
  
  /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
new file mode 100644
index 0d0ba7c..ac7df78
*** a/src/include/catalog/pg_opfamily.h
--- b/src/include/catalog/pg_opfamily.h
***************
*** 30,39 ****
  
  CATALOG(pg_opfamily,2753)
  {
! 	Oid			opfmethod;		/* index access method opfamily is for */
! 	NameData	opfname;		/* name of this opfamily */
! 	Oid			opfnamespace;	/* namespace of this opfamily */
! 	Oid			opfowner;		/* opfamily owner */
  } FormData_pg_opfamily;
  
  /* ----------------
--- 30,39 ----
  
  CATALOG(pg_opfamily,2753)
  {
! 	Oid			opfmethod;							/* index access method opfamily is for */
! 	NameData	opfname;							/* name of this opfamily */
! 	Oid			opfnamespace BKI_DEFAULT(PGNSP);	/* namespace of this opfamily */
! 	Oid			opfowner BKI_DEFAULT(PGUID);		/* opfamily owner */
  } FormData_pg_opfamily;
  
  /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
new file mode 100644
index c969375..18a5761
*** a/src/include/catalog/pg_proc.h
--- b/src/include/catalog/pg_proc.h
***************
*** 35,59 ****
  
  CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  {
! 	NameData	proname;		/* procedure name */
! 	Oid			pronamespace;	/* OID of namespace containing this proc */
! 	Oid			proowner;		/* procedure owner */
! 	Oid			prolang;		/* OID of pg_language entry */
! 	float4		procost;		/* estimated execution cost */
! 	float4		prorows;		/* estimated # of rows out (if proretset) */
! 	Oid			provariadic;	/* element type of variadic array, or 0 */
! 	regproc		protransform;	/* transforms calls to it during planning */
! 	bool		proisagg;		/* is it an aggregate? */
! 	bool		proiswindow;	/* is it a window function? */
! 	bool		prosecdef;		/* security definer */
! 	bool		proleakproof;	/* is it a leak-proof function? */
! 	bool		proisstrict;	/* strict with respect to NULLs? */
! 	bool		proretset;		/* returns a set? */
! 	char		provolatile;	/* see PROVOLATILE_ categories below */
! 	char		proparallel;	/* see PROPARALLEL_ categories below */
! 	int16		pronargs;		/* number of arguments */
! 	int16		pronargdefaults;	/* number of arguments with defaults */
! 	Oid			prorettype;		/* OID of result type */
  
  	/*
  	 * variable-length fields start here, but we allow direct access to
--- 35,59 ----
  
  CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  {
! 	NameData	proname;							/* procedure name */
! 	Oid			pronamespace BKI_DEFAULT(PGNSP);	/* OID of namespace containing this proc */
! 	Oid			proowner BKI_DEFAULT(PGUID);		/* procedure owner */
! 	Oid			prolang BKI_DEFAULT(12);			/* OID of pg_language entry */
! 	float4		procost BKI_DEFAULT(1);				/* estimated execution cost */
! 	float4		prorows BKI_DEFAULT(0);				/* estimated # of rows out (if proretset) */
! 	Oid			provariadic BKI_DEFAULT(0);			/* element type of variadic array, or 0 */
! 	regproc		protransform BKI_DEFAULT(0);		/* transforms calls to it during planning */
! 	bool		proisagg BKI_DEFAULT(f);			/* is it an aggregate? */
! 	bool		proiswindow BKI_DEFAULT(f);			/* is it a window function? */
! 	bool		prosecdef BKI_DEFAULT(f);			/* security definer */
! 	bool		proleakproof BKI_DEFAULT(f);		/* is it a leak-proof function? */
! 	bool		proisstrict BKI_DEFAULT(t);			/* strict with respect to NULLs? */
! 	bool		proretset BKI_DEFAULT(f);			/* returns a set? */
! 	char		provolatile BKI_DEFAULT(i);			/* see PROVOLATILE_ categories below */
! 	char		proparallel BKI_DEFAULT(u);			/* see PROPARALLEL_ categories below */
! 	int16		pronargs;							/* number of arguments */
! 	int16		pronargdefaults BKI_DEFAULT(0);		/* number of arguments with defaults */
! 	Oid			prorettype;							/* OID of result type */
  
  	/*
  	 * variable-length fields start here, but we allow direct access to
*************** CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_
*** 62,77 ****
  	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
  
  #ifdef CATALOG_VARLEN
! 	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
! 	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
! 	text		proargnames[1]; /* parameter names (NULL if no names) */
! 	pg_node_tree proargdefaults;	/* list of expression trees for argument
  									 * defaults (NULL if none) */
! 	Oid			protrftypes[1]; /* types for which to apply transforms */
  	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
! 	text		probin;			/* secondary procedure info (can be NULL) */
! 	text		proconfig[1];	/* procedure-local GUC settings */
! 	aclitem		proacl[1];		/* access permissions */
  #endif
  } FormData_pg_proc;
  
--- 62,77 ----
  	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
  
  #ifdef CATALOG_VARLEN
! 	Oid			proallargtypes[1] BKI_DEFAULT(_null_);	/* all param types (NULL if IN only) */
! 	char		proargmodes[1] BKI_DEFAULT(_null_); /* parameter modes (NULL if IN only) */
! 	text		proargnames[1] BKI_DEFAULT(_null_); /* parameter names (NULL if no names) */
! 	pg_node_tree proargdefaults BKI_DEFAULT(_null_);	/* list of expression trees for argument
  									 * defaults (NULL if none) */
! 	Oid			protrftypes[1] BKI_DEFAULT(_null_); /* types for which to apply transforms */
  	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
! 	text		probin BKI_DEFAULT(_null_);			/* secondary procedure info (can be NULL) */
! 	text		proconfig[1] BKI_DEFAULT(_null_);	/* procedure-local GUC settings */
! 	aclitem		proacl[1] BKI_DEFAULT(_null_);		/* access permissions */
  #endif
  } FormData_pg_proc;
  
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
new file mode 100644
index e355144..c7b8b62
*** a/src/include/catalog/pg_type.h
--- b/src/include/catalog/pg_type.h
***************
*** 37,44 ****
  CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  {
  	NameData	typname;		/* type name */
! 	Oid			typnamespace;	/* OID of namespace containing this type */
! 	Oid			typowner;		/* type owner */
  
  	/*
  	 * For a fixed-size type, typlen is the number of bytes we use to
--- 37,44 ----
  CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  {
  	NameData	typname;		/* type name */
! 	Oid			typnamespace BKI_DEFAULT(PGNSP);	/* OID of namespace containing this type */
! 	Oid			typowner BKI_DEFAULT(PGUID);		/* type owner */
  
  	/*
  	 * For a fixed-size type, typlen is the number of bytes we use to
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 66,72 ****
  	 *
  	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
  	 */
! 	char		typtype;
  
  	/*
  	 * typcategory and typispreferred help the parser distinguish preferred
--- 66,72 ----
  	 *
  	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
  	 */
! 	char		typtype BKI_DEFAULT(b);
  
  	/*
  	 * typcategory and typispreferred help the parser distinguish preferred
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 76,92 ****
  	 */
  	char		typcategory;	/* arbitrary type classification */
  
! 	bool		typispreferred; /* is type "preferred" within its category? */
  
  	/*
  	 * If typisdefined is false, the entry is only a placeholder (forward
  	 * reference).  We know the type name, but not yet anything else about it.
  	 */
! 	bool		typisdefined;
  
! 	char		typdelim;		/* delimiter for arrays of this type */
  
! 	Oid			typrelid;		/* 0 if not a composite type */
  
  	/*
  	 * If typelem is not 0 then it identifies another row in pg_type. The
--- 76,92 ----
  	 */
  	char		typcategory;	/* arbitrary type classification */
  
! 	bool		typispreferred BKI_DEFAULT(f); /* is type "preferred" within its category? */
  
  	/*
  	 * If typisdefined is false, the entry is only a placeholder (forward
  	 * reference).  We know the type name, but not yet anything else about it.
  	 */
! 	bool		typisdefined BKI_DEFAULT(t);
  
! 	char		typdelim BKI_DEFAULT(\054);		/* delimiter for arrays of this type */
  
! 	Oid			typrelid BKI_DEFAULT(0);		/* 0 if not a composite type */
  
  	/*
  	 * If typelem is not 0 then it identifies another row in pg_type. The
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 99,105 ****
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem;
  
  	/*
  	 * If there is a "true" array type having this type as element type,
--- 99,105 ----
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem BKI_DEFAULT(0);
  
  	/*
  	 * If there is a "true" array type having this type as element type,
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 118,130 ****
  	/*
  	 * I/O functions for optional type modifiers.
  	 */
! 	regproc		typmodin;
! 	regproc		typmodout;
  
  	/*
  	 * Custom ANALYZE procedure for the datatype (0 selects the default).
  	 */
! 	regproc		typanalyze;
  
  	/* ----------------
  	 * typalign is the alignment required when storing a value of this
--- 118,130 ----
  	/*
  	 * I/O functions for optional type modifiers.
  	 */
! 	regproc		typmodin BKI_DEFAULT(-);
! 	regproc		typmodout BKI_DEFAULT(-);
  
  	/*
  	 * Custom ANALYZE procedure for the datatype (0 selects the default).
  	 */
! 	regproc		typanalyze BKI_DEFAULT(-);
  
  	/* ----------------
  	 * typalign is the alignment required when storing a value of this
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 162,168 ****
  	 * 'm' MAIN		  like 'x' but try to keep in main tuple
  	 * ----------------
  	 */
! 	char		typstorage;
  
  	/*
  	 * This flag represents a "NOT NULL" constraint against this datatype.
--- 162,168 ----
  	 * 'm' MAIN		  like 'x' but try to keep in main tuple
  	 * ----------------
  	 */
! 	char		typstorage BKI_DEFAULT(p);
  
  	/*
  	 * This flag represents a "NOT NULL" constraint against this datatype.
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 172,203 ****
  	 *
  	 * Used primarily for domain types.
  	 */
! 	bool		typnotnull;
  
  	/*
  	 * Domains use typbasetype to show the base (or domain) type that the
  	 * domain is based on.  Zero if the type is not a domain.
  	 */
! 	Oid			typbasetype;
  
  	/*
  	 * Domains use typtypmod to record the typmod to be applied to their base
  	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
  	 * domain.
  	 */
! 	int32		typtypmod;
  
  	/*
  	 * typndims is the declared number of dimensions for an array domain type
  	 * (i.e., typbasetype is an array type).  Otherwise zero.
  	 */
! 	int32		typndims;
  
  	/*
  	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
  	 * collatable base types, possibly other OID for domains
  	 */
! 	Oid			typcollation;
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  
--- 172,203 ----
  	 *
  	 * Used primarily for domain types.
  	 */
! 	bool		typnotnull BKI_DEFAULT(f);
  
  	/*
  	 * Domains use typbasetype to show the base (or domain) type that the
  	 * domain is based on.  Zero if the type is not a domain.
  	 */
! 	Oid			typbasetype BKI_DEFAULT(0);
  
  	/*
  	 * Domains use typtypmod to record the typmod to be applied to their base
  	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
  	 * domain.
  	 */
! 	int32		typtypmod BKI_DEFAULT(-1);
  
  	/*
  	 * typndims is the declared number of dimensions for an array domain type
  	 * (i.e., typbasetype is an array type).  Otherwise zero.
  	 */
! 	int32		typndims BKI_DEFAULT(0);
  
  	/*
  	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
  	 * collatable base types, possibly other OID for domains
  	 */
! 	Oid			typcollation BKI_DEFAULT(0);
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 206,212 ****
  	 * a default expression for the type.  Currently this is only used for
  	 * domains.
  	 */
! 	pg_node_tree typdefaultbin;
  
  	/*
  	 * typdefault is NULL if the type has no associated default value. If
--- 206,212 ----
  	 * a default expression for the type.  Currently this is only used for
  	 * domains.
  	 */
! 	pg_node_tree typdefaultbin BKI_DEFAULT(_null_);
  
  	/*
  	 * typdefault is NULL if the type has no associated default value. If
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 216,227 ****
  	 * external representation of the type's default value, which may be fed
  	 * to the type's input converter to produce a constant.
  	 */
! 	text		typdefault;
  
  	/*
  	 * Access permissions
  	 */
! 	aclitem		typacl[1];
  #endif
  } FormData_pg_type;
  
--- 216,227 ----
  	 * external representation of the type's default value, which may be fed
  	 * to the type's input converter to produce a constant.
  	 */
! 	text		typdefault BKI_DEFAULT(_null_);
  
  	/*
  	 * Access permissions
  	 */
! 	aclitem		typacl[1] BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_type;
  
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index ...f6b01cf
*** a/src/include/catalog/rewrite_dat.pl
--- b/src/include/catalog/rewrite_dat.pl
***************
*** 0 ****
--- 1,346 ----
+ #!/usr/bin/perl -w
+ #----------------------------------------------------------------------
+ #
+ # rewrite_dat.pl
+ #    Perl script that reads in a catalog data file and writes out
+ #    a functionally equivalent file in a standard format.
+ #
+ #    -Metadata fields are on their own line
+ #    -Fields are in the same order they would be in the catalog table
+ #    -Default values for the catalog are left out.
+ #
+ # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ # Portions Copyright (c) 1994, Regents of the University of California
+ #
+ # /src/include/catalog/rewrite_dat.pl
+ #
+ #----------------------------------------------------------------------
+ 
+ use Catalog;
+ 
+ use strict;
+ use warnings;
+ 
+ my @input_files;
+ my $output_path = '';
+ my $major_version;
+ 
+ # Process command line switches.
+ while (@ARGV)
+ {
+ 	my $arg = shift @ARGV;
+ 	if ($arg !~ /^-/)
+ 	{
+ 		push @input_files, $arg;
+ 	}
+ 	elsif ($arg =~ /^-o/)
+ 	{
+ 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+ 	}
+ 	elsif ($arg eq '--revert')
+ 	{
+ 		revert();
+ 	}
+ 	else
+ 	{
+ 		usage();
+ 	}
+ }
+ 
+ # Sanity check arguments.
+ die "No input files.\n" if !@input_files;
+ foreach my $input_file (@input_files)
+ {
+ 	if ($input_file !~ /\.dat$/)
+ 	{
+ 		die "Input files need to be data (.dat) files.\n";
+ 	}
+ }
+ 
+ # Make sure output_path ends in a slash.
+ if ($output_path ne '' && substr($output_path, -1) ne '/')
+ {
+ 	$output_path .= '/';
+ }
+ 
+ # We pass data file names as arguments and then look for matching
+ # headers to parse the schema from.
+ my @header_files;
+ foreach my $datfile (@input_files)
+ {
+ 	$datfile =~ /(.+)\.dat$/;
+ 	my $header = "$1.h";
+ 	if (-e $header)
+ 	{
+ 		push @header_files, $header;
+ 	}
+ 	else
+ 	{
+ 		die "There in no header file corresponding to $datfile";
+ 	}
+ }
+ 
+ # Metadata of a catalog entry
+ my @metafields = ('oid', 'descr', 'shdescr');
+ 
+ # Read all the input files into internal data structures
+ my $catalogs     = Catalog::ParseHeader(@header_files);
+ my $catalog_data = parse_data_preserve_comments(@input_files);
+ 
+ # produce output, one catalog at a time
+ foreach my $catname (@{ $catalogs->{names} })
+ {
+ 	my @attnames;
+ 	my $catalog = $catalogs->{$catname};
+ 	my $schema  = $catalog->{columns};
+ 	my @newschema;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		push @attnames, $attname;
+ 
+ 		# Everything past here is a no-op unless you are changing a
+ 		# default value.
+ 		my %newcolumn = %$column;
+ 
+ 		# Change default value here
+ 		# NB: After rewriting the data file, you must also change the
+ 		# default in the corresponding header file as well.
+ 		#~ if ($attname eq 'proparallel')
+ 		#~ {
+ 			#~ $newcolumn{default} = 'u';
+ 		#~ }
+ 
+ 		push @newschema, \%newcolumn;
+ 	}
+ 
+ 	if (defined $catalog_data->{$catname})
+ 	{
+ 
+ 		# Back up old data file rather than overwrite it.
+ 		# We don't assume the input path and output path are the same,
+ 		# but they can be.
+ 		my $newdatfile = "$output_path$catname.dat";
+ 		if (-e $newdatfile)
+ 		{
+ 			rename($newdatfile, $newdatfile . '.bak') or die "rename: $newdatfile: $!";
+ 		}
+ 		open my $dat, '>', $newdatfile
+ 		  or die "can't open $newdatfile: $!";
+ 
+ 		foreach my $data (@{ $catalog_data->{$catname} })
+ 		{
+ 			# Either a newline or comment - just write it out.
+ 			if (! ref $data)
+ 			{
+ 				print $dat "$data\n";
+ 			}
+ 			# Hash ref representing a data entry.
+ 			elsif (ref $data eq 'HASH')
+ 			{
+ 				my %values = %$data;
+ 				print $dat "{ ";
+ 
+ 				# Strip default values. We always fill in the defaults
+ 				# first, in case we are changing the defaults on the fly.
+ 				Catalog::AddDefaultValues(\%values, $schema, $catname);
+ 				strip_default_values(\%values, \@newschema, $catname);
+ 
+ 				# We separate out a couple metadata fields for readability.
+ 				my $metadata_line = format_line(\%values, @metafields);
+ 				if ($metadata_line)
+ 				{
+ 					print $dat $metadata_line;
+ 					print $dat ",\n";
+ 				}
+ 				my $data_line = format_line(\%values, @attnames);
+ 
+ 				# Line up with metadata line, if there is one.
+ 				if ($metadata_line)
+ 				{
+ 					print $dat '  ';
+ 				}
+ 				print $dat $data_line;
+ 				print $dat " },\n";
+ 			}
+ 			else
+ 			{
+ 				die "Unexpected data type";
+ 			}
+ 		}
+ 	}
+ }
+ 
+ # When the build scripts consume the data, they just slurp the whole
+ # file and ignore non-data. That won't work if we want to transform
+ # the data into a standard format, because we want to preserve comments
+ # and blank lines. We have to separate data from comments, and
+ # parse data entries retail.
+ sub parse_data_preserve_comments
+ {
+ 	my %catalog_data;
+ 	foreach my $input_file (@_)
+ 	{
+ 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+ 		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
+ 		my $data = [];
+ 		my $prev_blank = 0;
+ 
+ 		# Scan the input file.
+ 		while (<$ifh>)
+ 		{
+ 			if (/^$/)
+ 			{
+ 				# Preserve non-consecutive blank lines.
+ 				# Newline gets added by caller.
+ 				if (!$prev_blank)
+ 				{
+ 					push @$data, '';
+ 					$prev_blank = 1;
+ 				}
+ 			}
+ 			else
+ 			{
+ 				$prev_blank = 0;
+ 				if (/{/)
+ 				{
+ 					# Capture the hash ref
+ 					# NB: Assumes that the next hash ref can't start on the
+ 					# same line where the present one ended.
+ 					# Not foolproof, but we shouldn't need a full lexer,
+ 					# since we expect relatively well-behaved input.
+ 
+ 					# Quick hack to detect when we have a full hash ref to
+ 					# parse. We can't just use a regex because of values in
+ 					# pg_aggregate and pg_proc like '{0,0}'.
+ 					my $lcnt = tr/{//;
+ 					my $rcnt = tr/}//;
+ 
+ 					if ($lcnt == $rcnt)
+ 					{
+ 						my $entry;
+ 						eval '$entry = ' . $_;
+ 						if (!ref $entry)
+ 						{
+ 							die "Error parsing $_\n";
+ 						}
+ 						push @$data, $entry;
+ 					}
+ 					else
+ 					{
+ 						my $next_line = <$ifh>;
+ 						$_ .= $next_line;
+ 						redo;
+ 					}
+ 				}
+ 				# Capture comments that are on their own line.
+ 				elsif (/^\s*#\s*(.+)\s*/)
+ 				{
+ 					my $comment = $1;
+ 					push @$data, "# $comment";
+ 				}
+ 				# Assume bracket is the only token in the line.
+ 				elsif (/^\s*(\[|\])\s*$/)
+ 				{
+ 					push @$data, $1;
+ 				}
+ 			}
+ 		}
+ 		$catalog_data{$filename} = $data;
+ 	}
+ 	return \%catalog_data;
+ }
+ 
+ sub strip_default_values
+ {
+ 	my $row     = shift;
+ 	my $schema  = shift;
+ 	my $catname = shift;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 
+ 		# Delete values that match defaults.
+ 		if (defined $row->{$attname})
+ 		{
+ 			if (defined $column->{default}
+ 				and ($row->{$attname} eq $column->{default}))
+ 			{
+ 				delete $row->{$attname};
+ 			}
+ 		}
+ 		else
+ 		{
+ 			if (!defined $column->{default})
+ 			{
+ 				die "Missing value in $catname.$attname\n";
+ 			}
+ 		}
+ 	}
+ }
+ 
+ 
+ sub format_line
+ {
+ 	my $data = shift;
+ 	my @atts = @_;
+ 
+ 	my $first = 1;
+ 	my $value;
+ 	my $line = '';
+ 
+ 	foreach my $field (@atts)
+ 	{
+ 		next if !defined $data->{$field};
+ 		$value = $data->{$field};
+ 
+ 		# Re-escape single quotes.
+ 		$value =~ s/'/\\'/g;
+ 
+ 		if (!$first)
+ 		{
+ 			$line .= ', ';
+ 		}
+ 		$first = 0;
+ 
+ 		$line .= "$field => '$value'";
+ 	}
+ 	return $line;
+ }
+ 
+ 
+ # Rename .bak files back to .dat
+ # Pass the data files to the script as normal.
+ sub revert
+ {
+ 	foreach my $datfile (@input_files)
+ 	{
+ 		my $bakfile = "$datfile.bak";
+ 		if (-e $bakfile)
+ 		{
+ 			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+ 		}
+ 	}
+ 	exit 0;
+ }
+ 
+ 
+ sub usage
+ {
+ 	die <<EOM;
+ Usage: rewrite_dat.pl [options] datafile...
+ 
+ Options:
+     -o               output path
+     --revert         rename .bak files back to .dat
+ 
+ Expects a list of .dat files as arguments.
+ 
+ Rewrites data files and strips defaults values.
+ Make sure location of Catalog.pm is passed to the perl interpreter:
+ perl -I /path/to/Catalog.pm/ ...
+ 
+ EOM
+ }
0005_data_files_mechanical_v1.patch.tar.gzapplication/x-gzip; name=0005_data_files_mechanical_v1.patch.tar.gzDownload
�<%Z��{����'8������]U�Y%�������Sg�e��v�����aJ�L�$Q��Q����II$@P���=��{)����@ �Z���M�����l�w����W�b{����P������g�Z%I����i����ZE~'�������$��c�I����3e����-��_����{s���?����A�x�q�e�_o_6��k6����������X>m����7�������Ov���O<?���>L�~�����G����^��~e����K�\m�y����.�V�d��!��M3�QG&���������x�=_��k�C�\���������?�O�O�T���l���5?���y��R��>���i��@;��c���'<a��a����v4�g�g�I�'�!�G��#E)�-&��T��s�O6�����Dz�9r��������:�g?�T�v*�Y*����G#`���G�����7
��H0�:��qw�Tn�z�*}��3\\�O���7������{�Z��e*P_{�/�w�]�)�UEo�����}���h�Q����?G�}sww�����OGe�u�o��r;��v���'���_x������x����o�����6�?���y����[��e�y�wO�}�������������������<V��C�����c]��})�cx��	�:�����i����M	�������]����=�t��<w�k�<��-����N���l
��N��������A�D:��TH$�%"���z`��1����c,��A���w��{�o����u�">W�]�]���I��.x�c�cw�	�QP���
j�0���*���7
��l�_C�S���f��B%�H����.��E�}��������+����F�f��`&��(���K1|����Zk!����;jk!`��R�b�?�����,���=�������B��eu�j4�o�]�g�njd�PC3����D0E p��q��.W�
��E�b������X����)���%Td�X�7�2����$�}��y���L>�)$���pW��rX4��
3n��:�[�v-*��/�<0���1�*.��� hT���U�hj�]���
���������mq|*�*�7����m}�}�d��-�j���V��)���R���$�R��W u�y�,�TM\�pD;�a�j�\o������P�'�|�f����!�A)�@�S��}�b%y�?m���W��>`�K
!`���n�j�� }<�0��cJ%_�i�?���0���T��D�`�kWc?�W�\P��0����-v�����3��x,��V������\�o��
@��"�����_�@	UP����m���
����h%	���F�0���B
��x ������*��c�QC�|b�R8z�T"���pX?G
�	�L�U�2�i*����JWd+��+� �!�Q2�kF@�x �'��@��B'P�_�����I	|c,�`�4<��|�V{PO`��5�b�U���'�-����m�9Dz���>����m�#=�@I��:�
�	�>�P?��8!��m�J6�F��$����oC@-��u�r&��Z�
�v���2�������(���(7�|6c5 ���q��G�����C;C��4��nM��������X��X7L�%���K�hM�)�@�8H'�6�x
k���^w��L#^�|�i��F�|��Q�:��Sz���A�_�F�p���z���Z
����-tq/ �!�����1g�x�"_���ZG/~:��4�=�:��[�j��O�_p��/ �Sl����W��/���u��oA�Ql�V��}�����U���A��r�����x�ju&0~O��N�����mA�:A�c�y���A��~KY��2�Rg�7Rp�(�=���q�����+l��������6�M}�<�����@I����x��Mzl������Rhc��h��-�`���?��T��s5k�,S�B{4���@�Uj��^�M�k{��o���Q��������"���n��(a���$�w����D�*(9c��_�����Med[����2N2�'h~m������G���8������������������i��e�5�m��{��:��G���!����G�����W�~|�U��������e)]��.k�kcu[���w���v�)��2�P�*��_�z{1��u��[���:^�c�I����[J�2���9��-'B��
��"��^FK���5���-�A:���?���
����+��)t�����������t�*�����F�w�7\&���`So�Z%E��o*)e�<��^w��B�M�������~d����lZ_��[�u���*4�c�4�ku8W��$^����B?vL\;����6\�d���#/��w���jzl���G�X�����=�m�T���$�j����a����D5>� ��(�E(��d������}���A3���Xj�[�d��0x���-W��llf0������b/�=�j�� s��yU��1�tu9z�o�Cy#���}w�v]�q�
�P���S
K�Whh�3A����|��>j@��b���������o<���G��JR�_�_�p��=�/��J��v��t���sE`�a�m�/�Pv��>�w�������1�qD�q~h��,12�����'�)G������^���}���O%�h�"�g�h(��P�0��LP+{�>ASP��Vs��P5O	�.�EJ."J
P{�Ss���P-���/%��5 �gQ���a����k�7�L�>PR����n��kO�W��~]�p+�s����]�
��!�$�o���Oe�}���t����Y��V��5ZA��R������ ���o�:]@����j����w&��(>�e����/�c�H�4�������~
 ���#9�@�
���Y?��\���/��(H���<8D���)v$,��>n�c��k�����?���l�Vb�P�,�S���}������m�#�S�����������_&�w�+�}[m��M��{�t��{��7���^}���-�����Z�27�����������s���p��`��^�mu�i��n7ma�����h:y�����������������zA���/�`��{���9��r�S������Y��������-���r�n�}S^Y���w'�n�2���� LV�z��������tz��nz���y��._�n�f}�cw���I2��X����ve�\o~���������.�*��3�����v�W��y���D-�'����G�S��")�����W�}�����R��")i����[,�=@x�������w��s�@��c$�0��������/� |��?��g�S��b���aN��o�(|�~�q<����fT~������/h����=��zw9�����>���3�����)�=��t;|o��e{�-�qF�z�����
3������`/�C���p�=co���7g��0�W���c;B5J�.7@������
1���jx_��we��o}��>d��bD�Mq���8����xQ����2x1��71 ^�6F�/J���Z3
nV7m���&���#l3����#|�	�($����d�m�;E�j�C�k��/;�&pq�j�j��"�em�	\\�����/.R�-�*}cd�jTpc�j�������1��e��"���uc�z��"Ug��F�HU��u�j��2p1��-�j4���Rob��c�l���.FS�%#��i������.6�&x1j��.oM�b�0���&x1�-l8L�b41�m|��'ff�������L�������Q�,�^
`\�&]6J5��������,��`�:��7�/���jsi�8�l
�/�A��g|q2��;������#�A>����������N����O��!����dE�'�����j�B�����B`���V�T�G
��B|`��t������(b��H4�0F��DI�b4�
0�*���"����'�+�,B�z����	aZ�p����-!^�g��<
^�g��"�(��X��<cd�icw�J_��7?T�+��t�yyn��de��Q�JVYI���d�_
�(u%�	�@�RX�"8��+�j��#���+�������M���+�������N���o��
�i��p1��n&d;�Q^�,cO��5���(��f��^!Fy���^k��rc��#�Zs��hd��$;�B�5�v( ��&Y�%d���*^�B���.`r���8�����]�$�N
�(_IcB(�b�15hQN���Q�EyHW����{����y�T`$�A�`Bd�	���0���t���B���.J
�����V��[���V�3A�����FO1��C�`�/N�vr�����j��.N�6������qc��0��eu>�-������UL2]�0�����d��
3j�����>����&���Z1�����zv��u�������uI���$��/J+s*K����yL��)���1�Y�P�Eibne�G�X<4m�];F��x!��s�S�4�%h��)�D�4�1�SMo
����4�����V+��Bn��FB���[ �!���Lda-M3:*�����of\XK�����kiV�T�qa�U�x��]�q-n��u����������!M�,fT�zhU�f��2�4�	"�����f�
3��=��K�W��G�2U%Z�a��*Q��3NU�"a"�8U%Ja�����
y��������:�3JGW4;qT�Q:j�f\3JGWDV"�(]Y�1���tm���am�V�����4��T�q~����
3��Z��.��G��~�C^��qy���SaF�*QCM*�(U�k��f���5~\3JU�h)C^C-����i��QaF%{C���T�Q�����fT�7�9*F���
���*��������0����6s�)�������qA/Mo*���7����2j���A"���
3.����N�����C����f���y#�3���� �y�(o�B����;�:������G���*��h��j��h�!O������?����V��U?H�����u4�i:�Q�F�h��2�(�ckH��1M�1h���V�F:���=�+�������)8�|`�4�j�@�5����4.mD�*�4.oD�,�4.qd�]1��]�.6��ZA��=�������P��"��R����>�(��z�@F)f@���2J-�|����B/�KE��A
��/���2i��A��%�L2c� c�2�+M[
2F/d�$.d�^2��G��e��>��t�)lb��I������@����%!��s�4M�� �����&
�8w����c�|���j��b'`m?G�+fJs��4J5S�h�r�4i72�(�Li���F)h��@����H7�7�X-[�����Eid���
�e�i�c	���0!:-L�u�����C�*�/9��x�|`��JU�0�<�U��b�q�����3�/fD-�h0���U�H/�G�j��I��&�x�����,�@������'����fL�����d�qW�Z]��f�A�;m[�J-=��v�B�;�I��ii.1'��a��	\\�OsC!`\	��%�o�N���B�,�N3"�I��������D
5�@�t4 ��D�qzjU�1�����Gmy������O���)�^t�D��� �hgN� F9N��\�B����j�a)������F:y,�3��Ap.6:�07���5ib-����4ws!�hel���b�V�4}2��:l:ff[D�,�L3�+E��
����eFs��1F/3�E&
b�^f4�c�c�2��,	b�^fV���^�c��`C8�n�=����-M/*����4}m�0�V�4>�
3*1�����
3���U��I,�����T]Dp����P����T�Q9���=2�

r��X2��PN�2�4*�[Ut�:Z��'��3���������*g�i4�4FSC�FS�@�J�}M%�*j�]5������,5��r�>���4q#h�/MiHT�q��fUA�KS��+*�8_j��4��t�m�:/�O�O�	/�����>0��v�������F-h�%:K�E��e2�(/jw������y�������/J�\�	*^�HA�u�����2�����#Gm��0��@TC^���
�)gx��E�����&�?4%�����}b�1���C�ck���A�/���"��y=���lP9�9C��fY�{vO��2�� u\�B��
|D�b��p����cs�`FW�[����G�W1�k*��FK��� ��`��k�n1��ii��F�K��������[+\o������:�.|�j�f���5&`?�H�('2���+���[����r��d/2a���\����3��lv�X��>#����\��Frp������
��r�~�I�:���37��+��W��/��>���`�NE�X]���*vFt��:���j�k�C'5h������
�eC��%��l�
x7r���,4���.N��K�r��,�jW\R�S[
gJ�Li�����j��}�A�}��ye{���|A�i�tgz/�-�4�)��\��S�����LHg25l�����f�,�M�W�kS��U[�4L(�?BU|Z�)E9�,��h��K��Y���=��	�-�ao�����i��6��cb\�/����a�:~�1�T5-��>�������H�=E-���*
[�C�S�A{%7C�����C�7C�)����j7C�����-��!NP��d���(�@Dv3�
1����8O���y�t�k2p>*���K����+
`o����,yU��*M��g1_��C]��	��~N�v��Qy����SAF!&��D�Q��m���1�`�P��A�K1T�s�A��E-A6��~���W��)�Z\c����`K��!�p!t��lc3�f��A�O����}��=���3uNLS%��
��r
�����@��)@��o�WEP1���r
P���!F����7C��)P-)�r
TKG
������f��9��d��9�4/	fdN�5�8lN�5�>lN�5�9lN�F��~F�n���D�����j[U�p}b�8~��qEe4�"����i�!D�1���P���AF��"��A���N��!��	N���Z�P@�D�>Q:�2&<��ReD�q�)YHM�J0�)f���3��A�4o���-I0#��W57���M��[|j��������,H#��{��� �N<0���P��3��5JA��[�F6���!o.�������8��c%a��}`q�����@�O��������u6�4���@�O�x��f�Q��b<�����O�h'X���v������
�4R�(N��>0g'!jcFel���BR�F����,2�(c��4��
4��$p����}���
���F���Q/��Mf����o1���Wd�"�$C��7��Qt�6})���T���PF�)�@tkh��������4-��@�l~J�]�@�l~j`6_��)|��13��z���<#�I�3�6Y���<�'�	�0�[l��9Bx�|`qN?���T�Q2���4�Bf�M��h�������FY�*24X���'l�RO�C�c?������Bd��@�,
�X2�HKCR�@gih�����Y�c�d�14I5hT������F�M}�1� Pt����B:��k�S�����t�9����{���h�������V�7"�@��n����
G�����0[��
d�Z���<�(?��p�������'��lOHF��������!���]�g�
����%c�����;bT�Z��p��5<���6xQ��!���V�1��!~Ec���	T�{3��K���!�L�$yE�,��[�u����4��A�V��b�e���������&	h�U��hT�8���f�qW�F�=�hT�8������9��/���oy��'p��)'�|r��g��-=�����k`�W���������F�u`U�,��L�C�>kf<#��?Y����Ta����l�����O�%j�
�[���Q�%j�-�[���S�%j�M�[���U����o9����i��E7��MN-����<X���5���q��=��l}��� [��p;��W=���]��l}��� ���p;��=���}7m�2���j_*w����N���lSN.�-�@
7,
i ��??X�y;�{�0��q0��a4�v�q���h���0�ZI+ ��f��`�i�a���9�M�v�1!u��dLH����h`B�<�>;z�&h�y
w��;�I��`v��7m��o������K�!h{�~C��N������
1[��b���7�l���������o����MS6��]�����mY��	��������(���@F-�3��H�({�Ck�
1��1`�o���4�E�
1�W~~��e����?]?��*x��(���]���tw���o���
0F���[�E��C^�V�Q���k7��}�+�C}����j���s�;�Af4��t�j�,�wd�����rg���\y�y�Aw~NE�G�#��A'�*e�M�
0F
#������X�C���*b����`��k?�6�o������[!F���j�J������[!F�3���
��k7�����rw�-��sw@>�V�Q�.|E#�swV	<`E������bo��s�{N^`�Jo���/F���Fu#Z�
+[/�|��[!�E�P��[!FF����+;��j�1.��:�\�u��e�	�����V�1z�m�F�;�����t�%`���^���*����0^��FE��hB�"����	`\��p&E�zQ��a�U]��F��nc$��uP��[�����
�e�k����l���/jIw�f���z*�
/F���������y�^`S+���`�P�1wl�;�V�Q�&��;^�V��l����n��6�������?J�>�v�B��Q*�,�`�
&�����A�2&�(��
��A���px`}�!H�6,v#����!��,�
1FC���[Fu�����B��^�Am���q[��i���m���3��s����TqE�����$��&��r�d[�$�QN�lS�2�M��EI �%Y���}y�3��/��o���%���4������
��y��� ����}�l��3N�jH0�t��|�3N���H0�t�l7���L���@F��d%�$�Qa(�Y��04���Y��$�2���b������m
NX��w��dE�$�Q;�d[.$�Q{�d��I �v����H ����N�5�Xn5�\�{��}?����	d�F��
�8��*a#���H��u$�q��fW���Fq$��"M���~@������^G�H���Z<t	
���c@�����Z<v�=Q-3����g��r~n^�RE�4�QW��Tq
f��cH�H�����,�*������,t���-��l�c�Ue[���v��3��+���3�W��/�`��J�9��0�|%����~�}i�z�VK.���U��R`�n�z;��>�`W��Av��~;����D^�3����8��;o�Z�[U����W�g}`��Wd���P�����U�r�Q��r���F��Y{L"�(g������pw���b?}i��X�U	e��ru��D�KqK,�/��� j\�Y�<j\���6����@�5M$B������?�������S�����6m�;�����������'F�����z���F����Z���(p`��C���_����A���_��4D����� ��sI���!]�V�(m�����FichW�j�6�d�X�6$����-�hP���k�B������hP�����
j�6�!��w��T��FE���5.5D���5.5Dv�j\j���
j\j����!j�uc�J]��at+mtY7��+�!�H5��6�������)j�H5$�6!B��F�m"�8m\:�c���d�&D�q��xv2["��-�n4D���l�u�!j�6fK�
Q�����
j�6f{%j�H���8
j\���,
j\��9
j\���,
j\'���q�T������,NH�G�5*���&C���	�Z���FeqB��/o�kZ��������0�GX()]O�8%��\A���t}MhP�����	
j���m��Uxs%x1�T�(��|`��d�T�Q��d�5JY������F)k�yT�(e�������P����a�������s�L��D�Q���-��P��3%K��F)g����A�R��.�5VN�]q�X��`f�o�Qd�/�+iFvz�5�K�rp"�(%��N��F)iFvj���v���J����j������-��/JvR�5����]4�q^�n9A��Ec�
�8/[9������ng�|�� �a.F�o��d%�D�Q,��Q��Fm��d��D�Q,yJ��D�Q,�]���A���?���(��?av>�=�g��yS�����
5��QFU�K���aF���B�jm�Q+S�F57�r�v4�1=Hj�T"jLK����� P�R�4�`�H�~#3��9B�j�6n�P]J�hV8����8�NU�G���J��`#�����t�m����^��
�<[v�\5j����5j��u�%B�
��l�F�Zv�/��
C��M���N��J�2F5#� �2F/c�+���Q��n1L�����2f�Q]9K�T�����@�,"��
�9 �)���`�5�%D�q�6�����������/�u�����^Zo�\s�����������=Ve�=�Go�����^��x~D�=y�,�]�-���x���������/����.��_�����O_�US�;��������f_���m���M���UEo�����}��l�������?�C��������?��W^�W�
�m�e����N�������SA�C{,O������������{ Az�D���>���Fq(�����F�=��$��"�:�!L�\�$��|� ��,�P�T�d�b��y
�DA��n�9�HE�V/O5DZ����j�������ha������+(f*�����5TM���e��@��"PQ�u�iC�t�N�kF�IdE5CP�@%�1C����
Te�R����A���yE�5������T������T������k�s�V�"4'5T�<]�dObP�4��:�FES�����gG��-9������R��G�r���N#6�zN*s��B&:�DA4��A�T�'�T|yj�=
EI�,�#%"dI�%f��-��dh�ek�l��b����$b\3MhoCcg�Ve����"��c@Q%1������$F�ZO2
����`�7��}�/�T�$P��`��d�u!Mi�kE���(*��,�W�(��^���2����&zN������#���*�	f�%��3���,Rm(�+���jd�YqF+=E�z�����&ZgMAQ�;��B���f*w=�H�)�J��V+�z�|� ;�Hi�uYGFV�\N'������T,�&��3)������s�z.�<��,F�(
Y�[��ed&0����|>q���&�K�J���O��h��
Ty�t�JK�?Q��D�A�t/����-� �ej�<Q���a,���#�\g���J�w�%�t4A�
�&)��4�7�"�Z�A�P�s�&<�+D�b�,O�"���*5'�����5!h
��t��:��Q�0Qm���rWb��2^
4.'L2�d_��&)�&�0"�W�X�T�����������3��t���a�I�]!�s�<����q��J����
F2�mQ�����x���� (pE�==E������dDEN�*'QM ���D�U@FT�4��<�������E3im����o8)i:��E���:��E�*�t�_������*Mq���L�J[����hq��,�z��h���5�4M,����NLn)G���H����:]�(�\���#+�#_��������H���$4%��Se�o�D��+Ei�j�P�H�:�D��OSP�x�g�U+`��]�#
Ei�j�_H(G��
EI�Z}T�u�v&}�Y����/_f�2��QQ��(����6w+&
V�~�����S��^��E�[]��LY�[�nL���s-������lU�����6IDC�$K���N��/�������Ou[�A��n��[�H�i��((����@��W���Q��
yT8o�#s\��4�S���6���$�i��j#x�8���I�����Q/��BG�dS�QU��Cut��0�����JNEW��'���\R�+L!#+�B��� V���o�_����f��0U�aN{��s�T4�����!V�b���OGV����!_)7������n�����s\�*���	tgu�����]�S��0�r��rv%��j�."��A�-
'"N�2�����%Nu�kDD��.FD4�������f����+���nx�8W�D��H��9A���"j��TD�T�����P5RFT�ses2_�����DDM'	�P"�K�5��$DMg/	���^���}0FT�fN����|${�^�$DMU����2���TDMU������5U���h��0�D���u[Btd�U�=�@F6����td#���\�Xd]���l"���LN%��DH�:��z����^���@�n&���H�5���8�S��
Yi&��&��J3YW���b��~BH'[2��L�t�htd�)��2jtd�)�i�<YqJe�T|�(qq:	�^��?DD��k"��Y�u��TD��*G����7�5A�"*��X�����?�
�'9��bA�F�z��X����%Yqu�w��@6���
YqB��>ZUd�uW��]Dd�u�������F��"#+��������)�G�dd���k��
U����d�H{�����%���OFV�����.Yq&G��YqJE�<.#�(Ot�R��UyF�k���3Jw����<��Dd������p�.�#U^��n���GGV�a�td���dd��+��#+.��T��LU^nK�T��!*N�TwJ���8�R}N���8�R}�����t������X�8z��j=.
Q��|���DE4��^TD#��6��!KD�����'R�
Ti�JI���"*O$m�FCT�H������DRu�p9�h�D
��$��@���@�����������|����T�tG;��Q���"JD5���h$�?*��DtR��?��W���i��{���������-�OT���
�� ������S3$�<�g*(H�xx�R�����sq����0���s�% i*]���% �����)n\eTg�y��-IS��4�-I�l�}[>���	���u�?S�R��t��6'p
��� i(p
�j�������r>�J.��<*�,�s����?�N.���U���
��e9��diL��Q��8�;�Z���$�8
HR����r.�����\�e�\\���Y���r93k@���:\�i+N��9m�i@�J�$�T��RzY.gf
H..���������\.�1 ��,M��qf�-?(�y
U�>�;��K@�T�$M�K@�5���2o��j������ I�� I�� I�h[�h����-IS��4-I�h�u�4��b{��F�9��50
QC�5_���u�h�^A���
QJ���E&V�db5!J&V����F������6!�[�M[����]V]Z��J�����I��J��("�:�[���J{N�$DM�LB�T�$Db��b�9*q�N8]^6'f��b&!j*f�x1��_��b����[/g"�fr&"j&g"����R�^�*�Y]^�.�Y]&!j��$Du2����KS�{��}U�&�o��~��OI�+�^
Q������!"*���W�� T2���n� �*�}��%�*�5?E9�J^�]��R�(�o��5�DdM�&YS�ID��+��U�\���?~����2�g�J��3��OD�T�Dd��m�	�S����hZ���_�?Sn@*o�t��qvw����/Y�]^"��E6d�/T]D��U��-@���^A�����S���l!�W�-D���q������v��x������,��j�.�r��^C�K�\3�W���f���d��Y6#Kh�����x
�R���,�x
�R�����f���d��Y6${
�.N���l����5�A���b�L�(�oIU��#�<Y�<Y�<Y�,�|�3V�
%��G��ND�T����j;Y��*���������s�����5�r"��ZND'j�]q�X��Th2EQ #�t3��,ENE�P�Td
ENE!r���X��vF�WG]���R�55�DdM�9Y��_^��2���
��#[�&"k��DdMU��,���X��J���QVF(�B;�����5��!"kZ�CD����J�R���ZB��re��������R����~�(n���k�)�@�i���-%"kjK����R"�8[�PP�;E��S�YJB��~�5��$DMm'�L���+�*�M�|e
���x�����'��+�l��/�I�)�\m����d��xi���������f_���m���M���UEo�����}��y��AV�����1������~>����u����>�������O���)���s���q]4����b�VmU6��j��J�X����xl0�}�n.���
/My���u�.�/����[��`�������X>���kk�}.�c�eT�u�?�'�'�����^�q�Po��55���K������[�_W{���z��������������m'z�3��x�oN�=��������wl����c�{�����hKP~��?+�L0��0�s�������C�4�m3<<��	h�JT&�]���>B���_0��{6��M��l�����o����?���o���������(XA��?�������X�P�7���fn����7f4���,��5��.����5��Y0Q��/GJ�m�����y������\4���m��{xi������?gP3U8rUaS��)����+�/\�bhKo���5o_��N)���;Ej��z����^�����H�m��4���Q����-��������LV�{�W0�e����zToS�5W�!�h��_�F�����~5dd�~�5����fo���\l�{�wuo8���U��'�q�+��]��~�-B������<�����T��3x�����G�E������6E��bx�+�5�'��y�c��"�([-@���L���eB�3!i��l	B>���f�+)�D(����LG��.@������4�0^��b28��3"�I���.t�@`����?5C�d}�Y�'C�UR��jgCC*k"%��I���	F(_�8\5	����u0�
�+��}B@��	�.B��-�"BRLW9�H����F)HIs�9����f@W�����F�hC�z�4GZ�0�����"�D	���k�������_���W~8�Y���f+��{(��e��n�a��
[W�[t����8�,gi"����hu����5|�`���=_a������u���"�c���V�O��G_6����r�����p��m��m�����+/��g�S��-[�{�������d?�{]G������G}�H|�y�U�j[��G��,����w��b����w��6u�Rn�6��e
�gt�:<���/�~5����%�9{P�c��[��G��?v��3��='�R��{iZ��
���X�<u`��������[���������^�M�~�:�s,��#?������.��)���C����j���"��U���Xw��kxh�����~������A=>�x���gW$������D�`E
-�$:�����
���2�EHH2(���;��EW
4�%^�����f�u�������h�J�
�����e�i�������,����4�zBZD[aR��@�
E�p�� ��[^�/6�������������H��o�N����w.-&Xg����t�j�#@j1����������������[�g��-�Zl~_KH�o����7�������j�,��b��ZBZh~�,��!�������g��
�Zf~_QHK�o�+��$���;o0�e~��2���������I��o(
���X�aTn���q$1Ho�UN�O�w^]o!~�[��2z{E!-��
RW�K�*#7y�w�`~��,6�eRK���	i��
�r��]��w���9��`�����v:�t���#����<b�r-�)A<���<=y����|8���;�IBt ~�������4`��(A���c������8����U�(��L�s�1l��)������o�r
(cPZf	%Sb����a�Oy-�O��R�����6��PjS|x������=�����������xm��2��mW_��+0�m��ru�g���i�������-�Nh*�a��'D��(L�zL*aL6���o���wl��*�Y`X@:4�����D��:�\er���|jGEK��a�j�aZ�/���x����H+�7���d��~�"-w�����D��8������'g��F��0F�2�Hgr�K��`:/#@Z��`������`=�s�����8s=->z�^d���"�h)���RIEL>��r>d� +��
b�J��s�md�&�C�������e���.�5;?L3�x_���;�>=my1S<4<Fz��s��`��zB�	�7�� F���&d`n�����37�d_���q�%@NdF���5Q�@����vB�sM��	4I`RP�I@J�����$�d���,�W )��{A���4��>$��I?Wqf\���s����D`�l6� )������+XV��=�2r��"0d&  ����*��s9���k��l�e�hL[i*��|�C
L��1)��q��7���{�/�_��YeP����E��5@�kt���E�3���ai�)��wN)IR��~�
/<��Q�����,��RH�}�����|�:�����%W�&QAJ6�Ifc�@���L�]����/�w�������W���/�����v
C
��|��;-����{�U��q�5����|.�U��{Y��=����/<���w5��n���E[�>?o�o����I��u
@�WM���Cql��>Y���o��T�y�����{�����?z}�nO�w;�_��	���<���}�e�"�!(�3����+�/����+c���a/�n�~�����X��x���b�c�/m�c0�����N����x��v�=��Wn6������I?�=���y)���`���*F�p�V]���-��0��
��[\��6���B��-����?� O]s>�*g��[_.X����l����_����|2�E��]��bwj2\4�����pN5�"b���)h�A���p��3�)�� �������s'���H)��,���*�5�s%�9��r��>���U.��Q��&I�wuT���Z'�{i��e�sw�{c�F#�\M���v���}����v��+������O��Za9�U�j��]�\����;���0���K��J[�90��x��4�p�D�=�T���9�����Bo������3����2s�H��?��z����������6�H2�g����E#��w��/��P�-[��X��i���[�vK����gS���%%[���tW�s�����
����VM{Zz����y����z�mK�oVG�������=���Uo�Z����}��PiX��>����/���K��������KG���4�����"�����l�����[�Gul�o����~,�M�y�o6��M_��e���S�{%{���L|�?�l��_���/=�BD�[s���7]����=]j�E9gF�����<
{����S��/�O�:�g���a0���zxi%D��(dD���F���
`2ix��0������TFDJ�
��t3oS>l>yM�����l�^��6%�������X�
��������W�|��c_�?��:�OO��k}�o:iw��0�������E#�����\>�����5�(h��6<��P��������6IdU�
dM;�C�0�_�9����;�xZws���������C�K����:��ve��ip�����ad��m?D3>`��?�^������p��}�������^7���'�oR�VhS6���4��|`#��0�����%���5h�w����P��O����?
�����}l�����o����c3e�=<,���w������E������NM������v{/�������/���n;
�_Sp�Fs�����&<�0���w������+��uL������g�����^�������u���G��O��U��7g�<�(������Ql�G:>�u[�������^����</N_�fV�n���'R���_����|����cQ��������?|���������|��ix�����rp|��5�~���{����2���-_i|lNC���N]��p���G�]����'I8 Xo&���?�O3�p���I������I8y�vN�i�j&?�fa0�I���I�a����'����/�����lt���9l��*��a�_�e��!���q<�O��j������M}���<�=�>b-����������m]lJ�\tl�o�_��/�������I�Z����K�u�,�p�V���k��k3*�D��&\�Uv�B��N�:���Di����V�$>r��
��f�\��A���0YW��a?g�`��jg]�OH��<�c��'�����������iAm��=� X)����[�hF����r/�c����!�������Dfk��\��������cPf3������x���9�L'�������������������wZ-r�$������rH�]�o��a�#�s.���aw�������cx�^wu6����S�<s�/���q����{��#�y�*��+��8+�a=�rF]��=;�����
D�2������1_z�����L�{��X|����� HS��c������"���U�F(���9@�����7G���{� �����f���g������[��O+^����KP9����C��PV�{%��~������7����Z����Lh����N�K��;G6�,�*�~ ����2c�7�����U�����*������
�9����&��f�(�
��~������YV�����B�o���D�9�cy�
�z�BSK��:�y�#�{S�4���9�{1���������2�T<����	��&BH�#<J���&��&�qP��a�n���#�����'����8��E��b����hZ��E3/����
��P�2���BW�]�����x��-�xQ��{yb��Vm������e�|a��T����L���e�o>tM�6u�������G��������>��S�������v�-����v�����a���������b8��!v��l��.m��z,�-v`���v���%����%�S��s�p�e���b?�dv���B���d(�8W�������O�w������p�l~��!�/��,$�C�q����SFGX[����i&�/��X�U����A�{>������(v�OT��K�o<�����E�^��r�&�����	��?�v��h�.b?�kfD�W9Z�������i*l:}	��,A�(^�>^�u/����bU���J{d�N�j(���!\�zF�i�����2���&��0����������y�2~9��5��~9�z��\D��8�2~��@,��w
^�L���`
(�9P�pV��:�4���[Ld��"`����C���c	�QD��+�2�3T)^��z_��{FN�Bi��	� E� u���XO�S��"�
R(����|P�7��d�W�H6���m(�ny�����-�T/��s~B�(��jQ�:���+�����
q4z�����'k�._�^/��t��X�z[��N�rhc"T��3����q.�J�������#V��JN!�8`Fo�p
1%�=n����z��P1�j�N;h�Az���
k�e�$��4��Y��<���lu�Q��1���^
�����t�m`��<��� ���<��/���X���>�� ��{50$�WK���dN���a��eE�y},������ea�lsT�9
S5IF4})��j��t`Uo��Q��X�vo��1Hz{UB*��a�����FJ�ny�t����pK[���G�.���U�<��'j����/��^����/�a��!�f^/�s�`���L*2j��$^�����7�fw;����������������j��� [<�����P��]r�����o����^���>z��W�B�k��X�����a<
����r����(`��V	��"3����-��D�l�*K���^��(�v�|�� ��h�AW,%��&���*�
������� �A=Q )�*���B�<	@S�~���	&�d�Z:��i�*J�$���d��Q��
��)���q@�D��(�<z�p��l�B��=e��G��.�QS��_�X��+u@cU��
|%�<�I��L?��y���XSr��QP��>Q]�Z�����c+B��@Z�/�m�Ur�,�Vp�o�S��u�fOOG����~�Wn���A�`��(�3�qj����
���o������UsV���HW}��;��kIg�s��
&��L?�@�
�
�"1x����H��2d�������	�����]��w��Ys��I�5�������
$�h=2J������)���%���:���O�a~����Q\�E0^^��t�N���9��2o����������o����0
�x����}3�EG��?/�HFG?�N����������������R���&D�.�;-Zx���w_�����u����%���}��)�������y����y^�\?z
��W�n�=��]{��c_.�H
����������/=������y��{��;t�Vy;7>'�������q�����_����Y���f�y7����x���������3��4x�����y?���������zz���O�����#�Aa����� $<gsY�g�_�/���)������~x����K%S��w~����_����T�lH�
��K��=��^�[:�m���}�!�hX�%�K-��m��u�[��2�OTL�S>KF����H����
��	��I�����l��LW��$a7\I���.n�;�T��T�(����W42�C�\0�����'��	�]|o��'.|�����e}��\4F<MO��q��,Ba������|R*���y+.�Sgc.��S��J>�C/X�~btl��y�-���[�x���'
�*+��b[�#��R\RC����L�l~��@$�t�T�����c=�X��Ye��P`�#se=Z��a�r������u�o���>�r���
_1a����9c��G�,*_9���+/sc_�o<�t�/�Rp��8�r@�\J�f��7��!���y�����+�NW��4��������]J�������^��F�oy>U7��2Y��/����{@jbjk�RF�x�����L��x ���\�{�������@�c�@�����z�KaI0����3<����j�����Wj�5eB�qtLp���H�;���t���XL�1�������������V,��=3�����n���;E��O���P���E�V"{@2���8�m��JF�75��������'��8!�"���W�%�L���6�
������X[�&����-)���%�
�Q�|��
�JT������Uo��\��=�d���Q��T�Gl'��d+y!d���������i.��)�6�Y�������p��{��D�t)��*���%����"���Isv�?����?�/�v
e��|q���{W�,�p7��v��b>�;a��,G��FV��79�A�����p���M�cT6P���(w�#�b��_yt�T�t9���P,Y�S�g�OELl�����c1�����g�����t�x��P^GR�c����)X���I[_o����N�N��.�4�Ie�
��}��-&XBs��>���2>L���x��t.���������m\8E
G:
q������a������S~
D�(�N+��&��`wK{���&d��-��N�)�hqO-xFX.��y:�������P7UwS�4O�(ga6��w�q[���V��3R�:��|�:�z�0c��pf��!g�8�4����jNr�~�|Q������_����!��E5��;SX��e��S%k���
o�����%����'�����{{1���O���������B!��4@��gT��k���+7�}d~�S5G��HF�H���<�X~���f�^.���%zW$�q9�"7����P�e�����f$1wD����\7���M�3?d�����D��4f0rC�������P,���y!+Nbi��l��P,���Kx�M���������?��	��b��i����W*V�J��|���*KV�Z/
�d�w8?���~������c7�1���H���(d�(!�(��N��(;��)�h��c)&)�����J�I��#���wo��$�J
I�BzNH��x���p��6L�WR������!�����BQ�Qe��nDqjRi������E�Ky�e��0#��.�b(rT���1o8���A<F`�G�D�2�)�Gz1
W���u�V^�;�[���k�t��w�������b�����S�fU�e����	4�0�����Q����:l������� '
P�1���w�TM[��LA��}Y���w��!�W�q���@h�.��	"d�Y��k���\7;�f��o>�7��T:����&l��V�p�����X�?�G�nqFR������J������(�j��J�+�"�]����(4��Y�"�~�)�@�D,/���+��������LG����Z)y��0%����IL��j :�p��bL��-\_���`$�%��m$^�uu��p@�I�Pf��z<`.��6���G���)��S��qR�hg`B lS(��8j����XX]/����B IE��k��8Td����`D�!S��C/;	MD��8�I�tk�h'P T����t- ��t_�`d
,"((&]��.�;��+��E�J��������5�������J��@�`�t	�[�5�|&��!]�GT�z��l��P2�t
�E��Z1r���P+��zd�K�HV��GP�N�G�54�dhP�^SG�x�eM�[��j6�]��
�x<@����/�������(�m0Ym�P�b
h�	�	�E ��f�*&����jj�����X�[��(�DM���q�'j 	�x`m$%������sH1��b��8!(��@%�6+I��g�)��t��$�ID���]�A�C���? �MD�5���"K���X3��1��L%N�K���a�1�R�I�&�L9�D��'�>��Ck���X"�.'a���E���r�\�)tN��o"f ��Z�-�C3k���}"���,�}Gk��g*���ARK�����[ ���w���R�IQ[�S(�w�N"&����F��R[�
E��~�I���:��[���|�:E���S�O�p����=�W��[:�a���~�x���C���+�rg�5��J��������?�e�����z�O��r,y��e��.�z����,����@mr��Db2b���1�-4g�~]<2�M9�r���'���� �f�)g�T4p`�d�2h$|�����D���o��42�h��+�<�p��A:�	
����N����P�{�3b�:I��T��<�!���m]��F��?B`r�1��v��&b��|;�Mh7�&�8������&`��nY���ZV����M�U�HA��B�)�^~&x��7Fhg����������M��������������`�;A�����h���M\c#N�x�)�@x�[�,�:��������/���i�z�Z�����A�l1h���D�����s`4G(G=P$v� p�Dh:��1�o���Z
�_+T>����~�2��E8��DD}~�N$�����d%�mj��q��K��grb����3�y�R,K1e�V���q}Mz1N�����Ro;�;���&�':WX������X�7�&�'��*g�8���B����D(#52F���B9�=UkN.j}W�+��MRd���A9��D���4LBu��a��V�4H"����R��H�i61O�L5��H��61R�|!�T~6��]"�[L0Z����Z��h�_���*��K
p;,�*b���DE"t�����Z�u��En"��D�
����T��+TR�@�
$A��G2*�X5�X�iV*	BXX��.[SlB'�z/T�S2H�����\��"Vh�cX�e�"K=oz���FUoT��%r]n�����2j�r-�Vx�f�<��-}lk�,ybe��� `������5���O�A6��0d:��(_�b��=��h(�_����sa���Sdg��;�<Ig{9{��)T�a#}��������_B]
���%��_��+pF)
�����(Y�x�P��:�i�m�{E�~.�X>���z��#�T����.���)��w2�/��������tu��Y���`��R�8<��>P����xS3��E�F�����
����<���*`�I`��I����D���b����|����@���J~j���iJ���S@E�qq���$�������=\������MZq1*�}N�EVC
�.L��v�&eP�(B?����_ ��u�E�zg�1
�R�S��&eP�9!k��������e�U���,�b���e�L�C����������7��t;��M��d�0���u���X�I�;NI�V����n��g �$o�y�]����Q���p�
��l_��NP��-�L�tD�g�=�K]R���,A������1J���%��K��	
t�N�������r
��3J����-��f�\��6�������cA���PR�la&c�w!.��)t�"Ng�4�26���H��X&m�8\qH2�����s9" �h��9Li'����%��,�	�C6� ������b���D8v�2��#&J�SV�=1���H8m����ah���Z�
Q#'�X�e�A;B
#��DFp��e��]��3�)���0����a�2B`7�,�3B���PX!)EhX�CW�@F(����1pQv�F�8�l���)�P*����.g��p�F��P�-���+�I��t4q��s7">���<u`)�P�Ja�dw7">����lN1�@%��{7">��O���+K�R��<B+��	��G���a#���������5�A���X���O<�r<f�����7uy���/<�P���+�c����{���SY���X�����l����������_��/��t��Z5N���x�����!|r�gE*���C�=�4-C�����O2���<<9�3@.��!�Qt���*&�z���L�z��U�!��qX�(,����2�3����Q��������)u�M��r�H�����_�.c��`�*��Q�f��|�O����1�*����1����BYC\2� �X�U��_��y���(� �z��G�k�y��E��Rl���i��Cp��C�G�����T���L@��Bb1��b�����Y��Nc1h��l]����
���R��'4q����.�)g����K�[=.�K����l����������n���O9R�3���$7i���w�{�r�4W�q#v��YSq+@�4w���F(E�=B��j�S�pY�L�0���:W�^mv[cC��=�L5�}�_vj�8������,Y��@TF)�'���)�d�?}�:�cD%����uC�~�5�����C�\����`������WJ�������;��m��iR��~��OPl���)�)*Q)�)OKvdekz���_�6�����f+_d��d<�X�%%kYZ��]y8�|U�y��4����y��mY@�&��6t�8+�i���O�M� {�wVg6j�c����������I�0��m�8L�T�Z�A(��C���b��Gf��a��}�Pv,[�e3��!I6$�p+}������������e�<p3R��x����|��ecXl�'�,���2�)����g�:��#�].��T��5Ti��A� �:�������!Z]��]�2)�rn������
�
iK��Lj�x���H:���U�,�E�����:��wZ�Y�+��e��^�����X�Y�-T:�3]ix�- �9�+���8i�t&�5i/��)H�=}.��eR�u�����6��A{i�n���x�������PK�5d���6���c��+P'�$[�������li�
�����5�����N.ri���������������_��K�rsa�j�rmy���\j���J�nsal�nmY��N.��z����|Eu0��k9���-�^�t��sa���t���+r�:���y�W�����z��5_��qP�'
����!�W��C��8D�����3�$W2FRL����{C-O#���kt�!���Y&I�GL�.s�����i����~�RKi'4`���*�0`{�N��,�8b�^����RZ_�&�AAl�#�O5�\h��t7�Rb�+������C g}���l`�;�����\�
�a��z_���PlG���W�m�{Y���}�r��������Um�C�j�*�2?�����:��-��k�r������d
.1Js��pM'�Iu�h.�3!	���a>��l�2��a%��d{����R�u�������
��D�~�eQ#!+�\���	R[-�*G�����Z>Q|rf�����c|��*6��Fm��U$U�����aVOV���?x�Y��B����,i�Y`p7.���c����@f���.� fG�@�{t�`��G&��s�����`���6j�i�$�"�=���I��0cWq��Y�O��D�e4D����
�F��Y��k��1aF|j������\]D��`/���K�1sX|��Cq��z���QZ�a��d�/�tc�#dE�����7������Y�)a�#��w�J�������>�g����N�.�[������8&5y)�.���F�E���)�U�B��E���p:���RKJ�n�O��2�����vc��K��� ��,�w����OPZ�ZA�U:`��/��0��L7�r��J��:���p��pd�"�I�q��E��:��Z����r12�x$���7���=��j S9=��"WwG-��\�t$�c�4��9�~�Y��7�	��u�
F���Y���Rd4�P;i������Fn����S����HU�H��v�H��y�]1�I��o�����K'[8o�����L]�5�@��J:�]��OU����{a����+��3M����o ���M;ZW�eS����a ���v�����ySWl�:�h��fx=�$kS���G�M��E��~p��g4P�g����	%�l{���z�b[���$0���L���8��;�p	,#��h�����1��(.�k�X�B<qNh�c�����;�8�^���=��R�.���<"�$���s<S�B�*��tK�����qA=�N*0l�G�N��D_���-�t�0`h��y�'��N���`�^4v@r!�X�
��b�����C�`�"EJ��	���}�`�#�*�.�x$]N���C�_�&��a�uQ@�[i�7$�R^�$h�p@up��u 2���QN"���H/v�P��=Zp^��x'��/������:^p��C�`-=0^�������Y	(^����9��S�`�"/�`��E�B�/���Rg��G�x!t�l������0i����|C��t��I���BH/���!/0��������{.�?4���-����Sq���b:8��w�tV�����t0C:�����<�Hb����A	�H�T)�@�Cizc���P�)�ip*{��=��~���J�F��OX��D�-�(��MQ��)oS3>�D)�m�h��A�@���U�3 �L^��q8!�$��w�����x�������0$�*n������\W��+�,W��O����ct�H=-��"���~(~B9��w4R~~���@X�R�{�'e���[h>�W�c!��\��x><�}p���������	!�_�F��|��n^��D�����"���=���]$.�4���������E����e���S �J?cN��9������Z7����R&u���t��} �J�A�	S��%dZ?��7��
���1�����jK�e�Df(m
MF��h?�fd�<�.t,��pA��7���P�kM���:���v�������@���a�������/�G3�d�;I+���P��9����]�i\����Ssf���;����	yw)�?�I��C"�n�;���0��;�_]��5��_�vm�L�:u�}�!�.��\�'��Q��{jw��x��M@c����$ ��)����"�<	C�8���iW�bz	��=����GP0v�������m=n�Z0@�q��48�Bg �{������z?eG���;��[
T\���P�
���u�9������!�@���\*�?Q���c!������i��'��tFy
^A�����;h�~�����)3����mn	]E.7�<��
���c�^Y�/�T/4.��M��+�����V�=z��d��k4���^��k�X%(�Se�{lt���
���o��y�V�w����a:�B���kmz��(����j/����:J'�m3Z��V|#V
:������/�Dn������W��1��_:��(�Gq�����X��.�k�.D-[?#f�#L�Z�c��	��l�d��_R2��SP�����fF�9c����
3"�R���~HI��@`�?�Y�O5�I+9���|�b��8W����<S�Nf��R��)N�1(�_��d~F���C�	��p�S����2�Fm#Bt6"Yy(��{����;�2rbE���$��t���k�H6���|�
Ccv�#��d;�#$~���6<G@�v�x��I�M���~]2�h��%�Oug����X*�9#�a�(����,�w`��B������E#R�Dw��~ 
���5N�b�5r1(���k������������q��nX�B�_�Q��j&�����g�5��
�T���a�d�����
�T�@;�����h��U\��x��?x���y�>(l���dnS����>�f�t�
�WJ�������m`RL��P�����r��ob�dS���3m�4�`�P�7���CP������=T�9
G��c�#_I��i�Q�<�7"���,�U�a�[���P�5�)�r1TLK�Mj�]
���������:�1et���S���
E�6,@��:"�
8x-����<@pr88�����9���������V������&���=���\[d��8ac8"(b��+���7 �I���3:����d7�9"�,.�[o����~6�����@�JV:�|��9MxN	���C��9����p'5:Y�Jt
���(.Q���CB8�Pz�D|��_t8��B����tc��+�R��PmM�]�����c�L"T��.�k(c���^�����C��3���O~n4�J����u��G���K%T���G�^\�pNR�~��eS0�#�����QId�+p�B��w_o��F���uR+�f�lAx�<]�y��({-$��&%t����]��'H���U�,��{V��I��	�����$��r�Qn+����x9w8��n� ��P����.Svc��l)��&���Y�������T�a��"h
U��=T0����C�J����&�;m�
Q�?L�]st��Z� @�Ta�+�oF�BOr���[��.�'�?��W���������r,��"��A�GyP��@�u�+��fst�c�����G��=�6�O<�G��C�{&���@�;1Iy6 �ma�8�cH�-���~
��Z�s��R���c���U?{���TSq����k�9���}_5%o�q�:|h2����N�@��/��O�=T-'�e"������rS
E�b���>:�=t&S�M�O<�
[.��3~�5���|0v`7su��x�����5��Z_8��t�����cH��e�\��/�P.�\:iF����]�7�4�������dwK$�8���ci���V�-�������"QUp�E��]����7/d<&�$�gv=R�2�������S�_�����C���?_9w�Jf�q�|��Y�Y��e��t)n��3O���D�n��`�WAG�4A�PVh�VxQ�[�-��\�����Z��cj/��|����2�}V<�R4�<�������w��m��$�������Bf�,>7�U#n���{Em����"�}�������n��������#������G�����tf�=g$s���M��0j�M�`�QjY'_3�r��Gm���1�x�@��c���o���t��-�`��ww�#7F��$�� d5>��
�"V1&H-�� M��|������j�nHr��d��c@y<�g�{$�r0o�#�;����V�u�GWrC�5xt��Y����Yk�V�n�;���V=�X�����n�����u}���kx���8tK�����N��3<+���to����h���0��!��XQ3�H$.��[����w��Rh�*B��8�Cjp����k�I����!$2r���4���:��r�q7m��05��*_�+�b����A�G�+�����.�](����K�����T��D�]k�[�����k����/.;�O����?B��p��V������E^V$�wU���0R��i�����0~���?���������[��o��y�������zc�f������������8���c,x�^�IzA	��]�?���9�n�>���$q�$������������Gp	���t�Sr9��t�~:�M0S�KR��d����z��t����e�����2<M���������S��������������wXvg����guM�d5E���
O�=��I�RLF��>qoc$G��W(a����roO�@n�x����p����E��w�$�QH3��EX�Y�E�h����S��,_V�C�.B?������n�`����`^�\Q�����h�����L��������� Z'H8�`���g~�2�Fp�lE(8tj���	`c��`Y�$�P�����2je������Ix��d��mW�i/;o� .sM��ew�4��P�~A��.W�`!�mt9$��!F���q��� 
.���D�	F��C�fl�8��Y�������M���\M
x�j2NI��������@\������J����~�/a<<M
�3r�d�Nh����aA�V����B�� M��(�c��D��`���5�F9��i��:rl������K��6����-`����U��2#�zJ��:q�8l�.�B�tb9O�e>Dnp!qz|�lE�����`�V$$n������p6j72�I�	g���L���������
I837$�c�{�p�hO2�q�'����j���p�n[2�w�-	�wz��n+��F�����"0��V��Q�	��Q�U��N�(�s+�s$�S0����1��C�C��X��=k��H����A|OH�<N���������"!���NW�c:�ZY��.�C��;����*�s(��#$Q����'FD�k5M��sy���9�u-B��n/����@��(�.��=j��=������:k����S5�nV�U��E��5XsC���^s�|{���<�}^�8�RM�;j��R��F��50�EW;V�k|@mw'V%��57��I�\��uD���V�C�!���F���7Ca"�
^B���&A�D��o �5N�����nA!���������Tg<[C���r��cs��l�C��x�����n�D���� �7�}g�@�`�^����MW��m��!^-z��~"l���5������#Pq�����v�����t�2���l����l��9�Y�����u L�ebf+^*\��.�
lx�n�j�s�Z�
�V�	��l�
����x��F����by������#��cd��F������6wD��u����!�tFni��h���
oF�g��z��)��(���"��������rG������
+��@"���c��9�3n{��bCb�{��7F�P�0�a����
����<v�,�\���b�����[���$n��o����u08v���(�������4"�m���zCB;5�N���al1��0�~�
N�)5�q�]��e����8���p�AA�LH}gV��Q���_��Z>�?���H^D�c�3c����s�Q��?K`f��L��fpl�|��P3a�����<�s�� Z^�c���N�h�DWF����c����U"�ywDIg�1�k�\Pv���)Q���)1��}p
��]l���6(l�����|a��$	M��uy��m�����u��
�Wtu����-�B�@D�O=��G���o^����}&��]v8��p1����s�����\�R����e������Q��k���_��Y��W��	���?�,X�ST���E"�����������[��H���a������3�52��)�
30���������.�e��=v�487� ���(�Y��.�`�L���Ly�9:�9�G���GiW��2p9��aa`���~$��!��?��������E@�?��;P��8gy���iA�B�K$��/gQ���W�W�G�j����TzVVv�F���\8%?Bwlkj��?�1@K�A��oI`�1�
��n!��
��.Ur�d����(X�vC�����F[�F����0L{.��R�`���	IY�5�4�6��p�h�X���b<������������C�A�? '�D�u����8���N�L"'JD�s2���_8���l��z"�����&p���XG��%�����q��D��1�lr
O�=�� �?&�x�h�H����'���F���K���X^ �I�L��h�W���4����1@���i�uH`��7B�F��r@+	�i�#9���F0��K$K��BG"��H�����b����:���?�`}��7��;�1�D�$������C�����������F4��;h�p�����e�v�$��%�������K
�j�)	7��#�nOm?�u�Y{�y!���}��"�����#[�d�n1�\��#�T�����wY����G�����?8�_cV�%a�Z.�pI
�vw9Zn�����fI*:�6w9Z.����V�2`�
�C����1�`A,I���V�.�C�`�
2\�r����1���h�ZF��vLzr���DK�������eH��Z|/�
��?��*XO��l",�I����D��FX��;�$,�O��b��I8����^�	K��>X��z;q��a=��),%�l�j���w�&^�1�7���
em(q����?�	1�/o�I�'��W93{�T�E���D%-�R��R����]��P��:���g�5���@y�?���L��������N�YO"f(wj�\��Td/�C���������f��ctvM�TB����O���j�����������s�S�������C����c���C|�>��(f��jF���U���}��TZ*���b�YJ�N��W���e�^(���������s��$��/����!���������X�JJ��
�q��B�����9�1������:�8e��h�j�`�.3h�j�d���[��B#�q��q?x����F:����v�y'���|F����k.zM�%_��������x����|�^3c��r@�Jr�k�$��[��hM�����!
�HrBeQ?b�ym�b*��~C������#�H5q���1x����jN��7�4��M>��hF�Yt*.g�}��E��4%b��?��_B=G�1��GO��y��b�b3������k�}�Qa��\3�4!it�B���}$���HZ��b�q{�`�L�����k��7�����XfN���>zi�n��X��dr�����~�O(�m��a�{�<V �A��Nn����9'C�����o~����6�MS�6�t����/{nj&I�S��p������%��y���w=���y4Si!9�������y�f��+�3������g��������������hOQ������]���I>-�%�V#f{��Y����m� R-�T\'�V.H���H�zZI��Xi��X���U������nI\���{1��dN�����z�=z���y�>�"^;\X���a�����'��P��PnN0��r����^�z���,�W���]�;��	�m��"p2���ho���w�%���:��E�oH���mt���zD�������j�����C����7�G���Y�����e������1��
qbP����1���Zx#��m�;�a`�f���w���mCbau�;HN�S���=����-��W�.�'�j������������Z�lx�V�$��W�M&G�u��p�>�K����dG��t��K��5���f?�;W��C�^���pNu�u��v��K�����v���������)�1Ia]3��=���M�F�wW-7qz9r���(��z�Y�n���~[���GSCI�F/5K#Ek��f�`^.��P�8~�Y��'��#u��������2�����6�a1#6'�b��"�4
}
\d��]�i{0�'���.1K����%f�48�:�.w��$:���k|q[(+.���\_� ��orX`�
HHH�>�����|_��v�7�G��-���)�2
�		!�pYH��DU�h������
&�������p���B���[����v�f���'���|��<�%�v������GO�1k��?R~4M���ePny���j����Ax;�� O��V���7UJ�����_;����*Y^���{g<�p��M�������������zs;�oi
�;����"�5��\#`M5��������[��3�u�B��YP����[�>�q"p^�"7��F[�1G6#�D6��Yr���[;J�?�gpW���bK���~�q�8#x�+������g������v�$��������(�#l�E��?���,����s���������A<!�����k��s��o��K�=^R����t�;f��s����!{#~H�BF�|��W*��96iIa9�����
I�E!0�{�[����S�@�_��n�]���@z����R 7dkc�5bBo��������%�Q1[c�#��9p��Fd��
Q�Bn�y\�Zv�=���M�����D)��8����������(
'#������������.?TgdC��j��;��7:�I�hC�
�L:p�0�>6n������n����J.�:n��P��,����y�_���5p��R����k5Hg�t4L����#�G~����v'�{/E�6;'qZ��m�`�d/~I�w�9������� �g�"I��������@^����/���9���c��>���)wk���6����R0�����R ����9�hf]���-�p��`E?2+����A�|���w����`���|�.�p�>\��-f}(��U��D����t���/��PV��������!^�!9�"�v����L�0$ZB�8~G���$8I��$�����?tRXf���#$�uJ�������z�QJf������@H��h����d��2 ��"cs0�]p��)%��Fw��|�,^cx%f�b�J���HtMc$M��0`�����V���%����6>�G;�:C���e�Q����������duO����XtW#	���V1�������t$1��8u�#���g�0��C��"�?f�~+ds�*F����l�c���k�(�)W���3u,������ s�k��c;z���t����Y������D�X];����G��FJl�V�������w��4��]f�m����c�7l�h���'���9Nw��~p?4����0@�m3�l*g~���������`B���0���������|����{L�r�$��.�&����V�jbcp��*�(�:,	�%X��"���U:UO�=j��*���T�mE
�\Z�-W
������@~.��x�@�������Vq����Z ��f���Z�=GbT�du��&�R�������o�gD���p�<��AH������.��
e�0��@��F�%`(�}���~��0 V:Y��������%dF�6j������'+�n���nj�������l��Q�������[Wn	PS�h�}%�#�/|�b����<��]�T��<:H��`.5��/�3����r��I��p:JZ�i��r"�,5�N��,����6�G��HE���]��1�����;J�Dj���2����;�.�H�9s���/����XX1����0�2$gT�����g�}x�/^7$�����d+���}���\����Wgn�9pc�t1\Y`���B�X"[�X��q�
��}������:������
6f�z��*���]G,@��o�$��n�?�m?�� ,3�����J`k�RNzxi���������<p���}J�V�����2Iw��>�R����=}yz��%D_��G��`��Ode���{G�B ]-?I�}�����/���������������o�ZR�E��)3O�)�����`������O[_����?1��/dR����q�����I��^�rYKV��������s��J�XZ�����
�CR0-,l[���������9:3��J�����KGL�6x7�L^:�����07����l61��VPY�G�h�V$���
%�������P��	�K,�u�M��pL��f�\����5���<�nF��Z�Q���v8��t�c;t��.��Y�l�NW3A��M���I����l��������j�V���tQg��p�(����+���C��NIG�cE|R��b�,�
�Vc����8v�}[�k�m�k�
������<bWl���<�j�������������*d�����������>:s�?[���Z8LC����N���
�rm�n(J��Fk�����1�Z��2��E��|����6X��_[���Q��JIo��#�7��Q�7a����{�>��1�9���f������[�xl����j���C���h�v�D�CR�G��r���Y��i�D�P��607����<Zbf��AH�t����P������l�FUh�i�v2�m��v����V�Qk"�je�*o����a���6V�gCurX���v��j�3q7b7�P�[�������������n�����jdn�:Y�=�L�oe1�sj����%��e9E%���1i����8�4�n33���t�������Fl�eg#X�`Nv��%������M�1Z8X�f?U�`�$=Fx��a9���#�����@sju��WO����u���?h�>��lo��#hO���mY����t7f���M&��@u7e-��VS��?hJ��w7f������9�As���9��Q��v57�YwB}.�
�~��W�����jN]��I��M�Z���nv�&g4�����V��n��k�TgS���*���[� hM�`����*���s����u��W�b��m��o���+������P���A�v���n�\q��m��>F��^��7�.�A������xQ����{8=�?JO.�sq��2����o��h��W[�>G����mleJ�m��|-I��Z���'�=1���Lg�z���|��<����z�g�?����6����n���R.��b7�a��
vK���#���5G��#d��c��I�t�����h����/��J��������vl�6����3|��/B���yV��fZ�f��~��m��?�s�
��%�~���s��>��>��}�����{{����n�#�7�x�G����!R��m�To�4>V���m~T����O���"�{/~A�i!������2�G���T"��{���^�}�����g��������j)���O�J�[U{P�E���������T�H������u*�}���P-�T�2ae�'���X��@DGD�O|�\E��O"U8�n_5��7��Kv��|x�e�,�R��/y��7���9�����E�_��������{BlI�������q:	x�%)�1&��ct9h��OrCP����!ZrR_�It�@����"/^D�����H��kc?������<��!��},3���e*^����7��7_~�_������K�F��]��O�y�����y,3W���#1��v��I���+k)?����:��<Q�Q��[��g�������5�������r�i���|��8O���}Hu���c�FJQ����}vH���<�\7��wc���y?�������o��N��6�����`��e�~���8nVh~��}�'��z�N��{1n����S�LO��
m�=��9F*�1�I�)��U��������l����
*���
��rkHR���Q�3T��\��F��\7�8�JH����MF,���{�������|�4�����#�o �+��
y�$0.l0����b\���$B��l��@d���@)����1�cI���Z�s/��D2lF��c�7V,i��tK|�%���C�IZ��%���$X������K����$h���j���r���XS�������������Y�E��2
le�@�����[�r(@(A�(lG�7���>����50������4An�9��k�����|��U�HZY�vaY����l[?�s���\sH�e��x9��|�o8����,{r+�!'�*����YQ� �������c�H��h�-�$:SB|�^|kIoicH|#=���G(�������	<(=ca7Fzv;����V���xPz6�B6X���J�MB��aP7�\�*���9�9��q�N�+{�z��O��3���C':�r��|z5�O�j��TY�^��LP��#�)P�:7A(}�b
��M ��9��?����\0('��J0�k�U�b
Y��"Y"})��B�%�%���$�B�K�H�!���z�h�`��L_
f�d���� 70��5Z��O��ZyR����p�6�	������W���Js�VH���F	,�5Z!���&�' ���Ju�%���[r-`'��g�l�%
7�p%	W~�H} \|�h���"S4@l�)Q��9~�?V����i.�MJT+-9�X}R�����*s�F�\�� 9�������'n%�K�=�q�Tgj4���.g2*I�����D���������J[�B4���w
{��A�����9���zB��//�I�x)_�d��C�,��f��8(I#��\B�����a+���t�~gw�L��n���0�q4�w�Ft������9��w+�p�	\4�ol.�������]���"W��3o6��zs��7k_0�,��D{���A,{�/�?��+��s,]�W�[ ��V����bX��3K8�����m�D��b���~m�n�	��r�c~=��*���"Rp���3^QM T[i0��KO��4�i��tT��s��?���0����|Y��QH	��o�:\wT������v2�?q�*�3��7e�F|j21�������b0�����?%�������8~�BO��8��8B��fX|j���"��B����P�RQ���q������C:x7�����]���`n��+�w���@a��9:T9����}��^7MB�����[����������jx����Z����c���C|�>L��&Ehu��2�
�1+����"Ciu������/5�6L<]l�!����.���B�m�������8j��U��!I�s��
�h�������y(W��(m|Ru*������)�gK�w#��X��R#t���&��-��[h��^����E������ON/�xL���|y��^��s��a9��y��p?n��'�3�)��be��6��u_����g��B���"E�!�!��J/18M��C7��e�N�N������_��,4�5���t{zp����
E���|W��t
����2��8���eJ��6��@eV�������O%w9���F���;�����U �F=9����sH�DCYG���;^�vI�.��
��y;N����D^��e�0q���6�8�20��@�Z�~
���!L��U���u:�K�~W1%�6��%2���_
&�5.%�O��B&2���#t9\r0$������o�+O���$��[_F`���aL�br������]��������7�����������'	z��oE���I"]4(�uc�[�"��c*����(�I���IL.F����������D!P.{��#Q�����I�.�D!Pn�2�!��z���L�1�f=��L�p�#���4���zF?+�\��0�����]��p��D�Q�k�k���4�a,�b�;$+���}�)vs'�{�����~"b��cH�p��X��^Lh0!L!����cI���������-"V79���q���L���8����l��$+�7�s3��d"7�)V^	$�nC�C&�����Q\���.K�����U�(:����O�	�<B�gFyHM��&F�m8���|.:2^�&�o�C�!CkCc��CD���n�J��f{��g,DI�volRh���i������p���.�I���2/���;�TXt�������f�������R(/����\�
��� �����W)|�����x�����K0.dF�d����D	](�#4C0���gH_���`��_=:�gHQ����6���N�������������?C�|)������I�B�Y������,e@	*2�����P
��$Ca��xg�:��m���IY23X�F��uzI�2���TQ�g�Z|�X�����kI�@��ux~�8nb/_�
|E����9�>��3�6���'��2>[#p����&vI�9aK����d��l���;�s�0`V�?��@��z4hK�YM��%zB�������G�=�![b��iJ�%��&�%|t>�_aK0�(��|t$�_cK�@m	#�u�-�����p��z�0������mN�7������LE��M��4
G�F=�gA�v�Q8�4�	��4��*��.�E(r��,�a8���4��BC��);���yj� ���o:g�T��O�H�g�����;���z��J��Ae�� g���������X� �cj�W&/z.���.N�L��	������JN�����	�W<l�������AQ���)�KU>�3RE�M�����M�5I�
��=��"��s��c�VT(����F�E@����,�B"��,��?G��Kw��@!/ �C����������;cU$(��9C�\�/W#mT���S���/@��od����������@��
&Z�����W
���j�%>��K�hN��<�d��C�~��}�Q�����t����,P�&�,U�r�b?_$��i���e��+m"a�������^�[�q��&��9>�A���T[?����O$�����r��#N9�`�zXI��B���'��@��M��rp&��Qj�
��N�[�@�Z�h�.�Xe�����
� ����I��3N�7�r\��.����{p��x��A"��������x���c��X��>+u8����i�qR�Y:YS�+�9J�xz���W@�������O����������	w����
\��1�]pA��)T���`!���]������>L�P*�I4C@m�+y
-z���h.�h�W�?�f��"��2��O�x�H3��{�;�f�)*�^.�0QCm6�j�0��(B�[+��9�^��x�V��Cz���G��Pq�����Q�
gs5>�d��0WC��I�������G�,
7����rhq�	�R�t-n?�h��!�Z��F\�#+v�P�(���d,��Bx�#����}���c����'o'�s,l�"��Y�X��E��,g*��}�����*���a���d)����$M$�z���+���n�\������	�P#>os��q���^����@��B���m.oy�d��������;��q�[`l�f����C6zd����]�yl�������)��O�������G��N#(&���0G��}08<����pL8a_lp��!c
{�iUL����$[,6(m�`6��$�*,�P�e��;>V�0_G���J�?`���${=,���l���*�'l&��Z�L��P�6��4�B`�"�����I���-�jM�x�H�|h�$
���9�B��2
�c4���m�fI�2�I���4�I0��/Mf=`>��f;������#	�4
�.�.��-�Q<\�3��d)�(��H������
VD�'V	��W�p�f�W�iv<\���n��E\$]>d��i�9�?���.��C�p���/�t���t���$��/����d_<{�I^dO���7��%��5���������Y�4�e���#�

��2 ����`�����C�P�

	
��\1�l:L��h�d�m�2~)Y����@$���s6@l�� �l 6�x�bh<�����
�F�m�Kx1��AH���)�&���h����;��s����
s��y���X�dbM��9J�[�����o������M��Io�U�9��{2&?y=���)s���)Q��}����sM����`.��[����<gF������s
��������w��O^Q��;zn��	w��H�}t����wQ������S�#���6���9�k�lUv��!��LS)^M~1��fs�������gl�X�=������l/f�����]}��J60��������zpL�����/�5K���&��;D9���X��p@3E@�6(�VF��Bf��X��"��TV(k��V��b��Vmv��
m�d��V"1�������������p{�����w��rD	�jB�
'��8x�&8�������������`�H�@gw:C�=j�p���7�]A�O�W�����2�����S��C��	�����5f� �B3L'�>��
]!5���*87f(�,`��z\DV��
��f�
��H�&g�^Y&���P�V�V���r3���bB��s� ,������Gs$mw���-�G�~*:�4��_��s����)��.b�R��P�c{�[�	��@�/\K��w��w���_L-�E��C#����C����]\MH~�[�������b�����c�C�&- ����2S�%I�`9�\������ ���J���jH��]+ Zg�&d��'{����7����A�G|�>���������"F��ze���R���Q����������7M�
{3���5���n�[�+:`�����*��t��	�A��"�X������J�z�-{J^�4��M����M�����k-�V��P�5!;4`�t<�$���"F��^���f��1�Q����9zq=g����U~c�������Je�O�h�T��1�D7!�Sb�����E��
5����%?���[$Nz3��"Da�sa����]���BG����5�9+G��)������^�F��������
�X�!�!wQ��������JtU�����9����P�^��Rw�����Y�Zf���X~y�a�k���� d=x��o�a��PDH���q��&d�M.T����M.�2�����~�~.�}���r7���Y���f>[=.���VaY����B6!^c*	m
{���U���#O-����f�zA~�"�����W.2aO��P���-��E�]��y"i���!7%��n$��n�����X�����Q��F1��t?�*�Gk���a�59������6h(�Xi���_��x��h�h7�F��x!��b
����`��h�
'!GG��d*dz� C��z	�{L$b�"����fA� C����>B����H�l=@�'Nu����$�t�����.b%��F�j=$FXe����
2�T�
����<��m����#G�v�b�V��x�]D���m��&��16f����(V�c3�o`��>��-�����}t>�i�T�0��"db]������HY`�r6iRQ[O������M��6!*l��Q7rq�F�4�]��6c�I���Y�q5%*n��Q����z���)U	i��1�E�����`��Pi[+���{�Z@��6I�}���]
k)���*����.���l���1��6��s�s�6�.��D�Z[FU�Q�^�R�z��\t��^/(�����K��]6��E��0���7O�/i��q#��w��[OP������r={8��'����4���:��B�}�~~tk8V4Dc�'�&������������i{e�����RJ�������?��*N��2�TE�ZP����]�����
���:6)Q���:J�`�oM��"�$nxy�X9yb<8�����|%
"�����X>S=VD(D&�Zx��������L�<�h���BI�"b�v
�������~_���%QzA�P��K�=�JL���{�����ep�l���%_� �.d�]@_0��)v� ��:���'�U��ij�IL��j���.������`��D�5���H�-�R�2�\{������9�h��9�>ERm(�����"?5NzN�O����(�zN�O�B��(����S���N��i*��a���L��qj�S�.����cJv�D��xC��xq+������K���1^V>���+���z�|�;��
Ur:�I<T�='�?EV-��TV�q���6M�pi1���A
?�A�Zv�)��A
���������������%��Rw�9�y(�����	�7p^R��������Lj�����L`c20���Z�1�^~5i����%20����)N�j��G��\�2:B�������;��S��8����g�;��2����dB<�����*k�?f��y�����d��e�y�d(�i����z�Z���n8CQ�d�6�w��:�|Y��Jf0�����"@�X!B�n�������e
��L-Mb���V�J��� N�.������T�taC� <�~1������>h?N�
���Bt�[�4���2�S��������=�j��V���E�>M���s���x���������qZl��ga��E�D�Oqqz��\]��'���Q�`��&Bj����O�8���4a
��RSb��4Z���]�:�o���,�2fA/bP*b���>�#��_�A�����K3�J����RP
�6|sn�.�Q�\��q@���r%�d���-��4A����X��5"G��L�W\�������.�v�U��&�J�mu(JBr<t�Q�')�D|��n����i���c�yx;�td���@���h�So��C&=����X�hu���\Kk�H+G�B��z{'��;E���4u}�����S�.�>������e*��io�OP���A������q]��!t�@��0����;�>�$�t,��K����*Z��J��t��b�,���v���0�3�5,����DN��~m��7Om-��3���'��4B��8����J��+���;�k�W�N�z�D�5)b���~���b'2p�l�.��;V�]������_w�����l�^*��7�6�t.�8Q\���>9����(G�%^�R)���8��E��D��Y�O�0`���$D��6�&��*��I)�+L�XlWd�Z#�������`���Pa���T��f��!� FQ=xxe"�8k;DC�kZ�0p9��P�M���E����{+�j{��B����s#[#�E�}�F�D��vf���uN���j8 ��I�^|�e����E��*e�v��P��l�:�UMrIa'� (��>:�c����S����v
F��]�+���7zvQ1Y�p�ifez1N��cR�{��5I�4�������:��Y�-�	���'n�;�e���f���LUmk�0����{P�L-���+�l�
��q��u�:�V�����37�f���o�I���8h���Q�C_���;]���	I�:m{����j�a�H@"qc7v�������������rM����P`L��rn��[Q����a�����[����� t9���Y�=>��K����p�� ��BfyR({��b�k�%P���}Y�*)/"�������M�N�k���U��6�4�BZ��,��=�?w����8L��s������sr,?�i|�T�8�W������%��C�x9�����
��O];6�=�,~����`�4�'T�	@be#�"���|W������0�&�:��#\A ��!�JO�]�c���N��>��>d�tO��%���'i=i���T�u9H��4�����a�������x�Y��\���{aG�B_���.V
[��js+���Z�����l�Uv	�m.��C����\�n��Z�b��6�������������@����y��tWt����@��l����
1�D�]0�>�#,;>�����X7��g��@�s��.����P_U�?���M�3F��
�v9�Y�bf����r�Q��l�0�����8���37����qNEpc����j=\v��q���N�bV�S�>\{��m��n���=Ti�P�|H��<�������s�w���	*���(y�+ov6_����27�f8 A�2�/=������!�z�/����Uko�h/�$��'��b/��������j&����+O��" ����K�8c]�5���0��3����Ur���t~_�e�,	�kz�����i.��3
���W�K�L�S��\}���eK����3�d�U0�c3/�D_����:��������%G�D�!�V��`yo30��g�C�����^�7Z19U3d�]�cd���zn?*��<��a<�UE�o4%)8r��}���j��������X�*T��(�v�]0a�(����XZ	n^,��F^+�@�]'��������.�ry'�}N��yoQ�#E�uG��u���,
��\�����i�	�P4O��YZ�!�u��v�/&�����"XBW1Af�n�(�$DqrW&_{`���E�]�|m����29C��3�4`�@�|'s�/����.����\n��G������hP�o���)!��(D���X(�v*[�K��;�'uV�9�l�F�wu_���e�4�{�vqpd_`�*A�
w��
�wS��)2,�N+m�2�1I�$����*�T��wU�=E�j(0�%��w�d�P`�0G�z{���P���0K�f���,�!����z=�86d�5�VI�����j2T�ln��`���8��R���E��2�������'�,�Fj	�*�������*lr��\����Q=DyW����x����:5���L������������?^�3��)�������������g��y�p@���'R6�}�H��mj�[��Nw�t�D���D����!B�G0 ���fx���1��65�.h:�55�����~[h���Q��d8��E����������!M���[M�&BXSC+����/YU3N���D��+�D����$��D���)rd����8���u�"N��5]�=��7msa:����,T����Q���)U���	S��S��P��fP�o��TA��p�.���$���H�n�5py���@��&�i���7�H��69
��1�Tkrb?����[��=�\t���>��q�=�sn��_����U�f�M�@4����"=��Y�x�Q�9�r�Cv���j����R���&C]<}v}�3a��q�HVq��F�T�����L�X��d��'���9����Y%y�.�T~ �R���������K��G��Z���
�fb�9F�O�t^���-/�7��C/�7����1�_�����s�����^�,������������N�O�t(���E7�+@���|A��{��F)^`�������-b�����-����������@k9g�����~B4�('ccRi'cE��!k��2x�%+��=��Xc�d(�w�3.ks���A���P�	Z���;��?�X���O���#EW$hM��^���8~��A?���x�3�51�:�I7�{���b�r��]-�r�\����
.V��`����������z6t�b�8A���2NY��WpU$6�����}��C�������CE���m�7��l�n��T~����l���������&3��U�z��_�����V/����Dff]����ha(=k�4���I�����2�G'	r2[��s
���{��&9�Y����$�{xr�qO�P��-	��$���-&p�:C��)����a6��=`�c��8Y1��=��5������R�EE�
f�oK��h��3�G���X���f:�z^��R�
Y�V��f:�N��i�T("x�(���bZ��A(���d�������)Q`��P�>�
U�)���|II*��}|���Y��KN-&�EK:��5��)*�G1�>��(���� E�~�6���^t��&��
�z2%�L�}�**���T)L�L*����P�k�9N����R=�7�����m�w�����F�I��He���E{O��i*�Px��J��M5�re�
T�H�R�����V� ��{�s-G��@���tY��O'�"��W�T����sm�DO� �>42V����D#@
��q(~H���V(�w[�p_�����}��a��'�
�d�4��7���Q���'C<�60�]�?��w�����@�SU��q�8]��8'�	Q\���|]^UM�L�"��s���9;'���E������N&��7r�<��!4��C���������kb9���������^?1i���`3��Ie['�\��E}4�b�O2LE���V�Qj�55��8���<�rr_t�E�V����n�E���jJZt�7J�����k������� *���� ��F���[o���������}��Q�&�Dp%���h��K^0�J�&��������u��#?q�_�0�������!�nA�U��,3|�G����F�u�|�2����'�A������j���m>3�0U,w����Nc�ix^H����i�=�I"��\�Q�xyi������^^���w�z�;��4a��8��������	Tg���,�p�L}��q��s�"�Q�r}�N[��kj5�)G����D��Am���������y��
r����!+��xI�5)�����m�����m�����#(f�$����6���Y�s�ME%�k1�"z8�o���%;�/I�J�L����o1v����������S�e�q�\(�FCr�C����Go������|�����@_�������>���O�o��]dg��8~s:'�3O����I��z"��7�W����5}�2��Tkl�*,LN��uM
�]Z���Tw���G@a��<0���������	���s���pkZ8v����+10:lB��G����3�`��xmB���1�1Tf<������i�I@'�����4����USa�}��y����5[�c�����Nh�jl>��*����:���Va��R���������`���������3��R�?A��N��Hl�@�LG��ni\]e.�]v���`��+X�lo\�� �����(8|���m��%:�}R��(�M7�;=�KY�M�����U^~91%)*Q���KCW3��JN8E�a�s�Y��S�*���D�����t����i����}�4nS���rn��=�<&���k�&kQh�CEuFi���
��?|��;�&�~S�qS��ZO��n"����#M���an��F_��m�������C@�+tZQ�Ob��R�B��^��,��	�ju��&,�m��Oa�t������$��B
]��_]�B�����'1}y���5�c��.��s��M��q�t��R
Mhpz�.}�����.]<B[;y9;����8f���<C�����'�<Z0��3\�8��c�"�'��,���-�}b���F��h��;���O��^��������~)��!0��Z���sV1z&���t�IEo��9�|��#��U�^A�J��<N����$g��jRZ�JN&�&Ih�>��������*D���VU~�����7UPg�{�����_��f���jQ7T�|�
��_O�I�1�Z
�������T�3�&��!�F���4��/�R?�69 T�jW�_��X�a�w����:!���S���d2�	1����\�T�o9�:]j�\�����
}i���le���Ndf!��*�lm���$XG�0��B(���QT�7�R#�O�;<Y����&�)6����+���D>���-����Xl!�d��`��&�)bn!��1�c�'0Z�������Q��w��O/>e�g��|���m��Kf
&�YT��&�(�i_�
�z���[�Qs#������%c:�60j�������
F�R�1� h?�l���	��
5/.c������� $��~����n
Rr`� ;���i�@��
hr�.�'�������7��Lc�u�����x���e
�>X���d��5��`���'�?B���B�V�'��&�&v�� �f�������� H|9W)�y����B��SFf���0�d��$>�u������wY���)��8��6��-7�A����b��m�����+���iUm���\�Osv��Z[6�{2������)��b**�~$gnV1���p���(4%>>f���sv9����_x����������y���#�~�����,-�s #�L_���?�V'��HX�N������T	����;Tab&Q�������r��Z�(}��Pr���O�d��y|P%8��������_z?�?�E9�>G�"	-�����S�"u�i�6~�`:'/>.�$!����%{\|�q�A�A�G5)�8oCc!~U���a�6����E�s�z2��z�N�(���l$�������R��2y�7_�3��S�=�������qZ4�!��l��l!����n�1�o#��6�C_���"f�[�7y@�'o�T0"wc�J��$��G[�����f�����`Hk[s0����q%+~�5�Pv`�H[��;M<��/�����\�����l��XEp�67o:�6�3����_���;�n@�<KV�9^�������uJ���{d�IRG��s�������A��lg�WN�I�'���Xw�h+�E�r�����K��n,��a��"���2XE6�:��GYB��nk\��W���{�,>���_�v�[p@�n�gm��������K�n�4����0n{�_��8�El��F����������'S�������]TD����l!����~�w��,/�����b����7m��;���<���-��B��|��YLh)	%9O���,Q��_>+����Ro����V�K��U3��)��_��������A0�<(30X��K��T�:1�#�����]�8�Cw���������������Iw��?�iw���o��\f��9����D�*~�i�h��IUW�:��Ob)xLD�]� �G����oXn^ri@���y�zs���UW�Z��W�'���]���s�x������u��A�H�����Wqw����S� wO���T����<��P�����
�v~�tz�/Cuf���5#5- �5�z_n���qS��S8`\��a�1��h�$��m�e[�6v�0hn7������]u����	�Z��D������<�B/�F��6- [x^y��m�n��5��Q����Hp�!��@�����2��>��)�b�.�G�t�����"�O��8������+Ue��^�>>��?���~TD���g�����u��G��
�rWA^9��K��G���R(�~��w�"H�{6����;�C/"~-u���_3��b���5��AE�b������}@�4ed1�.��J����p�O�OK���E�x\��QT(��w:W(8�`yc���q����*�V����b`]�UYp�w�������
�5��v��&0�Bh@����+
��Z���;�+�
�����"s���h��H[m`%���1�`cJ?b09S(0�60�z���bP1�J(Q�n)�<(/"�=�J[�6pkk"�L�*{U��c(�����26w�����w�����<6�g����L�=])O���*Y]��y�.;�s�;�L�ja{���t���lk[��@[��V�mD�l"��(,a)���	B5�������W�a��t���������aQ����|
� ]R�>����=�WO��S����C��M��	8w�{��'u�(A��@�,
��!�%�(�0A�+#K�����,�J>,P����I!Zs�\@���m���n��q�.P]a!�[��~��t?���t����.���<��h65�{ �l�2���|R4QC>,�^��*W��H;"��If�bg��K��/��3�N������!��f�
a!R��6?�$��+����W�\N��a3B��B�p,�/�f�Y/!�A<�v�l��cN=�dl�~��1�<�K�_r*.����W��1U�XM��}R�(/�S�'���]v�$�x';�����_v��hg���o����U�'�o�|�	���`��<�%K��.��r�s��q���|��P]W�R"��W�|p{���M4�2����t�^exLxF�~���f��c�M���bX�b0�����������+�r�[ ���s`{��-ld$����?�pV�<�@B:�
	����*�J��1��[*u��}��w�����/�����A���
F�����.��@
0o��72��N�3�������'U�/8&���r�M����td�]
�?a�>Ol0p �Ar]t�V=���V\�G�Y�;g8�	�ZI����i%�rW]��a|�,���d�8�[=p7wQT����l�>G�58>{��j�_�����GyC/}�����k!Y�>B��@��i��PS��U�w&����O���A�F&��(��]������Gt�#�gG->�!�Kt�-f���g��m�Qq9�d]`�}�"��hvI��xC$�CUx�\���w�i�m;���u�;��������#d(z�������U�mq*f���]X�����T$��Y<ei�I�d�;U����m��T��O��p���X{+�Gk\�Vz����}�������;�I�q����$�T����/<�(�>Vd��o�<�y������c�����2�=9����~��^��s/���X%�����?�u�x��L����'�x)�a
���M,����mTF���y�d9���y=���*�Jw"����>�y/��j($��Jv��y��Z����������3����kQ��7��IL���e���3#.�	��'�1�Y^��<���lqWQ��-*9Q=I�|coT��e�:�L[Dr�����Q��-9Q��n�P��o�D�";��A[,r�:�����02��(��,�<>�]�t��:4o����������FU��#hE���Iv�f��i������� �7,_���:\.�����W��q�������w����|I�W)�Ao�o���S���1c�a�����O4V-��S�	�nb7.�����G&�f����E�|{��J+?6{y�l���(�b#��Y����a�u�Q�������BW�U`jy=e�k�
o����i��S���E��P
���|��]�w�B^hapKD|���vA�Q���B��Y��NG�.�8�Z����*m�cyKvC�)�hE�)����l���d���XN�N-����������J��Ms��x��4���v�]N�2��C�1+`w��f�E�i���$M���D~�I�_�����B�%!0�7q��d�;�Y���^��	�s��-��Pi+��H�U%p/�x6�z7f�����V�C�n/r�$�!n���) 8.F[�Z�}<d�c60�.�����2`WS��E�t=Ph�(���d@e���:|z��3|t�>:�=�r�p��h�K1J�5�-L�IXt[��ha�<W�:���`�O�!�A��5Q$���u��T�s���c���2��[C��;a�AtG��QK�{�$��g��]:p�g�$���;���0"�����r�������=��>��RV#@v����=�tL�����D|w�N>X&�i��UFp�T�N�z��C����s"���l���]	%�2��S&��V�C]�^�����W������+�����W����]B���*x���mM
�6|���)N���r���@.����DA���;rd��<0��<g���<t�����p�Coe��>$i�5���W�<jf8/^y8C�]�y�	g�{8���<.�;tSO���+���xw�yw��^�����Y�n��F�������DI7����(y��u��\A��_����E����7���ho�Z@�U�.��)_f�4�$!�9b���gO���zX���R�><N�'.XDd�(OQ��-SRmO���k��x��D&�HX�����:.|����^+��/�dn�0Q����>��[�����q�N)B��-\�2aa����~��\4�3���)Qs
9�,�LW�`�~W��z]�
��bl����I	W]e�$p��<=��  ����o���x�b�9*��9��Qy���B��V<��Q�m�_�_�30���*����d����|k�h:��;)&��A�*7����>cD0�<
[�������.p��n����DX��+�|p���+d:|%1��u�a�L��$��e���{���r�5|_���M>,�����+�� 1�����n���OoX_I0f���(�:K��1[����fa�61��1������&�\O��{��4\����p*&���L�.���t/�F���Rm����y�)x�����r��Vdl��%x�*T�g��S6�2B�T+��S�}��n|��v��M���*t�<�>]�/��d���/������Ks��0TzC��/rK�
�]�@�q�r�Z����[���
aE�D�W��!~tz��P����U
y�=!����vF���rC>%NME[���IA���=���Nxn�D���H������"\��p�W�ap��51���o���T51�c�� Gd��c��Xt&H�����X�����']�\��~�%!�&H����X�:V�	�t/�o�5A��N�B����9������.��Z��u�Sh����D�L�3����&�]�����h�\�N���Ip����%n��E����r,Bv������6������g\75�B��V9����a���ky$G�����'~i�9�o}8�O�x�K^�#����K��g�2���w����*��)���d��zZ��bb�\�}<$�� ���"�
������%A��h�p�M�w�����0�q3<����k|Z�N�5��-�4B|iw������Ba��1��h�;��Aj<�:�V[�|�;���J9�hAW��ly�|�
��U�>�&��
��!����_S�x����z}��*�nUC���_S�p�������q8���"��#T��=X�����e��}+J<3-����R��*��U����NE���n��UT�767t�s��s8z��m��#���M�7H7d�]v<�I���t����R����Cao����
\���6�_-v�CW�B��������������p�iE�M��#.mW�:,lx8m��v�0��&�l�V3���Ih�O��$�:����X�����������{^O��
�4����*G�\u�w���d���N�	�H*1i�3w&�4]�'�
�Y��W��,8�����P��,��=��I�$�0Z[+���������O�;�9�����Y.�����m��-��-��{�Z�N�ha���9?�4J�������dW�W
�j�^�>	��}�
�F���|H
�mq,��
&;c*,����W��5��}m���&H����D��'��TUj��}r4b����Z���m��;���7���,�w���<$���X��Lm�*��$C�������\��S�-��w'b �8�"��onI���r�gh
^m*������}�=^��LA������/*Cr*��M�(�Z�tr�m�1��3�Md+��>Yb�Uz<�|~w�%���^x5|�x�5*����������^�"7q+7�$��$q������ ��`t1���5�2���3r�*����,7�j�>�xI*k��r�^�)�Z�O�������`��_���U�Q�X���Wo���s�����m���z7y�5����^�N�������b�:��1I���X�W���_I�;������E�����ov��6O���++a��0D�<��qFSw�!�ym�l]��-_��r`hBKeM�B�vu���9;�J�������l����b����i������
Z��&�}v��ny��������l�B�b;��=�\Bg��LY��Uf	�U��S�d�"'��9���'(��#��Kx�*^���*�9�,���|�5e����F�|����-��IY����&���x�nvd�
���"Zl�M6@q|����/����i���1L�,��O�1���@��+��Zt��EW�Zte�����<��g�|x�]���"A�`e��wR<�7HI��M�E�>�0{����.JI��od�=O4z���e��@M����{M@7�Z��� e��������d�g{������&32��/<D���2�����*��,kp��xahB�>z���D'�q��W�rw����k�����V4���No���f`��X!����2���������	�27����bO0��Ql���@+^��d�=�P�f��b�D�
T��O���$�7#L\�(!���`k����+"�Q�����#����M�h�����i���/����>m��0�����19��W1�E����K�dk{Tj^xj���R�
����v�C��p�%�lT6����s|:$;Y�UW��R]����GC�r�bQ��$hBI��?|��x��)�x���b������7�S���Q�����V4���$�B���G��c��9F�\f��oG�x2�VA�X�AB
�!�I}�������e��kh�d�?�>tB-�Ivy�������_8����Y����rc�_x������!�ac��3�*����T>��]~��gO�)��.n�����&%8�`D=���Z!�F����J��f?l��7$��[����r��"��j�H��a����'[vX
sV��[�ZJ_��#+���(�Q������c|F�������{�������xI�����O�W_����C������94����<�K����L�T��dwm{��t'p.���C|�E92i�3�;
S�*b{�s9�X���=!j����":$��8�={�3,��&�x��x+q{�#S��=E�j�&��*N����
f���n��b,�P���]�`��y�g��}�+���j$k	�������!C_;�+d�6�
���3��nrs���3�M�\��n$��,
\k�~�1e�Z���%1������'��*g��3"��"5G���H���r)t�X�jR�����0�4�8������(>����'K�������4�/4�K���d�l�j{�Z����h��6�$0��n����P�g~{����1�n�f2u�a��[v��YvG������^vBd4�c�����jq�1n~��)��5��M0v��d��3���m>���I�@�e;@&V��K����l�������*9���������V�M�
P1*��.��L_�@���d���7Ki��$R����<-z�t�-�N���X���/�h�XRo�Z�����v%&g��!z��$��������:��%������,�?���r�8g�Fn>�P������A���N\�������s�X�P��!)*���"Fo,�|�Y���rN����w��8��.5c�2-���]���������l[DU�K�;g;t���9�W�����`~����|������T;;�{���?G�� TN�����,AE�=�(O�hV=p��1
mE!�a�l�����5��p��5.���Vo��i��d��l~9��M�f���'�C����$�K�Y��������LUQ5�����s�M�T��q�m[Z@Cp�8v�D2��0�"�B�R%E��w���	��5E}�:��3�zn� �c���Ym6O�.F����B���0��h"��*���>Ex����9�J6����h�]�;cAWm��V��df���>n"�|c?��x�HR�J���"s��B���}�xh��n�[�b�|��PV���XU���-d�_����[�\L�C�.�%��������2a0���p�3�
[�2CXp\�"IjlgC-m�+�c��s39��c�e�4(�������O��8���M�6����~,���6���FNf���d���Y����L�|���v������o�'���t�S��g���L5���+��G��|��]jh>���jR�d$J.�@e.0�J�&���&���f�����M}�t�o��?�uu���"&�^��F��o��>S����&=�?������%A$�*y�aM���sI��?��NTJ2�'���M��<9n_��G|B��e�/v�.�����Qj���3���1L`�{�e{���V�C�.~��U~"^~=.h�A�W�t%�H'�fS}��~��<#4�-���<=	{������c��p�������B7�����}����\��f��v%�-��w�2h���,�e�$��i�<���N�E�VxN�������K��������I3@��nh���t�.�?����y��x�a�D@�'*�_x���q]s�*�
 ��������{2�c�U3��"���sI~9�"�W�����DAl���-���.�G������;�.���
<��$������J�Q��s����
�t������k��������	&t���|3��K���O�,9}��
�Z�K����-��#5���|�S���<�:��E�<N�����+w��g��|�N��Y��f�G��^H�^��T�y��KNT+I�~!���H�}S���9�U�|3+q�����g�$�_S�W"��\��9v�*���������NqZ�������O�|���O�����Z7�F���u$N	Ah��$�<��KQ%�0�0��rR����}|�;&h��6���G����U�*
`�`����<1�b���`�	���p����L���H���H>3��U���>KK����t[��������\���$��@�8��*~��2�.i"6K��r�o�.��=����w����_7��=��w(XWQ�+�@X�Dd��������AC(�\��g�������$5Og98��������UG���7����/_�/��/�����?}�GY�� �?~���`T��hrW�Q�@��q8f[���e[l�,�+�W_�����~��~������6�w�>�Ga�;���86�N�����~�������q��������7��S���R��k�r`z����0�������z��_������~���������5;�	�<���=X~�nnB,��
o��W_��o��m��$���W��&
�{���{�����Dx���������o'����Y�O�^��[�6����{q�����O�V(m�.�4M�&�����M�J���NS�����!;
v�JMXT�i�B�v%�I
q`�W��w�`�����E��Vk������E%�VF�.��M��U����M?����:��^��xG�m��f�7^��[z����/���������H$���Q����|U�-�y/�1��S�	�e�7b��#�8���G*t��b,��������&E��s��M��F����4S�u�L�:���wL3-�m[I=;�����0f3�jE22+[��~��8��F����*�$�8��q�_R^�����������h��(�sGe{@HX��W��!��`�\$�R�
�L��nU��L1d�~a@��BjCq���8w"�f�����z��!�����(�h����/00)����k	?'�}��3R���7F����4���^_����^!���\�T�lK��%�����{������x���o,���G�_�G^��������]�c�A���?��h��Z�N�/���|V6\��.�>r����Upk,���4��g��	�hM�1���[�y��XX}`M���&���^S�R�L``W]T�jr��<oT3�
���ii��^�Z�j�1L����	��K*����� B�����(�&������xU��[^�����!�y�eA��B)n��w?��r�gv��7���!��r�����!���R��,)�����FI'UT��=ke������~����	�/��^c/�u�P�j_���\�����������Pf";�� ���w'�/�!@g��6�F�����?���������;�����^�T�02� z���1�/�ac�(0��(�U�9����f��e����Z���{x��
FF&�I�G�I�h�P��������5d�A<3�����L��9d�Al�X�TW�a}u��������M�J\F�h���[�m<�
t���iaw�
����$��N27ns?3NC 9�0mo���1�Zr��1�
�yso�,3p�������C� �>}3�
V|s��,3p���h��|el��_�dF�q�+w���2�����Oc��m�v���#�n!��8����5���c����)��?��1	
��Mw�����c����"����:@��iT4`�����+p�0]���P�@(�z�^�����2{��Y��1�e���s������������,]�K�V��^��l���a��Y������),=��l���#�y���y�[���3k!'��&�Btz�x�����P���%��<���T�8e�������}Wl��*Q�}M��,��p���I`�J��I�x�>�������c��=��&���`;CK�����������5	V��R��W��bQv�-2��x���x^4��l������(��� oP��q���C��M��l;C����n�����C^j��|��|p�CI��;]{��|�w��q����w���K�� SV�Gb�^�s��w�G�5��J����{����=��%p��1���2��w��������	K%��� H��WV���wr���0�g7�9�";�?�3���J�� ��5�&�����K0�S
��������|6':/���������^O�*��
���otU*b��#?kJ�%�<{���wE9C��6a���a�ec�����M2J��(99H�Ec��k(9���B�{+9~����}��w�4g�_(��x�>����8�-�S�VB��.����:E�����r�EC��Q����A �k�O�g2q	�=p�@YkeA�q6�����hN��X��`������K����R������/��*�RF��a���[��nv�Y���f�vU�V�����W�U/&���D������9=�	/?zT��jke�������_�����4�x���p��r��}{\��>=^	 V��x�G�g���ql{�*�+�����1���y#Z��`��?�#��>��7�B�
�x���vb����
5���`p���O�f�P(���k�;����	�zNj��!MkQg���V�of�?:�L��h���z�w\������C������O�kF�Z����m����r�`���z���E���"�'���~��+��5��SB��z�L��};�{�m���������Jy_� rR�g/�7~
R�pe[���O*���s���|����K�;������Wx��0������1��/��e1C@�u�
�5�~,���`�L8d���k��/r��mug{ ���Xw��/�w.���l�����/t����W�Q����MG0��gq}�	���h`�v����a{%��F$�������>����m�(���������z>�p���[iS���{h�EI���+�&���
��H���0��Jt��-���n�p����mWh����GF;8\j�U�!�:�+/'�o�?�7���ZrY�.��I���3��]��e�R��O��Z9�p�zB��l�S6�*r�t������,�`���Fz�����So�����]�y��e"'�����KZk���	�Q���J/�$[EjP�?}�R�XNX�u[���2��S���p��vp9��,tr��)TJ����
�5W4���d�J�]~�rWzaU>��(hh��V�������V��yC:����faoC6���5
�^� �5��W7���^�^F�)@��0�}�6�3�A6[q�~���og��L�O�?�������������[���ewbsr%���}E�?���Kg����TV��w�'�~
�D�
[��D��S��JV��Z���!��`��������N:�ek��c��j���m�
�y������ ������x�A�%/�������%{����#E�{���tx�E�*���d"��]��p����tJ%��$
x�@:�vl��NP�ECJ^��{	,��G���6��|��*��o����[ �x�~����K�/~�bt(����s���v�yD�yAt�����7���G�t��b)"�����+��_�*.���5
C�U���cB���L��sy�L^��������a��V�C�����R3�[	oY<�f�3�gF��/Z�� ���Bz����^�������������;G;���9Z�����a#if��eAk|�;�������������h��q�o��=�]�S���x���dpU�i���sg����N"���LDT�+�|����MD���^9�V����D�{�l{
�hCJ���h��4�<�����W��G<��s���k�� K��;m!o�[#���onze�8��Kf�`~���:�������) �������a1�E����d��P4C9�k#q�{�J����%v���s���#�;�|AI'�����;	_�������H%��\���J���S�"]���Y��E_���1n��E��FI ��x1�>x{�����?�i�+�$��X�m�~���"�@�t�6x��YES:����^�V�_�w6���z��t��7-�%���L'�y)71��
���N��o�(T���>y	"w�^�IIL3�lFA06&�|ie�^��C�x�^�c��e��`��Y��NXY@1�����q��V9�"��|��|�B�v�V��(����@1���(������@6��E*nx���L\|���9�IcM�����
N�|L�m��C����*�J2(�$����Y�������E���ei����Fn��{a��a�k���
�m����bq�fu��Tb6{s~��3����O�~���3[�8��N�j�w�L�-�VJ�Gc����Us�cp�(��P(�v���i�~v{T>��dwa�S���������f����R��j��K�w�jR���i7�z����2�����uU��=�#����)�&�x�k����j}�UH�6-�6xY����!�v8.����+����* �����[���*��<��MS?<��_���s����=_�7������/l�������VD����&��G��=�	�����)�2#���Z���p���?
��U���Y��#]��,4�@�w��r4K�������[�3@Z������)�d�%�^_f�9�\�>)C	��f���4dRh#4��c���C�e��nM0'�����y����p�&��5 �6X�l������2yZN7���\}�������5J=�
��w'_��N�5q���������
<qXC,>�owu���W�U���K]�e���g����({������%%6������]��k
~������j~�f���T�����s���t����?�� ���}�9�Fe@o�E�:���x?e�c��e����kP.�I�����~R������0�Ep�	}BR
���
u�	H\d=�,5_��
��h �n�e����{���<�q�,o�}�����_��x��_��]q,���2dZlq��^
M�L<��R#_��%w`�zu�<,y�'�?��� ����8b��������|��} �3x/��WQ���h�?%��f�c�x����! ���=��'�g���t)�����C��c.���	[��Y�/���+�����%�����F� ����p��(�]���7z�S4���w�%-�*������d�0������(G\��U����TV�3",�5�c���������(�{�8�]T�SI�Go������&�!�������J1@�/mA���?���44@�{�����8u����F���Hx��[5�����a�`��s��z�GW����,��1V��:�+��o:t���0��O��������5I�v�F�'�J���wEX]�!B�c2�@�yO�6�s�R��5Iu�
MNVF�q�'E y��`��y�5;X]
��P��xh������W�7�������m�7g���ne��M��"���#�%[C�������F)'��/:/>?D��F�{���]mg�&�Yh�!���R��������
v-v�C����J��n8�.�| 	��a=2��$I��~�Ri�K_���~���6�P�#J����
TQ�i��f�c�'��J�P\JH����j0����z6�G���>����
�����+_�����$z�*U>:u)���tkU�k�
	%���l6;����/]�$�]�S:�&*jX�����?o�������.���t�����eF4��k��2v�r1����j�����B0�/z�G��9=�3RxV`��g
nq_pj<�����5��}���y�|N����%
�fB�	�n	���T�p��Ai�����f���3ShM�e�qxg'�E��^�(���4q�	��*�\�@���Kk}O���A��,M�i�� ����oz�ke8��&�n�6��c1W
�=Oj����m�I���i~�<�����E��a����Q�
;�\�*��$��?��tN�{:�F5L�55;4�z�J���w����z�b/#(-��Ul������4�Vm�gh�����X��M�����hS��Ft��#�kr��4o*���������U^X-��$��-w��(j;���<,(��n�[F���������qg�B��)y./d�n;g��>��zM�s������B]�s�D}D<�L���vN}Am<D���:��K()��T��]���e;�1��4	���-��=�fDk��].zG+����v�����,?�9���Y�CA��t������M�A#*8�Nn(0@������`\��C�`�B�w�%b�`=�B������
�v��0��l��4(*��Y�tv�x��W�UF�����l3�����������=sK@l��9j����~����;�����L`-A������Y�@���������Z���:����O�|�8�Z�s�$�c�o���	k
 ����tW$_�i�(FmT���^�9���������������x���z$���{�F�n]���w+�=����V��XZ��K���]�mT��c�j��TZ���y������������Qlu��8bX�x����,����k;��K�m� #��M9Azmj �j�Y+��v���HD��)	1�@�k��p��r��#�u���e{9V�W�C���
�)\H�;\�g}b�/{����S����������#%�;OZ#���e&)	���������)9d�8V�����)r~������#/
HXo���:)^������Gg��v��^^�_~����&{�����	�6v����N�FI�� �O��9$]��Y��(:F��m�v�ecr���[0��[��lqE&�����RJ������7S,>�r��#7��Lj����'z��������0�[4���rJI���F�D����]b� MRha�sJ��x����}��x��nZ�,�$��Iz$��rEl��1�a�h���I��c����O]?9���'$��]�,���'$��ELS�x��������$������������k<|����3��&���u�md���l�-5�|��L_�P�DF��u�B��&�D�l2KN]/-'i�D+@(b�`��wP(|��fKL�c-��� ��{������-dBj����c���	�������c�K��vB��E����&8����/z��VB�����|�c�Q�J��8����o��y���S��c��L���V=�������<�c�����{�s�c���{S���v�����+8t��Rq����zQX��w��vf�� .���,����r����[�=�BG��a��	���\/�5�(��t_]�zcp*7\/f_�_��;zN�k��~������<��:"�#<��.�wh���H��vFy�0�y���� ;.����Q1�L���0�_�L2�#�C)C����TB�`E� b����Q���B0�:�7��8���1�qe����D��#7Wk������t3m�����{�n�OM:�����.�a�`�4M�4!�N����` M����4������f
FG��I��H�AO�
�Jri:���M1zN� A4�N�*
�P�����c;�6��}\��J��������|�K���	dE��N��0r��h39n�����#�3mKO�dW)��y}@�!��5�0f��)��<����i����U+v����S�\k���t�T�uojJs2r,5''���MGz�����57{�����i������:�\�K�z%Gw�5�K��
�d����hKR�LM���:�rO���L]�����%�JMGTZ��^7|7�
F�k+�(�G|��[�DG��xf+���x���C^}�4�x#���I���y�h+Y2X�&��������H�����%�u��1��g��i��mgvFR��A@Bw��6_�-���_����'�����`���
�2^+ ����M�U[��k��B���%(6o��n+w��_��Q�>P=�B4��h/��
<���1B4����wa�����%=F�b�
�����u�bb9�k_~L�(���XL,�s�SC��?�����,�z�[w��D
��V�4������>����L���zq��&�!�%����
����_0�+�����'����6�
PW~]�z���^/k&��C�o�?�\��4)���g�7�����0��������'��_����{"rIS{��y����I�f����Q��=����Z�/}.	?���|����sIt��=��v��^x 
�J�[[�L����el40����O��*�l3��g��?���bh��t��W���
�l�K|�:�I�������,U��a'^�����.��V��h�s�4P ~��_��_�]������f���O?�B3�
��}?���
�Ww��^eI,\�h2��;�j�@� ,Le:h+[�J��gC9��i����c��J8�����d��-�����* ��������}��(QE�c�K�)�fN��d:�g�wTcZ��`3�T�H
*Cut4Y+{}�T��6�OEM����Y�mu�q������n^�����/�������~��i��=����QGo���.��~+~���	�	��6xc5Q��E�^���L1��$��]S��&���~�NQ�
�A�~Xl����A�����f����e�|rS����������{�xq.����}�T�����v�W~�S�}��������5�������\/zRlu?����>_�����������u�qW������^�������N��o����i��C���?EI*��}�*����+�~���B�$	��g���_������o�~���D�K�%���C�w����Q����Q}4��y�b��
'��!/w{vy����+y&�Y��1��s;��-�J�Q��F�2�����:���� �������3�����L�g.����Y������?��m����)�.���-��0��W���xs���������h��b������i���o\�C<������-��&H����g����%�&'�7N��^��{�������5y�<&b�����t��W������1����gJ�����R>Ji���������0sUX�I�^T��<e|�i*���O���r��� ~#����(:S,B��/i���c?�O��T�)~�Q*'�}�����Ay�nT�g5m5=%�g� ����N{Z�4+JV�43��J]u�&�.9W�g6���U�b E0�z�~��7�a������=�������c���"���
���M���\��@���%K`����n�9]@��E
SF-P9l�O��] �t&�{A���W,����/���/���O.�f�
��|���U�#D`������
S�'��?�otB)+�G II�_���nC�c1��-��\��1���.���P;!-X&Pz
U��>��o��7���UZH�2*��T��l�|Ko8����D�,Iy >H*�P/��e�,@�Wr��>����vc������5�Q��B�]��l����#��Uq��b��Z�=���`����y�t�spcL�[uI�����Dx��9O�5(��|~H����������A�#&�A��%x��|||��,����'����^�'QM�@'��nd���VD_�,�eLqfC�yh	��oi�:^9�����
�7f���W�l�����@;���hx�D~]@��E����D������AW�,{���/��������*�I���C^F� %woAQ��]��QyB��p�5YE�j>m��J>�$	Y=t0���$t/	?>�}���{��7��B@���urc����/i�7E;����.�)���*d���5YK��O�a'"2���|�1����[������0���E?���'��:>��2,������(�:�p!�x���"�G.�.^}�S@�V����%�]6,^|������0����xglw�p`|O�*�'�3�@�D�xi��Z"9��q���O��l��!��w�8[:���b5�G��&�D���>T�L�G��"�>F�48����'�$��1���$�M�\��_�������A����V����@��P��������x>��L�c�&�����s������k���O���K���;���%���<�5�z����a,?8d�#�Hsc�Ig��BjI�b~�zI:,s�G�=,`�j���b�U�r��L�1`G��.���HI(�)<�D�H<W��8�q�/
�Q���h$
�}VEk|n�k�%it����d��|
����1�����F9�i����e�89�����/�F�&X^������b�ZfJ�e�)�K-�K9�e�Nr�Y��\�rJ#6@���:���p8g���)������������/��&��<i�8��Y�a���C�U�Z�	�f��0 Jjc�sO-�
��V�M������so����� I<��E��6�F6���l4E<=.x)�9tkU����� g����9x�=<^�G�D����lY�n�x_��U �BE[CZ�"><~�����'��^n����S���0�q��}+��Z�k�7C]��{
�� ��c8�T�3��W�%�)�������^=�?Utz�(LQ	Z����Y^�?=���Q�!3�A-�Wr���C't�B����iQ������:�kv�\/Cb���o���}Ga�T��1���i�����PCf9c�s��$�|�QB���bv��VV�b�e�aA�������R�uH]N�b�+w�W#�P�A��nX���@�jn,��K:��v�
�����	����*r�<Ssa���]��CD���@-03��q��B$> ��'����wSb%_�1%�J�`J����Q�H�Sd���{={~�N�V8��Q���_�AK24-R ����6��ew��{����������|�+�F+��z���a:`T�_pd`D��a?)�GU+d�;;�5y�A����n�a�MBM��h�Ny},����P��tSeS�4���(��/�	S�=��l��+;UoN���Fyl���n`����A+xV}
K��=���W�)�	���zq*�t]��
�|I�FN1�n���OQ�;���;-1����}t�l0�KI!��Z����g�y�em���kM��o�8$�
r�����W�f���p�m�pBt���s4~f�an�P��"����N�9k����4HG�4@e
x
?!�7��H�y�=��8�G����t<N���9%i8��!���D`v>��}����c����_��K��&����{�����{
y���z��n��;�P���>�v��� �
�J�^�J�Y����bix�1=1/����O(��_�pc@���Kje�%����)�E�se��Jw]bo�����J�G�^DFa:E��cG��T�����A�\_8�s���[`��#]�u�������fM=�~�"�e�����yC���Q��_�4,���:Cz���������{C�n�K��q��3�1�H�����|f��~��8MX�n��v����1D�tf=�8� �/����� 3�e�$�H�K�W��+>�0��
�������������7�ak]&�D�_sYA}���b�����b��%_�KC$�]�$W,���W���'����t��%YH�V��g�oB'�����%Ab��������!b�	#~�!`!>{vt��F5��/n�V.��/�-���MN{����~y+;����P@���$�{������S/��e${��n�1^���R����d�0�7��h�UO�b0v�a�+2n���T��_����Y����3�w�V��Ab~-���`F;�$�eO �w�fu7��i}Y~���T};"{����&���B���	zv�#�@���&������C��^M�|UF���������d�Z�+<���4&���C��Yf�����\�"����5���p���/w�3a���7(��[��1�|�3��y���S��`0�.���Ef(X�2�C%t��������mn�����ZOfuh������l����66�R�M �47�E~E�"���8���Bj���d�@�
!�y���
R!�&�7j"�g��A������f*C������%��.��W��������
Sh
,�`C�������`l���o9�$e
!�6oejv�����
6oR������2�<+P���2[��l�)����01��U��{RCR_�5mS����[��u5S��v�!
�7�t!��"�$@�=���Q��$����`�l4��|
S}�;�	
�� �4'���A�D[��b:m/�����������:rszb�lW�^9g�����u���Oh�W�*����-�:'A��	� F_R9+���+us�|��)����������������K�~6����_,>~D|��>>�?L|0&Z����(CV���@D(Y*6�l��:��i��ymS�~�9����/�
7
���S|c�s��&5�+&"����[��h'�-6S�e�R]9����~5X�L�����
NYJ�����uoKV;Vb+<��F���\�+#�2.���K�#�i������o�^ 9��m^�#��In��/QNOe�v�,���"��K��Sy���pLn��S�s�\�&�AR?�{m����`r+�>|'�����^�9�	s���s��Dl3�{.,6\��[���`��FPrW.:��]�
�����v3`�W���d�n�~�F���P�l!�R��/��9���YV��R�	�^���2�B��'n�p��
JDj�B�����{����S��5����7����Cm��5
�E��x�vu��z0]��k��[�^�
Q�����,�fo����O�e���2�I�#�1��?��vB����)^4T*9�bXiD�����3,Y���of���?�t�����l���~Jg'�����
V>���a~��D.�`��v.4G ^B��N�!��*��QEpU��
������v����nQX��O�	��P���W����������}����A�����]����N9^���%������}~��v$��=S5������E�5������O���Eg�Z���m���6GCY�Ov�l�������/��Yd�wd�Cq��Oh����IRY�����79-���c�n+?�?MW�w<����>��>eL=��'��x���'Fd�k�	Ob��e]���'6�8��$��{���s����_/��y���9�R�Y��M���������t�����;l�zG����Ah%����HM�9�B��?�[y�wj�<s�?�*+�g��p�$��0z�)�{��wx����:��^�d�w�����k�cN|
�����|��C�����a���n ������e)��@�$=]�
_��'�p�~�S��g7��������c�����)��:��9��r;������{�zgq=v��=���)Q�����zl%��zs*:p��d��d9��Xf����z��w�?]���$*�>��qzu�/���R���k��k`}��W�'���_���$/��\��#�a�F����7=�Q�/m�^*�����8v�y������<� �@�,0���2�=���=+�U��������<��������p�z���t��y6����Eu	�	JYYKR��xM%�#e=���2���{�~�!�����|k��;,����v������%
m����ST��Y0�O�Z��o������^��Tz��/�(��>����r�k6���V������S�z1���I���I��r��e�p���,�����A�����^��xh��{���9�;fC�l(�';A�dd�f�pL*�����>:��j�Z�Acmn��|�X���Q$B�
>���k�+@�bw1�yI�i�����|�i�\�c	L�C�.R��6$\II���/L��,KArn���w����	2�������y�����;Z��o�<^���������x��m{�7�o�a�j,�JU8�e���l��L��|�`����]������:�����of�TQDA3�*��V�>Zu��M�7����uSw����x:����aU�`�;�� ����_����> �|.�w�G�^ �9�o��SK��n�������So�n��
&)������<��:?�jz���/�\�Vg��z^S������m������$����}b�@H�,���
;o�t���!WD��*��y+�E]��"�H��$D/vS6g�"!��H@b�:	����@��phR�K��f���{�������],]
������I(�{0"�``�F��rkC���b�|�O��
-�~��r�2#�����QK��&;�������M�|1	�qKC���>%�T:!+5Z]#$���iMG���Q�$zb�E��_c����$��J�].E^����r:�P��`<@��2l�W�<�Q\�&7G��e\��,���/��c^��BCw�YK���Ah���5�c��@>�E���oA��0��[0��P��S%�`��{&����
<W_��/�:����DW��w�n)��9��7�t]�|����z���	0a���G����������l'M�"SW�m���<�E�m_Qu+����.�
�6rAHk>�W���E-mQ��{���frj4���	,��+[������A������m�65P.�]VzYZ�l�'�\�f������W�����������$|
�g/��v���������
e��r�Z���^�������b�������T�fkZ4M��������s��k/cP��>5�z�����{��o>�A��zs��J.���-?4H�Y���q����R�OT�`S���/�LY���k &t��.{r�=9��G������T��\�o1�*`��0?����1K1Bw�wuFB�������(_x�A�5[����������tpnn{$�U�+<3�����'��&���h�����H+�[��G-1�WxP��b6�v�t\6]R��I�����NIr����E�2RrH #���/a+'����%���oQ
�������,X>A��#t(�e�0%F�l��"�N���[��ru���
6���0�mA���q��=�6E����V>3��X4A��m��5���1��fC1��]����R���w{�����R�@��X�ld�3�2O�D+2-��z�|�X�AJ=Qbe���Sv4mK����I�K���&��TP"F������D���j�8�DJu�)��q�f2�x�^��(3�*����},�.
��{A��m�e�|^l��d�m��[���RW�����|h����P�y��N���^8������<GH���[����=o?D��$U&����`�k�]����@]��A����>�bK��S�]=oqf%��NrN�!"�|��o<�Y,������M~��H�~�����=�����|p���������=�'��q�J���j�-��,�1\� {_�I�/d&�<�i����^����D�#^��(��h���wO|�~���+����h�z��������J��f	����YC+&�/���AL��.��m�K�iU������4���K��2s��+��"�=)�<�:�D_�X�<)/����Y��+�#���v��o1����LF��u���w�I"'�R�@���8�;PU|�����p�_�CXuD�Z�n�K�xe�F�!��������R��E���C��]��I���c{QE��o}�X4�Py�?�J��W�>:-[E�>A*w
�@�L="��O�������G�V����(F�(th*I/~<�9VM�@�Q��+���c���x��9ze�b�����v���G=�Q��p5rb��9��OOg/���������������"����g��,���F����^��j���P�s�O�:i���|~���T	����[A~S���0o����f�GT�ik"������`<�?n���/A�������h<�����������Xh?*V�X������m\P��U_s�����t=WM��g�K���^�����:&�
��a���g�qa�,��3��t1>"��^I��PgF��:�����~w0����U�
�ft����>G��^-02�-��m���#��4�3����x�	��}����+��CN_�.�
�����/�� �)����������j�k9_��|��z�nl;W�12���M3b���`m�Z��6��sJn�w0�DI
�7:$7G<�C���A��s����y!�ZC�5C����w*koisq�������������z-/,+w,�Lq_�v����*���z�U����*������z�%��-\��������}��Y�p�l��G=��rf�������Q�L�f�s��r}�.lch����������y���_���Q������?vOO�G[����[+C>��vq��/W�����k�BI��O[���B�;����]<L0l>k�k�1�a�a�y3`�`���/���nv�`���	�Z�n�w�`��	I#n���@�0���6vk����f�V����0�T������-&��[�nL�p�����e���*��p���a7����a�s0��,SW���m�9���a�L�F�C�	�-,�2�0��;w�0��������Y��e����pa0�&v�N(f��Va���������a���D����)���~`��cv)��?|T�]}M&����HN��V~�����z��|"��\bY�J
��Y����TY`@m�n;�m��2����C%u����DH�Jn�%�\�k.�����9V#u>$���|<�5W�����n|`�}��������;���a���ZI�"XB������k����E���_3OmC^k%���	6���:��VR�L,m����^��6,����@����+%$����O��D��eOQR�1}�Yn��=63�W�O��m�D�?VS�WCP[[�R�`� �9����5��-�2�g_
C�h�D��D�p�{�K������O�=?���\���`���0%M��[�&��w����	k�M%���X������5am�����:�1^+g^�k(b��N���WS��4�`[?cT�G�V�X�.�1*
��v4XV��	�������������^��9&�������4�� �V(����%��V��h7?|-���Z��DA���k	��02����Q�0�1����Dy�J#����+�����X�#`
��\~�`��rV_/��k����.�c|}T��{�"�:6�AM�FI���o~���=G�����8|������w�f��[��I���^6S�6(�M�nK�o�����x�Q;��g6�`�~����}t>9���s����`%�2��b�	9"���d9aR(J�\R��J���J�������u�&r����� $C��.�����*��|ED��y����d"�}=~E�gnb�6
��"
P����}�^#�G��������!�����z�Nt)P����2���O��=7v<�#���K���~����|��'������h=(
o��a��fx�$����Kzk����+�.r�a��� 1������R�^FK,@�9���io���RYS�&�K����q�������i~��r�QmM_����Bzw��:]���<�U�#r�(�]����>�l=���)��#���������}nk��Wa% hP��Y)��Dq���o3�t�p3|�7c+i#�j��j���c�7����&����i��v��i),���p����;a�5���(�j���'��*���+�,�.�v�uQ>zW�bhZ���Ko���b3���k�QWz��(�f1��G�+�4�K��4B�g�K>���(��]�evm���hH>����z>�z>#�|;����s>��o(�]$��C���L��[�1 ������������2�3%���~�� ���w��^^��vkr�y�����t�8��zy%��GtM���fj@U�da��_=tg�A�:#kH����^]0��#��e������v�4r���E|�+~y��Q��e�:���4�3#<���Q�5�hh��^�'�C5�2�u;�Ka�6v8���$Cw��"o��m!��:�@X��E���x�2�����������l\�%������U�X�je������K�VP|B��P�D+���&�J�����J����N���S�W�4���	�+�k1�Z��8
�+�i���5�v
���*��.c�D����
{��Bu���cE������h���r����\�����A��rU%�{hc�n)�r'5�li X�6��/��*\�CR�*O���������V��J7N<��`��;8>���9bY��g?F�\|d'��A��L&���l�d��K��I�$���AU�Q*�|9;�����s�����2�����>�b+)A@��uKx��q���6-%�����P�"%����K��21yg���p�]68���[����)�'���&���]���4��H���[$`Yv\V��m��IkV����U+R����YKJ����(�[N��&�~�<��pJ���Q����U��q�s����WEz$^��b���{��5-���eV
���Erh��?5hF��#�2�,�Yf��ZG�!�	E
6 ���H����B�2��,����#�	=�`J����>+mY���WEz�2��A\L�pq��9�@������E
��x���j����A3�ga��e1�2�&'��ZG�!�	E
6 ���H����B�2�z�Q��i��#�	=�`J��(�X��V������e�1��X�����s��zA�2M.j�?yg�nM���B>���*�yvirN
l�z1X10�`��B�u*��|<����z6Y7P
\<�Z���+���HZ�����D���
���+�W����8k��M�!��1�Fo�VV~n����G�A�4�Yd�m2���29Xehr��o��:5��>���3���e�JzN'nKm���+��>L����L��K�������J���4+�'��Y���������{����0�X��b�h�=�s�Y.���Xl��:�h���N"�� ,Fa�,g�0������7d���
�M�aGU

{I�b%��5)"C��=5�a�������{�^���&�#f�����Wu��~f��'anU%1��MY6��� B�l�C�5*�(��)�!��ra���4����"�*��6��$�~*�7�����6�A�����7����5��&� ��G��3~�2��������b:o2����I ��d����r��,��P�`��9 g���1��9x50��4
���3�D�G����1����/���������~��)�.�8�Z���Ut������9�������"�i�h��f"p�^�/l��l�_7.�����{��f�:���Y7����w56�
h��J1����o����E�4�?�vESC{���a��}K�|����{��{��~��ig~)�'�����X^|r/����'g���0�}\��.��D�10[�4����p��)i���s�����vMx� ����\��<^nka��m/�kW��V5�"�.�;��u)_+���?�
���bM@~��/�������q�O����9��:r���^*	���b�����e8Q,.U�������p�{������V�+�o�:�(2����kU��L���|��o9r����=������]ik����u�%4o������(�����WZ��n���p2������OCJw�!����J^6�u��i>�q�PqN���(�=>DY�k��G�w�k��b\_���a-�������W�c@�+��~qe��]&>*O� (�R
��
�L��n*��-���n�x��UZW�JC�o������~b�����{�O?���?=9/��e��a��'����;�^�����2�H/��l��a��6�q�����R�	�^���������	F�Z'�Mw��l�����\�Zy�.�^�Q)�Q�������.�s�nZ��Jv[Suy�CC��o�)&���\\f���.e�����
����Z��jR�(I�l��9�����RC�
3��]F5��)�B|�(>������lA���yU)��K)���T�u��,Z�������u�����dU�7VZ��[�Z�}{a	fm�e��{/V���f�mJa��o��J�`���;{]�|�E�����) �M9��w�	92
��M	���?�b�c���7��)�.^���n������f�c��x�����7�b����VZ���q�nA���/�������p>���[�`�������N���_Q�P8�UI0��o�ZR�$@d�}h���p�L�'z�f\�z��	t�������P|��O	q	�m�&���78�vwm���m�����zE�L[]m�|/���v��Z6����#V�X��Gn����l�&'/�|��s�6���W���A���4I�V��C�w��4)!��(RR�p�hO�������l35 ���Hk�5_�e��H]������m��������j��[zVW����M\J��]hH������W���,Hh����|�-�s�7�"��{��:�N��4|O���I}�wj�.On�����J������_�
,H��}��_e�g���f�������=����N�?����������0| fk��>��������.q8�9#���������~��v8��$��c���+E���Kc�r���_��~�&'��|Xv�Y�{���w<se��%�t���s9�:��F�t��]���D�X��s^�_;����)����������m�C����]��
@�=����N�<��W��	z[RXoa=���� ��|akma������hV~�v586���6A��A���������o��t�=�>���w��Ko0���	L�Q��$��jj�_�:��	c�d��$z�,I}����AxM �qP5M��P$ 6fr\�FuZ����A4������"lQ_Jw4���4aR��7�[��o
�/l�p����EkS������Ha�8(_d����ma�Fa�#���V�2��8�i5@+���paCRX�����+��
N0��5�)��mm��������d�L�	FE�+F}��z�V-�8`���� h3�A������Q'�|n�������mV7h�U}5|�������-�r�����l��aC,����jt93�{
�L����8z���8��2h���FZ��C����&8M���Aj��#�i�%,g����
�p�����sh�	NS|a��tp��dh�kiX�,\q%P}�i[^����p�
�qa9�p�	�y�l9�p�	�y_m9�p�
�Y����#�1��-�����k���p���_9�������z���,����x���,�b����'qlE�OV���8+]Q���)qjS=�X�
��IA�R�	�at�	U!�c�'��
�it�,)��Nh����"��=3�e��H�����2RL�����>L��0����]n����.#��M�<{��I�D�� �����LNt	&�63��Wo�Fq>��!4�+m�mf��+�s;������Dfr	QUr�f��6�������I�e#@J���g��q	��ii�y�@r���'@=���������a����5�A�1\m	k3ye�Z��j%�j;@T�9�=���R���r��mf0���Fv�IH�8����������;Po
�k3{������b�f����N��W]��e ��l��rk�\.�r��o/A��Z%�L�4D�����7�$(���U��>����n[i�juU|axN���6��%b����+K=�4D������t�U
.�����e�����xM'ju�^
�N~�.���V�������o�	T�uBU��f��>q�n��S�`3�;����(�j\L,�L�u��s��H1i3�=GQ��I��F�
��f�����J��b�f�K�����8)�b��Lv�
VlkMB����,���v����f�r7���VE���h���,��A����$�X��eb����������jC@V��&����.���63N�	�p��>��&v�
Z{@n�9�����&3Zj�m�Y�}��/�#�nk����f~�>qz����!]��]1�����96������v������e�Z�2��z���$�h��e����������K,-���,���G��2����r�-O�
�Za�&�bbU��}��&��\��5�ES*��#���OMn	A���b����E4�����������������O�F��RZ��*L���sQ�k����0���1��U��>�[B�JIqjug����M��� ������;����l��f�^��e��Z�@j-����6��D�% �U���'[��=�[�U[���e�'��?�AQ)^����7�����������Wm��x���RqM���'���\����Le�G�gW;DQm	�kU3������0!�����
Imf2�����v��lF�sm3�q��5�M�[�V6���q�?p^���V5���_z1;[��Z_m�l3�e����"+��U*nq����Q/k�+m��Rq��N4}r���nV+���b{��m�V�Mq�w�g�<�m�o�C&b��IxRo�my�D~�T�y	�76�sG��2�����v��6����ydHL�O�y��j��O;�lj3�����I�i3�=G_��i�L+�b�Lj����T�vy#@H�y�����[���Am�,����\1)>m���{��V��4e;@P�II|`p>����]L����~�z1��M=�������O7�2+�Q����������e���A�r��gt;bR|��Igw�qJ7�I`����6sS�������`����v���^'6+;b�v��v'���7j
�kbR|��Q<�������AKm�(������:�}R?�V�i��:���d��m������+�����,1�,���_%w�]�x]��j�,��HU�j���S�#����>���e���
Im�^|`�������K��f�M/�mm�R����	����������_9?��>�����\/�(N�d�����gxs�.���Nt��Q�l��K�k��^���^���l\R�B����������|�/����������W�-�O�x��IR7�cK������k�������L��������]��G��S%%�
t6��+
����_|����������#P���J��H�O\O+����v>�\������U�b'a��#*I��;��h���� 4A���BPC����3��.GW%�=��C������s�.��(����t`��|k
�nM�����6cO;����`y1(���'?qIF���+�� Doy~B�\�P%���9�jC&� \�2�Q�~��������}>�f���t����3�����)����"YX�������q j�>q��^��;���K�w����ZW�@�Ma�E/t��8�b���O��������=v�'�S�-����>�����1��������wV���AJ�$� ������5�/�a����{����������|6��4k3Dw��m� ��#�=]��.zya@xg�T�]#D�����o�!B��3��
�����$1�k�DK�����'����L�2TfS�fu��pb�E��	����{W/�=�(�0r����0������~r�c��>�������lU���i�9������[�����#*5���Rf2WWq�[c��^�c���������'�-R��Z������,%�����P���v�5�0\�r9����P����C��x^�w���5q��N)�H�\���$��0
?�C�B_�:��}����#�5"�%���e�O�;�5��ma����0�e�����R�b~�w�����.1
�J��}�)����z��M�?��� 
�J�}�������g�G�nF���)�����8`C9��8l�[Z�0Aq��E��H��.���q��<��l��
�a���$��f�M+v�������<7t��1���y�r��R��x�Ic7L|�}��RD67�"9���C^d�/P��@�h�R�Q�9}Cs������gz��~r+�e�c
b&��7_G(� 7�?t�f|A��W�k���c,Z�� ������C]�2���o	ph��r�g�3@{m���Y!��p=����������O�O?��w�����%Y���G�K�A��������ST_�����9�h�k��
�)��i����R
���x����''{?}�Y��3V<IM�3%���'H�Lf�4v���z@�K�������)�ds�|���mUz(��G5m�Cq,�5�-���8o����T��V���?>������8�TwZ��qo�rf�����(����:��s���	S��/Q|��������������?:����p-,������DFv����k����Q���O*��aKP�"I�E�����f
\����*��1������^�L�,=��\��rY����*>4@��Cds�4�Z9zY�FXKt�y6�> �*Bs������i����	��db��n�Z�C�uR��!�-	��w������@��.���(+���y��([>��`.�4���:r��Iv'
�%�
��(*�[l�A��RL[�F��� ���	�2\�{tv7I��9[�y��^5�?��J���@ihn�c�����d1z����p�>�%J�3����w�����xt'�6db�jC���nx��?:�D����D�G�x�e�D�6����g��`�
cK�"@5�{��z���t�cOf��i�q�JT��6/x9J`?����o]'
dDV��K[���A��OB�"fQ�'^���%���y7ek@�%!���#EC����q��]8����]o�H�(���������IH����-�����p��Y���t�z�q�b�������78�M�V���v�OE����''�$&!�|
\��(���+��P����;nW����`�{i����In�f�Z��E���5�����n���B)c���M�2�2�����\�s�W
G�,@2����m�N(�Jd&�E`�	@���l��Je��	�h@X�� ,�MG��<�U�UWTgq^�,�@�F�"8���fe�
;��C���E������w� �M={W90c�g���;+Z�I=����"������1��4��*Ea���
�����)�jV�'����+�b�P�����*��~�d#�v�l��	V{�Y���*��T�$���Q�(GPoke[T{�#�������^�i����~�Q)�n�F$�������Z0�����.:!�����6�R�h�V@Uq���Ujf�����[!=J�?��b�ua��A����t>D�Ix��q��f]���q0�f��U��c�{���N]?L��xU�Q�H|;�DG<��
4Z��js`�� Q����d,�B�x`�%�����Rz��b���L��~xv�����*��s��;��.����%��������\�%�G�;�Ej�g��>L��[����*�3I��hh&3<W�
��YG���U
l�����5Q����a�l����;�U��,�}`�8���z�#
D(���G��veP^�aD������^V��O�eQ=��������z�{x��(~w��pNE��N>�m��iQHV�HU[#��O�{z������B+���X�M��$*�����|��='�:p�����{�T[&�r�BW��,kEdQ����������>�J;������q:�U�.�O���o����<���r��n���X���x��kx�VZ#�-!�&9k�.}�%1�ZX�������zI��3����v���`�j�$o�����
��~�n\���%�AW�����P�[9F��I��F�g�7��w�v�<f�2m�h�^n�p��C�I��G�������)�� �)�v?iX|
]8�0� �cL�@��l���pj��[�������9������4�k��t�oV���ds";�Zd��=+D���[B���e-7���|�5���_I�Nm���n�/^��������W7���fE�,!�b����8���P��(Ys��^\=�1g���uK���NJ#�2@_w�3�60�GmD�.&��iU��M�m._�j;�
u��V#�E�@t�������u|5�V���m};1���f-R���'�,o`�O��A/�M�h&de<��nR��BXG�X�d;�O���&_���<7i����q�:���9i�������'��{��	�1�T\~��0XHt��.�v�Q�G���i^����b��K�	�0����D�r��9x
�A�<	I���%)�{|��0Qnw�����h����7�AJ�$��@RB�tI�	�	Yj�������!�&E�~p�A��x���yoM���i]����:2@��n�@\��5�2����'��6�${����� ���!h�`U��3�P#�fk����J{�j�<����j1R��Q��-1R��Q�T��?������a�@��UN~i�����������I�L����[�q������������:�w�'�Qeokm�goH=lu�O��n#��������Z
h�O���Y����5J�����fM��Q�	�������J7*i�@�D]��
eE�[
�Qy���`��#C"�onz����$���x!���f�����X�U/`���#�|����X64gf�,��;
p�+�w��s����k!��o�O�7�'�/�����������T�Q�����;w5��)S�J��=��b�'����'��g�eC�|��v��n�����Z�0*����
x9�5`(�m�����N�k�������}�COdb�w~��yA �`oD��&;��N>hi�����'M�U	�Y'����+�?���+��'��Y�{�
w�$��.�+���Jz�_�T�|VWt���_+���K�9y+zm�����'1����ft)mD���n�`\�;�e;��6!��r�x�mbH&�'�O�zPG'`~8�:v�=T����,���z�>��_j��3!/DwG^���k���� �aY{
�v�[M��A�f��d��cO.���:��'*`Z��P[��b��aE����(��M�-��v���n�e�])h�9��>j�&/�+ZO���v^��@R7����*., m���E&�M����M�-��rZ�p��W�������[�|�
WB��+�ritAuv�lG���0��7�h������A�:B�q�t�����N4�%w��������d7|���7��xs'^������}!�H�#o�}�����_��x��_���W�q�h�|a^C��5{����h��Bi��Q�P%
��>�I�sq�X\�������M��S>���S;mT(���	|��l'�S�8�HZ����9�^�e�M�VI�����A�A��V[�@�j�,���
+�d<84�	�C������E�<������K���[$��$�@����_���+����$�8�A�c���k>/;�e7�2��L�5�c����,��[�������$����!�Y�M/�	k.j/�l�����3	lW�x��C���M��^��F�����Z������.������y���y���`�r�]y��;�-�K���;�u/i9��S����_?�_C�z���_����I:R����U7��m7v+*7��>�����J�#&FZ�+����U��`K�t��<]�F
�
*
py����1���v����7���[���m	%����^x�!}{N�]�B�=�I��p��V��U�|�����GF�	����z4��}���>���-6�Z
�ei
�
z8����`l���t��6-����rw/�����C�&�Sj/��������0N�7`�!��#<������=Z�L��+�"�SDt$K�Sd`_�Tq��������0�b0K��j
s�z�X�.8�z!�+N��*3sPI���F^z��Vi�����l�us�����S�e}���<�K��0�^����/�������i��:� ��9l��51a)�-�Q�r�X������T�z����e�:�����-������
,��yTiY�@Z������E�[���z{�z����p\nC����^�|�>_���1��OS`����(�5�Ip��~������K��#�C�����f���^mPo��-��#������� �ve=
�VLhQjU��Onr����F)��@P���������<�w�nkU@�8J�����v9��D=d0��V&�����f����!��?��tpO�D��J8����N\0���fL��A�A��5�.[�#(�r_����	�\�����~y��w�9�V1�������9�E1��?��p��
�� �g�������}���Ai���6�m1��o����L3e���}��8�mV�B��VnH���=&RV�g�r�*����$h6�&/�����1�o_��m�T��X��������Ew�*-i��T�fY7j�P)v�
\*�[-�[1���$��wf��������#qo"r��;fL(���e�	����v-�!�b9E�o�����`9E������A0�'.�hm"q��+��d9E���n�!���{��a����`�C�e9�OE�K��?2����Y�<�E1o��pjU�EkP'X�'���,1�JL�"J-����%M��7��+Oi_>t?��������/����2[�����,�1
�={Q6{�����S�t�p�B����s����W�/~��%^�w/�
��)Jk��4�A\@k�����>p;"�/>`!��W�:�nx��g/}��Pfg�E��e���V?��t7t����[���T�����\��a��`��X���@^�R)"(��t��ok\6�j�b�$�
�B����5����Y��jh9��uK�B��=���\�2|'"2��G�����$����j5��*J�Wo�Fq�����|V�%�VV���}����jx���.��f�;����p+5��`�&v�b�p4),�G��6�$MD�>js����
��.��@|���bYu�-������PYL,�����_���bQ	}]��b�Z���FK����oh���G�v����M���"2k��&WS�uZ�2lh�I@[MQ��xe��u��(x����u����Q{5CA������
��j����+w$(��R��Z�h�/�mP�j� ������g��/�r�?ki����J��*�g8�(+���&�KD�p ��%����
������?v�N[���BPx��?�Q�p���BT4�g�&���h
k
�2��rtd������(�����r��[Ho���-����U����� v����]t�/[���#MtK����1D�\d����G����K����
a����GW+��
�ot��B�z���J��L��ry�7G�$��)7������o9������
�W/Nk4gM����F�Z��ce����h@��td���<u��( ]�*CN������M�����J�����!r�(uN.��*A�L[�%���M,�������F�P�1���+����&����������W>[�}Z��3[��&�z�/�+if;�������o�<^���|�AQ��X��P���?���I���c�u9��n:�Zd��:�"&m{�9x��SiSG�\;������\�s7sQxU�.5�	���U��D���l�����g+?�������	�h����8/t������Tt�Y����EOT�M���Z"t�<4��\^�b#���|������9��k�q<�\)��PwQpH�#����c������/k��q���?����������C�D6��]�U��V)���
5�fK���Q�Y><�vp�HzI%��1��it��:uO�������-my��V��W7�.�]~�9�8�Z�����^�/6(mP������d�n�1
SFGKj�f�����f.,s?�������F���j�-�-)���q7��jo\�5;ccRw+|�m6�7��V(��6�^s�j�g��z�)u�cJ59��M=�<7t�����~Ai�'������w�A-p��r���yH���+t6+�l�\c*���:�U�1t��Q<��]�X�|c�<�x0
e�#�����PL��$�N��o��b���pT��=�L@Q
KZ&�d�p����T��j����[�]$���r6
R�0r�������R	�J9��,���I�]�BfMA�K8��'�����r?QE���*7������pv�Uq��+���7u2u��7HL��������3�����Aw�hE�����%<�����p�JY�R����\f��<��`O�_u��(�KhA��S%y��9l��k��\G�/R�DX�����������V��`7l��%��b�_����>k���l�+y�z�l�=a4�w��7��7�k(w���:��p��z�
�|5w�}V�A`�����}�Um �����������LX���-����1����TeB�wU��q[aO��2�w�[�[n�.M��[4�-���k�N�9N����&n���7S����y:~����}{��6r��{�����h�zT���g[������w�������bUS�"K|twM���I<$�bUu�wvv�M����DHd�>��!��sb����P;�Q�#�.2�Y�}��	���C���~ s���������A1�}���t!]�"*���#C����`.�w�s�5��J��<.���A�z�`�J���!��q�� �]����2��U��s�6��{F�4M���n�T��q�D�x3���HN��6Ef�����9j�0w�`�G�{�m��1~��d�N�{0��@�O��0f������a�6�>f��&�E`/�G�!��{�u\]�]�����V��^����n���uy�����j��g�l�B��}�9�>����{o=��|����$����;��Z�d�K����e�d�'y��5�@3���i��q��gE�#}�����>��a�d���!������(>��+��Ya��OrJ�P�I^�K���5V���t>�wF����K*���iM�F�&�-��y�98/lA�����d?ed
�,�k����)^W������,����l��	��O���:&��w�LYm7��	Qh��e�^GDz(F��;�J���Dt��d���l�������m�������-"7��0jIBH�W���;���B��� ��"a��]E�E��>9[�����H���^M�����
�z�������a��c��Adw<u�������=������A4��8��t���8:���1�-�f���An����J������AlK�������a��8��i��-��S/O��*\PZ��0m!>��n�	�y��fA�'��W��&��J{"Q����9���t]��G�a�B�
�a�U}��!��.BX��-�6|�Y8�=J�V
�F2��8+��,���i��4&'�"��.�P��O�[��$D�oJ4��gC�
��
��lj{�&Zp����u�1���h7�V�~��=��\����#�Zk���#RmA�����R������������F:��RKz=��Y�Y�E)��������Z��R�"Z3,���M6�	��}�uG��+���Sc(#�0�E9�:F��:�Y���6�8����em	���nM��	#W�l�d�2�c1�=l�#���=���_��F!F���|�
�kR�v	��H��W�U�2��%5��������`�f�����$S��	��V�E�@�I�{bp���GM�����o��Jf#E"UE���!	+����,��	'?n�z�t�.�\��\�E����V��C��x����F<�5�>��:����!�G\�d�.o�<I����,~�8��<1%� ���"�.��U"��8i��~Xh�+���Ef�~�9N��-Kl97���U~����W~N�r�@�Kma�����9y�L��GkrcH�m�A��=��`9���������K��>G��0q�����i���Jb_P�������������D����O����aP������2����g�f����y�.�e;�K�x���������|-!}�~��{�F�J|����c�]v
5���\���;2�2C�'��S�� �K
|1�&���	��O����Hmi���7�����C�F�
��#����r*7��� :�YI��E�M����^����O�k�Zb���j��j���Y��]mky�e�s�T����V��b���0�����U�E�|=/v!^��l&���j�����G&s7C@aI���d|�m�R���5��FD���9��F�5���
@��Dh�Y��:"�a��I�1c7��A}M��h2�R����8�l�g�����}W����%�Geo%�]WR�^R{�/L�D
(������ID��~��6�p��v#��i+kgY����r�c��`D~��H+�m�W*WF�\Y������t��hq�i���<��C�J.T�nS�6���-L�z�F�����.���`�B���r
��gJn�Su�|����"]p��b.*�R�t��H���.�3�.%L{���z�����&5��~�,���e���<��K#���]D��B�#�^�=h���\��]�J�0=s��?�c�y�H
��ykvY��j��Iy]��B~�2�AT�F#��I��[h(�^���:b,_?@�%�y�l�cy�W�;w��*���r�����4��'/�c
��/�f��!Se�M��=���^Y����j<��&�U��C?����
X�NW�&�ha$��tM��yM'������������J8P��v	������*�a��{��K����i���q`<j���q��^\�t�.����5��W��1��l���c|�C�\c����u5~V��)xl��T{��j��\��H!c���5�Ny�`2k5���&����Xd���BtDW���]��X�K����5J�J��z�����M����������O����*;3B�vlu�p�1�[�|����U�����`C���X�kX4V���u]C�/N�S,���s���!��H��dV���1II������\�kHRC�����7_e]��l��k�!�UBC�����u�Jf(�]6R�����[Vx�e mG�����]�?�v���&�a��CS��6��[��bW+�4v��X��b�,H��;����C:h��;�Yej�I�#��$�U�Y��W�j��E�g�	�2�-�F��R�(��}]�%�(H�}���u;�#N��!�[P�L[`����_sv#-�shq/�h���e�y�K���bW���f\�|����N�C���D����;G�@�f:u�� T������&��p8U��u���]y<i^�9(�	���4��:x���K�Q���y���ow��kc��Mh��y���!K�:�[��9���������0`����	�f�_��k�����`'C���vtwF��i���G�]&�_kn�Y
��>2������N�D�>I��Q�o�K��7��v���s7�yK	��r�;J����~�M��7`	o���+'{
�m���-ux�M#����Y�[���O���r��Sy2V�l���M������R�s�K������k�\�������Z����o�6��b�TH������%y,i��oM��|EN��C�`L@�(ZA�w5�fG�`�zi��-�K#��pF��VV0��������1t�qSCe�	�D����D0�7�X�5��U��a��R���@��������x��LH�����@����?M��	��Z��s��`��_S'����/k����<i�}���7����)Z��ls����4�a]g�e#aar�e9�2])N#WieD�t��QKekZO��u�y@,<'O�h���T��$�T���`���|Q��!�
�R�����/���Q�9�U�t[[��������A:�-k��zk�wq� ����\�����v�\Ps��!.�s����_�:c_��3��{�5%�x���7��^QN�Q�r�/\UE�-js��NQ���������(-��5UW�"���^��+[D:Z��8}Wg=��HGk���E��h��s�^�o�D�Q��h�����IA~�L)1+57T�� ���BLn�|
�w���Xj	a���G���~���1���V5W,�y������yy��~���'o�(��&|C������g��z���f4�WpNc�����9Vp*��~��~2H�0�x�5H7���#�~���n��
b��S��Q����L�1������I(���"g���G���b���n�ce���d����A��'T��M�]��5Q�`�������J�~�����!�msP��Lc!oyU
��9���{�{��������]z�7�cm��2��j��"ZN��dN��+ADO��������A�[�}��n{��eW��n(�3 �*`O���������
��B�B����8�L�m�(���"R�B�<�������
�K&�
��_���s�B��z��=5��j�n���n�|�|(����-k��0�:�S���>�sT�#��f"��!�:�p�X�5���g�{z��H�|K�0H7MW���'A�[�(Q�:B��@�{�dri�Z^n5��t�������a2R��7R�&����d�k��d$�,N��E[��3�����.����������B�:Q�%T���'�'�%=h`%�R#��|�}J�By�+i��4��2�����I��������k�*��8�m��#-"�qe�����:�\��4P�������:m9��������=a
22I�xP�Y��5j�N��&�6t\']JI�F��ab�p������M�����\Y��O�e9W)L0d'���E�Py7��C����d�����Q�<���'�*6�@�~�S�YSH�e6?m:N�]���)��J�^p�"s�1h,d�*HiQWA�o��f
!��
;����&�����H��:�\���1��q-A�D�D+^���1��I��(�j�5O'��x=�2�S@vz��zP�6�z��2�K������,g���w����a�)�$��~���+u�l�&*��UD���z����ZE:���_���)���$U�+����~��!����ZF:���������1k�.��F���?{��a��w�l�&��F�Z�d�}=e��C��z�1�v������5���y�*8w=V�
"�4�I�V����O�"�Q��G���S'
���n����C�"������D��x�6���?�u�bWC�=1|#V�p�NZ>�Ig��R���<g�IzN������D�j��A�w�~;�I����$��+��M�����6$���y�;dfM������<�����k��Y�'���R�t
����w�����U����?��������������Hx�a���]`�3D��E�Xu���G^h�������QOL��N�����`��:�tU�
�i)F�u�&%���L9����
�)�=R�x��h��z�j�U�ZB;H��E�._(�+?4u��u�R����B��-��b(��\���1�z��+�n����/z������$9�G?��81������"�fp��������^����-_25=@�/'�iq�;/��`	~�������8,�v�&�SLX��eX�����5.�Q����1j��
�&��8�)t��	{�z_���H���@�I����Q{�s�`��?����c�D�e����4_��U�a��+z�ik����-/H�P�$���v�E��'J�L�p9�F����d�6�fv��Qh$��n��0dK���!oeG^�,��f����FSg�|�
�&u�&���Q�N���G5,����%	^�K�`�Ql�_*��JW����o�-S�;Y������yD���)E���vG�:�a�N5�i��4�&q�.-�SmE�~���.-j���-h��VK['���M������evO��>m�R�9�B��Z�:�M9�)�k#y�^��a�w�D`���m�C�WO]7�)�Ai�4X���}�b�`�Y�O	�y5�p��R��}��P.7�'�e��C�����u��P���L�=���� Yj�Y��^�P`(k�/!��O���:�Z
4�$�6v��
'�K�8��[���S���4m���6V��6�J
�M\D���9!.����H��������(�������#D�6
�@��Z�����
����&��b#"�g���;�(N��DH@��<����H9BPPK��e �5����*���;��^.�?�#V�w��dh��(e���G����
M)D)`�Hj������������KS���t8������#MzX�K�m�,�}���cD�Y'i���<8LG���=�U��}�F��������wIW�X�:}�a������D��;�r�;�A�IK�����ZGh��������V���;���dWf�����VB���~{�?]]-}�QJ�����]W#}��G�~I��2������x3=����E#���
��!��d(��X�D8�l����Rl���jK��G���N���jK���&�:Bs�Y����Xh���t���7�B�lc���e}�hm���z]�������������
m���}�������> �7������
����f�Qk���'���&JLmWe2��5�m����R�E�l^������i��y������,s��W~�)���26/%�!����~g�)�B����W,�9��R�)�~�g��s��\�-��o��6G����;�y�Q�%_&	���CC@y��)�<���q��������D�J���d�����U�0������h�B�h�%r�c���;A��[C}�V�x�e�{"8�3��5��d���� �_�bf�������x�����sIn�s ����'�����YJuQ����c����@[/#��Ig�!S�v�6�#��4���y	Y������	*�.��{8�I�u40'�Q@Zn���KWPI�z�D�a��*�s��2�0@6ki��{z��eD�c@� ����uP�MR�"���G^x���R�Bw�k��ef�������9L�)�P���4�3��=X�����t��"�� >�������d{:��L@�>���b�^��>��RF�g&
/Q��BG���x�+��K	xVZ@������Tm����IB�2�-��C�qE�1����1Ve[�<����n�	��G��f'K��3w�h�+�izf����H�C�yR\�fn��Tz���@�X@���z)���)Ns�����
Y�������A�.�X����Nch��\������/j�@W�WlI�+6�P�U��\����t��?��6���.d<��?i��?�H��`}��[-8��
�a��)J�_�-aM��������RZ�V�tHR�Z�j���D��$r~�E�7�X��)M*�?&�S����N_u�+�K��S8��9�h�\G�K����N����,� �5QT>���
\��>��<�[����@�D�%����;���������y�l���KUf����N��\$������4SU�+��4�$�+����#v!K<�Aj��9U�d�'���������25��J9�/�a�Ed���B���
�]�s��o����r����!�����^}����L�����)b�jR��4�I����x)p�p&*)H�s�BP�R��\��O>df"iZC]����JqS M� �����=�d��/1�$�$.�J�?��p�Q�*4���������;i c8�x���;1d2��<������%9��������o��e�N�c�}!�u#��.!�k7F�5�
W���UQ�/��|q��w��.�Y1_��l��Y��YCU�XL�����'j4��)�U��*��vU��K�n ��c:�S@�zAX3�����yB��A�/MvfW����S]����o�������(�ef��f/$8��r�vAC6��\2����:�7��������M< �w����:yB������[���nB����C���`�T�<���#�~��~]}���+jW����������"`%��Ew"p�������C@SR�'l���^��Vso$s��U��\K����������!d�(�dsw����GDy�k'��mjcg��Dq��p.{�r����'��&�G�����f�����Q��J�p�]u��+�^�$��(���������P��P�pR��>[V�"�r?^�JD�>�����L��G��j|�N��9��\�$�N��k�^��b/}�R�w
Ac�+��w��Y��BC����W4�h�?=S8��!x,/3V�!H�<V���Q~x^@���P= ���}�}v�BP���i����r�1[j��AB5���Q�X�;/�����m@�@��E��>Cn'py9 |J����b3j�W�������{	��p��>-n�w���g�xM����1�S�z4�����E"@2eS����It��.`��A�:@�5����t���
��]�n����M!����~��Qi�����O������jI�]*��b�9f��}��������^e��6��=�V����8�R]����n��s�1���!��Dd��x)�%|/�������������ou��E�hk�B�G���"2�72���l��"H�d���1��
@e�p�d���J�~�����
R����xQ�
(ePPF��J�c�'@�cP�\��4��e�����y"�:Ob�c��{uzB�����&-��C�A�tp���v�����������lo�x*������o�/'�Y�54��6��E$��S
�z(��q���4'�6x��g�2c0�c
H���b�]�����S� �b��H0�����>~D�[�e���{|��#����](�.����/��L"�K�b���F�UACx4�)�����|Se>�����es&\�J����/�����-,����7�m�����:���a�Bz	)�C���u�`>����K��{��E	5�B6�6D����O2��'�W�����{�F�(b�
���q� T.O�W�����O��"�xu/����G����^d��z��]P�����\����Q�0�m�m�Z���aW�@����.�[~��'[���L���[V+n�{�l�s��KA5K%U�9�U��g��)$�i���(e�v�Ob�N�,�C���Y=���
�J�@�mzS�D0�����
y������?XN��X�����p�����@�����E,4���F�[Y����cHste�7[�z�pis�o>�D�1�����U�Y�&��GY`��XP<�;Whbm����%�DK�m\��H/��>Mu��1�\��.C��7�-�t@�c @�!.~�.�t�&=q�����1Y����������T����@|	�����R��G����e�\Anp���I/�7��t:Ov���Vr��V<2���C���~��R�=,�l��6���[�c��7�����O��N���I�.*���9��'��K�����o����.�	2hz���@&
�i����&��On|&��Sp�%��V�#�8�B+@AQ	>_MEn�G{��O���&�C��'�Y`s�G���������U��������&~I~H)���*�4?S�Y�(�+�t�/�^D>t�m%e��^�(?�c��&�F?)L��|2v�o�������H`KZ���t��c���Ty�E7�64xg,7+�[�T�������������:'&V��	���!&2',<N��<���+A�i|��l�����'Cx��t�Jd�Z�n;�J�q�lI�,c@�0K��n a�JX���d6�a',!���|o�<��E^G��"^`��{�1E#���`�X�P��fjF.����������,�>�aJ����w��]�}_�H�G��N���r
�b8*����x:����BgN��.��������bvU���NCSb�������)N�&�S���(<����wxk�>�d�O����}�0��%tg���t�9����,
 ��Gs�;o�|s�`}�3�+� ��'�Cl��na����q����w��.�{t�!_��w;� 7p�/��G:��+��CN����Xo��DG�X���Q
���������<s D�����=z'�!�������<v�����@�������5O8�*vSo��'�)�#�!_|�w�H2�r:?Azp�9c~�o �c���@���v~�`?<�����,�pQ��3��w1u��2Ne����p%�q���{N��B0����!:B:��|����8�>�$�2������[k`��Q�(�����N�~A�������$MF��A�	���5�������vam�|AV�tr�@��|:�������o���z��}��_����/���l�����~}�����hBh��+���7�����D���+9�U�<K��lr�g��W�R�b|dZl���@M���D��(���I���]��ZN�j�zG��������>��="�g��%���hj�!4�CYj�������?��d��z4Fz4\��{4�zD�o��RC��X���jj����/��Q��Y��P��,j���6Z��A�M�j��5�����z�u�~S�X������n%):�mA���h>�pk2=n��8��#F�)�#�Y����w�����q��`��Wdq������49������JF/-�KB���A�� ��h�m�@�`�HU�`!K��2"�����,�:R������Zs�j�M��J����X��H��Z2	o�h��s���kE��M7��7�Zr�������Oq�_�HHEN�'YL��j�aS��(l���d1��#�����?8�����?8�����?������?������������Q��3�]tF����w��.=���g���m�j����~��YTj�5��?�Ng��sM�eY���S��Z:s���[:��nJN�q~���0~�a+/���;=��+�4���qR8����=T<�
"(�-"x
�(��0n-�s8�c6�y&.3�^Uk2qw���6�\�`�����.��2~���f�x�6��rW=��� �T�()��l��[�X�J�P�J�S�>b�~�������Ka�����	+�G
�@���2Q�\�T��b�/���->��M�!Un��������W����u�P<��J��:�B��e���g_*e���d���)���A����T��[^%�(����a$��i�O������@�KV�E'��>�Rc�B�������>�'���~J�u�Y.,�%"����Q�b��*�h�WD�4h^�A5�g�|��6���[�:�����eO�x�T�r����}�]��E<p��w�:i��o@�$e^?~u��S�8������-���pC��Z�iq�/�(89)Xs�@2�INq�D�s^�a�C?����]��	_Y�qg�����0�t��3r���J�o�����^4p~�2Kr��/��������BO�*�
u"'*�O�����7w3����qr��~���!��;? ��4N_���
���l�p��8����W�<�7>����VRN��8e�*4	Nc��s����8��cn`��G�A�A�D�{G��F��I��i�����4���c�s"(�0��H�����g�xBqS�
�=��{���Dh���@}D�����\�1
 ��c{��/��'w*��]�T�a�]��]H�y�����������6��a�C�T����4���Q����NU���e#����d��i�z��~���2��F2ZK����7?.?|���o��_��A��U�@�<F�GY:@����\��������k��#�:p�P�e��6��^fS����M��qp�8�����c���A9��1W\�DQy�^o]t�7�X��0Q�m0c�F�X�?V�+tE����	.y���rDN-�l*C9�*f�)����ij��<������t���%���=�T���G��%(�A����"���l�(v�R����D3
w{���������Q���
[�N��{��1tek��)��7��W�bx
��������(���5�$-"���(��9�+yj/�������8�A�xJ�J��^���!6l3�yG�}�-i2���K��������l�1\�Xb"�O�$#][�<��?HBIj#�=�S�J1ZN4u��K�C$X�7���
}����1��A����G�,-'v������4G��)e����1��R\�XM��m��yf����J��V��@��bg������a�C ��>"�lg��������?�s������o�sa������I$B:Y�%|k��!Yq��A����X����G��+c`"v	-1�%�z%b��|�����-d��P�2��bP�^TK�@�flo(�f/�	�
})�^�0	[���s���]��A��4��L!�����|�6�
}�bBKD�������A�_��}q�3�a?�L��|����!����g��
"�#��%���.,I�+@�`E�@@#���g���a7�@�u���
���U�`&o��	8��8�����m--���*���E!Q�P�����k��b�R9
�T�\*����d2���i��/��N���h���.�p��uQ�rP-��.��P�5P����z:D�PWW	����Xl��T���T	[�r	�e�K���{�������:����m8������ ���������?�{��wR9�)����+�T��#�0�E�c`�P��7����{�^��SrLMH�PL�m�|e!)�����W6)�N�4{J�>�`�Q����TPR
�	�aR���N����tF����s�t���s%D���>pX@���|�4pN_�!E�3���N��c1D�F����I+-���a�I��`����w&`�����q�BRQ�k�I�
\��SF�K����0��s,Z�`E��B56	����}�� R�R��� �2>��<��J0����w�J��
�u�1����e��x$?&��>�#��!S[?�P�4\Ll�l�xi=a��c����)<��15�v��������b���$icDS��:�>7��]%���7`�� YwaZ������v��Q�����d�%�q%%�����4F��:�������k�|��Vyj<,t+l�������i4�
�B��(?���GX�<��R��iK���v0��Bx�
P^�"����IDO�+�q��A�������g���f�.�@���X�	�Z�9T�#l��a�����o����U��K�7������<�
���}�/���[2mW�S
��
�S��Ve�����`�h��/��`#VD�Q#_����jS5�y��#4����C��
j�)��c>���j �:��e�J������2�P�^f�?���
/�E
;���OQ��b&���m��4���1^�b��x����bd2�6A�	}0[7>�:H�m�����*�a�U-�E�:f���7
-C=Rh�����Fq7�l����H�L�LI�{�#?��q����l����
-�>�e'r����
Dq��
��2%�D�sKyZa�.BuGqZi+�)N������R�&\*�t��o���������[!��$g�
e��zUN5���1��"��A�(����s�w
0�&������=D��O����e@������Y��Sm�B�������G7X�s�����D��j�|�1N>9�E�Y��Y�$�����\��s��&>U����B6E�1�j�6-���b�����k���v�.k��v�VJnE��J9!����4T����T}�/�v����^��b��Bo�"�u��!��������vE�#`/�������v��������]�:h_W_>`s`=^xxu^���&
���&��%zu�#f���S��'�z�T��F����hpkq���]��6��Q�k������z}f�]h�L;�������	��g���U@�wR'/h��5���>������
��b0��Gei\x�	�e���G����Kzd��-���,#/��[0���[�����#V'��E[q��G����|�P�[�������E]�uu�{A;0���
�Og��(��velADW.�[jG�����,��1�z��Q�b����]����]A{A�V���h����lAC�������������|�H7A^h�ZM	��2��X'I:�zs���A�dL���/���)�����J������X��V������>
5E
W�w�j�W��@c���WG��xA��V�P�����&f��&f��=��e\2o���h<G
�
A�h�����Sc!��J�4�~�"J5p��}�;��o�������>��bW�;p 9'F�y�>���?�N�"�6�Q�=q��FO;�S����w�8�C9T�of�g�4d�}�M��/C�Kz<��+bO'/\/�2��0{,���J�h���oc��>G��%����eB�,��
f�s��	�_�3�p
CC��-ah����
��9(0
\U�H��z�p���;����&X�Uj�i����Y�es&�Y�pVl@�������5j� �m��A1�����{���}��t�u��u�|u{�#46����,���FR[���g�"v�����9FC�T�s_�����hiV���Z�M���6�P��Iq���l�s>�R��z���U}/��������F���eat����<
����!::��/�h?.�DW�]�B./3\�����\^���(4�N�`;
LwBz;y�|~C�3�}_������j��'�v~�r�dts����,#;�����-AY	�R��Z�-����5�x������f����<��L�
�C�I���O�=���s�B�;���ba1�G3U���r��3[�\C
@���o���^�E��\O��1-�1�+�-�1�#dF~�e��{�tSzw�nxi��8�,D�%�����\�/U�Y��/�|�7[������Z�X�KL���%���:��g�:�y�[D�����N��v�Vhr~4W�������������xzS-��Mp���%!�hdULS���R�w�>�0��������1�(BY["�-�z�:m��(Q"�Q-BZf����4N�7�8� ��g���c5���9_��C
�[����I�l�z��s(=}E��������������7ty�%����D[D�� R��O�V���9_6-FA+ P��
1�$����%v��O<z��J{B
K*��A�>P�C%mP�6��,P~����I�0#����
�f���\�j3j<+%���+Fz����8@���-���Emp��p�h�\�LK��m"���A�&P�C%��L�+#"I��C'5X�����1����"P�#%-Y�L����`�{�Ce8@e�	��UY�fL����y��������&\:}N���k��&`#j�<�������e�6���`{~�l�!btF����bs;��n>tC�/�5�5X]�[��[)t?'���<dWJ��?��������p3� �j����v�����qF�E��  ���i����
���S�5~�+��C%��w�4�����}��l����{�������}MF���&\�K�p��i{���!(�L���v�!�B4@��k�W*��lX;�W=d��=�Xf�g�; ����-$��N��T������y���=|^�������yO���� ��ON��������n��k��"���:By����'�� ����@����Q�%�e����D����!-��
v�>O(h��VZE���^���R��a���w\i�a�����57n��hm�
M|�`W��;byp�.oR#8dU�	��]Un����0��v�������/����b�T��,���v�����
���]�#���v����7�%���������[���b�J�p�U��i�e ����o����x�L?��}���+��1Y�#+Bpd-�|$`�]��h��|%�R���B����HIy��>��uA�[�� Y��T���ZA�'H�u�T[H�}�c�Gf�s��7��h���y �TG Z1��E��O0��3D�Y��)��?i�o5�W]��3+��[1�gVv���2�k�[��\���TB�F���	#)��,��4/M���%lM���	IK\�{�)�O���W
��J��3�\��j6g`��>���0�Dm4����>_R6��&��J[��s�:�L	�1.�9����E%Q;p{6�h9�)����$��c�-�66��k8��k��%eq�|�I����jo�[�,����Mko�J���2���%������/�_V'�4�g��Nz�7�m���� r�{��w�S�����s?���H�(�3g�;y
��1��]��4&�&�C��5A�K|�FHX���.���0�����R�t\���a���&�9i~�;�����K����w��Cq�M?y�	$_�~��3�7����9�8��I���	2(H� ��7
��P�A�����B?��'�����C��RZ(�����O�=����z�l�7O�����]����<�gM:F1�{�}��bm�UGdP|PG�x�G/b������Tiz�JK�o���0D��"��N_��%�h�y<��)<M;�b��e�x{lE
\Q�@WY�Z�X�@/�tWh�.4.2�A`:�
��B�������4���"E)6J��3t�����e����!4�Gl�/�%X����_�J6��a����G>�n�z��z��[N0���p�I��"F�\�����N����'�Kx%�F1�:=�m���2���w?�������?~����Q�l��B6R������^�?�9>z���w`�$�5���Kzd;��A��-&�5���S`Q���a�o�6�_���=�eqo
6�`���q��eb5�F-W~�}��f����{�M�H���������]���np�^�=��K/@��K�X����c���Z�u��i���m�8-~{;J���}�Yqx:���>���-(�������#���;���Y@r|�INw��b���/��_����_��������x��
0006_data_files_hand_edits_v1.patchtext/x-patch; charset=US-ASCII; name=0006_data_files_hand_edits_v1.patchDownload
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    | 12 +++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 10 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 44 +++++-----------------
 12 files changed, 146 insertions(+), 87 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
new file mode 100644
index acfd255..7975af3
*** a/src/include/catalog/pg_amop.dat
--- b/src/include/catalog/pg_amop.dat
***************
*** 9,56 ****
--- 9,64 ----
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int24
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int28
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+ 
  # default operators int4
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int42
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int48
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+ 
  # default operators int8
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int82
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators int84
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
***************
*** 90,107 ****
--- 98,118 ----
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators float48
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+ 
  # default operators float8
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators float84
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
***************
*** 165,212 ****
--- 176,231 ----
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs timestamp
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs timestamptz
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+ 
  # default operators timestamp
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs date
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs timestamptz
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+ 
  # default operators timestamptz
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs date
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+ 
  # crosstype operators vs timestamp
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
  { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
***************
*** 378,394 ****
--- 397,418 ----
  
  # bpchar_ops
  { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+ 
  # char_ops
  { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+ 
  # date_ops
  { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+ 
  # float_ops
  { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+ 
  # network_ops
  { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+ 
  # integer_ops
  { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
***************
*** 399,450 ****
--- 423,498 ----
  { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
  { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+ 
  # interval_ops
  { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+ 
  # macaddr_ops
  { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+ 
  # macaddr8_ops
  { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+ 
  # name_ops
  { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+ 
  # oid_ops
  { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+ 
  # oidvector_ops
  { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+ 
  # text_ops
  { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+ 
  # time_ops
  { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+ 
  # timestamptz_ops
  { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+ 
  # timetz_ops
  { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+ 
  # timestamp_ops
  { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+ 
  # bool_ops
  { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+ 
  # bytea_ops
  { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+ 
  # xid_ops
  { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+ 
  # cid_ops
  { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+ 
  # abstime_ops
  { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+ 
  # reltime_ops
  { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+ 
  # text_pattern_ops
  { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+ 
  # bpchar_pattern_ops
  { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+ 
  # aclitem_ops
  { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+ 
  # uuid_ops
  { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+ 
  # pg_lsn_ops
  { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+ 
  # numeric_ops
  { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+ 
  # array_ops
  { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
  
***************
*** 674,697 ****
--- 722,749 ----
  { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
  
  # BRIN opclasses
+ 
  # minmax bytea
  { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax "char"
  { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax name
  { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax integer
  { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 745,762 ****
--- 797,817 ----
  { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax oid
  { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax tid
  { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax float (float4, float8)
  { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 785,814 ****
--- 840,874 ----
  { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax reltime
  { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax macaddr
  { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax macaddr8
  { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax inet
  { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # inclusion inet
  { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 816,833 ****
--- 876,896 ----
  { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax character
  { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax time without time zone
  { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax datetime (date, timestamp, timestamptz)
  { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 881,916 ****
--- 944,985 ----
  { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax time with time zone
  { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax bit
  { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax bit varying
  { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax numeric
  { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax uuid
  { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # inclusion range types
  { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 926,937 ****
--- 995,1008 ----
  { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # minmax pg_lsn
  { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # inclusion box
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
***************
*** 945,950 ****
--- 1016,1022 ----
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+ 
  # we could, but choose not to, supply entries for strategies 13 and 14
  { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
  
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
new file mode 100644
index 884609c..64f3b6c
*** a/src/include/catalog/pg_amproc.dat
--- b/src/include/catalog/pg_amproc.dat
***************
*** 260,280 ****
--- 260,284 ----
  { amprocfamily => '5000', amproclefttype => '603', amprocrighttype => '603', amprocnum => '5', amproc => '5016' },
  
  # BRIN opclasses
+ 
  # minmax bytea
  { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+ 
  # minmax "char"
  { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+ 
  # minmax name
  { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+ 
  # minmax integer: int2, int4, int8
  { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
***************
*** 320,335 ****
--- 324,342 ----
  { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+ 
  # minmax oid
  { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+ 
  # minmax tid
  { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+ 
  # minmax float
  { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
***************
*** 356,381 ****
--- 363,393 ----
  { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+ 
  # minmax reltime
  { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+ 
  # minmax macaddr
  { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+ 
  # minmax macaddr8
  { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+ 
  # minmax inet
  { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+ 
  # inclusion inet
  { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
  { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
***************
*** 384,399 ****
--- 396,414 ----
  { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
  { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
  { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+ 
  # minmax character
  { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+ 
  # minmax time without time zone
  { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+ 
  # minmax datetime (date, timestamp, timestamptz)
  { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
***************
*** 439,469 ****
--- 454,490 ----
  { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+ 
  # minmax time with time zone
  { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+ 
  # minmax bit
  { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+ 
  # minmax bit varying
  { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+ 
  # minmax numeric
  { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+ 
  # minmax uuid
  { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+ 
  # inclusion range types
  { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
  { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
***************
*** 472,482 ****
--- 493,505 ----
  { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
  { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
  { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+ 
  # minmax pg_lsn
  { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
  { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
  { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
  { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+ 
  # inclusion box
  { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
  { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
new file mode 100644
index 927128e..315b0d0
*** a/src/include/catalog/pg_authid.dat
--- b/src/include/catalog/pg_authid.dat
***************
*** 1,12 ****
  # pg_authid.dat
  [
  
! # The uppercase quantities will be replaced at initdb time with
! # user choices.
! # The C code typically refers to these roles using the #define symbols,
! # so be sure to keep those in sync with the DATA lines.
  { oid => '10',
!   rolname => 'POSTGRES', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
  { oid => '3373',
    rolname => 'pg_monitor' },
  { oid => '3374',
--- 1,14 ----
  # pg_authid.dat
  [
  
! # The C code typically refers to these roles using the #define symbols
! # in pg_authid.h, so be sure to keep those in sync with the data here.
! 
! # The uppercase quantities will be replaced at initdb time with user choices.
! # so we must double-quote them.
  { oid => '10',
!   rolname => '"POSTGRES"', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
! 
  { oid => '3373',
    rolname => 'pg_monitor' },
  { oid => '3374',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
new file mode 100644
index a1fe83d..add77ad
*** a/src/include/catalog/pg_cast.dat
--- b/src/include/catalog/pg_cast.dat
***************
*** 54,59 ****
--- 54,60 ----
  # between alias types must pass through OID.)	Lastly, there are implicit
  # casts from text and varchar to regclass, which exist mainly to support
  # legacy forms of nextval() and related functions.
+ 
  { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
  { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
  { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
***************
*** 193,198 ****
--- 194,200 ----
  { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
  { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
  { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+ 
  # Cross-category casts between int4 and abstime, reltime
  { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
  { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
***************
*** 227,232 ****
--- 229,235 ----
  # BitString category
  { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
  { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+ 
  # Cross-category casts between bit and int4, int8
  { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
  { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
***************
*** 241,246 ****
--- 244,250 ----
  # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
  # behavior will ensue when the automatic cast is applied instead of the
  # pg_cast entry!
+ 
  { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
***************
*** 248,253 ****
--- 252,258 ----
  { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
  
  # Cross-category casts to and from VARCHAR
+ 
  # We support all the same casts as for TEXT.
  { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
***************
*** 256,261 ****
--- 261,267 ----
  { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
  
  # Cross-category casts to and from BPCHAR
+ 
  # We support all the same casts as for TEXT.
  { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
new file mode 100644
index 3b9b15c..afd2c55
*** a/src/include/catalog/pg_class.dat
--- b/src/include/catalog/pg_class.dat
***************
*** 1,12 ****
  # pg_class.dat
  [
  
! # NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
  # the OIDs listed here match those given in their CATALOG macros, and that
  # the relnatts values are correct.
  
  # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
  # similarly, "1" in relminmxid stands for FirstMultiXactId
  { oid => '1247',
    relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't', relfrozenxid => '3', relminmxid => '1' },
  { oid => '1249',
--- 1,13 ----
  # pg_class.dat
  [
  
! # Note: only "bootstrapped" relations need to be declared here.  Be sure that
  # the OIDs listed here match those given in their CATALOG macros, and that
  # the relnatts values are correct.
  
  # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
  # similarly, "1" in relminmxid stands for FirstMultiXactId
+ 
  { oid => '1247',
    relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't', relfrozenxid => '3', relminmxid => '1' },
  { oid => '1249',
***************
*** 16,26 ****
  { oid => '1259',
    relname => 'pg_class', reltype => '83', relnatts => '33', relhasoids => 't', relfrozenxid => '3', relminmxid => '1' },
  
- # default selection for replica identity (primary key or nothing)
- # no replica identity is logged for this relation
- # all columns are logged as replica identity
- # an explicitly chosen candidate key's columns are used as replica identity.
- # Note this will still be set if the index has been dropped; in that case it
- # has the same meaning as 'd'.
- 
  ]
--- 17,20 ----
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
new file mode 100644
index bc4d41f..dfa1553
*** a/src/include/catalog/pg_database.dat
--- b/src/include/catalog/pg_database.dat
***************
*** 1,7 ****
  # pg_database.dat
  [
  
  { oid => '1', shdescr => 'default template for new databases',
!   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
  
  ]
--- 1,10 ----
  # pg_database.dat
  [
  
+ # LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+ # that might contain non-word characters, so we must double-quote them.
+ 
  { oid => '1', shdescr => 'default template for new databases',
!   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
  
  ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
new file mode 100644
index 646fd30..3281eea
*** a/src/include/catalog/pg_namespace.dat
--- b/src/include/catalog/pg_namespace.dat
***************
*** 8,13 ****
  { oid => '2200', descr => 'standard public schema',
    nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
  
- # prototypes for functions in pg_namespace.c
- 
  ]
--- 8,11 ----
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
new file mode 100644
index b0f2e8c..8e4569e
*** a/src/include/catalog/pg_opclass.dat
--- b/src/include/catalog/pg_opclass.dat
***************
*** 44,55 ****
--- 44,57 ----
  { opcmethod => '405', opcname => 'macaddr_ops', opcfamily => '1985', opcintype => '829' },
  { opcmethod => '403', opcname => 'macaddr8_ops', opcfamily => '3371', opcintype => '774' },
  { opcmethod => '405', opcname => 'macaddr8_ops', opcfamily => '3372', opcintype => '774' },
+ 
  # Here's an ugly little hack to save space in the system catalog indexes.
  # btree doesn't ordinarily allow a storage type different from input type;
  # but cstring and name are the same thing except for trailing padding,
  # and we can safely omit that within an index entry.  So we declare the
  # btree opclass for name as using cstring storage type.
  { opcmethod => '403', opcname => 'name_ops', opcfamily => '1986', opcintype => '19', opckeytype => '2275' },
+ 
  { opcmethod => '405', opcname => 'name_ops', opcfamily => '1987', opcintype => '19' },
  { oid => '3125',
    opcmethod => '403', opcname => 'numeric_ops', opcfamily => '1988', opcintype => '1700' },
***************
*** 124,130 ****
--- 126,134 ----
  { opcmethod => '2742', opcname => 'jsonb_path_ops', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
  
  # BRIN operator classes
+ 
  # no brin opclass for bool
+ 
  { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcfamily => '4064', opcintype => '17', opckeytype => '17' },
  { opcmethod => '3580', opcname => 'char_minmax_ops', opcfamily => '4062', opcintype => '18', opckeytype => '18' },
  { opcmethod => '3580', opcname => 'name_minmax_ops', opcfamily => '4065', opcintype => '19', opckeytype => '19' },
***************
*** 152,163 ****
--- 156,172 ----
  { opcmethod => '3580', opcname => 'bit_minmax_ops', opcfamily => '4079', opcintype => '1560', opckeytype => '1560' },
  { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcfamily => '4080', opcintype => '1562', opckeytype => '1562' },
  { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcfamily => '4055', opcintype => '1700', opckeytype => '1700' },
+ 
  # no brin opclass for record, anyarray
+ 
  { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcfamily => '4081', opcintype => '2950', opckeytype => '2950' },
  { opcmethod => '3580', opcname => 'range_inclusion_ops', opcfamily => '4103', opcintype => '3831', opckeytype => '3831' },
  { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcfamily => '4082', opcintype => '3220', opckeytype => '3220' },
+ 
  # no brin opclass for enum, tsvector, tsquery, jsonb
+ 
  { opcmethod => '3580', opcname => 'box_inclusion_ops', opcfamily => '4104', opcintype => '603', opckeytype => '603' },
+ 
  # no brin opclass for the geometric types except box
  
  ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
new file mode 100644
index 1437225..898e2ae
*** a/src/include/catalog/pg_operator.dat
--- b/src/include/catalog/pg_operator.dat
***************
*** 1,7 ****
  # pg_operator.dat
  [
  
! # Note: every entry in pg_operator.h is expected to have a DESCR() comment.
  # If the operator is a deprecated equivalent of some other entry, be sure
  # to comment it as such so that initdb doesn't think it's a preferred name
  # for the underlying function.
--- 1,7 ----
  # pg_operator.dat
  [
  
! # Note: every entry in pg_operator.h is expected to have a 'descr' comment.
  # If the operator is a deprecated equivalent of some other entry, be sure
  # to comment it as such so that initdb doesn't think it's a preferred name
  # for the underlying function.
***************
*** 1581,1586 ****
--- 1581,1587 ----
    oprname => '&&', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_and' },
  { oid => '3681', descr => 'OR-concatenate',
    oprname => '||', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_or' },
+ 
  # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
  { oid => '5005', descr => 'phrase-concatenate',
    oprname => '<->', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => '5003' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
new file mode 100644
index e72aabd..b48773c
*** a/src/include/catalog/pg_proc.dat
--- b/src/include/catalog/pg_proc.dat
***************
*** 1,14 ****
  # pg_proc.dat
  [
  
! # Note: every entry in pg_proc.h is expected to have a DESCR() comment,
! # except for functions that implement pg_operator.h operators and don't
  # have a good reason to be called directly rather than via the operator.
  # (If you do expect such a function to be used directly, you should
  # duplicate the operator's comment.)  initdb will supply suitable default
  # comments for functions referenced by pg_operator.
  # Try to follow the style of existing functions' comments.
  # Some recommended conventions:
  # "I/O" for typinput, typoutput, typreceive, typsend functions
  # "I/O typmod" for typmodin, typmodout functions
  # "aggregate transition function" for aggtransfn functions, unless
--- 1,16 ----
  # pg_proc.dat
  [
  
! # Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
! # except for functions that implement pg_operator.dat operators and don't
  # have a good reason to be called directly rather than via the operator.
  # (If you do expect such a function to be used directly, you should
  # duplicate the operator's comment.)  initdb will supply suitable default
  # comments for functions referenced by pg_operator.
+ 
  # Try to follow the style of existing functions' comments.
  # Some recommended conventions:
+ 
  # "I/O" for typinput, typoutput, typreceive, typsend functions
  # "I/O typmod" for typmodin, typmodout functions
  # "aggregate transition function" for aggtransfn functions, unless
***************
*** 17,23 ****
  # "convert srctypename to desttypename" for cast functions
  # "less-equal-greater" for B-tree comparison functions
  
! # keep the following ordered by OID so that later changes can be made easier
  
  # OIDS 1 - 99
  
--- 19,25 ----
  # "convert srctypename to desttypename" for cast functions
  # "less-equal-greater" for B-tree comparison functions
  
! # Keep the following ordered by OID so that later changes can be made easier
  
  # OIDS 1 - 99
  
***************
*** 1774,1779 ****
--- 1776,1782 ----
  # OIDs are not unique across system catalogs.  Use the other form instead.
  { oid => '1348', descr => 'deprecated, use two-argument form instead',
    proname => 'obj_description', prolang => '14', procost => '100', provolatile => 's', proparallel => 's', pronargs => '1', prorettype => '25', proargtypes => '26', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0' },
+ 
  { oid => '1349', descr => 'print type names of oidvector field',
    proname => 'oidvectortypes', provolatile => 's', proparallel => 's', pronargs => '1', prorettype => '25', proargtypes => '30', prosrc => 'oidvectortypes' },
  
***************
*** 1934,1944 ****
  
  # pclose and popen might better be named close and open, but that crashes initdb.
  # - thomas 97/04/20
- 
  { oid => '1433', descr => 'close path',
    proname => 'pclose', proparallel => 's', pronargs => '1', prorettype => '602', proargtypes => '602', prosrc => 'path_close' },
  { oid => '1434', descr => 'open path',
    proname => 'popen', proparallel => 's', pronargs => '1', prorettype => '602', proargtypes => '602', prosrc => 'path_open' },
  { oid => '1435',
    proname => 'path_add', proparallel => 's', pronargs => '2', prorettype => '602', proargtypes => '602 602', prosrc => 'path_add' },
  { oid => '1436',
--- 1937,1947 ----
  
  # pclose and popen might better be named close and open, but that crashes initdb.
  # - thomas 97/04/20
  { oid => '1433', descr => 'close path',
    proname => 'pclose', proparallel => 's', pronargs => '1', prorettype => '602', proargtypes => '602', prosrc => 'path_close' },
  { oid => '1434', descr => 'open path',
    proname => 'popen', proparallel => 's', pronargs => '1', prorettype => '602', proargtypes => '602', prosrc => 'path_open' },
+ 
  { oid => '1435',
    proname => 'path_add', proparallel => 's', pronargs => '2', prorettype => '602', proargtypes => '602 602', prosrc => 'path_add' },
  { oid => '1436',
***************
*** 2730,2735 ****
--- 2733,2739 ----
    proname => 'interval_hash_extended', proparallel => 's', pronargs => '2', prorettype => '20', proargtypes => '1186 20', prosrc => 'interval_hash_extended' },
  
  # OID's 1700 - 1799 NUMERIC data type
+ 
  { oid => '1701', descr => 'I/O',
    proname => 'numeric_in', proparallel => 's', pronargs => '3', prorettype => '1700', proargtypes => '2275 26 23', prosrc => 'numeric_in' },
  { oid => '1702', descr => 'I/O',
***************
*** 4753,4758 ****
--- 4757,4763 ----
    proname => 'bool_anytrue', proparallel => 's', pronargs => '1', prorettype => '16', proargtypes => '2281', prosrc => 'bool_anytrue' },
  { oid => '2517', descr => 'boolean-and aggregate',
    proname => 'bool_and', proisagg => 't', proisstrict => 'f', proparallel => 's', pronargs => '1', prorettype => '16', proargtypes => '16', prosrc => 'aggregate_dummy' },
+ 
  # ANY, SOME? These names conflict with subquery operators. See doc.
  { oid => '2518', descr => 'boolean-or aggregate',
    proname => 'bool_or', proisagg => 't', proisstrict => 'f', proparallel => 's', pronargs => '1', prorettype => '16', proargtypes => '16', prosrc => 'aggregate_dummy' },
***************
*** 4802,4807 ****
--- 4807,4813 ----
  # start time function
  { oid => '2560', descr => 'postmaster start time',
    proname => 'pg_postmaster_start_time', provolatile => 's', proparallel => 's', pronargs => '0', prorettype => '1184', proargtypes => '', prosrc => 'pg_postmaster_start_time' },
+ 
  # config reload time function
  { oid => '2034', descr => 'configuration load time',
    proname => 'pg_conf_load_time', provolatile => 's', proparallel => 'r', pronargs => '0', prorettype => '1184', proargtypes => '', prosrc => 'pg_conf_load_time' },
***************
*** 5658,5663 ****
--- 5664,5670 ----
    proname => 'jsonb_pretty', proparallel => 's', pronargs => '1', prorettype => '25', proargtypes => '3802', prosrc => 'jsonb_pretty' },
  { oid => '3579', descr => 'Insert value into a jsonb',
    proname => 'jsonb_insert', proparallel => 's', pronargs => '4', prorettype => '3802', proargtypes => '3802 1009 3802 16', prosrc => 'jsonb_insert' },
+ 
  # txid
  { oid => '2939', descr => 'I/O',
    proname => 'txid_snapshot_in', proparallel => 's', pronargs => '1', prorettype => '2970', proargtypes => '2275', prosrc => 'txid_snapshot_in' },
***************
*** 6069,6105 ****
  # replication/origin.h
  { oid => '6003', descr => 'create a replication origin',
    proname => 'pg_replication_origin_create', provolatile => 'v', pronargs => '1', prorettype => '26', proargtypes => '25', prosrc => 'pg_replication_origin_create' },
- 
  { oid => '6004', descr => 'drop replication origin identified by its name',
    proname => 'pg_replication_origin_drop', provolatile => 'v', pronargs => '1', prorettype => '2278', proargtypes => '25', prosrc => 'pg_replication_origin_drop' },
- 
  { oid => '6005', descr => 'translate the replication origin\'s name to its id',
    proname => 'pg_replication_origin_oid', provolatile => 's', proparallel => 's', pronargs => '1', prorettype => '26', proargtypes => '25', prosrc => 'pg_replication_origin_oid' },
- 
  { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
    proname => 'pg_replication_origin_session_setup', provolatile => 'v', pronargs => '1', prorettype => '2278', proargtypes => '25', prosrc => 'pg_replication_origin_session_setup' },
- 
  { oid => '6007', descr => 'teardown configured replication progress tracking',
    proname => 'pg_replication_origin_session_reset', provolatile => 'v', pronargs => '0', prorettype => '2278', proargtypes => '', prosrc => 'pg_replication_origin_session_reset' },
- 
  { oid => '6008', descr => 'is a replication origin configured in this session',
    proname => 'pg_replication_origin_session_is_setup', provolatile => 'v', proparallel => 'r', pronargs => '0', prorettype => '16', proargtypes => '', prosrc => 'pg_replication_origin_session_is_setup' },
- 
  { oid => '6009', descr => 'get the replication progress of the current session',
    proname => 'pg_replication_origin_session_progress', provolatile => 'v', pronargs => '1', prorettype => '3220', proargtypes => '16', prosrc => 'pg_replication_origin_session_progress' },
- 
  { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
    proname => 'pg_replication_origin_xact_setup', provolatile => 'v', proparallel => 'r', pronargs => '2', prorettype => '2278', proargtypes => '3220 1184', prosrc => 'pg_replication_origin_xact_setup' },
- 
  { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
    proname => 'pg_replication_origin_xact_reset', provolatile => 'v', proparallel => 'r', pronargs => '0', prorettype => '2278', proargtypes => '', prosrc => 'pg_replication_origin_xact_reset' },
- 
  { oid => '6012', descr => 'advance replication identifier to specific location',
    proname => 'pg_replication_origin_advance', provolatile => 'v', pronargs => '2', prorettype => '2278', proargtypes => '25 3220', prosrc => 'pg_replication_origin_advance' },
- 
  { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
    proname => 'pg_replication_origin_progress', provolatile => 'v', pronargs => '2', prorettype => '3220', proargtypes => '25 16', prosrc => 'pg_replication_origin_progress' },
- 
  { oid => '6014', descr => 'get progress for all replication origins',
    proname => 'pg_show_replication_origin_status', prorows => '100', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', prosrc => 'pg_show_replication_origin_status' },
  
--- 6076,6101 ----
***************
*** 6122,6141 ****
  # pg_controldata related functions
  { oid => '3441', descr => 'pg_controldata general state information as a function',
    proname => 'pg_control_system', provolatile => 'v', proparallel => 's', pronargs => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', prosrc => 'pg_control_system' },
- 
  { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
    proname => 'pg_control_checkpoint', provolatile => 'v', proparallel => 's', pronargs => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', prosrc => 'pg_control_checkpoint' },
- 
  { oid => '3443', descr => 'pg_controldata recovery state information as a function',
    proname => 'pg_control_recovery', provolatile => 'v', proparallel => 's', pronargs => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', prosrc => 'pg_control_recovery' },
- 
  { oid => '3444', descr => 'pg_controldata init state information as a function',
    proname => 'pg_control_init', provolatile => 'v', proparallel => 's', pronargs => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', prosrc => 'pg_control_init' },
  
  # collation management functions
  { oid => '3445', descr => 'import collations from operating system',
    proname => 'pg_import_system_collations', procost => '100', provolatile => 'v', proparallel => 'r', pronargs => '1', prorettype => '23', proargtypes => '4089', prosrc => 'pg_import_system_collations' },
- 
  { oid => '3448', descr => 'get actual version of collation from operating system',
    proname => 'pg_collation_actual_version', procost => '100', provolatile => 'v', proparallel => 's', pronargs => '1', prorettype => '25', proargtypes => '26', prosrc => 'pg_collation_actual_version' },
  
--- 6118,6133 ----
***************
*** 6149,6167 ****
  { oid => '5028', descr => 'hash partition CHECK constraint',
    proname => 'satisfies_hash_partition', provariadic => '2276', proisstrict => 'f', proparallel => 's', pronargs => '4', prorettype => '16', proargtypes => '26 23 23 2276', proargmodes => '{i,i,i,v}', prosrc => 'satisfies_hash_partition' },
  
- # Symbolic values for provolatile column: these indicate whether the result
- # of a function is dependent *only* on the values of its explicit arguments,
- # or can change due to outside factors (such as parameter variables or
- # table contents).  NOTE: functions having side-effects, such as setval(),
- # must be labeled volatile to ensure they will not get optimized away,
- # even if the actual return value is not changeable.
- 
- # Symbolic values for proparallel column: these indicate whether a function
- # can be safely be run in a parallel backend, during parallelism but
- # necessarily in the master, or only in non-parallel mode.
- 
- # Symbolic values for proargmodes column.  Note that these must agree with
- # the FunctionParameterMode enum in parsenodes.h; we declare them here to
- # be accessible from either header.
- 
  ]
--- 6141,6144 ----
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
new file mode 100644
index 063b975..cd9a78b
*** a/src/include/catalog/pg_range.dat
--- b/src/include/catalog/pg_range.dat
***************
*** 8,13 ****
  { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
  { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
  
- # prototypes for functions in pg_range.c
- 
  ]
--- 8,11 ----
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
new file mode 100644
index 65a60bd..a94010d
*** a/src/include/catalog/pg_type.dat
--- b/src/include/catalog/pg_type.dat
***************
*** 7,54 ****
  # TypInfo[] in bootstrap.c.
  
  # OIDS 1 - 99
  { oid => '16', descr => 'boolean, \'true\'/\'false\'',
    typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
- 
  { oid => '17', descr => 'variable-length string, binary values escaped',
    typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
- 
  { oid => '18', descr => 'single character',
    typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
- 
  { oid => '19', descr => '63-byte type for storing system identifiers',
    typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
- 
  { oid => '20', descr => '~18 digit integer, 8-byte storage',
    typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
- 
  { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
    typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
- 
  { oid => '22', descr => 'array of int2, used in system tables',
    typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
- 
  { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
    typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
- 
  { oid => '24', descr => 'registered procedure',
    typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
- 
  { oid => '25', descr => 'variable-length string, no limit specified',
    typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
    typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
- 
  { oid => '27', descr => '(block, offset), physical location of tuple',
    typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
- 
  { oid => '28', descr => 'transaction id',
    typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
- 
  { oid => '29', descr => 'command identifier type, sequence in transaction id',
    typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
- 
  { oid => '30', descr => 'array of oids, used in system tables',
    typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
  
--- 7,41 ----
  # TypInfo[] in bootstrap.c.
  
  # OIDS 1 - 99
+ 
  { oid => '16', descr => 'boolean, \'true\'/\'false\'',
    typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
  { oid => '17', descr => 'variable-length string, binary values escaped',
    typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
  { oid => '18', descr => 'single character',
    typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
  { oid => '19', descr => '63-byte type for storing system identifiers',
    typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
  { oid => '20', descr => '~18 digit integer, 8-byte storage',
    typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
  { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
    typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
  { oid => '22', descr => 'array of int2, used in system tables',
    typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
  { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
    typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
  { oid => '24', descr => 'registered procedure',
    typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
  { oid => '25', descr => 'variable-length string, no limit specified',
    typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
  { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
    typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
  { oid => '27', descr => '(block, offset), physical location of tuple',
    typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
  { oid => '28', descr => 'transaction id',
    typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
  { oid => '29', descr => 'command identifier type, sequence in transaction id',
    typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
  { oid => '30', descr => 'array of oids, used in system tables',
    typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
  
***************
*** 65,70 ****
--- 52,58 ----
    typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => '1259', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
  
  # OIDS 100 - 199
+ 
  { oid => '114',
    typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typalign => 'i', typstorage => 'x' },
  { oid => '142', descr => 'XML content',
***************
*** 73,88 ****
    typname => '_xml', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '199',
    typname => '_json', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
- 
  { oid => '194', descr => 'string representing an internal node tree',
    typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '3361', descr => 'multivariate ndistinct coefficients',
    typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '3402', descr => 'multivariate dependencies',
    typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '32', descr => 'internal type for passing CollectedCommand',
    typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' },
  
--- 61,72 ----
***************
*** 98,103 ****
--- 82,88 ----
  # OIDS 500 - 599
  
  # OIDS 600 - 699
+ 
  { oid => '600', descr => 'geometric point \'(x, y)\'',
    typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' },
  { oid => '601', descr => 'geometric line segment \'(pt1,pt2)\'',
***************
*** 108,114 ****
    typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', typdelim => '\073', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typalign => 'd' },
  { oid => '604', descr => 'geometric polygon \'(pt1,...)\'',
    typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typalign => 'd', typstorage => 'x' },
- 
  { oid => '628', descr => 'geometric line',
    typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' },
  { oid => '629',
--- 93,98 ----
***************
*** 128,134 ****
    typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typalign => 'i' },
  { oid => '705',
    typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
- 
  { oid => '718', descr => 'geometric circle \'(center,radius)\'',
    typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' },
  { oid => '719',
--- 112,117 ----
***************
*** 151,156 ****
--- 134,140 ----
  # OIDS 900 - 999
  
  # OIDS 1000 - 1099
+ 
  { oid => '1000',
    typname => '_bool', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '1001',
***************
*** 231,236 ****
--- 215,221 ----
    typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typalign => 'd' },
  
  # OIDS 1100 - 1199
+ 
  { oid => '1114', descr => 'date and time',
    typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typalign => 'd' },
  { oid => '1115',
***************
*** 249,254 ****
--- 234,240 ----
    typname => '_interval', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
  
  # OIDS 1200 - 1299
+ 
  { oid => '1231',
    typname => '_numeric', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '1266', descr => 'time of day with time zone',
***************
*** 257,262 ****
--- 243,249 ----
    typname => '_timetz', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
  
  # OIDS 1500 - 1599
+ 
  { oid => '1560', descr => 'fixed-length bit string',
    typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typalign => 'i', typstorage => 'x' },
  { oid => '1561',
***************
*** 269,305 ****
  # OIDS 1600 - 1699
  
  # OIDS 1700 - 1799
  { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
    typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
- 
  { oid => '1790', descr => 'reference to cursor (portal name)',
    typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
  
  # OIDS 2200 - 2299
  { oid => '2201',
    typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
- 
  { oid => '2202', descr => 'registered procedure (with args)',
    typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
- 
  { oid => '2203', descr => 'registered operator',
    typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
- 
  { oid => '2204', descr => 'registered operator (with args)',
    typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
- 
  { oid => '2205', descr => 'registered class',
    typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
- 
  { oid => '2206', descr => 'registered type',
    typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
- 
  { oid => '4096', descr => 'registered role',
    typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
- 
  { oid => '4089', descr => 'registered namespace',
    typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
- 
  { oid => '2207',
    typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2208',
--- 256,285 ----
  # OIDS 1600 - 1699
  
  # OIDS 1700 - 1799
+ 
  { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
    typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
  { oid => '1790', descr => 'reference to cursor (portal name)',
    typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
  
  # OIDS 2200 - 2299
+ 
  { oid => '2201',
    typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2202', descr => 'registered procedure (with args)',
    typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
  { oid => '2203', descr => 'registered operator',
    typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
  { oid => '2204', descr => 'registered operator (with args)',
    typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
  { oid => '2205', descr => 'registered class',
    typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
  { oid => '2206', descr => 'registered type',
    typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
  { oid => '4096', descr => 'registered role',
    typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
  { oid => '4089', descr => 'registered namespace',
    typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
  { oid => '2207',
    typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2208',
***************
*** 338,344 ****
    typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' },
  { oid => '3769', descr => 'registered text search dictionary',
    typname => 'regdictionary', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typalign => 'i' },
- 
  { oid => '3643',
    typname => '_tsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '3644',
--- 318,323 ----
***************
*** 395,400 ****
--- 374,380 ----
  # Note: cstring is a borderline case; it is still considered a pseudo-type,
  # but there is now support for it in records and arrays.  Perhaps we should
  # just treat it as a regular base type?
+ 
  { oid => '2249',
    typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
  { oid => '2287',
***************
*** 432,439 ****
  { oid => '3831',
    typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' },
  
- # macros
- 
- # Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
- 
  ]
--- 412,415 ----
0007_update_distprep_scripts_v1.patchtext/x-patch; charset=US-ASCII; name=0007_update_distprep_scripts_v1.patchDownload
 src/backend/catalog/Makefile     |  11 +++-
 src/backend/catalog/genbki.pl    | 109 +++++++++++++++++++++++++++++----------
 src/backend/utils/Gen_fmgrtab.pl |  32 +++++++-----
 src/backend/utils/Makefile       |   2 +-
 4 files changed, 112 insertions(+), 42 deletions(-)

diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
new file mode 100644
index 30ca509..23858b8
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** POSTGRES_BKI_SRCS = $(addprefix $(top_sr
*** 49,54 ****
--- 49,63 ----
  	toasting.h indexing.h \
      )
  
+ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+ 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+ 	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+ 	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+ 	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+ 	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+ 	pg_ts_template.dat pg_type.dat \
+ 	)
+ 
  # location of Catalog.pm
  catalogdir = $(top_srcdir)/src/backend/catalog
  
*************** schemapg.h: postgres.bki ;
*** 67,73 ****
  # even in distribution tarballs.  So this is cheating a bit, but it
  # will achieve the goal of updating the version number when it
  # changes.
! postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
  
--- 76,82 ----
  # even in distribution tarballs.  So this is cheating a bit, but it
  # will achieve the goal of updating the version number when it
  # changes.
! postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
  
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 1876399..1b2a570
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** my $PG_CATALOG_NAMESPACE =
*** 93,100 ****
    Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
  							 'PG_CATALOG_NAMESPACE');
  
! # Read all the input header files into internal data structures
! my $catalogs = Catalog::Catalogs(@input_files);
  
  # Generate postgres.bki, postgres.description, and postgres.shdescription
  
--- 93,118 ----
    Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
  							 'PG_CATALOG_NAMESPACE');
  
! # We pass .h file names as arguments and then look for matching
! # data files for the data.
! my @datfiles;
! foreach my $header (@input_files)
! {
! 	$header =~ /(.+)\.h$/;
! 	my $datfile = "$1.dat";
! 	if (-e $datfile)
! 	{
! 		push @datfiles, $datfile;
! 	}
! }
! 
! # Read all the files into internal data structures
! my $catalogs     = Catalog::ParseHeader(@input_files);
! my $catalog_data = Catalog::ParseData(@datfiles);
! 
! # Note: Since we have now loaded all the data, we can build lookup
! # tables here. However, if we need default values for a catalog, we
! # need to wait until the full tuples have been built.
  
  # Generate postgres.bki, postgres.description, and postgres.shdescription
  
*************** my @tables_needing_macros;
*** 107,113 ****
  my %regprocoids;
  my @types;
  
! # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
  {
  
--- 125,131 ----
  my %regprocoids;
  my @types;
  
! # Produce output, one catalog at a time.
  foreach my $catname (@{ $catalogs->{names} })
  {
  
*************** foreach my $catname (@{ $catalogs->{name
*** 156,172 ****
  		print $bki "open $catname\n";
  	}
  
! 	if (defined $catalog->{data})
  	{
  
! 		# Ordinary catalog with DATA line(s)
! 		foreach my $row (@{ $catalog->{data} })
  		{
! 
! 			# Split line into tokens without interpreting their meaning.
! 			my %bki_values;
! 			@bki_values{@attnames} =
! 			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
  			foreach my $column (@$schema)
--- 174,187 ----
  		print $bki "open $catname\n";
  	}
  
! 	if (defined $catalog_data->{$catname})
  	{
  
! 		# Ordinary catalog with a data file
! 		foreach my $row (@{ $catalog_data->{$catname} })
  		{
! 			my %bki_values = %$row;
! 			Catalog::AddDefaultValues(\%bki_values, $schema, $catname);
  
  			# Perform required substitutions on fields
  			foreach my $column (@$schema)
*************** foreach my $catname (@{ $catalogs->{name
*** 200,206 ****
  				}
  				else
  				{
! 					$regprocoids{ $bki_values{proname} } = $row->{oid};
  				}
  			}
  
--- 215,221 ----
  				}
  				else
  				{
! 					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
  				}
  			}
  
*************** foreach my $catname (@{ $catalogs->{name
*** 208,240 ****
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
- 				$type{oid} = $row->{oid};
  				push @types, \%type;
  			}
  
  			# Write to postgres.bki
! 			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
! 			printf $bki "insert %s( %s )\n", $oid,
! 			  join(' ', @bki_values{@attnames});
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
! 			if (defined $row->{descr})
  			{
! 				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
! 				  $row->{descr};
  			}
! 			if (defined $row->{shdescr})
  			{
! 				printf $shdescr "%s\t%s\t%s\n", $row->{oid}, $catname,
! 				  $row->{shdescr};
  			}
  		}
  	}
  	if ($catname eq 'pg_attribute')
  	{
  
! 		# For pg_attribute.h, we generate DATA entries ourselves.
  		# NB: pg_type.h must come before pg_attribute.h in the input list
  		# of catalog names, since we use info from pg_type.h here.
  		foreach my $table_name (@{ $catalogs->{names} })
--- 223,255 ----
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
  				push @types, \%type;
  			}
  
+ 			# Add quotes where necessary.
+ 			format_bki_row(\%bki_values, $schema);
+ 
  			# Write to postgres.bki
! 			bki_insert(\%bki_values, @attnames);
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
! 			if (defined $bki_values{descr})
  			{
! 				printf $descr "%s\t%s\t0\t%s\n", $bki_values{oid}, $catname,
! 				  $bki_values{descr};
  			}
! 			if (defined $bki_values{shdescr})
  			{
! 				printf $shdescr "%s\t%s\t%s\n", $bki_values{oid}, $catname,
! 				  $bki_values{shdescr};
  			}
  		}
  	}
  	if ($catname eq 'pg_attribute')
  	{
  
! 		# For pg_attribute.h, we generate data entries ourselves.
  		# NB: pg_type.h must come before pg_attribute.h in the input list
  		# of catalog names, since we use info from pg_type.h here.
  		foreach my $table_name (@{ $catalogs->{names} })
*************** foreach my $catname (@{ $catalogs->{name
*** 317,328 ****
  # (i.e., not contained in a header with a CATALOG() statement) comes here
  
  # Write out declare toast/index statements
! foreach my $declaration (@{ $catalogs->{toasting}->{data} })
  {
  	print $bki $declaration;
  }
  
! foreach my $declaration (@{ $catalogs->{indexing}->{data} })
  {
  	print $bki $declaration;
  }
--- 332,343 ----
  # (i.e., not contained in a header with a CATALOG() statement) comes here
  
  # Write out declare toast/index statements
! foreach my $declaration (@{ $catalogs->{toasting} })
  {
  	print $bki $declaration;
  }
  
! foreach my $declaration (@{ $catalogs->{indexing} })
  {
  	print $bki $declaration;
  }
*************** exit 0;
*** 380,385 ****
--- 395,442 ----
  
  #################### Subroutines ########################
  
+ # Supply quoting for a normal bki row.
+ # This allows us to keep most double quotes
+ # out of the catalog data files for readability.
+ sub format_bki_row
+ {
+ 	my $row    = shift;
+ 	my $schema = shift;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 
+ 		if
+ 		(
+ 			length($row->{$attname}) == 0
+ 
+ 			# Whitespace
+ 			or $row->{$attname} =~ /\s/
+ 
+ 			# Quote strings that have special characters
+ 			# except for certain cases. See bootscanner.l
+ 			or (    $row->{$attname} =~ /\W/
+ 				and $row->{$attname} !~ /^\\\d{3}$/  # octal
+ 				and $row->{$attname} !~ /^-\d*$/)    # '-' or '-1'
+ 
+ 			# XXX Not needed, but keeps the .bki diff down to a reasonable
+ 			# size during review
+ 			or $attname eq 'oprname'    # Operator names
+ 			or $atttype eq 'oidvector'  # Arrays etc.
+ 			or $atttype eq 'int2vector'
+ 			or $atttype =~ /\[\]$/
+ 		)
+ 		{
+ 			if ($row->{$attname} ne '_null_' and $row->{$attname} !~ /^"([^"])*"$/)
+ 			{
+ 				$row->{$attname} = q|"| . $row->{$attname} . q|"|;
+ 			}
+ 		}
+ 	}
+ }
+ 
  
  # Given the schema of pg_attribute, generate an entry for it using information
  # about the attribute it describes.  Any value that is not handled here
*************** sub emit_pgattr_row
*** 447,453 ****
  	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
! # Write a pg_attribute entry to postgres.bki
  sub bki_insert
  {
  	my $row        = shift;
--- 504,510 ----
  	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
! # Write an entry to postgres.bki
  sub bki_insert
  {
  	my $row        = shift;
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index a51a755..2d13470
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
***************
*** 3,9 ****
  #
  # Gen_fmgrtab.pl
  #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
--- 3,9 ----
  #
  # Gen_fmgrtab.pl
  #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h and pg_proc.dat
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
*************** if ($output_path ne '' && substr($output
*** 55,89 ****
  die "No input files.\n"                                     if !$infile;
  die "No include path; you must specify -I at least once.\n" if !@include_path;
  
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
  my $INTERNALlanguageId =
  	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
! # Read all the data from the include/catalog files.
! my $catalogs = Catalog::Catalogs($infile);
  
  # Collect the raw data from pg_proc.h.
  my @fmgr = ();
- my @attnames;
- foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
- {
- 	push @attnames, $column->{name};
- }
  
! my $data = $catalogs->{pg_proc}->{data};
  foreach my $row (@$data)
  {
! 
! 	# Split line into tokens without interpreting their meaning.
! 	my %bki_values;
! 	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
  	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
! 	  { oid    => $row->{oid},
  		strict => $bki_values{proisstrict},
  		retset => $bki_values{proretset},
  		nargs  => $bki_values{pronargs},
--- 55,90 ----
  die "No input files.\n"                                     if !$infile;
  die "No include path; you must specify -I at least once.\n" if !@include_path;
  
+ # We pass the pg_proc.h path as an argument and then look for a matching
+ # data file.
+ $infile =~ /(.+)\.h$/;
+ my $datfile = "$1.dat";
+ die "No data files.\n" if ! -e $datfile;
+ 
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
  my $INTERNALlanguageId =
  	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
! # Read all the files into internal data structures
! my $catalogs     = Catalog::ParseHeader($infile);
! my $catalog_data = Catalog::ParseData($datfile);
  
  # Collect the raw data from pg_proc.h.
  my @fmgr = ();
  
! my $schema  = $catalogs->{pg_proc}->{columns};
! my $data    = $catalog_data->{pg_proc};
  foreach my $row (@$data)
  {
! 	my %bki_values = %$row;
! 	Catalog::AddDefaultValues(\%bki_values, $schema, 'pg_proc');
  
  	# Select out just the rows for internal-language procedures.
  	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
! 	  { oid    => $bki_values{oid},
  		strict => $bki_values{proisstrict},
  		retset => $bki_values{proretset},
  		nargs  => $bki_values{pronargs},
*************** qq|/*-----------------------------------
*** 122,127 ****
--- 123,129 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
*************** qq|/*-----------------------------------
*** 157,162 ****
--- 159,165 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
*************** qq|/*-----------------------------------
*** 185,190 ****
--- 188,194 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
new file mode 100644
index efb8b53..8ccfc3b
*** a/src/backend/utils/Makefile
--- b/src/backend/utils/Makefile
*************** $(SUBDIRS:%=%-recursive): fmgroids.h fmg
*** 24,30 ****
  fmgrprotos.h: fmgroids.h ;
  fmgroids.h: fmgrtab.c ;
  
! fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
  	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
  
  errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
--- 24,30 ----
  fmgrprotos.h: fmgroids.h ;
  fmgroids.h: fmgrtab.c ;
  
! fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h $(top_srcdir)/src/include/catalog/pg_proc.dat
  	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
  
  errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
0008_dev_sql_v1.patchtext/x-patch; charset=US-ASCII; name=0008_dev_sql_v1.patchDownload
 src/backend/Makefile           |   2 +-
 src/backend/catalog/.gitignore |   1 +
 src/backend/catalog/Makefile   |   5 +-
 src/backend/catalog/genbki.pl  | 103 +++++++++++++++++++++++++++++++++++++----
 src/tools/msvc/clean.bat       |   1 +
 5 files changed, 102 insertions(+), 10 deletions(-)

diff --git a/src/backend/Makefile b/src/backend/Makefile
new file mode 100644
index aab676d..4a59e6f
*** a/src/backend/Makefile
--- b/src/backend/Makefile
*************** ifeq ($(PORTNAME), win32)
*** 321,327 ****
  endif
  
  distclean: clean
! 	rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c
  
  maintainer-clean: distclean
  	rm -f bootstrap/bootparse.c \
--- 321,327 ----
  endif
  
  distclean: clean
! 	rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c catalog/postgres.sql
  
  maintainer-clean: distclean
  	rm -f bootstrap/bootparse.c \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
new file mode 100644
index 557af3c..fb77833
*** a/src/backend/catalog/.gitignore
--- b/src/backend/catalog/.gitignore
***************
*** 1,4 ****
--- 1,5 ----
  /postgres.bki
+ /postgres.sql
  /postgres.description
  /postgres.shdescription
  /schemapg.h
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
new file mode 100644
index 23858b8..02693a1
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** uninstall-data:
*** 100,104 ****
  # are in the distribution tarball, so they are not cleaned here.
  clean:
  
! maintainer-clean: clean
  	rm -f $(BKIFILES)
--- 100,107 ----
  # are in the distribution tarball, so they are not cleaned here.
  clean:
  
! distclean: clean
! 	rm -f postgres.sql
! 
! maintainer-clean: distclean
  	rm -f $(BKIFILES)
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 1b2a570..e98a11c
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** my $tmpext  = ".tmp$$";
*** 68,73 ****
--- 68,76 ----
  my $bkifile = $output_path . 'postgres.bki';
  open my $bki, '>', $bkifile . $tmpext
    or die "can't open $bkifile$tmpext: $!";
+ my $sqlfile = $output_path . 'postgres.sql';
+ open my $sql, '>', $sqlfile . $tmpext
+   or die "can't open $sqlfile$tmpext: $!";
  my $schemafile = $output_path . 'schemapg.h';
  open my $schemapg, '>', $schemafile . $tmpext
    or die "can't open $schemafile$tmpext: $!";
*************** my $catalog_data = Catalog::ParseData(@d
*** 114,124 ****
  # tables here. However, if we need default values for a catalog, we
  # need to wait until the full tuples have been built.
  
! # Generate postgres.bki, postgres.description, and postgres.shdescription
  
  # version marker for .bki file
  print $bki "# PostgreSQL $major_version\n";
  
  # vars to hold data needed for schemapg.h
  my %schemapg_entries;
  my @tables_needing_macros;
--- 117,133 ----
  # tables here. However, if we need default values for a catalog, we
  # need to wait until the full tuples have been built.
  
! # Generate postgres.bki, postgres.sql, postgres.description,
! # and postgres.shdescription
  
  # version marker for .bki file
  print $bki "# PostgreSQL $major_version\n";
  
+ # Setup dev schema for .sql file
+ print $sql "DROP SCHEMA IF EXISTS pgdev_catalog CASCADE;\n";
+ print $sql "CREATE SCHEMA pgdev_catalog;\n\n";
+ print $sql "BEGIN;\n\n";
+ 
  # vars to hold data needed for schemapg.h
  my %schemapg_entries;
  my @tables_needing_macros;
*************** my @types;
*** 129,147 ****
  foreach my $catname (@{ $catalogs->{names} })
  {
  
! 	# .bki CREATE command for this catalog
  	my $catalog = $catalogs->{$catname};
  	print $bki "create $catname $catalog->{relation_oid}"
  	  . $catalog->{shared_relation}
  	  . $catalog->{bootstrap}
  	  . $catalog->{without_oids}
! 	  . $catalog->{rowtype_oid} . "\n";
  
! 	my @attnames;
! 	my $first = 1;
  
! 	print $bki " (\n";
! 	my $schema = $catalog->{columns};
  	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
--- 138,173 ----
  foreach my $catname (@{ $catalogs->{names} })
  {
  
! 	# CREATE command for this catalog
  	my $catalog = $catalogs->{$catname};
+ 	my $schema = $catalog->{columns};
+ 	my @attnames;
+ 
  	print $bki "create $catname $catalog->{relation_oid}"
  	  . $catalog->{shared_relation}
  	  . $catalog->{bootstrap}
  	  . $catalog->{without_oids}
! 	  . $catalog->{rowtype_oid};
! 	print $sql "CREATE TABLE pgdev_catalog.$catname";
  
! 	print $bki "\n (\n";
! 	print $sql "\n (\n";
  
! 	if (!$catalog->{without_oids})
! 	{
! 		print $sql " bootstrap_oid text ,\n";
! 	}
! 
! 	if ($catalog->{shared_relation})
! 	{
! 		print $sql " bootstrap_shdescr text ,\n";
! 	}
! 	else
! 	{
! 		print $sql " bootstrap_descr text ,\n";
! 	}
! 
! 	my $first = 1;
  	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
*************** foreach my $catname (@{ $catalogs->{name
*** 151,161 ****
--- 177,199 ----
  		if (!$first)
  		{
  			print $bki " ,\n";
+ 			print $sql " ,\n";
  		}
  		$first = 0;
  
  		print $bki " $attname = $atttype";
  
+ 		# We can't use the intended type since some values are strings
+ 		# that are substituted either with lookups in this script, or
+ 		# at initdb time. It doesn't matter since the source
+ 		# data is purely text anyway.
+ 		print $sql " $attname text";
+ 
+ 		# Use default values to simplify writing dev insert queries.
+ 		if (defined $column->{default})
+ 		{
+ 			printf $sql " DEFAULT '%s'", $column->{default};
+ 		}
  		if (defined $column->{forcenotnull})
  		{
  			print $bki " FORCE NOT NULL";
*************** foreach my $catname (@{ $catalogs->{name
*** 166,171 ****
--- 204,210 ----
  		}
  	}
  	print $bki "\n )\n";
+ 	print $sql "\n );\n";
  
  	# Open it, unless bootstrap case (create bootstrap does this
  	# automatically)
*************** foreach my $catname (@{ $catalogs->{name
*** 183,188 ****
--- 222,231 ----
  			my %bki_values = %$row;
  			Catalog::AddDefaultValues(\%bki_values, $schema, $catname);
  
+ 			# From here on, the .bki and .sql files need separate
+ 			# copies of the data.
+ 			my %sql_values = %bki_values;
+ 
  			# Perform required substitutions on fields
  			foreach my $column (@$schema)
  			{
*************** foreach my $catname (@{ $catalogs->{name
*** 229,236 ****
  			# Add quotes where necessary.
  			format_bki_row(\%bki_values, $schema);
  
! 			# Write to postgres.bki
  			bki_insert(\%bki_values, @attnames);
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
--- 272,280 ----
  			# Add quotes where necessary.
  			format_bki_row(\%bki_values, $schema);
  
! 			# Write to postgres.bki and postgres.sql
  			bki_insert(\%bki_values, @attnames);
+ 			sql_insert($catname, $catalog->{without_oids}, \%sql_values, @attnames);
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
*************** foreach my $catname (@{ $catalogs->{name
*** 281,286 ****
--- 325,332 ----
  				if ($table->{bootstrap})
  				{
  					bki_insert(\%row, @attnames);
+ 					sql_insert($catname, $catalog->{without_oids},
+ 							   \%row, @attnames);
  				}
  
  				# Store schemapg entries for later.
*************** foreach my $catname (@{ $catalogs->{name
*** 320,331 ****
--- 366,380 ----
  						  && $row{attname} eq 'oid';
  
  					bki_insert(\%row, @attnames);
+ 					sql_insert($catname, $catalog->{without_oids},
+ 							   \%row, @attnames);
  				}
  			}
  		}
  	}
  
  	print $bki "close $catname\n";
+ 	print $sql "\n";
  }
  
  # Any information needed for the BKI that is not contained in a pg_*.h header
*************** foreach my $declaration (@{ $catalogs->{
*** 342,347 ****
--- 391,397 ----
  	print $bki $declaration;
  }
  
+ print $sql "COMMIT;\n";
  
  # Now generate schemapg.h
  
*************** print $schemapg "\n#endif /* SCHEMAPG_H
*** 381,392 ****
--- 431,444 ----
  
  # We're done emitting data
  close $bki;
+ close $sql;
  close $schemapg;
  close $descr;
  close $shdescr;
  
  # Finally, rename the completed files into place.
  Catalog::RenameTempFile($bkifile,     $tmpext);
+ Catalog::RenameTempFile($sqlfile,     $tmpext);
  Catalog::RenameTempFile($schemafile,  $tmpext);
  Catalog::RenameTempFile($descrfile,   $tmpext);
  Catalog::RenameTempFile($shdescrfile, $tmpext);
*************** sub bki_insert
*** 514,519 ****
--- 566,606 ----
  	printf $bki "insert %s( %s )\n", $oid, $bki_values;
  }
  
+ # Write an entry to postgres.sql.
+ sub sql_insert
+ {
+ 	my $catname      = shift;
+ 	my $without_oids = shift;
+ 	my $row          = shift;
+ 	my @attnames     = @_;
+ 
+ 	my $oid = '';
+ 	if (!$without_oids)
+ 	{
+ 		# Insert a null in cases where there is no bootstrap oid
+ 		# (e.g. pg_opclass)
+ 		$oid = $row->{oid} ? "'$row->{oid}', " : 'NULL, ';
+ 	}
+ 
+ 	# We can treat descr and shdescr the same since they both occupy
+ 	# the same column position.
+ 	my $descr = $row->{descr} ? $row->{descr} : $row->{shdescr};
+ 	if (defined $descr)
+ 	{
+ 		# Normal values with single quotes have been escaped by now,
+ 		# but not the comments.
+ 		$descr =~ s/'/''/g;
+ 		$descr = "'$descr'";
+ 	}
+ 	else
+ 	{
+ 		$descr = 'NULL';
+ 	}
+ 
+ 	my $sql_values = join ', ', map "'$row->{$_}'", @attnames;
+ 	printf $sql "INSERT INTO pgdev_catalog.$catname VALUES ( %s%s, %s );\n", $oid, $descr, $sql_values;
+ }
+ 
  # The field values of a Schema_pg_xxx declaration are similar, but not
  # quite identical, to the corresponding values in postgres.bki.
  sub emit_schemapg_row
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
new file mode 100755
index 0a88b52..c44c480
*** a/src/tools/msvc/clean.bat
--- b/src/tools/msvc/clean.bat
*************** if %DIST%==1 if exist src\bin\psql\sql_h
*** 64,69 ****
--- 64,70 ----
  if %DIST%==1 if exist src\bin\psql\sql_help.h del /q src\bin\psql\sql_help.h
  if %DIST%==1 if exist src\interfaces\ecpg\preproc\preproc.y del /q src\interfaces\ecpg\preproc\preproc.y
  if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalog\postgres.bki
+ if %DIST%==1 if exist src\backend\catalog\postgres.sql del /q src\backend\catalog\postgres.sql
  if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
  if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
  if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
#2John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#1)
10 attachment(s)
Re: WIP: a way forward on bootstrap data

There doesn't seem to be any interest in bootstrap data at the moment,
but rather than give up just yet, I've added a couple features to make
a data migration more compelling:

1. Human-readable types, operators, opfamilies, and access methods
2. Column abbreviations

For an example of both practices, an entry from pg_amop changes from

DATA(insert ( 1976 21 21 1 s 95 403 0 ));

to

{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1',
oper => '<(int2,int2)', am => 'btree' },

3. Reduce redundancy in pg_proc data by
-computing pronargs from proargtypes and
-leaving out prosrc if it's just a copy of proname.

This, plus a few column abbreviations drastically shrinks pg_proc.dat
line length, even with human-readable types:

pg_proc.h: avg=175, stdev=25
pg_proc.dat: avg=92, stdev=43

An example before:

DATA(insert OID = 300 ( float48ne PGNSP PGUID 12 1 0 0 0 f f
f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_
float48ne _null_ _null_ _null_ ));

and after:

{ oid => '300',
n => 'float48ne', lp => 't', p => 's', rt => 'bool', at => 'float4 float8' },

--
I've changed the numbering so that patches with the same number should
be taken as unit, separated only for readability. When referring to
the previous email overview, they map like this:

1-3 : unchanged
4-7 : 4A-4D
8 : N/A - I've left out the SQL generation for now, but I can add it later.

New in this patch set:
Patch 5 rips out the DATA() and DESCR() lines from the headers and
updates the comments to reflect that.
Patches 6A and 6B implement human-readable types etc. as described above.

-John Naylor

Attachments:

0001_corrections_v1.patchtext/x-patch; charset=US-ASCII; name=0001_corrections_v1.patchDownload
 src/backend/catalog/Catalog.pm             |  3 ++-
 src/backend/catalog/Makefile               |  2 +-
 src/backend/utils/Gen_fmgrtab.pl           |  3 ++-
 src/include/catalog/pg_partitioned_table.h |  2 +-
 src/include/catalog/pg_sequence.h          | 10 ++++++++++
 src/include/catalog/pg_subscription_rel.h  |  5 +----
 6 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 54f8353..0b260ec
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 36,42 ****
  		'int64'         => 'int8',
  		'Oid'           => 'oid',
  		'NameData'      => 'name',
! 		'TransactionId' => 'xid');
  
  	foreach my $input_file (@_)
  	{
--- 36,43 ----
  		'int64'         => 'int8',
  		'Oid'           => 'oid',
  		'NameData'      => 'name',
! 		'TransactionId' => 'xid',
! 		'XLogRecPtr'    => 'pg_lsn');
  
  	foreach my $input_file (@_)
  	{
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
new file mode 100644
index fd33426..30ca509
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** POSTGRES_BKI_SRCS = $(addprefix $(top_sr
*** 45,51 ****
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h toasting.h indexing.h \
  	toasting.h indexing.h \
      )
  
--- 45,51 ----
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h \
  	toasting.h indexing.h \
      )
  
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index ee89d50..c0efc07
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
***************
*** 2,8 ****
  #-------------------------------------------------------------------------
  #
  # Gen_fmgrtab.pl
! #    Perl script that generates fmgroids.h and fmgrtab.c from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
--- 2,9 ----
  #-------------------------------------------------------------------------
  #
  # Gen_fmgrtab.pl
! #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
new file mode 100644
index 525e541..731147e
*** a/src/include/catalog/pg_partitioned_table.h
--- b/src/include/catalog/pg_partitioned_table.h
***************
*** 10,16 ****
   * src/include/catalog/pg_partitioned_table.h
   *
   * NOTES
!  *	  the genbki.sh script reads this file and generates .bki
   *	  information from the DATA() statements.
   *
   *-------------------------------------------------------------------------
--- 10,16 ----
   * src/include/catalog/pg_partitioned_table.h
   *
   * NOTES
!  *	  the genbki.pl script reads this file and generates .bki
   *	  information from the DATA() statements.
   *
   *-------------------------------------------------------------------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
new file mode 100644
index 8ae6b71..6de54bb
*** a/src/include/catalog/pg_sequence.h
--- b/src/include/catalog/pg_sequence.h
***************
*** 1,3 ****
--- 1,13 ----
+ /* -------------------------------------------------------------------------
+  *
+  * pg_sequence.h
+  *	  definition of the system "sequence" relation (pg_sequence)
+  *
+  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * -------------------------------------------------------------------------
+  */
  #ifndef PG_SEQUENCE_H
  #define PG_SEQUENCE_H
  
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
new file mode 100644
index 991ca9d..5748297
*** a/src/include/catalog/pg_subscription_rel.h
--- b/src/include/catalog/pg_subscription_rel.h
***************
*** 23,37 ****
   */
  #define SubscriptionRelRelationId			6102
  
- /* Workaround for genbki not knowing about XLogRecPtr */
- #define pg_lsn XLogRecPtr
- 
  CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
  {
  	Oid			srsubid;		/* Oid of subscription */
  	Oid			srrelid;		/* Oid of relation */
  	char		srsubstate;		/* state of the relation in subscription */
! 	pg_lsn		srsublsn;		/* remote lsn of the state change used for
  								 * synchronization coordination */
  } FormData_pg_subscription_rel;
  
--- 23,34 ----
   */
  #define SubscriptionRelRelationId			6102
  
  CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
  {
  	Oid			srsubid;		/* Oid of subscription */
  	Oid			srrelid;		/* Oid of relation */
  	char		srsubstate;		/* state of the relation in subscription */
! 	XLogRecPtr	srsublsn;		/* remote lsn of the state change used for
  								 * synchronization coordination */
  } FormData_pg_subscription_rel;
  
0002_cleanup_v1.patchtext/x-patch; charset=US-ASCII; name=0002_cleanup_v1.patchDownload
 src/backend/catalog/Catalog.pm   | 14 +++++++-------
 src/backend/catalog/genbki.pl    | 38 +++++++++++++++++++++-----------------
 src/backend/utils/Gen_fmgrtab.pl |  5 +++--
 3 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 0b260ec..6bc14d2
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 163,169 ****
  				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
  				$catalog{rowtype_oid} =
  				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
! 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 'True' : '';
  				$declaring_attributes = 1;
  			}
  			elsif ($declaring_attributes)
--- 163,169 ----
  				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
  				$catalog{rowtype_oid} =
  				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
! 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
  				$declaring_attributes = 1;
  			}
  			elsif ($declaring_attributes)
*************** sub Catalogs
*** 176,182 ****
  				}
  				else
  				{
! 					my %row;
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
--- 176,182 ----
  				}
  				else
  				{
! 					my %column;
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
*************** sub Catalogs
*** 189,206 ****
  						$atttype .= '[]';            # variable-length only
  					}
  
! 					$row{'type'} = $atttype;
! 					$row{'name'} = $attname;
  
  					if (defined $attopt)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
! 							$row{'forcenull'} = 1;
  						}
  						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
  						{
! 							$row{'forcenotnull'} = 1;
  						}
  						else
  						{
--- 189,206 ----
  						$atttype .= '[]';            # variable-length only
  					}
  
! 					$column{type} = $atttype;
! 					$column{name} = $attname;
  
  					if (defined $attopt)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
! 							$column{forcenull} = 1;
  						}
  						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
  						{
! 							$column{forcenotnull} = 1;
  						}
  						else
  						{
*************** sub Catalogs
*** 208,214 ****
  "unknown column option $attopt on column $attname";
  						}
  					}
! 					push @{ $catalog{columns} }, \%row;
  				}
  			}
  		}
--- 208,214 ----
  "unknown column option $attopt on column $attname";
  						}
  					}
! 					push @{ $catalog{columns} }, \%column;
  				}
  			}
  		}
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 256a9c9..4bd614f
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** use strict;
*** 20,26 ****
  use warnings;
  
  my @input_files;
! our @include_path;
  my $output_path = '';
  my $major_version;
  
--- 20,26 ----
  use warnings;
  
  my @input_files;
! my @include_path;
  my $output_path = '';
  my $major_version;
  
*************** print $bki "# PostgreSQL $major_version\
*** 105,111 ****
  my %schemapg_entries;
  my @tables_needing_macros;
  my %regprocoids;
! our @types;
  
  # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
--- 105,111 ----
  my %schemapg_entries;
  my @tables_needing_macros;
  my %regprocoids;
! my @types;
  
  # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
*************** foreach my $catname (@{ $catalogs->{name
*** 124,130 ****
  	my $first = 1;
  
  	print $bki " (\n";
! 	foreach my $column (@{ $catalog->{columns} })
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
--- 124,131 ----
  	my $first = 1;
  
  	print $bki " (\n";
! 	my $schema = $catalog->{columns};
! 	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
*************** foreach my $catname (@{ $catalogs->{name
*** 150,157 ****
  	}
  	print $bki "\n )\n";
  
!    # open it, unless bootstrap case (create bootstrap does this automatically)
! 	if ($catalog->{bootstrap} eq '')
  	{
  		print $bki "open $catname\n";
  	}
--- 151,159 ----
  	}
  	print $bki "\n )\n";
  
! 	# Open it, unless bootstrap case (create bootstrap does this
! 	# automatically)
! 	if (!$catalog->{bootstrap})
  	{
  		print $bki "open $catname\n";
  	}
*************** foreach my $catname (@{ $catalogs->{name
*** 169,189 ****
  			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
! 			foreach my $att (keys %bki_values)
  			{
  
  				# Substitute constant values we acquired above.
  				# (It's intentional that this can apply to parts of a field).
! 				$bki_values{$att} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
! 				$bki_values{$att} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
  				# Replace regproc columns' values with OIDs.
  				# If we don't have a unique value to substitute,
  				# just do nothing (regprocin will complain).
! 				if ($bki_attr{$att}->{type} eq 'regproc')
  				{
! 					my $procoid = $regprocoids{ $bki_values{$att} };
! 					$bki_values{$att} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
  			}
--- 171,193 ----
  			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
! 			foreach my $column (@$schema)
  			{
+ 				my $attname = $column->{name};
+ 				my $atttype = $column->{type};
  
  				# Substitute constant values we acquired above.
  				# (It's intentional that this can apply to parts of a field).
! 				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
! 				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
  				# Replace regproc columns' values with OIDs.
  				# If we don't have a unique value to substitute,
  				# just do nothing (regprocin will complain).
! 				if ($atttype eq 'regproc')
  				{
! 					my $procoid = $regprocoids{ $bki_values{$attname} };
! 					$bki_values{$attname} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
  			}
*************** foreach my $catname (@{ $catalogs->{name
*** 215,221 ****
  			printf $bki "insert %s( %s )\n", $oid,
  			  join(' ', @bki_values{@attnames});
  
! 		   # Write comments to postgres.description and postgres.shdescription
  			if (defined $row->{descr})
  			{
  				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
--- 219,226 ----
  			printf $bki "insert %s( %s )\n", $oid,
  			  join(' ', @bki_values{@attnames});
  
! 			# Write comments to postgres.description and
! 			# postgres.shdescription
  			if (defined $row->{descr})
  			{
  				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
*************** foreach my $catname (@{ $catalogs->{name
*** 240,250 ****
  
  			# Currently, all bootstrapped relations also need schemapg.h
  			# entries, so skip if the relation isn't to be in schemapg.h.
! 			next if $table->{schema_macro} ne 'True';
  
  			$schemapg_entries{$table_name} = [];
  			push @tables_needing_macros, $table_name;
- 			my $is_bootstrap = $table->{bootstrap};
  
  			# Generate entries for user attributes.
  			my $attnum       = 0;
--- 245,254 ----
  
  			# Currently, all bootstrapped relations also need schemapg.h
  			# entries, so skip if the relation isn't to be in schemapg.h.
! 			next if !$table->{schema_macro};
  
  			$schemapg_entries{$table_name} = [];
  			push @tables_needing_macros, $table_name;
  
  			# Generate entries for user attributes.
  			my $attnum       = 0;
*************** foreach my $catname (@{ $catalogs->{name
*** 259,265 ****
  				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
! 				if ($is_bootstrap eq ' bootstrap')
  				{
  					bki_insert($row, @attnames);
  				}
--- 263,269 ----
  				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
! 				if ($table->{bootstrap})
  				{
  					bki_insert($row, @attnames);
  				}
*************** foreach my $catname (@{ $catalogs->{name
*** 276,282 ****
  
  			# Generate entries for system attributes.
  			# We only need postgres.bki entries, not schemapg.h entries.
! 			if ($is_bootstrap eq ' bootstrap')
  			{
  				$attnum = 0;
  				my @SYS_ATTRS = (
--- 280,286 ----
  
  			# Generate entries for system attributes.
  			# We only need postgres.bki entries, not schemapg.h entries.
! 			if ($table->{bootstrap})
  			{
  				$attnum = 0;
  				my @SYS_ATTRS = (
*************** foreach my $catname (@{ $catalogs->{name
*** 296,302 ****
  
  					# some catalogs don't have oids
  					next
! 					  if $table->{without_oids} eq ' without_oids'
  						  && $row->{attname} eq 'oid';
  
  					bki_insert($row, @attnames);
--- 300,306 ----
  
  					# some catalogs don't have oids
  					next
! 					  if $table->{without_oids}
  						  && $row->{attname} eq 'oid';
  
  					bki_insert($row, @attnames);
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index c0efc07..a51a755
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
*************** die "No include path; you must specify -
*** 57,62 ****
--- 57,64 ----
  
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
+ my $INTERNALlanguageId =
+ 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
  # Read all the data from the include/catalog files.
  my $catalogs = Catalog::Catalogs($infile);
*************** foreach my $row (@$data)
*** 78,85 ****
  	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
! 	# Note assumption here that INTERNALlanguageId is 12.
! 	next if $bki_values{prolang} ne '12';
  
  	push @fmgr,
  	  { oid    => $row->{oid},
--- 80,86 ----
  	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
! 	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
  	  { oid    => $row->{oid},
0003_pgattr_schema_isolation_v1.patchtext/x-patch; charset=US-ASCII; name=0003_pgattr_schema_isolation_v1.patchDownload
 src/backend/catalog/Catalog.pm     |  49 +++++++++++-
 src/backend/catalog/genbki.pl      | 158 ++++++++++++++++++-------------------
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_attribute.h |  22 +++---
 4 files changed, 140 insertions(+), 92 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 6bc14d2..246aa36
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub Catalogs
*** 44,49 ****
--- 44,50 ----
  		my %catalog;
  		$catalog{columns} = [];
  		$catalog{data}    = [];
+ 		my $is_varlen     = 0;
  
  		open(my $ifh, '<', $input_file) || die "$input_file: $!";
  
*************** sub Catalogs
*** 169,175 ****
  			elsif ($declaring_attributes)
  			{
  				next if (/^{|^$/);
! 				next if (/^#/);
  				if (/^}/)
  				{
  					undef $declaring_attributes;
--- 170,183 ----
  			elsif ($declaring_attributes)
  			{
  				next if (/^{|^$/);
! 				if (/^#/)
! 				{
! 					if (/^#ifdef\s+CATALOG_VARLEN/)
! 					{
! 						$is_varlen = 1;
! 					}
! 					next;
! 				}
  				if (/^}/)
  				{
  					undef $declaring_attributes;
*************** sub Catalogs
*** 177,182 ****
--- 185,194 ----
  				else
  				{
  					my %column;
+ 					if ($is_varlen)
+ 					{
+ 						$column{is_varlen} = 1;
+ 					}
  					my ($atttype, $attname, $attopt) = split /\s+/, $_;
  					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
*************** sub Catalogs
*** 186,192 ****
  					if ($attname =~ /(.*)\[.*\]/)    # array attribute
  					{
  						$attname = $1;
! 						$atttype .= '[]';            # variable-length only
  					}
  
  					$column{type} = $atttype;
--- 198,204 ----
  					if ($attname =~ /(.*)\[.*\]/)    # array attribute
  					{
  						$attname = $1;
! 						$atttype .= '[]';
  					}
  
  					$column{type} = $atttype;
*************** sub Catalogs
*** 202,207 ****
--- 214,223 ----
  						{
  							$column{forcenotnull} = 1;
  						}
+ 						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+ 						{
+ 							$column{default} = $1;
+ 						}
  						else
  						{
  							die
*************** sub SplitDataLine
*** 240,245 ****
--- 256,290 ----
  	return @result;
  }
  
+ # Fill in default values of a record using the given schema. It's the
+ # caller's responsibility to specify other values beforehand.
+ sub AddDefaultValues
+ {
+ 	my ($row, $schema, $catname) = @_;
+ 
+ 	die "Schema undefined for $catname\n"
+ 	  if !defined $schema;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 
+ 		if (defined $row->{$attname})
+ 		{
+ 			;
+ 		}
+ 		elsif (defined $column->{default})
+ 		{
+ 			$row->{$attname} = $column->{default};
+ 		}
+ 		else
+ 		{
+ 			die "Unspecified value in $catname.$attname\n";
+ 		}
+ 	}
+ }
+ 
  # Rename temporary files to final names.
  # Call this function with the final file name and the .tmp extension
  # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 4bd614f..1876399
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** foreach my $catname (@{ $catalogs->{name
*** 119,125 ****
  	  . $catalog->{without_oids}
  	  . $catalog->{rowtype_oid} . "\n";
  
- 	my %bki_attr;
  	my @attnames;
  	my $first = 1;
  
--- 119,124 ----
*************** foreach my $catname (@{ $catalogs->{name
*** 129,135 ****
  	{
  		my $attname = $column->{name};
  		my $atttype = $column->{type};
- 		$bki_attr{$attname} = $column;
  		push @attnames, $attname;
  
  		if (!$first)
--- 128,133 ----
*************** foreach my $catname (@{ $catalogs->{name
*** 257,281 ****
  			foreach my $attr (@user_attrs)
  			{
  				$attnum++;
! 				my $row = emit_pgattr_row($table_name, $attr, $priornotnull);
! 				$row->{attnum}        = $attnum;
! 				$row->{attstattarget} = '-1';
! 				$priornotnull &= ($row->{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
  				if ($table->{bootstrap})
  				{
! 					bki_insert($row, @attnames);
  				}
  
  				# Store schemapg entries for later.
! 				$row =
! 				  emit_schemapg_row($row,
! 					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
! 				push @{ $schemapg_entries{$table_name} }, '{ '
! 				  . join(
! 					', ',             grep { defined $_ }
! 					  map $row->{$_}, @attnames) . ' }';
  			}
  
  			# Generate entries for system attributes.
--- 255,279 ----
  			foreach my $attr (@user_attrs)
  			{
  				$attnum++;
! 				my %row;
! 				$row{attnum}   = $attnum;
! 				$row{attrelid} = $table->{relation_oid};
! 
! 				emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
! 				$priornotnull &= ($row{attnotnull} eq 't');
  
  				# If it's bootstrapped, put an entry in postgres.bki.
  				if ($table->{bootstrap})
  				{
! 					bki_insert(\%row, @attnames);
  				}
  
  				# Store schemapg entries for later.
! 				emit_schemapg_row(\%row, $schema);
! 				push @{ $schemapg_entries{$table_name} },
! 				    '{ '
! 				  . join(', ', grep { defined $_ } @row{@attnames})
! 				  . ' }';
  			}
  
  			# Generate entries for system attributes.
*************** foreach my $catname (@{ $catalogs->{name
*** 294,309 ****
  				foreach my $attr (@SYS_ATTRS)
  				{
  					$attnum--;
! 					my $row = emit_pgattr_row($table_name, $attr, 1);
! 					$row->{attnum}        = $attnum;
! 					$row->{attstattarget} = '0';
  
  					# some catalogs don't have oids
  					next
  					  if $table->{without_oids}
! 						  && $row->{attname} eq 'oid';
  
! 					bki_insert($row, @attnames);
  				}
  			}
  		}
--- 292,310 ----
  				foreach my $attr (@SYS_ATTRS)
  				{
  					$attnum--;
! 					my %row;
! 					$row{attnum}        = $attnum;
! 					$row{attrelid}      = $table->{relation_oid};
! 					$row{attstattarget} = '0';
! 
! 					emit_pgattr_row(\%row, $attr, 1, $schema);
  
  					# some catalogs don't have oids
  					next
  					  if $table->{without_oids}
! 						  && $row{attname} eq 'oid';
  
! 					bki_insert(\%row, @attnames);
  				}
  			}
  		}
*************** exit 0;
*** 380,398 ****
  #################### Subroutines ########################
  
  
! # Given a system catalog name and a reference to a key-value pair corresponding
! # to the name and type of a column, generate a reference to a hash that
! # represents a pg_attribute entry.  We must also be told whether preceding
  # columns were all not-null.
  sub emit_pgattr_row
  {
! 	my ($table_name, $attr, $priornotnull) = @_;
  	my $attname = $attr->{name};
  	my $atttype = $attr->{type};
- 	my %row;
  
! 	$row{attrelid} = $catalogs->{$table_name}->{relation_oid};
! 	$row{attname}  = $attname;
  
  	# Adjust type name for arrays: foo[] becomes _foo
  	# so we can look it up in pg_type
--- 381,397 ----
  #################### Subroutines ########################
  
  
! # Given the schema of pg_attribute, generate an entry for it using information
! # about the attribute it describes.  Any value that is not handled here
! # must be supplied by the caller. We must also be told whether preceding
  # columns were all not-null.
  sub emit_pgattr_row
  {
! 	my ($row, $attr, $priornotnull, $pgattr_schema) = @_;
  	my $attname = $attr->{name};
  	my $atttype = $attr->{type};
  
! 	$row->{attname} = $attname;
  
  	# Adjust type name for arrays: foo[] becomes _foo
  	# so we can look it up in pg_type
*************** sub emit_pgattr_row
*** 406,428 ****
  	{
  		if (defined $type->{typname} && $type->{typname} eq $atttype)
  		{
! 			$row{atttypid}   = $type->{oid};
! 			$row{attlen}     = $type->{typlen};
! 			$row{attbyval}   = $type->{typbyval};
! 			$row{attstorage} = $type->{typstorage};
! 			$row{attalign}   = $type->{typalign};
  
  			# set attndims if it's an array type
! 			$row{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
! 			$row{attcollation} = $type->{typcollation};
  
  			if (defined $attr->{forcenotnull})
  			{
! 				$row{attnotnull} = 't';
  			}
  			elsif (defined $attr->{forcenull})
  			{
! 				$row{attnotnull} = 'f';
  			}
  			elsif ($priornotnull)
  			{
--- 405,427 ----
  	{
  		if (defined $type->{typname} && $type->{typname} eq $atttype)
  		{
! 			$row->{atttypid}   = $type->{oid};
! 			$row->{attlen}     = $type->{typlen};
! 			$row->{attbyval}   = $type->{typbyval};
! 			$row->{attstorage} = $type->{typstorage};
! 			$row->{attalign}   = $type->{typalign};
  
  			# set attndims if it's an array type
! 			$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
! 			$row->{attcollation} = $type->{typcollation};
  
  			if (defined $attr->{forcenotnull})
  			{
! 				$row->{attnotnull} = 't';
  			}
  			elsif (defined $attr->{forcenull})
  			{
! 				$row->{attnotnull} = 'f';
  			}
  			elsif ($priornotnull)
  			{
*************** sub emit_pgattr_row
*** 431,437 ****
  				# fixed-width and prior columns are all NOT NULL ---
  				# compare DefineAttr in bootstrap.c. oidvector and
  				# int2vector are also treated as not-nullable.
! 				$row{attnotnull} =
  				    $type->{typname} eq 'oidvector'   ? 't'
  				  : $type->{typname} eq 'int2vector'  ? 't'
  				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
--- 430,436 ----
  				# fixed-width and prior columns are all NOT NULL ---
  				# compare DefineAttr in bootstrap.c. oidvector and
  				# int2vector are also treated as not-nullable.
! 				$row->{attnotnull} =
  				    $type->{typname} eq 'oidvector'   ? 't'
  				  : $type->{typname} eq 'int2vector'  ? 't'
  				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
*************** sub emit_pgattr_row
*** 440,464 ****
  			}
  			else
  			{
! 				$row{attnotnull} = 'f';
  			}
  			last;
  		}
  	}
! 
! 	# Add in default values for pg_attribute
! 	my %PGATTR_DEFAULTS = (
! 		attcacheoff   => '-1',
! 		atttypmod     => '-1',
! 		atthasdef     => 'f',
! 		attidentity   => '',
! 		attisdropped  => 'f',
! 		attislocal    => 't',
! 		attinhcount   => '0',
! 		attacl        => '_null_',
! 		attoptions    => '_null_',
! 		attfdwoptions => '_null_');
! 	return { %PGATTR_DEFAULTS, %row };
  }
  
  # Write a pg_attribute entry to postgres.bki
--- 439,450 ----
  			}
  			else
  			{
! 				$row->{attnotnull} = 'f';
  			}
  			last;
  		}
  	}
! 	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
  # Write a pg_attribute entry to postgres.bki
*************** sub bki_insert
*** 467,474 ****
  	my $row        = shift;
  	my @attnames   = @_;
  	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
! 	my $bki_values = join ' ', map { $_ eq '' ? '""' : $_ } map $row->{$_},
! 	  @attnames;
  	printf $bki "insert %s( %s )\n", $oid, $bki_values;
  }
  
--- 453,459 ----
  	my $row        = shift;
  	my @attnames   = @_;
  	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
! 	my $bki_values = join ' ', map $row->{$_}, @attnames;
  	printf $bki "insert %s( %s )\n", $oid, $bki_values;
  }
  
*************** sub bki_insert
*** 476,509 ****
  # quite identical, to the corresponding values in postgres.bki.
  sub emit_schemapg_row
  {
! 	my $row        = shift;
! 	my @bool_attrs = @_;
  
! 	# Replace empty string by zero char constant
! 	$row->{attidentity} ||= '\0';
  
! 	# Supply appropriate quoting for these fields.
! 	$row->{attname}     = q|{"| . $row->{attname} . q|"}|;
! 	$row->{attstorage}  = q|'| . $row->{attstorage} . q|'|;
! 	$row->{attalign}    = q|'| . $row->{attalign} . q|'|;
! 	$row->{attidentity} = q|'| . $row->{attidentity} . q|'|;
  
! 	# We don't emit initializers for the variable length fields at all.
! 	# Only the fixed-size portions of the descriptors are ever used.
! 	delete $row->{attacl};
! 	delete $row->{attoptions};
! 	delete $row->{attfdwoptions};
  
! 	# Expand booleans from 'f'/'t' to 'false'/'true'.
! 	# Some values might be other macros (eg FLOAT4PASSBYVAL), don't change.
! 	foreach my $attr (@bool_attrs)
! 	{
! 		$row->{$attr} =
! 		    $row->{$attr} eq 't' ? 'true'
! 		  : $row->{$attr} eq 'f' ? 'false'
! 		  :                        $row->{$attr};
  	}
- 	return $row;
  }
  
  sub usage
--- 461,509 ----
  # quite identical, to the corresponding values in postgres.bki.
  sub emit_schemapg_row
  {
! 	my $row           = shift;
! 	my $pgattr_schema = shift;
  
! 	foreach my $column (@$pgattr_schema)
! 	{
! 		my $pgattr_name = $column->{name};
! 		my $pgattr_type = $column->{type};
  
! 		# Supply appropriate quoting for these fields.
! 		if ($pgattr_type eq 'name')
! 		{
! 			$row->{$pgattr_name} = q|{"| . $row->{$pgattr_name} . q|"}|;
! 		}
! 		elsif ($pgattr_type eq 'char')
! 		{
  
! 			# Replace empty string by zero char constant
! 			if ($row->{$pgattr_name} eq q|""|)
! 			{
! 				$row->{$pgattr_name} = '\0';
! 			}
  
! 			$row->{$pgattr_name} = q|'| . $row->{$pgattr_name} . q|'|;
! 		}
! 
! 		# Expand booleans from 'f'/'t' to 'false'/'true'.
! 		# Some values might be other macros (eg FLOAT4PASSBYVAL),
! 		# don't change.
! 		elsif ($pgattr_type eq 'bool')
! 		{
! 			$row->{$pgattr_name} =
! 			    $row->{$pgattr_name} eq 't' ? 'true'
! 			  : $row->{$pgattr_name} eq 'f' ? 'false'
! 			  :                               $row->{$pgattr_name};
! 		}
! 
! 		# We don't emit initializers for the variable length fields at all.
! 		# Only the fixed-size portions of the descriptors are ever used.
! 		if ($column->{is_varlen})
! 		{
! 			delete $row->{$pgattr_name};
! 		}
  	}
  }
  
  sub usage
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
new file mode 100644
index a2cb313..71fc579
*** a/src/include/catalog/genbki.h
--- b/src/include/catalog/genbki.h
***************
*** 31,36 ****
--- 31,39 ----
  #define BKI_FORCE_NULL
  #define BKI_FORCE_NOT_NULL
  
+ /* Specifies a default value for a catalog field */
+ #define BKI_DEFAULT(value)
+ 
  /*
   * This is never defined; it's here only for documentation.
   *
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
new file mode 100644
index bcf28e8..5436a90
*** a/src/include/catalog/pg_attribute.h
--- b/src/include/catalog/pg_attribute.h
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 54,60 ****
  	 * that no value has been explicitly set for this column, so ANALYZE
  	 * should use the default setting.
  	 */
! 	int32		attstattarget;
  
  	/*
  	 * attlen is a copy of the typlen field from pg_type for this attribute.
--- 54,60 ----
  	 * that no value has been explicitly set for this column, so ANALYZE
  	 * should use the default setting.
  	 */
! 	int32		attstattarget BKI_DEFAULT(-1);
  
  	/*
  	 * attlen is a copy of the typlen field from pg_type for this attribute.
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 90,96 ****
  	 * descriptor, we may then update attcacheoff in the copies. This speeds
  	 * up the attribute walking process.
  	 */
! 	int32		attcacheoff;
  
  	/*
  	 * atttypmod records type-specific data supplied at table creation time
--- 90,96 ----
  	 * descriptor, we may then update attcacheoff in the copies. This speeds
  	 * up the attribute walking process.
  	 */
! 	int32		attcacheoff BKI_DEFAULT(-1);
  
  	/*
  	 * atttypmod records type-specific data supplied at table creation time
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 98,104 ****
  	 * type-specific input and output functions as the third argument. The
  	 * value will generally be -1 for types that do not need typmod.
  	 */
! 	int32		atttypmod;
  
  	/*
  	 * attbyval is a copy of the typbyval field from pg_type for this
--- 98,104 ----
  	 * type-specific input and output functions as the third argument. The
  	 * value will generally be -1 for types that do not need typmod.
  	 */
! 	int32		atttypmod BKI_DEFAULT(-1);
  
  	/*
  	 * attbyval is a copy of the typbyval field from pg_type for this
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 131,143 ****
  	bool		attnotnull;
  
  	/* Has DEFAULT value or not */
! 	bool		atthasdef;
  
  	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
! 	char		attidentity;
  
  	/* Is dropped (ie, logically invisible) or not */
! 	bool		attisdropped;
  
  	/*
  	 * This flag specifies whether this column has ever had a local
--- 131,143 ----
  	bool		attnotnull;
  
  	/* Has DEFAULT value or not */
! 	bool		atthasdef BKI_DEFAULT(f);
  
  	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
! 	char		attidentity BKI_DEFAULT("");
  
  	/* Is dropped (ie, logically invisible) or not */
! 	bool		attisdropped BKI_DEFAULT(f);
  
  	/*
  	 * This flag specifies whether this column has ever had a local
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 148,157 ****
  	 * not dropped by a parent's DROP COLUMN even if this causes the column's
  	 * attinhcount to become zero.
  	 */
! 	bool		attislocal;
  
  	/* Number of times inherited from direct parent relation(s) */
! 	int32		attinhcount;
  
  	/* attribute's collation */
  	Oid			attcollation;
--- 148,157 ----
  	 * not dropped by a parent's DROP COLUMN even if this causes the column's
  	 * attinhcount to become zero.
  	 */
! 	bool		attislocal BKI_DEFAULT(t);
  
  	/* Number of times inherited from direct parent relation(s) */
! 	int32		attinhcount BKI_DEFAULT(0);
  
  	/* attribute's collation */
  	Oid			attcollation;
*************** CATALOG(pg_attribute,1249) BKI_BOOTSTRAP
*** 160,172 ****
  	/* NOTE: The following fields are not present in tuple descriptors. */
  
  	/* Column-level access permissions */
! 	aclitem		attacl[1];
  
  	/* Column-level options */
! 	text		attoptions[1];
  
  	/* Column-level FDW options */
! 	text		attfdwoptions[1];
  #endif
  } FormData_pg_attribute;
  
--- 160,172 ----
  	/* NOTE: The following fields are not present in tuple descriptors. */
  
  	/* Column-level access permissions */
! 	aclitem		attacl[1] BKI_DEFAULT(_null_);
  
  	/* Column-level options */
! 	text		attoptions[1] BKI_DEFAULT(_null_);
  
  	/* Column-level FDW options */
! 	text		attfdwoptions[1] BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_attribute;
  
0004A_conversion_scripts_and_headers_v2.patchtext/x-patch; charset=US-ASCII; name=0004A_conversion_scripts_and_headers_v2.patchDownload
 src/backend/catalog/Catalog.pm            | 216 ++++++++--------
 src/include/catalog/convert_header2dat.pl | 370 ++++++++++++++++++++++++++++
 src/include/catalog/pg_aggregate.h        |  38 +--
 src/include/catalog/pg_amop.h             |  31 ++-
 src/include/catalog/pg_amproc.h           |  19 +-
 src/include/catalog/pg_authid.h           |  43 +++-
 src/include/catalog/pg_class.h            | 138 ++++++++---
 src/include/catalog/pg_opclass.h          |  17 +-
 src/include/catalog/pg_operator.h         |  56 +++--
 src/include/catalog/pg_opfamily.h         |   8 +-
 src/include/catalog/pg_proc.h             | 116 ++++++---
 src/include/catalog/pg_type.h             |  47 ++--
 src/include/catalog/rewrite_dat.pl        | 392 ++++++++++++++++++++++++++++++
 13 files changed, 1232 insertions(+), 259 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
new file mode 100644
index 246aa36..adb0c86
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
***************
*** 1,7 ****
  #----------------------------------------------------------------------
  #
  # Catalog.pm
! #    Perl module that extracts info from catalog headers into Perl
  #    data structures
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
--- 1,7 ----
  #----------------------------------------------------------------------
  #
  # Catalog.pm
! #    Perl module that extracts info from catalog files into Perl
  #    data structures
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
*************** package Catalog;
*** 16,32 ****
  use strict;
  use warnings;
  
- require Exporter;
- our @ISA       = qw(Exporter);
- our @EXPORT    = ();
- our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
- 
  # Call this function with an array of names of header files to parse.
! # Returns a nested data structure describing the data in the headers.
! sub Catalogs
  {
! 	my (%catalogs, $catname, $declaring_attributes, $most_recent);
  	$catalogs{names} = [];
  
  	# There are a few types which are given one name in the C source, but a
  	# different name at the SQL level.  These are enumerated here.
--- 16,29 ----
  use strict;
  use warnings;
  
  # Call this function with an array of names of header files to parse.
! # Returns a data structure describing the schemas of the system catalogs.
! sub ParseHeader
  {
! 	my (%catalogs, $catname, $declaring_attributes);
  	$catalogs{names} = [];
+ 	$catalogs{toasting} = [];
+ 	$catalogs{indexing} = [];
  
  	# There are a few types which are given one name in the C source, but a
  	# different name at the SQL level.  These are enumerated here.
*************** sub Catalogs
*** 43,55 ****
  	{
  		my %catalog;
  		$catalog{columns} = [];
- 		$catalog{data}    = [];
  		my $is_varlen     = 0;
  
  		open(my $ifh, '<', $input_file) || die "$input_file: $!";
  
  		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
- 		my $natts_pat = "Natts_$filename";
  
  		# Scan the input file.
  		while (<$ifh>)
--- 40,50 ----
*************** sub Catalogs
*** 78,145 ****
  			s/\s+/ /g;
  
  			# Push the data into the appropriate data structure.
! 			if (/$natts_pat\s+(\d+)/)
! 			{
! 				$catalog{natts} = $1;
! 			}
! 			elsif (
! 				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
! 			{
! 				check_natts($filename, $catalog{natts}, $3, $input_file,
! 					$input_line_number);
! 
! 				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
! 			}
! 			elsif (/^DESCR\(\"(.*)\"\)$/)
! 			{
! 				$most_recent = $catalog{data}->[-1];
! 
! 				# this tests if most recent line is not a DATA() statement
! 				if (ref $most_recent ne 'HASH')
! 				{
! 					die "DESCR() does not apply to any catalog ($input_file)";
! 				}
! 				if (!defined $most_recent->{oid})
! 				{
! 					die "DESCR() does not apply to any oid ($input_file)";
! 				}
! 				elsif ($1 ne '')
! 				{
! 					$most_recent->{descr} = $1;
! 				}
! 			}
! 			elsif (/^SHDESCR\(\"(.*)\"\)$/)
  			{
! 				$most_recent = $catalog{data}->[-1];
  
- 				# this tests if most recent line is not a DATA() statement
- 				if (ref $most_recent ne 'HASH')
- 				{
- 					die
- 					  "SHDESCR() does not apply to any catalog ($input_file)";
- 				}
- 				if (!defined $most_recent->{oid})
- 				{
- 					die "SHDESCR() does not apply to any oid ($input_file)";
- 				}
- 				elsif ($1 ne '')
- 				{
- 					$most_recent->{shdescr} = $1;
- 				}
- 			}
- 			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
- 			{
- 				$catname = 'toasting';
  				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
! 				push @{ $catalog{data} },
  				  "declare toast $toast_oid $index_oid on $toast_name\n";
  			}
  			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
  			{
- 				$catname = 'indexing';
  				my ($is_unique, $index_name, $index_oid, $using) =
  				  ($1, $2, $3, $4);
! 				push @{ $catalog{data} },
  				  sprintf(
  					"declare %sindex %s %s %s\n",
  					$is_unique ? 'unique ' : '',
--- 73,93 ----
  			s/\s+/ /g;
  
  			# Push the data into the appropriate data structure.
! 			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
  			{
! 				# Clear last catname so we don't overwrite that
! 				# catalog's schema with a blank one.
! 				undef $catname;
  
  				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
! 				push @{ $catalogs{toasting} },
  				  "declare toast $toast_oid $index_oid on $toast_name\n";
  			}
  			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
  			{
  				my ($is_unique, $index_name, $index_oid, $using) =
  				  ($1, $2, $3, $4);
! 				push @{ $catalogs{indexing} },
  				  sprintf(
  					"declare %sindex %s %s %s\n",
  					$is_unique ? 'unique ' : '',
*************** sub Catalogs
*** 147,153 ****
  			}
  			elsif (/^BUILD_INDICES/)
  			{
! 				push @{ $catalog{data} }, "build indices\n";
  			}
  			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
  			{
--- 95,101 ----
  			}
  			elsif (/^BUILD_INDICES/)
  			{
! 				push @{ $catalogs{indexing} }, "build indices\n";
  			}
  			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
  			{
*************** sub Catalogs
*** 189,196 ****
  					{
  						$column{is_varlen} = 1;
  					}
! 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
! 					die "parse error ($input_file)" unless $attname;
  					if (exists $RENAME_ATTTYPE{$atttype})
  					{
  						$atttype = $RENAME_ATTTYPE{$atttype};
--- 137,148 ----
  					{
  						$column{is_varlen} = 1;
  					}
! 					my @attribute = split /\s+/, $_;
! 					my $atttype = shift @attribute;
! 					my $attname = shift @attribute;
! 					die "parse error ($input_file)"
! 						unless ($attname and $atttype);
! 
  					if (exists $RENAME_ATTTYPE{$atttype})
  					{
  						$atttype = $RENAME_ATTTYPE{$atttype};
*************** sub Catalogs
*** 204,210 ****
  					$column{type} = $atttype;
  					$column{name} = $attname;
  
! 					if (defined $attopt)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
--- 156,162 ----
  					$column{type} = $atttype;
  					$column{name} = $attname;
  
! 					foreach my $attopt (@attribute)
  					{
  						if ($attopt eq 'BKI_FORCE_NULL')
  						{
*************** sub Catalogs
*** 218,259 ****
  						{
  							$column{default} = $1;
  						}
  						else
  						{
  							die
  "unknown column option $attopt on column $attname";
  						}
  					}
  					push @{ $catalog{columns} }, \%column;
  				}
  			}
  		}
! 		$catalogs{$catname} = \%catalog;
  		close $ifh;
  	}
  	return \%catalogs;
  }
  
! # Split a DATA line into fields.
! # Call this on the bki_values element of a DATA item returned by Catalogs();
! # it returns a list of field values.  We don't strip quoting from the fields.
! # Note: it should be safe to assign the result to a list of length equal to
! # the nominal number of catalog fields, because check_natts already checked
! # the number of fields.
! sub SplitDataLine
  {
! 	my $bki_values = shift;
  
! 	# This handling of quoted strings might look too simplistic, but it
! 	# matches what bootscanner.l does: that has no provision for quote marks
! 	# inside quoted strings, either.  If we don't have a quoted string, just
! 	# snarf everything till next whitespace.  That will accept some things
! 	# that bootscanner.l will see as erroneous tokens; but it seems wiser
! 	# to do that and let bootscanner.l complain than to silently drop
! 	# non-whitespace characters.
! 	my @result = $bki_values =~ /"[^"]*"|\S+/g;
  
! 	return @result;
  }
  
  # Fill in default values of a record using the given schema. It's the
--- 170,246 ----
  						{
  							$column{default} = $1;
  						}
+ 						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
+ 						{
+ 							$column{abbrev} = $1;
+ 						}
  						else
  						{
  							die
  "unknown column option $attopt on column $attname";
  						}
+ 						if ($column{forcenull} and $column{forcenotnull})
+ 						{
+ 							die "$attname is forced both null and not null";
+ 						}
  					}
  					push @{ $catalog{columns} }, \%column;
  				}
  			}
  		}
! 		# Prevent toasting and indexing blank %catalog vars from
! 		# over-writing the last real catalog.
! 		if (defined $catname)
! 		{
! 			$catalogs{$catname} = \%catalog;
! 		}
  		close $ifh;
  	}
  	return \%catalogs;
  }
  
! # Takes an array of names of data files containing Perl data structure
! # literals. This function simply calls eval on the whole string.
! # XXX This is much slower than parsing DATA() statements was.
! # Is there a better way?
! sub ParseData
  {
! 	my %catalog_data;
! 	foreach my $input_file (@_)
! 	{
! 		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
! 		my $raw_data = do
! 		{
! 			local $/ = undef;
! 			open my $ifh, "<", $input_file || die "$input_file: $!";
! 			<$ifh>;
! 		};
! 		my $parsed_data;
! 		eval '$parsed_data = ' . $raw_data;
  
! 		# XXX: Is this enough error reporting?
! 		print "Error : $@\n" if $@;
  
! 		$catalog_data{$filename} = $parsed_data;
! 	}
! 	return \%catalog_data;
! }
! 
! # Copy values from abbreviated keys to full keys.
! sub ResolveColumnAbbrevs
! {
! 	my $row    = shift;
! 	my $schema = shift;
! 
! 	foreach my $column (@$schema)
! 	{
! 		my $abbrev  = $column->{abbrev};
! 		my $attname = $column->{name};
! 		if (defined $abbrev and defined $row->{$abbrev})
! 		{
! 			$row->{$attname} = $row->{$abbrev};
! 		}
! 	}
  }
  
  # Fill in default values of a record using the given schema. It's the
*************** sub AddDefaultValues
*** 280,290 ****
  		}
  		else
  		{
! 			die "Unspecified value in $catname.$attname\n";
  		}
  	}
  }
  
  # Rename temporary files to final names.
  # Call this function with the final file name and the .tmp extension
  # Note: recommended extension is ".tmp$$", so that parallel make steps
--- 267,309 ----
  		}
  		else
  		{
! 			printf "Unspecified value in $catname.$attname\n";
! 
! 			# Give user a clue where the problem was.
! 			print "Showing other values for context:\n";
! 			my $msg;
! 			foreach (keys %{$row})
! 			{
! 				$msg .= "$_ => $row->{$_}, ";
! 			}
! 			die "$msg\n";
  		}
  	}
  }
  
+ # Some pg_proc fields are computed as part of forming a full tuple.
+ sub ComputePgProcFields
+ {
+ 	my $row = shift;
+ 
+ 	# pronargs is computed by counting proargtypes.
+ 	if ($row->{proargtypes})
+ 	{
+ 		my @argtypes = split /\s+/, $row->{proargtypes};
+ 		$row->{pronargs} = scalar(@argtypes);
+ 	}
+ 	else
+ 	{
+ 		$row->{pronargs} = '0';
+ 	}
+ 
+ 	# If prosrc doesn't exist, it must be a copy of proname.
+ 	if (!exists $row->{prosrc})
+ 	{
+ 		$row->{prosrc} = $row->{proname}
+ 	}
+ }
+ 
  # Rename temporary files to final names.
  # Call this function with the final file name and the .tmp extension
  # Note: recommended extension is ".tmp$$", so that parallel make steps
*************** sub RenameTempFile
*** 298,304 ****
  	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
  }
  
- 
  # Find a symbol defined in a particular header file and extract the value.
  #
  # The include path has to be passed as a reference to an array.
--- 317,322 ----
*************** sub FindDefinedSymbol
*** 330,351 ****
  	die "$catalog_header: not found in any include directory\n";
  }
  
- 
- # verify the number of fields in the passed-in DATA line
- sub check_natts
- {
- 	my ($catname, $natts, $bki_val, $file, $line) = @_;
- 
- 	die
- "Could not find definition for Natts_${catname} before start of DATA() in $file\n"
- 	  unless defined $natts;
- 
- 	my $nfields = scalar(SplitDataLine($bki_val));
- 
- 	die sprintf
- "Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
- 	  $file, $line, $natts, $nfields
- 	  unless $natts == $nfields;
- }
- 
  1;
--- 348,351 ----
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index ...d61cdc8
*** a/src/include/catalog/convert_header2dat.pl
--- b/src/include/catalog/convert_header2dat.pl
***************
*** 0 ****
--- 1,370 ----
+ #!/usr/bin/perl -w
+ #----------------------------------------------------------------------
+ #
+ # convert_header2dat.pl
+ #    Perl script that reads BKI data from the catalog header files
+ #    and writes them out as native perl data structures. Commments and
+ #    white space are preserved. Some functions are loosely copied from
+ #    src/backend/catalog/Catalog.pm, whose equivalents will be removed.
+ #
+ # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ # Portions Copyright (c) 1994, Regents of the University of California
+ #
+ # /src/include/catalog/convert_header2dat.pl
+ #
+ #----------------------------------------------------------------------
+ 
+ use strict;
+ use warnings;
+ 
+ use Data::Dumper;
+ # No $VARs - we add our own later.
+ $Data::Dumper::Terse = 1;
+ 
+ my @input_files;
+ my $output_path = '';
+ my $major_version;
+ 
+ # Process command line switches.
+ while (@ARGV)
+ {
+ 	my $arg = shift @ARGV;
+ 	if ($arg !~ /^-/)
+ 	{
+ 		push @input_files, $arg;
+ 	}
+ 	elsif ($arg =~ /^-o/)
+ 	{
+ 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+ 	}
+ 	else
+ 	{
+ 		usage();
+ 	}
+ }
+ 
+ # Sanity check arguments.
+ die "No input files.\n" if !@input_files;
+ foreach my $input_file (@input_files)
+ {
+ 	if ($input_file !~ /\.h$/)
+ 	{
+ 		die "Input files need to be header files.\n";
+ 	}
+ }
+ 
+ # Make sure output_path ends in a slash.
+ if ($output_path ne '' && substr($output_path, -1) ne '/')
+ {
+ 	$output_path .= '/';
+ }
+ 
+ # Read all the input header files into internal data structures
+ # XXX This script is not robust against non-catalog headers. It's best
+ # to pass it the same list found in backend/catalog/Makefile.
+ my $catalogs = catalogs(@input_files);
+ 
+ # produce output, one catalog at a time
+ foreach my $catname (@{ $catalogs->{names} })
+ {
+ 	my $catalog = $catalogs->{$catname};
+ 	my $schema  = $catalog->{columns};
+ 
+ 	# First, see if the header has any data. This is necessary
+ 	# not only because of catalogs with no data, but also because some
+ 	# values coming down the pike are comments or newlines.
+ 	my $found_one = 0;
+ 	foreach my $data (@{ $catalog->{data} })
+ 	{
+ 		if (ref $data eq 'HASH')
+ 		{
+ 			$found_one = 1;
+ 		}
+ 	}
+ 	next if !$found_one;
+ 
+ 	my @attnames;
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 		push @attnames, $attname;
+ 	}
+ 
+ 	my $datfile = "$output_path$catname.dat";
+ 	open my $dat, '>', $datfile
+ 	  or die "can't open $datfile: $!";
+ 
+ 	# Write out data file.
+ 	print $dat "# $catname.dat\n";
+ 
+ 	# Note: Put extra newlines after brackets because otherwise
+ 	# some catalogs have newlines and some don't, because of whitespace
+ 	# around DATA() comments.
+ 	print $dat "[\n\n";
+ 
+ 	foreach my $data (@{ $catalog->{data} })
+ 	{
+ 
+ 		# Either a newline or comment - just write it out.
+ 		if (! ref $data)
+ 		{
+ 			print $dat "$data\n";
+ 		}
+ 		# Hash ref representing a data entry.
+ 		elsif (ref $data eq 'HASH')
+ 		{
+ 			# Split line into tokens without interpreting their meaning.
+ 			my %bki_values;
+ 			@bki_values{@attnames} = split_data_line($data->{bki_values});
+ 
+ 			# Flatten data hierarchy.
+ 			delete $data->{bki_values};
+ 			my %flat_data = (%$data, %bki_values);
+ 
+ 			# Strip double quotes for readability. Most will be put
+ 			# back in when writing postgres.bki
+ 			foreach (values %flat_data)
+ 			{
+ 				s/"//g;
+ 			}
+ 
+ 			print $dat Dumper(\%flat_data);
+ 			print $dat ",\n";
+ 		}
+ 	}
+ 	print $dat "\n]\n";
+ }
+ 
+ 
+ # This function is a heavily modified version of its former namesake
+ # in Catalog.pm. There's probably some dead code here. It's not worth removing.
+ sub catalogs
+ {
+ 	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+ 	$catalogs{names} = [];
+ 
+ 	# There are a few types which are given one name in the C source, but a
+ 	# different name at the SQL level.  These are enumerated here.
+ 	my %RENAME_ATTTYPE = (
+ 		'int16'         => 'int2',
+ 		'int32'         => 'int4',
+ 		'int64'         => 'int8',
+ 		'Oid'           => 'oid',
+ 		'NameData'      => 'name',
+ 		'TransactionId' => 'xid',
+ 		'XLogRecPtr'    => 'pg_lsn');
+ 
+ 	foreach my $input_file (@_)
+ 	{
+ 		my %catalog;
+ 		$catalog{columns} = [];
+ 		$catalog{data}    = [];
+ 		my $is_varlen     = 0;
+ 		my $saving_comments = 0;
+ 
+ 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+ 
+ 		# Scan the input file.
+ 		while (<$ifh>)
+ 		{
+ 			# Determine that we're in the DATA section and should
+ 			# Start saving DATA comments.
+ 			if (/(\/|\s)\*\s+initial contents of pg_/)
+ 			{
+ 				$saving_comments = 1;
+ 			}
+ 
+ 			if ($saving_comments)
+ 			{
+ 				if ( m;^(/|\s+)\*\s+(.+); )
+ 				{
+ 					my $comment = $2;
+ 
+ 					# Ugly way to strip */ off the end
+ 					if ($comment =~ m;\*/$;)
+ 					{
+ 						$comment =~ s/.{2}$//;
+ 					}
+ 
+ 					# Turn C-style comment into Perl-style.
+ 
+ 					# Filter out comments we know we don't want.
+ 					if ($comment !~ /^-+$/
+ 						and $comment !~ /initial contents of pg/
+ 						and $comment !~ /PG_\w+_H/)
+ 					{
+ 						# Trim whitespace.
+ 						$comment =~ s/^\s+//;
+ 						$comment =~ s/\s+$//;
+ 						push @{ $catalog{data} }, "# $comment";
+ 					}
+ 				}
+ 				elsif (/^$/)
+ 				{
+ 					# Preserve blank lines
+ 					# Newline gets added by caller.
+ 					push @{ $catalog{data} }, '';
+ 				}
+ 			}
+ 			else
+ 			{
+ 				# Strip C-style comments.
+ 				s;/\*(.|\n)*\*/;;g;
+ 				if (m;/\*;)
+ 				{
+ 					# handle multi-line comments properly.
+ 					my $next_line = <$ifh>;
+ 					die "$input_file: ends within C-style comment\n"
+ 					  if !defined $next_line;
+ 					$_ .= $next_line;
+ 					redo;
+ 				}
+ 			}
+ 			# Remember input line number for later.
+ 			my $input_line_number = $.;
+ 
+ 			# Strip useless whitespace and trailing semicolons.
+ 			chomp;
+ 			s/^\s+//;
+ 			s/;\s*$//;
+ 			s/\s+/ /g;
+ 
+ 			# Push the data into the appropriate data structure.
+ 			if (
+ 				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+ 			{
+ 				if ($2)
+ 				{
+ 					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+ 				}
+ 				else
+ 				{
+ 					push @{ $catalog{data} }, { bki_values => $3 };
+ 				}
+ 			}
+ 			elsif (/^DESCR\(\"(.*)\"\)$/)
+ 			{
+ 				$most_recent = $catalog{data}->[-1];
+ 
+ 				# this tests if most recent line is not a DATA() statement
+ 				if (ref $most_recent ne 'HASH')
+ 				{
+ 					die "DESCR() does not apply to any catalog ($input_file)";
+ 				}
+ 				if (!defined $most_recent->{oid})
+ 				{
+ 					die "DESCR() does not apply to any oid ($input_file)";
+ 				}
+ 				elsif ($1 ne '')
+ 				{
+ 					$most_recent->{descr} = $1;
+ 				}
+ 			}
+ 			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+ 			{
+ 				$most_recent = $catalog{data}->[-1];
+ 
+ 				# this tests if most recent line is not a DATA() statement
+ 				if (ref $most_recent ne 'HASH')
+ 				{
+ 					die
+ 					  "SHDESCR() does not apply to any catalog ($input_file)";
+ 				}
+ 				if (!defined $most_recent->{oid})
+ 				{
+ 					die "SHDESCR() does not apply to any oid ($input_file)";
+ 				}
+ 				elsif ($1 ne '')
+ 				{
+ 					$most_recent->{shdescr} = $1;
+ 				}
+ 			}
+ 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+ 			{
+ 				$catname = $1;
+ 				$catalog{relation_oid} = $2;
+ 
+ 				# Store pg_* catalog names in the same order we receive them
+ 				push @{ $catalogs{names} }, $catname;
+ 
+ 				$declaring_attributes = 1;
+ 			}
+ 			elsif ($declaring_attributes)
+ 			{
+ 				next if (/^{|^$/);
+ 				next if (/^#/);
+ 				if (/^}/)
+ 				{
+ 					undef $declaring_attributes;
+ 				}
+ 				else
+ 				{
+ 					my %column;
+ 					if ($is_varlen)
+ 					{
+ 						$column{is_varlen} = 1;
+ 					}
+ 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+ 					die "parse error ($input_file)" unless $attname;
+ 					if (exists $RENAME_ATTTYPE{$atttype})
+ 					{
+ 						$atttype = $RENAME_ATTTYPE{$atttype};
+ 					}
+ 					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+ 					{
+ 						$attname = $1;
+ 						$atttype .= '[]';
+ 					}
+ 
+ 					$column{type} = $atttype;
+ 					$column{name} = $attname;
+ 
+ 					push @{ $catalog{columns} }, \%column;
+ 				}
+ 			}
+ 		}
+ 		if (defined $catname)
+ 		{
+ 			$catalogs{$catname} = \%catalog;
+ 		}
+ 		close $ifh;
+ 	}
+ 	return \%catalogs;
+ }
+ 
+ # Split a DATA line into fields.
+ # Call this on the bki_values element of a DATA item returned by catalogs();
+ # it returns a list of field values.  We don't strip quoting from the fields.
+ # Note: it should be safe to assign the result to a list of length equal to
+ # the nominal number of catalog fields, because the number of fields were
+ # checked in the original Catalog module.
+ sub split_data_line
+ {
+ 	my $bki_values = shift;
+ 
+ 	# This handling of quoted strings might look too simplistic, but it
+ 	# matches what bootscanner.l does: that has no provision for quote marks
+ 	# inside quoted strings, either.  If we don't have a quoted string, just
+ 	# snarf everything till next whitespace.  That will accept some things
+ 	# that bootscanner.l will see as erroneous tokens; but it seems wiser
+ 	# to do that and let bootscanner.l complain than to silently drop
+ 	# non-whitespace characters.
+ 	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+ 
+ 	return @result;
+ }
+ 
+ sub usage
+ {
+ 	die <<EOM;
+ Usage: convert_macro2dat.pl [options] header...
+ 
+ Options:
+     -o               output path
+ 
+ convert_macro2dat.pl generates data files from the same header files
+ currently parsed by Catalag.pm.
+ 
+ EOM
+ }
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
new file mode 100644
index 13f1bce..f7be2c0
*** a/src/include/catalog/pg_aggregate.h
--- b/src/include/catalog/pg_aggregate.h
***************
*** 55,83 ****
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	regproc		aggfnoid;
! 	char		aggkind;
! 	int16		aggnumdirectargs;
  	regproc		aggtransfn;
! 	regproc		aggfinalfn;
! 	regproc		aggcombinefn;
! 	regproc		aggserialfn;
! 	regproc		aggdeserialfn;
! 	regproc		aggmtransfn;
! 	regproc		aggminvtransfn;
! 	regproc		aggmfinalfn;
! 	bool		aggfinalextra;
! 	bool		aggmfinalextra;
! 	char		aggfinalmodify;
! 	char		aggmfinalmodify;
! 	Oid			aggsortop;
  	Oid			aggtranstype;
! 	int32		aggtransspace;
! 	Oid			aggmtranstype;
! 	int32		aggmtransspace;
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		agginitval;
! 	text		aggminitval;
  #endif
  } FormData_pg_aggregate;
  
--- 55,83 ----
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	regproc		aggfnoid;
! 	char		aggkind BKI_DEFAULT(n);
! 	int16		aggnumdirectargs BKI_DEFAULT(0);
  	regproc		aggtransfn;
! 	regproc		aggfinalfn BKI_DEFAULT(-);
! 	regproc		aggcombinefn BKI_DEFAULT(-);
! 	regproc		aggserialfn BKI_DEFAULT(-);
! 	regproc		aggdeserialfn BKI_DEFAULT(-);
! 	regproc		aggmtransfn BKI_DEFAULT(-);
! 	regproc		aggminvtransfn BKI_DEFAULT(-);
! 	regproc		aggmfinalfn BKI_DEFAULT(-);
! 	bool		aggfinalextra BKI_DEFAULT(f);
! 	bool		aggmfinalextra BKI_DEFAULT(f);
! 	char		aggfinalmodify BKI_DEFAULT(r);
! 	char		aggmfinalmodify BKI_DEFAULT(r);
! 	Oid			aggsortop BKI_DEFAULT(0);
  	Oid			aggtranstype;
! 	int32		aggtransspace BKI_DEFAULT(0);
! 	Oid			aggmtranstype BKI_DEFAULT(0);
! 	int32		aggmtransspace BKI_DEFAULT(0);
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		agginitval BKI_DEFAULT(_null_);
! 	text		aggminitval BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_aggregate;
  
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
new file mode 100644
index f850be4..7bbd25c
*** a/src/include/catalog/pg_amop.h
--- b/src/include/catalog/pg_amop.h
***************
*** 55,68 ****
  
  CATALOG(pg_amop,2602)
  {
! 	Oid			amopfamily;		/* the index opfamily this entry is for */
! 	Oid			amoplefttype;	/* operator's left input data type */
! 	Oid			amoprighttype;	/* operator's right input data type */
! 	int16		amopstrategy;	/* operator strategy number */
! 	char		amoppurpose;	/* is operator for 's'earch or 'o'rdering? */
! 	Oid			amopopr;		/* the operator's pg_operator OID */
! 	Oid			amopmethod;		/* the index access method this entry is for */
! 	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
  } FormData_pg_amop;
  
  /* allowed values of amoppurpose: */
--- 55,83 ----
  
  CATALOG(pg_amop,2602)
  {
! 	/* the index opfamily this entry is for */
! 	Oid			amopfamily BKI_ABBREV(opf);
! 
! 	/* operator's left input data type */
! 	Oid			amoplefttype BKI_ABBREV(lt);
! 
! 	/* operator's right input data type */
! 	Oid			amoprighttype BKI_ABBREV(rt);
! 
! 	/* operator strategy number */
! 	int16		amopstrategy BKI_ABBREV(str);
! 
! 	/* is operator for 's'earch or 'o'rdering? */
! 	char		amoppurpose BKI_ABBREV(pur)  BKI_DEFAULT(s);
! 
! 	/* the operator's pg_operator OID */
! 	Oid			amopopr BKI_ABBREV(oper);
! 
! 	/* the index access method this entry is for */
! 	Oid			amopmethod BKI_ABBREV(am);
! 
! 	/* ordering opfamily OID, or 0 if search op */
! 	Oid			amopsortfamily BKI_DEFAULT(0);
  } FormData_pg_amop;
  
  /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
new file mode 100644
index 1c95846..93c246f
*** a/src/include/catalog/pg_amproc.h
--- b/src/include/catalog/pg_amproc.h
***************
*** 44,54 ****
  
  CATALOG(pg_amproc,2603)
  {
! 	Oid			amprocfamily;	/* the index opfamily this entry is for */
! 	Oid			amproclefttype; /* procedure's left input data type */
! 	Oid			amprocrighttype;	/* procedure's right input data type */
! 	int16		amprocnum;		/* support procedure index */
! 	regproc		amproc;			/* OID of the proc */
  } FormData_pg_amproc;
  
  /* ----------------
--- 44,63 ----
  
  CATALOG(pg_amproc,2603)
  {
! 	/* the index opfamily this entry is for */
! 	Oid			amprocfamily BKI_ABBREV(opf);
! 
! 	/* procedure's left input data type */
! 	Oid			amproclefttype BKI_ABBREV(lt);
! 
! 	/* procedure's right input data type */
! 	Oid			amprocrighttype BKI_ABBREV(rt);
! 
! 	/* support procedure index */
! 	int16		amprocnum BKI_ABBREV(num);
! 
! 	/* OID of the proc */
! 	regproc		amproc;
  } FormData_pg_amproc;
  
  /* ----------------
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
new file mode 100644
index 9b6b52c..c06e2cd
*** a/src/include/catalog/pg_authid.h
--- b/src/include/catalog/pg_authid.h
***************
*** 44,63 ****
  
  CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
  {
! 	NameData	rolname;		/* name of role */
! 	bool		rolsuper;		/* read this field via superuser() only! */
! 	bool		rolinherit;		/* inherit privileges from other roles? */
! 	bool		rolcreaterole;	/* allowed to create more roles? */
! 	bool		rolcreatedb;	/* allowed to create databases? */
! 	bool		rolcanlogin;	/* allowed to log in as session user? */
! 	bool		rolreplication; /* role used for streaming replication */
! 	bool		rolbypassrls;	/* bypasses row level security? */
! 	int32		rolconnlimit;	/* max connections allowed (-1=no limit) */
  
  	/* remaining fields may be null; use heap_getattr to read them! */
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 	text		rolpassword;	/* password, if any */
! 	timestamptz rolvaliduntil;	/* password expiration time, if any */
  #endif
  } FormData_pg_authid;
  
--- 44,84 ----
  
  CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
  {
! 	/* name of role */
! 	NameData	rolname;
! 
! 	/* read this field via superuser() only! */
! 	bool		rolsuper BKI_DEFAULT(f);
! 
! 	/* inherit privileges from other roles? */
! 	bool		rolinherit BKI_DEFAULT(t);
! 
! 	/* allowed to create more roles? */
! 	bool		rolcreaterole BKI_DEFAULT(f);
! 
! 	/* allowed to create databases? */
! 	bool		rolcreatedb BKI_DEFAULT(f);
! 
! 	/* allowed to log in as session user? */
! 	bool		rolcanlogin BKI_DEFAULT(f);
! 
! 	/* role used for streaming replication */
! 	bool		rolreplication BKI_DEFAULT(f);
! 
! 	/* bypasses row level security? */
! 	bool		rolbypassrls BKI_DEFAULT(f);
! 
! 	/* max connections allowed (-1=no limit) */
! 	int32		rolconnlimit BKI_DEFAULT(-1);
  
  	/* remaining fields may be null; use heap_getattr to read them! */
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
! 
! 	/* password, if any */
! 	text		rolpassword BKI_DEFAULT(_null_);
! 
! 	/* password expiration time, if any */
! 	timestamptz rolvaliduntil BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_authid;
  
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
new file mode 100644
index b256657..f8ff6d2
*** a/src/include/catalog/pg_class.h
--- b/src/include/catalog/pg_class.h
***************
*** 31,85 ****
  
  CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  {
! 	NameData	relname;		/* class name */
! 	Oid			relnamespace;	/* OID of namespace containing this class */
! 	Oid			reltype;		/* OID of entry in pg_type for table's
! 								 * implicit row type */
! 	Oid			reloftype;		/* OID of entry in pg_type for underlying
! 								 * composite type */
! 	Oid			relowner;		/* class owner */
! 	Oid			relam;			/* index access method; 0 if not an index */
! 	Oid			relfilenode;	/* identifier of physical storage file */
  
  	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
! 	Oid			reltablespace;	/* identifier of table space for relation */
! 	int32		relpages;		/* # of blocks (not always up-to-date) */
! 	float4		reltuples;		/* # of tuples (not always up-to-date) */
! 	int32		relallvisible;	/* # of all-visible blocks (not always
! 								 * up-to-date) */
! 	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
! 	bool		relhasindex;	/* T if has (or has had) any indexes */
! 	bool		relisshared;	/* T if shared across databases */
! 	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
! 	char		relkind;		/* see RELKIND_xxx constants below */
! 	int16		relnatts;		/* number of user attributes */
  
  	/*
  	 * Class pg_attribute must contain exactly "relnatts" user attributes
  	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
  	 * contain entries with negative attnums for system attributes.
  	 */
! 	int16		relchecks;		/* # of CHECK constraints for class */
! 	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
! 	bool		relhaspkey;		/* has (or has had) PRIMARY KEY index */
! 	bool		relhasrules;	/* has (or has had) any rules */
! 	bool		relhastriggers; /* has (or has had) any TRIGGERs */
! 	bool		relhassubclass; /* has (or has had) derived classes */
! 	bool		relrowsecurity; /* row security is enabled or not */
! 	bool		relforcerowsecurity;	/* row security forced for owners or
! 										 * not */
! 	bool		relispopulated; /* matview currently holds query results */
! 	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
! 	bool		relispartition; /* is relation a partition? */
! 	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
! 	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
! 								 * this is really a MultiXactId */
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
! 	aclitem		relacl[1];		/* access permissions */
! 	text		reloptions[1];	/* access-method-specific options */
! 	pg_node_tree relpartbound;	/* partition bound node tree */
  #endif
  } FormData_pg_class;
  
--- 31,147 ----
  
  CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  {
! 	/* class name */
! 	NameData	relname;
! 
! 	/* OID of namespace containing this class */
! 	Oid			relnamespace BKI_DEFAULT(PGNSP);
! 
! 	/* OID of entry in pg_type for table's implicit row type */
! 	Oid			reltype;
! 
! 	/* OID of entry in pg_type for underlying composite type */
! 	Oid			reloftype BKI_DEFAULT(0);
! 
! 	/* class owner */
! 	Oid			relowner BKI_DEFAULT(PGUID);
! 
! 	/* index access method; 0 if not an index */
! 	Oid			relam BKI_DEFAULT(0);
! 
! 	/* identifier of physical storage file */
! 	Oid			relfilenode BKI_DEFAULT(0);
  
  	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
! 
! 	/* identifier of table space for relation */
! 	Oid			reltablespace BKI_DEFAULT(0);
! 
! 	/* # of blocks (not always up-to-date) */
! 	int32		relpages BKI_DEFAULT(0);
! 
! 	/* # of tuples (not always up-to-date) */
! 	float4		reltuples BKI_DEFAULT(0);
! 
! 	/* # of all-visible blocks (not always up-to-date) */
! 	int32		relallvisible BKI_DEFAULT(0);
! 
! 	/* OID of toast table; 0 if none */
! 	Oid			reltoastrelid BKI_DEFAULT(0);
! 
! 	/* T if has (or has had) any indexes */
! 	bool		relhasindex BKI_DEFAULT(f);
! 
! 	/* T if shared across databases */
! 	bool		relisshared BKI_DEFAULT(f);
! 
! 	/* see RELPERSISTENCE_xxx constants below */
! 	char		relpersistence BKI_DEFAULT(p);
! 
! 	/* see RELKIND_xxx constants below */
! 	char		relkind BKI_DEFAULT(r);
! 
! 	/* number of user attributes */
! 	int16		relnatts;
  
  	/*
  	 * Class pg_attribute must contain exactly "relnatts" user attributes
  	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
  	 * contain entries with negative attnums for system attributes.
  	 */
! 
! 	/* # of CHECK constraints for class */
! 	int16		relchecks BKI_DEFAULT(0);
! 
! 	/* T if we generate OIDs for rows of rel */
! 	bool		relhasoids;
! 
! 	/* has (or has had) PRIMARY KEY index */
! 	bool		relhaspkey BKI_DEFAULT(f);
! 
! 	/* has (or has had) any rules */
! 	bool		relhasrules BKI_DEFAULT(f);
! 
! 	/* has (or has had) any TRIGGERs */
! 	bool		relhastriggers BKI_DEFAULT(f);
! 
! 	/* has (or has had) derived classes */
! 	bool		relhassubclass BKI_DEFAULT(f);
! 
! 	/* row security is enabled or not */
! 	bool		relrowsecurity BKI_DEFAULT(f);
! 
! 	/* row security forced for owners or not */
! 	bool		relforcerowsecurity BKI_DEFAULT(f);
! 
! 	/* matview currently holds query results */
! 	bool		relispopulated BKI_DEFAULT(t);
! 
! 	/* see REPLICA_IDENTITY_xxx constants  */
! 	char		relreplident BKI_DEFAULT(n);
! 
! 	/* is relation a partition? */
! 	bool		relispartition BKI_DEFAULT(f);
! 
! 	/* all Xids < this are frozen in this rel */
! 	/* Note: "3" stands for FirstNormalTransactionId */
! 	TransactionId relfrozenxid BKI_DEFAULT(3);
! 
! 	/* all multixacts in this rel are >= this. This is really a MultiXactId */
! 	/* Note: "1" stands for FirstMultiXactId */
! 	TransactionId relminmxid BKI_DEFAULT(1);
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
! 
! 	/* access permissions */
! 	aclitem		relacl[1] BKI_DEFAULT(_null_);
! 
! 	/* access-method-specific options */
! 	text		reloptions[1] BKI_DEFAULT(_null_);
! 
! 	/* partition bound node tree */
! 	pg_node_tree relpartbound BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_class;
  
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
new file mode 100644
index 28dbc74..7c31622
*** a/src/include/catalog/pg_opclass.h
--- b/src/include/catalog/pg_opclass.h
*************** CATALOG(pg_opclass,2616)
*** 52,63 ****
  {
  	Oid			opcmethod;		/* index access method opclass is for */
  	NameData	opcname;		/* name of this opclass */
! 	Oid			opcnamespace;	/* namespace of this opclass */
! 	Oid			opcowner;		/* opclass owner */
  	Oid			opcfamily;		/* containing operator family */
  	Oid			opcintype;		/* type of data indexed by opclass */
! 	bool		opcdefault;		/* T if opclass is default for opcintype */
! 	Oid			opckeytype;		/* type of data in index, or InvalidOid */
  } FormData_pg_opclass;
  
  /* ----------------
--- 52,72 ----
  {
  	Oid			opcmethod;		/* index access method opclass is for */
  	NameData	opcname;		/* name of this opclass */
! 
! 	/* namespace of this opclass */
! 	Oid			opcnamespace BKI_DEFAULT(PGNSP);
! 
! 	/* opclass owner */
! 	Oid			opcowner BKI_DEFAULT(PGUID);
! 
  	Oid			opcfamily;		/* containing operator family */
  	Oid			opcintype;		/* type of data indexed by opclass */
! 
! 	/* T if opclass is default for opcintype */
! 	bool		opcdefault BKI_DEFAULT(t);
! 
! 	/* type of data in index, or InvalidOid */
! 	Oid			opckeytype BKI_DEFAULT(0);
  } FormData_pg_opclass;
  
  /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
new file mode 100644
index ff9b470..c94186a
*** a/src/include/catalog/pg_operator.h
--- b/src/include/catalog/pg_operator.h
***************
*** 33,52 ****
  
  CATALOG(pg_operator,2617)
  {
! 	NameData	oprname;		/* name of operator */
! 	Oid			oprnamespace;	/* OID of namespace containing this oper */
! 	Oid			oprowner;		/* operator owner */
! 	char		oprkind;		/* 'l', 'r', or 'b' */
! 	bool		oprcanmerge;	/* can be used in merge join? */
! 	bool		oprcanhash;		/* can be used in hash join? */
! 	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
! 	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
! 	Oid			oprresult;		/* result datatype */
! 	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
! 	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
! 	regproc		oprcode;		/* OID of underlying function */
! 	regproc		oprrest;		/* OID of restriction estimator, or 0 */
! 	regproc		oprjoin;		/* OID of join estimator, or 0 */
  } FormData_pg_operator;
  
  /* ----------------
--- 33,80 ----
  
  CATALOG(pg_operator,2617)
  {
! 
! 	/* name of operator */
! 	NameData	oprname;
! 
! 	/* OID of namespace containing this oper */
! 	Oid			oprnamespace BKI_DEFAULT(PGNSP);
! 
! 	/* operator owner */
! 	Oid			oprowner BKI_DEFAULT(PGUID);
! 
! 	/* 'l', 'r', or 'b' */
! 	char		oprkind BKI_DEFAULT(b);
! 
! 	/* can be used in merge join? */
! 	bool		oprcanmerge BKI_DEFAULT(f);
! 
! 	/* can be used in hash join? */
! 	bool		oprcanhash BKI_DEFAULT(f);
! 
! 	/* left arg type, or 0 if 'l' oprkind */
! 	Oid			oprleft;
! 
! 	/* right arg type, or 0 if 'r' oprkind */
! 	Oid			oprright;
! 
! 	/* result datatype */
! 	Oid			oprresult;
! 
! 	/* OID of commutator oper, or 0 if none */
! 	Oid			oprcom BKI_DEFAULT(0);
! 
! 	/* OID of negator oper, or 0 if none */
! 	Oid			oprnegate BKI_DEFAULT(0);
! 
! 	/* OID of underlying function */
! 	regproc		oprcode;
! 
! 	/* OID of restriction estimator, or 0 */
! 	regproc		oprrest BKI_DEFAULT(-);
! 
! 	/* OID of join estimator, or 0 */
! 	regproc		oprjoin BKI_DEFAULT(-);
  } FormData_pg_operator;
  
  /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
new file mode 100644
index 0d0ba7c..39bb8cd
*** a/src/include/catalog/pg_opfamily.h
--- b/src/include/catalog/pg_opfamily.h
*************** CATALOG(pg_opfamily,2753)
*** 32,39 ****
  {
  	Oid			opfmethod;		/* index access method opfamily is for */
  	NameData	opfname;		/* name of this opfamily */
! 	Oid			opfnamespace;	/* namespace of this opfamily */
! 	Oid			opfowner;		/* opfamily owner */
  } FormData_pg_opfamily;
  
  /* ----------------
--- 32,43 ----
  {
  	Oid			opfmethod;		/* index access method opfamily is for */
  	NameData	opfname;		/* name of this opfamily */
! 
! 	/* namespace of this opfamily */
! 	Oid			opfnamespace BKI_DEFAULT(PGNSP);
! 
! 	/* opfamily owner */
! 	Oid			opfowner BKI_DEFAULT(PGUID);
  } FormData_pg_opfamily;
  
  /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
new file mode 100644
index c969375..4b2cf32
*** a/src/include/catalog/pg_proc.h
--- b/src/include/catalog/pg_proc.h
***************
*** 35,77 ****
  
  CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  {
! 	NameData	proname;		/* procedure name */
! 	Oid			pronamespace;	/* OID of namespace containing this proc */
! 	Oid			proowner;		/* procedure owner */
! 	Oid			prolang;		/* OID of pg_language entry */
! 	float4		procost;		/* estimated execution cost */
! 	float4		prorows;		/* estimated # of rows out (if proretset) */
! 	Oid			provariadic;	/* element type of variadic array, or 0 */
! 	regproc		protransform;	/* transforms calls to it during planning */
! 	bool		proisagg;		/* is it an aggregate? */
! 	bool		proiswindow;	/* is it a window function? */
! 	bool		prosecdef;		/* security definer */
! 	bool		proleakproof;	/* is it a leak-proof function? */
! 	bool		proisstrict;	/* strict with respect to NULLs? */
! 	bool		proretset;		/* returns a set? */
! 	char		provolatile;	/* see PROVOLATILE_ categories below */
! 	char		proparallel;	/* see PROPARALLEL_ categories below */
! 	int16		pronargs;		/* number of arguments */
! 	int16		pronargdefaults;	/* number of arguments with defaults */
! 	Oid			prorettype;		/* OID of result type */
  
  	/*
  	 * variable-length fields start here, but we allow direct access to
  	 * proargtypes
  	 */
! 	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
  
  #ifdef CATALOG_VARLEN
! 	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
! 	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
! 	text		proargnames[1]; /* parameter names (NULL if no names) */
! 	pg_node_tree proargdefaults;	/* list of expression trees for argument
! 									 * defaults (NULL if none) */
! 	Oid			protrftypes[1]; /* types for which to apply transforms */
! 	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
! 	text		probin;			/* secondary procedure info (can be NULL) */
! 	text		proconfig[1];	/* procedure-local GUC settings */
! 	aclitem		proacl[1];		/* access permissions */
  #endif
  } FormData_pg_proc;
  
--- 35,133 ----
  
  CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  {
! 	/* procedure name */
! 	NameData	proname BKI_ABBREV(n);
! 
! 	/* OID of namespace containing this proc */
! 	Oid			pronamespace BKI_DEFAULT(PGNSP);
! 
! 	/* procedure owner */
! 	Oid			proowner BKI_DEFAULT(PGUID);
! 
! 	/* OID of pg_language entry */
! 	Oid			prolang BKI_DEFAULT(12);
! 
! 	/* estimated execution cost */
! 	float4		procost BKI_DEFAULT(1);
! 
! 	/* estimated # of rows out (if proretset) */
! 	float4		prorows BKI_DEFAULT(0);
! 
! 	/* element type of variadic array, or 0 */
! 	Oid			provariadic BKI_DEFAULT(0);
! 
! 	/* transforms calls to it during planning */
! 	regproc		protransform BKI_DEFAULT(0);
! 
! 	/* is it an aggregate? */
! 	bool		proisagg BKI_DEFAULT(f);
! 
! 	/* is it a window function? */
! 	bool		proiswindow BKI_DEFAULT(f);
! 
! 	/* security definer */
! 	bool		prosecdef BKI_DEFAULT(f);
! 
! 	/* is it a leak-proof function? */
! 	bool		proleakproof BKI_ABBREV(lp) BKI_DEFAULT(f);
! 
! 	/* strict with respect to NULLs? */
! 	bool		proisstrict BKI_DEFAULT(t);
! 
! 	/* returns a set? */
! 	bool		proretset BKI_DEFAULT(f);
! 
! 	/* see PROVOLATILE_ categories below */
! 	char		provolatile BKI_ABBREV(v) BKI_DEFAULT(i);
! 
! 	/* see PROPARALLEL_ categories below */
! 	char		proparallel BKI_ABBREV(p) BKI_DEFAULT(u);
! 
! 	/* number of arguments */
! 	int16		pronargs;
! 
! 	/* number of arguments with defaults */
! 	int16		pronargdefaults BKI_DEFAULT(0);
! 
! 	/* OID of result type */
! 	Oid			prorettype BKI_ABBREV(rt);
  
  	/*
  	 * variable-length fields start here, but we allow direct access to
  	 * proargtypes
  	 */
! 
! 	/* parameter types (excludes OUT params) */
! 	oidvector	proargtypes BKI_ABBREV(at);
  
  #ifdef CATALOG_VARLEN
! 
! 	/* all param types (NULL if IN only) */
! 	Oid			proallargtypes[1] BKI_DEFAULT(_null_);
! 
! 	/* parameter modes (NULL if IN only) */
! 	char		proargmodes[1] BKI_DEFAULT(_null_);
! 
! 	/* parameter names (NULL if no names) */
! 	text		proargnames[1] BKI_DEFAULT(_null_);
! 
! 	/* list of expression trees for argument defaults (NULL if none) */
! 	pg_node_tree proargdefaults BKI_DEFAULT(_null_);
! 
! 	/* types for which to apply transforms */
! 	Oid			protrftypes[1] BKI_DEFAULT(_null_);
! 
! 	/* procedure source text */
! 	text		prosrc BKI_ABBREV(s) BKI_FORCE_NOT_NULL;
! 
! 	/* secondary procedure info (can be NULL) */
! 	text		probin BKI_DEFAULT(_null_);
! 
! 	/* procedure-local GUC settings */
! 	text		proconfig[1] BKI_DEFAULT(_null_);
! 
! 	/* access permissions */
! 	aclitem		proacl[1] BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_proc;
  
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
new file mode 100644
index e355144..1039c1b
*** a/src/include/catalog/pg_type.h
--- b/src/include/catalog/pg_type.h
***************
*** 37,44 ****
  CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  {
  	NameData	typname;		/* type name */
! 	Oid			typnamespace;	/* OID of namespace containing this type */
! 	Oid			typowner;		/* type owner */
  
  	/*
  	 * For a fixed-size type, typlen is the number of bytes we use to
--- 37,48 ----
  CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  {
  	NameData	typname;		/* type name */
! 
! 	/* OID of namespace containing this type */
! 	Oid			typnamespace BKI_DEFAULT(PGNSP);
! 
! 	/* type owner */
! 	Oid			typowner BKI_DEFAULT(PGUID);
  
  	/*
  	 * For a fixed-size type, typlen is the number of bytes we use to
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 66,72 ****
  	 *
  	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
  	 */
! 	char		typtype;
  
  	/*
  	 * typcategory and typispreferred help the parser distinguish preferred
--- 70,76 ----
  	 *
  	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
  	 */
! 	char		typtype BKI_DEFAULT(b);
  
  	/*
  	 * typcategory and typispreferred help the parser distinguish preferred
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 76,92 ****
  	 */
  	char		typcategory;	/* arbitrary type classification */
  
! 	bool		typispreferred; /* is type "preferred" within its category? */
  
  	/*
  	 * If typisdefined is false, the entry is only a placeholder (forward
  	 * reference).  We know the type name, but not yet anything else about it.
  	 */
! 	bool		typisdefined;
  
! 	char		typdelim;		/* delimiter for arrays of this type */
  
! 	Oid			typrelid;		/* 0 if not a composite type */
  
  	/*
  	 * If typelem is not 0 then it identifies another row in pg_type. The
--- 80,99 ----
  	 */
  	char		typcategory;	/* arbitrary type classification */
  
! 	/* is type "preferred" within its category? */
! 	bool		typispreferred BKI_DEFAULT(f);
  
  	/*
  	 * If typisdefined is false, the entry is only a placeholder (forward
  	 * reference).  We know the type name, but not yet anything else about it.
  	 */
! 	bool		typisdefined BKI_DEFAULT(t);
  
! 	/* delimiter for arrays of this type */
! 	char		typdelim BKI_DEFAULT(\054);
  
! 	/* 0 if not a composite type */
! 	Oid			typrelid BKI_DEFAULT(0);
  
  	/*
  	 * If typelem is not 0 then it identifies another row in pg_type. The
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 99,105 ****
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem;
  
  	/*
  	 * If there is a "true" array type having this type as element type,
--- 106,112 ----
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem BKI_DEFAULT(0);
  
  	/*
  	 * If there is a "true" array type having this type as element type,
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 118,130 ****
  	/*
  	 * I/O functions for optional type modifiers.
  	 */
! 	regproc		typmodin;
! 	regproc		typmodout;
  
  	/*
  	 * Custom ANALYZE procedure for the datatype (0 selects the default).
  	 */
! 	regproc		typanalyze;
  
  	/* ----------------
  	 * typalign is the alignment required when storing a value of this
--- 125,137 ----
  	/*
  	 * I/O functions for optional type modifiers.
  	 */
! 	regproc		typmodin BKI_DEFAULT(-);
! 	regproc		typmodout BKI_DEFAULT(-);
  
  	/*
  	 * Custom ANALYZE procedure for the datatype (0 selects the default).
  	 */
! 	regproc		typanalyze BKI_DEFAULT(-);
  
  	/* ----------------
  	 * typalign is the alignment required when storing a value of this
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 162,168 ****
  	 * 'm' MAIN		  like 'x' but try to keep in main tuple
  	 * ----------------
  	 */
! 	char		typstorage;
  
  	/*
  	 * This flag represents a "NOT NULL" constraint against this datatype.
--- 169,175 ----
  	 * 'm' MAIN		  like 'x' but try to keep in main tuple
  	 * ----------------
  	 */
! 	char		typstorage BKI_DEFAULT(p);
  
  	/*
  	 * This flag represents a "NOT NULL" constraint against this datatype.
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 172,203 ****
  	 *
  	 * Used primarily for domain types.
  	 */
! 	bool		typnotnull;
  
  	/*
  	 * Domains use typbasetype to show the base (or domain) type that the
  	 * domain is based on.  Zero if the type is not a domain.
  	 */
! 	Oid			typbasetype;
  
  	/*
  	 * Domains use typtypmod to record the typmod to be applied to their base
  	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
  	 * domain.
  	 */
! 	int32		typtypmod;
  
  	/*
  	 * typndims is the declared number of dimensions for an array domain type
  	 * (i.e., typbasetype is an array type).  Otherwise zero.
  	 */
! 	int32		typndims;
  
  	/*
  	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
  	 * collatable base types, possibly other OID for domains
  	 */
! 	Oid			typcollation;
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  
--- 179,210 ----
  	 *
  	 * Used primarily for domain types.
  	 */
! 	bool		typnotnull BKI_DEFAULT(f);
  
  	/*
  	 * Domains use typbasetype to show the base (or domain) type that the
  	 * domain is based on.  Zero if the type is not a domain.
  	 */
! 	Oid			typbasetype BKI_DEFAULT(0);
  
  	/*
  	 * Domains use typtypmod to record the typmod to be applied to their base
  	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
  	 * domain.
  	 */
! 	int32		typtypmod BKI_DEFAULT(-1);
  
  	/*
  	 * typndims is the declared number of dimensions for an array domain type
  	 * (i.e., typbasetype is an array type).  Otherwise zero.
  	 */
! 	int32		typndims BKI_DEFAULT(0);
  
  	/*
  	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
  	 * collatable base types, possibly other OID for domains
  	 */
! 	Oid			typcollation BKI_DEFAULT(0);
  
  #ifdef CATALOG_VARLEN			/* variable-length fields start here */
  
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 206,212 ****
  	 * a default expression for the type.  Currently this is only used for
  	 * domains.
  	 */
! 	pg_node_tree typdefaultbin;
  
  	/*
  	 * typdefault is NULL if the type has no associated default value. If
--- 213,219 ----
  	 * a default expression for the type.  Currently this is only used for
  	 * domains.
  	 */
! 	pg_node_tree typdefaultbin BKI_DEFAULT(_null_);
  
  	/*
  	 * typdefault is NULL if the type has no associated default value. If
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 216,227 ****
  	 * external representation of the type's default value, which may be fed
  	 * to the type's input converter to produce a constant.
  	 */
! 	text		typdefault;
  
  	/*
  	 * Access permissions
  	 */
! 	aclitem		typacl[1];
  #endif
  } FormData_pg_type;
  
--- 223,234 ----
  	 * external representation of the type's default value, which may be fed
  	 * to the type's input converter to produce a constant.
  	 */
! 	text		typdefault BKI_DEFAULT(_null_);
  
  	/*
  	 * Access permissions
  	 */
! 	aclitem		typacl[1] BKI_DEFAULT(_null_);
  #endif
  } FormData_pg_type;
  
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index ...7b5deb4
*** a/src/include/catalog/rewrite_dat.pl
--- b/src/include/catalog/rewrite_dat.pl
***************
*** 0 ****
--- 1,392 ----
+ #!/usr/bin/perl -w
+ #----------------------------------------------------------------------
+ #
+ # rewrite_dat.pl
+ #    Perl script that reads in a catalog data file and writes out
+ #    a functionally equivalent file in a standard format.
+ #
+ #    -Metadata fields are on their own line
+ #    -Fields are in the same order they would be in the catalog table
+ #    -Default values and computed values for the catalog are left out.
+ #    -Column abbreviations are used where indicated.
+ #
+ # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ # Portions Copyright (c) 1994, Regents of the University of California
+ #
+ # /src/include/catalog/rewrite_dat.pl
+ #
+ #----------------------------------------------------------------------
+ 
+ use Catalog;
+ 
+ use strict;
+ use warnings;
+ 
+ my @input_files;
+ my $output_path = '';
+ my $expand_tuples = 0;
+ 
+ # Process command line switches.
+ while (@ARGV)
+ {
+ 	my $arg = shift @ARGV;
+ 	if ($arg !~ /^-/)
+ 	{
+ 		push @input_files, $arg;
+ 	}
+ 	elsif ($arg =~ /^-o/)
+ 	{
+ 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+ 	}
+ 	elsif ($arg eq '--revert')
+ 	{
+ 		revert();
+ 	}
+ 	elsif ($arg eq '--expand')
+ 	{
+ 		$expand_tuples = 1;
+ 	}
+ 	else
+ 	{
+ 		usage();
+ 	}
+ }
+ 
+ # Sanity check arguments.
+ die "No input files.\n" if !@input_files;
+ foreach my $input_file (@input_files)
+ {
+ 	if ($input_file !~ /\.dat$/)
+ 	{
+ 		die "Input files need to be data (.dat) files.\n";
+ 	}
+ }
+ 
+ # Make sure output_path ends in a slash.
+ if ($output_path ne '' && substr($output_path, -1) ne '/')
+ {
+ 	$output_path .= '/';
+ }
+ 
+ # We pass data file names as arguments and then look for matching
+ # headers to parse the schema from.
+ my @header_files;
+ foreach my $datfile (@input_files)
+ {
+ 	$datfile =~ /(.+)\.dat$/;
+ 	my $header = "$1.h";
+ 	if (-e $header)
+ 	{
+ 		push @header_files, $header;
+ 	}
+ 	else
+ 	{
+ 		die "There in no header file corresponding to $datfile";
+ 	}
+ }
+ 
+ # Metadata of a catalog entry
+ my @metafields = ('oid', 'descr', 'shdescr');
+ 
+ # Read all the input files into internal data structures
+ my $catalogs     = Catalog::ParseHeader(@header_files);
+ my $catalog_data = parse_data_preserve_comments(@input_files);
+ 
+ # produce output, one catalog at a time
+ foreach my $catname (@{ $catalogs->{names} })
+ {
+ 	# @attnames here can also be column abbreviations.
+ 	my @attnames;
+ 	my $catalog = $catalogs->{$catname};
+ 	my $schema  = $catalog->{columns};
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname;
+ 
+ 		# Use abbreviations where available, unless we're writing
+ 		# full tuples.
+ 		if (exists $column->{abbrev} and !$expand_tuples)
+ 		{
+ 			$attname = $column->{abbrev};
+ 		}
+ 		else
+ 		{
+ 			$attname = $column->{name};
+ 		}
+ 		push @attnames, $attname;
+ 	}
+ 
+ 	if (defined $catalog_data->{$catname})
+ 	{
+ 
+ 		# Back up old data file rather than overwrite it.
+ 		# We don't assume the input path and output path are the same,
+ 		# but they can be.
+ 		my $newdatfile = "$output_path$catname.dat";
+ 		if (-e $newdatfile)
+ 		{
+ 			rename($newdatfile, $newdatfile . '.bak')
+ 			  or die "rename: $newdatfile: $!";
+ 		}
+ 		open my $dat, '>', $newdatfile
+ 		  or die "can't open $newdatfile: $!";
+ 
+ 		foreach my $data (@{ $catalog_data->{$catname} })
+ 		{
+ 			# Either a newline or comment - just write it out.
+ 			if (! ref $data)
+ 			{
+ 				print $dat "$data\n";
+ 			}
+ 			# Hash ref representing a data entry.
+ 			elsif (ref $data eq 'HASH')
+ 			{
+ 				my %values = %$data;
+ 				print $dat "{ ";
+ 
+ 				# Write out full tuples fully expanded. This is useful
+ 				# for debugging, and as a prerequisite for changing
+ 				# default values or column abbreviations.
+ 				if ($expand_tuples)
+ 				{
+ 					# We must do the following operations in the order given.
+ 					Catalog::ResolveColumnAbbrevs(\%values, $schema);
+ 					if ($catname eq 'pg_proc')
+ 					{
+ 						Catalog::ComputePgProcFields(\%values);
+ 					}
+ 					Catalog::AddDefaultValues(\%values, $schema, $catname);
+ 				}
+ 				else
+ 				# Write out tuples in a compact representation.
+ 				{
+ 					# We must do the following operations in the order given.
+ 					strip_default_values(\%values, $schema, $catname);
+ 					if ($catname eq 'pg_proc')
+ 					{
+ 						delete $values{pronargs}
+ 						  if exists $values{pronargs};
+ 						# Assumes pg_proc.dat is in expanded form.
+ 						delete $values{prosrc}
+ 						  if $values{prosrc} eq $values{proname};
+ 					}
+ 					add_column_abbrevs(\%values, $schema);
+ 				}
+ 
+ 				# Separate out metadata fields for readability.
+ 				my $metadata_line = format_line(\%values, @metafields);
+ 				if ($metadata_line)
+ 				{
+ 					print $dat $metadata_line;
+ 					print $dat ",\n";
+ 				}
+ 				my $data_line = format_line(\%values, @attnames);
+ 
+ 				# Line up with metadata line, if there is one.
+ 				if ($metadata_line)
+ 				{
+ 					print $dat '  ';
+ 				}
+ 				print $dat $data_line;
+ 				print $dat " },\n";
+ 			}
+ 			else
+ 			{
+ 				die "Unexpected data type";
+ 			}
+ 		}
+ 	}
+ }
+ 
+ # When the build scripts consume the data, they just slurp the whole
+ # file and ignore non-data. That won't work if we want to transform
+ # the data into a standard format, because we want to preserve comments
+ # and blank lines. We have to separate data from comments, and
+ # parse data entries retail.
+ sub parse_data_preserve_comments
+ {
+ 	my %catalog_data;
+ 	foreach my $input_file (@_)
+ 	{
+ 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+ 		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
+ 		my $data = [];
+ 		my $prev_blank = 0;
+ 
+ 		# Scan the input file.
+ 		while (<$ifh>)
+ 		{
+ 			if (/^$/)
+ 			{
+ 				# Preserve non-consecutive blank lines.
+ 				# Newline gets added by caller.
+ 				if (!$prev_blank)
+ 				{
+ 					push @$data, '';
+ 					$prev_blank = 1;
+ 				}
+ 			}
+ 			else
+ 			{
+ 				$prev_blank = 0;
+ 				if (/{/)
+ 				{
+ 					# Capture the hash ref
+ 					# NB: Assumes that the next hash ref can't start on the
+ 					# same line where the present one ended.
+ 					# Not foolproof, but we shouldn't need a full lexer,
+ 					# since we expect relatively well-behaved input.
+ 
+ 					# Quick hack to detect when we have a full hash ref to
+ 					# parse. We can't just use a regex because of values in
+ 					# pg_aggregate and pg_proc like '{0,0}'.
+ 					my $lcnt = tr/{//;
+ 					my $rcnt = tr/}//;
+ 
+ 					if ($lcnt == $rcnt)
+ 					{
+ 						my $entry;
+ 						eval '$entry = ' . $_;
+ 						if (!ref $entry)
+ 						{
+ 							die "Error parsing $_\n";
+ 						}
+ 						push @$data, $entry;
+ 					}
+ 					else
+ 					{
+ 						my $next_line = <$ifh>;
+ 						die "$input_file: ends within perl hash\n"
+ 						  if !defined $next_line;
+ 						$_ .= $next_line;
+ 						redo;
+ 					}
+ 				}
+ 				# Capture comments that are on their own line.
+ 				elsif (/^\s*#\s*(.+)\s*/)
+ 				{
+ 					my $comment = $1;
+ 					push @$data, "# $comment";
+ 				}
+ 				# Assume bracket is the only token in the line.
+ 				elsif (/^\s*(\[|\])\s*$/)
+ 				{
+ 					push @$data, $1;
+ 				}
+ 			}
+ 		}
+ 		$catalog_data{$filename} = $data;
+ 	}
+ 	return \%catalog_data;
+ }
+ 
+ sub strip_default_values
+ {
+ 	my $row     = shift;
+ 	my $schema  = shift;
+ 	my $catname = shift;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 
+ 		# Delete values that match defaults.
+ 		if (defined $row->{$attname})
+ 		{
+ 			if (defined $column->{default}
+ 				and ($row->{$attname} eq $column->{default}))
+ 			{
+ 				delete $row->{$attname};
+ 			}
+ 		}
+ 		else
+ 		{
+ 			if (!exists $column->{default}
+ 				and !exists $column->{abbrev}
+ 				and $attname ne 'pronargs'
+ 				and $attname ne 'prosrc')
+ 			{
+ 				die "Missing value in $catname.$attname\n";
+ 			}
+ 		}
+ 	}
+ }
+ 
+ sub add_column_abbrevs
+ {
+ 	my $row    = shift;
+ 	my $schema = shift;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $abbrev  = $column->{abbrev};
+ 		my $attname = $column->{name};
+ 		if (defined $abbrev and exists $row->{$attname})
+ 		{
+ 			$row->{$abbrev} = $row->{$attname};
+ 		}
+ 	}
+ }
+ 
+ sub format_line
+ {
+ 	my $data = shift;
+ 	my @atts = @_;
+ 
+ 	my $first = 1;
+ 	my $value;
+ 	my $line = '';
+ 
+ 	foreach my $field (@atts)
+ 	{
+ 		next if !defined $data->{$field};
+ 		$value = $data->{$field};
+ 
+ 		# Re-escape single quotes.
+ 		$value =~ s/'/\\'/g;
+ 
+ 		if (!$first)
+ 		{
+ 			$line .= ', ';
+ 		}
+ 		$first = 0;
+ 
+ 		$line .= "$field => '$value'";
+ 	}
+ 	return $line;
+ }
+ 
+ # Rename .bak files back to .dat
+ # This requires passing the .dat files as arguments to the script as normal.
+ sub revert
+ {
+ 	foreach my $datfile (@input_files)
+ 	{
+ 		my $bakfile = "$datfile.bak";
+ 		if (-e $bakfile)
+ 		{
+ 			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+ 		}
+ 	}
+ 	exit 0;
+ }
+ 
+ sub usage
+ {
+ 	die <<EOM;
+ Usage: rewrite_dat.pl [options] datafile...
+ 
+ Options:
+     -o               output path
+     --revert         rename .bak files back to .dat
+     --expand         write out full tuples
+ 
+ Expects a list of .dat files as arguments.
+ 
+ Rewrites data files and strips defaults values.
+ Make sure location of Catalog.pm is passed to the perl interpreter:
+ perl -I /path/to/Catalog.pm/ ...
+ 
+ EOM
+ }
0004B_data_files_mechanical_v2.patch.tar.gzapplication/x-gzip; name=0004B_data_files_mechanical_v2.patch.tar.gzDownload
�P�0Z��{�+��'8���i��-��$�;��v[���qKK3�{z��d�YU�H&�L�����}��$	���u�����b�~��@ �X,��������l��~�����fUo��$��~���<�[,E�E��2���],�E��i�igq���#���(�S��������##���������/�������/����7����n>_13��O������c�T��g�6"��_�(�������|w���I��?i��?Y2�����g�c����YVU���N��f
�(Jby�����*����u�I4S��i�����{Q�Ql��O����jg���$�m�:�O�O����]��U#���=@p�)����=���e��F`4���X�6��OIZ�t�����L{�)hm�O��(���i��L�b#F����.�/M�1��?n�$�m��'��z�����f=���f��
��P��hE�����e�f�rt��a���j���_G��J�h�gt���}��O^�Zo����M���\��k������h��6����W���y}��g�l�������~J����u�O���Q��O���~�����/��"���3����7O��-b_x���u����~�0n~���3C�����}_�������i7��q�������]s�����=����U�{���1}<~�)ls��|e�t����u�������9�w���w��o���s7�p;��T���0��_d�H������y�j&F5��4sfP��L�����0���L�,�X�
����~��������x��?R��:�%�����N�Gd���e���;�	�S�HPD���[f� ~��4�C�\�Fp
�^!Nl���~2U?������f������JJ���$�q��(��Y���,PO���<��{��o�������� ��*q�q��,��kX\�~}��?�o��B���CE]z��������jT�P� ����D"S�\�,���R+80,x)�c$��3����N�d{	�0H,;:t�0�n�X;�����E��N�GP��/w��%����f$��8u�n����������0hbL�HPb4j���T�h��}��a���PU!��i����uO�m���0�)���Jg(x��G�4��I���jG�C��8z�}���wO�2�~��R�����Y�Fg�^��HA�j��$���`z��E�'A��D�Sq��B#�D;<�>��������Z ��.%F���$ �M���HP~-� ��"	�I� k��a����<GM!N
��H?��v=
���n�u?A!g����aF�wR�E���/�:b�xhV/��D�����JO�#��lU�"���H��	�9��]o
�������Y�f�q���BO�
Qe�����"G����������*��!)K
I�8�����>�@� �Q��i��tn�\�������<��Z��A�c��a
7H@��@@�K����4��B�X���o���&�D�!*"���B�b)���=:O����v�v�l�_K�-���#�?s���g����]���>21�h�G5��mS� �o
����>r��>�Mu�f���/H�-�C|�"�r�_���aQj������Za^h��)�rA����r����)�M�5���"���q�f�����^Na��r����H7C<#�e
T(��b]�&��n���k;#�Kr�����f�=�9��dRQ��S���5�`�<w������� �tiM�Q~/��h���y3��^�hz"���Q/���^d��Q���r�����������!�W�<L�/��{�B+��r�����Y����@��{9�Ee`�~e�c[�yb_��_t?��U{������n���z�^�N���8������c��jq@�7�
�N�hu����
���M�C{�f�*���)��9���Q(g�s���c��8:QU��k�m�C}�>���+e� if���z��Czj������/����x��[C�|%�
����j���MAX������>��J�� �B��!�K��u�c{BDG���.���k(�J~e�,����Z��4�7��[k)�RQ`������������k	�I?�Y$,qB^�_�VC��?�zq��EW�����������M��G~�>�c��O�������~=�G��g���.�v��8����X�����?�*L����G�#������q���iZ�6�?���ob�����y���c���E�����lY�L}��<V�K^�iZ�X�52����-�?n=\�zBN�I�YG���#{,��a�E6!�E���~^�?�*".���{��&�X�Y����n�K�eY�����G���mb�]�]���
��PMik�i+����K�������"������XGn�����lZ���_������� ��~���Th�?VM�M�q��
x��g.����N�8����������d�H#&���>:6<(�6�����T���$�j�����t���T%^Pt�W
4�"��]�{����_���3�����8*}_:����-/@������?���Q*����e4H&���%y]���c��H����
~��D�>y@�~�q�j��@��8X���nI�>@#?���z�5v�

 �=�2m�m��]�_G���n�g9�������c,�y<��+5_�A Slx��&0������9�T�����PPw>��;NQ{����[Hf��z�:�d����Q���������O
6��E�
0ih6�_�t`M����:��<��]���L���yJ�up�@Z.2
���,|7����q���%��_Z.*
�� ���	�7���B?k3$�	�����n�E[b����������V&�f��{AN�&Qc�������~_�2}*|�y��l�V��U�B�X��u��_���P6��o�:]`S������Yh�w$��T<���#�~��|O!F��I�Z��\�E��fJ.��Q����0��?7��0��EK)< %����yR<����A��xpE{\7�f}�5�Y?�?��s�����CC�0]�;�|��������n�92z��S7�5��i�{6����?��w�;�}��6��M��39���]��<���P�����<wh~)v�2�_������W|�.M�^�������7�l���3[���p���H6��S��\��o@~H�����[e�"TN�����������B�s;N'���/������n����dz����n�]���e��/�7iw3�����>&i��W3�������������;�����;]��]7��8n���c��d��z�j�.�5�s��9[�;����]�U.��3�����O?
���~s14a�-
�\w����7�q�����Jf���o�����&�22��8rR!a������G��e=t�������\w�o�1q�4�����������H��7���OfM����h$�b�����>~cf�?4�j���&��53��o�N�e�Y?������4���}{���X7�5s���
��)�xx���b_L�������?^��2�06�]|��2�03���AS��,f&4�A�G���v�Z'�0�������|�Z-f(���L��i�Z5fa@e5��Mt5V�!:5�U����N���5��B_�4�P� �9@E�����cJ��K;&t����A@e�jg:L�T��(p���l��+�8�ve�Sw>�Kc��a
���i���,(p�������T�!�N�S�be�2�0e��nmZwZ��h���R�,�����E}�;Rdt��j���@S��*t��jg:�\E��vVFg*�u�qU�KG�M��uh�)� � �)���6���X�qLmt������7�k�S�.����S2
C)��KTH	���5 V-��
a�B���}8$PI�E<��@S���������:
h.��V!(�����`�0X�S���=DTI�I��Q!URaZ����RgtHD����,|���3���2���
?��7S�e�1�@����N�<�Y�A��b6���@����n_P�P+`���u�c_\i)1���	�P��cB��+k���`e=�4XY�xR�~F�*[���h6���>������hc/��c��K���6��U3O�J�IJ-{	�<O	a?
V����
V����B���<-Q�6�Su��V�P�	�
4\0O	.4\0O	{.���\&
�S<�(����H��%Bx6l(����	����4Lyv�
SN��������0�99�;~���s
�a�z��+���l���b~�I��7��I����0���8q��_�7*�u�a
?
��(p���@��w?PY��[

&P����
8�O� F��h/���(�������&OBN������Y�G�������x.�0^�B�Z	C
Y�X�����m�@:k'���Lw������B��s��������JR�B0����y����*�7�ym*�|�</r�|�<�PQ�#g|�4���FV%������I�/*�;T<WrGx���<�\HDxn���W����7]�����n��������s9]:p�=4,�xn	!g�C�2p�Q=������A���#�x6�"�:m20��lE:��D�;S&�hN�	��]���	���&�[)��`+_f��EJ����+lX���p3w.�L3w.�L3O�������=�30.�w�-��'�g:�����8�VK�	8��
h��f�VD�����8�v3��`;�l���A�s�?K�se7w
��?W�2���n��������\i������!���YD�y������
#:0��sU�t`��3t����U�\Ji�*��J[���=�!#�����B228p]�P�3@�������@��h��x��<hR���O�r�|������AY ���AZ gyf)�@�����t��Of�]���?i"��B	22��/'��AL5_,AFA�|�DU��DP��^������������^��B5"np��J�M��Ni����(
7�D}VP����8�f���>��*4M�t��	��7�3H���LhL�������������	Z�T�T&�b�<��&�b�N��`��� ��	����C�t���������J��b�jl�9,��,��<����)@�_&��@���CE��l�L�n��yq?%.���h��)���kgB���f�Y(��s�L�*����V<lzUm�0�Xp�~�L����E<����l��fb5[�E�R	
}S��=R"
�H�+(�����'�KX �;�s��r�������b���+��4:�=���U�����4I�n�QA�w�=�����	2���mI*H��7�_�BS�*K�����I���T22Pi2/(*�e��2Pn2;S��@�x*D�����=�\
W��xCk�]X���o���;/{�<U�{���;�Vh��;W�xl���}���*^.�������t��Qa����KjdXP~:�U���L���w*,(@��w{SJ�
����y��6OT��>�av�����;/yl&���	
6�a�r~��2�2S��'I)�%������A��\��sS����D%��UV��]�G���|�'�����6��L]�
&JGN��
MG���s[_��<����9@F=�����~B�4vS1����@GN��W�#�Y�xN���yF��9@�S���i��,�d����M�O��;�=-������9!��;��X ��[�m���`��>_P���~���y��B��&b?��'|�j�����<�\� �y:r������9@�+Wxr@��%]��NY
�����p�(�p�H�\ ��+>��D�s��{e)>���H:O�n�Q�-�A����+���>=>��������1iZ�8��q��q��W`��j�ZL]�f�����A��Y��B(hHo����J�Z=�6�V�zRsgE��h�j�jh;���G� N:ZO�l��4�{*��F�7�:�<N��������4+���E�F\HI�]t���m�T�*GR{�������0������0B+i�#�%:5>������^��03]��F�������T�,�H�1�M�a��-d�L�������������Ua�R����A�DoF�
�����w��L�P�l�Bh�hC�4�x�>��Y����'����4�0g��74���Z�a*q�A�f��t���%6���3��I?���	���W�M������N*��TZ�������sEg�����j���B��*��[���D�M�V&jF�+��	5�+��4����c�������+�U�gT&F��@%�D�Md�,�|t)�D{�f2�y X�+�����-d�e �R���V2lv)9���w����l,�6�PS-�6E_�,'��"�F)���C�����^�y!z�Bv�r�����t\v����r��bf��]��3n��+y�<��.tr����VH�����=���n��D��Z�.-_�<��w1�J%�Tuo�[J���F#N���Dw���	�>zj��'H$��4d:��H��_Di�r$Q�/�4X��e�y�I��#�j~�����D5�6�`A$1���`A$1���`�H���{h�0�e�J$1�a$���H"�dS"�P��D>�F[~�Z���s����q��KMs1�Y�G���,4�
f�����\4C�]�����z�]"
t��������C�-�����Vw~b�p��%xq��X���8��x�����%��D`�m��z[wQ��-�J��v�I�%e&�������KJ��K�Nt:�I8hX<���������\u���;i.�j��4�#soeZ �Ed�\���<W�FG��3u��9�Y�b("��5uT+z�#�Q�iN��B<K�<r�	�����#'y�H��)@���f�,���c@�9@��������L��s����:6$�C~��q���������T�������9�]Z�;�($vf����7��M��`n��x[ ��Q��g22����NsC��R��n��G�;��@�2

fz��O����W�*J��4�s�,��<{'������gd� ��?9���C,��k��W�X�:)t��K��f����1�2���d�2���3jd`Gs%�@�IUY �yfGn�\����	9I�ZE �����TTW�s�o�x7L�����=~^�-b!�s;��x+P�X�-C��Ol=������l�q���|}����{����"����p���H�������E��g-h�8O��s����A�56Gr�5tGr������#���<������&�������{7a�����? s$��q��{�ISP;����.��M�������'������cttdpq������5s�����g�����J0�\��-��%.=���B�+��U@l(�%�
p��gLeP-Hk�f������m�QOhm�a�B�����=�/�a��m�e�B�����}�5��F��l�N[_o~\����2��}���q��>�p�?�p�7?�p�W?�p�w?�p��?�p��?�p
�?��M�?<�
@<�
7@��\�f����t�<
G}� �3B�T\�	��:���8���&��Ao��\��_��;� �x�$�,��e�(�Ol�&
7�I�2���� ���+��f9�P�M���0���M��0�=�
S��0�=����X?�=����X?�����?}�5��j[w]�
�6�]�n�~��0>�����y��3I�	�����6+��.�Z,�P�Da/:�)�1�S8�� ��7O*���OA����L�A�<��9yq
���)yq�c��]��(b�RG��b{Tp�A0	
��<\ ���@%*8O�
����5 HlNBm�7o�$T9��[4	U���	U����N��*gV�y���j��qUz�@��f�V�MV�}`3@m ��v��ha�)��C�f�a����|�U�`i Z���-j�1����/����$��K�*�f�.V���B�k�l�UD�.]�t��8��r�`�3�����`�w@$X����u�9!�%���+�0/�YaAB�'XU�`����m---K
�����C��a ��3��:T�-�U�p�����+D+�Y&�_��@�`fyL���@���]�^P
c��TUY�@���w���W��q�V��
��uPP���>���\P}	�����x��5L�������oH����y/IBMeZ	�m
��<B���*+O����<Uyb�^��������=
�\�P-����J=��(� ��?
l`g8</}<�O�z���\
���f�"������%������%���lq��I��
��Td��8}22���>��N����t�OI����uF�G�����;|"0P!�H�#����@y�m�X;�
B���+{LBZ��+{L��W�������Nj3��IL�R���W{�OR�I�����m
W��|������"��x���E����8T*��C�����."��J���U�g����*	iD\������A-8�X�D��0-i��������A�%��g�03i�9�]�g%/�����h���
��Y�P�S<k�T��nM��9�����_h9Bm�����ID����U�KQ	>�f����i�`v.p��O1���n��}�b�.�"n�E�����~����^S��2,Y��2d`PY�S|���J�^�J�Z)���� #DYT�@�'��)�&8*���bI2t�g���&z����S?��C�Wbi��-	�~dh�� d��� O� �'d*5�dh���\�1��1����S����FaBXl.j�('���
�h�)1:��X*t�	��T�@�3�������RPI���(�T�@{Y��������0�����MHE[Thp!�R�B�N4�$�
�h�8:��{z�	�ld;:KY��A�D)��B���pi�
�&Ju�M��9=�imL3/5���4�R�imL��N5�R�imL����	��TS�.�
�H�����mC4P#aC�j�'+r�S���h���vm4@5V�k���P�B�j�,��mr��
r*4q(%�Th�Pj��� ���R�A��yM�S�S�E*t���w�����N�A{��Se��������M��9�J��F��n�)�f�

�K)��B�R�V��@���*4��f��&��Y�\9)����p-���	�&�a*4���	s�
�h��B�zF���N�c-�Q�	�jI�8��	�&$\��)�&$����&5P�s��`�V�7���f�F����4�>�P� ���2&!�N�2	g�d�@�k�
.fj�\�z�v�q��BlA!����:��plE�������`�R�*4����Cdh0o�����I�EQ����e.����;KB"��h�/�B�z^�d�@������:���u��?4��v��Z�|���hB�\��_����z�,����������������}���H�kdlCwk�Y���$�}>Uh�
��|B������t����UJi"v��~�]����	:��5�
�h��G��4a��B�GC4y'q�{h�A3���:����������J��k�5-p3�^����;����;����;����;���.E��pY�<19���:�{"��M��Q���V�i�~=��h���]��>�[�v:���f�7M=�G>@�7O��8���:�3:��}i2������z����=m����;�>����|U���}���g��plW���>z����}�6z�l�h���(^,�,{����w�g�}V�E�,�W�~�)e�Wwww�Q?�����O����1zw7�F��_D��J|�Kz��KJ�v������x�u��G�aG���A�-�
%�0h�M��A�h�e�b6�0 �G�U���]����%@di���Yg�SXG�2���Xh�"�9S�'Wks��eh��V�K�R�h��8E���6��jhK��	�2�aIB��Puh�,�@S�fG�Q�IZ"K��6���dN��1�������hrC
6�rC��0�f��7������9�J���
M��F���e���L����R�Sd,��y�+��\��	��\@��-��/�+/J�R���yNDR��V"��(++��bG-U�JiT�����T���v���W�K��<g\����:�H����2ZU5k���0� ���������J�
�s�������D�9&�J�aw��qFRM��Q#g�:��JR� �;��sZ���� �"������L�L�A\�E�K�~�c��� 	I�9��/��r3Pgl+��%��h��vv#�-':�B�k.U���w],5���jaD(uo�R%]��o���V��N�N��Nl�����)�.�H�����.�$�f"��E&bvi���I)��Q'������%+��-��n�(y�+�����Q�IK]��3�]���Kr��;V��%H����L��6+���8V��t|��L[..u�O��X5��Sni!f	����A�����R	.����K���t��<��V;����B������e�,�!q�\w� ���:�v:AF�m�,6Y*���r��,(	P�eX.I,@��]f���)K�(�H�������J�,��|��j)���4,E�h�E��f~�|�Gj�'C���r����.�����Kt+Z1��e�H��P{��	l2�3 3�y93�W7��A�T�8S�G�8�J��t�n�iX���t��1��{D��IL�Ka{H��g9��HH
M�X���|�������_�lT3$�'")r��I�WZd

4�J�Sf��9K��V��������]J��g��J�S���]���U��@j,�T��lF&&����Y��d���BjE��Q~�H5+��������������0�q3��}HH�H'I�-����Vm
M$M�S��.i��a���D,j�NC
�F����X'�H�u�M���$,�I	�&m�Si�MM9X���MqHvx)=Pc�:E�t8��#)�D|z�29��R�2��R|r���#c)�����%�2m��w8UjHv9{CE�y[ :����!�U���2m�����T������}�t���x!:�B�Ja���25T0@e�cG�T��b���
�+�!�*X��!�*X��!)<*X���u[*�	Y��e*�)�tv�#�2���`� �QL�F1
&���D0c�f�oT0�h`��l|�`Dm�������&��	��a`B,X��T�����*3�4h`�i E�d0�i����A#�
L5
u�L����a7�*����L��	��R�l�,�2�;���
��>�W(p^�-8$�.�r/�2~P����,N1���j�Dp�f�C28E���V���0����j�B�[,��**dcUQa��UQ�[�\H��O���'T0��s�T08�r���5�#'{d0��)j%�Am�Hq8���]miO/��H�L��[T���Db0:��x��.S����
^&��(NX�x�L�x�
��;����)�65�pJ��M:���U��j�F�H��M��\��}T�pJJ��N������t8���RX�AUd�~�����@6h�&�\+N�R�I�S5�&��p�&������dp���5�B��cd�h�E��S4S"�N�r<g���D��RL�X�z%�_!�A5�H�*�D�*D0������M����X�F��a���}2X
�����)`�+&��
�$���lA$�)
@�:2��l�!��
�V"Qb0�B#��-�*|t*Q�T����9_$B)bG�~��=L�IY�@J�`��N"2X������)`�$"��
�t<��?}�5]m����^����������R�

J�&���$(�6�h$L��+sz��/��)/��\,���u�H�E��(=
Az�z�(��-j��(PD�Q����@d���yj�������6��O�������E(	�&P�^�$(���RV�����L�BKY�����2�kZ��t��RV�E�VV�%\��	�x��".�M?��tP��A9�����tP���tY:(OYyNC���<���mR���E�F��A\:(�"�4����4�Ay��s���������<eEs�b��7��Cm�xU���J#>
Q|(��(P���UU�Z�P��i6L(���E�0Q���U�9�W���E�(:
At���V�V�R�lq�9���H���F@������~� �y���`����`\��s��ElZ�b���Z0o��NR--<�:�J0B�}H�A#IQ�40�$i`�5��l11��Z���F#
�(FA��zU��G�/V���h�H#��F#
�.F��bQ��dT�T0��`$9R�H��:�V���So5�-����H3�����*�X��`��.^�
�����x��6�`�.��L��	��� �L)�@:3���Z�������`\�?b�W}�,��-����sK�������	�5��M���������8��I����F�T8�t�p������1���A�]��H�g��'0A&u�7��e�p�L ��
����8S#7�����
+�*������eg~:�Zv2���d8�y�cA��,zR�g�s�����O�9������e������������eb�Z�\�����H��Lp�3�9���{������&8o�yO[��;d��\���eG\.^�����zCw�'�Er�>�
G��P���*��.P����,Z���
G�V*�Z�p�>l�$�8,^��Y)�h�T8��R�h���������ZH�$�(�k8�&R2M�d8�H�W��f�_��������T8�d��';� ��I)���+�M�\�iR���I�#�&�v4p��OM��?�����p�hs�]wF@�#�P���T8�IYv�Y�n�4�
��c�����������C3�#�Ek�$�8'�p�9I��������p2M�����40�<��g!
�8�2SO�<H�����#��y��<>FwwO,��?��������Wu_o����\�O��f����������7o�����v��������W���y}��g�����y����RF|uwwG�S��
����$f|��
�-��/�>o5�{n����Wu�D9��~�o�����������a[��u����o���u5 ���������>�`~��0���Y���{�����o���aC�-�����$�h�<n�M���=��n��]�I�N�����Ms`�m�_o�������c��/��"�2����e�����gD|<~�t����|������o�	��N����~�`ulj��f��2����=S#F�����s7"|���Pw�q�M^�{"4My	�B*S��ebo��_d�_0J��L��]��L�������u��a��!��}�$r��L���f�S�������?������v�2���s�����Z��M���3��e���o���*����/�I�u�7��|���-�4����v���S�m�u��9@����OfjL�|f��]�?�)8M)Fm��7���7�z�������D��j��Yq��}���{6�f��13��P5����}����]��q�g������M[6p��y��@L�����z�'w����������S���P��M�[���>s���#��pl�0�"������}����G�0�m{:�F���Y_��)|���O�q�(����j����i=}�k�7���b��qR8NV-n0������n��6�)���[#,�e�#JR*s���Q�!����H.Z��H1�����i����R�1d�F����.��@�8�����Gh�cHco�C��!����PWT�596em����$LK�!Nhy��P{��I�H����W��"��
1��&!q��POt%i�WO1�E�e�;�4C)6��q�XE�Y�b(\Y�a�n,D���*U.�^)�����J�8�M�	l$��{�i��,��w��oM���y��6��Av�C��m���a���l_�n�qH�Kx+���F�e.&y���9���u?l���|��;l��~<��!04";����*�xL������m��6�N�C{����o�t���������O_�}z���n��^��Ep��������8�Y}��m��q�>zd6������n'�}��m��,������cp]#8"�S�����y���_���(����Cs��U�����7Cj�2��s�:T�N]�Ta�?���@�g���?0
n����>�gf��`Fi
�������&	#fh9$R���
fWo�L|We
P���^
B�u<�gxo����Lny4�V�.=����8������V
���6k�8����vl��� �����
1'e�N\h����h��[Y�2��,�e�s��
o��(�"	.�+�m�������ef)����)2��f��)�&��eV�dA�Rt/ ���n�of��8������t#���
o��8�"�Jq�����9�R���}���fs���t�9�21$n��
D�@�V���}+C���_JI7�ol�����vw����b�,d����K)�F����Zi�_���o���76�m���t���B�],������[��f��u+�~1%�������7a��-��*7Xd�82�`������I�|�y��s�y�
u�y��J�����"�R����<�������[�V��bJ��}�C���Pk�m��p��7��j����q��w�Eq*+b��-�G�x
2�������.���,��$�q0~�����f$�p��F�b���C��d�\�
8�d�S�*��9�JU�w�1�n36io0*;e����Fv�H��B�#1����cY,<�L����(}���jc��J������]7�����l���� �f��x�x��C}���sn����S�K������7�U?O�����4�iZ�7DB/��8�2����C�_7���B,V�s�����o���MAu�����B�����n,u�L_����J�;Y�wN�n��cU��A\���9��$�m��B����b���bLK��������@��������u)�9Y���t,�y0����������!��8��-.��U����2l,����*�S/l-�/Yk����^�`���S�����$�P
�w��e��������L�G���������8�����<|-=����9��L�~C�a-�j3�M�a�@���A��oZ�+��F@�].TF���7QS`����v�b�sm��f$�PX�`(5�2_OP`��s�y8;����{�y��E��0���P���3tg�����B{�J�U24n� :���+�7W��|���2r��24d0"@4�
0�:�r4�<���/�����M��*A��R!#��3%b2����,���_}����ki���U�"�
+|�~�lc
P�]�f�����
`X:6����)��0l9�L��_V��/��_]$�em��@���F3��Pq����� �jW��H�w7o0�����O�*�-O�f�������������i����7]4t��
A��!u���������{�7>����>4���M{����3>���E������c�
����k����]����M2�hh�v�5���c������Vc���f��4�����kS�M46���/��&,6��7�{.������Py���z{blM}]����y��������x���z�P���O}�cd�&�������
��+��{����vL�������(���f��.���m�@��v34����^Or?x���|���V�J� ��o1��G'Y�����V�s���X-XH������������o_����=�jf�C��zwn2\w�����p��Vq#c��P��a#����g6&�� x9���ols
'�����9U=��9R�kis�H�l�����;��\
�:H����>���'*��(�K��F,k��gLs6������I5�:�����?;E?�S�����z��!-�
D���vX��Eu�Z5oWx���>���4��`��1������7�L��vH�����_S�Q�}N�@�������3����2���cY$M5��������k���;#���������E��C��lc��c���c��a:l���a�u�P����mqs~���[I����Sm7]�z����yz��i�f8�����/����?|�{���^��j"#c_�,T�v����=��?������4�����G��h��6l��nO�=��2�1���6����=���w�z���J������K�����~��?��� �?������W���W����jN#=}3$�cX�Lu����������'�u�u/�A�� ��y8��H9)I������7C�T
;C��N�ag0]8J�-��2hv�<�L_Q�l��c��������Oa��>>7����7�y�����O�}�����{���{��������������;}������Ky2��+>m�C<��f�SE���w�����D�fz����w�:�S7c�k�T����6][���8���u��qR�o]v1����43�����f�_��(�+~m���V��c=���h���Wg�m,?�&�����/��Y�n���O%>0I�?L�gS��L��|����b7}��i���������o������?��~���S6s�0K���>l���wv>���OG*F��G��8}pn�?�����{e��o�^�i}\o���2�+2�_*,~i�c����o�����|_yY^�!����jy&���]�'����y����Y�h���q�K�����4�����8�b�,��i^���0(����3P7��b�/�U���ZR����}��7������_U��/��������M������������<p��W�����:�������-�����O�<���E�?�d�����,*���������H'
V[#����S�4c���f�pQ��8��F(��P���R#�1f����.��]�H��1�������}�e�>V��p��S�8�|�����K��@Ek���Ow������7�q
K���9�v��T^C�3�H��m�n��bbs���+i�e���?���m������zO�*g�	{Y�3V����-��q�.�SV4�Y����6�&�������{���i��[=7�z���;H���;���/T��a�V�\JC��9�a�1:�Y|����E���(}�w�d�	���1H`�����^�m���rp&/3�o�$��ll�=�I������c�T+��pF+�8o��l��+�������wo7�[)��r5��Rc�f>�o�)�t���_yl�,���+;=7=<#>W;N�	��hx���o�"�L�[���������##j}*��'�?�L��J�"fCj�}v�����	�����6|{���>ck�%�H��>�}<��Q�tY*�IR�Z��]$�����M��F��y2p�n5���\�q����P��1U�FlU�Fl�n~�W]��t
H^��Yz�T�(\�������j�A7���� 2��r������<;,ds���F��,�����U������mo�����{H�s�L�)Q����6��v�h�1V���n��nY;G�T���	�#�OX���<W%m9��h�rFB��}Y.�f�����%'���	Y�c�����v�!L�6Lh�&RlBgt&�Sa���L��8h���M�|���5/�����Dq&xH��^�K':td�%t_4��#��r\�i�9h�Z-I���Z���7�=�E������f���-�}��{��1�:m�@2a�Z6�x`�04Z�M��y�vX���>rJ��B����#�?
������rd�?���7�i:oH����(�p������3��p�m�V��P��f�?;0���}=������������������q�e���z?�d��������T�p�*�k��������S7�������d!�:�C6�z�}�^�i�d�1
��-������&��]s��t�a�
� ����C�,]�����+�'�;O=�R�X��o�3H��|R��g�U�c@���s"(t�DB����X�ovl���3�
A��D���g:�!�g�	X]��
�����=�3AcY�

�J���h]_����1/��a�4�
I��F�X��'�����gm���#�8��M}�e�8���Xpm�H7�,��PP3�����E�[���Yr�`�}e����Q'x�{~t��^�Dy�a����������v���{6����%=�&��$A&2��3��O�S��&�JJ,�������&	bH)p=.�l�o|M�P[5C�9�ZF������@�
o��(AN�����2�(��e������?u��E^]��}��W�M��t���D�#^�0?��p�|�J��JE>���8b��Uq��\��x[���#Q��C�c�����j*G����
y��<<���}q��9�*gW{��������B��s�Bk�F��	Z1���m���4�U�N���\�3#8�����i��H����%4"���:C�$-�U=-��:�f�s��x���B[X�L��QU�G�IFt95GM�K�:�u��
�%�K�U~,�^�^��Z"[��J�g|FlDRzlUR&����n����!��v���<��'��A���^��W�l���0�e��g�U'r	��IE6r8I����a
2i�|�vo���G���<#8����� 9<��l3��UU�uTY�*!g�N�~�������R�1����r�F������4����R������8j|�e��X!��v���:l���"�
$���!�gm�A��r��6���C	�qP$�J���v��M���Au�4�45>a��	�E�2X\��������lG���@����0Fg�D�e���t��3�)�S��%���6�B=d`>���##u�J���!#�<���<2��:��G��z����8�����HF�Dv*�J�Y53~�^	�
A[ ��d������d�������\�Y
��yuM�����l��5g�����2�P m^/�c�E�r�-��p<�Y�c�r���i����+t|��8�	f���"��BNC����Y�����Vph��:6�6s^����
���f��;�����tj|�ma��:0���@
�"1|�3��C���2��!{k����I�9��S��2?�Of��&�nH� �O�_3�H"-��#Bb������yH��!��Z�L6?�w���G����/�����O��Z��u��VF�+����6}����[3�E�,-�$��-*��\�9_�

.�
��m�0%���������y��������l�-ZG����_���O�U���?K���]R��t�nl�������6lE�U��c�1�E-��=�zh�t:���l�	;�z��oV��o�������Z��!���k���pm��K�69��m���s���e��;��+��rV��������TFt�����z\�{�;��U���s�=�m�G�=;���yzz��O���N��#�4a�����AHz��������\�����������~������L��IS���U�J��)�8�7��=����[)����o�>�oaX[*�M����k�����z���otL����
���3�
+���������'-��W&�������n�P�-����;)�������h�j��Wa8NT��$9T0�����'������M�3W>/������K��x�>����Z�&���|e|f�!'���Z�,N\N��D.��2����R�8^p������1;��&��u�N,^g���y��5��
��]y�T�+l�u����^)���-<QQ�0���RO�o��Ra}9�z�����uN�/��-Y�N.�H$�g1��y~����<���
.|�H��'pE���<��M��F���~�mnC��#M_��
���'���'�67�~���7W����W�<�e�<�I��n?�k�^���m3���}�F���1r��d��W����Y�:�T�_�x�j,��@R��=���c;��,��Tk��@�w"!X���v�3|����w�
al4T��m��7p%,I���q|���TIh���}u�U`b�J��d&`�c`��,?F��cg����BDs��c��-Y'G��c�����#3�����e���'E������o���!{���:1
��tZ��F�������5�!����K�\H�����%�l��=m�;,e3��o&R%/�r�M����-%����.�B����+d8�{o?<b�No�.\�����d����TOJ���*Nv�-��F(�0���Q�OM�X-�j��Q�D��u�,�4�����rU��j\Rn���4j��G����U�������X����?�Z����;�����{_�z��ye7�T5_��X�v�xV��+���f3��>�Av^����n��*��4\���,q������([Vl8�����PYVS���*��o�mUe1��D����W���5�;�g-U�����X�����x+����������N�M��.A
��� �E.�V����n1�t��~����	,c!r��T���E�e[������!L��%5Q6�JG)�8�C�nOL���9����S(uldt����d�B���;�T������>bz�s���G��N��~8
��C�m���+<�Fk���o���>t�X7���gAy�
�Wi�k�g���
��
Z���_�&4'K�	���������_����)�^�i>�w��?W���jY[�����y�_{kh'HS�S��d������w�&;+	�d���~�PHvv
�/�Y(V��������f����T�Q
'��b��_?2x~�*���^>k�;K��"P��������-���������������cP�f�]��`�nrd	&o�0$�V��#?j9�;�U(�}v��'�r�u�w����[x6���/5e+��%R�^�%������c=��XE*���*t�.�"�^���p~<S��������c'X��t��*��4%��	���9F���b�1�������a��_����#���wo��	��%$�
�}8	���t�'a��|��+�m��HX���	�(����,��	#�.�T�xG^}];(�@y������-�G�$D�)�����c�T^y��x���i����=O9(�4=�����y�����J5���MW������Y��P\���*@1
oV�{�_[�`&W�!�8.B����������bH���
R���Q���m���z�b���6
zh}��4���j'�:�3������2!�,�pi��������o��[L�M�8U���K����Ct�j����	R��,���l�B�#�VE�	\����SSrhW�d�	�������E�@o�^�rU�c�F6d�(�E n*V7�J��a����|��:%��J�v��!9���61	E�	\�d�L��$�1��e@����.�6BF�H�]�&�'��:�YXuR
�,�p�N�O-��-���tqv��"~K�?NJo�Y1�oJU���HM^�[�����;P��I�Hf��c$O5�p�&#�"�c�E�!��������&"J�A�A��k���P$T���8�^�����Pt�l2,(��K}�nUw��$k4����p�"������eA�����a(��eq����ak&��	�G�B��uS2r��b���{�L)�w�J�3��,��X��g��t�f�\z���dz�;�FQ�J����������i����f�{{;��@�����^c`~1/B�#�B���<v����(��%��$��(4�V���a�)m��B���Rwz�����_�
��� t��t�'j0:�������2�@�N%��]�#�	�>�����"�0FTq�f%����BlI�G8��$�;diz~�7Txd9��Cb�.^�;���m�3��N�����`�dP�����[dV��q�6d������i$V@_xVq��g����o$#V����������}LJ�h��:H������VoO�����?$u_����_O�����A$�Y��vb0���jk��-�-��;q�S�!���L�X�O��*��K}����v��"�y�Y�=u)�[���z��$���K�O������=�+�P�����fR��z���K��������Ix�Hca~�h����2��Hf�7x��ie��g�J��K��bd}u'�D��Hmr�yDb��p+���o1���uxeROtH1��O�D?aDkzK��i�J�(p�D*}4�|dr'_m-�#�%?�nhTK���������C�t�)XB��!B�� m�	�S�Y[]���U��:��y��5�l���$L�6��e��0��X�oQM�V@;a4Ub��;'�����A���"������8kuW\�&Ia����T�^~6���)t��������	��s3������N"3y������HAMte�2yW��=�$)�����<]����#Io�����q��������rD�Z��huz�Sv3�Viq�������c����B5��"�s����Z��,c�>���7�KdGCJ��J;���0.z?�c�q/ ��O����&ysP,����~�X����q�&V/���y����f[J)kwb
i�P(������~�J)�vS�zP(=�����s�c���Z����wC��O�q��Y7��s���%}��e�V�(UV�T
�F����C��o����K��o�82�&��YGFC:&P�j���U+
�Y[FnC��L�i�qO�L#j�WtR�!Ym���FB$�0���p�vx�8p��(
dMVj�/��>���.<P��uXdW�F�G���wi�6P�nr��R8��L9N�B��D�����`�i0H�#�*��:LV0�J�����eK�
t�	^�E�s*)A6CJ�������?��^��!!���fd�?l���!U{9����	\]G�BF��gY�#��/A��!�i���k��#�H���P�0f����md��� �T0d�Z�\T�<1�+��h��_����s����i�3�����������)��a����/b�������s5�r���"���^�3��>/�N��ed�Ia�4�6������s�E�����6j��@�����Vu��u���NF���;��J���I�����Hj�)Q��������]v���q�=� 7�LJ'��O=}������o�y�~^������]Z���5�.8�/�y����!�I_>1%��>�p��c����m�U�_��x9�_���6e�U�FA�+�1k9��]X(���!��B��En�"A�r�n�7`PT�O�(A��H.E����n��En,#q�r�y`9�.MwM�R1����@.E��H�c�o|����7��t7��C����p�9�����Sd��\l8
:i������xFrJ������[���)pR��"�Za���k#}S���e
��=�E+WdG�����'��2��+h#!�3�F��v�����������'`HiGf�x�DS�UH]K�;����������n�_�Nmp��������L�A=�����Q������i�eG�@r����l�(�	�\�^q(*������^�Ta������p���j���g@&�DB0���,�""l���
p������.���sE��B^�Pn[������uA�W��D��)C
�w�wP�JH���8�BR �
{����pVqH'd�L$��*	��("���
�J�9!��0'T%NNH�D	3���'K0'T%�N��2���Bv�&�HCj@�N�]B'T�+���������0�H*T�~e�Ro�\M����	����"O�!�P�Ja�dw'.������E*y���;ap���y2.\9�4~)�+��X��������z=r��<J-v�Q.�����W�}�%'b�}�mk�R������S���h�u����=FOM�k��f��M�Yt������e��"�<^���j|���.��<j�	a�#J��=+J��g_i�L��4��ZhO�D !P����x!���U���Iw����H4�T���k\*�$��S�XV�'����e����z�'��,G�a*�yc�!��!�RLt���������
z(�S��@62N`�O��G���Fu�����i���0Gh�3��B64Ja��]��_���0WjN�42N�<O��~Mq/��(�\�-�����<�K4���F�OuG%x��NH�DBr��������$T�9Z%��6��r�����Yi�Z�LS�:����M����|�����|��nx[o���5t����n��o)sR�3����7��a�w�{�r�r�9�&��;�Sq+H�r�u�L���"-W�e�.gB<��W/��WV�����!��i�Z�~_������>N;�����hV<�H�4�J%X�xk��A������E���z`r7���E�5O�f�O�s������LOM{�T�B>`+|���a�m���o�LjO����	�m���LI�JE�<-9�z�C�
���S���y�jC����_�dm6,k E��
��_G���~����a����2�Y�:��j��T���z��e�aG���$�w8�l\>�����2�ft��m'�6U�P���0*��C���b&"������n�=���c�/�h{��dS����� =4RN?�]>�<u��Az	�;�����e�2����a��1�	��J9�3v��B��\nVs��kH��*[��TN^' ��B��c�e�R,����[�
�XVH;r��VJ����E�U���rfQ-��������b�M�3��Xk�%	X6\�!�|�l��.�G��4��m �9W+�/F�(<h�t����_�)H�=���UJ�U�����>S��agi�n�����3
=��c-e�$��w�l�S��@��_D�����gn����6z����{R����;5�X*�w���lL��]W��[�t�\r�`�j�����FQK����k��v	v����+����TvM�z�-��E��I�\���R9���������XT���R�8����.��Y'-�j��r�,��!H�"(e!�!B"V���	D���4��������\EdlH�����{c4:^�����g	���"C��U+�E����r�t=���>D`9��!���r�/,A(t�J��F���Dn��<>��pw MJ�g��� $'_%������%h��u�&E%1�'��B�K�A������|a�����9>7��R��ywh�������(x`�������U�X(��������_|��h�7;B�/R%��>C��J�z��Q#���tZ96;~�l�Fi�t�"t��oS�E��F�e �"��a>��m�"C%p'�5�����T�u���Vw�Ur-P���b�>b�r��P'�Z>\�F���)}X9�R?����oJ�����y��H�Db��m-��-Q���j�3�l�k��6����u���
��A[�"b�u�dt)��a��N������`�PC������6�0v���u����Y^���~�3���d�0kd2`J���ye�����j��*
�x�d�4�{#P{V����r0#>�:DGP��g����8���w���v���#F��>n�v����n��0I�Rq���L�C������=��p}���7P��<��]	}�T���p
���K��?��#@����8�����>���W�CU�\�B5)����(�
'���CjI��]�	�E�.u�����~|��H�\��1���{���D�����"a���0p�+�^!�������7Un�
z���b����El&)��,���i�
�;��.o	#����k"�����q��
,a*g�;���w'm���D�J��p�P��������%o��#��*d������*� �%E�&���1r����>lQ�����!P��F�d��N����'�R��T��4a��c�f��{)�A���R��"������E��8���b����\{a�5���Kq�49/��|#�d��h��]�cP6e�;3�d�b���.�R��<��R��:�h��fx#�A����A�����Y�89?�#���AP#a@P��v�������^��I�.�C&��z���}�D��jt4q���y�7Q|8G��r�x�<�o�A	��o�`Y�G= ,���y(���<��_$�0���o�W��T��)`������[7�}�MF��Uker�
b�$S+=��Z0j��y=��Lgq!= ��o;�PC,�{F�F�����#rpg�"�^�����{���#�+R��x�L��+�����K�A�EI��Jw�� )V�zgE��'�..:��D���>�Y����*���[�����\��h���I�h��l	��A���9^�#��x�Y{h��?�5-�7�H\��0�������w��z��,b�B��U ^H}�W�xA�L?�4^H=�W��xA��314^H���|c�����Y�!��4X���:/�h��T$^��W��w�s�������{����?�����d�$���������+
���J�J�x!!Q�� ���P�#U
�S�����|c������i�Q��{�����P��z^bQ=i���T	�7���O����N��l�gV�_J����^E u&�g��0r�ny�tp���.��t�+nN�����f/�	��-����J0��Y�7�.��2��Jo`�H�=g�OB��}Y(A��s�,W��U
m��O�8s�w#{X��=x�B)���"�=�>������m����	���G���q�..e"]_��Z����=q\�]$���E)��I��E��������S$��*?"���������Ud��*�?"�!�:i�t��}$��*�A�S)8�����j��i��w��V�H�GH"3U�$	,�OA�L,����.�U��p�D�y3^[KA\kS7OV��
�>�d(M�/>�%�mX���i�������p��
��#UNi���/�>�4>lb�rRsa3���qV��'��+�����K{hiw�[��0��{�u=�]�����u����t�E=���������\��I��T��#z�3���49;�09�Dm���Q���4��3���4�6�ZA/�U��7��j���:_�^w�����-J�Fvs����t��������ev��\�C���@�������q�R���`�����~��G�=`L?X�`����_��jA�q�V|�s��K��?����(o��;���u��,?_d����L2ta�[bO���-�/t��7�{��W�/��k����8���i\��j���z��d��k���^��"{�\����t����
�+v�F}�f�U�E���:��	&��S.v�J}�fdX������2�9������o�L��F��7a�`�x8�����7��]Y���K���F�������������yw1=��q%��Y`����V�X��y�vH*o�_�dn	M����3�Ps���:�7k�D�I��P�C�H:�hg��s�E���=e'G~>��/]�9�+9��85���s�J����3(�/���?��f���L������Z�.���}�4P8�CV�m�]q����Ly��q�I����c~��������>���q�;�IJC���x�$���p�\_��$��.t@_��s��Xo����67��M��S�9Nt��[��\(�@�k�N��!�t�1��8��C#J�����~!3��k��|��5M�0(���V��W�W�j��(}�8��A����o(�b
G�Z�r�Q��Z+8��hU�H��$���H=`�
_PeF��_�h���<��x��?AxB���y�>h|.�Dx2�k���>R,B����+���Jq����ul�(��v���v�`g���W0��	�v �26B�z094��f�k�1R���
O9GR�r8��7?��*N��b3�"y�������Q�N�_oG�eX�@Pk0S@��b��$W����O5@�ef28�6����Q�`i'���4�E�>,!���A�;TxUXr'�#�#g�Am����[s����AE�����X��aQEg�=���#�;4�#�N�g��0f�vr3jFj�������]s�4V�[m�������6��K�7��R'���#p>&nS������^��������:U�Z�4���(>����@t>M�4/��a>��A�����b���d�QG�[lb���m��k��*ysl�I����ej
e�\@��+b������PE���+������RI^9>��"K(�ko/H��������8�)m.�*�!PGT�>@�#�6����PI��+��B�D���b��J�~�T+�g#���L��!�y��,{
����I�A8�C^d��0��)b�`���r���a�����3�������
�����;��g�Fu��w��m�NT"�mEL���������
���a��������s$�� >t���S�3�p�6H&Q�?,��99��b�@�Tak�oV�BOj�p��)�G�?~�����������9Hn���J��A���J�^���bW�����������;�H{���y��<��L"U��rvf2��$How���D�lqa<�������;�H�~��k�9y�5	����w��F��T\xz�5�A�a���t
o��q�.��*����O�H�Hr�g
�=V-�2�Z����AhZ�4�X�	cMo��#�@W�
�����C�/����Gz����->U/�N�V�Kt
/��uwfR��W�U&��h���D�]�����b����e�E�
�y����3�j&U�?_9�J����m?ug���l��r�ezw������A�U"�a����W�@�4&��g������E�BM���(t�N�Ji���I^����w�
�t�q��p�l�6�N�C{��/�b��7�:����j��N��' \��Co�56)(A,v�:Qn`���m{���
.T�m��y�6)J���c�M�B��l���������d�M��5j����q���rO��x�M��5e���1��T.��9��^��M�3�XnI�,�=\��%h��������wdw�t;3��V����S
�����|go���T��	*��;�����9��S�R:��[b���8S���93��Pr�4zx��>�}���d�g�?�\�u�8U_=>�����cZ�;)�zCg�~/�	<M�mu9J1�G�?N�g`�(=���9���Q���!�|<�S�;��H8]H���M[�[���R������q���s�2k�	r{
W=�" =������q����s}��M�3��H��/�=Sh��A�
?T}����P\�3?�D|�"���� ����SL�����L�����~)4o��T���u������+������w��P:|�y	h����f���#����`X!������?}����������?���\,��r	�f�9(|	�1}��T
���]�x�?�6�r)��oz�#������C�#��2W6������S��H~�Tw=����2w?�a��e���7�2cZ�!N@}XG
�/�PY�3Gqo���3�9��2kZ���@}�G�J�y����)s��&��R)�G���c#�7�v���S�*M�����7�)]��T���J���~�,�����$���a��O�v�����$6�J��[X$���}��{����e��-���V�C�nO�?���'L���nl	e��nJp��!&�
4/T:����h�-"���������UM����Al�P��2�}���U���!�(��A#�JP�v�(W�s��
��^%��/s����q���>������H�y��J�C�Z�����8�2�$�
	P83�;�g�z�U�Y�*���w4���GVVU>HM���(<�w����)����[ 8���l��k�x ���"�^�]��l���.������rhD�sf��#�bH"�>�	���I�0�lVx��@|������$��BD\M2x��d��3�2U���������%X	N:��R�k��O�%,�'Y�@���82mR���(~�1����g
2bn0V�	��;�I���ac3��h�C��fA[���c#��K�.MA��Q`�����V���,F���+�q��pXY]VA��>�r��e>������.�V��$�e[��2[��9J��F�����l!��H��jG
���$�,�������$�!���'I6+�IfN�I���]���$���-�-;�-I�wz���V�M@����d	D�l@�[���0���F}v���Q��"��P�'0H/4K�=��GMJd�
�VXcDz��/&�{�)�[uy��F��� � KO���iL��e���e}�b;e�����9Wl�#AQ���W^O@D��jo�}�� B�}���I��jZ]P���L��Q�]��x+�i{���g�G�ubb�M�U�t�V�����R���Xs�`U5���:���2S��nq����
5}���L���^L����WV�1}@mw'A�JX�!7�u�.@�uD��V�s�QVu���RO3o"���6�"�_4	��y��t���	��U?���N��x��UE���N�`9[��9�m�Bm�����v�u&:����,H��M��:&�no������k�V�6z�&�j�8[��p������~�.@�����`9[q��_��*�|�����`7[g����Y@���u&Lj�����R��l5�a�g��^-g��
�@��U��:[��g�$^�i���h��_�TG����{�Kyed���,yId���F�Ad��.v�}����-�6:��8��@G�7��y]t��o��(�����R�/�
��������8X���Sa%{H$[z���C��p��#�/�(fH����q�������G�~����o�c��n���y2w��}�����+���w�[x���yL;�Qx�v���=_Z�6Ol��z�B;���;`li����%��$eHI�Ps:��l��
��C���\i��zMH�1����9��Z�E����3����Mz�i��`&���������g�����A��pi�|K{���@N�h1O���^`����X"(��c�M4������Q�c����Z�~=��3��X 5v.h���zES�m�5L��c���Q(����b|T���}���+�o��;��d������������u��
��>m�*Y�D#�����y<���Uo�����>�����\Dt8�����=���*�������>��jd���t�i���_C��)�U?~B[��!��pK�Xu���U�������x�54�F�W������?�Zkd�'���T�!0�'�����ZbvQ�����@r��m�S��F�L����jr����4Gg�S~A�(mhm�9��ya��_���C�?A3�:�C�����_"<qF���P��3'���E�?i 0�AZ'��]���!-N������jP���&��gee�1�nl����a������������%� ���Z`�UE�.hb���.����m���p���6�'6�r6"��S`���.��X :q~&'$}j��:h�l�����Ec
!x��s��C(��n��Ol&R�!:Fz��iEM.����vm@�I�D	iz]�����Vi	j���E��QK�j{pM�����2x��,���A0O��;�U������������	?K�/�7^":�UDWEH�#�g�|����hh��[Jd-3�4:��-�j���%-@�z("g|sdh�Y���-����Z�P���>�jWm����D��Z�P��I?���xQL����|��
���� �m�S���;�`����(�g�������d���Mq�b#FK�h�d��������E�J���A��2]?�%���R��[bmoH����g�Nx�6/)���>q��jo������d+�����I*�y��R���D_��
G����r�O����%��%a��m�=�Tv/r��Y2�71jv����9x�3�]���1�9+bj��U�v�j��|�	b�*%+[�9��W��-@Xr�jw/rD�-#��'vLrrj7���@�������^�)ro�&�x��`9_da��1I�^�6/p#,u��$,��8<���Q��X�bX����NX�O���6�@n'^�~X�u��-@���B��S��5�8�,�XX�Ol({CI��X|[�3��`3������u^��������-�,<MT��]�z��}!�uC%��S��}�QPnt�!��)1~��_�Rf��p�k��=�Q$�����������]
*e/�	�x�fGB��u7,��C���� �������Y���~E��S]����S^eGP5U�g�cz�/y��c���Cv)���Q`�b�A�(E�y7�-E��J^l�,���~��\pgY�c
)��|�5��O�����.W`�+}(���������T���zr�p�ieA�o�����%����#��������5��"3(Zk-l��/�B�Y[p?{��]�(P�� �1��lk��d!�=�Vm�^�F+�g��hR�k���$�����g`f�;��nE��%I=3l�b�.���AS���$�-�����]L�4�|�E����=R�|MU;�
����������r�=�X���XPyG���{����1��OS�6	����������]�z���P=oH���h6�L�1;f�x�P�i�<dCit]!
L����Q��%%/&�5�����H��yx��xUve3�k�2�9��f��Y1n����������~�[�1h�����a��R^;p���S7h��j��	,����ob����bB;s
!�5��q���j�����]���s�D�6)��q�^O:�C��P1�����[�3�
/�TA�3Zsf�\�V[��8�(l�c�p���g8�[�<Q������nx�bR��~q���9�k�Y��m� T-����$yl6���V-=V��'���y�_��v�yf+-.U
����/��vm��U��iu��x��y�>(E����s���VS��k�#6n��d����al�XM-`�ys�)�&�W���]z���	�m���pj.t��boc���
��3���S��{i�e[�ar/\""�$�G�Z��<����xd$�\�1�\��k��/�Z"0���GNB�5�*��z�Yo�����C��^10f����Dt��m�bae�����g��|�����J��A��:��G
5z�o���P�!��R��Z�%<S�/k�Ar(�b��H���K��z�=D;R)�����<[�/kv���J�W��-���}��X�#u�z�����v_"<���X@��^�c��2]���k�����K��b�yw�r���n����k/6;��=3����/�B
�e[���@�V��f������m�q�B���'�Z"#v�w����q�ef�/���D`1��U��"���f.2����T���Uv��K�����,�
�t�*6@����
��j�D���6s=�Ar�g�v�Bb�($�~��J��|��vs�d'�� ��+N�$^������PHT�K��v[�t41�#�[�s��-��nA��Z�����k��r�_�M�g}KB���G�z���7f-���#yR��-�p�k$Qs����78��y�{<����T)M-~���`h�x�K���A����?�[M�	���o���Q\}�zt��Y��}�k��@�.�-��f��1e�Xc�x���u��x��1KD�V����k���#�U�8���Ma����x���))�g�l�\���WJ��Df�� ��b[�W���e�8d&."���yM��|���o��
���{x�DJ��M]D��~e�.�VV-��y�~��?�X�^��o_�=Ui������x/d�v^{���ZV������C��=���G�|���"��)D�V�m6�Z#��h	�t��`B�{��������@����$�6/���9vS��=��XGo-��{B_���-w������%���L#�Vp�c2kC�X�
��
����_B��nB�@��V���Y�U��c���:��(��
H<��B�.u�8��f������Q�Y)�r��%�F�I���d���+��5�>6n������n�*�V�U���P��"�{x�����k�~�J	K$��\��:{M�@`*�w\ <����G8]��r����do�*����
�%�u�{�����|_����)cT�U�gu�����?&��/��[(`3��~M�����P��&Xo
DS���R��'��J���������uK�v��?�mA����L���fE���yP��Y~���0��������>����/�[��V�@�>��`�U������t���/I^��<�|F��������h�$A��K�xE�t��/���$I����q�*�,(3�DH�X<AU��H���3T�Ja�%RW	*��J
��,�^�%������7	*�"G��(��2 1T���X .q���)��N����'��w���DVd�
��6���k��4M���`A�L�[	l��:����]��30&�_*�e�a�S�n�TC{VR�����%r$f�5J���|B�"���kK:������"#�+���d.���������VH�p�*F�$�C�:�HG���#[��Z�����^��z/	��j�fLk�A��s
�����N{�kz���3��PP��AI� ��;�d�Z*rGz/����`�vk���#�hkE�&��	����1���H]����1Z�D���
�M���ery�$c����`B���@`���������|�+��{���N�\!��L��0�U����A2#0�����EI�����Z�� 8��4`�N��v����Z����V�7����v�p�vU�j6B����{�=Vl������y�:	(��g����8=�����R6*�duv<	�mf[�s��m?��i��������)���#f_�+�~�b���8�F�%`�il�E��J��]a�X��6����&�Q0_iXB�4���|�����0SoP����mq��6��a����A�6��>\��K0zf�-AT�d���
���"�/��H������q�t8[������|!��?���r�l8�R�Vg��%�r9�z�R�U��l5T��6��2���mW���)\po3_v*�Y�v���p��B�v(>[\T�DJ���w�U����b>�5�v��<��Qu��d�\��&-�=�(���0Jr`���F=�I/.M-����Wg�Hs�� 
(�3�&b���\1� �
��D��i�g]�{<N���2�Y]m���B�a�z��*���]Gn����$��&���m?Y{��`ZgK�������$��d8�������������9g[�����Y^/�S����<v;�������{�y�#^��1�d���`H�����8e�O?�4����1���������yc����<6��+'����	���Gm�S��_z��#P�~��:�=�x����}�&�~�{-}�y-YF�:S�m��s��HB��Y���Al��!o4�����!�����JC��5�D[$�M�jh�-i�a��1e1�����0����	'C��������K�����m#�F)��}Y����m�p���%N\���^'T{kf-��,�JPk���C3��j�F�����)8
���������t��e;tLd�P;4h]+k��t�X�c��EG�v��h����~�.�2{�H&�]	�':$:�	�H���I�_KC�v��	{������r���Td��F4[Z�@G�vj�h��#���h��#
���h�Mz�5?��-V!k��Tl�3�E�]Z��`����}�hiG9��^��P������5'��j�kYd��"�	�,r�� ��DCk���n4J4)��p|����md��IX��{� ��r �*���X+���X�xl�o��j�Z���������x���J���i�����k���E�$D�A

ZL�+:O-1���������-
��X�����j�v44l'��F�l�m[KACE7j!��VyC,"w��������������4������C�31�&i7�P�[���kLJ.����BS���Dl��D���"[�A:�S�n|��FT~�����NQ1R�a�H�� �3!�6c��^[W?����1���F"t�s�H�nY-�6��4Z8�%���s�k^\Sz�f��v"�uGfrt���(2��WO�����������\�E�~$�	��L��O�n�L��G�I!����IY�3EJs�O��g�fb����}��h
H���fr�#�;�5��7���������������/:r����K��d��Q��3�Kkr�F��e=��=���u��(#��z~��Yfj�HP;���]m �yxh.�z}�9:{5���fl;��&2��]�G���K�]o���=.��&|.�,�����P4z]�w'�.�Pq���/�x����\��=������<������Cz������8]�jL��S2������O�t���{l��'��Hy���u���z������W�������P��~p���R��	q[�x�O�LBk���H��H�:���P2��j��d$��%�nT�7-��^��](hX�{���b?3�^,�YP�Z�f'�|�Rl�r0C�`�K����>\G��R��E��I��$��QR��	s�}c��N����M"-�	��5i|D~��G�iox����l�_y���5dV4�����}��?���(���S�.�R���~����?����k�kA)�p�n�H��U{�E���������T�H����YV2���,^5�R��\2+��8`�x?d���:�!�<{���.��]���=}A���������rx������)$�{=��Z|R?���IP9������
�Wu��~��f��D�\������y�>�1q���E
�~R����6,P�I|�'�1�cy�����yf��GY������������s���2���x�S��w%���_�����[^���k����te�g��L���x���[O���FO��=/^�+GE@�O����qP
� �����I��"~{~�_{���	"�%�����q�Z��������1�5���}!��@��y�^0G�x���������u��$!��bc�:���B���9eu��[R;���@l���6{����w��MSe�����C���,������wzY�����WO�K9�."���$�0����&�NyVu�7?x��������CAY�������L{�Wn��<����mA���(���h�!C{��A|k&��-5��	��(I�xL���C!
�d
���9e;�	qe$�g��~
��98e;�{L:1���&�A�r�F��I�V�#|F4IZ��j�����=���PMh�`��NA7�oN�4�c��&l1������'��l�$0�����GgKLW���[��n%k�)���?���[PSN�>;��L�������E����������x���h$H�W��4��V��Yo1�v����3��Z�S�����>�B�k�����Z�SK�nb���W��YM���4pQU����z�V�7D?B�H�q��H�c;��<�����y9�h����2���$s��x�u��6���G�OQ�,'����M�z0Pu�;d
�a
=�*�"D�
+M5F���G���D���&�"�p��+��}3z��Ft��1���%r%-�[�����i-�n`����!���i�[Lu������:7�lC��\v�1'���G��96�A���/'��������c�%�������t�)jf�f���R�����V�����(n�z��H+&F1�)Nc�RT��%+�}���	{<5^h�	"�3�LmFX��Ynz��$@��?�us������F3�������g�w��+��j$T?�[���{JJ�F�v>�N�?�N��Ac�N^$�=`bg������\���nZ��,{��	����H�	YF������Yw��w�n�x��*��%uv������3�}�gqwSe���4��(h���qo|�E� ����$\�����7�����i|Sdu�Ni��[���p=�[[����~^��=��f
�.Y�\l�GNh������OC\8\_z2	}��]:�IE��B3�m; [w��al�/�!?��<���K��F;�CG�����r�]8���{��(��o���}�l;���@�
�W���P���H�`�����l��C��-�i�D�����{�!���|�L��0�ET�w�f����'�k3h�u�&oy�:;k�O����y�	����.0�u�8=������;d�t�e��)_�Z�S��~0������S(�����5{VxV�'�:������+|&�Q[��=�v��-�W.dr���|B��;Mr���%�my��C�bWm&�-AR�
�I��6�FGO� eq�=���9F�d�Yz�&��%�2�XY�hx���z~�U�����C���k�s�lM7p/�������_�R���������CYYt��%o7}p��:]�������j!Ah���th��Y�n�a
�h�nd�F�=��n����
�)'�m���#6==wx]K�������@�o��f8}���s����V�;<i�8B�M#4kG�o�����/�7��N�M���j���n2��/v�q\�4x�
���5x����h���Y?Sx�����xcb��X?4���e�����[6�_���Q�	�
�����2�cQCkz���gAL�d���CFH���v�g�XB��4��K�QfA�n��dv�()U]]�z������ U7=�������:��%��Sm���$����EGR��%4���j\�~&Q]H0�uNF��X
uD7K�����}~;���x��,YdR7�%�'��&�qg����O�)
\Z�!�Y	�:�O�,
[O"�������(NEv*
6���M�O�����ny���%�M@���E
Z���5��%�-A�^�-	�(�����`D�_m�b�X��9R���0���	���x��7��K�/M�������W����`(���"|}������L�t�jX������b����7�B�D���.���pI��j	���'&T�UK�B��)�*��%+�	AQ����)�5j��`�!���?�%�O���Ij����ZJ� �4����g�1qo���/�P�&�bb��VcAUSz11�E-C�S]g�����"%�����5=�T� �&X���"��mU��a��RQ�����=��f�#uum�{!��4+��<V!0%�H�5�]z�����,���������3^H��E8�
�������fRi5����8�����s�����_����"s�q�.���lJ��u���v
d�)��^��N�,x)�����������<��dw)�i�7OW�
{����f�H�@d������v�0d��)O�h�5������G�5W)Ek�!>K����i��9���t`�l�M��Q�X5E��S^7iq$��/� ��>FY%<���M�>�&�t�&�������:?���M?-R8)Rh��Y$b�|y8Y��#PZ����9�����D�.��t�OnS)i:V����8���Q'wl)�$��:�2]�.�<U���pB���x�*��������q;�>A��k���'���,w�<��I�s�(��v�B��)�Nnz�[���K������N�D$�uh���t'!����QK�q��h�)���DC8 ������O�^�M�#R�{�!�mnx�~��rW������$\a�u�<��#�$/�[���j�X��q��$Z�3F�`�e�8m4���"�*M��	�ah&P�����	H�X5�yZ���l%��&��3ucM�3o�c����;O"O��6�44s��S��:�'�8g����ymH.��������b�|��
�:Y���F�ne���4U��?���!����L���&t�������gC�$������GG��������(R��vW=:���{���Gd�M*p�jI�_�Q$���D{�oE��(���k)��
������N��77'g=ij29.��{jR9�o:���r\�u��Y��h�/����s$���=5���45��45��4uy�8Ht���p�A�����U2"�:���!-�i��\g("E��\gh�6�*�P3m�+�u�hS��cHG�\1g��C�k-q]�t�����hSS�u9���|p\�#
m�r�q]�4�������6k��~}�N"t������5Z�����{���<W�z�(~;H��[�����2��I�FBA��]������h��2�=�d��%�:�W�������Y�`�E)�6n�0���J�	���}����^��^��vojx7L5�9����pUfjp��(�k�92��������(\z<fu���t�x�
.�J��������PU�p8��,�lc���SZ?Y��/��C�B�\����/��#8
�j(�����=���Q�*���/��cjvp������)��E�����(����3H}��8���5����{� ��j36�6�1��=��B��Py�����I`��'�k�A<�����QR�������}j�xIk���k���	I���V�=o�-�+��W�dy&9�Jz=0%x��~e�A�D)����F��E�&�l�cy�_��m�P�^=�_�s�.�u�E�-J��`��A�:�0�i��#s�1��a�:�!M�2UGu��.��
=d���i��&���T*M�C�q��+��&���Hz���?
�5�(� �dk��|bu��]V���[��W�����:�Q�(.f#��F>2�A�c�,�v�|	p���/��oCY�vf��5�o�&���YH��G	}�C1���T� �n��6���}����r�����d�U2
F����^@��r����Zv��,d7Ql/DEr&X�nV��vTw�K^'��]?*������H6��jx�6��!��0#"��W*����;k�8�����1��6�s�T����cs���V��v�G�bp��aJ�B�����VU�l3n�8����|fE|�}���"�-�&og2��f`�������(7r
@n4��=���G��+��6�|
=u_s��u�4�N��"H"$R� -2��A�L�'��<f���ZE�����<�!pf��F���8�JM�!rq�����.���>�]4��Ec�]4����������^����
��l����+e��Wq]��y��=[N� �����8����OA�S�;�W����9���s���:��vW����le���w}%7��Y�+].y��@����-���^����H�-�N#i�����>�
��_�h���L_����
vv��E)���@�}�GD/v��E �=�;���_f�;e,EhK�V~�A
b�^zO������D3/,���<9����vk1-���C*��h*�F����m[������t:]��"�v��E��7��Uk(nB�����@�/w�����+�I)�=|[�����(�
%�E���fS�'fql�Z=[qB��<�X����7�d�<�<�-���p��*�)��B�kzLO���I<���b���mea|�qX�
���ID�ae�d��1!�-�8�u
'�e����z�8��/�q��?m����,N,������o5�/[�,�^���S6�S����|����.B5�������r�U�4l���c�?�c��Z���|�]z�py�P����?����:_�S��;���P��n3)nQo�D.�P�;`TW�[mvC�i�'7T���C�-�1d6��
u�T~��z �����.��s�62�D���|(����hR���?�:$���Z�#q�M�
-T�EIlC�����C��n!`:�( �-�KGU�p������\���tdQ�
��1Y<[�J�lt�`���c��
�i����w�����g�c�+
]<)�Si��Y�X�ICO��I#�*�
}�����`�P�@	}1��-9��1�-qnj���F'T �6	I�J ���0h��^��5���j�F�i�/���bK~7��^LX�6�$A�z#��I��,z|^���8*�z|� �aPddc�����Lj|��\����s���F �?�tZ%h���d]���l��:�=:�	&��="�������#P���{��I�[���z"]��$��G��x �Ox$n@� ������^���.g����eVa6���C�9�E���n��fh�O�D��+�iD��ZH9���J{�H�5v}kLA��OU=U���D���q0[�#f����er��&��jD����!2O��s��SA�6,�XX��8��j}��[��������6�����b�G�d�v������^m�z
�5e�/h�{��� }�c
O�-���J�a(�M�PJC�p�~�:������5���}��
T��������u�����9����}n�{Mnj�om��_�=K���A�:�"�
�8�����cG�S!��z�v�R|��H}������<���k���?	�E/��MDt�����}������Ds(��0@��i���!��0�g=:�!��O8����tw��G�f���;�X�I����Q|q@��:x�jb���+����	�I���t�������-��-�&%7�1������
y��[Il���0�iKCG,$�9!�@U�6���I���bP��#X�����k4�i��<���z���L��0Va���!(N��&�>A�b (E�h�RIQP��[����x6��%������R3���@�����k�e;y��3��J�S�@i����F8����w���c5R�`�������Y���I
A��M[R�1���~�Mpo����z�RV���f���F�-�����vL�S^���'����s����P�_��p>���8y�Ed���)�6�y{�ZB~���Ks�7*REm �e�����U���j.�$����R���Y�
�>���X/�_�k�d'X�mP���?��-v%���Rl����}���� F�J��c�Bd��������$��A
�e�n�eTi;��;0!2p'���_{������A��o���6�p�"&���QJ`$�}�P������h)w�6������z�+�y��
.X����v������{U�"���#?���c���ZX�b���	-_�z��aN�Qu��t�"��y�J� k~��u�H�<����=�5�o��a�[���O�e�l�X�7���2�8&O�����V�����}�D�$��Pi�P7`*e��WC����P����3IBB�aY�������`�
�����ca�!�K1y����g,7�^��0Ai���!)[{Z-��\/��n�x�����^n�c�=���Z���
�z8�#�cV���:;����^�] ��n=�T��Kz����	���+
8��Y�r��jY(R�b}�9��Kh����{�"�m5���j
�x��hzXs����{k������c&��2��V[�p�_�x������9��Z��;����`I�wq���C�_�C@��C @qmf�s�.c�=��(;
�Y��<�j���x.���=?��_��M|jn��r�^�������)S��K��%�[|��L������g��Y���6��<Gi��G���Z�5�E�(����Ij_���W��,�{��U�Z'Ba����<����b������<�'b�"p��Z�'����x�i�K����B'N5
'�d���}�|�+T^~E��.��{:J6���rY�+���0|���_
�D$i]3�l��lL��3��������U#��)��?�eR)� �m��a8R���-�u�p�#��~�y�{��TcUG���c�A��$�����Z�������|5��g����G4�|)���3��R����W��)><�n�RiE8s&��3��#	H�-rH^����ES��6��$��6�TO���Ta�O�X�"&e��f���c�a�8��Nj�Rb|�jTM���}��a?�K�v�oN���>�+9@�8�%�s[%��u�B���p�Q��(j��*��.��t�d����&+
���8x�f��DB��%bV\��#:JRD�,����3Z�k(9�
�2�Y��{�����CZ�Ni��������<��_��%��
�����U�$������^�t!�z�nbCP��G�����Nd����4Q���>�r����_]�Z)�T0��G��.��Dz�v�:a�'����F5���"`N�RG�*]p�,��su�Q�"Ib��"�8���X�����D��<����+�Q�����DK�'(��9����9Z�!Ay���Z�
I�PtFKz�������z&{�fh	U�C�O�a�0��6����������r���k�\�1e��r�e�={�U��Jk�}Y�;�a�c�]U! f*��4Jx��X�e�,\)O����}:;�9��&�i���x":�@��$�)��'���?�����-I\��s�,�hq�sZ��C��0�1������A��ky�_�5@Dg�@���W"��d�va��|��?0��D_����� �<">�1-xzFu9��~u�[t�q��K&���p&����l�G��*s�&�����L����l��e1��E|�D~
wQx�oN����W��������R>����� F�s�a�����U�@��gS�{��t�]~��Gz�u����~�'�����$�����q������`��)���k�D�Z`k�)�QT+B��?%aD��(�B��w�{zP�%�	��� ���p
�Bh��ezX�#b<����c���b,�P#����E��B����	�}K�K0
E�.�����6T]�fA�#KW���~P����3F��Td�H��3�q��Q����\{A^�;���3[Q�pf�o�I�P�G8���������Dj<�g��J������b�g���������S�	4�����%��d���L�wam 1:��E'K��I�#	A .1F	�t����4XG���l�>e������?O��`d��Q`@0Q�L\�Ow*]�l���C��K+�~Fl���T��V~8��0��.�������
s���LV:��9�l?�L�#i��Cn��L��GA�Y*"����Bu��6�����8�=�K$^-�j~��"m7��{q������Y�kV���{n�x�gY}��b�h����\<�����B`1���u��va��B;�BY)+���iGS=�)��%��`D���`�	��������A$���t"s�C��J���&�)��)I��������	��PG8D_�[�=d�������6���z�(��o1�D\2��Vl%��.���gy�\��b�v��@��0ki\%�������zK+~�bgL�D#�hV�)���� ���Hki@� �`�b����$����M�*�p���i�7�O����=��Yly1m�	�y2�,��6O���;[�������m.����Gb��#�d�NP}������m�}�~�V�5?Ir�9�o@,J�#+yM�R�Zafg
�J`������R��@�>��N�L��/��d�3���u��&�*����:2�]�!�vGT��-����|�7��
�u�����Dq�v���O��@lB?rM�jZ��b(e�d$��vd��=������DC��=�w�)��V2��<�?b����hq'�������8V�I������!��v����B�����<��f��>P��Sn�W����[��^�����O��_����r'��W���)������������������u^�/�E�F�Tp��=�+H�^��,h����bR�)d��2hs�|���X�y����Q�M����E���w��������{��{-��!

��ZFK;5�$�=���d�����f���CI�����7��	��'F�Er�� �V��@D����$_C�+�b��'H8���k�����dR����d?������	���+��SK��X���(O*���
���d����Y=���7.6�U�P0�x���Q�L���&������[�%����@��L>M�V��?iQ|/����oT_I���-^��5h�h�M5kQb6H��d�]�Q�	��l�F�,�
{a��KD��M<���j��'q7�i �����������Z��� �����4�~�����c����V�
^s�������W>>�b?�����}8�-4��o��MO��_����8����g=q4u�z���p�����ch� ���K�	�8Z�/�)d2�lyn	��Vl�EB��.$I&�����CrI�����>����#�����J����!}j���,���HfF������U���2�!}E�W�KvHO�����{���P�1E��?,$�Pdy��2�{�,�q&(OTHP�J����d��g��\]�r��7�&:���������If��?
w���Z�m6���\���>8h3v�*�|=�c�c�fB_�E<c�5^�x-�/���r��Y��g�1��4b�VS���V�Qw��o���^v+�O��g���,�O��j\K[��>�	��1PRa���:7�>p�~��w��w~���v����i�<V6������M�x�Y�~�/�X�Xu��.>VwV*��+N�"��u�^T�z�*E2p]^��4�eD�E��V��|�\�=���e�Z�����]�i@�"��I���DR5��t���]�s�)[:�g�����7�����������T��t�������-�P\����02����b;[!�eaY;�
S�)����08����VCI�`�y�wd��K=��	j���4��%�x|�	���T������U��)}��%�"��_��e�<��Y�|���
��@c�!zd7_L�xy)`I�
�Sh��X����A4-�/; K&fU^�B&������k��82��wL�����{��~|����p}B���
��Uv��$����G�&-U����N:�8��>�#}-�^�k��
��a�EBe/�Dih
�`�b-E���{F�o6�� �����T��K^n���2�e�D�~S����'`���7>��CJ�{pU�����}C�F? ��
����b>2T� 7�(?��A������}O�-��<��.�u�^����_�t�s����
�I�FSP������X���	8�j������l	��;"("]�$&�u�5���(�m����md���E7��M�`�UUU�F9����������f�x������������m�V9p���u^����  P�etYsLF6z�2��Pk�
�� 2���h{��`�x�Q��� ����f�j��1����Y��������tUV}��BwL��R�=���H�^;�>��U��X�����X�T?:��Y1\�|�};Zt����~���3D�1cW�rI�Z>�����E�o�T��)��@�i�7^����?��������1���q�n��EH���U;��K��h�@k���_^
���W���,[4��	��:=�k�wj���?�����k�F��f������oL!>����E���
��b����$1b��E>����N������� >uq��,Jt5����h���7�L���2�A��;�^��9lS{u��b^<�|��vH��i��J��q?����'K �A������nPH��d�|5�&3u2V.�pb*��a���g���Yw�����B.��^G�����&�K���']����u4�qjKx��[�Y^uco|<@\y��L�#������{�N�^�v����/�u)���xs�[l�?z5�����Ec�Nq���O���������R5e4Wb��a��M�����m
btg�l���3�P1N+�����PC����}>8t��lO�����M�6�h9�&��.y��E�i�%h}b�,ZNG������u�B����#r���#��n�Q�p���r����N,�E
uC`3�|:i7rw	l��^H�������j��Z3$�/��\��Eum�����!1JU�4eIJel��+���G�#wR��J���2�����������J�����!`��t)b�X�:�)������u��isT�;�ol�}/Ni�Z*���+\�Ju��U� r�|r+�{�c���K�����b����~��jcMN�@"�!oj��������A.���HvZ$�(C������ ��A�.eNn�ud}H��z��,on�udC�v�`�L��7��E`����\s�s2lLcN ��t�u2�K5��$�.�m��+�L���������}���;a���E������s�@����?"`��
��B���Mx����
&����nQ���+������Yq��x�[c�����c��C-�������]��8^��[�_<&x�>����:0���!T�+8fw�#�K��]�<�{�����cye���e�oY�6%������	�uO��@��^���
����k�����Y������pX�m�YN�I�����6�nZg���,��_� �����U�r�9�
7��P���KRJ���bX������>��t�j�,�?����'�Zn� �"r�M�� �"bZuN3����D����?��Du��[�,`�����������?V�/��+����p��9K@!Em�E���h�5q�J
O��w�{�J�8�{�Z�b�f����~�a�r��1y$MX����z���s[��vZo�+P[�Y���k(�H�C,0����-�����5%/DYE�l�R~5�������I�zm��B#�z�����E��O���s����6�"�2*�s*zV@�@G��E �.�����i�1e�]�3�s4Oj�{,�1C�j9c"���fN�����H"#��Kd�6�����\IkfJ��Q^�F���|g*���@������O��b6���$g�����_-y�j�f��^Y�>K����
C��O���������M|ApSuz��V��_��]n�lo���p�j~%L5��g�g����_�������_c��54�`t��������y���V��T��&������Q�y@��<^.�c�_���;��yQ5�	/��x���X�u���5OS�����z���"j�2�dT�^������U��c�)������IO��w�C�F�b�h��x[oU�yyN[�"��d~z����t�W��7���^���-�f����76;��Y}�������wq���[�o��X��&����b��ryx_)���&1��Y��\���\V�i�L��u�s�*y���9%���S�����~����VC�q���-oJ�5AG|�d���%�_���C��!������~�SF1������������g������&T�9�
8����VHx��M�;A:���X�;@^���n(���y� >�p���� � ���1����9TG�&�sr\LrOdb���w�����Ed���s"V��2�_dV���d2���Cq�wXM`4��������}�kL`LC]�$���Tb��$Dw)6���42-�vJ82��V���
�����T��l7%���,�+�& l$-�P�S�����-���6t#/���Y� 
[��y=r�����8�
j��6��X�q\D�i��9�9��Mj^��&w1(�[�1d���L��E��~C����lDP���:{S~>�{u���o�8��i�~���x`_S����-b������dR����GU�E�b�Hp�-��9_���5\��\����a�c����T	�u-�,�����8�����t�����
�)k+ ��!��A> ��R�t;Z���w��#�����/�*0�-���2��u-G�"8��A��-p����E5X��r�U�5���pM�����]��1�8��7J�+�x�w���m���K^����
w�)����?>l�!��UT�E�9�2�� 
��(�m���t��/�^z��E�f����7��F��V�	-
�S��j����K�z
���B�j3fz��$8����S�eY��������c�;����[V�������~����Y����g�>��Hp�5��������`�./����Ef�r����I��.��������w�w9�n�r�8�q��)`p����5RP`��&��hu��W�\C�=���B:��m@�*Bj�A������S�1A*���?���>/me�#�+Em�d���[DP�nKp�j��l	�����y:�q-my���<EsJ��C����\>�y����	�G�g��a��Uu�5��t�L�,�-=Bu��"�`�:;��|j���,����}��d������+>#�x�r���f�2��nB2���3������������r����K��~���H��~�j�W�>4���J����g��g���2�����\�9=�C����f�]\^�T�Uf�������jJ��7t�B�P���Qj~�-�����-����%��D�
D�-}������W���p�1�;!��v��cs��cA������+��$��vy�#$���-AR��jIB�;��Y�J�������G�s����l��g�
'�,m���v�+����s�_��;V�����h���p��,ahk\,���>�PL�S��
��P)v*����-}+'C��`Pk��j���44C�fk�- ���^��I��@sG�'?|[F7����}��0Y�w)Q��oo�/ L��m����6���B�X�)��C��(9���x
��y���k N�6Uqr�99���s��7�@��N����>��R~� ���q�'rMQ�:�����`�H�L��c5�y��������S~�5��s�_�����&-��b.�M���hOm�(	�`�<>���e�1C�h����I��je�R�/	@����]���z;�#���Y.[GXj&�G�/��
r��au�MG�>��������x��a ��rV��2xZG��n���k���{|�J�'�7N��m��e�(U�-�A�)�6��9��z�v�g���r{oL~��x:��@q=��m��;���Eq��d�tw���!&�d�Ho	�+��a�N6��tD�^	uL5���h7� �������\��c ~JS��32�-��d�������7��������������?
���A��ktw�=d��sN�Sn#k�S7�v������::H�.��[�/�:����D��P�������0YW��jLPu�C (&����Aq�)�y ���1�>�;pS�����}�^V��Aj�����;$�\�w�/�.�w<:~&pn�����?
$��E�0
Wd
/��L�+2F��'�MZ�n�L}0�S��I/��~����v�(�6#�r�k��6#�a�m�R����z��7�~sbo9���l6��gGK�c_����`d�u�u��s�$Pf`����^�;�*w�uCc�!o4��t��o�t��P�:��.�g	�{�~��=��,�q ����-�l2U&Q�"��o����x*^zf���o-�~)���+�e���Tf���#�a���!)tP�i
YXl|���pS`$���_���_}��W����U�!H��x�kX"j�?��Pf�fL~s(�b;p����%0��+��P:!k���~�d�����W4�8���C��>�`��$������<?�BY����*����k�>�'�zx���'�Je�6�f�X���@��Dz��(�F��b+=k��:�N���
���f��/���}�:3�����.��xG&���8Y[�f�]5���y�_���_�����b��gq/+�\�>��)u�S�������7�,� ����55���_9��X�r���zc���z��nUO��<-��;�{��Yp%��k�U��1�E�;�#�����b��GZC�tI���2��#�n��L�CD�)�����v��e"�C�WC��eS����&M�Y�kD����J�+��+\�dTjE9~���S�)!��������3'�~��L�Q�r�k���"y�a�M�c���i�q^���_ �#^�xK��=s��� ��[�6��64[�\��_�B
��<�M_��F���@��G0l��sGj���#F�}��BU5P���}������c��$�$C��8D3�7!�t^V�����X~���8DSB���1������`��$g��+g�	�y���LK=��
	1AI8`��m|�N��9�U��t�o]w������]��i��nd�~v��9��D����)O�yEq��Y0'p���8��-���f�A��Z�����5�{�l:������0���Q@;�<���v�Dd9E�s�$������H��9�"�9��DW��H
��������2��'+�q���)=�n�i�qQ����p?�������s���//Y�	O�?|�����z�@��_�����6[�tM�)C�Q�Ifv:�|�������R	 �}���is���vG���<��L����H�������Y6�|K�B���n8�9�Dy�L��v���H�_�s��\���m}I�'O�|��6M��������������F��1�(�hKn53@t���@2�\{�yR�e,]�����Js�}�����J����
g�?�^�����9?y��.r�7��>{_������g������O�_~����g����(�
��H��x
&�o�=��{Ou��B���g�/�x�1��%��+)�N[��j/�o7��x:�:��Hoy�^��2/K�O���9���9�Y��T��G������a*��kuKI��#��M�%��}��Y-��n��k[��'G������7w%�����]t�G��C��H����u�d�	�������Hd�k��@T-qMo�V�����AR6�R1<x5aM����t�N"[�$�Sa���zw N�-��������`��\n9N�U1W��}b
��c��������99���&_����_v"R�P�J8�%E�����7P���@=%����J���y��e��\:H<]QY���Z���x	6�
��g�N����+����(�u�����Z�2#v�������>�'��n��u�8C�C��f�=Q��,��a.�~/�a+��F�������a��N�1g�Q��I3����&�!�+�������G��%=cC?�y�_���8
1A�������<O���|/%���+d�����l���7��]�f6~��7 �~}c{�N�<<���:������WE����P���z����SZ� �:��=Q���%[�������X�%^S�HP�D��&�f���q�UE�w��Z*c�����@5sH��t����l��������x4y��/%��������;�P9�
@�rM�Lh���|�.)E���~��S�f�=�%�(���������
(-��*���SqGL���5����W���������RA��f�2q��w��ji�{B7!��O�=,�a��r2���`�
K��s��O��t�A���L^�cw�����_�b���I��(�];���{uc	\h��|o3�|�C��bL��M_{���{M^H��i�M9�����h���;���[�
=���HE�`I����:�x���A~BS�W4cj�nN)cy����c:�?%=$F������G��-�a�F+��P�W����O�7.>�F:��Lk��wYAk����m1�p<&��G:sF�������;Q�/�U9Y�1Y��� *��y�g��eR��N�V�������~A��-����=�+=Rr���N��!!p9(�9
��@��{~DBS�&��/
�l!�xR^djhn�~�����B�>������r����9?����O!QG
�nf���z���xi�0	a�683FX8�l�;��<�*O�>`�/�%J��oJ��T^���������k��_iA�L)��d�E|s�Y>�#tR��O'���-f&h}�l�� U3Nkj��]�h����;[,�W�r��Wp�����1����w�n7����>��>���m4�[���_��G�i�hQX����Q�G�A[z'��[�8�`�%p�/��M��1WG`-�~������l�*��2������
�T�1������k�X�z��?~���RSx���Q����s�W�q�Vsg+������~�:�����X���1m�2���������I�9+x�KOF���82��~&���sI���t����fj����?���5V�m�������=��i���#�}��[������||E{�[b3�_11���d��%�T�������"f��/��������w�z���{�2�>�Uj�,;R�I����|����[����~�i�o'� �e��!������<��>���E�A���1F��~_�M�z�D�OA� ���z������M�%r�x��fS~0,e��6������y_f����9�{�3�fl>�6)815N���������W���O����b(xp���kF�
�Xs���V}V����p����+��Xpm��:E����������}���O?������}�=���"��_~�oL$!��z�P
6hi���
���"lL�}��7_��+������/��!��1=e�
�,�:4����/?��BK%N-��W?���������B���V{��������V�j��������������~���X��TcY�Z��`T�t[}���>��7t/2`�F`��[��
�f���v��;��/��F"+�Tn�Vh3}?��%�y�OP�@���5�J��	pZ�EA�8��	^�iV0/: &!x��]���$�=��1�	�������kf���,�
-��r]H�T�7��EB������F�f���[7yC��w���?���b���8���������e�	U��\��f�������t���)I�k%��4�Q��n�$Y�	00I�Z��O�c����a����REGV_
����=��j�a�b� ��������Iy�>��&�
���T���R�����U��:���w���`y���o�h�.^���t�Ppg�i�@A�z]A%)���)G ��IO������� "
�;V��
J�����;2��32��l�bt��2���L�M��E�T�(%���
1���T#��^�#��-<B��
��b����{�f�����7He��

k35�DT��_|�7�&��&�~�����mG��
�����T�@�&�<gB@���f����rg_�	�����Z��Z-c�u������N��,<xh[��~�4�E�`��B�w��H,}����1b���������/�g��G6W�UV�0�"���Y�LK��V��/	(I�!�s��2�� ���Ow����4q�-��xHw����oi�� ����N�����v�-��:����K��A3� H7�fs		�PF�� 7{v4��I��4[�H2�/����I�m�������
4�1�U���eI�����Z=���1i\3.�����d�VD���U�Z%����&q�Go�A^�<9����z���J+����s+q�J�'k���>���U�����-l4rb���<�fHt:��"i($:�)�p�B����D���p-{5J2��L�oM�M���*]���L.O�&��Ppp	��y���al~�kv�1�/]y�5�ek?�j��u;�hj���X�q��B��rs�f�"�n���t��L�o�v�.w��d�S�}�����;	AE�����Iu����^|_Vo�)3�"lj�������S�����A�%����)Z�[��:�w$q�}��x����?S�5c\��oLjGpbr�%v�,�Wf��N�����nL�1�%�?����tI=����d�U-��V@��|��nGky*�V�V�B?���l�U�.9!Oy}���|�
M�Ko�������f�_�V��`���"����$���XP��'���c��i��kt����6sxt�)Ze�=�N�����Q�{��1�0&81�q�������^�����V��_�����u��`C�����au�����+l_�5�d��IM���`t�" ����4��6C�� ��bq/f"S���@�<Tez:�bc�8aM���K����������S�~��������J�T�8t���!�C^v	���u�N>��6��h��t�l����:���u�j��}�u+�B�&���<�@~�3�`����0F���L{�wpm:�n�lcRi�����������d�C����)���~���1���
�XP(�������;���?wi=���p��]����ka:��F}��/�3g�����I�HG�s���M0�{DPsaGX�������-%��2����K�.i�Y��Ur6�Xq�y~x��~�QX�3����y�g)OH�$��f�������� ;9?���b���niS�1����f���n�fXp�]ftf������|��;��@��)]�k���Ug2&\�����2�t�������B�����y-����c*..�=14|Q���b�������c2�:�;w��7iD�r�
a����&���]�������7/��gl���w~|+�:p��]�"!��v�y�B��?�q�m�^w�sBO�|]�9��]vk�%&�����5mc�7v�;1�Y'��sf4U
����%K]5,�b����0!��-1>�D0�N��:��"'��n�-�Rf?���(�T�J�6)I������k�_�|&0��p���T��������%�R-*�IB����
�����-�'�����u}��UW����
gl�i]�A����~��!�N�:a4������K�5e��.',g��������	"2������<��F������h%�P,O�h���2�Z��r����_������L�{��������/D�Yq�
��6��s���4����X�;o�zG�X����l��n���6B��$��c��x%���D�V�������1"�k��!!1,�-CB:CD��s�-�����,'�����+���C�p[��rY�T)� &��./<P���������A���,�"0c��L��S��:�d����������J��_^)8������	0�%�:?eUI��<�24Q����E�6�.�tO@����U��Z_W���*�k8d���mCAV�����R��Y����?3���t���� >�'����D����	�5G`�k
����?O���8R�Z���V�d�=I�����(t`k����&�>Mt��$zY�4��.C�Y`O�z_GwG���9���H�����tc��)'�c�����~�������5���KO@G^�.��g;��/�%p�������`~���1�0�0V��5A�h�6�*����e����8���s�(5Kb�%"�bLr��[�1[��*o���Q�����2S�������lQ��g���m���F������?'P��(����fU;
c�.�/�&�I���7�}�A`m@kJg~(�3�����X_��>��� ���c%�i���I��r>q�A�S�%���YB�
>��77����l��
���x��5r���ga����y�����, gm�J��NWh�12I��T�J�_�����S�#�y�]��K�����'��lP�}JiV���FY!I0:�m|5�G����=p����=�&��I���u�{�JSZ�e?V�>��o��e�����u��kYy?�>?5O�S^7��JU#~;H6���)�10���Q���G�d���e6	�K��F<��������x��$� �K�u���_u2�S���P�,/���8����y���[VB"X:���-���&{�w��:�R����)��?(����2
��M��7��dcAc���~����+��������w�^N��uM|�!�zJA�������3	m~����(�1�������������S���pt�/�����I�Q�=����d���������������!c�jS�P�}�'[�6z���f�,��4��������TH��v?��d]�W�.�f���f�$&0;
���YtV��1 ���Vj ft#D�6���������I���
���fT��d��N?@��{h�d���>j�0��A��gF��$�f
��3K���i��/�d���`i��^6�f�������6�:=g|��z?����H�(>�u[&�F�nj�x������	E��<;��y�7�s��#�RF����'G
�����W��p6��%X���V�u�py~��6�kz��PjE]���IOC��;*Zp�����E�u�M}��y�)2�5Nhj�/JEGn����]uk�C�)���I���?�>x�Vyzb&Z�,Z�5\��D�y{����d�sh����f�vL@��:�
�]���������&����Z���tp��
��}��X\-�w��~���r�C)B�����kq\Rmn�	�;,]���:�+~����T����`�P�����;���*R=�����&wKoEm��/��P�#�w��Z?[�L�,�j�@>N�?y���MV�q���|���#�]�#�2@G�7(���"-:N�N\�� '�����7_��W"@���#����S7��h������T�~���m�n|C�
�}���HT���R��(l��B�J)��IL�6z9`�H�����}���=>���=�~\�a�>-0�f/1�@ES�cZgoxo����L�p����.�E�&��(�7�~-�oHh���� ��{��-�v����P�db���>�b)h�|}9@�����}9������}9x�$<��}9T��]<1o���������h3;�Mg����85���l�������C��t�T�x6.���	�������-���'����s���VB��Y�����[$��o���OB��"RR��"!�A�����7[��j�&��n4��C^dfP�K`��&H�����zw~�&��M���T�A��Z�x���|/��+�U�pb�,!toj@�����)!�&pk�e���G��a�&�mO">�y�n�I�' ���p�Y:�����H������vY@J�C"��nPYi�[yy~)����5�l&���t�k���V��tMw;+�����E���~�/�H��g����a�/�Ef���h{��`a��ck}hA��������f�n:��Bk�]��0�^���d��U�s��sPl���
O��!k3���n�������*������a%,ls��,�#���fA?�*Vk��n���b�6�-��Vn&?��@V��G7p'g�n?j��/CY�[�	���9[�H�xr_0�����>d��gh]��63�@�kFj�	.���g�f�����%t$����{�f�q#O�
F�U�QuK�����i������mo�L�w��#�E�j�:���w�H�/�I�����r�9	���D"d�:c�fa�h�F��c��M��
n!����$N�X��!�9e(�����0�]P�e��/����	�x1���	���/���e��,��	��v���ww��ia9��$�a�a�o�)�rcR����f7������;B��C13��s��mf�H�\Ap�����!P�F���R7|�
�WB	�����C�5����
�#��C��+�b�8\��Q�����V]��Fy�Gw��wr��|�q�V�����=~���]���z6�	;+n�(��|��vN=�cr�k�PY_3�c1�@�/#v�{�����[�%�)C��0���nd��"�B�f;�]�`�j��,A7B(`�)`�->�%�W�zpi~����{���a���H�Q]I1^���St0���z����U�X��V'q4��Wd	���F�"	�����9��I����"e�K�p���������=v�����N��$?'vW�����<����Yk����:�x<�������<����
���Y�q��Zl	�o,\��&����C�/<�#��a1�[���1�2�rA���#M�E��KVj!M�m[��G7ZI�+�������a9�NH�gOn8�>������ ���������2�wS���F��JvSU�r�+�M1T
��[I�n��hx+
>�xVl��G�mXh{/�?Ea�aB+_q�n/:���Uc�@{���<����������W<��(�K#��fE&^�-�K#g��`��4V(<i��B07�_JCd��Mk��X�D���5%
��J�6��a�V�T����4B�H��id��/��*�`��<��Dj��<��D��D��'�H�����<k�D�hMhp%�w<)������)Z2��J��L�i����
oK�����$wVp���`av�^��~�y
�
wp�UR�?}N���xd�O/����������X��]YA]�*�!sQ���A�$m�����`�Z]F�
GI0�����l�I��({���x��D��HOJqlF�1�8��8�0�������zb 
�������?�L������������{�~L�Oq	���f��56��c��jz0�L%G���dpbLW$����5V5*{��L����[4��������C�#��Qak{E*!Y�{h��i���~UxW��
{m��[�
.!B���i��:�_��n�@]���dT�Q�� �a�'Ne�a&��H�C����!M-��q�����23��HL)��d�f�[C�Yn-mj��#�{�hk�a�4cm?�����j�1����g�����3�i
�h5���ee?�����������b���y�x�L��D�L�F��i*� �F��,�E�n�O\�b}�G������y��R���T"�/B���i4�f&�(��QhrFtD~A��h����|J;�S���h?1�����J���jK�
od���s����N�c���`�GDJ#�n���XI��"����)�����"i�������e��]]m� �F���rm����H_I~L�J%���7	n�4������c�+��p]Y�O �zi��WG	����
��Tu\����
�V�8��T}���t+���`y1�����(�o!��<�{�����`�px���%1t��	(B�Jh�q"��^�	�E�B�O-���>^
2=���l���qe�r��ur2!������v�A/#���i�{`�$K,�u�M�s����m�F��s~��1)��e]+��3Q��4H6f���	��R�
�i�x������*�=Z�&�����D	�Z�"�x�=9m8�-�����3sJl���l��Xqge��1��������N,y;�F�x��{�y���~����0��l�U��n�^j��kP
Q�j����^�P���"U[�!G�w���	�z��<���:#�`�����VVh����6�D�a>�S;��������-q6�����3�N{V���u5/��G���GZ�������w���y&JOU���+��X����IR�o�g&��������C�i�J�����@�Jz���Mq��C'�|�9'P��z�v��������
�{�-y>��c���YQ7�p��o"iM+��� �-�~�WI�V���-K�T4��'Zjt��u�<�D@����ka�:.k�l�s�e�7�V����1K���t*��/EU�N��o���W�������/JUe����'�xLo�����`������������!����g������R��QU���9\���p+1��S%����B���"�c�1���F���Vi������6�zw����z�+��0.�����������a�l�?;�O���7�/Y.������)�n@(��g4E�m
R��i��f�DT�_p�u�}����`�����U���L�X3��)�W�0/~~����O�����-?BX� ����h���T���@����'2<&D��V��CVe3'������O���l
���AB�j�P��p#��'u�����_��7���Vg�����?�����:!��S���W�u�5�R����B��v�dx���<H�'��4���:����I���3��0	
 N�wc.�O��$&Y&������������N��������V�z��`�5��NH�kV�ZK�\�!��
��`�5�R�stO�
�2�Z��j�]�
|}�����"���n�C��_.���iyZ
�xZL�����i�i�3���O����*t&��>���MmN� ��j�# n��C�a�p(�3�`����D�+1s��[�����v&���,
�[�AV�<9B����V��S�6��M`��
V��P�����3��f��[��y7o��z����b��a���Z��QS�sZ���,:v���lk��9Xe�e�oM�a���AS�N~���li����V����&W��7�6�	�;0�N@Xc����������������}9����9������x�y	Gx��m5�;4��n�3�r��d�X<�F&��������f�P�'xNeqc{"�->j��ME����^�Z�] �c�=8
����^�����-��--�����L��6���/q	?�����n��?������(P[]k
�p�Zw�}�E�K�������+�q��
w9��Q���`k�2[�����<���I�f�����4�y����Ler%�����)���u�L�JD��*]���[M���Hi��a������S�4P
P�i��@��g��~�Jz�(o.S���KS�%�@�m��(��^������E��?���e�?�Q�7G��'v������^�L����)&*���|�=����Lk*fI���N3w
�i�������Hsb����f����g�j��PL{���`D�k�,)DA���������kn>j�L u:�'��NwH��q�L��6������9Sm"�F�$�� NiY���+Q��4r����0�9
�����z�0�:^.����.d�h	��N�����!��n����E,qf�vYpf�����=4��^�Y���A<P�Z�������7;n��P�y�8�p)�<�i.R�I����buj\���y���E�'h��f(��F�.����M�=���������{�i��'f@������b��.;s��,}�lou?�-IAV�Y��>5�M����[*uQ����&�;EE����X��&�������UI�4/lhq4japi�X�\~��}��O�="]�|�+���#G�V��G�w��)_��B��70�����B�����H��@�cQ�;	#A;�w�)�-n0��p{tpIs
p��H��w�FWl��=����m���m����(�
Oe$h��i�T��=���AI2���k��j�bf&I�p(��������:���)"��%���w�T������I�d���S k�c\�0V�)4[�q(�����+>8|��P���]a��#����>���i�=��%��v�[k`7����,*M:f�J`a���\���n����9����,a��G>����@0�!b�4��i������1E;Mn[���iM��1�,1���E�PN�g��|�/"�������H��Z� �2�6!u�=����p��Q>�����j8�����g��U��
2������<{c����P�	�j7��uH��|��W�#n;#C��:
1�8��D��+��A6���������
��%KI�{�a��p������a�*k��Wr�N��
�H�� �����)��`2~�����8�|.�X��h�G�����(��bz%8]�o�T��O_w��h�,��t/\
d�{��
�;�.K�s}!�ERE��=u��x�*�2���"#��������p�V&�T:�?�\�O�cw`�j����Ws�k�8����	Ga/���^�
�e��N���+Y*�j�u�K�n��J��I.�O�$r�	q��?q����*��*��|i^��V�r�D����G�	��j�jF`���M&�������P�\�8#����3�u��#�V|U������+�7�!��!���7���|{K(�H ��aLC��%b8� .D�����%io�������5�_������;8�["��������l?hO�=/ ?A��A�	%Wa��6~4q�k����
��J7r�,�.y<�	�����}a��yx�#V�^F��/Y]�����h>2�J<ohs�U�c�mm��B�9~����2&#�-X����|�;����^}�(7>}C<
%��g�Pi�����E���3B��[Q��^"��@�����C^���!=^�CAfozi���r3}
�]V����h�� ���<��KO��:�M��2���a)p����@B��F<��49y�<��>YD_3����h>�y�o�j6�������z�U����+C>���D_G �Tc�� �F�2$]`_��Mx��5=vpk�����iE�{@L�:45�8g��g��5��f��3
��d��J�����_�*���%96~�!�M�2�ICXa�|#��D�C�4��_�����[�q�
!�V�x�k�������1�a_��-� �\��E��P��!PB��aKMi����c�y�g�&���cJ�*C=�I��|x�u{M|��B�p�� ��w��PQ[��[�Y	*���2������j��ID�H�wB{[
��/��cg��"-1cY|�{>��>��
K$(�3(�_��v���p��	*�4�3)B����V���;�W��O-��|�|���	#,xo������(Z�7E��jf%*BF������������j+��j�j0G������w��X��4-+��pd��C_���]R~r�����:�����4O�k]^���}o����������&v�U��!��q����X2*�	:�l\mS2���St;��k6*O�m�Z��Z��9m��z��z��������v�f���oK�S
w�h�z�1 ��s]�������$�x����d�u���p�JD�K�)~s���%� N}��,���c\���^��T�Zn�wf��W��(0@���� p��&�����������:����k���!u%��e2Tk��J�{8��i�_9�|�q�e����>�/C7^�!��29���X�S�����St���W���p�����~�w�(��F��N�`pw�S_w�EzM	�f����|2��O�!����D�!�$����G�[��vxsa���5�Ghc��<f�;@��r����*f�:u1@ ��]������7��qw����5�UR�����#z�^���(=G�7E�Y_Hd�![xM9g���^R���pMY*���L�2h�V[Q�oT|��O�?���ZV��h��b��G���i�kN�t"L����A	���D-C�����]]
n=g�mf#�k�,���P��%��!7
���h^�v���E�� ,)�r_u\PS�~$��� Z�
����,����������$�_!��8EM?a���'�
�tj~��<Y@�VP��������h���b�S�������z�*�O����X���Vg�+�32���*�1/��i�����va2�9
�\��&���o��^yG�@�oY���_��A7~�A��f7�Pvw#v�pA�A{?*$��|E��z�'�5��,�{}��	q�Of��V
���@H����z���J�NSg��������WU������\�OVm�*��c�.B%��6/��F�Oz�w����=��&���������*e�������PA�.������'�0�������R�	����ij�?}�;��������?p1��������{J=���$���K��/5�{�m
WTz���Q�v��3�����KJ?%���������T��KZLi��	drb�Y���=�j(
��c�t;oN�������e������|�@:�a�qY���� �������!���`��3T�i�X/9�Y@���S(�����&`��~�����)p#�R��r���Q���L�'8Tl���PV1��%��]��(
6�l�X�{�s��	?H��\T�5���+6.��
`x��h�
���qO���Yr$ve�1���A���OK�BZ�^0$=��1���$������#3Ur���o��$j���g�����*���5�0J���*���]p6����Jj5H����~��Y���� ������\c�Q3b�7\��P�$R��o��$j���l���}�A�|hK��P@�n!oW8S����?~��g��N-#��0��������"��2��X��9|O�R���H��Ql��b+B���E��/�ii�\�N�����r��nV\�^���O���y�XT���g��`ak!���Z�������uI,v)�A���kbT,A��?d ��jl��>�0��hK��=��4{���� �Y��r�����qs����n4��o�"���a�	����\
-�j$�Z�*b/<�N���R�I��1�KD���bH�^����GrY�����e�2+��^����p3�Z�,s���03L����gG����X�rV�����R����j6�7V�=��S�'��m����%���F(2����y07���H�*�gbK�g���r���_+S�2}MJ`l���'���IyMsz�E@%
���y�����MX��GK��1Y�������
�vJVw��E>J������.P����=��6�c',����"fl�e���i�R�n4%���{�*y�4k�s���j�"�u7���!��&��x�o�c�G��=�����[�����U�����r6���j	+�C"��k��B����!�i���TCz�PL��B>����K��]ZI��SP�D�����p���
'�J���@�Kv�>5�D�3�h�|����0X�UN���y��Ob��|%�8�
{t2� o�
�<�A{�BC���7<�VEAchl�����D���;��}��T �wt��a/b�xk����agU�$��)�s����g�B��!��F�����ylpv7�Y��M�Rpx$�:�����r�C���B!EI�J7c��&{@.��8��w*dA����>���:�/b�d����3 	�$!r�n=B!u-a@����o6H���fL����u("�#��a���Q�n����:�U)��I�>�`���<q2������2.�U�O��boOE�{j�IUP�(���RA�q[A�$+��XhJ0�`��4�0�_$	uL=�3����#�5�v�����i�L�����p(N�����k�g��r(W?;����r���L�
U�w��J��C������8/�����/�Ij<��&U�S���c�C����x��s��n=��V���x
�C��%�W�H�����QG&:��?
��Q���RV@���tnf�V���C�K�_e�5�.��*��M�G��bC���~%8w�~3j'�b��M��D�S��B���tr��Z�<��F�4L�d\
��S���'���)��������%f�Y���vhN����1����xU�w+�*K�[W`�?8KcttS�~������Lb�^�����DP@���
�k
�i1��������1��:�����{�T���;��q���}����W�?y�= �5K1���:�	��OOe��f���`?��^U{]�(��-�
�~`�~�+45�KL������\&g88�}��D��L:*��k���o�O�&��Fq�z|N��q���kR�G�J���r�>%.=
�ktH�P��Vw�t����#8:cc�Z�U
&����t�^��=(a5�JX���X���I��a�����`E��%������IOY�aK�m=7A\vPGr6��	L���m��i]��Q����rB�����%�%�i�_�����5��i~������.�:��7`�[����h���C�Y���w�fK�1E��'�����r����Q�G�$!)}�Z���=��1��C���x`�;+)�\��cL�����XcD ����+XO�C������kz%���q����O^���8����h�'!F���X�An������;Y���~j������i��|�,%�#PC��P������m[z[+�A��!v��o�N�=���}Xi�z`��8����\��-��\C�T����Y���M�����o1��w�y);�~��UY��A���]���p�>�D��}d�b�����q��33��b�5z���>!���X���7���1��w��W��%|m1n���QS���}���noe~� �n��`��`y�'��vp������J%_�|�6��3}�6�����)��.`����b;��l�6C�/`����N$����	�',`��5t�v��X!�
�����}�V�I�b7,`'���n_����I������c
%S�k�Y��������k�i�f;��S�k��u�v9��7��r�i��/`�3/]���*�]��-�[��u
�'-]-����u
�'-]-���t�4yMY�Z������^�Z���t��}��K�X����%k^
8Xy�~�>�HT�S��~��'qp�)��
T2��Im8��rI!�����Zps//jb2��2�q�����q���p���A@��a��V��m� �B7�	h$��}�~�Cn(�z�d
��d�Oqy"�>��#>�%i9"��d�]�;a�TA.����������V�hT��C���v'l�*F�
�H���;aGWGn�3%�I��
��#���f��L[a�Z�$ru3��[6�V,�����[a���ic���P�����V��(u�[a��Pja����fX$ucE��
��N"����1������H�4f����G8���1[�� y��!�`HWB����d�����^�����'�b���h'N?�p6!;�����T8s����D���p�H������8���n�X\Z�������-���LY�*�Sjt��f��I6��N�������n���Z*�������s'����bk��i��/q�h�6i��������${�5��)��i�1{�u�N���%�����RO�G�z�N	�{���R���i�����vZ���
����E���v��E��h��!	�-Ut;;����CQ_�P�.���I�e4�61��$��*������6����
�'4�YzC����������O�g���������L^�:��NG���R�:m�����J�����69)!��|����fO=��$��~����_74+��~���6��YIqJ����)f�#E��JB�O&����8e��s'?'OO�1M�����7�b��������?7���SZ{Pk%.��|D�:%��J��|���G��-N�
<������go��Y�cr�Gp���$Z�[>;} �;�5�iWI	���2L�v��+\�����g�O%V����2��5��<�j����xXA��v�i��b�j�n�<�������MLF���`;��gZ���:=�\�G�����
�~b�[��
���z����L)Y}�,����y�NM;�~��	h�����m���m�tm�uK�v�m{O�:�F-:��3u�D�[]��I����z2�C��x]�$���s������V{�;J���[��R��r��o�O9e7��w��J~+\~BE+�Y��T��v��E�m(�-���������2�-���F����Q��oP!�t/��/HU��x���dz���,]��6u��������!��m����MW�d�C>XC�M`�fM�%!�y�)�)Q�������m�`�g
(�+�����F�����f��l�s��/4�w�b(�c�mc�mo��;a�	��U#��@�����4�;��Q,DZ����s�F�
�OEW��E*������-t0��;�Z���2���N\]7�&�J�#�����"�k���b1^De���fE�u�&�gY��Q��g�/\���P��;"o������q��e�n���������8�v�9��t�t��|]/C^w"|����++L��*���lj�@@~,��
�,�����G�[�j�T���j�Uu�`����.�pr�#
��q�o<]�X,�*z&$�l\nA��B��K����svZw[�8�^�o�H��"�p+��4K`'�T5�!&�sx��[Ve����P���U�~u-��r�����b���d%�i�2C�#��D��f�ikK���w��}��(=$�'���i$�-$��FH�"\D�,��b���@�"���R!�(����eO��H�v8S�}����v6�&7��o�iDa�J�$$M��	)b��qbB�B������4��P��S��h��4
C�( �A������$����
n��&�*6��0g
�OQ����f����mkr
Da�J�$$M��Y;R�������7�$�}�?9�4��P��S��hki�t=P@��#e7��G�B*
�fr��%���!h>Ce�����������%��Ie-�XpZ���3�
xJ���XPK&���c;S�@C��BA-F	.�r���<H v�#!K���0J�W��40j8�����0|����~6��5��_��4T,��$5�6I`j����Mn�L3�j�P���-���i��j�T��"�����=X`��#�6��$�1���f���d��2I�,������F���V�x<�=I��Q��|1:m��I�`��#��F"f�����2X	L�U��&0�����Y����&;<��T<fh����Z��wP�1F#���;��h�;J]a�M�/��g��5�����|�w�9�7��h�AW(�h�)(-�`4�U8J�E�C����ER4v�TQ�2�P��;B	*����JO��b7H0l�U$��Q
���7!�7������I��&���Z���)���5��a
���b9'=�ruv1��o��]�8Y�0��U�D.�xbK�`30��qD���7pOV'��2dzv���i^���9�n�gx�AKmO�|��.2�3�y
�"�����-��H;�77�����&���VF�vF�MzFK�D���yo9[����F-��q�Nv6��8�8��s��V'�W&?��29��n�G���4�����V��u����t���~��*��t�#��������.�8�Ni��c!�{���+�&]�%Gv@�3��H�3�p�Im;���LT�af!��{�_�u�1e!��5������;{9��\#8�W���{���W�������qJC>_����xEI�@�����HZRn�L�9K;B���
���b�UI�kF?!2+���=}��j����_>p��B����B`-bG��D�{�����M�����c�p� )Ca�B�S�c����^7��� Jir�F�w�_c2Q%����7��UJ�=Ok	.Uk2+��
nx�N���Szhmz����K���58�Dkt���T��s����T�����Q
�orG����\��At��'�����������$i^%~N���fi�F,�
��f���p�����C��V��se�D��k3a�}�'����)^�#&��JS��g���<�Z�]�e�����Q�uA�j��},��;\��	�	#��n1���
@�{���#\�W\��U}&���Y�tz���r�,�����ta�X�d�d��Z��J\H�o�6N;t�6�������W��p�3?3��=����C*�9#���B��75�[���
�u[����>�E[�YM��L�>�E���J����������&&4��XA���G�x�K�p'�z>'e��7�(~m��Nz����W[���l�$y&�_�N^&����c����H�-�G�=���_�d�9�1\���7vR����tY�R/����+3�zQv����d�
�z�X����a��U�Ro%�Nm�B�T�,\�������>���C��A'�� >J`0��%�5�, ��g}N���0O�
�����O������6�6 ��<F�R����>C^�Z�dg��v;=��^��C|�`eHk�	�4krM�#z6{����S�_O]>G�u���F_O����h����K�F��L{`2������N���/�u=K�}M�Kq���*	o���w��������&8�2=�,K?h)"W�>q5�������wP~�������Y�Uur���5!��>�o��8����������nC�U���AE�')#OG�����Z��3�D�<��$�THK�@l����\}��n�D*,���V�$������(#�{��������Z�����m��N�i{���N~������y&��Q���x�m�s���[�v}���}�y�����7�H�jZ��w�2C��
"�����"������Z��������l�l�*>[?�i�n���~�P}�^B��?tl$�*�@��nTm'���*�&z>������<	Um������|z��=���]������T�[�^!�������L2�d*��$s����W��	��~�s�-\����o���'���`�����������#.��_!���
���������:S��xG�Y����L5�vvt��f��������4����x���p]�dL�����N*sw��Yf�,�N/sw��c��L;��������<�p��_zU���-�c�>']�C>���
��,��l7��������a����
��> G�����$�
q��q����KW���;k���nI�xr�����~C�;��i��^+�f��
�zm��~�
JR)���j�u�'�n�9.�^��9��99�PS��7�7���}XQ���k�>�|�X���G/m��
�F�U�E`a���'��U����A�n��=�{�%/^r�,vK:�����F;� ��Pg�<�
[3x�P&Z�����P��<����*u]��`����c�~c������L���
��}��f��C�B�!�:�	�4�#hB5~�3a8#�:���6�����<�
�������:���E��G4+�j1�ka�V���~��GZw�G�s\Z���M����]�G��4�u��.��~���cGN����?E�Dn��������c�_���f�6{��~����6������U���*k��~���i��pGD��<A��c�h��������Ub_����AV�� �z���"��5���j[�����uV�w�6�a�}
!����X�������T���a����nh��%-�vmL�1VTSC�y����K*�5��8�a�MC�y*�G9taIz�p�4��i*v����"d�G�d@6d(*��F3��T�f����t��Q��$R7�G�zA��l���S����nUA{DZ7���K�����N���l���
os�_M���V������'�  ���n*��Q����Vov�����4L�*�S`���&c��S�JY?�kz��9V��v��V?��>��������3T�eh�H�qM;�	����N?�A�:�������tcI���ji��IM�NeE�~X7YQ�"6(�CJbV��-1�M��/+z�]���4��mw5E�5E����fGv�fm�1�A��f��d]YR�i\���6�5q[s�9�}��]�m]?�!�������O��C�Y�P?����y
������f���"{��7����m�=6�
+�,�����"�.m�
=4��9��1S��Y��
	p���&4�mJzW�q���w�L)o�}+�{l�`�\�c|:�JB���!V�vaCC��f
Io�����������n9
}!���/���wc�?��K���D6�mB&�#���p���������uy���f��3,���f8���>h�#u�sg2����hvAN$�R`��hLJ���;���62�>�l��;J��K��9M^��~����D-���P~�������7�����*�����I����,Q��; ��&��pJLI?�<t��BZ��+��h�K��dj�E�!�|qA/��K�
��i�e�W���<�c�o�c���TuAA��V|>V^�|7E�pJ��	��45�=���>>���;�3�CRKr��������?9	�v�:T�Z��J���d����N�}��:���^�N�
N�}���X��2�Bp"^�����=�hF]8�L���e	>B�iTs���V^���o���wpY��C�b0������8?�=�v�eq�������,��,|�Z��k�,�W����b���K�����G}�PCo�,�O��:)i��j�T���1����������^VEif%{�+�o��!|�����i]������i�o�aMA0���nA�[`3�M��o�?�i��e���
b����L�SvOT�(<OE��j,o+w�B O��(3���>F����;U5��P�y�1���dN��Wc�
wt�����pb�I�9z�i��>��

L4����-?^�"/����i�����p������y�U�����)�r��_�GO|��o�.D�7��l[����
8!;o�@t;��G�G���H�o�"��3
�_��e1�p���2���X�RT�����1>{���w�������4�	���Jb)����?��-*��
�d�������h\-��]����S-�S��CG-���n���"�Ep'M��e���EI�����i����c��� ��~����b����������/�\�5>|�����,%E*b���~'����0l����e���������~su>�%��i89�M�������L��y�~�F���=��ux^�tZm#���8o��J�0!u��5�v���
 w{�D��x�*<"�W�S
H�����}�V���D���Q�����L8����o��%���J�i�����e;y�7a6r����]o��~��5P������~��?����?_��Ypz�"��V!�~ >n��u����~H�T�	Q��8���6t�hr9�{G���L��up2���/i����*����=JIu%���
���$]�rl����w�Z�7#��-��JK��������^�b3�)�W�:8��!=?P��������F�S�;��������i~�F�� �:����)&e���JzHYKzn��;�~�Fs��S���|R����-�r��R�K�p�5�������	�_an�z���\���z3�#[�F�6{C�G�H�f$8W\e[����f)��jRN��_�,E!GX���wDV��PH���k�"���a�m��C��:����J���R��(��F���������H�~�.�	c��J����2�P��J�;^���W�`������'�cB\�\|M��0�r#��8��B��&�]d	���T���~����+�]wE���=d?���t�3��,���X)��xgyn��mik�<��*��"� H^��`;��?��2a�e
Eq��j,�g�������P�bR��2�����}'�X=���m5>��'���Z��"?c������=���F��N�t����o���f�r��y4���Y�[�z~�����
3�&�����O����t &�;�,`.6�W���ppZ�(*�eb�c���6PY�]v��Q�]!3�[����f�������]�N�_�[�**M��c����sVX�|#H�����*���8*���u��+����6h������1v��E����H6X-�{��0L"|���x
��&��NC�������X�����vD:��R'�`�u����S��p�
��H�Q/7
'\�-:�]y�X:������
��?^CvB�Hz\���lB��h5��v�Im'�&7vO7QFcL�ZTkGT�K��C���
T�.����h�Wh����y	���8Td]^'�f��n�.4�qy���j��%��q�W��I6�8�V���������;!���2��������i�r��;��5���+/_���AT�e�G���,����;U���u|:E4 c7
Jn�W��C��B��������^���j�0�{V��{d��_���-�n"��t�`	'b��9��X����+�[������sV��y�+���x��9��������`�e��DB����~/J|Yqr)dI	�f�I�p���+hu�W����7�����b�������
)��;���>�Q�}��Qm���!�^Wr������l	��������Z�-.7�7�*�����3�
��_e�AQg�w���ExY�p�"t2$Mc�����u�S��@�t-y���-:�9�)ar����K�����E�2v=������:�����>�<����Y���!��g=-r�^�������|7�:j����g)��N���?�`�g@�
�����T�g�2�%o�M�p%�o��{<����^�(������u*4�c�n��":L������{�64��D�>��x��t�}l����������r��9��SL���� 4
��!c�I�d^pP�V���f
�M�����M���.�.�u<�<4p�(��L���TM:�g��[T7+7a���AG�5�0������FQ���q
���(R
V ��!�$��a@�Z�P���Ig��s�{��\$
���0B�q�Qj���
��P\5�s�����k|cP��_M�H����"b���U�5��i=^�����P�R����-�{�U�'19IU���sR��c/����-,��=�1r��v��6HKm����D=�KO���9!��9����,���0���X������B�������L�����+��j�����N��6T��������D[��6Tq:����Z(�#�{�zvF�^��-t��|uW8#%��+�C=v����,�,���vd��bl�Z�XG�b����&�a��6�0}��)J�UW9�g�s�/r@�E�{AZ�m�Ew5t9�S�4;jltV�j��G�<i��r�V��9�u�"��"-��]��)�/����5�����Vx����lx�|��U�r��i���������e$���p��H/+���v?�j��~�/��|�����7��7�<�����>���xS_�V��N����Y��V����f�"�B�MK���R�\ ���B��Q���Bf�A�����#�t'��z�T��o�qi��$Y�nb��i��A���#�	Q����G���)w,�)��������k��	[��%4��k%�����F.rry���u �����"�H��@�4����S����h;m�� �}�����3���i�|.�����Z^*X�����s}3�r��Y���k����l���k'b=b��0�3��(\k���6�c<���_�Q
�5hE�+��jb�m��#��S�hk�c�����Z�T��I�Q�3�WB��O���4Q�t-��i?�^�~���5����������8j{��������� ����
eN��n���������^a����=�N-lj�q��H�d��;}���i|J���j��RJt��	�Y^;b����\o�l�4[�8��N6b�Q^.!
�a���Q3>��nqZ��u_��o�*D/�VE�B���YLh��&S9���������?bb��x95�E]�yz�a���W���x�p�����9��E4���}�KA���e���Yl�[a>���E]���gi���b\�j9E����AV�,3C�W<��p�p�?
��eE��f��:Z��{�J��!�:O0�=�yQ�d�r�.1#0�hc��0B20�=C�c�k��J�K�
F���i���(�iac��f�c��|���Q��.���%=#X@��GB��	��	q�l�+3:QZqD���1�_���
=Y�5��:7�a���c�w��iX��+)���6='(a��
-1@����I���~A4������Y��!baC;{%(��r��$0��*8���}9�d��1����hx\�'�.�F�Q#a�����ic����1�B�C��29������W��[q�|c� 9y�}��y~�G�
$H���3=0�����8��n���@�@iW%^9��V���^_(h;NBdq����
�� �,����r�H�^���V��A9��AwFy��g���nN����Ve��o ���)��?�.T��"�����
i-��As�M�'m�v=U���d���r���s5��?��<D���{��|.��,�%U�9��g���Lq)�}���������@)V�m	;-A��o�/�a*����:������w`a0�j�+D��K\]����f��Y�|��aYJ���5q�	���C;e*+�������Q�Z�����pX������!=��3����<U�>������k�Z��m��6��pn�6��s���O�������V�����l���2V��@�Vc��\)h������bN��mc0aM/6F�a�2�A�f�R���$�_!=���}�o�5�(�8�&T6s�4�����P��������'t�t��v����H������FHp��5U�����%�y��r�L��j)�h1m�Z\�-Zn]�>�q��qZ���4�;�������P����M��[�5om����n�����[R�2�/����{�	�1O��
!?M����=�[����y���F�1��6��������u,p~�>��o���3�4'��'���U����L�C�H>}G�z:R)�^PCgt����	��2���wH��$�Y<�����3��dr_�g�{EyJhi������������jD�vt(��	9���0�~�~mb0: WB�>���7&�}&8��L��R�7����/����<^���?=��+�����c]�
�wk�/�5����������v��A�}�E"�X�|kX;�]X���Vz��+zsY)��Qk�hAl���+t���P"L
K{���~�t6
	c�'��~�tv�W�]��j����:�h��R���U���k5�[�X��Z���Z��4��K�U��������I��k�O]�6k(�W���`��Lv`+�,yM��kw ��
*Q�����-��5�[�������5���������@�bI�xD/Iz�����������4�c������"��
y�H� ��c`�sG��!F�7�<�@;^n*K{Yb�G�xs��@���h���}i��0]�5:�!	0$j!��%�@"�8I��z����pt�=.Q����y�������#�5�`��+z�j���N^��E--��Ek,����o2��v�~D[�v����.�������H�����8�g��`YtH����q2�~Q!X����"E�������.1���d#Q����,F�����Z����K�l����"��5���_n�[�(,�n+�&M�u3��>TG6X�J�������8���D�����2Z�j0CL+���W��}J&�.d�p�}���R���b��`���I����(@��_*�x	�T���XON%����)_��[�����xX ����U~C���T�g��'��J���iuD7�Z\�	t7
w8��+vHp���<���Ze��y��mT�C2$���2��&��e���:�;���u�dNzJ_�zmUG�z�3������Q�����o8^������;S��
�yX��O�np��v�-N�N,-�>��7�pT�?9�KD3��#�,�s�~�����r��VYZ!V���G"�����(+��@'��/,-1V���j��
�Fm��F��!k�*r�nT\�F���F�
��U�Z����4:MP��3��M��Z�V�[q��5��I�������,o��*ha��f����v)�J	�m��cX�����m���8�Ud�F���s�(D3V
U4�eZ�K�FW�:�:U�K��k�\����;~N�7]r�r����C��"��}���r)^<2`3(��t��,���@��4��>P�	L����2F�Z�R��/�u!� V�����|j���$�(�����Y�����������m��L���C�zL�y	Y��{�)��G���+�]�e�h���g�X=�Z��kI{����-�P������6����hB\��|��rq��BqQH�
g�h�o�S8}Nk����\��Q!�'o}������so-9����_�t,2xu
:�8������-&�����1<��z����������D�����s,22'�H�ai�� n�.�tK8nO���$���������t��i����"'�^�
7`)y��\�`�g���q�c{�f���vBR9(���x�p��>�3�j��Pe7�����6���|(0���xZ(8 �Y�G:���������OJE	������������@���x��DhU��/ ����6M����]����5�&C�LE���S�`Ha@!!vA����,���6�)�9#����&09��C�e�F;�Ld|��7x�o}Y�Xz��.�$��g�){�zi��m;I�X�Nb5�����%��}L�T����A����&1}���@�DV����4������r�VV'��T�P�,����B��rZ���c��f�,��u��a��%�	G�u�\��������8<f���u�f����4w�k�p�6�s��
/�Gw�;�y'����hTI�	�R�Ok��{��#�;�"��b�����$Js�@���KWj�t
�i�m5^N�[^�o���Z
����i
����V7�
4�T�"����)][����T���W�h][���l~jEg8OJ�"�M o"��Q����=v�&��h~�(����-_��#�U�*Q"7s"��0���z~��R0M����r
�>Y�a���p�����<���5s-�Tx��l��[w��'���
���C���Pv��S�mp�.�9U�U�Q��*�����ac�����@�-�a�q������\	[�N����t�U]�cD��YFp+i���}s�iZ�%��(N/�s�V�d'���@U�v:���nY���)4�#�,;`FJ�A�UhS����
�� ��X8@�	5V�� 6&��5m
"�Q��l4j
$bU�C����O�m����=V����~<�� �@�8^�V%�i���.��UyB����k�W��!Zq����3d�����. �����N�TO�w!��Q��H��Jq�`7#|�}�B;x4eQ���	l:�%�� �{;��2��.>K�u,���|/�l ���y�hK�4�]0�=EP�c�L��'cnV�/<��.�g�:sM�
}#���du�)�L	$��M}N���4P=B/;}�,�K�	`��vo��p|[�����HB��p^[��Zb<i���z���������sGg ������MZ�4^\�WhH���WrM��ZhHG��v���AwHz�������w���k�T5���<W�R��wE$L=+�����R����05���|E�T^��*��R�y+�?�?X�w�&V`kQe\g��E5��8"t����p-o8(�u��������
�F5�.D?U[vK��Tu1Y&�1O����}���9?X�?<��L��9&����#�T6?(*t"d��G�d�J�!/�q5��)J�(����S��iu�-�g�L/�r�q�M;�*��~��wr�����9�Y8����Z`X������M��1�����(�����h�
�B���M�������5E����U�Q��p�{~�����2���~���u������������ZX����m0[�sf/~.�H�������6�FL��x���}#��a�
�88�����������Y+��cZ�o���XN�X	����.��j+mk��j��"�wckq���%B�f5t�{y�#�Q��U�������.��0�+��rE���$���&:��z`+"�_�����=��E�4M��%��Er/]�+�$��>�rZ�6'������C��f�G��f�.
�Y'V�[q3!�B�t`_���#��i�l�j��K���ZJ���Y���r�
p�h�x>�at�4�
���,�����	��L����V������2�v�����N����|������T�����0�ud���`��y-�@�s�K/�d����l��l����)�5����(&�f�����T����;��;
k��S%��������<j`4(Xb~��,r5���n4�~��9�,���5�o����+��Q������(�,����fh�Q���4�u�T������z��V�!�������K�������[I7�zSd4��6;��_^A9�v��))�M������W��'��7�5%oDU��KQ+N����
9e����~����n���A��T��D�CIz2T:�z�9}��������p�$f���N��y��0��,U0+'^9s�4J�����3�����dC-������'��N�9~�zMs�Pj��_����4�\�]	����x)���]�&\����s�<�����+0�� 2��
<[���4e����JY2D��2��)b��������$��}#+�kJxW���%l�
�,���m�����c7!V��L����2,������%����w�Xc"Lz4:)�%��6�AAm���9*�ms��ij���8���EqNkS�{�F�5��"�'v���2~�op���V�n�G'i(i�P��=%-�z�Z����eT[Y�St����l�y7P�m0Ok����!��?OTm�`�R���j�� \AyU�R��AE/~��,��)�^�/�����h��1�/:�Zo,)V���fCW�B���;%O�=����0%���]
qF���)�E�����������]�=�X�S3�edu�%���e�������\c�����8iZv�v�=�!�g�Y{uV��{f7W�����*N�j������Uq/���&_%5
�������,>K��2��5=�D�����%����#�;����8�n�5
��~)����.�/������[r�^��T�t�)V(�@��5�V`_�8��I%��<��>4��M?�4���sK�62��=��_�����/$�e��g��������
m# }=��^�8OD�I�H����%~*���,#:�J� V�������"z��Z��R���++��0��|���~���Yp���,����u�%*�Z&���X��K���1�*�E����b��I��Dt��m���8J�H|��@�^�OO�F��np�e�����������#���<YV�h����Z��	��xV?!��A�n�P��5�1=�	����#-�Z�w�]�|>��Ep
�Y��	_��r�&r��
cN5"��}�w�s/i�29���C����I���w#c"�0����6�r�:�.]SQ�7C�����go��4C��U���@\S�
%�������������		��B���'zT:��?<`B
��.{A�O���M��>0
{SF ����b^�X��F�=�����j��+%XS�����^�����b!��8U�.���"
K��>2Y�.�,p���'W�]�X���
��,���T����� F��Dt��P���"M����4����sRf4b0��i�=|LO	Y���.	7{M�S`o�����?����BO��Vj���I�}������hQMS�p�4|H�6I��j�
���r�[��U��i�
�P=pR��8T���}u���F��Klcu��,��r_.)���t�C�����g2���1)�I�]�
������)*e�(��1qM�����kW�3c��n����M�������i�6��4Mb6��Z��I�>����4����C7}�d��Z%�N\�*��n����hN\���P�^g+Q��Yl:��*y"��
=�U��L��^���k]^����}/�c!	�Z���#��e@rm/�e��1X�g���Z��0���LU���7�eP��D6G�n�7����g8����nW�w��"O��A�(����<�L�C���/����7YTB�0Nh'����0��h����36h�A+4���u�
a�>������>=%e�Y>���I���R���5�
hj/���!	HBG$K|l�k;$��8��C�r���-��������
������2��
!�1{;4uz%v)��0Hu����_�`�
������OP��W���0�!� :�ft����}��wO|���m���*t���+,��p���@��Pb���B;�� �0n�a������te�^��iF�f����2�]X��z�DwF
���|hp6O�#]
K�w�����;�tf�`��)L��{�)�m����*\O�z0�����[�Y�����e��3��������w���
��/1xZ������-q�@Y��}�,�V��f�9_�����Z��eq���c��p�������(�@���!	���Li���#��p�ADY��j�B�qe�ZvyZ��]	�F��	��cjh����+�Xz��=�d�:��9�����������0H!��4�l�������F��*Fd�xI�/����Z�P��:�V��A��+n�,�*�,�z��g���y�!�������,�����i��I<��4���H�0������(*E������!jk�i5#�4�i�-]���-�O����8�$~r�mP�Y'8#Nd_��z!�4�*���\����te����������D�6�pU2[t@sh�����I��Q��4�
�����6�xA�s�����:j&�!X��gh3��zO`9O�FX�h?A�2G�!�s������#a�\9s�P�J��gs���gzH�G�d�j\ ������qA5��pfO��t���!������Zc���3Gz���������b��k�F�>
������k�6���z+U�&����|�������Zg�^��)%��7��"k�dQ'W"��|[��eU��Rv�Q�SY��4��E��%_����
���> `]��-	�M��AI5�^%"<�m,��)>(���H���!�6������Z�$�d��o��a&�0,NqM�=�	��L���C��iY��4"+�4E����%q�*H�Af��hY����K��$�T��K�M�a�<>r�����<��1u�5\vh�Ms�]��&�Y����/�#Z�����Rk,���GHR��c<0"����������_Bub���J������J��,��~Y�5'#!FEH�9�P�y��X#�i�����x��$_���R�����g0�6�|&&*��4�+���B&"2]C��N��v�>%��f� ��,�Z�����{F��=���c�
�
0EK�J�=��7��5��S�z��b.�\�g�*7=�q�}#T��	��"C��7�$
���9o!�W�y�h7Q�M��u����U:���������|�M���e6s�
V���H�x��S��'��i�h��.��������c���0k��~I!5xZ����	�����W�b+���(g��{�{LO�E.�&��5������!,�K�������f��B`�,P��QZw����d�dl&4�0��I��# �P�}�{/nrX@��&�{=v(���y���!7��dZ�z���!���l1��A�J���w]+�A�s����4�2M�%$)�SR&�������`u��:�H��p����@�?�r-:��.D���B�~*��z��s������+4�|�P*��*bM�zI�x��Lw���}�=z2���B�b�$�N8����H\����i���}���-7H����e����#B��>1��������
���`���-�����S�v�x��#b������f�2�9���m@�>���f�z��n��Z��� ������d�`p�������lnO��1Z8���4?�Sy���E� {�$#Z-}��`�'q�J����,���(�������`�4}f����v3�j:v7#���������,�����#�6��c�9
�����+����B~r)x?39�v"1������"P/��v+�WC�Dp��<<a���#&��a��Q�F����K�/v�v�^���\�8bN��R��/%�N��[���`��\�B6j������i���=Z
�O��l��d[�_�2;�:��;1�1�p��I?�T��Q�c?�O�H���"d��#�������N��TO���C�<p:n��~;��)iaFp�!�x���4G�*��fK�����rz*�L��\�/���l��xHp#���A����B���. �����3A�$�
���<�v3AK�S�:3�pn���m?��L��uP��1	T|�/�iX�i���x4)s��0��P7t����/��$F+A���_�8����S��2}�\�v5��S�����o.��R���<ua���������F�C(�������4��^�����R�������W���D�	�V���
�;��=-�-��������T�fE�[��#� �Sz���H*Z	� ��)M��uUq���l��n(���!���*4��F��p]������x�}������p��8��T�BC��7b9�V*@�
��d�W���	N������9���v���1X<�����P��'eW�F]������h<����b�[^#�y:UV2������=����
��z">=���m��.��@q>����%���i��.���
��h�p��>���pz�7���[`��`�/( �%��kK��j	^u�j}�hk�o��r�N��?���� ���"8�\�7�����kU���#�l�|?�����lW+�������M�Y�|<l��3����B��^���<�;8�:�(	VzD�L2���v��6	��U��%!���sW��HF�!�%�aZ6�/�E�.�(=��sK��g�	G��=?�B�J���������p�c���v2;�'�����A��������Y����LP%�v�A*.�z�M�?1���n-�[�k�3���������`������3���=k������9P�Eg��� ����ZH�'�M��	u�q�
�&����i]�N��������r~��� ��b7�����X0�Q�-,��q�;���6YV�:V/���Q2��}3p�������95��O�k��g+�`���?�XkG�.�R��x����&���<���V&�����{�E7�
@*W��[������N��'�ISSqA�D<X�^�ct:��76g�k@�`�QH���D/��]*�
t�a��oc��}.�"����Jq�]��4�PEI~�j!}�*��@V��[�_�m>h��������Z5U��#z�c9�������.b�K��o{\�W�CGq��s�mOo;�*����U�O���c��d�>��`��x#��>_�A�����$?C>?�����Ev����E���{�4	�H�k7�����u� �QE�-�3a���2j<�(���vN�fU���0�qN���9U��z�l�&��y����i�W�Z3�F��LF�[y������z���{�tqz���v�;�s������5�r����P�����1�w �o�YdyIo�h]�@(�Go��lS�`Ww��1���M��V��4��D��(��Y����i<G%��a�#��b �d���x��o�����x���AM���=��
��N�8�n�<m|�?��������x!*b!�������0���,l���g�{�~x����xA�����O����
�J��`�&�v��"���hkt��2�K+��T�!,�u�go����K[������BKp=�<��T�\I���w�����^W)\��i�f�cu?^`�&<%b�	*�Nj)J�[���/i��7���?��w���������?'OOp
��[���N�?1T�;�r}H2b�:^pI^��!��{I������yp��J���/�kn�y)u7�����������|�����Y�d&��C�et���${���{�����"�$�����"�������'G��[�,�Pu%�=Y�� A��q^���fA9MDu:���t,���@�3�W�#JL�����!�O�b�3\��}mB@TI-s����B�C�w��@����hKA��������$>%eC���T�>>�&[��o�*��6��o��f�������_��5��Q��]�A�*��o�Yn��~�����k��~���g�>����������j�
��?��������g���9���d�k%�U�����!��N	|��,n����x���D�2��{�
��-��N�"����)b�1XQG��YF$�R
@,� �i �n��j��	������uzT�|K�o�������r�%FQ+�^��
�G*���b��-��`~�~������Uc[��h0m�s��_��xu��7�E���5Z�=g������W���pu;���'}J��;-pJ�(^��y������w������kdYJ���^>�r�wy����Yz������a��A6����:��kP���F-��Z���(A���Uzm����������{���|H5���~��B$��z2e�yw��]b�5�YJ�}� ��q������F���=n����E��0#���t(I�I]���d��U�c^?8�K�`��t#��A���\���f��s7����p��s7H}�y[�}��f�������]wV�+�jv��g�~K�bj������m�����S�j�*N���(Yf�v/�dR��8�qfwvo�\�D��P���;/��)��A�`*�T���I�I<h�F���J�o;��ZF��h�
���fu�����p{[��)�t��J��tf��� �����|3q�)$W^.���+5|����S���1�C�*Ku��$�ED�����KK�h$�i�N��3q��������L���d��6y��m�^�t�f��6|�� 9���-�c�<�o��U��'A�ToQ&�+�b��3� ,$�S^K(�	i����0��R�����ZT�y�nRv\,t���V��_����?:�iq�5o�����������1��_(���~�,���$|u�k��A�dO2����P��"���q�L~����B�E��+p���D�u������*H���Ji�/�8�U���h��?0���_�|E��`��TNk���,�������u^D��6�V*Q����O5Y����w�si�!�-]��,�^�Z���^�������`�o���_V��������)q�����"�h�Z���K/O��
u"Y��X.C-h��"�B�F�Q|����;���������1�:9YsH3�JN����sA1�C�����M�����\�iAk��g�j1������N����oS���4�����I��������'7A�����x�����&��g=NRY������s��\7O�{^�B��O(o��@�.�{�����W���rUT��TT���z1��(��iH��������T�*�bP�GR$/��h�������'"6��5�d~\���b��p����
���
��#����!*��H�Q9���4��w�[�o���oxP������!��B]0~�p�b���
�k��>��T���vA��W����^�s���W/��������HLa�U�O�[����Q1�F��U����_o��M�(���V�����A@��TZ�&����}�~���������@�B�;L=	�b�/e����A@j��I��(�I����^����o��WQ�6_��w�6���o��c8>��C8�=x�)4����k�7WnF�T>��@������o��ZH��3
���HN�
��w���jd��l��c�z����X��@E9pU�7��&X�i`H
G�B:����[���(��H��q��=`!%��"RbE���l�$���p��_��$�������/'M~�L��!9lTlm:�(�������4��
G���4c����7(�RW$Kp�A�������,+�`Y9��J�UQ5��x���'��0J�����k��u���g[4q
-��6�) �����\
���Y^�G�N�Q�������k��;X�;C��`���Q��9���eG�8� �u��}�����v�G��@>S�)�3��O�9XYN���[N��
�!�MR�G�f��TIqoce4Q�}2;�^EqA���=�RY$#�*���Szv�/^|#���i����g�������>/�z~��������WW�p���v}�
���I�k��A�ra
���a\Nr����FZ'W�ev	���-�%\�'L`�mzh�,D)(D��������A�t3�3Jgg�G��)�dx���/�TsA��z'^����
�_��N[!��:��|�7���!.Dx��n�Z�E?}�����L�E�
��6��[#T���E�hP�`������MKB���������@BXA�F����?Z��"��y�~7��� �5��n���5o������pkQ�$�vT���q�N�+!���n���?QV��r`��w�����������~�"�J�%S����D��64P���u��JnD]]a@]�w�zp
��)Q�[Wb`��1�?��Y��DZ��V.�o�v�e���v���[v76�g�*GF6����T�_���������=�x���fK
�q	Z��U���oj���v�]ch���U��9}Q�o����	�s��(��m��*�1���|1o8)�V�4{J�I7��;i`:iB�5}��_b��^:h�����F��������l�����{"[��O������0"�LU#�����n��S�`���}D�"��\�����nr��5X%������d���/����*����6��e���Ks���-^aq	`��mQ�&�
����g�*�.r�^ �4�n������)�;{��D�kF��!��qxS��K��,�����tj��P��OG}=�A���J��(�;���mu��v�i��s6������#M�AO�y/7�S1�%���05X� ��B��/����c�>��oR�����N�$���rK��TZ���Tz�k�V�w*m��q�a�[a��� ��N��#����=�IW�=���V�#"���������1]��0)��B`[h!���T����tumC�5Nd�S��G��h���LPq����n��CmD�]�i�*�c��N2����!��{G?&�]���J���7�2��_d�WV�u
B�{!C������j���5l�Vy������"0Rcwr��P4����E��HM���G�
5�9��������`�I%SfRVf"��eVO��'Rf�?�R�"e���"�*����������&��O�c�|� %���Rb�<��L�i�M���V:�u�Y0�V96^��0���F�$I�Y&Rb�F�2��%�}wf��n��H��K����qB�"M��g�_�+JF����x6�=�NZ���+;��W���R�H�UT�u�$H���R�&(��
��Q�&�y/�im����?n�	��X��~�F�������^0���Q�,��Pe�U9���#��r.��t)���C�����������-e�����,���~h���������>�>Sz&���
��!t��r����>E?S�5v�Oi��C`K�Y�(X�$k�3�c����rc�&*��fAl4RMQ���Km�<Z}���f�������7~��
�x�����&���4VHh*�+�6����T}�7�:F^hA��w��T�;U0�������#�C�W�"�l��^[`0zL�6��=�r���������-��lh������R��5!�A'���l�������#�Sa�D�{H5`�;70QECX[��uO�.��n�=��������_������=8�6�:�:<�����:<��g��I��������uu��l�y��w���Y��VeQ%M�(���z��{pR�1�:l��l1��BV����k4�i�7��%�=�G�VE����;��������zd�+�=r���S=�@q��y`,������k	�#��-D8sAa������Y��>���`TWf����p#M]��Qg�hpM]��Q�f
�5��������\�D�	�G�,{�F�~q-�u���G�y���i����L���A�X_���G��m��
&zuTA�y}��z�4\a������@G0����r��G{�?�j��].55����G�0��w)�=	X�B�~*Ru��G��N�R6�6���K�Hd�~z�]�A��d�:�pV%����������h���8s�����h'��x�����K���.ht�!�f�t��['I��Bej��Fz��j%-Y�4���v�2�PR��zGW��q����A�6��:n�-�������z^Is	����6c���z��`�7�,���}[�
m�/=	����
�H��#�#�Q��B�m��G��x��SO��h�Um�6��`��f��gb-�F�Bl�.�&�\����
���6�m S���_;�c';�c�Mg���������f{07�UW�Y��?M�����~n���OQq+��9��~����z��M�����.>o���xs��.��m3����E��y��{���n�w������v���OD=F���?�4:���J�"��qk�C�������t�.��+e�M�R
7�Jj�Rhl;�����'���'����pf��f�����������<�a�Y�����W�oX�����9ywq��%�vE�i��X�-����9�?�R��M�����<�nn[��Y^<�v4���{��D���E���5;������{f����@����������4�>��$G0�c�l3ZP1��F��=*��O�n^���KSm�b�B����y�|6T����,7�/��a*�n!�
5��x*j)1y�
*.%o�������y������������'y�{�f2���7j������x:����p-�������Q6�uNS1�BG��[�z�Wn���*�����-��qKQ�V�M��F�42��^�hY��t��i�-���nS��q�}-���O5�_��]�0	y�Ds>$��>��>#��dq������>�dl��Oo�l�c�������Z��>~�N�+���y�\!�/����T
�f���]����`E�H�)t�8�C"���0�lCe�F�]���:���I�=�L*0�C[����g�*��L����8����~�uy��Lt����m�M\
~H.�Rh��:S�By{�$&&$�HHbMdp:1�Rx:�BHN�=��t{L�$&"$�DH����D���`j�Rw�}C�30�Jl�T]�QU�m�)��7�����uI��>�;S;��b6R��ygr��.�eHn�����F���0!��3�CK�%�vHM7��I�����>Q�u��n|�R�?g��f�';id�����t�OP`3���r����]=)8�a���"����fS����]:zM]���6�A��U�'
����:�.��y^������&mwS);D�i��^IS.�,���$���P��d�j�x!�!pL��H�$�f������z��� z~au2���A�J�n��Br�Lw��
������"���B���"��:��j�>����{/Jf���>��	��k��.������6�3%T����B��Z��=@X�� �T���r��v���otH��Pv��h��84���_�br����(U08\���q�R����li
���:�Y4��dhK�M]�.=�MyF���������rk����A<��m�~�
?���Dg�c{P��s���Mw�
�Qp������H����:yGn���}�#����wew I8�,��<M�U��F�����y�|{�tc����
~w�Q G!�`� �B:�4k| �R
��H�}wL�'�2�MQ�.�_��h�?hq�S���<P.A�����<��`$}()�7: �<W�b�y���7|?3�B���,9��������MN�Y=
q<q�"4c��Y�:�N���m�ms99��TV�!VF�����v��z$���"��������`��4��X����~B�4���0��v�1��E;�FsQ4/�R9��#Kj�S+�l����.uDe��n���m��hg�0�L�����2��!��w�������D����-�6M<�w��o�'�i��0�m���E�����_7���-�]��c-����)�YzR����xU�Zh�=Y>Y��L��*��e8��i��D�W��I����E�x�o�����]�$i�]��*�e����M���yN�i�I~�]3JA�g��I���Y%�'��ds6�b�@	�����B��Qt���%�qd�����R��	{�k�E���o3}X1$O�{^�E��'��zQ��u���,���:���
�E����G3���!��Q=�+���$�����J:�&a�?e��y]x#��<�]��d1��z�g�������0(���[�Wq�y���8�?7�W�#J<s��c	>�w�/����E�q����*���T.qw��8
Q�Xj1��=Z���������4���H��B��C�JW
�Rdk���i�Ab��]i�2�Aab�X
�����k'�����(e�)��+)e�KFh�G����?=f�HM��\�2~���b�hXa��|n�������AR�Yl����8�����/Yg������}�c�R_NW��t����C��A gKI��<�����]�{{~�����Q>��21��l���7��/j�X����2�ue�����BU���y6���������C`)���#�a�Pl�6���������u�g���#��j��Z�=���$���8�������k�C���;�9<�o�
_������qMg�pop�Y��A�.�A��0�-����������Z��j���[�,����G�W���Krg���"����T��H��?z~"�\z�-Vq1B^����W��������~��������g�������B
0004C_data_files_hand_edits_v2.patchtext/x-patch; charset=US-ASCII; name=0004C_data_files_hand_edits_v2.patchDownload
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    | 12 +++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 11 +-----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 44 +++++-----------------
 12 files changed, 145 insertions(+), 89 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
new file mode 100644
index bec8094..3d1a8b9
*** a/src/include/catalog/pg_amop.dat
--- b/src/include/catalog/pg_amop.dat
***************
*** 9,56 ****
--- 9,64 ----
  { opf => '1976', lt => '21', rt => '21', str => '3', oper => '94', am => '403' },
  { opf => '1976', lt => '21', rt => '21', str => '4', oper => '524', am => '403' },
  { opf => '1976', lt => '21', rt => '21', str => '5', oper => '520', am => '403' },
+ 
  # crosstype operators int24
  { opf => '1976', lt => '21', rt => '23', str => '1', oper => '534', am => '403' },
  { opf => '1976', lt => '21', rt => '23', str => '2', oper => '540', am => '403' },
  { opf => '1976', lt => '21', rt => '23', str => '3', oper => '532', am => '403' },
  { opf => '1976', lt => '21', rt => '23', str => '4', oper => '542', am => '403' },
  { opf => '1976', lt => '21', rt => '23', str => '5', oper => '536', am => '403' },
+ 
  # crosstype operators int28
  { opf => '1976', lt => '21', rt => '20', str => '1', oper => '1864', am => '403' },
  { opf => '1976', lt => '21', rt => '20', str => '2', oper => '1866', am => '403' },
  { opf => '1976', lt => '21', rt => '20', str => '3', oper => '1862', am => '403' },
  { opf => '1976', lt => '21', rt => '20', str => '4', oper => '1867', am => '403' },
  { opf => '1976', lt => '21', rt => '20', str => '5', oper => '1865', am => '403' },
+ 
  # default operators int4
  { opf => '1976', lt => '23', rt => '23', str => '1', oper => '97', am => '403' },
  { opf => '1976', lt => '23', rt => '23', str => '2', oper => '523', am => '403' },
  { opf => '1976', lt => '23', rt => '23', str => '3', oper => '96', am => '403' },
  { opf => '1976', lt => '23', rt => '23', str => '4', oper => '525', am => '403' },
  { opf => '1976', lt => '23', rt => '23', str => '5', oper => '521', am => '403' },
+ 
  # crosstype operators int42
  { opf => '1976', lt => '23', rt => '21', str => '1', oper => '535', am => '403' },
  { opf => '1976', lt => '23', rt => '21', str => '2', oper => '541', am => '403' },
  { opf => '1976', lt => '23', rt => '21', str => '3', oper => '533', am => '403' },
  { opf => '1976', lt => '23', rt => '21', str => '4', oper => '543', am => '403' },
  { opf => '1976', lt => '23', rt => '21', str => '5', oper => '537', am => '403' },
+ 
  # crosstype operators int48
  { opf => '1976', lt => '23', rt => '20', str => '1', oper => '37', am => '403' },
  { opf => '1976', lt => '23', rt => '20', str => '2', oper => '80', am => '403' },
  { opf => '1976', lt => '23', rt => '20', str => '3', oper => '15', am => '403' },
  { opf => '1976', lt => '23', rt => '20', str => '4', oper => '82', am => '403' },
  { opf => '1976', lt => '23', rt => '20', str => '5', oper => '76', am => '403' },
+ 
  # default operators int8
  { opf => '1976', lt => '20', rt => '20', str => '1', oper => '412', am => '403' },
  { opf => '1976', lt => '20', rt => '20', str => '2', oper => '414', am => '403' },
  { opf => '1976', lt => '20', rt => '20', str => '3', oper => '410', am => '403' },
  { opf => '1976', lt => '20', rt => '20', str => '4', oper => '415', am => '403' },
  { opf => '1976', lt => '20', rt => '20', str => '5', oper => '413', am => '403' },
+ 
  # crosstype operators int82
  { opf => '1976', lt => '20', rt => '21', str => '1', oper => '1870', am => '403' },
  { opf => '1976', lt => '20', rt => '21', str => '2', oper => '1872', am => '403' },
  { opf => '1976', lt => '20', rt => '21', str => '3', oper => '1868', am => '403' },
  { opf => '1976', lt => '20', rt => '21', str => '4', oper => '1873', am => '403' },
  { opf => '1976', lt => '20', rt => '21', str => '5', oper => '1871', am => '403' },
+ 
  # crosstype operators int84
  { opf => '1976', lt => '20', rt => '23', str => '1', oper => '418', am => '403' },
  { opf => '1976', lt => '20', rt => '23', str => '2', oper => '420', am => '403' },
***************
*** 90,107 ****
--- 98,118 ----
  { opf => '1970', lt => '700', rt => '700', str => '3', oper => '620', am => '403' },
  { opf => '1970', lt => '700', rt => '700', str => '4', oper => '625', am => '403' },
  { opf => '1970', lt => '700', rt => '700', str => '5', oper => '623', am => '403' },
+ 
  # crosstype operators float48
  { opf => '1970', lt => '700', rt => '701', str => '1', oper => '1122', am => '403' },
  { opf => '1970', lt => '700', rt => '701', str => '2', oper => '1124', am => '403' },
  { opf => '1970', lt => '700', rt => '701', str => '3', oper => '1120', am => '403' },
  { opf => '1970', lt => '700', rt => '701', str => '4', oper => '1125', am => '403' },
  { opf => '1970', lt => '700', rt => '701', str => '5', oper => '1123', am => '403' },
+ 
  # default operators float8
  { opf => '1970', lt => '701', rt => '701', str => '1', oper => '672', am => '403' },
  { opf => '1970', lt => '701', rt => '701', str => '2', oper => '673', am => '403' },
  { opf => '1970', lt => '701', rt => '701', str => '3', oper => '670', am => '403' },
  { opf => '1970', lt => '701', rt => '701', str => '4', oper => '675', am => '403' },
  { opf => '1970', lt => '701', rt => '701', str => '5', oper => '674', am => '403' },
+ 
  # crosstype operators float84
  { opf => '1970', lt => '701', rt => '700', str => '1', oper => '1132', am => '403' },
  { opf => '1970', lt => '701', rt => '700', str => '2', oper => '1134', am => '403' },
***************
*** 165,212 ****
--- 176,231 ----
  { opf => '434', lt => '1082', rt => '1082', str => '3', oper => '1093', am => '403' },
  { opf => '434', lt => '1082', rt => '1082', str => '4', oper => '1098', am => '403' },
  { opf => '434', lt => '1082', rt => '1082', str => '5', oper => '1097', am => '403' },
+ 
  # crosstype operators vs timestamp
  { opf => '434', lt => '1082', rt => '1114', str => '1', oper => '2345', am => '403' },
  { opf => '434', lt => '1082', rt => '1114', str => '2', oper => '2346', am => '403' },
  { opf => '434', lt => '1082', rt => '1114', str => '3', oper => '2347', am => '403' },
  { opf => '434', lt => '1082', rt => '1114', str => '4', oper => '2348', am => '403' },
  { opf => '434', lt => '1082', rt => '1114', str => '5', oper => '2349', am => '403' },
+ 
  # crosstype operators vs timestamptz
  { opf => '434', lt => '1082', rt => '1184', str => '1', oper => '2358', am => '403' },
  { opf => '434', lt => '1082', rt => '1184', str => '2', oper => '2359', am => '403' },
  { opf => '434', lt => '1082', rt => '1184', str => '3', oper => '2360', am => '403' },
  { opf => '434', lt => '1082', rt => '1184', str => '4', oper => '2361', am => '403' },
  { opf => '434', lt => '1082', rt => '1184', str => '5', oper => '2362', am => '403' },
+ 
  # default operators timestamp
  { opf => '434', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '403' },
  { opf => '434', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '403' },
  { opf => '434', lt => '1114', rt => '1114', str => '3', oper => '2060', am => '403' },
  { opf => '434', lt => '1114', rt => '1114', str => '4', oper => '2065', am => '403' },
  { opf => '434', lt => '1114', rt => '1114', str => '5', oper => '2064', am => '403' },
+ 
  # crosstype operators vs date
  { opf => '434', lt => '1114', rt => '1082', str => '1', oper => '2371', am => '403' },
  { opf => '434', lt => '1114', rt => '1082', str => '2', oper => '2372', am => '403' },
  { opf => '434', lt => '1114', rt => '1082', str => '3', oper => '2373', am => '403' },
  { opf => '434', lt => '1114', rt => '1082', str => '4', oper => '2374', am => '403' },
  { opf => '434', lt => '1114', rt => '1082', str => '5', oper => '2375', am => '403' },
+ 
  # crosstype operators vs timestamptz
  { opf => '434', lt => '1114', rt => '1184', str => '1', oper => '2534', am => '403' },
  { opf => '434', lt => '1114', rt => '1184', str => '2', oper => '2535', am => '403' },
  { opf => '434', lt => '1114', rt => '1184', str => '3', oper => '2536', am => '403' },
  { opf => '434', lt => '1114', rt => '1184', str => '4', oper => '2537', am => '403' },
  { opf => '434', lt => '1114', rt => '1184', str => '5', oper => '2538', am => '403' },
+ 
  # default operators timestamptz
  { opf => '434', lt => '1184', rt => '1184', str => '1', oper => '1322', am => '403' },
  { opf => '434', lt => '1184', rt => '1184', str => '2', oper => '1323', am => '403' },
  { opf => '434', lt => '1184', rt => '1184', str => '3', oper => '1320', am => '403' },
  { opf => '434', lt => '1184', rt => '1184', str => '4', oper => '1325', am => '403' },
  { opf => '434', lt => '1184', rt => '1184', str => '5', oper => '1324', am => '403' },
+ 
  # crosstype operators vs date
  { opf => '434', lt => '1184', rt => '1082', str => '1', oper => '2384', am => '403' },
  { opf => '434', lt => '1184', rt => '1082', str => '2', oper => '2385', am => '403' },
  { opf => '434', lt => '1184', rt => '1082', str => '3', oper => '2386', am => '403' },
  { opf => '434', lt => '1184', rt => '1082', str => '4', oper => '2387', am => '403' },
  { opf => '434', lt => '1184', rt => '1082', str => '5', oper => '2388', am => '403' },
+ 
  # crosstype operators vs timestamp
  { opf => '434', lt => '1184', rt => '1114', str => '1', oper => '2540', am => '403' },
  { opf => '434', lt => '1184', rt => '1114', str => '2', oper => '2541', am => '403' },
***************
*** 378,394 ****
--- 397,418 ----
  
  # bpchar_ops
  { opf => '427', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+ 
  # char_ops
  { opf => '431', lt => '18', rt => '18', str => '1', oper => '92', am => '405' },
+ 
  # date_ops
  { opf => '435', lt => '1082', rt => '1082', str => '1', oper => '1093', am => '405' },
+ 
  # float_ops
  { opf => '1971', lt => '700', rt => '700', str => '1', oper => '620', am => '405' },
  { opf => '1971', lt => '701', rt => '701', str => '1', oper => '670', am => '405' },
  { opf => '1971', lt => '700', rt => '701', str => '1', oper => '1120', am => '405' },
  { opf => '1971', lt => '701', rt => '700', str => '1', oper => '1130', am => '405' },
+ 
  # network_ops
  { opf => '1975', lt => '869', rt => '869', str => '1', oper => '1201', am => '405' },
+ 
  # integer_ops
  { opf => '1977', lt => '21', rt => '21', str => '1', oper => '94', am => '405' },
  { opf => '1977', lt => '23', rt => '23', str => '1', oper => '96', am => '405' },
***************
*** 399,450 ****
--- 423,498 ----
  { opf => '1977', lt => '23', rt => '20', str => '1', oper => '15', am => '405' },
  { opf => '1977', lt => '20', rt => '21', str => '1', oper => '1868', am => '405' },
  { opf => '1977', lt => '20', rt => '23', str => '1', oper => '416', am => '405' },
+ 
  # interval_ops
  { opf => '1983', lt => '1186', rt => '1186', str => '1', oper => '1330', am => '405' },
+ 
  # macaddr_ops
  { opf => '1985', lt => '829', rt => '829', str => '1', oper => '1220', am => '405' },
+ 
  # macaddr8_ops
  { opf => '3372', lt => '774', rt => '774', str => '1', oper => '3362', am => '405' },
+ 
  # name_ops
  { opf => '1987', lt => '19', rt => '19', str => '1', oper => '93', am => '405' },
+ 
  # oid_ops
  { opf => '1990', lt => '26', rt => '26', str => '1', oper => '607', am => '405' },
+ 
  # oidvector_ops
  { opf => '1992', lt => '30', rt => '30', str => '1', oper => '649', am => '405' },
+ 
  # text_ops
  { opf => '1995', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+ 
  # time_ops
  { opf => '1997', lt => '1083', rt => '1083', str => '1', oper => '1108', am => '405' },
+ 
  # timestamptz_ops
  { opf => '1999', lt => '1184', rt => '1184', str => '1', oper => '1320', am => '405' },
+ 
  # timetz_ops
  { opf => '2001', lt => '1266', rt => '1266', str => '1', oper => '1550', am => '405' },
+ 
  # timestamp_ops
  { opf => '2040', lt => '1114', rt => '1114', str => '1', oper => '2060', am => '405' },
+ 
  # bool_ops
  { opf => '2222', lt => '16', rt => '16', str => '1', oper => '91', am => '405' },
+ 
  # bytea_ops
  { opf => '2223', lt => '17', rt => '17', str => '1', oper => '1955', am => '405' },
+ 
  # xid_ops
  { opf => '2225', lt => '28', rt => '28', str => '1', oper => '352', am => '405' },
+ 
  # cid_ops
  { opf => '2226', lt => '29', rt => '29', str => '1', oper => '385', am => '405' },
+ 
  # abstime_ops
  { opf => '2227', lt => '702', rt => '702', str => '1', oper => '560', am => '405' },
+ 
  # reltime_ops
  { opf => '2228', lt => '703', rt => '703', str => '1', oper => '566', am => '405' },
+ 
  # text_pattern_ops
  { opf => '2229', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+ 
  # bpchar_pattern_ops
  { opf => '2231', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+ 
  # aclitem_ops
  { opf => '2235', lt => '1033', rt => '1033', str => '1', oper => '974', am => '405' },
+ 
  # uuid_ops
  { opf => '2969', lt => '2950', rt => '2950', str => '1', oper => '2972', am => '405' },
+ 
  # pg_lsn_ops
  { opf => '3254', lt => '3220', rt => '3220', str => '1', oper => '3222', am => '405' },
+ 
  # numeric_ops
  { opf => '1998', lt => '1700', rt => '1700', str => '1', oper => '1752', am => '405' },
+ 
  # array_ops
  { opf => '627', lt => '2277', rt => '2277', str => '1', oper => '1070', am => '405' },
  
***************
*** 674,697 ****
--- 722,749 ----
  { opf => '3794', lt => '869', rt => '869', str => '27', oper => '934', am => '4000' },
  
  # BRIN opclasses
+ 
  # minmax bytea
  { opf => '4064', lt => '17', rt => '17', str => '1', oper => '1957', am => '3580' },
  { opf => '4064', lt => '17', rt => '17', str => '2', oper => '1958', am => '3580' },
  { opf => '4064', lt => '17', rt => '17', str => '3', oper => '1955', am => '3580' },
  { opf => '4064', lt => '17', rt => '17', str => '4', oper => '1960', am => '3580' },
  { opf => '4064', lt => '17', rt => '17', str => '5', oper => '1959', am => '3580' },
+ 
  # minmax "char"
  { opf => '4062', lt => '18', rt => '18', str => '1', oper => '631', am => '3580' },
  { opf => '4062', lt => '18', rt => '18', str => '2', oper => '632', am => '3580' },
  { opf => '4062', lt => '18', rt => '18', str => '3', oper => '92', am => '3580' },
  { opf => '4062', lt => '18', rt => '18', str => '4', oper => '634', am => '3580' },
  { opf => '4062', lt => '18', rt => '18', str => '5', oper => '633', am => '3580' },
+ 
  # minmax name
  { opf => '4065', lt => '19', rt => '19', str => '1', oper => '660', am => '3580' },
  { opf => '4065', lt => '19', rt => '19', str => '2', oper => '661', am => '3580' },
  { opf => '4065', lt => '19', rt => '19', str => '3', oper => '93', am => '3580' },
  { opf => '4065', lt => '19', rt => '19', str => '4', oper => '663', am => '3580' },
  { opf => '4065', lt => '19', rt => '19', str => '5', oper => '662', am => '3580' },
+ 
  # minmax integer
  { opf => '4054', lt => '20', rt => '20', str => '1', oper => '412', am => '3580' },
  { opf => '4054', lt => '20', rt => '20', str => '2', oper => '414', am => '3580' },
***************
*** 745,762 ****
--- 797,817 ----
  { opf => '4056', lt => '25', rt => '25', str => '3', oper => '98', am => '3580' },
  { opf => '4056', lt => '25', rt => '25', str => '4', oper => '667', am => '3580' },
  { opf => '4056', lt => '25', rt => '25', str => '5', oper => '666', am => '3580' },
+ 
  # minmax oid
  { opf => '4068', lt => '26', rt => '26', str => '1', oper => '609', am => '3580' },
  { opf => '4068', lt => '26', rt => '26', str => '2', oper => '611', am => '3580' },
  { opf => '4068', lt => '26', rt => '26', str => '3', oper => '607', am => '3580' },
  { opf => '4068', lt => '26', rt => '26', str => '4', oper => '612', am => '3580' },
  { opf => '4068', lt => '26', rt => '26', str => '5', oper => '610', am => '3580' },
+ 
  # minmax tid
  { opf => '4069', lt => '27', rt => '27', str => '1', oper => '2799', am => '3580' },
  { opf => '4069', lt => '27', rt => '27', str => '2', oper => '2801', am => '3580' },
  { opf => '4069', lt => '27', rt => '27', str => '3', oper => '387', am => '3580' },
  { opf => '4069', lt => '27', rt => '27', str => '4', oper => '2802', am => '3580' },
  { opf => '4069', lt => '27', rt => '27', str => '5', oper => '2800', am => '3580' },
+ 
  # minmax float (float4, float8)
  { opf => '4070', lt => '700', rt => '700', str => '1', oper => '622', am => '3580' },
  { opf => '4070', lt => '700', rt => '700', str => '2', oper => '624', am => '3580' },
***************
*** 785,814 ****
--- 840,874 ----
  { opf => '4072', lt => '702', rt => '702', str => '3', oper => '560', am => '3580' },
  { opf => '4072', lt => '702', rt => '702', str => '4', oper => '565', am => '3580' },
  { opf => '4072', lt => '702', rt => '702', str => '5', oper => '563', am => '3580' },
+ 
  # minmax reltime
  { opf => '4073', lt => '703', rt => '703', str => '1', oper => '568', am => '3580' },
  { opf => '4073', lt => '703', rt => '703', str => '2', oper => '570', am => '3580' },
  { opf => '4073', lt => '703', rt => '703', str => '3', oper => '566', am => '3580' },
  { opf => '4073', lt => '703', rt => '703', str => '4', oper => '571', am => '3580' },
  { opf => '4073', lt => '703', rt => '703', str => '5', oper => '569', am => '3580' },
+ 
  # minmax macaddr
  { opf => '4074', lt => '829', rt => '829', str => '1', oper => '1222', am => '3580' },
  { opf => '4074', lt => '829', rt => '829', str => '2', oper => '1223', am => '3580' },
  { opf => '4074', lt => '829', rt => '829', str => '3', oper => '1220', am => '3580' },
  { opf => '4074', lt => '829', rt => '829', str => '4', oper => '1225', am => '3580' },
  { opf => '4074', lt => '829', rt => '829', str => '5', oper => '1224', am => '3580' },
+ 
  # minmax macaddr8
  { opf => '4109', lt => '774', rt => '774', str => '1', oper => '3364', am => '3580' },
  { opf => '4109', lt => '774', rt => '774', str => '2', oper => '3365', am => '3580' },
  { opf => '4109', lt => '774', rt => '774', str => '3', oper => '3362', am => '3580' },
  { opf => '4109', lt => '774', rt => '774', str => '4', oper => '3367', am => '3580' },
  { opf => '4109', lt => '774', rt => '774', str => '5', oper => '3366', am => '3580' },
+ 
  # minmax inet
  { opf => '4075', lt => '869', rt => '869', str => '1', oper => '1203', am => '3580' },
  { opf => '4075', lt => '869', rt => '869', str => '2', oper => '1204', am => '3580' },
  { opf => '4075', lt => '869', rt => '869', str => '3', oper => '1201', am => '3580' },
  { opf => '4075', lt => '869', rt => '869', str => '4', oper => '1206', am => '3580' },
  { opf => '4075', lt => '869', rt => '869', str => '5', oper => '1205', am => '3580' },
+ 
  # inclusion inet
  { opf => '4102', lt => '869', rt => '869', str => '3', oper => '3552', am => '3580' },
  { opf => '4102', lt => '869', rt => '869', str => '7', oper => '934', am => '3580' },
***************
*** 816,833 ****
--- 876,896 ----
  { opf => '4102', lt => '869', rt => '869', str => '18', oper => '1201', am => '3580' },
  { opf => '4102', lt => '869', rt => '869', str => '24', oper => '933', am => '3580' },
  { opf => '4102', lt => '869', rt => '869', str => '26', oper => '931', am => '3580' },
+ 
  # minmax character
  { opf => '4076', lt => '1042', rt => '1042', str => '1', oper => '1058', am => '3580' },
  { opf => '4076', lt => '1042', rt => '1042', str => '2', oper => '1059', am => '3580' },
  { opf => '4076', lt => '1042', rt => '1042', str => '3', oper => '1054', am => '3580' },
  { opf => '4076', lt => '1042', rt => '1042', str => '4', oper => '1061', am => '3580' },
  { opf => '4076', lt => '1042', rt => '1042', str => '5', oper => '1060', am => '3580' },
+ 
  # minmax time without time zone
  { opf => '4077', lt => '1083', rt => '1083', str => '1', oper => '1110', am => '3580' },
  { opf => '4077', lt => '1083', rt => '1083', str => '2', oper => '1111', am => '3580' },
  { opf => '4077', lt => '1083', rt => '1083', str => '3', oper => '1108', am => '3580' },
  { opf => '4077', lt => '1083', rt => '1083', str => '4', oper => '1113', am => '3580' },
  { opf => '4077', lt => '1083', rt => '1083', str => '5', oper => '1112', am => '3580' },
+ 
  # minmax datetime (date, timestamp, timestamptz)
  { opf => '4059', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '3580' },
  { opf => '4059', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '3580' },
***************
*** 881,916 ****
--- 944,985 ----
  { opf => '4078', lt => '1186', rt => '1186', str => '3', oper => '1330', am => '3580' },
  { opf => '4078', lt => '1186', rt => '1186', str => '4', oper => '1335', am => '3580' },
  { opf => '4078', lt => '1186', rt => '1186', str => '5', oper => '1334', am => '3580' },
+ 
  # minmax time with time zone
  { opf => '4058', lt => '1266', rt => '1266', str => '1', oper => '1552', am => '3580' },
  { opf => '4058', lt => '1266', rt => '1266', str => '2', oper => '1553', am => '3580' },
  { opf => '4058', lt => '1266', rt => '1266', str => '3', oper => '1550', am => '3580' },
  { opf => '4058', lt => '1266', rt => '1266', str => '4', oper => '1555', am => '3580' },
  { opf => '4058', lt => '1266', rt => '1266', str => '5', oper => '1554', am => '3580' },
+ 
  # minmax bit
  { opf => '4079', lt => '1560', rt => '1560', str => '1', oper => '1786', am => '3580' },
  { opf => '4079', lt => '1560', rt => '1560', str => '2', oper => '1788', am => '3580' },
  { opf => '4079', lt => '1560', rt => '1560', str => '3', oper => '1784', am => '3580' },
  { opf => '4079', lt => '1560', rt => '1560', str => '4', oper => '1789', am => '3580' },
  { opf => '4079', lt => '1560', rt => '1560', str => '5', oper => '1787', am => '3580' },
+ 
  # minmax bit varying
  { opf => '4080', lt => '1562', rt => '1562', str => '1', oper => '1806', am => '3580' },
  { opf => '4080', lt => '1562', rt => '1562', str => '2', oper => '1808', am => '3580' },
  { opf => '4080', lt => '1562', rt => '1562', str => '3', oper => '1804', am => '3580' },
  { opf => '4080', lt => '1562', rt => '1562', str => '4', oper => '1809', am => '3580' },
  { opf => '4080', lt => '1562', rt => '1562', str => '5', oper => '1807', am => '3580' },
+ 
  # minmax numeric
  { opf => '4055', lt => '1700', rt => '1700', str => '1', oper => '1754', am => '3580' },
  { opf => '4055', lt => '1700', rt => '1700', str => '2', oper => '1755', am => '3580' },
  { opf => '4055', lt => '1700', rt => '1700', str => '3', oper => '1752', am => '3580' },
  { opf => '4055', lt => '1700', rt => '1700', str => '4', oper => '1757', am => '3580' },
  { opf => '4055', lt => '1700', rt => '1700', str => '5', oper => '1756', am => '3580' },
+ 
  # minmax uuid
  { opf => '4081', lt => '2950', rt => '2950', str => '1', oper => '2974', am => '3580' },
  { opf => '4081', lt => '2950', rt => '2950', str => '2', oper => '2976', am => '3580' },
  { opf => '4081', lt => '2950', rt => '2950', str => '3', oper => '2972', am => '3580' },
  { opf => '4081', lt => '2950', rt => '2950', str => '4', oper => '2977', am => '3580' },
  { opf => '4081', lt => '2950', rt => '2950', str => '5', oper => '2975', am => '3580' },
+ 
  # inclusion range types
  { opf => '4103', lt => '3831', rt => '3831', str => '1', oper => '3893', am => '3580' },
  { opf => '4103', lt => '3831', rt => '3831', str => '2', oper => '3895', am => '3580' },
***************
*** 926,937 ****
--- 995,1008 ----
  { opf => '4103', lt => '3831', rt => '3831', str => '21', oper => '3885', am => '3580' },
  { opf => '4103', lt => '3831', rt => '3831', str => '22', oper => '3887', am => '3580' },
  { opf => '4103', lt => '3831', rt => '3831', str => '23', oper => '3886', am => '3580' },
+ 
  # minmax pg_lsn
  { opf => '4082', lt => '3220', rt => '3220', str => '1', oper => '3224', am => '3580' },
  { opf => '4082', lt => '3220', rt => '3220', str => '2', oper => '3226', am => '3580' },
  { opf => '4082', lt => '3220', rt => '3220', str => '3', oper => '3222', am => '3580' },
  { opf => '4082', lt => '3220', rt => '3220', str => '4', oper => '3227', am => '3580' },
  { opf => '4082', lt => '3220', rt => '3220', str => '5', oper => '3225', am => '3580' },
+ 
  # inclusion box
  { opf => '4104', lt => '603', rt => '603', str => '1', oper => '493', am => '3580' },
  { opf => '4104', lt => '603', rt => '603', str => '2', oper => '494', am => '3580' },
***************
*** 945,950 ****
--- 1016,1022 ----
  { opf => '4104', lt => '603', rt => '603', str => '10', oper => '2570', am => '3580' },
  { opf => '4104', lt => '603', rt => '603', str => '11', oper => '2573', am => '3580' },
  { opf => '4104', lt => '603', rt => '603', str => '12', oper => '2572', am => '3580' },
+ 
  # we could, but choose not to, supply entries for strategies 13 and 14
  { opf => '4104', lt => '603', rt => '600', str => '7', oper => '433', am => '3580' },
  
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
new file mode 100644
index a165e06..6c25ebf
*** a/src/include/catalog/pg_amproc.dat
--- b/src/include/catalog/pg_amproc.dat
***************
*** 260,280 ****
--- 260,284 ----
  { opf => '5000', lt => '603', rt => '603', num => '5', amproc => '5016' },
  
  # BRIN opclasses
+ 
  # minmax bytea
  { opf => '4064', lt => '17', rt => '17', num => '1', amproc => '3383' },
  { opf => '4064', lt => '17', rt => '17', num => '2', amproc => '3384' },
  { opf => '4064', lt => '17', rt => '17', num => '3', amproc => '3385' },
  { opf => '4064', lt => '17', rt => '17', num => '4', amproc => '3386' },
+ 
  # minmax "char"
  { opf => '4062', lt => '18', rt => '18', num => '1', amproc => '3383' },
  { opf => '4062', lt => '18', rt => '18', num => '2', amproc => '3384' },
  { opf => '4062', lt => '18', rt => '18', num => '3', amproc => '3385' },
  { opf => '4062', lt => '18', rt => '18', num => '4', amproc => '3386' },
+ 
  # minmax name
  { opf => '4065', lt => '19', rt => '19', num => '1', amproc => '3383' },
  { opf => '4065', lt => '19', rt => '19', num => '2', amproc => '3384' },
  { opf => '4065', lt => '19', rt => '19', num => '3', amproc => '3385' },
  { opf => '4065', lt => '19', rt => '19', num => '4', amproc => '3386' },
+ 
  # minmax integer: int2, int4, int8
  { opf => '4054', lt => '20', rt => '20', num => '1', amproc => '3383' },
  { opf => '4054', lt => '20', rt => '20', num => '2', amproc => '3384' },
***************
*** 320,335 ****
--- 324,342 ----
  { opf => '4056', lt => '25', rt => '25', num => '2', amproc => '3384' },
  { opf => '4056', lt => '25', rt => '25', num => '3', amproc => '3385' },
  { opf => '4056', lt => '25', rt => '25', num => '4', amproc => '3386' },
+ 
  # minmax oid
  { opf => '4068', lt => '26', rt => '26', num => '1', amproc => '3383' },
  { opf => '4068', lt => '26', rt => '26', num => '2', amproc => '3384' },
  { opf => '4068', lt => '26', rt => '26', num => '3', amproc => '3385' },
  { opf => '4068', lt => '26', rt => '26', num => '4', amproc => '3386' },
+ 
  # minmax tid
  { opf => '4069', lt => '27', rt => '27', num => '1', amproc => '3383' },
  { opf => '4069', lt => '27', rt => '27', num => '2', amproc => '3384' },
  { opf => '4069', lt => '27', rt => '27', num => '3', amproc => '3385' },
  { opf => '4069', lt => '27', rt => '27', num => '4', amproc => '3386' },
+ 
  # minmax float
  { opf => '4070', lt => '700', rt => '700', num => '1', amproc => '3383' },
  { opf => '4070', lt => '700', rt => '700', num => '2', amproc => '3384' },
***************
*** 356,381 ****
--- 363,393 ----
  { opf => '4072', lt => '702', rt => '702', num => '2', amproc => '3384' },
  { opf => '4072', lt => '702', rt => '702', num => '3', amproc => '3385' },
  { opf => '4072', lt => '702', rt => '702', num => '4', amproc => '3386' },
+ 
  # minmax reltime
  { opf => '4073', lt => '703', rt => '703', num => '1', amproc => '3383' },
  { opf => '4073', lt => '703', rt => '703', num => '2', amproc => '3384' },
  { opf => '4073', lt => '703', rt => '703', num => '3', amproc => '3385' },
  { opf => '4073', lt => '703', rt => '703', num => '4', amproc => '3386' },
+ 
  # minmax macaddr
  { opf => '4074', lt => '829', rt => '829', num => '1', amproc => '3383' },
  { opf => '4074', lt => '829', rt => '829', num => '2', amproc => '3384' },
  { opf => '4074', lt => '829', rt => '829', num => '3', amproc => '3385' },
  { opf => '4074', lt => '829', rt => '829', num => '4', amproc => '3386' },
+ 
  # minmax macaddr8
  { opf => '4109', lt => '774', rt => '774', num => '1', amproc => '3383' },
  { opf => '4109', lt => '774', rt => '774', num => '2', amproc => '3384' },
  { opf => '4109', lt => '774', rt => '774', num => '3', amproc => '3385' },
  { opf => '4109', lt => '774', rt => '774', num => '4', amproc => '3386' },
+ 
  # minmax inet
  { opf => '4075', lt => '869', rt => '869', num => '1', amproc => '3383' },
  { opf => '4075', lt => '869', rt => '869', num => '2', amproc => '3384' },
  { opf => '4075', lt => '869', rt => '869', num => '3', amproc => '3385' },
  { opf => '4075', lt => '869', rt => '869', num => '4', amproc => '3386' },
+ 
  # inclusion inet
  { opf => '4102', lt => '869', rt => '869', num => '1', amproc => '4105' },
  { opf => '4102', lt => '869', rt => '869', num => '2', amproc => '4106' },
***************
*** 384,399 ****
--- 396,414 ----
  { opf => '4102', lt => '869', rt => '869', num => '11', amproc => '4063' },
  { opf => '4102', lt => '869', rt => '869', num => '12', amproc => '4071' },
  { opf => '4102', lt => '869', rt => '869', num => '13', amproc => '930' },
+ 
  # minmax character
  { opf => '4076', lt => '1042', rt => '1042', num => '1', amproc => '3383' },
  { opf => '4076', lt => '1042', rt => '1042', num => '2', amproc => '3384' },
  { opf => '4076', lt => '1042', rt => '1042', num => '3', amproc => '3385' },
  { opf => '4076', lt => '1042', rt => '1042', num => '4', amproc => '3386' },
+ 
  # minmax time without time zone
  { opf => '4077', lt => '1083', rt => '1083', num => '1', amproc => '3383' },
  { opf => '4077', lt => '1083', rt => '1083', num => '2', amproc => '3384' },
  { opf => '4077', lt => '1083', rt => '1083', num => '3', amproc => '3385' },
  { opf => '4077', lt => '1083', rt => '1083', num => '4', amproc => '3386' },
+ 
  # minmax datetime (date, timestamp, timestamptz)
  { opf => '4059', lt => '1114', rt => '1114', num => '1', amproc => '3383' },
  { opf => '4059', lt => '1114', rt => '1114', num => '2', amproc => '3384' },
***************
*** 439,469 ****
--- 454,490 ----
  { opf => '4078', lt => '1186', rt => '1186', num => '2', amproc => '3384' },
  { opf => '4078', lt => '1186', rt => '1186', num => '3', amproc => '3385' },
  { opf => '4078', lt => '1186', rt => '1186', num => '4', amproc => '3386' },
+ 
  # minmax time with time zone
  { opf => '4058', lt => '1266', rt => '1266', num => '1', amproc => '3383' },
  { opf => '4058', lt => '1266', rt => '1266', num => '2', amproc => '3384' },
  { opf => '4058', lt => '1266', rt => '1266', num => '3', amproc => '3385' },
  { opf => '4058', lt => '1266', rt => '1266', num => '4', amproc => '3386' },
+ 
  # minmax bit
  { opf => '4079', lt => '1560', rt => '1560', num => '1', amproc => '3383' },
  { opf => '4079', lt => '1560', rt => '1560', num => '2', amproc => '3384' },
  { opf => '4079', lt => '1560', rt => '1560', num => '3', amproc => '3385' },
  { opf => '4079', lt => '1560', rt => '1560', num => '4', amproc => '3386' },
+ 
  # minmax bit varying
  { opf => '4080', lt => '1562', rt => '1562', num => '1', amproc => '3383' },
  { opf => '4080', lt => '1562', rt => '1562', num => '2', amproc => '3384' },
  { opf => '4080', lt => '1562', rt => '1562', num => '3', amproc => '3385' },
  { opf => '4080', lt => '1562', rt => '1562', num => '4', amproc => '3386' },
+ 
  # minmax numeric
  { opf => '4055', lt => '1700', rt => '1700', num => '1', amproc => '3383' },
  { opf => '4055', lt => '1700', rt => '1700', num => '2', amproc => '3384' },
  { opf => '4055', lt => '1700', rt => '1700', num => '3', amproc => '3385' },
  { opf => '4055', lt => '1700', rt => '1700', num => '4', amproc => '3386' },
+ 
  # minmax uuid
  { opf => '4081', lt => '2950', rt => '2950', num => '1', amproc => '3383' },
  { opf => '4081', lt => '2950', rt => '2950', num => '2', amproc => '3384' },
  { opf => '4081', lt => '2950', rt => '2950', num => '3', amproc => '3385' },
  { opf => '4081', lt => '2950', rt => '2950', num => '4', amproc => '3386' },
+ 
  # inclusion range types
  { opf => '4103', lt => '3831', rt => '3831', num => '1', amproc => '4105' },
  { opf => '4103', lt => '3831', rt => '3831', num => '2', amproc => '4106' },
***************
*** 472,482 ****
--- 493,505 ----
  { opf => '4103', lt => '3831', rt => '3831', num => '11', amproc => '4057' },
  { opf => '4103', lt => '3831', rt => '3831', num => '13', amproc => '3859' },
  { opf => '4103', lt => '3831', rt => '3831', num => '14', amproc => '3850' },
+ 
  # minmax pg_lsn
  { opf => '4082', lt => '3220', rt => '3220', num => '1', amproc => '3383' },
  { opf => '4082', lt => '3220', rt => '3220', num => '2', amproc => '3384' },
  { opf => '4082', lt => '3220', rt => '3220', num => '3', amproc => '3385' },
  { opf => '4082', lt => '3220', rt => '3220', num => '4', amproc => '3386' },
+ 
  # inclusion box
  { opf => '4104', lt => '603', rt => '603', num => '1', amproc => '4105' },
  { opf => '4104', lt => '603', rt => '603', num => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
new file mode 100644
index 927128e..315b0d0
*** a/src/include/catalog/pg_authid.dat
--- b/src/include/catalog/pg_authid.dat
***************
*** 1,12 ****
  # pg_authid.dat
  [
  
! # The uppercase quantities will be replaced at initdb time with
! # user choices.
! # The C code typically refers to these roles using the #define symbols,
! # so be sure to keep those in sync with the DATA lines.
  { oid => '10',
!   rolname => 'POSTGRES', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
  { oid => '3373',
    rolname => 'pg_monitor' },
  { oid => '3374',
--- 1,14 ----
  # pg_authid.dat
  [
  
! # The C code typically refers to these roles using the #define symbols
! # in pg_authid.h, so be sure to keep those in sync with the data here.
! 
! # The uppercase quantities will be replaced at initdb time with user choices.
! # so we must double-quote them.
  { oid => '10',
!   rolname => '"POSTGRES"', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
! 
  { oid => '3373',
    rolname => 'pg_monitor' },
  { oid => '3374',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
new file mode 100644
index a1fe83d..add77ad
*** a/src/include/catalog/pg_cast.dat
--- b/src/include/catalog/pg_cast.dat
***************
*** 54,59 ****
--- 54,60 ----
  # between alias types must pass through OID.)	Lastly, there are implicit
  # casts from text and varchar to regclass, which exist mainly to support
  # legacy forms of nextval() and related functions.
+ 
  { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
  { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
  { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
***************
*** 193,198 ****
--- 194,200 ----
  { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
  { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
  { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+ 
  # Cross-category casts between int4 and abstime, reltime
  { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
  { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
***************
*** 227,232 ****
--- 229,235 ----
  # BitString category
  { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
  { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+ 
  # Cross-category casts between bit and int4, int8
  { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
  { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
***************
*** 241,246 ****
--- 244,250 ----
  # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
  # behavior will ensue when the automatic cast is applied instead of the
  # pg_cast entry!
+ 
  { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
***************
*** 248,253 ****
--- 252,258 ----
  { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
  
  # Cross-category casts to and from VARCHAR
+ 
  # We support all the same casts as for TEXT.
  { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
***************
*** 256,261 ****
--- 261,267 ----
  { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
  
  # Cross-category casts to and from BPCHAR
+ 
  # We support all the same casts as for TEXT.
  { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
  { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
new file mode 100644
index af762e8..d574ba8
*** a/src/include/catalog/pg_class.dat
--- b/src/include/catalog/pg_class.dat
***************
*** 1,12 ****
  # pg_class.dat
  [
  
! # NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
  # the OIDs listed here match those given in their CATALOG macros, and that
  # the relnatts values are correct.
  
- # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
- # similarly, "1" in relminmxid stands for FirstMultiXactId
  { oid => '1247',
    relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't' },
  { oid => '1249',
--- 1,10 ----
  # pg_class.dat
  [
  
! # Note: only "bootstrapped" relations need to be declared here.  Be sure that
  # the OIDs listed here match those given in their CATALOG macros, and that
  # the relnatts values are correct.
  
  { oid => '1247',
    relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't' },
  { oid => '1249',
***************
*** 16,26 ****
  { oid => '1259',
    relname => 'pg_class', reltype => '83', relnatts => '33', relhasoids => 't' },
  
- # default selection for replica identity (primary key or nothing)
- # no replica identity is logged for this relation
- # all columns are logged as replica identity
- # an explicitly chosen candidate key's columns are used as replica identity.
- # Note this will still be set if the index has been dropped; in that case it
- # has the same meaning as 'd'.
- 
  ]
--- 14,17 ----
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
new file mode 100644
index bc4d41f..dfa1553
*** a/src/include/catalog/pg_database.dat
--- b/src/include/catalog/pg_database.dat
***************
*** 1,7 ****
  # pg_database.dat
  [
  
  { oid => '1', shdescr => 'default template for new databases',
!   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
  
  ]
--- 1,10 ----
  # pg_database.dat
  [
  
+ # LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+ # that might contain non-word characters, so we must double-quote them.
+ 
  { oid => '1', shdescr => 'default template for new databases',
!   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
  
  ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
new file mode 100644
index 646fd30..3281eea
*** a/src/include/catalog/pg_namespace.dat
--- b/src/include/catalog/pg_namespace.dat
***************
*** 8,13 ****
  { oid => '2200', descr => 'standard public schema',
    nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
  
- # prototypes for functions in pg_namespace.c
- 
  ]
--- 8,11 ----
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
new file mode 100644
index b0f2e8c..8e4569e
*** a/src/include/catalog/pg_opclass.dat
--- b/src/include/catalog/pg_opclass.dat
***************
*** 44,55 ****
--- 44,57 ----
  { opcmethod => '405', opcname => 'macaddr_ops', opcfamily => '1985', opcintype => '829' },
  { opcmethod => '403', opcname => 'macaddr8_ops', opcfamily => '3371', opcintype => '774' },
  { opcmethod => '405', opcname => 'macaddr8_ops', opcfamily => '3372', opcintype => '774' },
+ 
  # Here's an ugly little hack to save space in the system catalog indexes.
  # btree doesn't ordinarily allow a storage type different from input type;
  # but cstring and name are the same thing except for trailing padding,
  # and we can safely omit that within an index entry.  So we declare the
  # btree opclass for name as using cstring storage type.
  { opcmethod => '403', opcname => 'name_ops', opcfamily => '1986', opcintype => '19', opckeytype => '2275' },
+ 
  { opcmethod => '405', opcname => 'name_ops', opcfamily => '1987', opcintype => '19' },
  { oid => '3125',
    opcmethod => '403', opcname => 'numeric_ops', opcfamily => '1988', opcintype => '1700' },
***************
*** 124,130 ****
--- 126,134 ----
  { opcmethod => '2742', opcname => 'jsonb_path_ops', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
  
  # BRIN operator classes
+ 
  # no brin opclass for bool
+ 
  { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcfamily => '4064', opcintype => '17', opckeytype => '17' },
  { opcmethod => '3580', opcname => 'char_minmax_ops', opcfamily => '4062', opcintype => '18', opckeytype => '18' },
  { opcmethod => '3580', opcname => 'name_minmax_ops', opcfamily => '4065', opcintype => '19', opckeytype => '19' },
***************
*** 152,163 ****
--- 156,172 ----
  { opcmethod => '3580', opcname => 'bit_minmax_ops', opcfamily => '4079', opcintype => '1560', opckeytype => '1560' },
  { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcfamily => '4080', opcintype => '1562', opckeytype => '1562' },
  { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcfamily => '4055', opcintype => '1700', opckeytype => '1700' },
+ 
  # no brin opclass for record, anyarray
+ 
  { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcfamily => '4081', opcintype => '2950', opckeytype => '2950' },
  { opcmethod => '3580', opcname => 'range_inclusion_ops', opcfamily => '4103', opcintype => '3831', opckeytype => '3831' },
  { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcfamily => '4082', opcintype => '3220', opckeytype => '3220' },
+ 
  # no brin opclass for enum, tsvector, tsquery, jsonb
+ 
  { opcmethod => '3580', opcname => 'box_inclusion_ops', opcfamily => '4104', opcintype => '603', opckeytype => '603' },
+ 
  # no brin opclass for the geometric types except box
  
  ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
new file mode 100644
index 1437225..898e2ae
*** a/src/include/catalog/pg_operator.dat
--- b/src/include/catalog/pg_operator.dat
***************
*** 1,7 ****
  # pg_operator.dat
  [
  
! # Note: every entry in pg_operator.h is expected to have a DESCR() comment.
  # If the operator is a deprecated equivalent of some other entry, be sure
  # to comment it as such so that initdb doesn't think it's a preferred name
  # for the underlying function.
--- 1,7 ----
  # pg_operator.dat
  [
  
! # Note: every entry in pg_operator.h is expected to have a 'descr' comment.
  # If the operator is a deprecated equivalent of some other entry, be sure
  # to comment it as such so that initdb doesn't think it's a preferred name
  # for the underlying function.
***************
*** 1581,1586 ****
--- 1581,1587 ----
    oprname => '&&', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_and' },
  { oid => '3681', descr => 'OR-concatenate',
    oprname => '||', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_or' },
+ 
  # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
  { oid => '5005', descr => 'phrase-concatenate',
    oprname => '<->', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => '5003' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
new file mode 100644
index ed5db1e..2aeb6e2
*** a/src/include/catalog/pg_proc.dat
--- b/src/include/catalog/pg_proc.dat
***************
*** 1,14 ****
  # pg_proc.dat
  [
  
! # Note: every entry in pg_proc.h is expected to have a DESCR() comment,
! # except for functions that implement pg_operator.h operators and don't
  # have a good reason to be called directly rather than via the operator.
  # (If you do expect such a function to be used directly, you should
  # duplicate the operator's comment.)  initdb will supply suitable default
  # comments for functions referenced by pg_operator.
  # Try to follow the style of existing functions' comments.
  # Some recommended conventions:
  # "I/O" for typinput, typoutput, typreceive, typsend functions
  # "I/O typmod" for typmodin, typmodout functions
  # "aggregate transition function" for aggtransfn functions, unless
--- 1,16 ----
  # pg_proc.dat
  [
  
! # Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
! # except for functions that implement pg_operator.dat operators and don't
  # have a good reason to be called directly rather than via the operator.
  # (If you do expect such a function to be used directly, you should
  # duplicate the operator's comment.)  initdb will supply suitable default
  # comments for functions referenced by pg_operator.
+ 
  # Try to follow the style of existing functions' comments.
  # Some recommended conventions:
+ 
  # "I/O" for typinput, typoutput, typreceive, typsend functions
  # "I/O typmod" for typmodin, typmodout functions
  # "aggregate transition function" for aggtransfn functions, unless
***************
*** 17,23 ****
  # "convert srctypename to desttypename" for cast functions
  # "less-equal-greater" for B-tree comparison functions
  
! # keep the following ordered by OID so that later changes can be made easier
  
  # OIDS 1 - 99
  
--- 19,25 ----
  # "convert srctypename to desttypename" for cast functions
  # "less-equal-greater" for B-tree comparison functions
  
! # Keep the following ordered by OID so that later changes can be made easier
  
  # OIDS 1 - 99
  
***************
*** 1774,1779 ****
--- 1776,1782 ----
  # OIDs are not unique across system catalogs.  Use the other form instead.
  { oid => '1348', descr => 'deprecated, use two-argument form instead',
    n => 'obj_description', prolang => '14', procost => '100', v => 's', p => 's', rt => '25', at => '26', s => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0' },
+ 
  { oid => '1349', descr => 'print type names of oidvector field',
    n => 'oidvectortypes', v => 's', p => 's', rt => '25', at => '30' },
  
***************
*** 1934,1944 ****
  
  # pclose and popen might better be named close and open, but that crashes initdb.
  # - thomas 97/04/20
- 
  { oid => '1433', descr => 'close path',
    n => 'pclose', p => 's', rt => '602', at => '602', s => 'path_close' },
  { oid => '1434', descr => 'open path',
    n => 'popen', p => 's', rt => '602', at => '602', s => 'path_open' },
  { oid => '1435',
    n => 'path_add', p => 's', rt => '602', at => '602 602' },
  { oid => '1436',
--- 1937,1947 ----
  
  # pclose and popen might better be named close and open, but that crashes initdb.
  # - thomas 97/04/20
  { oid => '1433', descr => 'close path',
    n => 'pclose', p => 's', rt => '602', at => '602', s => 'path_close' },
  { oid => '1434', descr => 'open path',
    n => 'popen', p => 's', rt => '602', at => '602', s => 'path_open' },
+ 
  { oid => '1435',
    n => 'path_add', p => 's', rt => '602', at => '602 602' },
  { oid => '1436',
***************
*** 2730,2735 ****
--- 2733,2739 ----
    n => 'interval_hash_extended', p => 's', rt => '20', at => '1186 20' },
  
  # OID's 1700 - 1799 NUMERIC data type
+ 
  { oid => '1701', descr => 'I/O',
    n => 'numeric_in', p => 's', rt => '1700', at => '2275 26 23' },
  { oid => '1702', descr => 'I/O',
***************
*** 4753,4758 ****
--- 4757,4763 ----
    n => 'bool_anytrue', p => 's', rt => '16', at => '2281' },
  { oid => '2517', descr => 'boolean-and aggregate',
    n => 'bool_and', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
+ 
  # ANY, SOME? These names conflict with subquery operators. See doc.
  { oid => '2518', descr => 'boolean-or aggregate',
    n => 'bool_or', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
***************
*** 4802,4807 ****
--- 4807,4813 ----
  # start time function
  { oid => '2560', descr => 'postmaster start time',
    n => 'pg_postmaster_start_time', v => 's', p => 's', rt => '1184', at => '' },
+ 
  # config reload time function
  { oid => '2034', descr => 'configuration load time',
    n => 'pg_conf_load_time', v => 's', p => 'r', rt => '1184', at => '' },
***************
*** 5658,5663 ****
--- 5664,5670 ----
    n => 'jsonb_pretty', p => 's', rt => '25', at => '3802' },
  { oid => '3579', descr => 'Insert value into a jsonb',
    n => 'jsonb_insert', p => 's', rt => '3802', at => '3802 1009 3802 16' },
+ 
  # txid
  { oid => '2939', descr => 'I/O',
    n => 'txid_snapshot_in', p => 's', rt => '2970', at => '2275' },
***************
*** 6069,6105 ****
  # replication/origin.h
  { oid => '6003', descr => 'create a replication origin',
    n => 'pg_replication_origin_create', v => 'v', rt => '26', at => '25' },
- 
  { oid => '6004', descr => 'drop replication origin identified by its name',
    n => 'pg_replication_origin_drop', v => 'v', rt => '2278', at => '25' },
- 
  { oid => '6005', descr => 'translate the replication origin\'s name to its id',
    n => 'pg_replication_origin_oid', v => 's', p => 's', rt => '26', at => '25' },
- 
  { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
    n => 'pg_replication_origin_session_setup', v => 'v', rt => '2278', at => '25' },
- 
  { oid => '6007', descr => 'teardown configured replication progress tracking',
    n => 'pg_replication_origin_session_reset', v => 'v', rt => '2278', at => '' },
- 
  { oid => '6008', descr => 'is a replication origin configured in this session',
    n => 'pg_replication_origin_session_is_setup', v => 'v', p => 'r', rt => '16', at => '' },
- 
  { oid => '6009', descr => 'get the replication progress of the current session',
    n => 'pg_replication_origin_session_progress', v => 'v', rt => '3220', at => '16' },
- 
  { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
    n => 'pg_replication_origin_xact_setup', v => 'v', p => 'r', rt => '2278', at => '3220 1184' },
- 
  { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
    n => 'pg_replication_origin_xact_reset', v => 'v', p => 'r', rt => '2278', at => '' },
- 
  { oid => '6012', descr => 'advance replication identifier to specific location',
    n => 'pg_replication_origin_advance', v => 'v', rt => '2278', at => '25 3220' },
- 
  { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
    n => 'pg_replication_origin_progress', v => 'v', rt => '3220', at => '25 16' },
- 
  { oid => '6014', descr => 'get progress for all replication origins',
    n => 'pg_show_replication_origin_status', prorows => '100', proisstrict => 'f', proretset => 't', v => 'v', p => 'r', rt => '2249', at => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}' },
  
--- 6076,6101 ----
***************
*** 6122,6141 ****
  # pg_controldata related functions
  { oid => '3441', descr => 'pg_controldata general state information as a function',
    n => 'pg_control_system', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}' },
- 
  { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
    n => 'pg_control_checkpoint', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}' },
- 
  { oid => '3443', descr => 'pg_controldata recovery state information as a function',
    n => 'pg_control_recovery', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}' },
- 
  { oid => '3444', descr => 'pg_controldata init state information as a function',
    n => 'pg_control_init', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}' },
  
  # collation management functions
  { oid => '3445', descr => 'import collations from operating system',
    n => 'pg_import_system_collations', procost => '100', v => 'v', p => 'r', rt => '23', at => '4089' },
- 
  { oid => '3448', descr => 'get actual version of collation from operating system',
    n => 'pg_collation_actual_version', procost => '100', v => 'v', p => 's', rt => '25', at => '26' },
  
--- 6118,6133 ----
***************
*** 6149,6167 ****
  { oid => '5028', descr => 'hash partition CHECK constraint',
    n => 'satisfies_hash_partition', provariadic => '2276', proisstrict => 'f', p => 's', rt => '16', at => '26 23 23 2276', proargmodes => '{i,i,i,v}' },
  
- # Symbolic values for provolatile column: these indicate whether the result
- # of a function is dependent *only* on the values of its explicit arguments,
- # or can change due to outside factors (such as parameter variables or
- # table contents).  NOTE: functions having side-effects, such as setval(),
- # must be labeled volatile to ensure they will not get optimized away,
- # even if the actual return value is not changeable.
- 
- # Symbolic values for proparallel column: these indicate whether a function
- # can be safely be run in a parallel backend, during parallelism but
- # necessarily in the master, or only in non-parallel mode.
- 
- # Symbolic values for proargmodes column.  Note that these must agree with
- # the FunctionParameterMode enum in parsenodes.h; we declare them here to
- # be accessible from either header.
- 
  ]
--- 6141,6144 ----
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
new file mode 100644
index 063b975..cd9a78b
*** a/src/include/catalog/pg_range.dat
--- b/src/include/catalog/pg_range.dat
***************
*** 8,13 ****
  { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
  { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
  
- # prototypes for functions in pg_range.c
- 
  ]
--- 8,11 ----
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
new file mode 100644
index 65a60bd..a94010d
*** a/src/include/catalog/pg_type.dat
--- b/src/include/catalog/pg_type.dat
***************
*** 7,54 ****
  # TypInfo[] in bootstrap.c.
  
  # OIDS 1 - 99
  { oid => '16', descr => 'boolean, \'true\'/\'false\'',
    typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
- 
  { oid => '17', descr => 'variable-length string, binary values escaped',
    typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
- 
  { oid => '18', descr => 'single character',
    typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
- 
  { oid => '19', descr => '63-byte type for storing system identifiers',
    typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
- 
  { oid => '20', descr => '~18 digit integer, 8-byte storage',
    typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
- 
  { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
    typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
- 
  { oid => '22', descr => 'array of int2, used in system tables',
    typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
- 
  { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
    typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
- 
  { oid => '24', descr => 'registered procedure',
    typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
- 
  { oid => '25', descr => 'variable-length string, no limit specified',
    typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
    typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
- 
  { oid => '27', descr => '(block, offset), physical location of tuple',
    typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
- 
  { oid => '28', descr => 'transaction id',
    typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
- 
  { oid => '29', descr => 'command identifier type, sequence in transaction id',
    typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
- 
  { oid => '30', descr => 'array of oids, used in system tables',
    typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
  
--- 7,41 ----
  # TypInfo[] in bootstrap.c.
  
  # OIDS 1 - 99
+ 
  { oid => '16', descr => 'boolean, \'true\'/\'false\'',
    typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
  { oid => '17', descr => 'variable-length string, binary values escaped',
    typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
  { oid => '18', descr => 'single character',
    typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
  { oid => '19', descr => '63-byte type for storing system identifiers',
    typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
  { oid => '20', descr => '~18 digit integer, 8-byte storage',
    typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
  { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
    typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
  { oid => '22', descr => 'array of int2, used in system tables',
    typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
  { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
    typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
  { oid => '24', descr => 'registered procedure',
    typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
  { oid => '25', descr => 'variable-length string, no limit specified',
    typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
  { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
    typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
  { oid => '27', descr => '(block, offset), physical location of tuple',
    typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
  { oid => '28', descr => 'transaction id',
    typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
  { oid => '29', descr => 'command identifier type, sequence in transaction id',
    typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
  { oid => '30', descr => 'array of oids, used in system tables',
    typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
  
***************
*** 65,70 ****
--- 52,58 ----
    typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => '1259', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
  
  # OIDS 100 - 199
+ 
  { oid => '114',
    typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typalign => 'i', typstorage => 'x' },
  { oid => '142', descr => 'XML content',
***************
*** 73,88 ****
    typname => '_xml', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '199',
    typname => '_json', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
- 
  { oid => '194', descr => 'string representing an internal node tree',
    typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '3361', descr => 'multivariate ndistinct coefficients',
    typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '3402', descr => 'multivariate dependencies',
    typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
- 
  { oid => '32', descr => 'internal type for passing CollectedCommand',
    typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' },
  
--- 61,72 ----
***************
*** 98,103 ****
--- 82,88 ----
  # OIDS 500 - 599
  
  # OIDS 600 - 699
+ 
  { oid => '600', descr => 'geometric point \'(x, y)\'',
    typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' },
  { oid => '601', descr => 'geometric line segment \'(pt1,pt2)\'',
***************
*** 108,114 ****
    typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', typdelim => '\073', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typalign => 'd' },
  { oid => '604', descr => 'geometric polygon \'(pt1,...)\'',
    typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typalign => 'd', typstorage => 'x' },
- 
  { oid => '628', descr => 'geometric line',
    typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' },
  { oid => '629',
--- 93,98 ----
***************
*** 128,134 ****
    typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typalign => 'i' },
  { oid => '705',
    typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
- 
  { oid => '718', descr => 'geometric circle \'(center,radius)\'',
    typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' },
  { oid => '719',
--- 112,117 ----
***************
*** 151,156 ****
--- 134,140 ----
  # OIDS 900 - 999
  
  # OIDS 1000 - 1099
+ 
  { oid => '1000',
    typname => '_bool', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '1001',
***************
*** 231,236 ****
--- 215,221 ----
    typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typalign => 'd' },
  
  # OIDS 1100 - 1199
+ 
  { oid => '1114', descr => 'date and time',
    typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typalign => 'd' },
  { oid => '1115',
***************
*** 249,254 ****
--- 234,240 ----
    typname => '_interval', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
  
  # OIDS 1200 - 1299
+ 
  { oid => '1231',
    typname => '_numeric', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '1266', descr => 'time of day with time zone',
***************
*** 257,262 ****
--- 243,249 ----
    typname => '_timetz', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
  
  # OIDS 1500 - 1599
+ 
  { oid => '1560', descr => 'fixed-length bit string',
    typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typalign => 'i', typstorage => 'x' },
  { oid => '1561',
***************
*** 269,305 ****
  # OIDS 1600 - 1699
  
  # OIDS 1700 - 1799
  { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
    typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
- 
  { oid => '1790', descr => 'reference to cursor (portal name)',
    typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
  
  # OIDS 2200 - 2299
  { oid => '2201',
    typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
- 
  { oid => '2202', descr => 'registered procedure (with args)',
    typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
- 
  { oid => '2203', descr => 'registered operator',
    typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
- 
  { oid => '2204', descr => 'registered operator (with args)',
    typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
- 
  { oid => '2205', descr => 'registered class',
    typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
- 
  { oid => '2206', descr => 'registered type',
    typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
- 
  { oid => '4096', descr => 'registered role',
    typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
- 
  { oid => '4089', descr => 'registered namespace',
    typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
- 
  { oid => '2207',
    typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2208',
--- 256,285 ----
  # OIDS 1600 - 1699
  
  # OIDS 1700 - 1799
+ 
  { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
    typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
  { oid => '1790', descr => 'reference to cursor (portal name)',
    typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
  
  # OIDS 2200 - 2299
+ 
  { oid => '2201',
    typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2202', descr => 'registered procedure (with args)',
    typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
  { oid => '2203', descr => 'registered operator',
    typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
  { oid => '2204', descr => 'registered operator (with args)',
    typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
  { oid => '2205', descr => 'registered class',
    typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
  { oid => '2206', descr => 'registered type',
    typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
  { oid => '4096', descr => 'registered role',
    typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
  { oid => '4089', descr => 'registered namespace',
    typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
  { oid => '2207',
    typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '2208',
***************
*** 338,344 ****
    typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' },
  { oid => '3769', descr => 'registered text search dictionary',
    typname => 'regdictionary', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typalign => 'i' },
- 
  { oid => '3643',
    typname => '_tsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
  { oid => '3644',
--- 318,323 ----
***************
*** 395,400 ****
--- 374,380 ----
  # Note: cstring is a borderline case; it is still considered a pseudo-type,
  # but there is now support for it in records and arrays.  Perhaps we should
  # just treat it as a regular base type?
+ 
  { oid => '2249',
    typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
  { oid => '2287',
***************
*** 432,439 ****
  { oid => '3831',
    typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' },
  
- # macros
- 
- # Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
- 
  ]
--- 412,415 ----
0004D_update_distprep_scripts_v2.patchtext/x-patch; charset=US-ASCII; name=0004D_update_distprep_scripts_v2.patchDownload
 src/backend/catalog/Makefile     |  11 +++-
 src/backend/catalog/genbki.pl    | 114 ++++++++++++++++++++++++++++++---------
 src/backend/utils/Gen_fmgrtab.pl |  34 +++++++-----
 src/backend/utils/Makefile       |   2 +-
 src/include/catalog/genbki.h     |   3 ++
 5 files changed, 124 insertions(+), 40 deletions(-)

diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
new file mode 100644
index 30ca509..23858b8
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** POSTGRES_BKI_SRCS = $(addprefix $(top_sr
*** 49,54 ****
--- 49,63 ----
  	toasting.h indexing.h \
      )
  
+ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+ 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+ 	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+ 	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+ 	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+ 	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+ 	pg_ts_template.dat pg_type.dat \
+ 	)
+ 
  # location of Catalog.pm
  catalogdir = $(top_srcdir)/src/backend/catalog
  
*************** schemapg.h: postgres.bki ;
*** 67,73 ****
  # even in distribution tarballs.  So this is cheating a bit, but it
  # will achieve the goal of updating the version number when it
  # changes.
! postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
  
--- 76,82 ----
  # even in distribution tarballs.  So this is cheating a bit, but it
  # will achieve the goal of updating the version number when it
  # changes.
! postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
  
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 1876399..973ffc2
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** my $PG_CATALOG_NAMESPACE =
*** 93,100 ****
    Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
  							 'PG_CATALOG_NAMESPACE');
  
! # Read all the input header files into internal data structures
! my $catalogs = Catalog::Catalogs(@input_files);
  
  # Generate postgres.bki, postgres.description, and postgres.shdescription
  
--- 93,118 ----
    Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
  							 'PG_CATALOG_NAMESPACE');
  
! # We pass .h file names as arguments and then look for matching
! # data files for the data.
! my @datfiles;
! foreach my $header (@input_files)
! {
! 	$header =~ /(.+)\.h$/;
! 	my $datfile = "$1.dat";
! 	if (-e $datfile)
! 	{
! 		push @datfiles, $datfile;
! 	}
! }
! 
! # Read all the files into internal data structures
! my $catalogs     = Catalog::ParseHeader(@input_files);
! my $catalog_data = Catalog::ParseData(@datfiles);
! 
! # Note: Since we have now loaded all the data, we can build lookup
! # tables here. However, if we need default values for a catalog, we
! # need to wait until the full tuples have been built.
  
  # Generate postgres.bki, postgres.description, and postgres.shdescription
  
*************** my @tables_needing_macros;
*** 107,113 ****
  my %regprocoids;
  my @types;
  
! # produce output, one catalog at a time
  foreach my $catname (@{ $catalogs->{names} })
  {
  
--- 125,131 ----
  my %regprocoids;
  my @types;
  
! # Produce output, one catalog at a time.
  foreach my $catname (@{ $catalogs->{names} })
  {
  
*************** foreach my $catname (@{ $catalogs->{name
*** 156,172 ****
  		print $bki "open $catname\n";
  	}
  
! 	if (defined $catalog->{data})
  	{
  
! 		# Ordinary catalog with DATA line(s)
! 		foreach my $row (@{ $catalog->{data} })
  		{
  
! 			# Split line into tokens without interpreting their meaning.
! 			my %bki_values;
! 			@bki_values{@attnames} =
! 			  Catalog::SplitDataLine($row->{bki_values});
  
  			# Perform required substitutions on fields
  			foreach my $column (@$schema)
--- 174,194 ----
  		print $bki "open $catname\n";
  	}
  
! 	if (defined $catalog_data->{$catname})
  	{
  
! 		# Ordinary catalog with a data file
! 		foreach my $row (@{ $catalog_data->{$catname} })
  		{
+ 			my %bki_values = %$row;
  
! 			# We must do the following operations in the order given.
! 			Catalog::ResolveColumnAbbrevs(\%bki_values, $schema);
! 			if ($catname eq 'pg_proc')
! 			{
! 				Catalog::ComputePgProcFields(\%bki_values);
! 			}
! 			Catalog::AddDefaultValues(\%bki_values, $schema, $catname);
  
  			# Perform required substitutions on fields
  			foreach my $column (@$schema)
*************** foreach my $catname (@{ $catalogs->{name
*** 200,206 ****
  				}
  				else
  				{
! 					$regprocoids{ $bki_values{proname} } = $row->{oid};
  				}
  			}
  
--- 222,228 ----
  				}
  				else
  				{
! 					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
  				}
  			}
  
*************** foreach my $catname (@{ $catalogs->{name
*** 208,240 ****
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
- 				$type{oid} = $row->{oid};
  				push @types, \%type;
  			}
  
  			# Write to postgres.bki
! 			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
! 			printf $bki "insert %s( %s )\n", $oid,
! 			  join(' ', @bki_values{@attnames});
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
! 			if (defined $row->{descr})
  			{
! 				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
! 				  $row->{descr};
  			}
! 			if (defined $row->{shdescr})
  			{
! 				printf $shdescr "%s\t%s\t%s\n", $row->{oid}, $catname,
! 				  $row->{shdescr};
  			}
  		}
  	}
  	if ($catname eq 'pg_attribute')
  	{
  
! 		# For pg_attribute.h, we generate DATA entries ourselves.
  		# NB: pg_type.h must come before pg_attribute.h in the input list
  		# of catalog names, since we use info from pg_type.h here.
  		foreach my $table_name (@{ $catalogs->{names} })
--- 230,262 ----
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
  				push @types, \%type;
  			}
  
+ 			# Add quotes where necessary.
+ 			format_bki_row(\%bki_values, $schema);
+ 
  			# Write to postgres.bki
! 			bki_insert(\%bki_values, @attnames);
  
  			# Write comments to postgres.description and
  			# postgres.shdescription
! 			if (defined $bki_values{descr})
  			{
! 				printf $descr "%s\t%s\t0\t%s\n", $bki_values{oid}, $catname,
! 				  $bki_values{descr};
  			}
! 			if (defined $bki_values{shdescr})
  			{
! 				printf $shdescr "%s\t%s\t%s\n", $bki_values{oid}, $catname,
! 				  $bki_values{shdescr};
  			}
  		}
  	}
  	if ($catname eq 'pg_attribute')
  	{
  
! 		# For pg_attribute.h, we generate data entries ourselves.
  		# NB: pg_type.h must come before pg_attribute.h in the input list
  		# of catalog names, since we use info from pg_type.h here.
  		foreach my $table_name (@{ $catalogs->{names} })
*************** foreach my $catname (@{ $catalogs->{name
*** 317,328 ****
  # (i.e., not contained in a header with a CATALOG() statement) comes here
  
  # Write out declare toast/index statements
! foreach my $declaration (@{ $catalogs->{toasting}->{data} })
  {
  	print $bki $declaration;
  }
  
! foreach my $declaration (@{ $catalogs->{indexing}->{data} })
  {
  	print $bki $declaration;
  }
--- 339,350 ----
  # (i.e., not contained in a header with a CATALOG() statement) comes here
  
  # Write out declare toast/index statements
! foreach my $declaration (@{ $catalogs->{toasting} })
  {
  	print $bki $declaration;
  }
  
! foreach my $declaration (@{ $catalogs->{indexing} })
  {
  	print $bki $declaration;
  }
*************** exit 0;
*** 380,385 ****
--- 402,449 ----
  
  #################### Subroutines ########################
  
+ # Supply quoting for a normal bki row.
+ # This allows us to keep most double quotes
+ # out of the catalog data files for readability.
+ sub format_bki_row
+ {
+ 	my $row    = shift;
+ 	my $schema = shift;
+ 
+ 	foreach my $column (@$schema)
+ 	{
+ 		my $attname = $column->{name};
+ 		my $atttype = $column->{type};
+ 
+ 		if
+ 		(
+ 			length($row->{$attname}) == 0
+ 
+ 			# Whitespace
+ 			or $row->{$attname} =~ /\s/
+ 
+ 			# Quote strings that have special characters
+ 			# except for certain cases. See bootscanner.l
+ 			or (    $row->{$attname} =~ /\W/
+ 				and $row->{$attname} !~ /^\\\d{3}$/  # octal
+ 				and $row->{$attname} !~ /^-\d*$/)    # '-' or '-1'
+ 
+ 			# XXX Not needed, but keeps the .bki diff down to a reasonable
+ 			# size during review
+ 			or $attname eq 'oprname'    # Operator names
+ 			or $atttype eq 'oidvector'  # Arrays etc.
+ 			or $atttype eq 'int2vector'
+ 			or $atttype =~ /\[\]$/
+ 		)
+ 		{
+ 			if ($row->{$attname} ne '_null_' and $row->{$attname} !~ /^"([^"])*"$/)
+ 			{
+ 				$row->{$attname} = q|"| . $row->{$attname} . q|"|;
+ 			}
+ 		}
+ 	}
+ }
+ 
  
  # Given the schema of pg_attribute, generate an entry for it using information
  # about the attribute it describes.  Any value that is not handled here
*************** sub emit_pgattr_row
*** 447,453 ****
  	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
! # Write a pg_attribute entry to postgres.bki
  sub bki_insert
  {
  	my $row        = shift;
--- 511,517 ----
  	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
! # Write an entry to postgres.bki
  sub bki_insert
  {
  	my $row        = shift;
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
new file mode 100644
index a51a755..b9a6a11
*** a/src/backend/utils/Gen_fmgrtab.pl
--- b/src/backend/utils/Gen_fmgrtab.pl
***************
*** 3,9 ****
  #
  # Gen_fmgrtab.pl
  #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
--- 3,9 ----
  #
  # Gen_fmgrtab.pl
  #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
! #    from pg_proc.h and pg_proc.dat
  #
  # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  # Portions Copyright (c) 1994, Regents of the University of California
*************** if ($output_path ne '' && substr($output
*** 55,89 ****
  die "No input files.\n"                                     if !$infile;
  die "No include path; you must specify -I at least once.\n" if !@include_path;
  
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
  my $INTERNALlanguageId =
  	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
! # Read all the data from the include/catalog files.
! my $catalogs = Catalog::Catalogs($infile);
  
  # Collect the raw data from pg_proc.h.
  my @fmgr = ();
- my @attnames;
- foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
- {
- 	push @attnames, $column->{name};
- }
  
! my $data = $catalogs->{pg_proc}->{data};
  foreach my $row (@$data)
  {
  
! 	# Split line into tokens without interpreting their meaning.
! 	my %bki_values;
! 	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
  
  	# Select out just the rows for internal-language procedures.
  	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
! 	  { oid    => $row->{oid},
  		strict => $bki_values{proisstrict},
  		retset => $bki_values{proretset},
  		nargs  => $bki_values{pronargs},
--- 55,94 ----
  die "No input files.\n"                                     if !$infile;
  die "No include path; you must specify -I at least once.\n" if !@include_path;
  
+ # We pass the pg_proc.h path as an argument and then look for a matching
+ # data file.
+ $infile =~ /(.+)\.h$/;
+ my $datfile = "$1.dat";
+ die "No data files.\n" if ! -e $datfile;
+ 
  my $FirstBootstrapObjectId =
  	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
  my $INTERNALlanguageId =
  	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
  
! # Read all the files into internal data structures
! my $catalogs     = Catalog::ParseHeader($infile);
! my $catalog_data = Catalog::ParseData($datfile);
  
  # Collect the raw data from pg_proc.h.
  my @fmgr = ();
  
! my $schema  = $catalogs->{pg_proc}->{columns};
! my $data    = $catalog_data->{pg_proc};
  foreach my $row (@$data)
  {
+ 	my %bki_values = %$row;
  
! 	# We must do the following operations in the order given.
! 	Catalog::ResolveColumnAbbrevs(\%bki_values, $schema);
! 	Catalog::ComputePgProcFields(\%bki_values);
! 	Catalog::AddDefaultValues(\%bki_values, $schema, 'pg_proc');
  
  	# Select out just the rows for internal-language procedures.
  	next if $bki_values{prolang} ne $INTERNALlanguageId;
  
  	push @fmgr,
! 	  { oid    => $bki_values{oid},
  		strict => $bki_values{proisstrict},
  		retset => $bki_values{proretset},
  		nargs  => $bki_values{pronargs},
*************** qq|/*-----------------------------------
*** 122,127 ****
--- 127,133 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
*************** qq|/*-----------------------------------
*** 157,162 ****
--- 163,169 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
*************** qq|/*-----------------------------------
*** 185,190 ****
--- 192,198 ----
   *
   *	It has been GENERATED by $0
   *	from $infile
+  *	and  $datfile
   *
   *-------------------------------------------------------------------------
   */
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
new file mode 100644
index efb8b53..8ccfc3b
*** a/src/backend/utils/Makefile
--- b/src/backend/utils/Makefile
*************** $(SUBDIRS:%=%-recursive): fmgroids.h fmg
*** 24,30 ****
  fmgrprotos.h: fmgroids.h ;
  fmgroids.h: fmgrtab.c ;
  
! fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
  	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
  
  errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
--- 24,30 ----
  fmgrprotos.h: fmgroids.h ;
  fmgroids.h: fmgrtab.c ;
  
! fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h $(top_srcdir)/src/include/catalog/pg_proc.dat
  	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
  
  errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
new file mode 100644
index 71fc579..c3ffa29
*** a/src/include/catalog/genbki.h
--- b/src/include/catalog/genbki.h
***************
*** 34,39 ****
--- 34,42 ----
  /* Specifies a default value for a catalog field */
  #define BKI_DEFAULT(value)
  
+ /* Specifies an abbreviated label for a column name */
+ #define BKI_ABBREV(abb)
+ 
  /*
   * This is never defined; it's here only for documentation.
   *
0005_gut_headers_v2.patch.tar.gzapplication/x-gzip; name=0005_gut_headers_v2.patch.tar.gzDownload
�[�0Z��iw�F�(z��~Zsn[��4�Ll���,�e��%�����><THV�X��*j������	d�\���%�B0������"�8��.ng�M�lv�����u}X\�����q��>�"K��8f,+�4��&<����Q�d<)�G���7�C�Q������|��_�~�J�E�����f��Y6_/�C��^�����jsqr���������"^_�����>4&2 &U�D���S�F�^���=J�"D�����ml`�+��c�es�G%�����fDAQ�;o�gW������W��BF��J��0���%�q]�����:������a����x7���^mL�	�i����gIZ�\�K�:���j����l�]7g��p��_T0��f}8�k�i���u�7��,��b���W�Z����Xs���y�lg�B..�]G�/j���l������Y]l�>�>���kb,=�o���k��%U�`>�fJ�-[|���������j�:�]�V���V���u����/���s���E����Y6��

|����T������j���b�'�q{=������J������n���`\�W�.k{}^_�����MR�j���a�M�Y���W����\]��}:��Y���!�+�����������(A�x�k���u#����F�t������o������Mu��/��r���!��y�������V������kO��d���J���
��f��j����(q�����b���!�]���r�����j1��>�7���B��:'����VE�e��Wn@J���9:�T�a��o<����
�+Z\b�_E	��j�a������(NY-�u#����ru~_�Q��g85�<�4H��j�l�]�s���5�%�X~rr����.}��W^������~e��0��m����2z&���\��o����7��I��x!��(����3�*zw����b��G����C����~j���p�D�����
���w��h���8����y�;�ts
p�>���rAK�.����������}
���j�D��>������/�=��	��GP��e�X��#�h�=��,.����z�z����tJ�v�������5vr}��o{��"�[�	�j7���I���"^$<���G��vz���C����lPWdN�|���-��,"�h�=]u�kj�n��E���CK�a'��W����
kBz�>}���������'w[\6���>T��F���x����p��(��:�0�y��/.��zDX��G��O�G��-�4��F_�cz$L��#��2���>���o_����������|:����1
�����g����w���yt�?_
D>F%�XoU���lh��<��Pc�_�����W2/�wFO ���&���gtV/7W����
�hqv�]����
�=R ��o��{qk��G���������h��Y���������f�>����_��X�U$�I1��Wn�xF��G���$�hu��|�~<������<���E�T���Z���5}0Y��j�c�=������Ng�S�b��'�T���g0IZF�� ��T����Fm�J��Z��_T%�j��|35����x��LvK�u����4�2�f��^k&*G����V�#��*+��i'e1k?@�h��#\�/�lG�����w����u�����������Cj�����o&��.��i��I"e����sw�����=���� a���f� [�EL��-���Dk�}��T��4��Z���3��G��v���"�G���3Z���
\�������N$��A2qO�'�������]�p�W��qG�d�#���T����;%����.������y��Y
���i<[���y�a<�U:��	��p�����c� �|�J�e��q��:1�\Q�S�X���r��a[��d�&w�����Nc*��`gW���-���Pe:������U�����=>�e������ogz��������{��I���w2��?p1�b��j��mi����Z/��C+�4�����La^��M}�>����(@9M�����H5)�������
g.<���x������B��f`6S�����u��=s���Y�N3�u�	��nW2O�~�`��)
z~���w_���q�!6����J������:���B	��2��q��iR�W�A���)��\�����v��iS�3���Bfe^9K,c��f<�cm�X�������'��.���vj��� �`*S�;�"��4�i69�c\�w&O���c��xj���9�V�Z��I�����1��o��b\���<V����<��������O<q^69�cU�l�'�8/���X����g�H/��������5��c�tz���^��z��+�K'G{�
�=�*��{�sW��N��d(��v�F���tr���.�3�M�����x��F��k|�{������/�">���#O��N��2=�38���Yg����TQ����]$P�&�}E��5�x��rz��q�i[�C_��#���fs��x����,���'-��^{������!��F�����_�^�L�;�2����w��~&{��-y�������#������u��[�Q��e�����Vt:>w\�,�v����Q)N�CU(s�i0M�{KV\+��U)�wZ�*�vB��-���>p��e�Q�t��Fo-W��������[�iKcm������X`���:Nz���2���
��!V�G9O��$����<��#���;$�z�f�s��H�Z�`�t����9a?������_\������`�x�����-�������r�?l�d��^o�������9�i{��%�O���W���_��J���������S��"��A�/#�/������a�l��z)�:���]������4s;'M!?�{���q\���0�E�_��2��g�V/�
U9��=5�PG�������PE��\��+��Y�}����:5�����DS���!G�� w� !U����f>5!��}���C��<�/#V��Ywo�y�v`��]��w|�soI�������,�-������xo�?������x�E�Fd���q��
�~!���{�q���.>����1�@�z�)�5��0-U����z�R[H�URY�C*[?��_���IjW3]�/���Jk=���Y=Q�O\b�X�Q�M���~�L�>��2%Az�yeJd��_|�9eba2}�9e�2������sZo���S�<@(���h�?�\�[���[P��d*Cd���&���/����!�\t���v���cL��/�;��c_&�9���9��,@��g��,Y���:��z}��4�~�rF�sE����q�����v7���/���)Qu��_^K�~W��}C;9���X�����A�n_���ZO��v�������D:�Mw��(��g����uK�zy��<���.!�Q��_�I�Sm?�^��[��lD0��G��d��)�jS�iH�����E4��W���T�T3���v��i������ ��x�/��?�~a��4�����@g����0�(s�f�e����&��K!�;� ������2����jsa�C{��q���0Y��M=.��d�g#"
��l�X�oG����R!�!M�����*��Y��#F2
�&����`�RMH|>��4���42��dT'�VIZ�o�N�#J��B'����5��}s� �����p�p�W<tN���Hg�(Qt0Y��2�@�8�V��l��/��3C����OV`U�`0iZ;e#%��q~{9�ir��i�_�rZ�\����j��f��V5c�soJ)�-��]����6�K��1��r����.������?y����`_����8��qoBT�_�Q�8��?R����O����,W��,��~~����7����;=��M��Q��4(��3��'er�&����d��qq^{R�^ys�^����I@��+[^������Bs�"�D�����e����'�-<��q�6"��������N ���"��f	������O���juqy�l~:9��1k���*����U��_�J���,:+��B?����~-�9S�b��q���E��GW��r�����d��s�^=K"kd������F��A~-�vM���%�O5���;}������c�1�u%��������?�!u�m��!��z9���d�����,�{����c6��(���-�f�n��|������o�)�@y�cZ�T�� ��E��_���R�C���1��_S!��������R�}����2fYI��;,)�[t;_o?Et��d���7/^~�4�7]���H�>���u�Yq�O���3G��wu��|�L���IV��a�������B��Y~�YHgH�=��r��C�<jh�J
�U��;��.i{-:�$���Zh?������7���=.��vw$�f����������+Ae.�Z
9	L�H^��{�(�JGf=f	���)x#f��U�{�x,�7�S���4
gH���D���<6�1}�n���e�4�=�`����gB<gD=PuL(���2X���������y`���
��C���OC���/B�3oZ���8m�)��B���4������h����f��E3I-�;=S#c�����I(�h&���>���fR�*��L�j&,�.D#)�Phj"!���R�4'��G�5�b�����Xi�'!~6Vj�I����xb��ROX�E�������EH-��}|H�����c+C���,X(�p�E��
�F��3V�ob@8O��7������y�`��<*|�mW�~@�'YV]J?��<��h���<q�O
��"�uw���3�-��'�����$�uPB,�|��e�R�
�XYD��\�w�����M'���o�h|�R%@��	��s�'���P���5p2�6C
����N��s�Rh�,h(#N:X<M\�|��|���t��7�{�Hs�xMG ��A]��������n)	�����p���)	�����p���)j�b3n�$�j�"H3I�����:�L����K^�%i��<�f��vGT���U�6�C��f|��!l�7�1���oD9#������!��p�Q�GX��������iEQ
�u�`]����wmz��� <����]�8����t�4Dv��45���@5pj<y�6J����9��u��.����;pR�{�Aux"�\���w����B:�y*���(���LM�T�TP�@q7�J�n�&J&Pbw�#=J*�pA?H��\�	:x*������w�(����*w
du�LP��
��{���QIB�;�y��9Sh"��m:���\ �5�#d��q1	��vF��%��:��9�d�e*��P�S�}���3�}�����"����QD����Z����.�OOI��8��P=!J*PB��(L�8[x��P=!J&P��z:����Ri��vz(BSn7�C�r7�������P��z�e����QkL��g�PR���Z&PT��p�`�-J&Px�1y��U~)eE@e�(���S�}aE���>�����}�P����;�7Q��e�����
��jV�-c��E�%���(�@)'�7��JMIta�_�RS���F�)	PBZ\�)	PB����D���O�+�W��Qi��2T����!vT-����hq����	�+����JV�;�!����w��
V9���r�7�|8����0@����7����,��I�{�������p��=���d�7	 �
r�n�D ��Z�!�,s�(�qR��*��	W�p��qM<p2����j�����Ra��|#���s��G��4����3�����3�����y�uU/��r��6�2��EZJ=��F*0<:�1���hH����#a�)��aH�p���B�0��}�a��%z�	W�0��p���02���������� ��������CO����1��8Wi{�xb�B��!�'�<�Y��MK�b���\�����fl���c�&8�Fl�p��Y�7q2�����n�v%�����~�����_4i&w���Q)UJ�����5�U3w04_\z`H-�c�F�uG�=a*�{��D����{(�PJ����"�������95�B*���
����=�I�+��0��j�.p��O�8��)���<\��6.eU��dc��8^��[�xjZ����,q�^��z������TSV�R�����#T�z�`����)8BU���z8B]��q�j�i>���UL/�����d"���)��@���{�a pB�����g�~���Wy-�0z�����WL������C�
���JM��\8�����9��I<����4'��^���9p�!��f�2!xJ�#��f���BF�!�H��T
������7����}����4�TrEx���>�XH+\APE,����]���|{9i��*�F^�8����
�b�(4yV9c�>
\\�g}�L�$AZZ]�_������������������Wv�������(�@��Jn
����
��;���X�	{r6�>������Q�=9�vE�S�����{�5����/�������z��3�F���NG�CI�KK}&P���C����>J&PlZ�i��G6Jt��F���aL)�
e�2���)�n 5Fd��������������K�M��d���� �v�p$w���c���(��4�^�l8U���h�`-T���N���[t�N��!����8
�������9�4L|u:���o�%Y`q��&
�����<�@���`����$��t�����Ji#�X�����q�-�I����e�m^�#��pF?AT��gL,D�����ODms���b���ri@���5����-�;hUc�����V����q������!���x��t��
(QZd\���Y����vO���};i����ng).�@��C�[���/��tv��Dc��r�]�j!QD���Y6��6��)��|���D��R��yrx	��a{��X������ �oh'U1��b�Q"UN���������Q��f8���C�(�>����%��v�>F%'���M�1�I�M��gP�U��r0�\��'�L���t��K�4���W(k��@[�<!'�*� �2�$�"�����1 P��0��&b;P1���ZS8
�@�|
qR57�h�I���-�Z�u��^L�-c��6�]v�� Su�Z��/c�]�9�$���zh�Y���>�,�FY"JA���H{H�+q���1p%6��f.0�~�]]0�~�����z�;����v�����81��"�Vz���@~��8��W�v�#�_+=>AG �Vz��� �������y<��@~��xNA��	�����1P�_��[��&T��k���Z��e�e����~��d��-����F9��
1�d�G�a���XCdzI<�_������u�L`x�P���T���c�S�:F)0<u�c���kNF
�4�K<��@������8|��@��c�`�q
�5��F&�Y��-x6��G���"K)H�$$&��IH\E��Vh1��`j?{�YFCr��8��'s����\{?W��	>���|\���L��-'Sr�%�1%���W/Q�~$'J�rN
,����V���M�}�T�8�����kG��s����	����R�)*�4��T���cK���@��8]G[ ��}m����M�s9!���0��)�[}�8Bgz�������8�
���p�=��(�����v�ut��������LH�c"c�(�����y��Ye}�T�8�����s�v�g5�q2�c�(<h�����R�%C�SM��n3���;'�8R���t�#t�����;��8��q���B����N)p\������	�����RKe+���R����^��f�x�dc3B�X}\�>��
�PsBx�I�p5+�!f$3���a���� �����O�j>Y��t������B���;���2#�N���R��#�)w�������!������
D��"t����A�U+"y%��f��17K)Y���=�I�+��0���
p��qE&�L���7��!@K���HJ?1@�@47���3����
*�R��$18�<�UN��e���������]�"��#~�����a�v5@j��)Hm6���� ����6����bS��X,��Ma�Ec����l�{��%u�d4�MCVYz(�@�P�` �'�p�%���	�|J.P�	(�@q��=�R�P�"t8
�:D��d��qzJ*P�����G�+�bY��C�3|����h�f(B%�9��@ph
�D 8G�B*��_�	�8�@��Q,XI)��b�:�	>\E�[�}�����S���������c����YO0Fk>���c���,(A�P0���`eDC�C��E����������	w���?Z�#?��YD�
��q�l���{�3�X��*�`1��M��+��`e�W���T�7>��(�a�����Y$��$��R��N��^MB�����),fWn��������.l�PA�RO�W��%�3�����O�R��U��G��P���f�Xi�'�z��R���W�),om�X\ay����),�j;�D���eV��&�0Q./z����I�����;,���	Yk���6�)X�6�$^�m�(V��^�7E�"K�#���3��p�hV�������n�����HV���1��	X�����A�Rm$�P�m��=����O�|�F2��c)�����m���b�6��	(m	sh�S�Gi�HX�2Si��dz?a~�	X�UL��Z�v�O�j�bB�1�������&��I	�sx������C1�/�4yb*O�����shXml�/��%����P���_oV�4��g�ZZ"wP�.�[���>Z�R�I�����/�@S�R
�G�:�R�0���� P�J���U�������v�)XRA��wW��
��2��P��������}G_��By<o��G���1K�?����Q��+K������Q�����$S��v�)�h;�m���d�6��N��D�
�k
���?����6��Ki�T�XJ����j��?���TK�Nu,�R��nK��b�6�&/�e8y���Q���T��#qy�O

Kz��_�R��2K�R��?`��T�7����$Oh[��f-����?��c)%����*�;6������#:V�$�D��;aQ�a�
���i��5�Ta�[����_�WX~K��2�5����F�r�	����C��@2��r�Ta�$7���������/V2�2����q5�bG����:���o������4,eG�hR�Rv������(�!%�Y�o�����������Z��$
����v�V��&�J�P�h)W�|�o��
m���?\����B1�
����p��B@����k�������\(��9�"?�������o����d�����^�CTQ��CT�i��4Q������
O���N�����	~;�R����,��Ld�����2�Q6S���03�B��f��\!��zL�L!�g�:D��Y�2���*�)Z�w		�)Z�7
	��e��$����������B���)D�<������D�����zI��������������W�{���L������ot�����'�!�f��(G�9x
�4D����h>�����5+��z�J9�8��������'b�{��������9�2���=�\�������P�S�������S�~�9��ETQ9��u6Q9���TQ9���6Q9d>��fE�%NCL�$Q�fEw'NC�
q��v���QtM��L����4�,�D3`�DTz�g5��&�MD����`Q�m��[|c��h��5��d�GL���LD��vg"r���;1S���W���a�z!�U��m1U��������l"r������Bt
�����O������X���B�����6"���=D��?E�CT���K�=D�#i�.���y7-m����97��$=Dek-�DT��
LDek���=Dek�c"��Z��v?�9S������b���i"2��UX�+D��z��Bt������Oz���[����;>`�
�?[�������'0�����f�0���=�Ba�:�f�0�S�-fw��4��E}�I+�]�����n��c������TY�w�3�T���0[�s��m��|(7��iy�;?|-�DL�����L!�����������Bt;�����������N��j����Ft�v
�Zh�Sr��������Ft�v
Z��������Ft�v
Z���M������;�l�%�B�T��5��8�hj�`�1��~h���f�<��7�hq����h�=D��Q��z���fs����<����aW��5aQ�Yb"���]���������ru>�@����������wD�����*�~�@���D������kjl���E}������Q�W�����2�� m���j��.L��s�H��S�E������|y���G_}���'I������h��K#�5���>$ _�zw����0�l.�����Z�\���b��>D��^��O��(.V5X�����j}U�}���WD�j�K�~����t����QU.T�>��*��������������"�A��esU������U��y�G��-H��4�
����h���K��'�[m��)&�l��<���
a0�?$�|���fuX�k��ZC�=�Z:3����E�vF����6d�����T\��.�`Ya�����dUn���N0'�8X�@�3U!�0g�
T\4!N'U��`H
�q0���W�����<=�jXWu�@�w�,j�@�|w���4:h)@m�(@��4�Y(���*4�2K�}���5K��&�� k��ZZLT�*��Wo��R�e��6f�� 	:n+$��M�JF'����e�U�$���������&j�����T'�)yi��
�C	�
z����KO���n�����l�%`�@7[�����C��u��+/�+���8F�y�	��n-��x6{������`�=,YL{g[iq�=@t��M���y�Zi�*a������4M�o*�j��e�����Z�������2����xlC5�D�,�Y����:�Jt��F���Q����D����7���������Y���4������_
Mb\O#����
\������=����i^�
���<-���XZX�q��1�
�,���X��+,J�9�[�`�}�,Kl�t��1Y��u��������'�xC�	�e�xc$m=<�����,����H.mV�"�aM�J�v�@�&���Mb���A����K��\n��5�4����o�����	4�q�%���F�%Z�Cb6.k�k^������%�_�m�<��V�����r������50����<���F���V����{�V�d���!���Z��{�,4M��"������F: ����~-�v���V�JZ���UCj��A���[����!�?�t@�VZ��;����W������z�z��c��Dg<r3n3���]`��`axU.��-���][�4�8�*��%�y����1���M�^]n��
04OK8i��ksg�3�~���Xf����w�t@'E�.^E�I�
h��n��b^k�3���:#��2�T�-�2^��,��>,�K:����q��&f{���,���)�Yf�$�%d^��,��]�|�0M;�N��a�n����&���\!��g&$fm��H��d��~��+��s��Z�����BZX��� ���"--��s�Y��u�V}na�jip��UK�{��Z��
�����U"��W��t���Z]e7�hu����5��%���6�@��UN��O���?���D���.-��u��d^����y='hi���.�S� k�"����a|X��,~XFsX�m��Y�9���@XK���a
t�� X�Ye�CufY��f(��l}X��eh;r��Z�bx-+�����v���\��2��9����u`k�O���J�+3!S����!�-�1 3����	�#���L�!mS�d��T���et���M����M���5�r�Z�Rk�����H����?�
�a�-�����Z���G���>,����c���&�����v��a�Z���a-��}�a-;7�w��}�T4k�_�f����R��C�bX4�TE��_��#�1nY���Y�ix+<�x��eD����� �G_[T�.x`�
�!--��di�
H������������\�6+6 ���Wo{�x�$^�`������{�����X"���AR�l������d��EW��+
��p��	�Z����<�L(�n"��1{�B���L,�w#�,��#� S���$C��:�Ar���d����������c-�[���)A�LS�di3M��*V�� �����H�Az�� =�k�6��7vP*~�=�k��5H���Mvy�������9��g��Tt
/pH�tH�tH�4d�L��L��L��L��d�r�`9Y���/�8	Vi��$X�I�J�`M�M4	6�$�D���O��>	��dJ��`QY��,XT6*�2��Yp����g�U���nJ,�)���d��\�t�Wx=�k��5H����Ws%���������5HO��Az:d
�&�+E>�BM�Q��]����A�D��-��iu:Jf����.B�]�����������b{��b'S�N���L;����F�L1�d��$6#	N�Nd��1�����������]O�s��f���W�S�S�VOb����h���(&��(&��(&��(����:���wY�������e��G��$�b�pF���:1�=ub{���#,w�(�����_xf�����-Sr}`N��y�p�2��mY`�9������V�t�����amF��|�a{�����	l���e����3�n�+�	�)�	�)�	l+���U����}�
L`����L`�0�.��\N���"s9Af�H*3��L��2���[�'�����r���)�.��t9���)&]N1�r�y�S���b�4��p�;��;��;�Up�yt��2��G,s`3���el��c����G�ft^�����������&�7rIL�GSft>�WK&���L`O-���b9��b��e]���	���S;&���4�x�{F�=�����v�l]��eW��Z�$`"��10�c`&��(���xzdFGH|Ub{���T�	�X�"��B3���9�4�=�K�3�4�=���������g��7���!0G���)� ��N�L����	�1�a"���b��L��t��	�1
�c&��4z2�i���q:���`�����g]���<��H�����es�L�@\��eQ������Y7�'S`K���*���$GI�+�%}���.������#[`�a��7��g��e�gy]�''���/��o�������
\�������0������ZVL�G5)���+�?��Y*�&4����G��iMi����F���o�I�j-�$�^m���������u����q�����6
��7����P�Hi0o*=���.����y��;�����,2~~~r���
�x��I���2L��x
��o�#L!��j������e��8o����4��*��:Q<�9A��7;��C�y����I������a�A�!�T��wa4qu��"m)�	�l�]_�����n9�%��}�^-o6��z�$��M�D�z�����v�z�D�����X�������u�]*]��)UA�����~�h��L��@�%������]s�.:l�|�#��� |sA����t5���G��~���o�������1i�j������
"Z)�=#�>~��������'������{������`�?N����z}&?p��U�7�^�{�����go���������y����t�cCfP%W[��v�8:&��7�oO���O��;{�����^�|�����La6v\��FvUq�o������>��������=}�����oQn� H^�~��{��-���.$ody�_���C=��wdz�����g��~��)�����8V�W�z}6�?5��]��x����g�<}�_�/�SC&"�������^|����)��V�W�-������L����T�)�Y���%�cW�-a��cK
���nE��{�:���z8��C���l�L�Xe��Q#�F����
-����HC�9_n���������K����M��n�8D�-���D�!����A����kU�	�M��\b��Z�~�l?�I�����|� g���O�e�>C�J���H��Rp�����j��O����������Q:���������]�@�$�����������j����\~�G��K�;AX$v�{�14��-���F�'���:��g8��G5���Ys��i�2v���f~Y�`pI�t��$�ebJft@�������,w����v�VhG����
�Dm0Wm0!4�!����Z�8
���<��)U,����HK����rCI���I�����X���?Q�>(�%��-W+�]�Di?�,�($�(d���`�'���j�

9r��������2���e-�`�(�0���y�A=E/5�{��Z�M��C��������@ A����"j,M
����@��������A�1���m����A��{�D�2���}t���j[�W�����Q��K�+<=���Q��g�3�j��-�$R�vG<N����j��w0����zq���0D�(�<]���
%���*���G�����o|���?�o�G���0��o5-A�'�(RhB�{�l]���I@���\�8'_���nb
�ewb�]G���t��#J����.tT�C)���261��U��I����usQ/H�W!m���z
��(�����o6����]9�.w��{zE&`����8L.���vT�p�H�v��^<@�������"���<��<JS:�`gF"������<�������N�5&d^�!�RZ���,\(��W���MF@x%�:
��So#���:
�����JZ���P-d!Z�B�&�_Y���#�P-x;+����0��Z��"V0��!D���O��G�By� �B�@�����^���Otf���@��Z (�2��q�u�s�C����2Bi�H�4*�y4,�G��oW<.=U��Z(�v%�y�(�W��]i����N]���-���nd�����yT�	%����+��	b�,@|L���*�,���2��N
 &(Y�*��Jr�zt�DEYG��b>��5C5��P�_E'��u�������x���:�b��G�Ny�s-�,sT&[p�a�]6gt�����j:	�h�sW��y��ra�;>f��%�W0*�����Vn���Hp�j9��j��j�\7�e�Y���{�S��`fLx�o��o�o������
Z���C��mI�O�1����N
'S����TvL�����I�SL��h7�7s�lx���,���V���V�b�UVBbu����)&w��V
������_N���V�������������F/������������.Ik�%�%0z.h��v���X�$9!9p�2���+7�����5�B���@	Jn�|gHI����Us�WVm�"�����+��@%3������� T���
,ottpd�w�B��x��"���5���Z8xL-.���*E���.����%�rh �\<q�P��tH/�8��������Y�)����ka�_�R�4g�Q��a"@���/O���:�g�oK)q�N��H��r�`���4�����Jiw�.o���`>o������� �b%{�'��K�m&@'�������$CZC-�?��������=�v���F�h6�w�h��_��TR�Al@�����B�G7������j��������?n_�-���e}�q-��}���W�2Q�*�����{c����9���B�yU�����������H,�Q����r�5���]���W�����VX��(z_�opw��q��r������l�����n.pS�e�JU����j!������Q<��/�/�e�/�f��/���V����f����N�n�N�0j��:{�����Xb�U�����.���#���<P��L���
c+�D
���T��j,���f���o�}���i�j�������JmO��d��:,���*9(���6��Ki���-m>���B��;*�����4L_n0��4L_�W_�G_�7����������Cj���&x�����<wMX�W.j�
�U����.�r� ��;�C��:��U�CS����#{���i��b6���������,��O�P������(/��Q� j|����o�u�����L�/�vm����m���}^��������������W���%��*�g�u;��G�����I+*hw��~&S�Gx��m'7��h{M�K]po����!�mwt�xZP��/"�u9>�Q�ev2B���u�	�JAM��G����BI����<u�����W�������c�[�����A
��(�Sq��b��=�S����������
d�
���|\A|�]�\m�m�����j�?�D[����}M�����>����>���qB4�f�Aj}2?�������h?*�y��a-���f���|�F���_?����<�s�"����u��8��<���N�>{����AW�JSIi���J��#Q��_�Y�,���B�����?�~2�jS�8�W]����U�S���9���^���>��{��%>�b�v���r��!�G6��F1�u����V��o�u,Qt����W�'����%�����\�~����>9���9/=G�u����_������:��,����:��wQ�g��j�O����(,��~��������Q����?G<��j����o�GE?�����3`�z�3`=j%A�6<S��������p��=���La$�������z�����b<�	0�+�	�����?�IAx�~:�!�D���T�\�.:��~���/�=}s&�9�b��
���?�f��m���7��/_��.�� ���r�q���\�@��Y�,ON���<N<9e���n@��� P��9��#�u|N��*m��)rPWe�	~��6�lR��# �uG������i�#L�q�k�x4I�Yd��3&Q#5!C<����Y^bR�/��w���f���������_"��p>B��BPub��~Z(����Y���ix>��A�F���~:������o�'D���Q�M��WGE�p>���u��S!`�v>�y�Q�����	�W/�|��-�@�44�qB�;���B��H��|Q���$�y�p�����!hpwp����_��+Pe��Rd�,`D��\���/"�u�hf����[/��VJ�K��q�l��&rpt����o_�|=�^
�N�_������U�+�?K�$��1'��;5���IE�"l�J��9�z'����Z�tzb�P�����S-�4h/��d��#�Qi�����r9�.������^q���>vz������
��6�����,�!�D�����e�������z��������_J��;I�D��e	��]�G��w����&�Z]\������������QRx������Yd(��d�;��kt=,���q�
1���b6��r]_l42����g�l8U
��a+�(�_l�t�����Ae�Q�Mpv��Ag�tt:�s��������4����g�e�=v:8����"���>�+�����3r+]q�0K���(���kX�}����"���f|��"��N���lm��`8�H����6��p'"o
�$%\���2��O�-���t��G��j���R�\z�C6�o(K��Z�������	<a
H�r;%��G�|Y����|9�������x�vE�.c<E�sv@�#<�*~�'��EEz�5
0�$F��
���I�"��N��m�:�����Q���U�:��F���6������_Ks�������z2�����U
�z���|��t�����+;�����M����D4zZ�W4�C�S�����+pBX��#AK$d[�!��o�e������ �����_
J�OZ�FSYo�%D�:3%������N��L�����	�">*��,SuwU�W'�� +�`�%���f�?�U7x�fON��~F.6!��fV���}s�,���|H����]����������:;9��y��Kww&���1	c-�L�I
�l���]Qt��KH���{T�U��t[�f�]���UP�Q�m����~�;lwP���n]��z���Dw�z&��z�LVr������=�sv��..������#+�y��8���E�;��'|�tM=�;�%��~Rj���3���#4F�v
�e�����lyrR�I�\z.���;
^���kd~3�m�:�<�cT��zG2���.[�����Z��+��\���3�n�E�����	�O|w���c��"�W��kVZ�?�@'����8��]��y�.���E]��*q��c�������X(�[������?�?�L)����0�Q���E�j9���p3������ #i����B%[GK�3�g��,�C#���fJ�Y������F��|�hNNO�e����"|b�
����(�f�a
�|L���e����������_�V���������}E�3���q�G��1_��g���9,����<��xS0�I�4��V�����[*���_����v#���'O�'�~��wPu���:����f6]�
u�C�/�;}����n$�E�p��8��������Vu��Y�NN���j2�Z�A���4�1��&G,	����]<�G��H�<��2~�>�V�^@1_c)q�!k�������x����7/��������L������>7c�C�i:x]*d�_lQ���?`6Nx��n���xZ����r���Y������@��BX�jq��wG�U�)Z\��`pC����Y��g�W�������/��y�M]����=�o� *�yos���W��>O��lo�T����/���Vk����pN=t0���e�yS���Y�X.='5���~J��C��Q�-n�+���G�q�*k���:c�'~y�i�N���;:��z��;���������1�4�����3q������4��h^����v��y���w�o^>�^��b	��`(��1����.��|��W���~,��3��t��������$(G%x�����a�0:o�mod������������~VL8���E#:�+���;J��y^,NNp�,�<K &�c�C�A���uB�-������9��vh��6����%��|^�e�SZ����s?��S��7���_G��L��	\mCr��yR�8�R��9O<S�:�cW+��`�:���=@�#	_��v���v�cG��b�m����]��W9�z��=--O����
3�<���9��� ��� \B���%B���:����N��~��x�'g�$����\�1���=��������������~ �Q���F%HSJ����f�^-�EWi ��������/�i����(z4e�t�����`uy�l����[g��`I��''M����s��#y�r���kf�p����1]�o����-��vN��T�Qj_�h�����T��~j>�����V��������C]�/9���c]rF�[��
Xt1�����kq��y�k6��>e��F��A;��|��+���_=���;��� ��b��$�1�;>�z��&M�<����f�EP���8�i".�9���v����4����lQ8�3z�z���|u��}��}jn��v=^r����n�k��w_^C�,����#��v�N<��3�� �t
o�f�y��c�I��MO�N�V���-B��)�W�f0*��+���U�@K������7������z��I�q)[�
e&�Q
�������2�f�2������[-1�%�T���HF����_=}W5����e-�&n]�������cgn����fY�,9���E��\����u������-�c5�����W?H��!I}����o�����V)���|(ei��b��I�b���r��I�x\�[�V)-�^��-�~��V-;-���p��ge�G$��x��hJN���%p�|:	�a#w�>D�qi����;����Mts��zu8�1\\�D��0������h��� 6?���l�8�+gV@�rAA��?lw�C������<��;������"/W������G
8N��m���b�E#-f1���]�*0E�2�^�����^�"���P�z#/��C!^}�Ey�U��+*���`���G7{��W
���rG��wD�l�	Z
������
E�� 2� `@C���z�Jq���G����o^<���"k�c n��2�u�D��]-G[;Fyi>"+P8��?S$�l���M��U
����������)�>
 ��Y@�QtZA'���^!��+\��w,Q4<!i.+/��|0��p���W��*�VK}����?ZR�8�sq��������P�4t�������A�;^a:��?��}���������
���������5�n�W����
�^���>�_��Ar_�������:�t���2����~�[Fmx�����n	%M>=���d4^�����n>���r�4���nAFN38���
N*W�M36O�����O[fZR���i��3)����8�wRi!�@��GvJ����y+6�'<��}v���{���@�|n�i�)��z�!���r��Cvi�1�F���c(����gR/`��\����C�.M:��G�*���pG�z��!����!���8�G]A��AN�w�/V��z�2�h��(�O����G  �����IP5��������v�y����3:���o��~��������M�{	���jl�
=2�|��vt�E�F����,G��rGKF���e-��C����H�Im�J���7�n�Y^2"a��eI���+
������1��+�k5s�3>���T^�ql��8����8�Cl�$n�����3�-�4x��^�A�'�\pN[�f�]��f�o7�QlF�����O�������V����rL���D�qW����y�2�^�.�<�����B�����n�1f�0�cbY�@�%�?�	����6V�AA�N�O#�QoV4U����h�
��4h��A#�3�#,~E�H}4�i�������%���5�|FM�bbD��\*-g4]ov1<$�
&R�u�u9�����\��w7��O(!B��Qc�4RC
|�RR����T�]X�;��	�p�A�����CQI��1���Cn�F���r���th��;�(������9��Wn$��e��N�Y:���UoWK�"��MN���Fm�����?���|�JA�t���9�^Fj-�>���B��BJb��>���r'�Nl��+9_h���#5mH�NL�a8
�Ej)#������GQ��D�?k'NC3�*�������QT�n�]xLVZr��Pk������}Ej���hqQeo Lv���@����.�-�/Tr$v��F���p���������IT����ja{hE���D�`�Y�*��>99o�y���]�-�c�6��r�!
�"�Q�e7�~����X���s��+GT�f^a�q�*3�n^�_v��U^q���/oOn{q�"�(�B�G�^��=8L��An����
]�u�wj����[�#_�Wh�r/��s�"A�o���
�_�����f�n����0����7�ovr��H���h7�K@[0�F�v�5��m)x��y:�?5��o�����p��:�p��y��v<�������s�dFl0x�%9����8�+��Ba����R����Y
�D�~lY����?��?<r<��u���#�`R�rc������ �c%���f�I���n��w�rT�G%X7{�.��JPP�� A9���$�P\h\�Kp.BV�%��������BV��QEo454n5�xw��tr�~Q�jO�C�r��r1.����4�e��D�	�����*�9��5��r�H'A�p���M$s��V�2�U	�0�}v�7���p����W�����U��a��U	�G����X}���stTO"G�RREd6P�d9���
cmW�0m���!�U�������4�Y���vw�c*�fX�0dQ���wd���h�?��T���;2����de0��RN��UU�7r`Td�n���h�/�h�@�"��gB#	�D`qk��~���o2S��n}e���*�'�����zh=}��v�xE����b�����f�+����7Qt<o�X����F���2G��L��'��'�B�Qy�_
�` ,"u�HY���"��`fSmp�����m�,%��~,����3�� Z��Z�����9x�Oj���8��#���pe�P�}T��A#�
p�h��*��y[hR�`M��3��$��0�	���`�6��GM��������!�����h���[?`������Gxu�;p��CS/��3�QW�5� K��d�����5\��,"��_x��O����@pT"d��8%B�X4�;�ZZT�����7-���R(�zIP��IF���yS����	Jy�� ����um�Bl����������$B5����y�C�������`�u��#.����M�1!���I��e�������O�ei������$����N�^4���%.��K'DF����p1�io,�(�tB�x���.�2� ��dW>^�Xx�
qd4�+8�K[q���|�d|�uh��,ZW�����R�D��LI`���i,�6!JL�'�q?�aL��Og�ao$*�j�����v���)�H�?�q������l��v}sh�����5\����3����4��p��(Y"8��/�M��6����|��]�X}��hu��!l��b�!�����}����B��>n^�D��{��s�������%�]��A��	6Q� A�`�,��D��$���z�i��r�O���:��E�����K��C�D%���kq��*�V:h���������������z�k�KQ#O�t�]�s"_�5���{�!r���CF�xp"WO.�"�{�*�y����T���(9�T�<��(}�C��	r���������{drr��=Z�k���p���E�&�^��h��G�H�����f�Ly8�D�&���9sn��T������kV�d�R
�C�@7����9'�L!D�*S��	�-�_�41��xu�s0�I��0�b��vT���j��~��q��G��sb����4E�����>��� �"aR_��y�$�u�q�k0r������_�x���Z6����o�o��'�~���p��3K�%�(B�eJ	xjp8^��I�����<Bg!���
����e�j�������E�gD�B���v����c�� ��-�W7��Y���&e�tA���O���ks�&�^4#�~�/����i�s`YRz���MI�E���0�%��o�=&�pO�����g���qQJ���}�;������"�C�����!���u��8i��'=��g�2�,�����G�H�Y��������<�Dl�z6
j�ah.d*'M�����A@���y�Tx��=��y�t�z?��CWk�R��H�q�����K��6s���l��������9��}r�G�>�6�o�R�7E;��)c�@��mq.c����=)��1Z�w�2�1�(Q/%�\�N��0���-BWjxq�9�������.Zjz.���w���v�R�?r�'���|�Y���,��q/-��u
(�����3����(3gd-�<L<�};�Z5���F4������LB�)�����������h$'�g���!�Tg{�1����Dpj����x�����=�U��=!�,�?�*��D��go�����Z��n_������g�*�d���k+e2�-���,mkd2�~{l�r����zq����lFb�[���������)���7���)��Uzj��[%�*/��	��I�BiJeT��D��$����N�����7!���}�1y�\�1�C3�3��~���9��1 �����c��}�%#��F&����+�@���t�`!L�{�
��	_E$s}�������-���{/M��4�9s�D1���Ry��&�y�X�q�M�p�Q��$Wy��Rx�����k*E�^!��������}�	������l��������8��F�����K����������[H���r�V�e����n����e�+�~�X�+��'�+2Yg���bX��B��}�26��G������.�?���2�_�p�o��	P���V|i�D��{C<r��TD����9�[�|�8��2H`(��~�L���kLaar�QE)��#B�s�^�j���f����c�h��Ev�[�5J�`Sc��Kgt�}���`o���H��i�i8��:Cu�3�����mf��6w�ZO}�V�[�������/���G��H�W&��K�j��s$�+������1��6�Q9�r{��Z�ng��<����y����.-,����F��=�b�&�m��j���-�c�7s7�$�~~��C���~L���z�|�x{)8�\n(�7G�����`~���g�n�=�?l;!�������0Ks�������wL������cI\���� �=
Z�I����8=O<{��rW���=B���`���$�>T��<��
v�$����&��2��0Y�?(@������<�{��_e��~���w1hbd�*:1��T����T5QJ�����,/��	T�~:�<�dR.m���&REf��t��7��������z�������m������s���D<�L� �l�t~���i2�����������t���A�M���?�w�u�\��Q��B�X@�<M��nP���h�M���{M�\��1g��$���hR�_O�ER.����&��X5E�Ht����h|��M�8�G���:�Q����R��D��T)�b5�\-����,���8�y�_ce�c��� �:���h�$$8�r�m�y�hR�$	I�������mUr�7�qSb�]s�|O.?Q�uT�����l�src~���j�9���9�7<9(Nmv��@���O8={s������>{�z6q-�hg�)�-����g[���f1�?]�A
,����S���zTyJ{�F�������x��\nO���(G���Q9��a��� +���>����@W�(���1�hQ�/�����+��o��s�E)�����yMFb���sg]��GQ�����=��	IBR<X8�{���&���*�"���D�y	t
�C��@6�9|���Ir������L�ubd$��!���7�K��K
`�B���N4/�C<�oB������o��3�(��>2����EA������	+}�f$�+��ZJ��{S*�c@]F�HQ�9�
����}�wXm�����0�L|�����u�����d��VK�y�9���$o��fI8/=b���.s[���aT�J�(��!�K�.��V�[���6W��������Gn�pUO�D����W��>�5�R���r��
�y������{K�V�Jct�������%�]�)�I�Le�6�������x��nu��L��G��w�nS?e�o<�������������6�2�4��oj��O���������U������v����KcL�R!�L�T�{��"�/��j�
��5.S�o�:YZ�A�F�xq�������6����7��[��r�����w��������=��'tCXL�&�\�f����"����~M��~�����VuO��D�w��	�p����QU|g_�8���e����1�JF_��f���������*@���Z�sh���1Hp�g���D`N��W�Dp��V��FT�K
�t�E8��T2�)����/����%fy�8:��+����J-9b��Q��*�`�u���s3���_����l"�������Q��0�RT��If6*�4�)2�s������X�����rGN>�V�s��\���q���
b{�2N�a/soi�y>�����������B�����j)0�bT�,V�T��)�r+�1S�DB�;�f\���?z�
���!��>[��}��'UU��S�z���\>j�]h��Z�&,�����sNE�9s���T���{���i}'L=�A}��^������{���;�Kz���^=�4	h�F�F���������R����Y����+��|5�]���x:R����>�\���y��8�99\QYq3#���Yk/y{��%��G���Y/9��)�8������'�z��V��Y\�@���G��������S�)�������"^�]��K�{��� ����P�E�5��m������As�J�d��G�x	e������A���j�$���$�Q!�������dp��Xep�	'J ��w�N������v���Pz�A��Q�W�9�O��-G}�U���
����b��2}�86�+�L�����B�2q_�krN�{��6��3b3�sx�94�s�M�89S/-��}/����C�-��C�U(w�g����:�<�������J�^�/%��{-����8_�-V�{��I�R��y�q��U"O*M�G�R�d�Q)�����l����I���h�� �r��'U�o;��6!���R{v3��2��^�Q{��R���B��vEU�;�bH���B������w���6�E�����kK:3����q���G�(�#+�&��{zqws�M�_��<|��B �&@�n9G��=�	��
@��c1�����p��dn�Z.���
�+m@��-�s�������-�#c��Bd+��kAW���~@��9�Xh�k'v��S���t�an��l������+>����,��gg3~��}6=��2�fB�����L�#���b(�,���|���"thq9@s���!��5��)�1P8�C���|-���&�������b)�0�Iw�g��]�E�N2�$�)�E_��A����7~�i�z��"��td��}���Y������]�;7������I��E��G�?�j��Z ���p���o��s�5�g&|��pyEX�~��HAWE�%��6�~�X
/�a����Cr�4���@����.j/���#�%Q)����������}|�k�1�$������@2t ���-����� �p�������E�>"���#6;5U{�g��F��{���5��;l�����/���lrK���1��<�:O?A�&��O-'{W� ����g�J���#�������i��PL�WWXB$��d/�	|j>r����@Ls��9��ZN�����I������3��������
|^��������Xk�J����Q������a�1%�)�[����������\����P�TY��
��e.����������z(���r��tm��}�0 �E�(���>��K��	�H��>�����>	����������>w��|a5���"z���
�n+��E���a�4g���1�|Y4��H.$�mc�7v�.�c�1.���-���_� �I���53`�v�8�YTwW2�W��HY �����dI�p��@@��F���4�3.\aJ��i~3��9YR/\����N��r|�"�(����t
���]-q2�`���Z�gSG!���������1��wP�!?��)��`������o����E9����K��I���B�)���:��>b�?�v
��U;u�����F9����������4�n
���U7u��	��i���v�XX��<���ep_�����O�YX��2�z�C h�1���yj�$��J��-,i�[=,)�Xn3����yr�0E���4��������#&	g����%��+T�C^I*i?{4�
�Pc�!u�0BH/��G�h�#Z�������_�3������g���p�����a1QYp��H�/�G0��I��U����hS�:���]�����d@�NY��������z��[��8�I�����-'��;WJhvEX$.�0�+�PMf��m}j�F��[Bz�T9��]hy)���;�+u��a<�Ct��#,Z�J'*�xLvH��U��E�#��C?�Y/����E�A�\H�W���"��I����a<�;��\)��!������o��j��	�J�g��_�?T�No�J1.��7�0�Gf�e�X����P����g������i����)�df�LXQ��
;xz��c�]�v'���x{��
�J��@lA���wf	������Ys�v	v���{s	����R���u�W���A�c8���C�=���~VY���������B��0�����V��k����������	`�����h�
����v�PtO��'�2�)FO��15����ua�	-�9{g�O�\�\�Da����D��Bg�'�	a_�e���9
2�c�����PV��o):h9��ty�S�����s�=8� ���A��*��~9�8�u*���B�B��C�c���	]�H�#���wG�����R���t�=��!�W�"�G�6�.')7t�*FhT7�e��"k�U�2�	�~�ID��������.%���C���	KY�^1|M��/��z�A��������P���8��j/W{]�!�P�g�y��������Cbf��+�.�A�xn���Qm��!3
���.Wu]H1�j!�0p�Q�3_�&(|���A���@&��������������)RO��xT�f�u���(&d�u*�g�����=���0��,��]*��]zx�m���B��IW~���|�e����y�q��?�w]x��,h�1��
J�n!�^�ze���V�Qv#Qk\l�e�y�
OOd��eg\���B|q�|�%�pZ�]C� p�EX�$�������T�%��d�E�x�0]h��yvXp���a�8���:p2
y�,t�bB�8�=�D�+Fq��d�@��MJ�.��H4��Q$��H$�g$��q���?�&E�R.5E.r�v��������A����L��E�Y������{��ur���s0<�	���wy9�C{����|��y~�G����p���<"4'8�&��W��������������h��G�,��L����b�/N� �:0N[��+���GE���;���g�K6K9t-0DyP6X���,������Z��\m��:�%J�>j���f���I���1g��@K�@%8���BUK�A�:���BU�OD�j�ao�Sa*CQ�CW(l��=�0
{%���5���32�(�y.�����hD��S@�bM����?��U���n���4�+��:@�9p��/�/J�{^9`�������5���a����:�o���;��-�x�=]T`V]]��&Tb�qa����U��UB\��T%X�dx�X�^�c���aZ�d3E�P!y������B��_�v#��D��������u��[]U=e��FD��[9�6+�5��;Q=O�+Q�������LPb�,��d��?-2$:1xI�N��^~@�������V�M�+��z�0y�B4��4 c�Y.s5�&7�$\��#��R���I=r�If����#��n�S��Pl���H�h���(@o�Fq�!&����a��bKr�.rC�7����(���a�������j�?�����M��%��K|Z�@^�����jd���x������
���Ah���@# ��� ���G'?�����"?�����1�9�����c����?4�g
e:�"����56F����I�_�z���Eb#Hr�&����~m�Iq��%tcT_�Q�"��h��
u��B�Z���%N[�q7�w�������j� `q!��~��!].�>�v*d�����?u��4�0V�����o���R/Rw����aB"�������Bd��kM���5���lO�����Q��8���D��I��L��[����";a����t���C4n�N��f����o������}k&��m��k����87N��d3Er��5s��UP�]+<���]+�U������w���Wi�D���(�����
fa��V�z}�(�h�w�G<D���[4�5�C��G���>�������H����d4�)�!�������xO���zM��8Y�N,j��	-��l]j ��*�5�����P��{(~n��"��	�;�� ��B�!S%4���G���?(�����83�����	��8B�����b��h����#E}��^�X�V��[�*.����d]49Bj��Ds��K���dD��[uq����(ET-�[��X���t������_y�"��IyIjW��W,�?�����������������R��i�.������W�{�TA�=l�Us�P��g�����8c"d���6��"bZ��~�a�q����#!I|�la/�C��"Sf6�#I�{`"�F����t#����b�dO�����a��@�EV����B�����g��G�{�=q��a���
V~`�@#	���z!MzH���b�Ho���f���@�vAH���&�?H'gg�P����h�E�%��(�8M��_9�?�����������1"�������������L�F��d�mr��aF��ke0b�}�$��|
F,�o�������!s�T� ����F��-md$	A&�����9�4oQ����aIJC�J�y�FY��&)�������h��L�^&6����R<e*����`r
j6 B2�6?Ckb��� �l�����c�2��!���$����Y�2���.Bygt���eQ1"�.�`��z96�;)��x���E�*��=@6�/��{���T��A������~��W��}�k���S����0/��y��C~?�!b�w�-gZ^���2��m��S�����x�}����o����]���$?��7O�{W�G�0��������+89bRpn���S����y��f��������a)D7K[��VN���#-���6Z�O����w��l��?���`(�{�b���s@�E�Cm�>}����������t$��es1�,��o�<B��?��V�����\�H�zX{�/�����U����*/����U�	�
�#���G�M���G8����tS$�����H737��������w3G��`���G���PJ���'}�( ����f��� �x�����{E����P�E�������sM/�>��VL������vP6���	K��9
���a#(�-�b��.��K�t�i�t�#<��|fM4`'��F���,P���ypE��`U
P^�w���N�x�����P"-��^U$p�%rBy�,���0Q=!��Z���T�'N�d�'H����nc;�=��[r�A�c��R>�>Rf�'��b����N�>����(c&E�~��?�UQ,����Q$��b����)���ml�b1j[t0(&!�[�",���=7��_�������L)]��2����h���YT3�.2�X��������N�%';�|���8�<��s�=�\�����G�!���if/�#�/K�<n4G3���'
�;Q27����:,C�p���|���]4u����Tc����2KrkMX�t�C���y���u�h ��s$��sD�#l����Hn/���r��s�j�@�i�����yo���kO��N,��<w��=��R�$5}S\�X[���BP
p�D����5z�qJq���e`�@�9Wm&W*M�T�6����:Jc��&�����T#Jb������T#IR3�Rm��j����(-�(���M�Ej��4���u�.��A��4a���Q��%1�QZXG�F�������(����X���ra�8%:�&��2���A��Gi����+��������:~���249�CA'��c�B��3A'��c��+:Xhu������/��t��������w?E�\������������w�y�x�+��)%�r7;����6d�y���L3���CU��T�����9��R��.�G�@���������tp�P�mvJeZZ6������}Yr�
��L�@4��;�h!��_�W�*����4wM�����mINeB+�?����+���k�2B�v�fF��~}@L��hz��q�-��jQP4�}p�,�8����Ms-��������0�"do��C���V#o^�B����Q=@)���D=r"V�>��i���)9�v�>��i�n����T�Al<W����@��w����c�&���x^u����Q]f�$�U��[���>�~��Z�%���j��p7:�E������P��F��'�mCp�r���g��/�d��5w<�����ix����Cufo���"b��a���������6�!��W��R�g���a�]l����5Ig�� �`�����4�!�RQnR=H
���t���������|{�n8�x��ix��	�}tS����t��,���B�r�H����:�e�dUe��KR��Tt{@���0���Se�t��s�&�k�kT0��R���Q�;by�#�e=��Y%q���U���`_�<����E���Q<_�h������C�yx=���*�+l7���2�sl�K��=1�)f`��`�����d}�9��%csP�����Ws��5�,�c��Y����A�����y��.�P��b�_�C%��g":v�x
b��5[�s����kh%���\d�f���eb�����eN����G?/X�%y��8�rr����Z?4���w&��q&^��Q��GM�n�<D��<�B!���@����0�z�]L�������`n����.����:6�,�.��:h�
M�d���e�q��Xwp�r���y��-P��������e�
GZb��8n=���<�����������y��1���{6�������k�w�i<2�A���{�$�&���72p���������Q�]Tom�b����U	�7�����d�b��%V��,�w�w����J��\�p����3z�������Kq t��-�4�:y��iw� c>'z��M�`$�/�:��Io����L��X)����r<=3��`R�e���D�K�k��3���[�ouX���Qw|%���<�����l��������tjv�*�+�o|'����}��������e���[�Y/������4���>�1������lL���T�=)�����F$��.���t�S+ipM���VA�����oq$����[��n�� ��|�a >U�f����(�R�:��>P����+�����U�!r9�`@�P"�a�I��H���_Qa��`Y��3X8�D�yWX3��g0�����"�
/�=��IG�����lt��p�v����g���G$�1��N�"�
�������=gC6[����!����h���������Y��)��sC�JEl8�8i��7��2w3���/V^�]J����/�]O��L�E�7�\r� KQ0�6&����������?
����#�?���9��A�}��?	���Z����@�L��|9�
���}��������������]����{��O,X�q��v\p���!Jx�cxw�����;D�X����8U1�I���C�N�*f�o���|���������8�����h�Z!��M��U��,B\5�CA���Y��g������ ����y:����-���%��j�GE����r��HJZ@�,&�b6���J�@�HN�UN�B���l���ZT�UT]\�5�I+U��]
����z	$w 	��6���q�C�T�I����3T��ha�3��C�Ce"���tD"���o��x]���G&bwlW|�L����M&bl�	�)��J&8yf�J4:u5������O.�D��X�r�"c���w/1�5+���G{ ���v:B;���4�c:2�]��LJ27���n�1��1|��[m���<����\����n��3�G%�k��px�}���C��|${|�t��9�9�����9�O?�����`_���d}$	|d�d���R�c�YM��\n��R�#������PB�E��iux^nN����B���Cef���������'\U��M�O<F���Ved���#H�#��-��J ;bI�#�Xf/kE#��'G�lnS�5�F�X�������{���K�l/`
�+�R+���w����NE��qF��<����#�o�8�S�n��=�9�������M7����}D!��w.�"���$
@�@$���T�D1��.&���6�8�S����i�bB	��T�����I�:�^4@�{������,�`m��Y�G�����Wl��<�d�0s_!
9,�m:ZV38]#c�3d
�4�$Ky����l��`�"���+I|�i8n�|��*�+p9G���[oeql�u�A�g�)G"�i`M_?�fo�^{����?����t*�N��<����������2?����5�����Ga���u`���&���
�5|�{%�,��������\��������'������$��R?����#e����F�Jn3r�����6qQ��L�+9G��eM���5�#����q�%%����%��m��q��1��ZQ�\M���w��V�"]�l����5�o�������|����
��6'�����:�����1�:76'~���/��M���+��fw�`<^��KL�23��ymr�10�Z�C�"AGa�M�73���Q��f�`_����!3iQ]��fs5��D_n������e�h�f���=s�%�c�.��`<g1���F&JY��~�t����M6����Jh�dt���I�p�>�;H0�a\�|2����v�1� �>��3$X(�R�r_
[?�������~�|�/�o��_h�U�������N��ExoP��>b����������J�o^)��9J����2�8�,�WP/�<�JQ��|���#{R�7�Z�|��C��������������@p�Og�ik�P"��:8���x�����n<�����)��s�	�gj�7�����
�QO�b:��_
y��(K���v#&��N3�=�G�3��)s�s�I�9`Q��vo(���l�:������n������W��"[WbsN]�W;�^-N�v�R#���pO�PL��������h�v������9����#��?���������������Or��t�D��T�H�+���o���_������<������+��
8una��wo����w�����B/���>A��B6k�A#���9'��-���"N���"t �6���0A-Gv��2���2�.���������G0�U�o�~��ui@-Vn;�V�et�zN���,���[�O�FU����H5���K\M�A�� v.c=�5q0?����/m��|���#n��9�+e�p?����V�F�����������kl�*2����Xa��@i��8b��~����I�5-����t��*7���\{�w#2�����M���(�s'aw������c`L���L+��I��?^�NF{&o��O��m���4 �Q>|�����T�E|���w�������;���li����m���F�h�����X�V���r!6������6Ocp�WN�H_=`c�������;L8�:�w�����k�OM�(}�\��c>��,D�tc��@����G�n(���c-hq�]q� Nn���6#���9��E qG c��p	�����$\@q](��P`9�X�U�K<�[���aO��4�UB)����*#J����"�>0!!
�(��(��+���)X����zt�Z��6�$�B�#er=�fW�(����8�gXR�Nr��r���G�$���>�8">�{�!��G�8^d#����T{��kI[|i��k�:b'��������D+�d�N:D�Hz���D\����G�������1I,�U�@�F� �$�:[��"x!�$mi�qD	�HH�v�I6v������[}����NQ�k��G�I�}����k�Q�?�L�g-�q��k�#��o����8x�	
�B~m>��B�l����b1C	e,5�1����KFW'�H��������(o}r�0�����g��1�a ��'q2��r$v���c���1��a'N��|�>c#�nX$�����)�(�1X;|�G#p:R��F����sFe���~����~��'~���5��
�4`?�����O�
3��8W_4������`C�����8</E���o^���g~�����l������g�n]`{���b�~��1+�<_����?w��q������
���5������c��7�~���?��#�:p�{�w�?4o�:��9`���F6�9��[��2�t;o���y��d����@x/��3{�[~oZ������Mt>����0�g��
���������>6��,N��z[
H��,���W^�O��`���/5^�����>p��UX&r����/!Jk?��I�jU?�#O��������|���W�!����5�������j��O
�5�L�zH��C�x�l��}��
��A������|o���Gn��)�i��H��9cC���j��o�i�}��o��z����{�v�?���%������L���������/��z��!5�B���zC�BA����x]�>��[O�E)_N���%rK��21o��8�dyUg�a	yr�,/VOj�x�7U��������������������^��L�D�
�����7�8/�����8�y'P02���`��������s�"5����R��[v��q�S�6V#f[����[
r�8����v��Nu(�7f��`�uwt�|��o����e�}�������J��e\�(��B��7.�Z�7k���9����H���������J���wqit����T�B�+����-�:���r�#�������Uw<�j���mh����c-�� �,���d{A�����B��M�h���N��Vi�w�Q��nm����w!�W�Y�w��!��/����w�����DJ�����vb��5���c_(���j� ����9�j���������j��Z����y�t�$���CH��e��hj�vF��EQ��c�!7n����~A�up��W�M���L��Xk���j���-�t
�xho�"����E������l)�;+��kA���2������Q��2S�O�Fi��&�e�jD�dR����Jn�Fji�9y(-��#����������R5�|�rPx4.����v��r@��6.��������MC5��M�\m��M�E���?^*HT,��c�L6���q.;[���������Q{�����!��e�	No���i&'�i�m��X��������X���m��V((�����{`�wd�|H�/p}C����|�:���\U�%����$S}�����G��oP�����mwx�����i,]
��	i;{�#�����;T��:�;�E�{G���$�H���<5{w�>Y�j����3�>��F��j�Cu8x�(�8�t�)����0D�h��p�����*Q+yt���m�<P���i�h�^�������_}����E��b�_��8\��������s���m��\0�8��~�fQ������c���m�C
�2���6��1�����3�T�/g��
7
�I�a}p������)�4xz���q��M��0��[_[����o��{�O�n�H.���1�]<�Zn[�$>x��U���V�3�s�<�����|��j�a�W�NI>~I��h�I��6�����O �A�u	i��/��6������n�����]�������}������{��j���Wu��m�X���������
^��o3��Pu���
H
~;$4��Af�Z�c����/&��)�?�_�;@����B�� �/#7QFd���Ds ��Hb���$�"�{H�
�?|������_~��5����
�	|����<����'���)���I��u��FVx|�k������(rX��
�L���M��������lN_���-���GfH2:�%����}�>���y���+��S������7��l�o��o�z�����p
B�����97������m�����u�a[�����>�/��g`"������������o��`!�g�~���@����5o��_�=?:,��k��E��8{��U����aO�����yfj&*,O�1���>���q+F��f��>�����{	�lvA���>:�+��p�T�XW��� �(��W�����fs���<��4����Z��i���h�x���W	:���F
v3��5�F��0��0m ��i"��]S�y���>���O6y���tY1e��/�W_N��_�&���e����/�M�H�8I!���js^C����g.�x�4|���S���L�9��u�E
����7����>b��������##�z��ABH��_(RB�ok�~����w�3�=��b`}���~���Y����+�i9��j6U�����$���d�]�����^���Zi��z~>��\��j�%��S��������*�� �S��������]<�>B�>]60����1���ar�k�l^�yuE��Z'|�i~��7��3�.N�����[��t���� ������<�������|�k=�o�����u}���'~d����8+7<u����0<;���"Lh
�J{+k�� ^ei	�E�38:5��~�X��e����_HB�'��0>��<��*�@��u��`,�<>D$4���G*^�|f�xa�O��+�����s����4�������p�x�PR����pA�0��*�X���o�w�x��`P� ]�xK�x��T����/�����A�lky�7
	�ES����x���t�b�x�s1!S1E,�Lv������� �H@O|�tL�w2]����?�cg�3��+df����}�;I�	A���T���� �SW�	�dI�	f�<�����+yA������XnX��r�"[r��]F���X����;��$�����g��;U�f��:
r	�_����A�p����}�K��pS��,���p�6.Hc"\L��O��]��d�����mZ>�"[n���dK�����m,�N����e5�l����d�u� �W#3v���kN���������8+��8�c���6v��r��������^-4����G*�P���+��_$T|���D��On�"O|Q�$����s�����/&������������/��|�G�G����}����z��
a���+w���.������.�Rg���B���]��k�������o���f2	p������<w�H����6D���+���H���V��M�!�g��r�vx�C?P����&����sA8�hF������{����P:9�9w���C3URq��R�������T�;����:jt�j*�:@�2�P�>��7������:@�$��C��|��d�~Y��Qp�e������9C\H���t�r�g�$�B�o����9�a?�k��6��n��"Sf�I��Z:A�"H�����?������k	-8������d�,V���z�/�j�^��'�L�r�}E��3�W�1��B��sn����&�P�p�W���P�m�hM��\����a���S*���q�^C�?�������0��Lx(��/B�� �����z�
4�\k�����Z@U�w��#x���>����n�����M�;3����_���*�iuv���^�g���$���sn�)$���/���R0�;M
)NoQ
�2��a!�r�n���05.xr����I��Me�>�s}�K�wd�O���9�y����L�EA�����L��W�z�
`���A���x������Ws������NM����(u=����y�,��bx�����e��n�~G�_AEf��,�����e�a������yeN��jE�zZ�������F���4�c���q��^z��fl��w<�jIY�<�5�X����}�JR��kfX���lA��T����������0�0��b���g/1S������<A�n���22Wh<I���I��Hd*�H� c�s<Ae*�X�7�]Pk�H�3�8�x'H�]� `�������wX>%�J�����`:L�_A�
!�e�!�3#�
���qi:B�q):��MGH�
��Bx�qH�
1XM	nVz����h���H���~"�[�!JT�q�'�PN��4i�r;�.H9%*��E���9N�>����nyx�������P��X\���:I�
R-;�r�{���������KO��h�'�K=3�tP�������
���`
h'���y��u�����e�<!�^�;X�H���F�8�x�G������#��������1���l~'������T�O�wbP�e���-���/]���>�5U�c|����L�(������SU�n�� #B�V��%��ZB����xow�}��:@��������p���3v��v�D��*y�	C0!����N����%H>��!y�I�P-$�������
OO"O�4	���t����j�
P�<�$H����$[�Y���{H��]I��!A����+�'@�,��������&B�I��k��S�= ����UM�"�����d��O��D��!(������J��#�t|�6<�c*���� m�Jn�;��mC���O{��o=��Z=o����Z� q)!�Y�|��dA������	���`���lO���=����W�"�T.@P��"�A��)(Q��;Y�����P�@�g���=���\�X��D�`}�D�P�E�w��3���z}�US�f���vy8�p��Zz�,x
�S�����%'O[JXFI��#d����j�]��[��-���~��m�_�w�q�J�==D��T�+\SC(rg�?\���Y�"��!"kfx�����WX��F�T�T�uG��,�e������Qd���Z�@\�����AQ����J`k�#O��c�?`k�6�&u+ab����o��kfT������!�l��a�x�DF���h1.���I�h-����i'�����+���-c<��x�q������{#��l��P��N|b��'uN��*S0a}����gk���|���"ivp|��Q��<��QIe���I1��q��"3t��^6O�1��%�xmW������I�y�v�)|l/�d�',�^��y�:�j�D�����yB��� �P��U�e��!�m�����m�v����k��4>6.�7F������HbO��-j�x��=�5Gg��"m�������=���<c���
scC#C���J�0��\x��Pa��+���`:��d��(F�����nM6�I*i8Z|��vu�x`f�l>�'"_���#S<7���p��?�u�~>aY�
��H8`������6c�(�����=�e��10���W{�q�ix���Qx��S�LO�B�H��=�[x������#��"6#AT���a�z�98 A�M��a����D�;�
7������E�(�L��|9V��=�����a?Z����G&7����sxc���xul�/[3t�����Xt���*]����������'_���AQ,]\#��G�����o"z��0I"3�b"z����8z���6��us:W�5-�3�3��vbt\d�x<��m�~|R����N�q���hs<������x �v*���
�/��z�+kJ�;Ef*�X=A�n7.-����Z{���?������L�M=<�� ���1���GfJ;{��C��7�����y�{����us�	ME.�?�JOHn�5J��Qvd|tN.������N�A�-Sl�J�(s����`?�>Rr":�N�����l���k�������kH�u�/��ia�� �����_\�Lj,B�y@Dk�x��0xQR���3��I�5�0'�d�^�N
G�+%���I���+�b���������,4��3��>�K
��L'�$�tL"Z��t2L�L��!��{u:y�g�n�w���I�w�,�c&�&a�m�A�������"����Exw/�{��S���m�~�q4�hh�&���G��7��e
�~x��3�����t�����}����K^���|�9�&+��|O��3��Z�\)����GJD������-���?���?N.����G�#�w������}���5cfu��M|>�GO��{��(���C���]s&9���6��Z"%N�����m�e*�K}\��>���^�(:�)Q� 7�^ ���Q�H:6��Z$�����0�pi/���	>�d�t��B���j'%�U����~����^X�w�_��rN!9������k���c�j^��~@�c4��~J����c�U���=�s�St���B:}��� ���B��<��$��Jm=�=#��J���"��E*H�^���!�3;2H��R[�|'�����C���Np*H�/���w�SA�'����Np2H�$�@O�	NI��Z���'�����fh�N��L����o�d����o����)+<�����7�*���b=�����$KSKq���0�z �3�x+:L�4������`�dS>^�[�)K=	&}�k+��5O�I����^���t-��EO�I���B�y/i�g:3|���/������r�
�#�X�&��4:������#r|>�]�����&��A��/��5o������c����Z� ���Z@O�a��Cmi��q��%���A1���X%����JDR����$f����x��<8�jJ�!=�y,�'���x�}�\S����4��	�
F8�h0��)&N\����x���-=�����9��O�����W�u�!�V��t
�������tl��	7�lb ��Y<���������]��>(.� ��e2v�^�T������8�O�q���g����#��G��G1r����k�81����/������i�8����"�;~<�}t;�p��<��Q��+�~y�l����s�����<����
H��Q�p��3St����^W�=���V�.`���#�V����	�x���vl��m�qD�9������d��*����p^=t~�i�r���<��m[�����-�i��o����l)80�e������1Xm����J�|JW�%[&��#�������v�n�&�����g����g�g5��L5�s���d��0��<�f�������u9u�3���F������>��,U
7�:HI����%de�&&��p*!�z�B�1g�-$"Rz��sD����!���C�19�z��\�JC1f����P��h��Y����,�c��v(U�������kk����<#e�DVKN�sB ����ir���F��3!8_]m��$���f_��[��c��M�v/��=�����|����B��kZ����x��
����O|�����"3sw�sF|��#��;
\�����X8�-%���#��Q��;�[�����\:���R���}�>�W��+�����T����_�5Js�K����f�5���������W{9��T����w{��z�Gj��H���w���?��������UwuH��+����,�;}'�{����`�����:z���B��SEff������/|x(��t�A��{��|����5���f����R��g_��z�����;0��^���5Sw`t��:�,={#/��X��]Ig��(����|�{$�����n��k!�$�����C������l����
Z81h.�7���������R��%1��H���{����D4��,;`�.�Bi�X�@*���HNq�ats�t�S����1�a<�1�}�j�?��-F�{gKBT����,J
��(%!*��EI�pm�SP�{�����n�K��F*D|���W+�����T�S�cr/T��	��
lK��4c�7s��Q��P����y�����P����Y�������
�^<�����S(n�������l]��H�l��������Fdd�8p���vv	D,@�|��qj��v�ny���n������u+s�x�y�ad���u���1�,|����y& ����C����X���1����x�,I8���o�P�]�[��e����r�s�+R�{~���K�nK�$10V��o��xL�x2����/�$N�qj���_���W���q5Ie,�O(�;v�5U�q������.w��&�Kl���^������2Y�I��Y�$��#6U�j������q��&�<���J��e2��uRS�����5�����
I��3��Z��;��J\����^I��z�$&K<��K��H�Cj"e,���C��m�$��/t����s���c\M�w�qS�*��^�jd&������w	����M���J�5����92�{ �B��1���&7��8R�e��4�z�����A�Ngr�}�K�>��^�&8�J��jU��>����\Aer=����S���6QE���Zy��]�@c��K����`��
����X��5���f��w(��T��>r�C<>�&8U��'p�s���y�d&wB��}��'��� �0x'������Q������+C4�>	>�����������y��9�_�/�sp~���y����_�������w��~����7A��=����3����
kPSo>
S���F��;� ���~o6�K��i����� ���|Rgb�t��m�^���!zi8���&�����]u�\��T���{�������?'}.x� ��%]� *>�����9>jy�]�xSzm |��@	��A[��@t��b@I&�I����zi����LS�	�o����:�dBH���������\�.���G���j9����I��\-����Q�"�����X�������\ii�\�D��I�+-�����>����L�NH��E+�{t1}����g"RW��v&�bN����I������,���f %�1�v����L��*�������$�S2�Sd��^���Cw��S��[~��o2��w���%�q��/�qt-��'�Q��!,R.��(|�@:�a�3�;T`������<���I����X�T���Z�0cU�4��Z8V�`��E� ������s���B��L�=DxS�-��R#��%�����������rQ����#>�njb�	�!Lq���h��-��cR!�P�j���I��`@�����e�z�|6_:.x��w����������?ni��EH����5�\�l%�����>����� �I�he��kX�>�.6IL�C���Ec?3����*�9d4��$�H��V�Q.T;j4.Lx�\P�V�#
�~����'yu�������I^%�n��?�'�p/�C���N�$��xB������[��7���\n{�~.���|x���sw7 i>�B;�r]��zw^u���zU�����5�6gL���X� ��lL`�(��9
���C��|�'H���V��[����>/�47#�#�IN�Qr���*�B1���z��t�sc`����7���0P��;?9y`�FR.�;������4
?V�o���=%��8tp�7�<y�(���O���v���T��s���N�/f-�s����b�-�m���t>6�g��N��T�c��C��n�t�F��[�G�@v2i��DN�|"���$��p�v���**h��6�3y����|���x"��PWP:�f�u/ZRT�mI�iy��kt<t����Q��".Y�<M�����2j������X�j����H�hmv�=�6Z	P��RE�jt���C�7���I����EH�D9���m]�@&�������C�^9����%�h�x�����1P�T�N���):
'��?�g��7��������h!�����Z�,6vq_�&��5.���z��I��1.���S�y��*���5i����B\f�4��z��c�l�n��<���*%x��dz����(.cTX�y#���<���H#��C��M��4��y��*3<�(��M�=�$���%�'O55G@:u�h19)Zt���==VM%w;��(9�|Z�3��wb�Srf�g&�3]���'t
��;���;!���Uu\7�j��)�kO��sfCkc���i����n�����!R=��VP:��p���m�����R��+[��zwEL]�=������{�q��B��V���6vq<��<�E����^������EI��*R�=q:����M�m���7;��������Y��=d�}�T���#�xS��3K�����/,1�Np�p%��W-����M�����^�7C��
�7lq�o�_��E���O�9���WW�rM���b�Gc����P�~)
�U���
�P3I<Sx�2-�������;�O
\��W��oA���9���qwb#�q�����w��R��7��E����c���fLJ�l�WG���,� |a�[�,����;��{+����H�G.�(���ok�N�R8���#SiK�^^�{�����d=t����QW\k"^�7-cLF����%
P\����}H�S3[������0�	C�Sr�<�!~>^x*H>9�@5��K�5K>|-#A,����}��8�b^�<��v����
CS���w�H������d��0B�����sq�ik����������FrN��?X��]�����Z�)W�sd���R�~����Z�q��2L�����O����c�k6l5�S=?�����eTI��w[>�I:����c��;o�f��e�:����8����?t�6��Q��������v��=�ca��3O�r}�n]�:{.�]�;\��sl�&���)�~8p�JO�F*M�^���xe�FC��!D������n�2F�9F�3g��q����Y33�������G�T���V���>�er����l���]���xu�n7,����ie)��Y�����6�\S�����1j������6����Elx�O�k��I�Oc�>'3�G�}���d$����������wpO��Z����������w'�^,:��i��Z���t��0�u�Ny\�$���[_��y�>	92��oHI��D���Rc�Lx��u�i&�LI�Ni�HB.hg�#nX��������L3<�K���F^�?��w���n%o��f�	�,�.8b2�:*��R�q��X��?�Y`+s/��LD�	�h9�<ip�8Eb(�=�C1��Q:)Q��V�&3�%�nu�������#�+��/s�%�:��|s>Io��J��#W�A�[2s���*}h��!�2u��3s����g��A��oyU	�d�����"w��)Y�@�v�:���	)�a:��q��!a�LH�q)E�A���`&��������n�O�)��L��t4dE&�(xB��^���P����^6���9q89�������I��<y��Hbgxs�w���^E����4���������?8����A�"2��
��� �?1J��r��kv����5E��7�w%*����x��}@��P���$�I��!���� Be�z��!�Za�z��!�Z	a�z&	�!�Za����L�
����=z�2�*A������njGR!�MRy�����e�J����T����gMtNS)�����{�W����I,����9^W���:�<C����/�
{��!,��M������~��G����"�]p���f+K=�8~ I����cP�W�3x2�wX:+�S!������FJ,�hXv�Q'����L�S����x�EM�R�F�x�����
�c{��W�12�����^I�<�����u;��#����}�Jbd�Y_��?^���12��/�����<L��1-h;T���\qX-��q+d��pW�+�L�\(�~�e~6EM�.����]&c�o�1o
o��a&c�o�1��G��-)F`��~�z2F���'��}�H�A�0��GGu��x�+��A��>T\�Hj�U�����?�wZ:���x����W��U+�W��0����_[	��������!(��t����]�C�m��q�?���kr�"����8���e�������A�����S����^��3q}��3\RU�"F�>�����e[g/+�f�����2�� y��p�K�����?O���c>t-�&��K���d�1�QZ�����<��\��c,DSY �Y(z,hn%wc(�n%������"�d���SN��es1��2	����<@�B�87������TgG�.U�XPK�q�_8;n�L+��#�WF\�Gr&���S���k�9'��}�i_�9@���~�?���b}/m�Z
�K�����G�����W�����T����g#~N��od�@D0��}��>��z���rp��!*S������Wr��8p-�p:Tx#3�E�S]�@�!�u��
K��hcIf����*#����H�R����S���9f��b��/��4��
y�C#s��0�Y�+)^��]KY�(�uf��6����z�P�~���j<d�����
M�}^(���.2��|���o?�KcJ�r`K=��g����M������������Q��:j��D)2�����UT��*e���9���8v��.<���C�%���)��sM�����h:p$g�[<tst�	�������h�
�����v;���$�0H��������I&m�����2 o���4N��h���[P�O�m����)IB�1�b������s���T���2�)7| =R�6I��2jQ���	��e�$!*��EI/(�(	�$!JPi;\v�fG��(�������>]���\�V�2��?Tg��9�#nq�EL�n��[J�!���WuE>7%�wg�K�� s�(d4�1G4��s{���#j��67�^����~HG��t���f�����N+R;��uD�SG���{�S�qH�� � *�5��Fqc1v��'�{��;��[�	<Yp'L��j��C_f�X��R�s��Yp����Y �o1w�B�M���U��=�,'�$�8]��f��Z~v�u�������W�����L�c\�yDk�w0���%&m�}�����T�����/���iX��3oM.(���8�Y`�8S��u
���)��CY� �N�>0��#
(z;c������]�rJT�a�TJ^F�3��5"`�M�����<�rbK*>�X����ej��Izs���ldT6��R�Qw�D��#p��v�u�^c��U�S5����GCn��}b���*���>��)D'����h�m}<x���2BT���	c�YU��-Rw��i��r�	yH77��"�-X�@$r��
G�����x�v��X��s������ �Z$���$_#�=�1�����.l���{xCP��t9�m�0\D�������np�a|���e����������a���	��[X�-���V��\o����1!@Q�q�����FlR��Q�����T���'�
�8����A������.b����0m�%��Z'���Z����\�!\S�/T�*�����5s�������Od�� �Y�1�o�j���U8����V���9�7q��B�����l�cu&1�8Y�� �<��rn����3��w������f�����}�gM{&%�O�O�7��*����0�O�e�j����1:���by����~u86��M�\C���UsZ�o��M��}��8����l�8����
��~�,�f�_��[�%T�@�qL��P�EJ!����"6u��|!�������	��3
vT�q�
��~�8� ������`�K�	|��[xH�<�`��wu����	��|�W��~L������k��M���O�=��O5��������i�gWL�hn5���4��v�m���'jP�q�������'�0\�Z�>��+/��#�PQ��~��>8����(&Z�M��+�PT/��~p|pR���~J�)��S7�<������3f4D
�3s�v���W[��:_=8a�\��>�^�?^���g��n����b�����W�����tu��C��c�qs���Kuz9Y=�t�yh�8����~nQ��]8��u�&���Qn��������)����������d!�D�jt���p&�C�'^X�|F��:W������_��p�Nz$�c�#�A��2��g4S�;� w�<�5:�����E�`�m]������y��[�����=
:J�������_�:�t+�u���dI�q�Q�7�5q�(�.z����F��6T���>&�)J���J>�^���"yE����~�p[�!��
q��w��QR�~�P�
��������f�Ey/Y���]*����������Q���vT�sk�0�5c�'�$��>��Ga��~y&�9��<"LZ�����s!�&e([���!�����G���8#M����(�q�+m/��a�>L�r���]������`���*lQJ��z�����z����{�l����+�.�Y`���E�O����W� P�q�W�zY�����=��~�����%FU#���ty�^A�����B������xK
/��^A�>�S�,�#����Z^�"�Z^4�WQcS{���K����qz�'������#6���(���*��6�b�F����
����>���a�������o����ws�^��S�^���|��Oi���|G��#����0�~x����~�^B
k���c���i����R�����>����W�������'��0{������	b����j���������A���
1k��}WA�<���Qm@��T���z��26h��0�b��-�>���������|W�f2�T
[���G��IMtk/���X���u��,�
,����.�;J�n�a]U���;��[xXT�}�������%�0T+#��n�!-;H��
��`�NC��_�`��.�F+�n�*�Hj���S�L��:,n�f�Bv����1Grk���=cp�������O��fR���T�L�s��vgZ=�����M��l��{��Bu[���n����A�<F9j��N��q);�:���8�6@������r8��~�/���$��=�G��u���]��[����`���_�A�!f�����}��.��edd8*;��wZ�u�^�zvp�`�����$�s�����S��T����O�.�[�w�gP��4�?3���`L����\j���-�jp�7�M�YHNES��a�R�X����E���X�>Qe�],�-�v{�D��3�3mE�3�QI�qzrh������+�6������[GuL�X��C�^V#[Kq�		�!�5?�e�!$���w����u
����V����h��O��sp+��j���z0��0�z���/���z�z:\�ota���Y�����������!���ERw3Ld�<�W���'�A'K���G�b�@:�!o;����2T�1�'Z��_yu�+wi�!��
���WW�2�nL���]v����m��������9�p��?�wO��^L���e��
���u��T��rU�-y����
�)�{��uulK>��#�����a�?�q�>@l\�]��U�"��j_W�����d#C�z�|ZU#�*�kt�(��Us1�"�����r]�V��&�C/�XXi��}�F�B��Uu�6��7�G���/l4F�������a�6�����T��6�.��x[&w[d�k"�����Z�o9���o����09�v:�v��e},�/0@�<�0�j���%�C�]��_��/~�����X?c����w�=���y�B�ek��������7�O/?���g�� a��`7��6?/�J��N��T���b"J�� N�r���e��+%0�/�����]�_}�1���Ey�[4�?�O�pv+"(8���:�6'�8M�3B��o
�Qp1���Q���@�j��Z�q���X��(R4��=�G�S�6�LW�/#��k�q'�%J��9�X�E�x��@cl�����A-E�s��Z���9M�`�����`��
n���AZ-p����9u)�X[���������}�"�G�d�d�:��K�
6�����X�d
xS����(���J��(�Ax��4��G����E�������N�-���������Y���1N�1�F<���6���K�_hz�����E�5�����������~�����A�+2������|"d��
�G�:B��]�g-��=����1*�(Y7����Q!c���I�9c��D�K��s,���b�hz�E"D�X,��P��E���83(�]D���m B$CX(������:��E��)��1(�!�&�FF�jd���|UcH�1Y5e)��c���<E)*l�9��c�L
��w,�0��F���j�7kR�_��������7l"�r�)����2[��R�t� _��T�>���XE���z*��s!W��>���z}����y�5	����<;�Y�c���"�l>qbl����I�X��[��j��������V���l����.�A�f
��<���<�r�=��~��������m��.8�s��u�'�,?��������v-�R/��e��]�������~�9;7<j�=�s��8n���lf.���5:j�)C"���Q��:�������������Q��:���g��3�;>I�ej;�f�y-���,�T�z���g_^b��M.�Z7]���1����7v��+}n>��b����!��1E�n�w.Z�����F�5>u�
|8�Y��
���9v~upG������=)Dg���]n�������6���>��_A{^�pp�h�k�����=�a���J�T�1�0��f�����;z�����-5Nt�]�c{�}��S�c�j�����?�+8��
�����F��e��c�@��:�w��#w*�oz��o��9�g���X��G�k]�u���o8����������z���������{xw�g�z��R5;>��\������5�������{0�[W�����J	hAPOW5Gp�yi#c����6�u�2���
��1��@%�LAa�����H>sr�&����w2�oH�p7���;�m�u4�x
�&����V�
hE:�v�~,��x��G���	�WL�������<���MM��SL���O���R���
L�5��db���G���$=G��^�����n6`���%��7�W	����zB�x?{��8�&N�o:7>io��f�E'����:��(uW��:����e���p
����{'���(`4���X�_L��Z�]��w�OV+6l��~Z�n���n������u��@�K�����;���w>������z��_8Zx��y 5'7��pA����Rp����fJ)`�W����5O:t�cRu�O���[nv���{W�/GH�������e��-tN�;>�kHTp�����m�%*y �MY����s#��#D��<Pp�~b�	$�����1�I\=�3PpY/���3�VxOi�]�w�>8����]�;7�-`cx�N����S���$�A%��7�������vI�>����_�S�3����u����kH�����Upj SSs�7�M�T5��y�W1I��N��r.�x��ju�������\oe���� �W���_�`�>��	�\W�7�m_��\��:�1�C�k��;[�j~]�����k���eD�����`d���D;@ar���cv�8�w86p�����<�z	���j��-���[��5������4���&�����D����`+�p�S�[j�^7�=�Kf��8k�b�q���[��f�HYBkHm��fFJ���2ym��!%�L�����*����e�iH];���\,)n�a�J��CJ�}�Y���n�^H�?�M���������j��p�V�^J���I��o�����kj�Na	��i��,Tme	�^3w�R��^�� �4T'�Kq"��{=�D9��B78O��	eIw2x�xM��[����G�y\@�3���89�b��=/�q��)�1�g ��b'Lb���2�^���}%��D���;���seG,�r�ys2{��8/u�X$��1�O����;���5����-"�bL���_�k?�rXt�5:F'��RR�4��R��/Zn�� ���6��k�0Q\�����C�"�ix�a�DI\$>b�J�F�V����5�+kI��H��p�87��t��i	�,�d�jq/��f�v)#��2_�5�l���x��p�
�~]}t*�1((�(�ZQ�(�,���]��S�,
L�szjv�y��wo_��}}��	�8�*�FGh��5=����������4�
���c�X����������f�p�����l�c�Z2j.�HL���� OKK����c+7�O�}5�:W��y<�7�L����c~��o��XZs*��������so���X&�.�a��{��gZ�u�Q��=�:Y���d�S����=f}-s ���]u��w��J0|Z<N��q9���f��+.8���fU$"Z�|��K�����P�\h].����`�?�k6N�|`��j�n'=:tfN5tM�iNg{�$mv����� z��A�Pa������9�t��~�
��?r�=����yKO�^,�=���d��n�t;�g�����`6+���e2��1�D�y�3����}�'	i�1�6���6{x$L�{za��!��.�pj����x���'�_�#CNB���B*������$���|��_����@�����q��w�fu�T�[�$\xN��e�^�!���{��o	�f���h���� �n�xhv��c?�'�}:�y�~2u����;���c��~��/���B�?����@8�^���q����N\\�@|p�d�#Bu�H�.R��������$�����:���Nv�nF����l��v��E��e�^{�;�!�X��K��~�DF�1�yJ��C�W�H�TB��7�H/��`���:�,E2���|U�w�2��q��M@���E�@CL�h��G#.�mB�eth�s�|8�W��%����6F#�
�5hnQ@����O5Au�6����R�q����<�|����
�3������+tx�<R�t��9
��22D��<8p��k�gx�<�������#E���)x�U�W�/�9X��K}
��i��!s�k��N����E�E�����3��/W��j�E��E��8�9hb������v������L$�v&�t��x�t�[Bd��B���� EBd��B���� EBd��B���� EB�j���^Fj{I�g��|���KN�E�����W�G���vf����������h����=v8^0=�8�#�{�r�`z�s����������e'��z�7�\
n�
Y���#l��n�h ��c������e�O;�YG�7?��	7��X��;��]���L$|������x���:�c��PNe�`�y���g��fJ��
��<,0M�0vr��$������}����t��>q���H{w�i��fi�!��*H��&�M�D3L}�!2�T���h�V�"�z��pq/��r�AF��������h���Sm� pr���S��YFpe�������c���gw@�)����Z��8�VN��U_�x�RbB��?w��$���	�]�)h2����%�x0��vO�]3'M������g���H�d�ddUj���9�A:������Vg�#H��p8N�0����,�����Mr{������e�$��You�u^�Mr��v���&}�uGu^�Mr���h��QH\m���0��2(���c��|j8��6N1��K�5rf�%�����F��[1?AA~@�l��(��Q|��q_��"hQ�~��7Q�9�(�q�y8Z�����Qt�;?:�h���MJ�-ev_[�&��!�e�Jq���1�y*C��Xu#U��&�/�G����Ii`�_�d"����HT<��\��DR!O�]wu�I15���K��t�)c�3������1�^�
���:e����t:�{c�S����������G&��Y�!�p�.�6�u�@v����e�;����\~�H����Fk�!4<���L���"������6Y{�Y��<E?��"R�/�D�������"}a,z����"}����������,6����y[�F;$�%Y�7g_�a�$Cfr�3�M*��2:��9��h���Pw A��HIa�G��D��_�w���wO��O����*��gk
�j�,�S�{_qH-��Z�gP��B]i�>����<�2���5�f��bne xI�,�M��":�����*Rdv������>nw5���Q�>6�����Ld���S��gp��^+�ke3�ke#�T]o?u����2o���(u��t��m�I �z(4���//�QLpCN��nH]�jr4�4"�S{��-��������%�����l���klS��S���%�m�&�S���W�>:������1?��[���Q�^��#;�gX�W,�=X%��.���P�����=�{�Q�^���������Ql�s��T���%�c0�:���$���m���|a� �1�����x�a.xG�;�5m{�puG�l��iDp\����[5�7+������lC�"/�P��oh����D�_�����_����yTc��nDAJ���� R$�S�zQ���6��P���l��Y�
���Q-�z�o}��?�w�n�:����nD}H�TCl"��871���X!�

���>�"���{��cw��nDi�����@��za�C�C�"�����p��V�
"h�Sa������obp�]I�/������NNQ��m0$�W���|Po�L^vH���y������������?n��2��wi���1�������vQ?������G��y8���~{��1df�P��E'�L8�
�k�n�����~�.S�7,?�:q
7+���e��!��W<��3����=�\��G���T�st���������G�+Z���(���3���	v�Z�o�{��d����6�9�Un��.t�I��|�Z?�����yu#�����]�	$�m����"�P6b�����A���f�r$�"$Bm�*�,"Ar1�Fl�G��d�b�R*�vw#a�����]�ak��7�pe������,��-�j������?@_��H Cl�<<��0c+6q�����)8$U���c��b�@�
�#���Hl���1+�e����>8�0w,��Y���a��s4��i+���z���b}.�����~�k9�0?���^�����8���""�2�J�4��:s4�6����&�c4u��*X\��������Dcy��c�����)b�=�n�sO��9
�����x3����>���\��k*�����H�=�` gV������4R������|^��zOP�@Z���]������[���O�����'���q�#z��^�gO�����>�
'�^>4���6���������������j)u�o�I�U6o��]�5����\Ec�dU����_������)���Qw.�
��z!������>>��^N`���f�Gn���C����O1���NP�X����G��[\j�����Qu���%N����z���S�5�����a�g�8G�P
�f���������dt�i+�(���CuF�<�����i3��bA�x5�%��H���j�MZ����W��.���j�!^������z��I!t]3�.�����>6E�kx�eI+ 2���f�L�T.�d�S�d����i��
��B,�������K����#^7�iD��������WR�KQQ����`7��b��E�MA�
��v�T����B��%+��*E0�!d-01"[Wg����9��b��C8^�����H�'q���%JX�zr��*�|���W���rKO��F�9q���o�7��c��}s���P�����,��f1
k!
�+*��>WwM�
�c�h;���N�p��v���8�G0�?w��M	�0W���:+�������0,��M�����8�06��e���EN��Y>X��
���"n��u��o�FI���|T�:Yp ����n���7������/�@������7��#/c��'x'�.~k�z���j����I��6�Xl<���\�P��7�'�$�(!h���e��={,-���(v�������0�BU
��Z�X�lt��X����6w�����l=gI���/�.C��+��<��9����pf��Hs)�`������]�E�����>��Y�}$b�������G6�t����!���<FQ��{��{=N������@a�a#j����
����	�jed��>���w�x>����xE�^b�l2�CI��0�H|�	�������_c�\�%'5�b��i�A�<��VD�8�^e���,����).�[��c�66��-|�D�byp����%8~���)�Z�I�����$<c�COP	%6���g8;x����Dgp&\��_��Sb���VN2lQA8�����	o����r��C$ [����5�K8=[�I����X���W��x��*����[��_�����i�Rr���1���p�?��>�Mm@n��!�N��������c�����n����y0[�v��Es�+���Qx�>�,���6��91��#�����a�������A���3?D���z���,O���;��Q�+�1�p����B-�cXD�g�tb�u���I�sT��sHA����#I{HaVV
4���
Q��t�IQ�>�|4�&����w���4 �@����]������CiJ���[q}�I,Wu�v�������!N)�d_�j%�������T
�8Bq{��s���qn(8a5b{ !�ut
��n��5���t�eF���wD��l�-�ST�q*���B���)p}	��.�5���/O�b��'��7��U��?�s�q�.�uO��xS���!U�)�]d����� �O
�w���E�G�%��zi��������X��r2��Nm�C-Ta&��D)�<o���,>���`wT@�"\�8'2
�����/Z�?D��O�E]�����*�t����������=Qm�Ft�i�F�6n���B���GD�+

���&�n�4��EC@{���7O��%#��ip�FI����A��?=��'[N��!@�Y	/�����[����$�:��G��s*NO��%&�"���?
Q�1�y�����kw�a��Y(v,���\S� f����<�vQ<���A?1������[�%z�sC�H�	U���@��.���`)���sv�=DIp�'1���VMl��Q��hj����F!�����)�YQ��8R;w����F���Vi�hN��:���Vi�;>o�
��q�T�?������O�R���G �%��"6���e����F���[�j��P\�a�U�<��mX��C��cvK�C�>L�Y'a���{��'���|�����Ghc���c"�1c+F�D�%�r�=L�*>-�q�`�7MA�69B�I5L��#DX�c���gG3	��WX��=��1�����WU�z�Z�7��<�����]�������cX�k��������@@V���������rG^�rG�wQ���L�{��\��l�/C�@�hE�o4>���*X}�;M����.��i�s�2wtt�+��Yf|���h���9�tD�	fN��h����lo�����g��� ���L.��J��r���oNx~��\6�1�	P�P'?���9�����A��������������������U��<�����v��]I7�Z����7 �"��U�������~[���S�D�>�b�k-`�r_%&�]	.|U,t��S=72�[���{��J"�����Z�����mL���N���c���W}����S�lH���, ��j�8���6\X�A�8���st���Wy�v��K�3�l)��?}�o}������������H�-H���9v%3���������������)�A��	�M�*��C�������O������o�q���������i$���e�m����`�
�aqO�0Q��l�����2w���?�������~��w|?s�Fu�6��`���f��dA���r���IM0�y�����?� ��"�DuR�}��-)�ETr*��Fi����������#8�>���Fi��D��Z8���zv�:�iF��������0���`��b������R��"u3��6H����~t���*G�nz��?�
R����:�7��%q	�(�~�����2�'i��H��7fN��A���f�������[�"�����S�H.��i�%KH�|_�v����,!E��I��v���I4�/Mb+��2#<�'
^��pT�����h�U`�������U:|x��Sw�����SF��r�Ro��{����T��e�n�6L�I�����
�������<�����x�{�#�K������d�x��J�|b*G���)2���,om����
���d�H�.n9%Y�7��G�q��RA����'E�m7���.��"�tJ���W��Rq}�9c��J^�~PfD�	�a�u�#�3r�.�Y��+������Q���bmp�e�������
C86���C4f8r��B@	O�y+8��_
q���]��X����������'3_�W��������qu���E�q�2/������aj`�����=~���C8�R�������\&��V�w�Ck��}�0�r�����E&�
�Z������AB�,O�R����6-R�4��0��VF�h��s
��������g�����&��T�#c�p�}>?���GH��*8��_���C����)����]�k��N>r���<Y��y��N������?��Zt�S��n�E�p�l��c��4�B������#)�[z$t\�T�9!����������KoO�@��(���j*a�1�L9�B�zS�E�����i��4a������7���IL��$��M��&lR�����z|!iR� qs�z�d'��M�fN��<�Nt�&l�����n��V����6��e\6����	�V\b��"s��D}�$�Rs��/n�Q�, Rq-n��>j��>&?>����uu�����v�[�C��>�s]���Yt����=Ex�x�L�;.n2��/ Fx������	�!q����f8ct�`4��41J����&��.���Q��g�n���(5�c����.$Qj��
��1J�����&���S|ky2�1�3�������tz��O��y��W���iQ�9����q��^���Y��Wc��V�����}���A�*�
P�!�t�ET� �:���0yT:���o*���9Fup�Q�
��".�����[J�U����"�����A�u��E�1W�cd���D�,<@8��I�n��W�k8�m<�FCP>G�&��>�~��e���	���G?d�/f�d65�����C�({����F�d6��������&YE6�q�^�g��Q*��M�c/|n��B��./������R�lR�f�T�0?G9)m>��j����B���`2y�m�oq	�d!$�&x������:�����L���?YI��H�t��C��A���y��8���}�W�j�s:�]>�U���dz����lq����.��$5��� l���lw[%oD-]���G/�:U���
_*�!>�p��).�P��� Gy/�!+��t�p���j���#4
g����KX��D�m���B�D�A��!����E;�AxF
� �
_��$>J�x�%Cxvb}�^������j!���N�^Jr��]�5��~Y?8[��v���,��d
���H��@�>������� ����`<
6H����(�B���)3������0^w/��,<���1��D�Y5m���
C���9+(�T�^S�2��s����m�?i�:h�D��,�s��$|���|{�Y��X������V�������}f�L����n��I["Y�i����
����������c��GF#�$��������
��t�%��A���	,2�I|�����������q����N�`a�e$���Za2h�Ao��oc"Za0h�����Z?��W)&��8��I
�����������i�T�,VZB�`�!uG������51dw��A����l,�kr�W�x\���[�e�����s~�|9T�9����y�����t���5���'+Z�I����^��=�"�Dr�:cB�Cacao�wi�#bKc���{�B���:���(.Q~�N�'qAF�� �q|�������s|�
�cr;A��L�]����>�?�?�\_��
#�m��M-�s\�[U��,�Ji��>���'��:��[��G!:��f�f��wK��c����qr�������[���H����&C�ki�ST�=/L�pR�
��	��aR��:��PS]�d���`��_���$?��E��HNj��`��C0�T�.e��v��?�34��}m>
q9�S|�E%�Q"��z��`��,'��e�����&�k2�q�(�*h����8�}�R�:����o`L��� ����5��j�O�F�_��+�v~W�B��^��|������nU���������$B��8�+4�TE��5�C����2�zi�f����w����M���I,��d�v#�T#:�2�K+�phC�
|���V'6�q�a>J�Y�5u��;aq
�������3j�K����w/�����Y3W<��B�Gz���������sX��	D�jM>6rS����A�(LM(����z�P�����|xq��>U���@k��s#�k�P������C�zd|�&�K������D#c?
A�u�q����8UH��|��[��w�3������/�������!���3��&�tJ�!ul���������;v�f��4�
�����4=	��8�,_(��9H�E�"��^v_t@�uw��MEi���ljl��s&;�H���yt����!N�.W��5���+m�eP�@���G�n���8��D2���X���Az��4��1���"^������I.��A��T�Vo�9]�{ �`�,{��=L�<������T��������L�������`�����`��u�O��"���p�o�tV_�o����1�-�O31a�Ru�Yf���x�=��i^��4���{�8Y�����?l����BvH! �Q�9q�T�;���7���������P��@���d���pZP��}(����sj:�C"#"�����w���$�2��/���s���3��cN�i�<}�z^N���������r2%_���|���dJ�h��F���zUGX^�h���n4f�)���%ef�n5f/7bU�
���Y}�~�_�c�#3���f-bX�L3���}���F�x�>=�������\jy�+����T��Y6���x�����w��]�����%Lp��<L��,���������������g4�/��YG�:(*a�Ui����e�}��&�=��	xV��%�?#�Q1�<�E�\�a� �������_�f�F������G�������(�H�a�B��`�^�����V�}G��@	c��yA����_�y:���,��%��x��-��8Q=< k-`dt�IW�p���'j��(����������o������J�r���0�d�Y�
�S��F�#�
f�rn�����	p` �R�|�n�}j���5��(6"S�qg�CS(��0[&��qM�P�F��6�v�����v,��@o��-����/H�����9����K8���|�O����v�%"�����w�/H���$X5��S
�.;=A� j^�����(�s^�j_w��*����Eam,��T�l#���	��7�u��/��F���^r]�f.m�U�$��$��oV5��7�)�����C�7���@�(��>�G8�����u�����}��v������28�<�h<�\*b������5;a��6��|^�gN����u����z�a��s7[���������e�
)��������zf�4��'�e��yt��Z�����5��=�Yzf8<_h�G�*��g�T���="��,��<|�������9D��B�
?��f���S�B$R�����I�S��f1?���A�����e���1�Y!��$��z��N������������k:����am���p���C�������)��L?�a���;@�v@\���3�w�����A��fc2�eo������2}4L`�)�tJp���[����j�x�XhA�T`�c#����{n���&M��s���m���2:�'h������AFZ���� ~�eK�[�#H����Q�
m'����@���L2L03CTd� ����]���~��C�����k�~��������`��T���x�A3q�+q��1������xWd� �YQ����;������!�x���4��+����
Al�������1��m	�%r��G�E$�*~����8^��+ HP��O��x�;�F���zD��vT�v��/���|����A������4T'<���x;;���Co��"e�T86����4�#�"��w�*�x�$z��V���1
D@�}�rDyN��)h���hd����<?N�%	�H ��#{��	�s�8
���u���Uk"��Lw��"C[t��y�@w1��|�`��������!�\�5��a���cs�#t|�x���J1u���I�9����9���V�]2��Ob�v)+p���)�y�#�����U�LA��P�C��x�������w8��������
&��������7;�.�mZ��Pf���a��|�G|���KcK'���p[������h���9��#��G�� L�!b������������&h���=3C��n?���D�d�?���[��L5v��������o#�`��������Y�B_�,}w&�__Vi��w4��5W���;�(h.fX����N�I������F��O���o����ny�%C�I�����j���48�^�t
��P'�����^���L�mGg��"�������Q��������@\G'��31]/���<�RO�� �*8�S���#���D^B����EizHlx����T�j*���0���p��
J#5�Py]X C��53\3��kM���x� ��nt��'z#TN���w���%w��������c�Fo����%=<����l���������l��� �D��<)�7��?�a�������&A
D���Fx�*�wG���$�iS�J���(�F���@�:��VG���?x�u����8}Y�r�3�T���M��'�!�C��pfV?�@�+��5(B���A�kaQe	�p�jn���c�,y�]�R>]�:�Sg0������4����Q���	�8�6�y<�'�����������A�f�kz��r
sz;�-h:;lT�03�}�?�a���Y����;�����8Fols�m���@�i3�w]Rs�>�����>�3-�|o][N�v6��&����������FZ������H':rt��([�l�=kN��3?�Y�{�6(��_�l>�F^��c��M�Y�k����3���y�G,�x����Y���X�j�H��`���
!���W�h�+�1���X4�M�,�q���M�,�{�Y�����0~:�y����r�Mz�����m�<Hq����\t��5�!w�;���j���s�����~���������?wT�M�������������y���&Jr�!�;�}���~�~��q���,�A�����g��F^�%#>�N�n�7��f9v�f�wnw��0����e�]�Vj��"$��Zf�UY�juJl�B���O���`UmY���T���q@���%7T�bo
�%:�
2�[���� ���$�P�+J~IP;T���^���h��+���f��,A�]c�����#&��yfb�������y@��#�����rWK�r^L���<��X�
��V� ��R�rL�mH~gV%���t�y���n�+�ct�w���V���F�w�Tv~l�y`m;�x�n)\sm���+5�<7����)���5H=�QV-ZX�<�|JQ���X_+Q�� Y���9[�u�E.!���6���5�>2`A��:�-Hz7<��U�N�������5�8��x���	�����F��_�(<������i�l87Dx>]��]���]���Em�+�`�!�Em�����?g�w?���������<���W9��1�gj��^8EO�-A�M��I4�t������:�wp�K�������
R��"��mddX;;X��+
/���m] n{.�������Y��6y�[R?�/=����CV��1�7�n@�z?�\6y�����q 2: }���q���;)�>��u� �}[sx��q�W����L�p]�p�Q������M-�%8<�r8�du��3����E Bcu0�3��4
�sPqh8�iL��P�g8�i���vU�p�Q�O��[�p	�����,az�l����6�=M��b�W�%��g0����W���K0����������t�&�@fOy�xNL���"dw5��CL�pt��������d_��/B1�����
&
�A�<���KY��d2����_UUG&3�s�f�>��+�L�&3�,@�L�������h&�WU���L��h��N�3y_ L2���Z���d2�&3�Z���d�]�&3�Z���d�I��d&�k������Lv�E��:� ��7S����^���B�*Wb���0W�r���b�-�2�ZQ�	�.����n�b�I����
r�>u��tdH���f~����n�<\��%N"����{�����������y���r���p8��N����`����������|7\��_�R�o:�'�x<|�K �O#XO(��F�i:�(�L,+`�Hj��
��~��Cv�?����p�����9v�{��������27p�"����������W/lZ?��Q`����i�I���a�01�����z�`��b�����`��aX
����FfNa`BX�G]%�N���z5`R����_��M<f�����_�|Em��s07	��������V0��3H��H*aY��}&r/��zj����dl��T�E(�f�L�,L$3�J%�����R,JM��"�d*Mi.:Q���A&v��d2���I���S�����HlzM�����V�)-J�H�i	���Z(U�>]�b��b�X��Zx�r��qW7&�cM���fuBY -�7I����lL��cHU���]���d5al��e �^9����fy�V���0�}�Ic$�����Zd��+���+����ni���yRlL��L%
�������Mq b?�����ep'E���-��!=�E����='�o��������(!�~����������K�[I:�8w�t�)k��<:�`C}�g���l!E��(�L��pJ�����
7�\���Gu&�Wm&��Y�z��a6#�Sb����M�^a��~Vt�Y�����s�t8&���SS�(��p�J��Kq����p��t����	<��X�#��=BP����O���r�-|3)})���1��k�U���i�D+�-����{X@���Hd�������%�K����k����xw�����E[��=#�����)\�$hY�f�?��%���%A[��5��wCc�����C��D�^uo��`��aI�Inl��1^x�=���N��/T�f�q���vm���t(b�9	�0y�-Z@��4-����g6)�K�$,JG�y�����xL��/K:�&Ac!��(�=�x3��9�u��.�f
5�� �-��!�<r�f'.�8�������Q���A$�7�Di��>_��&�x���qy("�t<�&���'C���(���/�a'f�������'A
�W��'�D���BPe��x%�!��Gf]��`���El��	|��M���wH�
@�X��6|��ao��y�2,�]��/��C�j�)`Q����_�6��/rWm	�\�;8�K�t�D�r'+yu�c	k�2��?/pd9Lc����m���$�d�z/�$�_���m��M�?p
�/�v���>�����}������CF������}��nET����zM�#?"�wL@����(}���!za=���H���c{%e�����{5v�'���X~<�^�N���9+JNT�|��W|d�U�_�����R	�_�v�o���9�����,�o��5�����)�[[#���wq�f�E�4a�bH�����I(\����7o�.��~�6n�6n�*��V#���1���������<J@��<���O��������g+�����^>���L��I��/��9�-M�e�%�.�i�f�L���A�;Y�a��K���Y�^#���M�������i}�����A>2�@��&[R���MP��)����<�&���������Sf���J
2��W����iB�~�s���L�N�x��c�^�cZz��V�[w5fka��G�5V��A2&L�!�7e����?��_�*�R���������T�-#�{��D����H�R8�c��)�;�J��������Q/��������8�!{vX5����U6���9������#��J����k�]����l$�R��r�8�z��Q�b2V������Hx��
x���u�9"N�Ksr#;�H�<=R1n�0="H���a9X����C-\LKs���xy�����HW�
��Z�8[MV��@��v��:�V7�oQ&��v���������`q�EF���+]<��}��O"s��Id���}��V�^i`�	#I�d#��r��Yl�^�XTY+Q��}U)��(�0����Da#���$&�5]
�4��
���<!���t�4I�#r�/^7���H���S�y��� �E����:U� �#u��D�ugC��x�w��
9>6�i$�@�IW/��*����36����QLs��52
�D���+�����u'dP��,I@v"V$m0�;����fu',`,��T�mU�,������������c
17�bP�����~`�����oW�]Ul��������J�%���|�f}�Y.�lTe�Kb7��nUlc<���[��Kb7��mVn#����V]����j�����j�g�Y����������(� L�A�X��W5�9�n�8�q���S��P�8Bg�����$g�J�9������,��Z@5��r���$�����k���H�/z��|�==E���XV<5��������0B#��0���D����|���!?�����ai������0IP�R&�g36}~Y	�XvM���~������w}+N�}Q�\-rY�x!2Z�!"�7��.��S��2AXM�X;��^��!�x�(�)�a��nzco`�9_��g
\<��(/���r��I��m��B�W��f4�&IqB��o�$.q����#u�^0�m�� ������F�D�q�|w��@��yy�a}��*�����w��;��IT`����w�����)d��xB�����YTT1h�����9Q��eT�e#��}{C���0�\3t����k�%���%��j�6���&G��DV>G��9,!����C;���TR�'ol��f`�VK�uvL�,�=H��i�6����x4_������-��b����:;��\'Q�^DN,0Nz.Q��i�;�y��Jc"�l�*�/��O$�e�U4eT������5���q�$����2.�g|(��Y��^k�?3gTIwd�>W�2\������@']�`,��n�v�����JEfd���	�~��)�����QRfl���m��k������:���m�y�����������LjU�<�u��9�!�{�i��Xj���%e��h/�\��`���)�	lL�>�!u8��R�N�X��"V������T����>������&:O��We����M����k����w��T�Y&�%8z�����ct�q���(�qt�}{E�<-/��*Q&�]$�{���<i�12y��
���c�e"/��W�2�t�g��Nq)���T�.��}��T���lm�������Z2.,��3����u��SM�����2��9������d���t�tju����e���t�t��8���yK�f�zt�tvst�x������]&�R2����g
������?�5\�X.�hO�D�>��Z�G�f��i�6��&�~��VU}�c���u����;D�
V=��"%��CU�����k6h�M��b
���R���b��I���U@~����
���V|{�
b�-����6
�x���x5�S?�y��J����D�&�'W�|���$7����c�b���������n�#�8='��>%�m����fBGhO�"�#��<��~S�bt������������C~&	�^iXvCfj9U����p�J�<c���Dj���s�s������Ru����p����H�����}p������5"j��cv��`|�������F��8
������,}V��2t^����2s��Oaq��wY��:e�b�|d���������I����$�s�Q	������������/}-�H�|H�� 2����}�aR.�a2��p(J�����s�9��>����2<�e��.!�3]�~�a��)��u���r���\�g����Zc.�x�z�w�<
�BQ���PdyY���"q3r�^T�����c��c��^������:��d��re5D(P}6���I��Y�t���8����!�A�*Z�QZ��60��y�J.�S�O��1����t���v7������������6��<:��]�|M���$��p��hF�M�(T��4��l8v�����K��.���K2�!?�#�4�oh\�5.�k\���������m����Z�0�pb����
�^�b�g��B�_	��F��3����
jU06�[�xl��0}e����ZW-
a����f�EI	�K��?������dK`F6L��7���[�B'��/�<<m�h�E_
���@4
`��^��� B�'��#C����9��s���
���g H1O/!�@����{����7*d(�aM�r!��/j��1�-�#"���Q9D��]����@��D>�>2�����a�V;p�:��"	�gG�t�J��D�J7�:�2h���JF
��T�5�|��S:�)*����|�r�I3
�~���
4��e&��4sy��0!���9K��7F���(�fN��f���
65��R�5����+���"�M��ub�HC��#(D��>u�;|��:�c���y7��hA�k�)�>�pr������!��Ey�:'�Zn0O	?����#'�E�-=�vfx����
9������}.�=F����e�S��[�x^yn�����@�OT-����h+���$'�)�.�;F@���I+���VCk��?!��|EM('�����J	��Z��������n��5�gc��k��V�m�7�����T4��"�Y���q���g!�A
��C�@f��FR���`�����`�+�I�����3����<;�E�!JCDSPf!��(�g�G>>��wr��D�l�N	���(�>v�&���� �/!��`�  ��������	���R�o����41���2v�9���MHrcm1D���y�T.�3�R�����}C�����>���f����g�tl�}0XXto$�x)x��*>��3�e��:��:��`���u����nSEu��r+���2�Q����3��
6	��� �Un^��fER\��y��#��\���\0�(���T{���_��;_z_]q�~��|������7	
`�S�����f�����v��V7���x[�	����:IP�0�_i�����e����!B�N�]�m������$�$�&r�s]
��I�x� �1N��!/���]����S��%!�r5�A�6A
L~�zr�@,Uf��s����:
��;�"] �	��J�@m� �Mk��5����z,�1�Z�B�����l�����w�t:f���-?�,'Y���lkm}^�Y��l����S���,���4��	�{3d�$`O1����#�Rd�����K����x���F�+q�[��b?���ju~���cX�o��B�P�V���W��k�����-�K�����rU]�:��G>��G6���'K*)D�".������qbd������:m�
����Q�o.�����p�Ls1�.�����2��/���Grm/I�U�`4�;n	�>1����� �~�J�*x��j��V�y�@�C|�
Y���K��V���O���~?(�!���#������-�:Z����<S�P-����q\�+��#�����a�9���� *�	<;> <:S.��JhNYq�E�)�����|x|=�!*�������r���j�0����k<��qqI�H�@����su\�'���a��:i�Dy��k����0�����~�@:c��mn-C�CE�2������
�>= q&5�=
F���=�%���U�m��c��k���m������O�$�P�r�,}`r�2S��m���	,�������n�1z`F��|��%���������YV���(��xn���&q=\��
�Cp�wo�������r^���=~�eM7�/�������m�������SD���Cc���5����w��j�/2x���_���g�w�V�A��c(����{����+�n*���_��oAX������ju�pc,�9��N<�Qy	�_�[�|�DlQwz&�j"R���o@�p�h��S��f��w����y&h������r9�7�4B#1fC��1�����������W��K���0����g��c2��D����+�7��z��+��%;Eg�����[�_���o`tq����������.�a�R�A������6�X1Q�A�T�+hA���w��u�J'���*E���Ea�yG�M�y�n�`��lDx����,t�����C��������OY�������������D��<�E&���d�� ��_��-��\~X���_��;�p���>��r��nw�2�B<������u�`��6�����331��C�!�r���G}&��!����w�g�TY�;�LW� ���rK��7.�D��(>����J2���q%
A���(�m�~^�Pgs*t������,�@^��	��%&6?}q��in6����X��i��0<Y�9����*�C?��\����r�����=�q�5���'����Q������p��F`�����E��~X�j�V��@{R�K)�����W�~�O���#^1�3����ox5�)�}���B�+Gi��y���b��]B���}J�b)�K9��3�E������~1�� ����	�Z��%zW��)�g�~�s�����^'y�Fz�~���_�����5w�|���l�xm�������B��3�X�1	,3��[�s�@���������!!��-�"B��]���-�Y��^/q?������?����-T�'���G���pw3tTx)��n��qZ
`�{��ZV�}5��!���CY��#U�5�FyXf�2H{����
��RnM��.5,P�'���
�Sx����F�C
T<H��Q�
U,6O{������Gv���D���-�y�&���\�W*��Fe�������lU9�����8x��]����f!g��F�/�-��<���6�a���
�L��Y��$�W/1r
���\J�;����+nyh������z"���.9�I�O���wbA����r�;�U9�b�-�b�&������?"��U�����'~���#WNo�$�!+��E�S�\�����k���)�����;��<��1J����;o�&Z��0����,4q�yvd8����[��j���pD�%N�j��C��z�u��KE�����
w
n��4�������[��"�@&w2�u�|s+L�,��sG�e�� f�
!�����V�A �CB�3����@�=[-�����+9h_��P��dk���>��O�K��!���x�ER�I�%��z��W��/}�q|x�f��r�c����bg�%��f��p�����1���k-pI��$N*"���gB���i!0�W7�U;X�[��qy|>||_��ZQ�@�Vu��h����{	�����R�,�W�>��ed�.���Q�����\����;������H��2��A�����ML:z�9��l^R��y]X�#�����@J,�P�>��������r kr4��9�@J��^	�����'���t<&�gXyJ�U���"#���|aK������mk�����3s�)���)�p��p���%�����`�������uUP�f#^��Z	�eE�R;c��B�-?d
��w�+i���P���xVL��Xko��EU<K�F��P����,���#t�x�9�SdL#9��(4o�������"6��7��;}�f1���xM��y=K����)�M<�������$��)(EEI��0M��6��n�^8���]�+�kx+p��{����������U�C#�B�r!e
H�B ��!�<d
[8�id�
n�4���"�Rm�M��A�V�<J���S��%#�F5v�����3�9��'�2�JX�%��P�������7X��M��p�E����g�/�[��h ���#X�� �>��n����:��U65,$��
�7���J����l�EU���Z�o�Cx��6�WU���0=G<�?��)�=U��/I�O�8�#4��>���HX�&,������lDh��)�7������Mg��$:���
��S�+q�%'����j��������-P������xok��n���	L��
e�A�7�sD�S����N�GU>q�N�6v�-�T�HN�.�;tn��x����,��
�z����"�2A���-5�h!�:�qS/�����f�I���\�� IKX$Q��^����V�������3����|K�W��e�i�l���h�`��y�	��}�Z��Q���f9o�kv|�F�����o�����j��������O��v�p=~�F@�z��O�[Z��]P���[��	�����G��,{��jO!h��S��,Kx��X���B��(L��T������|��3;t�^��9��J���3W��7�������Z�{`^�#�KmEZ����@���p�].��9��I�4�
��|�De|t.L(_C���v�r��`��1>�&6�4����+z{���g����q�g�r����?A
�o��~&���w�����>!��$�@��?����X��d��6�vk���g,2��n��R3V�g���h�x���cH���1��B�;qz�!�S`�����Hl�M9$������ ������2:8����Y	O�O
��
�k
nV���:�,8��Fn?��]�4z���_ ����rn!�Uv�eS����6�`�xn�!�_ua�Q�%�hb8�����/#����B���?����E�s���;����E�q�!0�Q���e�	�io�if���������&�f������Z�Jo�#\�>
0u�1�g�L����}"l�j$0��O�6l"`�[��a�x�X��7$N�d��%%@�C�����O�"�"��0����'��u#J�*�3�R[�S�"lb�@����K�^`�������y�*H��E���Ut�F����^nc��.�&��K*Q�v{�����cV"�8�fk8\�v�|��,k�>�1dA�R N?��H�Z&F|�����>X������51��������fM���'F����#}�H�k
l��� 0lbDt76ob�-1�f��O��a#$FD�s#`3'F��Fl�26{bd���sm����CII��
C��#C�GI��
��#���T�08�?12Q#k�(e��H�(Bb�.��d��H$bJ�t�6{J�7@!�D�p��H�j��1��M��JtJ�p��N��[������s����R���w����?�_�e����~��,��5;��a��I&����"��� 	!�<�P�C�ch����`}�5t|H����
w�e�T�+�xA�c���(�x	��593�	�a?7��.E��TWO�y[�z�����0���,�IOa~rN�K������6��k-5 ����T��6��+�1 ����d�p��1�)�i���&��g+��5�'6�,|�Y2c�= ����D�����R@�����Cp
����(j�]{�B��$FW7b$�Z
���w���FbX��af��#���'�!9l����: ���2lm����b�x3}p�j���}V��9������$q(�j�Fro{kDs�}CD��5����)"������g��s#�V�f4�LC�q��<1)������"��e�����~�����������z�*�Hi'��
�.���J����Rp;��lT)%?;Qn����0��RO���Ym�W�������X����9sb
���'�9��r��nl�.�G�����	`~��$Y]wg���'�1��F����2_�������|��%�E�8H;SH�b���XB�Gio�xK��;�
DDi��d�����@���3�[��0�1+����������QC�A?����4�>hs�v����������St����1�C�^�-��������;��������pj_��%�����@�5��������~����XB�k��6zP����������8�J��������}�����q~~���9��wP�+����aln��<�d���EOO�1����yZ1s��:|u���L)tI�;i��=��W9���_q��H\?���������	|
�|x5&�b����u�j�O$��wg��cH$���\���<�� g����pP�!-��Rt��FA�(yN(;^����6����5,�����|� {���q��:�Y��QP}��n�������[���y1n�tn�n��3]�i<���/W��0o��f����)����;���3\���W���-*E������K�\\��������Na<�c����f
&N.5�
U���+���A���6=lGK�M���]����l���.�a{i%���`��n�=`#����w������l)�4BvB�p�+Y���cu��^����WS�t������0�?x����+��3���0xs`p+]��u	;=��1x�8��4��������8�H��1<b*��	"���.8uBS��@�y"��3V�jB@��x�J0_���ny�4E��]���eG�����8������g��d[?�;���!�M�(Y����p� ?�O�O��b��Fc�m$o�[���q���p�� _i"jd&����Y]����t�^s�BQ�b�n�O1�
0q&�q��FTl��|�qjB��c����"�z:5	Y3���IXt�ohR�T����\�$�S��M=��;M�M���a���k3��<<U�B�z�����=����T��:c��5���X��_���D�����~��v��KV�,����<���:S��z��*���<���Y �����iL��`����,`�Y�45e
����k�~U�@�����k1��=M{4B��l��E>�����h�t�^�S���CP��M��_����m�e��yb(^"�-����s�W��_E�?�����o�?j�0���^�Oqtr�s�mPED���~=Zy��	OU����������$4�������G�V=5\C���x���~7q���(���
I�����9,���c�����/q��GrP{}�w�^��Ao���'{��� `��z��R/�B(����������C+z"L+����Os#�O#������,��t�����O/[�`��H-Z�W��4���)��Lr�sp������fb!`uaH(E ��R�!!l��n�J�]���C��i.�������� ��!q�;�7��� ��Y����,���*�~za�*����#�Q���������V�S�R���B ��^]�^�|��
.�0=������.YK��^�4��o���?�8H&bH�F��0���zZY�}G�,l|G[�`bc3�0l��w���Zl������V�S�Vv��;zuaz��UpY��K���h���uMC)wG�S��d��`hF�0jv�)e@������iD)���Zv�`�FD0��0�����(�R�
�?)x�G��i�����2%42�����>��>�~e�$j��	��!�Y��q@e�H�{oj���E�Ll|FW&�h���C(��b�C"W��T1�'�����6��W���� ����G���_���e�G�9�1�yx�F��{�,������� G���
���1]b�s�-%��i��Lx#F����Ov���q�Y����Nn4(�?���T<�}3����zz������VNaHz&���Qh���{�������*��~���7m�������Y�wwtg7�h��^1�&s��0nt�)e@���e`��k�@&�P���Zv�`������)$`����V���j�]wR���^w���~��~e������I�<%k&������w����i������~�c��]���N��5�[��4�2�t�����m�"��}|�={������[;�3����iY��XO��~�N,����A:���4n�Qh5B�����lX������6bUc�?���Sx�X�|'V.6PN���1�:Ta�0�L��lX�����A���4�5S^+���"S�3l0���t���+K��c��.���#v]��p��t(_��p���[�G'8+��D�O;�U���F�sx-�q������ex��_>�X�����_���f��!C
q��a����GlC�
(���u�����(N���O��c������^������Ag�aV/���������	w�����ws0>TC�>�����m��E%���f���d�o���~�>8_}u	�����xkC���w����,Z��d9�����||��|�����C�c
b6��*)�X��{F���u�c�c���&�	�����qXB/	���E�^ ����=���ED������M2�8F6	�$K�p�-���<�.!�e���1�^E�"f�B��q9��BF_��$tP�R��g����Z��("���K�
	/�������T��"����Vd'2����Np��#;z�T��Lc����cr;�X���w?���<�Q$����c��lr]��#�{9��u0|��	�J$Le���,����{$5�|�rzOli�f'R�#oKC�!�A�Q�sr�U�m�6r��T�)�A�b�
X�]z�AV�a�+����cx��YC���|&�'�f1�x:���Q��xG�kV�g�h�59<�>��5/�X���9D���&����i�1�OJ�@���Z6|��0lSeI1R��3����i��5����b�5�(9B���|@���[\#;��T���u����d{
i���0}E���3�� a��F��El$c�a�4��J�yk<u��d��X��k�mj=v;�SH��\�d1�\��B�[��fx_1l���c{���3B�s�c����3�jM��kW���F��F��o#lt��b��&s�����(v��5�M��,}�a�`
��QI�����	y</X����5��p{*��R9k |NTM\�&(p	����{����!o���Xs�#���z�P��%p�-Dk�w����]>TS��Z�����(�.`��ac@�z�A��w����m�-���l��c�%��*��X���Y6�^Q�dz#V�v����*j�IH�T��Y4����b�;s?d���%���Z��YZ�H)
��.�5B��m��l���)YF���5��f�#{%I�$d��������{{���&��S��^L������-�]?
��@���Q�����?ea<�KYG5	Y3���7�?�@��({�����[S���D�%*���#�W8��v%���!cb���*V�V����/���?�����q�+���(�������������]`b�������yx}��Cc
�9�w��y��Q6��k��^�q���qG5�����,vq�g`
2B2�J�YQ�s!���8K�=|
��y)�q��%C�Q�~*)���
��<T�`��47S���u]�u���R��|_s-�yd��8��_��8�:I2�n��yym9[h�8'^����m���8O��<��|]q~�\5�i��q	�$&�v[��q{
g����C�.0����Gf����������{��R�7i��_�Z���?������.����l{��R��v���M)�{��R�o����{
*`�����s��
�i�����T@{M�<����&���-��$I�|�������
�%hq����
�e��<]����s���~
3��Aj��"9���5�B�[e:
��	�j���	:�G��yC����WtI�
-h�j3�jchD���'PC;xm��O���)
�6�Dc��C�������T��A#�:�J�x�N�����O�
����w���`�S`�Y+m<��~Vi���w�O��*[����P�S`���M'���ro�
�������S�/���F��q�J����S`0O�o����`�����}��'�`�������O��B���`�`�����1s�:�����;b"z.���m��%�n+,����0�(s��^���"��U�[�C`+]�c]�}���?����O*���X��i����.�����F�k�%��y��Id�NyB���"_��FQ��Y�����<sY�O
y�Hy+9^�I��Iy=��w�gs)���
k��q`&eB)�E������\���YE��c�Bf�Kt,����(i�h5jJ���M���
d��	6�X���$/�4RpwG{E��k���X���k�Ej(�X���L���b��F�Ls#A�"�4�9�^����fRJ��Tc���Ys��8��{�R����42�|s��'3�%��$b��^rl�qG�$	[~�&{���L��8�A��y����b����A��u��]���v��+*�<��gc�����hXs���S��j%C5���B5k�75�����5k������	�s��5���osiS��D��������$��zK����5���oSio�]�+*�\�
����9$9��^������jz���5��	?��[�Ud���n�%�-������F�k,$�JM���X3�}g-w�4
�d��(�����6e�I����,K��LY�(*�<���R�-r
k�e��:���*�YG�r��b��A���#��������HX���h#a���8��EweS	S���$�K��%�[.'��Z����yv4	��r/d��5��q����@hT���jlG�[����3j�vm�;4+\p��e� ��b�H��a�W�d��^c�X��X�+:��oV������`n����-�j��;oZ����5<�c���SvstR���:�����['d����pH�P��5�N��������QK�7
����W{%v���D�����F�N���Fc�T��>�q{U_����`�����"�5kA����h����"��$9�w�?�lWy�x�\�hSo3��0��P<M�|��g-s��
R�Ak{
������T����R��h&�j��"{��5W�`,}�����5����c��6@)KY��5�����(��P#c��ks�����d�h��K{/]2����G���%L�dNY�6HYs�kpo.w�a!��5�ugQ���U@�.!k�����A������-�u���q�;W�����*Z	���Xs]�N,3_�-��]���5_C`�0h�K:������\�p��H�5Ik����U�q�7MJ��7;�I@��f�����C�����M��:��=��9rs� i�b�@al������-������f!��TPZ��f���6v�[d=iE��i�{��pSYS����5�~����q���5�kQ@��T��E�"c��F1m!h�zU�fy+J��WSASV�k�w���-Q+*�Lsw�����tK���X����6�5���b��~%
��c���(��:!k�]�s���F�&c��(�C���S[Tt���+������gzYs�x	�����w@�vlP��}��n����Q�c��l�l�r�o)2��X����6�p�:��Id�R^C_�!Y�x*��Wl���
������F��:e�g�5��#�n��IY3���[���z���YW7a��'��'��h��f�o�?w2����+��d����0�)�aE��o������Ww��Xr-���/���e�� e�����qL���7�(���������K}p����1$u��q��\��,_�]�%+��
�1.��]��3�#�$:EO������D[��w�f���c���8��:�� ������)h����V�:@ar�D��)���w�J�|�
po��Me�{q��+j����l����!1-Q)�Yd��a-��1~��O�8@���62�;M�Vl�,�ua U�M�R���ST�X���O�S�������;��@��	�(�g�6��&�#3�e������5�|�gB2���!��+\T�_;d�@��]��9�z'J����|=��E+D�{��9b�O�P��j�F_r���"t���������vi<�u���������	�CE�A�����w��e��y���<��_�������})2�;�s����Y$�&y���
������;���=e)����	�)�~����9KNp�8|��a�
��I�%	�=7�k��$�x�e�(u�SY���F~���>>��K�m0> ��+5��nh�N���V��SqI���~�� ��0�B�%
��o��%7��6��0����{������7FR�lY���cP;�Y�2���(_Li<o�kjZH�+ x�@	�����giv+�4+Y�rG���+_��I�V7)d`��a�FI�gf���'�R���)�C��[��5~����N��} QW��\L�l�O
�/*:9���lZ�AE�B�>'za��x�����[t��"<G�s�7B#��!H��<�+h����Rb��_�v����s+"}�Y�NIs`��1�*�(gw�f�������k��IUp����%�9WD���FH��!]aHwvH=����%�q��
���2��~��THM�rF����DX+�_�/�c*�l�	Z����h#��C���3����oy�������R��1F��@\��U����`
��+�P��#��iQ�:���GgFq�"�
����\[CR���R�	��;��+0N��i��Dm�,��_�/
O'7:_�n�Cx<�.H#�=i�x��(T'��f��k�b��eYh@qFxA/I������l�"�z��0��W����	R3bf�V@�=��l��[\��b�p�].�E����`K�zZ`a���?���������8??G���8�,}J�c)r���-��W������S9��������6�?W���fK&�H@a��>����H��J��b6�p�U7���4�0Sg~y��X����3S�_�?�oF��2~��`��)�&}���0uTo��n����F���7����"4�Az��H��
q-�h	Dl��<�!�������	���� �q� ��)�/Q������0T�S���6|7��H��^wW�7�&x����_���E�u�-&U������r�u|=t��;�mq���8ot Gv�g<�a\�m*s�������Xg�G�^]z��>[{.��w�+V:&C-�_�yt|�m����;���p>�ED)��e��m� �r�^���=���8uB�~�H�M�X�
����g@����^�C��Sf*%8� ��)��C�W�,�-(Ae3
xrL�$,J6�� ^���0��>I@���O�`�5�p�`��-t"��N�
��������P��mU�����7����[V��Lv���CH�~N�Y%- ;��]Y��"X����>��;��$���{����dOp��?������d �gv������[��[%�u����(t�
�*�}f?�fD$��;�(��~H ���_Ddd�+b�rKrZ���b�D��������Iv8k����{�>Nc�"�����O1���q���%n/�rSR�(� ���MU<=�E[��.Dr�
�y&r�-Ur�X
��9�`�E�R�!t.4�`��_�d���i���������a����%�=����<�@.��F$0��1�~W[S�yY���3���g����s� ���x���8�y�S�v�C�k�'��\��rY��VlBa��bw��ohZ�?@����-���[8z����r�CU�nh�C��B���@eP��Sr|i�uTj��[��Y�t
��*��<���`k�AY��$��c]V8�L�-N�����0�<,��J������xYH�^�J�r*56�Ua��`"�l��`�RW[��A4��#�Js!��t��k�^>���M��4���Z�����y�`SS��N�@K��� }�0�Wi|"Q��E��=��Vj,���������q^5���4���[�����S�����2�^��0�K>�i��8�,�X�{H�.��l�}z�Q��K�����j������	�8IlN6a����F���Q����R���`�cW(���2�"�4����q����2S�;���j��yH7]n���pjF��h�D��z���
�h���Z�2������Z�������1s>���*��	���eNo�Lg�)S��R����O����T��L�~xpZ�7�����pM%��q����z�
�ItM�-0qeDl������+�kQ2������aZ��6�l��Q���a�+�V�&�'�p�
M��~�
NI�J�B�����]��;f�AI���2xv^�I��C���N���jc�OvYK}��8�zmD��'1�����;��(j�����������(~\��A4��NB�O�����do�Gp'4���{ZV���{��U������7��X�4�&i��;XuF�R��h�%Y��j�[p��x��>!h&_#�Z��X�h�����F�5����!h�	����|�N,��I�l�x��g�d.+�Fu���s���l`:����S���_iJl���xF.��[>��t3��v��u	����759^2g��:^+s
�k,���~:�L����$�-TX���U�I����$�������=�|QUn�6^�eGbk"'l<��;������H������S�bSj�y9a,�OUol��L�`�lU[J��MVM��|�|�Qm�
i��|,
���J��%�Z��?��=9�$7��w)�s-��P�
	t])���y@]�)���/��/�FFSlq����cUo�"��Y�� :�!�z�_�@as��a� 9M�V$�?z1�������;�{P���e6�
xQ�����c�N[���q/���q��\*�K0kH�yQI,���I��{��G������h�=M��O��n5���=����j�?��-IP>,���R������b8�'
C��0�d��������G'P<�(�����'�Z��`���+x����#M��hM���������b_�|���������&��s2������=�{/
�Z��"	~�#�w�S��d�`���*�x4s����76��\�H9Sd����7:�\e�����BziLM�����m�S��0�D�$��sB�.x��^N�U�O�w�����?Q��X�?m�S�q&h��^8�������%^���:K���2F?������}D�/��sdU�0�Nh�7�m*�
D0*h�M����R����u��5�]�&��6~�/B��tF�U��>�h�d
���?B��J-�27O�%����
e�*�[Q��S������B��dq��N��Af��VN)��B�$[��z��|@�yR�J���@��,x1��<)C���r��5�Vqt���+����!y�,\����	���q��=�Pd`�Q}���!��+�+�hE���@����19��
[��_�����L��������������?��7�J{x�%_[�v�?a��|�I�H?��ua����}�T�9��Z��55����@�]O������"�y��Vl�b��'�o%�hd��o�%��k�^Cr�Up[e����$^>@u�C��Z�D�j4^M�����@��h{�M3�@�C��MN\�������>.����)��*����'��L�(lK��!4���4oDm���I�
X��}i�8�Y+cI6s�U�+\����K�"'Ze?��U�<~C���k��h��Q��1�F+���[�s���?s���(�1P�l"�RckJ�=y$�k�
xn
3p��j��q�"�>g4�nA���;&�#	��!!7{8C!+5�)5�	p�J�)�����n��������R��Z�A	��rX�?�Y�Pb6:I�#L���:>���c��d�T:����x��x��}��������;�xR�Z�U��
NC�qY!��Cu��UI8���[ZV���X�u=GJ!O���&��@��QnN~�[�x����uZ�n�/���7<���E�

J���,z	���#�n=/�P�P6u�9�(y(���:�$C5q����l�,��{��yW�3����(D�J���1f���=~GK-=B5��
�i��-�(��tMcnT������]AZ����Xu�����@�I���b4�b4D��K��=O?G�{��'1ms�YEY�:E�5
����� 4t�yA�]t:X):bu��e�)|����;@�����^�K�b6+�I�N���jQs�>�����q��@I���5����n��N>4Y6Y�)Z����69�u�!�&@��N��`�����u�^��w�C3��`�y3���� Y���bV��g"���Y�/���g����?���6�bd�w�k�HX�(�l+V5�}��v?ee��Lh�l+����/�v^�	��J<���=i���$D���a$����Q�H�����/Uo�)���+��f%-�����J�
k,rY%�9�pKLPV�]x���
�n���.���(^PR�+�	��W�=�:�8���: ���n���~v�����N�=�����.�2��7Z�d����.:���q�*��ct�dZ��E�Ld��Z&e(2�K�,45,���0w�iH���9a����>=lh[9�d���p���|NN��Z@)v�\��_qJ*(�,���Z����d\�������|>������G/�v[R	6�#	8��4xA0\��g:br:����Wt��8cb��K��	oE[��b�`e�O���4����3X[ AsZ?��V#;P�n|VA/K����J�������_�D���2�NN��\����rYPy.�����*�2</Ce^�O�/o�Y<`~6�L���m
�$��~9���>�������0�(N��9j6v��A]k����"@+V?�p_6���� ���.������th��v1*����2�MU��	��X��/t�D5,�1^x;��;�:�"�Ek*0��;��A�qt��b��R��)���������S!�0����)�u@�
�S �����H�T�Vu���H�z��ad*���LS ��s����12��3qS��cdZ"�g�MU���id�g�����t2��s��z��	]
���3��Kz=B+�-�8f������rv�{
�%�p�]�A*1��oX�������
a���P=��C1�#��y����,e� ��5E�i�J�>�K���thk�������g��C��.���]�����������4%Nk����T�vr�e���|������!^0Z�fe���r��$�$*{$�>�I2�P'Qy�a�zN�T�De���E�wA+O�,��YHT�kX�_��OU?H���� K�jh@�x�4�Y���H�`�x/����	�2
�Inx�����;@yx[�g%#�����U�t��L?���(��9�������?�-F�`=����~w�M��#3\�"���m���q�
G����^�V����H��r9*8�@�Z���zR��5���H������Q��p���<C��B9�L���D�p'u��k/��y!-�i{��}B���38���Z�<L-�y��2�a��rU��D1��d�
��!i�q���3+L'Xr������F���c��z���Y��s���������e��iB�&��6��.c��Rb+�)�'�.-}f�
�\r�Vlh4�4������w��!9���\_��SP^sV%|��3���7$�x��[Jj�[M�B�����������)P>\��>��/���\��I�{����pC���k?�%������P2��~�=l�l�-".**/6�P�l�Wm�)����V��1[/�4��}&Z���m�������hU^�����k�g�Uy��6�2���[�K�6��U���+��������!5�6���;�DH^�d��
-���w�X��)V%Fr�PA�u��
*w�x0,?���ng|(�~Xo��w�"��H�����&e�y)_��0`����
Y}�'��:� �hBhV�h��\o��~���v7�/��*[
LJ'��"���S4uff��;/�ROAH�e�{f�R{��$�B��:4�����q8n�GN�x\�SzIs'��v�z������o�T=�[b��(�g���U���%3���D�|�����!jPvw1�����{�F<���qN��Yc�XG��E|���~i;���Y%J I������H�H��@L�AfN67��:��L1��PP�9���1����0J�;�C���s�C:g�tr�g���n}?b&$ko��T�`�*����z�@��2��M)�����i���_�n�nL�#�G��!eJ�2�M C�������k/x�Y�����U[��������7�9�K5bS���0|�X����(X����~J�����Z^������N!�N�NY�!���'�e�a%�A��[������'@fV��� mt�z��"�����[T
d��	�k�DheF��\
����,�($��(h�9�:
v�/����u�I"����t�(���/������^
2VS���e �~���N#nj�Bt� 
}vh�L;9�e��� �!I�KQ�����p7P31�-���������/��+/�21v�V_�������Y��"����������Vd�0�������d]V	58���N�IR3�F�&��hjsmH�koYi��.��`K�k�M�P��������[b�d�F�����pV���o��'Pyok0�'���G�������*7����0����~0"d�q�-V�)���pUo�)����@��j�n�wm�����QZ�Z���D�Y�t���!�*��"����T���m��<q3�R�7�-R:���J����N����(��6�R�t�Y��>�Q�^�h\�K���5��s���XG<�n�d|Z{/j�Z�y���b7��L3���2����u�rH�����
�2�Mz����x!$���Y��(�^2��Z������:MM�����RC6����E[�=teT�����'��~s�2 ���F;�R8l�������
����\�=�OcO�e�V$$w�g�
B�vJ��S@$�5\��d<���2;{�c?U�c�Z$eQ�F%�f%����ZZ}�7�������	�ZvY�Q[���VK6��[��w)Tw���I��[*������S�UlL�9|���+mNnY�������R�����*a�MiyL��-�S���%-�*[)�U"��>��t�������o�J��H[v��l_)�\������#��nG/�B��J�@��:����d�3��c_�����"0K�����������|)���Mb�w�����,Z��Bw-�+J����C ��L���r^Z��V�%,4#��8�������A_6�l��y�y��z�f����3���kf�����ud��s�f�.��B���Z�,N�.�j�r�C���$�m��F��9���j%�e�
����4~c�m�Ov	#v�OJ;�$X�gg�V=����4����y�����C`��0T1L�a����=�Q�H�D�;������4=a���/,�A��7��`�F�!��d���Q1�W um�!"�>y��������a�|�
�E�1�����3��G7f��#7c-��n���l�%��?�g�4DD�7��l�Aj��D��1�V�
��/�q iq�z8i�� ���`B6>�k��o���_����W�3G���<��Hbx,-+z,LA���`w!�� N:��.�$wy���n���rG���X-���"gv��$�0ZS/fs��3I��
jD|���r�S�Y�h�c")&7���r
)���y�.�B�7�Az,59=0	3[����b;�a�FrV����y����+�{����bpPn���X�<j;Z�r�w`���K��1��~����R����T�e��tTN�7X,y�UnwBu[��0
g����T�Y� �_2���
E�����cU<�d�v&���*>�\J�N'��K�S|JH0O'�rCI����>�l�-O(�l�����9,8���|GS;��7���ut�K2z1�^��b00�� T�"��!JD#�4��,k0�G�p�P�\���������CE��$
7��E��z����zV�P��0���a�����r�I1���\�a6&��:FyM��e�a('����Gu�:��0��3�C"��r|J.Gu��A�����QG��&���B�5r���m�je�a�SqM�/��C1���#���N{I":���O0;2��l�����L���2�Df��*���3B������V��T���R�(���;�S�HK
���y���3P�>� TZ�����;�0@��&F�F�I�
��Rx�o�e�)��8C�O�K�����T����\��S7�*b3&C8Tv�������r���q)����1�n��)�R��p���/�"��������2�{J#�����.�#��ev�_��gg5�Tlh�]������p7��9�Qx��e�$���rhnKfb�j�=�������X����s�~f������zO:[����������������F�������k����Wx.�Sjh4�����KY���> �c�t���Z�c��N"�n���]li,��nx�R��Jo����65�Y�:���$y���5���S��������=]�B�����p]�Cd����j4��ON����'{Q�-;`U���M&����$�o��W�yco��������P24�$�Y@�v$�?�G:�g���=���G���8��Tg�E2��`�F	�|���u��������v������.4M�%/��k(��f �����	&����4]
{��jbzw�d��z���?{�
G0��7)]��)�v�j3l����@�`�-6��������]t(c��LNz9}���p�Yn,�f��k�n.�6ET�^����wl��nd��+7�C�v���O�,���6��Ue�hWm_V��#���G�u"�u��I�@~Rq��d�8I�d�L�~�����-��h�&��R�0�C��(aX���w 5T�6)�����[��5�#���h�y�c�(���gV�q�|r��������$����'�C��?�+��<�.�j�k���F
���43�b������x�	��\?��;D�������]B��0�����/s��^�Q1�mq������?�tigD.^t��z��Nf4�P��L��5L��0Z��A2�1�^;�7/�7i��j~_	�}��	[@��Pd�#��1
����gq��.��n�~Q�����1�=�.B+Hz�N$G�����
�!�p&������"n��a=%/����7�����E����f�_��q�3~d*LA�e_f���F�e/���n3b	I@	�aU����U���8w��/�����XS����J�Z�zm�e�d���ZF���ThM����_x�CZ�7��[�R�\���.+h�s������@������?{���i�������dr��9>?�FM��)������-t��+_ 5iuM�@U�]9����,���r���
:�F���oK�N&�
����g9��5������?�{�b%x-i�	�3�IC�fA����|�7@i��{<�g�1?�	z<z��j�n�!����	�1��`���������V�W,��x+M
�j:F�`e���ez:U�F-���e6:US�0:���M������s�?��I����.$�:��	���2&`R#4�L�:.S#��s�; gE��(�>��+XP��p�I������\����q@� y���(��;�����������\��6bC��.�����q��e����^����t�mo ����x@���Z��,�����n���W5��	�Km��	���a����f�jP�#�1�����������4a�&��H�T��$�Ez:�&������fF��2�"���^
0X_����@�dp�f��}������Qr���K�p��N;-x�������wZ���N�,����S7�z������$P�F�����=s.��<��4�`%��S&���\�c�����=�����������I���5*�	���*����a�����L�u�C�r+�)@*,5wXa��{i���Z��pN�H y���e�0�*��fZ�0��?]�YF� pX0;��Fea}���>����v������:	�cr�-�����r�
������l�f�E�Z�>���P�}�����(Z.J�B6n���0�:��{z0���@Q�^�ka� x(�����v��`W��,^B?���
p������h����(6��o�n�������a��=	D&�E
b��r�B���C�ZS����������Cc\�.�0���1ITX����&T��Q��N����C�4���M���8'5�/�'����c�1E8T�d���O�
��(z����u���<��F%p��Q�o�P�{����"u�Ss�����o+��'�"�g>%���B��C.�#A���3�P;%~��(���}|
���Y\��%P��Mp<?$�M����X�RC�t���A���{a������T���t!P:��� JU��0J-�������F�-��|���a����I�8Y�~�D�T�-	c�v�����gm��v�����z��aa0�g�V�����F��Pu�r$���m��T�G�j����3�j&�V��gVU������>3����]2�X�9-h�� 3�m�������h[_��������sN���_������{�k
A[/��st<`�
�J�BRd��T�;��=������x�l�]��h!J�W~�j��Z�n�dbN������d$;t�[���YbN�o���9����'F�,��h��@�,��y�}���gSDE�xF�R���`����h��l��%�*n/�+Q���1#���o�Y��lN�^M�i&L�+a�����!YY���9v�9�"���6�k'~���������5+��6p�U���J6�K�i�m���0��l�9�]4M���er���g?�E���3����q���u�xq;��h3~�e���u��KXa���.~��s~g��@����, a-H`�Lz�����{lW_���
x��SB(Z6�z������Se4���!�����$U���t��;f���LU��"�A}��0���\�i�Q��H�����	H�1�S@�L���qt��:�5U��_�T�F[B.^����lG��z;��3u^dcHe$���j2a-�AY��������[��n��������p���5���@K�W�O ��y�v2e�(���� �,)F�@��e����Fi�<]�jZ�8JO�J�)������)���WV�15����j��9��-%D�����w�Y:a���6V�����@������w��eI:��K���P~US��[�a�B��@��~i�%��%`���@`i.���X��<���VA��D%�����vA3���l8����	�4,yj�O�)���+1{��7sI�;�@�5d�jY�.�E��	���&:1|�^���n��x<lF���@WW��*�9��P0�~p��
^4*�K�Gg�������V�@�E;j0�J4Q�X�)���.`F�\gV��LT8)`�(��3IL&�M��n��O;q-D�=5������%��/���M]S5����0t7��~�,-a����8p�MA7�'5kL��eAp//[
"Zz���2��:�ga���"����"��z���ZU	�Q�$	oiT�^c9�vF�c{�t�����V5��P����	6�7��w�@LG.5�L�0}uoS?yk�%eR��y�n�������-ez�2����;���2��x
�Hn9��Gk������]������{�^6�XlK���.9�A���%Z��w���\���0��)C�=s�C*�������b�C�D~�i`��)+�0����6�����J,������z2o��8q�<B���X���KG�����O�.a Ww������9���?����/a���I*D|��`V�9�p�����z�{���
��t�
����Z�j���YU���
��kY����N�k9������<�RV�22ePY����+�� ��1���w
��NiE��0�)M�d��4kE#�cxX�g�~A�~��G�a��mjn"@+]0p���e���W9K�%TE�*Z�����W��i�����O+����[a���'��|o�����n��gf�8
��M�����(5t������F��u�+��=��������%P�q��wC� ;�iE%��v%5��r4\�#�Sn�Ee�Ku���
.���C�"�S
nC�*p���5����6;��V��,u_��=��$�����	������!��VS���fY�G������F�\���CZ��x��3�Cs9��&� euy�P���t�Qh��P����������% ��|�C.lF2��?��={��$I���.e�V��0�����QXv��y�0������V�[�|3��G�-s	�e��G��Ap�2��q5D� *YZ�l��|lU�:HFq���!��:�'�����6LQFKUS9HF�6I8�p�:�'��"�d����>W5�E�Q'i9�Y���bRBE<�{e�:X�UP'���CzRA���J35A���f���T�c�c��<�����n��g����P(�q���O�jQY|F�����<����Q���v�c-�B��r(���p20�E0f���u4w�����Y�m������^�H���XH���l�p.�� ��L)�
���l�0���.�����N��2K�`�9�
N�T7'f@��������O��E�<��&�J�@ U�7]Z�s��g����-K�G	0).��$��SbG��h��#��i�q�I�~�p1��7d��������I�,�7I����$�~|)n(�	�����ipN;F��)�U�]%J�=F"����������Ve�{�z	��^<���x������(�<�V a���A�+��F��;��e�8af���[�s���H;����BIF�\ ��05�������x����V
��Od��;��a�l=�t>��b���� ��;��,#=��!�w����v�r�g�k�Kx���hn�,����;M�N��mZ��:���3�s����$�f��Gg���|�H�����P���55|�F�gqU:�?'�N����7>9a��\%6���
_��I@�J����u��3y�6��wQ�{^cWo����g���[?��o�����<]S��K���(m��t��#p�w3�����4��:�P���@�u��CA��Y�7C��q�M���x��o�YcXz�p�v>�&xdd0r��Y�x7~���$l�W�����T��jY%5�������h�qt�F=�m�\������{p�F��!����`=��,( h����\Wsf,�?��BmJ� J9!
�8�=l��|r�s���	j���^�/f�w3H�8��A����3����l6�@�
60�L1���)�[�(_#G$d��p����n �`�����#��;%�^���M�}�!��S��N���	��Ss����V���
�O����2�d�#� ��^���n>���Rz�!pp!r���Y*znA��+�aY�����tL#�O|9q���!X�����L��&���g.����1+�s�6�n����9y�;g�q�����_4q��y�~��\���e(�����je��^��P�3|�j[�S�;��Y�$q��2���K��*)��Z�5\	�;lt��'6:e����F���W��}��ugvH��������N���r�����q�����Q���������o����6U��W<U�������j�a?���*��x��u1�Q�%�
>1�_�Or<��d]�NA �V�4g�����>�;�?e������?'�G7���o��OB��,+�_�TW6*K!I��p��!�&ML��������D������3I������gB�Y	6�^z�C����bfQ.06����kK��d>�	����aU�`J�/�kY��<��.g��c���w��+T�A������F��>���9E�g{��[�V?,���H�S�	�����h.O���@���=�=������.1�o��T�$Q��bow	�1w���=����n�����2���?��mi�R�w���DhnW��9�&F����}��F��S��M��,f����>p����D����i8@�CD��� Z�oN��Qh��pX�i����F}��70i����3�m[�%m���xJ\6�pN5do<�|���J;���CZ��o�r71�
�kJ�VRzC�,�8!�����":�h8�>���&?<E����Rr����t�]M�E�.MUA�Z~y�#�Iw)<�%�4H4���9� S~'c�P+�?�X��-,���:��~B��1��jk;bb�fX��a]CL.Ey���h�ID��U�z*�#�>���%*tY)��^U��Y��Up.�1���k�7�Y}B;<\�f��u����D��Ho���EG8��d�LQOi�����l@��{���s���<�3�CRp.��FK��4w����XRX��NtNgp7�����F��1=����_��O]�@,f��!d��&���v>tR+��.(x��(�G�$]Qp��:�U3��	qU��>xv�RD:J�
�<�LW� 		�ke�����'1J�]�"��1�b�P�42�h��/y/�'�� N��c�[�2K��s"�[�b����_�����y�����N0���/�
g�w����[9"��wLc�p�d�]��%Lw��/X�/��o�g�����c��s`�S0=����~N�)��v�<������p�N��p:8��;�����
4L���LGxF&4�0=V�����6��O�����Sz������[��^G�c��bw��-G��-<*E��2<������9�B��Y�q��A���b���3���}��
�`U�7>
w�
�wt�����C��s\F�����[\4J�6`G��`{�3����xZ�*�����.Z��]�;*��b��`�X�F�en}:�����i��[�����'5�hY�><N��
H�]c�W�R�]7|�~�%	^������������U�S�f��&�?�>&�-1�G{8��R���t:c�<B09HU.�m�^��u5�[5��op�Z�P%��w�g8|�����U7K��,�m��x�=	O�����'�fT���|�$��n��z��3Z��e��'�M�|?o��I��������@���V�<��TM]�k���0��������y^�����L1W� 	1�[%�kS�n�(X�x�"4��*7/�V^��{�Hv�����g?������;L���0L%Go�>l� ��w���=U�"FnEp�2������{w�\��]�&�����&w��F[�����5�S�t�����|��At�x��-���;Dpm5	gi���C�[s)�G�M�MJ���M��������n+
o���������>2�(\����CV9~�����E3��aph����rE���m���q@�2O_L���B��3�1Wp����1�p�"�>�y����P]��N����02~4p�����S���R�3�M<6�����n�K��*qD��\44&�������������<^���p�"��"�����>4���"O�������xT�6�X��G�1�0k����[+� �YX4
	�
j� ,�(�������+��(�������_�gi��B�y����$�r�r5\=b��g�����F������:�f����;f�{,������VD!���qx'�
�0�yZ)�E#�9j�9�����0�0��C9��2�
N�8B�F�?��P�A��t,��6w����x>;�0�@��8
���_�_���p�/�%3\/����ex���7������s����q����QJP�/���P�����S��������b�X��Lxw���eM�%i��G�S�B�t��@����yCk/�������b�q��N�u����	���5��/���/'?���9Xe��o�����{�e5���
���>����]����vb���x�
s�?��W&xL���X:�X��u[,�
A��E^^���#�-no��t���D�w��W�13����=�%_�a-s�y\�Y�?`^���Y�������� (e���d���:�Vn�H~I��|1����)��ymM�6�6�L���|)s��U�%G|U���� �������:�:�`gb��gj���nW��������%�t3���[Rh�w�������qY����HD	D���1���s
N�U=�d�}6����J>����dtHpon�/����Q44��	�[g2��(P3���@Mt��f�R���o����|7��y/^F��<C�M�+H�~X�>at'�^'k�m���p�y��{�lK�u�<PO���V
��Uf���//_����+�������>>6Q�g���1��#��xCF�?����`��E�'H��H��jC�g?�v��y*`������[���e���<�`z��b��	�w2������b�{��sG_^���wI�����i�}�gC�1�:����T�/�G���WR�f���8@k��/�+������]����o��lHR�m�lB�i�	9+U���o���������
�fh�O�����������.�-.��4��;,W�p��8�������|C#>J��h�r����������Q��a���w����)����b6]Jx��~<!hEu��DI���]jo:���\���[�X.���W})����$����������
0�{���]*����0�w-g���U>���K��BM���3C�������j(�����?k���6��Oq��
�t����/,h$�B5p��V69�=-�R�'&��`��I;��;�`��OWWO���,�e����?Gw���wv���g���\��j��W�GTZ{>s������5&W��2g��q���!s��p���*��6��/.lV*��kt_�����������<��6(��b���Z3W���/���-��.x���l�;N�7���ck��lSgS�K��ymI���5�vZ�H�������o�d�=��t���Q�f��u�s����(�����l��<�`s�4���F1gg3���m��i93����7�;����]����.����j�Yn����@c���#F�������� �p�wd�k�5R%��9�V�^?�G��}qq���+C��Av���7�y�\�0��#@�����������������o^���y��������^�]�%���R�4�W�m^x�.��XnV�i^]y����y}6%�����d�������W�;����������2�����]�fe�T��7��\^]-��r�/�U[���K��r-3+}���B-�g�����3����$��E�J�.E�������+���m����_�i�X�Q�������U5��b��_�/)\�^Q���-(@��^�+���'���3��7�A����8�7z����}�g�C��~��;���{[.��]�F���EM�O��O"�S��%���Q]��{i���J=�rER����ZW��������Aa���yLoN��U�6W\�Z���/����=:�����4�+���p,�����|��ao�y�Lf5�3��%hT��{7,�F]Q���V1���#��>�����S�9���7�t����+��:���O���s�
����j�p�$���1�()9�U�Rt*����������j����V�Tv^������S(=�������G������v�J����~�X��j��:�=�V�R��]:_*9B�K����2���Pu��D����D���"�m*Q��N�[w\\���x���M!��u��
X=.���3�������G��A����m/������?�����������_�\Cm@�P���w�_���!$��kx�4�������r���|sue������^v�`�mqf�B�����-2#�n3�9����cV�n�E:�-ts����S��s��;���[��bc������f���}��)v���v�vQ�K���Y��������E��H���S����
>�s	��c���:�|�;�O�,]L�'M����K��O:���G,�����}��)\�S*�;�q������e������`Z�e�R��F%f���j�(�6o>�_�{��������3��
>j���{��uT�s�sw;�������������w��K)��Oa�xU�����������`n3����Wz�O�_�����;�N`�������Xf/t����V����0zK��%�%��vo	���������>�/��U����X����c��A��
	U��R�����1�(�����t
����\g~uu��-6�������A�7\�J�(�}�����l���!�C�5���!��L�����0���5^�8>BMj#c6M���i����&H|q�������Z}��	�c�����������_���2f��1o��l����P�1\��|��]]Y������&y��=�0/8� ���a��$v��wf	lm����N�Q����8�c�A�t���h�=�p�H�
�������f�����X_����N��Gf��!�I�8�J��	�Q#B{����_~,�9�l%�
J=6�(�e%w�����6��,o����R��=vR(:�R
�a+��V�I�wf-3����VY:�e��:e�������J2#����Zd��h0��#����.�@�6.@�)��1�H�c���� ��Q�?5�D+���,m��&k��8u���� ��������
��@D{;��K����S�5�A�����Z�}��]������&I��$�Op����o�o^_�`��s���w^���������X;�Z���TT�e�Ee�&��}�����nF������}�/�/�c��}M����]�����bxV�
�/�����G����2��y�l�6
�����6z1]���D��.3���Yp�d���*���E�M���
?�7��P���d�~�,�dq��~�{b�:��������n���>����l�(�h{���UP�Q��Km�j�^�m��VEP�2�k����������Zh�2��85@�h�{�{|H`�p��n��v���������}�
g�Wi|�����[�����BQ���
#��mc8�����s���-��Om��BT����F\�@��I@�kj�����3���W�4��~����b�����[��n^^#`�i��dx�B��B�(�%!��1$�b�,�F��0F�	;���	������.�e+�C�!*�{{��K(���[���x�C�Ex���_�~#.x��6/A
�g�[\D��$e�@5��j��&�__@<���������Y����������
���&N���e�V�~l����A��S���2��|�kXM���g�����W�������V�:�5�`
��:��������!�KT�]������`��H>�4������@
��6�k���nP���>d��S�>���"0U:�Fe�����+6N�����7��3F+L���*�E����E��"�����`�6|J�X|��z�-���
v�����G[M�R�o`NI|�����1�Y>&83P��cF�����x�1�V���]Z�����0���P����o�mc*�>����Oi��C����o�0�V�����6���E���@�O8�/��~����F��Y������Nm��q"��:I��q�6 ��.�2s-E�)!L9���P��Y
f�a��w�	x����-������1�~���xhbD]{@���C|'D!g!O�[��Q0R[A�;�U��;�%[b;$`�QR�4�|���x��<�G����G���B�9>\���6�5���}�h��z��c%�k���a+�Js�O���qw�9�A
I���d��}�0���A>?�Y{�����sn�����9",5�D��������w�y���tk�m7��5���O��	��a��(��y��Y��h�ybp���7*=��i�n�x�9�^?����s��	��3-�Y�4�H��!A�8)�`0o��M�10S���(���	?IV��7P�H7>
��������-^~�����!�%xaBi�~��t�Zx�8���o���������0Z0�~�@4c�5"�kh>=zB$��c��������
��U���F%�!#������=�0�yk�47���"�+���(��g@P��������K��9��:.M� ���h�NY��w?�����J�V��y"�p�B8�-�����-���-�9[�o��w�q��f�y���y�����U�C~x�����8U��,Y���:8%?a6Y�f��/q�����)}�������������_������_~D�0�������-�����������������5G�}���3	�d���#|'����k��E��>h����HH�=�E��zA��x����~���-z��Qg
g�l�mY���h-9�����Q����P<d�8u���<S�+3<-W�e�O0�~S�?����h�����b�_�v�����������I�+����t��@E��|"���1k�{/:x�o�.���f��7��T>�@3 -��jA����X���~0|K|��o@�������x�C����cjTQ������04-(
����8�*��\_aq!�F	�	��9�5���8������o��akv��9&��D=t�\�l�A�H�E|k���0��XM�	��tvb��X���W���~�P�-()�\<���_�|���7����Y/�"��]������c��cc�8����]4��Xi��7�����z#<M�+=��[��e��V Ly�n@t�������&�N����h@�R���������3t�:G��=�Y����K��o}���U��@CEx:l��B
�vZ��[�E��fm9���g�X��X�����N^t�w�E�������9������C]���szBE�G�tz���I���z3�/�v���2��Y$$���B�!_�d�|S����l����������(��V.�����^�%� ��KL�X.`>W����}�{�kv�9��	^���<N94N�y�����\��7p��?���7b��1��������fVfDu&0�pg������j�v
?���2>���s�<+� �'�.s�����������2l�tt��~�
��uk��X�<F*��}|��|��3�<�x�����������?%U����/�p���i �n�(��9�0�@�
G�Cz�U�B�;P�Z�pP�{����<����/�� ������n���n+����ZV-��
��5"�*b�hV������A-�'�K������*���4Z��<{�d�'{F@��1V����T�o��x�B�z���D��p�����������.db{-8D�U��k<���>��1^e��������w����|�iwQ�f��4��FW|����o�����O�Nt+��pmK��d.�T�!���G�eh>G�'�	w��F��xM�e�����(�xYZl\6i��XyiA���/Kz��V�e���\gQ��+�����3<)w�:���4gZ���r����~�>��L#�do���^r��&���K�;~�I.N�������s��N����k�g#�|L���������9���X���Y�g�����������a���~�
N(�����s�M7Ls<	*A�5-����c�%�7�&xt��iO�Cg��$Fi��(n�B�s�T�sP:��r�>�����T����t3SjI�n����xA���n2������(�z��������8����4�A�W�*}~D������\jh$�<�?��~{����0���2���(G�KNn���;�cG��M6���{��=�����H{~��u&�_u���3��n�cp�2p�[�
@�6���=%2|�R|�YQ�wW�v��I~�����*x�C����x�"c���~���M���������T>������zI���(�?��6�~������d�l�BE��[6�iv�����
<|���d�yN�aQZ$y�^����:wO=�E	
�`��`���&�����<+�
���-��'�0���~���o>�~�JX�a������U>�l�T��1��*����xL����G�i����P��t�����	�����uTo�����������c���`��6������u�XY�bR
H�#��?��c��
/s)���FNe��;����"�:�i	�����t�n��Pz����|��1�}PA	�9G�hmRG'����D�������� �?�t���)�z��D�|�)E��e��#J?���&%�Z�y�����Y���[��W�C�����>�L��%N	�dW��_�ao�|�W�Zo0�������?~�+^���>���c�]7��f�r��s>{��������w����^�c���,�XK|�����RGc��]�}QQ�_T���:���O�����zp>�7��z���.�=����]s���.��������Q�*P���i���8�tJ�?� B�!�$D�b�)�W�b���M��t~��i���i��:����hAHv_`�a�����T���`�I�#/]6�����0iF����������+���>�o����ln��_/b�����y���	�L4c��t��vK��z�,�n��/�����_��1����D�KWFu�Cs-pn�����V�l�:�;w>����4����N�P�"������Pqv����@�,�U&���z(�i�	t���,L`��~m�i;�e4���VZ�����i����?f3�\r�,Np�����M�l��I����H�A*y�=�G�S��t][������=����t}/i<�V�3���b�@Nd�z��s��f�:����� ��p�of�;���M7rM*qJ�����P��}-����w�=�ITp�b�0���P�r7�n�C���FTi_�8��#n�]�?����G�����
A]��5A4_�Vg�&Rf��#c�0�
�>�)�����^*�U�G!d%~�V�S���F_���IM����?}�eD��
������VV,�7����vx�6T��Q\C���KZ�$(JC��]�/`]^O�(�vG��k�)n`�u����<��E|�0g�\���+�|���9�&B�u���xs��c&������f�a?Y�z���'�3��~�PU
"+���.]�Wa��;N�!�'�3��<B�����;~�P�#\�!.?B�9���K�4�����3�������p��_��X�l�n���X<���-�g>���Q�0�����G��4�2�WiXy^��������}������d��h~�;��g���6c���k�	��s��$�\��~���<2BS�����NCVx��TB���W�YyK��c*�ET��1�~��wn���v������,�D����W��z��q���$l�i�c*T����U�{]�/�(�����cU�� x%�>�>������-�b�]s@����Id��s���-��8H��l��O��L#�������KIu<{����s��a|9���Uyf4H-U����,��_��)��"��	{�#����?�h���u��������B��r��GI�VV�O$w|�b��1�4V�(�������e�n��k:&_
�F���/c��*�cZ�|���,?��`�4�Q��T����������5�z�-�m>�*�B��w��w��g������7O��r*�/ ��wo�Iv�$
l�uu������d��u���������j ��
M���;Q�N�gW
���f0-�K��y�E��u��*����8��V�d���X����J��C����<����i��'�{JV�
���(��9Y��De�,����2AeJ`N���.J%Da���Kxt��z�o�i(}5&�,��e5�%ZFJ�&����F[�������>����p���A����X�P�7��E�c|���h��
}��������������Q@���G���V{���W�6��+��y6����5W���Z���w����)��V#e�l�r��M<��~����`$���.���Zi�p5;M�_U�v�
��H���;1���?o\F@v�GI.��- ��ba`�u'���y��2�y����������u��C
Fv��QM
��Rt���t���;��Kt��(2��;F]�n�x��W���+�Y�J��9������MA���Jo����d2_t�Q��4��w�	�m�a2�6������u�����*s��	����F�)H9�_��Zr:�1V��I�^��y8�![v��&������}���4~#V���6Q��bLO�����R?`
+�w������Qu(�T���0������'�K�7����^|��!f<eCd����� ��sSx��������a�!3�;m;���3h�i�V��dK�)��\/�}�`�-�/��$����$���cU(�}e��d�����h����1�.�p���"��v�j��L��h�0�n�XQ(\}�!�CI�EH�P�XbL��!���6���*����4'S���)N�i��3��v �
x��Qm3���P�G|_�0{T�Vg�_��	�am��aj�g�b9�ya\a��cU�i��W��J����K����b�Dq�����X�_��Ft�F�mdC�����K�\���X o���������_����&������iv����(d��e��WC~u�1,k_���[~�(n������r�f_n����X��{�?e�0[��?�d)=r���9/��e�i�����_RR;���l'~B�/IvV��������W���N��dZxGX���f�3V��|~��i��i�����J�E($������S�%@`��-��{X�%��/�-�|7���?��y}��hn�b�5%5ByY������cI
���V']o�7k{>����$����xF���5�k0�:��8J��M�./���f������;���=�a�]o���mp�y�m��
��w����r���=�~u�m��}z��[�M��U��/_�������]���Y.-{�~�������di�����������?rAQ*������_�{��pb����'��h�6��0�t�8�c�d�saV�.���+����l�|��g������}�f��8�=�U���T��������F�z��x�����b���#��y��!O��W�������^�T���:����v������B����-�(��=�W�s!��(J���=�@�X���Mi���`�gf�SqB{<�<i�<����B�F�#���&G?���������}d��{�\:�����\q)Q�^�xs��������������203�${�&����ur������h��������D���?����?����?�9�?�t�+�
0006A_human_readable_entries_data_v2.patch.tar.gzapplication/x-gzip; name=0006A_human_readable_entries_data_v2.patch.tar.gzDownload
�i�0Z��{�#7�'��Spz�z��,����5��{6��k}c3���L�����&#�*��?���$�����9��uW&��?w�;�X���}���e{|n�O��C��9��}sy��m��J�}��������uG��W���*��z]�UZe�*��$O��:/W�t]����Z�����vi����?�>M���_��n?�?���r�}�?�oO�w�N����w����/��o;����~]u��W����]��W�_��O���~]���\�����uw�^.��t�����^o���t���*�|��������e�<��*��&*�=SE��#��w���V�����\V����s����7�z�?^�s�?/_���M���C3>z����z���z��y�����T�h{��c��������������W��S�i�=%��q���eS�6��W�|����W�t����
��C�N���y����c{n��I���9w��tO�/����C�������~�7���{�a��V�l���V�K��4�~?+�_���Z�{�2|������{���n��<�`�*f��Q@3��<
f�3��A�tR��|�\���
Pc.��qz,2Q2V�9!�h�s�o��<����t�d-���4����*��*;TB������Sf�ZEA-*��L���+3I�����a��E����qp�����-(���k�����J�%��_~��	Q<@�w��~�����Jt�&��U��zW������m��0u��op�_��|5��i���H��5��h0O���@S�m��@3��08�\u���A�n������TY�����n�C�7��v�CD:��g�PA�S9��1�Q���N������l�tL�p��;f�S�17�&�T�i�tM����B�T����5A�TS`�X�h�sj�E�����o�@���
li��F�R�U��jc��U�`Z�-*�j*�j�
��9`��C!jPmJ�z�O��s�t_�$w����36�)s�0/��bn�6"P�/�V�!��bnKD�z_��`uT���i�����+h�\�y��
3�Z��,�V�� �)���,�e���9��i*Gb�F���	O��i� ��Qm�W>�M��G�I�f��61����f�&"���I�V����_��V��J����Q�,��[+��m�OXx�|�=,F�pAo,��pAoL2d���
�2\�[�t�6��>n��)O�8m�Y����>�Y�T��Am"����Q ��i�7��-��;n_f���t�)�Y��V^i�l����>�������l���2��@jqN�{6�Zf����
#�Y��Q����@��� 	��@��B�	h�ZI@�m��W��������'zD\�����2O�g���������y9p�m����m���Z+$��E�f��Ma�Mh
@�v"�����@u5nl#�������K����<Ur�Z1���m+������6�-E�W��M.C���m��U_���^M�O��QUIO5��tn2��'�Z����j������<����B"90����Z<0U�c�r�tY�pi�/�b�aQ���g���8�J��3lE��9P�\`�G����"g�6��:J�������������@��hJ�l��`7-���QI���:(��S��RM�v��	8�N�\`���O��X�m���������O���k�(��A����~���RY�n���M[����)�7M�����i�7�
�n���Z��$�-���S����vs���������F���k�l��h-����z�8j[e�8�����&``�h��I���_��m_��i[I��������5n�g��C�L�+�n�c���#F����C12X�]���9���$F��T�#Rm�Y��^+��IZ*���'Z�Ea���#���P�`�Ea1H� [F� ��m������������P������^@!F��}'�DV�"
12��ebd[Q3M�/�����LhV�TY9?�zM�elB����*���]�2���5*�-�P�5Th6�$���2��H�f�m�G��\K�q3�k1@1np-�������c��|:��;h�P�Pi��k{��t���N�����6�qA]����pA]�Y�I�o/�y�#�����&�Z��V����d��"g�>LH�s�l��#E.����t:�5{u>��lpd���@��,m���@�z(k��2|Z��%��J����q�b�e
��.��}b:�5;#}�J����h����AO���[R`��D�����gB��)��A������`��-�����c� �6����cj{&*<]�n�nFz��|�S�i��6�QA����^��T~*�I����R�
2���n����J� qj����*F*M�
%Ev�Cu@�M�=U�L�B�i���|�3�eKA�Q�om��uc��+�MuX{��`��Jm����uX�[��:�������}�f�(^������)J�93)�^�j��&�e�6�"��unm�����0�����nG4W��y�5�'�m�b�T��Y�6�a�-/��uX���`������[��f�O�J=�`�����������V
$������slKT��A-1Uq���t�O��w��F%������lR��d�-G��7���rx�y-9r����4��_�����%~*������)@�y9���Ol*v@��; ����7���M�� �M���4~bz��{: ��K���z�m(q@���M�����JKG��>�?\�d�M%h�R�����o��=O� [����d�G�#����&G.2�������x���kK�.�'0��p�_hq$�LYZ�j��j�D_<I�(TYv�e,���H`aM�n'=�h���`���8����	a�t��;5��PL5��[����%�^4H���"��*�30���u��	S����ZA	��T{'P�J���Nm��	���Zx+��|��U'T�1��M)���O����K}���
�����%[VR5��������a�v*�IcEG�F�����.V)��yZ�h(g:JJ�It���n��"��`��\i�I����������u�"��C���7n�j,_���K���� A.W+w]�����JLi���jQ6|p?kQ=���b��|"�l:��WW��
���w=;��z����s/5/�z����%������@�V)I�j�qop@�.EN=27�Ms0��6G�3����y��i��L��V<�[�d0�6t�����.��ZI�9%.��X�H9t�jG��}D%U���<\������vN���+6�,�nV��,W���&�YR�T��#��+��wl�s[D��O�W��A����[��u$�Z��"�n4O��b��k8��%`;h��%`;��t���z]F�8����{=us[�����^����}�J�-�P���Z,[��Q�-�P��Z���
1������]������6~8�4@K�:�8���&����3��k�W�S�x#�V���j������u/.a4z�:!������k�p�����x�I�*9'�I��AT�G�}��j�-��}�V�$j�h'��#��>6�`A$aCe� ����2X=���q�F�E� X#�XV�"�X�
E�,
E!�&~�Z�y�Q��n��
�BM�V��j���&�`F��'�E3b\p8Ab�!e�9���e��`[�$�-A;�np�=K�[\{���o+���~�������������
�I!0����z[���{[����I��U�f�����RV:��+�Nt:�i<hX�L5�V���p�:+���Pg5�'f��vG��^�V��p@����79rx�lp@.�����6�Sk��V~mg�*ra���R]�Ju�r�D�,��}r� ��T��d�F:d���w9 �?������&���$�x��$B�+�?��HqN������J��m/yk�x��J��g�"��;F����b�#��a�w@}���g12��f���h�R��)V:E���r
��PP�i�=>�j�l���du��N�����)@�n�#g���M��d��������0��^3O��+�C���%?z�.!Gvd[Fv@�vdIv8 ;��Q; ;��8 ����r@��eF��\dK�����zm#h[F����k~��_����=���}zO����D����k���Q(�X��b��+����K�a����;.[�Q����k�^~4XK9�����E��n-B~��E�n-<n�����=�����%Z	���%X��K��9�U`�X��K��z�7���:l$���qp�jl��R�M�g��r:>}$��q��{����Z��#����Y���`?���92�l��N��SW"��,V���^���>K��+��*@��"3Ak=b���d���Q�v����F
x��)-T��Xf��W���M�IO�m�a�B�����9v(�a�
m�e�B�����y�3��D;�m�L���;?T��v���R1.��#����������~���{?�p��a����0\���0`���@d��@d��=��?6x��[�'r��2��$2�(����~�G���8]`�b�����e������"�8���1���7Y,�H��g�h6Q���L��q��k�@��J�����t�#6u�@dC?C6u�@dCOD6t�@dC_D�;{ 0�������w8���?��O�����rin�����/�O�	 P*,�O�Pb������6�u��q`����Z�[n7�����O��R�R�����qHP�,���BP�e�H�zf^�H!�zb^������ !���R��%�`D`T]T�x����H�`a��5]�q���z\��?�]�P�\Kb�k��16���U��$v�,B��,��2XT6���U@���6�
���~�`l��������Og&m�'3�;`S����!�z�"�
:�P����}����:�.U�],���FB���\�UEe��D���a��8X����:X�TH�a�XgX�]�������u�����H�z�M6�hk�hY(p���7��;�H�g��8T�����,�W~��#�
zV�	�CW	���N�o3�����9PpHFPMU���@5MU��'�}�.���h+��-%Q��/�AekuC@�r�T�����i��+�m6�s��������(E���� �-A��'H��Pu���������|��G_l
���u
�Z�A	,��hP��f*������������a�X����Ud�u6v���z�Li��z�Lj��z�D�B\��
o.��L��g%�0��y�$Lu|f2	���L���pF�'��
���S}!0P� �(�L���@y�����y� k/��=� �.��=�`�B��{�*Hql���a���HM�	H|�@�2\}/��q�Y�`�W����3!!�>�'�jum��{B �L�����L�`�K��kS��d�@���W��`QM��i�R�������'��`��)�p��]��$1�8���).���^o_��%ke��p���1J�Slm!)p��V(��u�*.�=��WC�Qjfn�t%0,V��2`X�*p�2`�G�o.}tM���������?	�&�Y^~���]����0�Z�����0=�5[{�TS�]�/#��ZT�V)�c���A�:����:��"����ZPJ)�.�$����~��Oo�����E���f
��� u!H���A�b-�P)4H_*�� �A�����PT�u����z��S�(VO"u��S��(�N�`Y
�h�
�:���C)t���<��f�u�I*.����#IE�:�A�C�:b[���I2���7
���.)4�=,)k�BgZP3$���`�\
]h���
=���7v<��6A��IR�%���`c�DO��	)4��$�u<�il�� 5���,R�il���
�j�F�����Y�	��T3�\F
�(�����]C4P�`.#�jt'kq�S���h���ul4@5��c��QP#�j���mr��s)4q$5�Rh�H���� ��T�J�A��u�SM2�N)t
���w�t���N���!��A��s�]�������5��F���L2I-�hWR�!�����H��v%-Rh�]r������_�OK����V�`Y@�hA7�B�J�B����9�tc)t���~��<�g��"g���Jw��S-��J�3-H�K�s-Xv�B�
��bW?m����g@�^kDS�(�c��bh�mS�ZC����`1t��
C�-���p��Ks����P���jTS-i%X�C��+qpRh�{%���^�1Ebh�{{a���oQ'wj��Pw������F��C�Z�����kV�h�f����X'c����
8�;�����H�C�ZP%��k���:\[-Sm8;�p�u(��kgh��C�N`���������{�`G���v{��tw{���w������p9Bo��0e�z������tQ�'t
�#�:���O
�h��'�����(4�=�>AcR�������T�����N+������^������p�c��p�c��p�c��p�c��p7*n*�Y!�k���L��"�U2��|���jwz;<=�������tiV�S�jO�������9��}sY}8�{��y�?&�j{|Z%���5kb�������w�V�C�N�U��;��������I��������Co������j,����w~�w�O�H'������?���>@#�����������%j��%(j�����v����O(�Y���qw���6�<���|��� gW�Qd��&h����#�@��]�Q��=kZ���(2v5A������M�4�8��5slTy�~�$�jf���f&H���Q��U�\����<F���j>��]�G����(2v�\�.����y�c�k� gW�Qd�j>��]�G��+�A���j��c��$�jf���f&H���Q��U�2���:���	rv5E���#���|��k��]����1�K� gW�Qd�j>��]�G��+c�>�IO��k�32}yg�{p�a��R��C���.���G	�|����G	���f&��LZ�@�2�������K�B��|����G��|����Ao�S���(�O������X���#����<�~�w�6�E�����A��/��n"64�f6/��8�����������g���#���F�!-x)��b�"-t)��"�d
A��WT�B��!Q�r&�W��5���t
v7'Y���I�`w����o������&���-@�2���F�]���dm���qH9�
�u�o"k��9��nN�&��������8E~�r���N������1����������}�L�����5�L���f@����]����?��1}b�����G(�#5h@3�435h@3�d��'��O-o@�o�l�O�lL��[��C��4K�F
e��%Sm�RC��y������f@���A����������g��������Mj1�����l1����tu���6[��]�V�)�L9���~��6�3Idk��f�Ida���e!���t?o\�w���w���^x�~
���84�e��[�84�e�S����zJ�yU��`Z��;���;��'�J�������A��$�=.@�$���)�a?]���{rv�{������*m���"N�R�I3\�8e�f�B�l	���Ej��/s��F�l�0`�����t����g�fw��v�����C���N_�
T�E��UR_�
TB%���n�bL�Qs�y�18*���mv���.@�����V�:���d
�.8�98��X�;��88��X�;[�������L��%~���a����������5�/�g�n��-T���E�i���@�d��0`��E��,w��X���]�����/���/���
/���K�T�V�h�t���;�"��D�2��F8#5��f$GO
P������uV�y�����!�]��!L�"t)3[�0apf�������x�S���u}zgLy�oF�x������bw��,�����fohp���v�}z:�6:}�36=��u������S�,���m.K�����E.K��8e���k���e�Nu}���t�O�M.�m�Kr�X��,�&j�@����?��?2��/�#o�b��;�7�C������ ������	�qyn�h6��i�#�6��K��b|x�����3��0����'q�WfQ�p�����N�E���5�z���t`j��o@Qs������+P��}����P�QC�����e��RC������Fj���[�v�`oO�@��7�������:B63%h.�B�2%h$B����=�V2~��0>�sq��������C(�]h=���]h[��f�����^�m����=���{G���_�v<��Mu��_�0L�.CU3�������N�F��cj6�i"���~����A�q��pq���4}l������q_����|��'n_�Y�9�~��l�������3I�V[�&��-@%��	3e��i���y�^y��������cb��Oa[����,u`v���,u`�������kp-^�k����WZ���06pm����
|6p�������w���[�`}������yxz�My�����x��"�p�I��_�>0����������E��@�;�
'���W~�L���gv����G�x|_�0���G����F�2�����b�o��7A�C>������f��,N^��o����~��w���7��o���O��L�W����#lGj��L����Ag739����4z}~�y�ge|vg���1���������B�Z�00���B3[�008;���>n/W��S�iu����G%��oG8&������M,!'���B�������;m�AU��J���z
D<���Z�b��S��������k�/�������P�J��#���.{�(W�a���������W{������w��}O���NNxg)}��;��A�4\:�]������3�
��8��Y:t�m����CX��3�
�������8�B��I�M1�'e�f)�^������N�vs<1�g���"��|��wH�z&"�}�%u�#AU�*����<�}l���q��������D{��A��hz/E{�������s�s���0�K�a;~�}�lkY��i)���D����]k��	^@�7]��h�E���D�N��|���'��>������u_>|2z�Gu��T�;�������zN8���p�Q���:q�2�T�@zq�����E�2������K��Ayf�;�������������=��g|�a�i���aG��d���0��$g���,�.Dq�}�
��6f�����V���#Fe�yir��������J���}7}��n��������f�O���I!�C�y�3-Q����hy���v6:Z��?�FGO{�G�T�������T:�O�Z��?�Fg�����J�zO����~����+�:c7J4�����h~�hv�7=��x�=P�}���#e��>������^x�	�A�"�S�~q��D�B����}����N���������������yD�Tk_�@������K������t�$�#������:�+i��{v7rb�������N�����wd�x���k;�
�;���c�x�1�b�aP�ae.F���c��a�.Fw����u1�8�]�4
n�#����H��w9� ���[se�9�QG�qLf�0������{n��c���a��C������Bd���Y8�.D������Bd�h�Y4�.D��KF��R��(�a0�.E����u@'B��#���}gM�NL�*���ikV��f���5��|���5�4�c]Ik�A��^w�	\��8�jM����O�/��f��HgH	KQ&��.E���RV����7,�����PM�x���)�6�_�"���;_��C\�x��"TQ����Y�p�kX�xN����J�q�/���f�9��[sf��?�A�lx�����?����q)��A���N���2������*_W.dm�;���'�	��~dI���,I{�%�#�a'��
�'���L/�L�#_�0� ����=>���ic��;-��j���	�o<\��/y"�]�>��%O���������
�&9V,��Hs���xp4KC���I���wQ��o��s��R�)�e���������_�-L���R�c����C������ ����
�h-`��0\��z7����m���5����;��;�qJG"�]ig� iY��<R��g�-+'�B�\�M�)d���h������Q�`�^�cX���1l��r��i����������Ef�)��p�Jff��'��!*I��
Q)&0�7;A����"���Nf������/��#�4�}w�cxtg���I
_?�
3�$�~��	\�$�Q-A��������jH�Z':J���O��;p�Ks�-����>�U~��D
�ib���B���u��~>��N����H�����A���g�.��������H*�G�%��p��\����<�$���)�8.��y8pI8�� 8�8OC�$�����	����L�!�Q�hA�7'-���h����G�~�D<Z��'���A����x�$GQD�&8�""5���[��?��^�v?����c~���he0X�NO3����`������o�M5�]�A5�a����TX�Q
X@��N�""�
I�7��y\������������D%�/:M��NT�������D%�0:Q�K�NU���F
��?��O�������]7��?�l?���)���8	<�"U����gN�I��� �p-g1�`Ag1�pUg1�`i�BW�������33�K�"�`�{��!^~?�����	,l	�����	��HR�����p=�������[x��HB�Z�&��%HB�Z�&�)#I���a0#��b(^��1�$��w��{S���Y`_Q�&�Y`e3Re/<����h��=�L�����r�43Y��f����)��*gO3�e�if��=�L���(T�7~O�L8U��� ��i	��=-A��\T���-q��=�L�����r�43Y��f�j��e�3P��if��=�L�����2��j�`O�j����YlOKP%�i	�����j���u�3P��if��=�L�����2�4Us���c��*gO3�e�if��=�L��'������L`F�=d�����<^v?��
z�i�Z��dW`l��}��M��O����j������V�"{P��439`E3S�439`;j�Q��2�[�~k�����V(�5���%���������:<5�r>N�v���#?���,
_�L�z����1����C����-J�����-J���
��J[L�6Y���
�6;m���N�`mQh�K����h�&���-E����h���q����m�m���n�mK7X���M�6;q��	���K��*��/H����L�0v8��0��I ����Y6�8���X���9�-��h�� �����u�X�����S�2�@�,�@�,p�[��v�}z"�Y�/H����|�0:��0��L �B��B��B��B�Z���&�j��!���qeN�������|���8��.�m�f6�f��XF������L�qus�v����M��.B��.B��.B���N&�?�o���h���{�m�lp���e�V�yH���x�i���y(�{��
�3�.�Y��X���]K��z|e��_��}�6)�?�?d�g�����R�vY�h������eq�8���~��Oo����������<}�g���;����$^���&Z���$^���&Z�6����i�6�q}���0�����*���+��?d��T����`�#��o�6��
e�_��h�+�1)^#_���}����-�o�Kq���R�V��-������<h���cG�E���IeG�M���Qc�3u�;��8}�H�Rt�A.E�Rt���FV\�#F
vH[���e���E9�,p~Lc��B|+��F�\�	�Q.���0�FY��L�K�@��4.�*.� .����K���d�I����~	~6�%�1Y����`���#������g�_�'�Y/�����Ib�4K����O��A����!>|ygSy��0��p�E�O=�
�P�/��=�2l�|>�9v6�ER�
i���`O����	{{q�9/G�p����r�	�j$���eS�C��`�T�����}���_V��N
���K���K
��KV~�����~��?����������;7���)��?�?D�BZ�����-K�����Z��S��^��~G��_�<M����?`lqz�a�)+���<�*��4���|;����Q��OI��/��L����}����Ih�K�v�IhhK��e$������W�������"f�������K8.w����������r��|���>'.�����u�1���|�FI4��n����K�gug�~�/�����1���b|h�a��������������������g&����&�8������e��xpY� 2�G�����#:}�����u	�{�
Y)/�0���"�������)��m~�Z ���/@F��S�q���k�����L��e����u�M4����[N>��f�;��V�o�j��t�4���]�������y�E��}sY}8�{Z��y�?&�j{|Z%�?�����S`x�����z���z��y����]����O�w�m�=����l��z>��}���G�;_��W��f�rzjV�z]��W��S�iU���y��������.{���o�������w"����
��C�$���j����{l����m�{C�iU�[z�t|{���#���b>�X�Vnf?pPEE@ew��(�w�����@��R�*
H�&#�Ji�+2N�8�uU������B�4E��A����=�OYB m$���w� �2U��Zk�����R�hP�$#����$9�[��D���j#��4��o��@�����Q�iV��x3�[��t:��-��NMh�V;�[M�4oF)2��l��:(�{���y�jb,�h��������Y"�
���XXJ{�'����$9SL�.7w���!�S���u��Wjl/���H�����*3��W�f'-U��d\e}�H����eR�j<�����*�Z�U�[�C�M�����j����MEy�ad��y5?�#�j�7��oH
��&�'1�8��j5�V�[H�$���"ju�I��9�J�3)�.%"�N��S�0R�Yd�I	n2j��(��L�034W�&��J��� ^I9Ajsr��hs�Zq��'�"��$�K�ke�O�R���'�w��NuE�NB�O�����5]o
w
�I�-L���$W���d����8�0w�SvpJW�6j��1�ai��S��bk�6�C�����j��X��BV��2�4w�&�)��""�tS*.1��X9~��6DOw�C�\Sp��Hse0�>���X�Y��%\7�S\m���'.%��,��<`�ZHe��<I�P��������[a�Q��TSnY�f	�O�x�b��u���qx)���6ku��3e1}b{�Y������
gJ�v�h���?n/A^��uvc��
t�
1�������cNeAE@��<�rI�*�<w��_9�,�QH�z��Kb�/�U�ZB7���y������.���%����]Fi�''���b�\MNx51�cE�`U��}��	�i*�0�BuF!��'$a&cco'a&#'s"����2(78�p��1U�Pi�Z�Rq"��j�x�/u4& rr�(BB���~�L�3�����	�D����N:�'���HHwT��g���	�eO���!SP��W1��k��l<3[9�H#FC1�u��a/]g��R8�����Z
��R6%Q��������PrZ8&��N�v�:+�VtPA�I�w@��&����,�	�3"����R�0�q2D�}DH�H�CR�4���q|$y� �xR���t��J�%��V���;�/��/5q0N
��d�iT��p�$%:4m��i�nf����h�I��M���-uJ$��p��)��Pr���� 8�6�*e���:��=1
}�l�!�iS���p�Y��ZKL:�97kB�r8�Q^�VW8��D��sW�Y���E?�&Y���T�R��}�L�p����,����=���3"�#+1_��U�H�I�j`&�2l�1z�L�T0SMKA�G�`;�ILC&1
1��4:�\�U0c�fMoR0�d`#&>R0�6e`Bm���jv����t`J,X��T�i���;��d`B���!� �"�`B���	MC&4
6
<nfe���-v�8��T��.�p���.GpD���@��9\���4[!8"���r/�2�~�2����
Q��5[	8�Yb��i�X��6�:V�m'������8�����8�AU�����AU����PR�����"�j((�.��� -�`P���'��,��V1�fA�������2}N����V��gw��������p0
�sNp9�.*x�����a]��*%�)�wg'�C��5�p(��:�F���(���%��3�l�!%��T�����}�r8�����)�����)�TEN�7;��S�$�
k���J��&��M9��X��aMl�Q���%��\������#8���i�"�)9��<����"��JM�8�z9_�A5TD��*�"�*B0�����	��������D	,�#��QO���~1X���G�#0��
F
�I�����`HDT'�
��!V5���
P���)5l��p��]I����H(�����
5;�����a�W��5Q� K�Db���N$��Db��i������S�;l/������6[��R=�DX���G����NA2ZA��9#�a��Zk���~���=����������@	P%l@	�������E\��
���@	�O%l>	����������I�����T����h�6A��T%kS��B(�\���L�D��2���4?tl+S��c[��^8��a@wm+�p��U�p�������$��Ay4�aZ*T�����*�eqP�m�
9���
���_7�$&h.�Ib����<����0-��f�m�
9���
����\�*��sP�m%q��2��S��mK������@	�O%l>	���N�2�nV���#=���6I���&	�p�$�n=�����@	[O%l=	���>N[�w=���[��|[�
�`�V��#��w���}��7�p�0����4��l,�O��`1�-���`���IY0���>^���!	uK��J�%e`����	[R&k�ss�Z��F�%e`����	[R&k���n��t�$�B��?LK���-)����%A�<Y�g��w/�M)5�L��R0�RD��B���8��:|��H��"e`�f�_��[2Qw?8�b��I���`�B�&rR0X�@��,�������*� No���z�LO��m3�i�=�_����
��2q��V&�J���P
'��4������[;~��tD���	d\��@�4�N��R8Y?m�fh�����6����)����f������oqiB)�0U(���p����t��G�O}so�:n��Q��xT�{���Ysn;.��t8��������s8pP�|8��3�����2��vy���vy����.�����.F�u8�]�|.�K
����|&8�s��������	.������U�m:\����N4\����O������,��*R8�TE
'��H����D�P	:Y��Nh�R8��J�d���GiC�G8\r���Nh�R8��J�����i{��?>B�Z#�j��s1��U�p�V��Z�{�9�w�#�u�G�s�^
'��R8a����Z��
�������q���J��*��N�jp���U�����d������[>��	�p�%)�pA�vh��v��QM���
�.����������Z�t�4�3�p��)��L)��g>�>A�)k����\��	{�L�e`��(l3������{"��W���[�E�����u���U�����g	������������N~{�<<���<�zq��D`�W$��
�����F]���w���4)��7&���`�'
���.���'��~y@���g~M���q&������#|����!N���F|[�Gl�(z�����{y�������;����%q��78l����]~[���O3��8
�/&l��i�|;�B]��I�4f�J3�d'_A��)��QD�TRIF�o�T4��l*""QqL*".-	
�&t*�#e����u��R|��8�(E7������k9zF����U�����a8��M�������W���O������MU���$����F�Ml��mn�0��&�u ;��M������Iry�ge�`,�kn�6��|����������6Zw��sj�����u��O5�'|��9��T_�1=���?�4�F�����H�M�|����{����H�� �h\���C����jE��F�����i���w�����9[q���B�������a��5
�G\�p������h�{����'�QJn�p�E*dc8:<��r��Q��;p���A�y��f+~��Q�l|v��}fS[���J{�n������&%g��p���`���$\�t���f,
�i^N��v�G��1}��q
�=������w��6m��]zo� ��G�����J�	xR�
�8��	d�����O���'x�z4G`d*�W}�N�'�������3�7q����>#�q#�%,�q�P����o�9����\�f����*O�u3����H��	Z�������;�^����T1��m4�J�4�+���5�����P%q}�R(�ql(-@�4<�����ul������Q�0<��_?��N���~�^>jt���'��|uK�����CX�����a�����k4�=�>��[���6��lId������;�G�,����FV�#&#�C�7'����F|3�&8/����q������� =�Q;3��5eIp���%����k;�3�9���!G��Q�7���auN�F2���"���S��Qe���D��Y
����ZN������d���U#J#"PA�Da���������g�90oWkG>�����)���� |rj�-��I��X1�a��DQ�%Q}���y�i%N��UQ��XM�j��PGX�<4�~2'��<���g��'8~R��O�q��ALi����;s����xv�"���_���?��/���8�T��%x���ab.QYS�QV���vw��
�w�C�=`s�����#b/�0���U����n���@���I��jsC(	3�J����y�c
0Q�E���1 _X���X�a��s���C�F��{=��`b<<Rz���-J ����@�� J�<�38N�����UO�AcK���4����50��:�H��y�y<}���OJ�1|�,� ����b[v�����\@��������I�oX�������z�������y�;�#�ymz�������ywa�����Z$Q���.�H/td��&t�Ez��-�]l�^��"��$f����������AD6#�<��$��Ci����@�D4��U�h0�.V�^�MT�j7�E�@&K��"m�"�A�!�A�u	�x���b�
jb];�Tr�M�}	@%��(�K*���������ip�Y�����1DY�'4���(����vR��<����>@Oh�0(�LO��c�Z��"�BC�a��_a?G�����I)Gs��V)-B�`�r�A$P�@v� (�%;s	8���� ��������rrP�AFYzr����&'�>��Zrr��5��I�+�����Frb���UI����X������J���'<��Fx/������5j��[�I ���I ����@�'�)I�84��/�H�G�1���*���Jop����P{�C�VDB������������u�|M��������0
�@��a�I�k"�	�P 
�w�1��S�5x�#-s�|�c��x�c
���A��{1R��n�XW~�X��OpDFz$*N������&��2�bMT�y�����.��e��l�`��P���j�Y����S�;l/��/<���5�]\>����>����#��(�SB��bHQ��Q��}��o�B��`�C�3E���hV3~�b����u�/SH��S��R�N�c��/V��X~�2uL;��K�K����������o�������)�5�MA�,o
���(NS����
������tv=��������q�����\�pE�����oU��VO!�*x
���Na�!��0��"x
��a��S�Gs�&�BD�$>G�[����U�S��
�B�.�S��5�������0���y
��a���� ����JLt�rR���f��/V��X#~�2u��E���*������*<��z��+�[�!(
�5�������-�	���n��-��p&�7��IQt����E
�Nh�u@�%�u$�K��K%^�T��*q���W%.�����D#�JL4fT���Dc.����L4d��t��|=8���qc1��@:bm�k,��Lk�y_����0����$�����HG��@:2�Mg%a����)�'$�Z�#�Z ���8i�X����e��v�Ms�\�@�U��K�
1��V��$�"n���������������E5����v�������WP��-��������������P"��3Yw
���'>�SA����p*@-��>V�:}�v�6��?�(J��9[j�� "/� "�A!D�Y��f����xzk����D|��.g��r�>��Ox���LA��Q�^��{X��IW~m�f���,c������AL������AL��M�t��Z3^9_o��5���Mw����)�|�\<m:��	�qI��H9�F�+�I�f'Y{v���Ipa
.��������u�J3jl^Gi��U�����#�T=�c$G+Fq��Nb>_g�3�V��nv:��g�xBBiV�AH(�w��7x�����Le��u��:�0RN�a��'����%��_�1��j>s����S����S����Lk�{b��{Hg5�J�y����u��g}����^wl�V?m����gL���#<~u�}����"b��+)��p7�x�*�p3��J�>:_kX�
�#_�
�#_�
�#�Z&=��F�u�"����XA~�b����W����V����B�=
g�1K�>'�K���������������t�����yc���_c��;C]P���}�����F�:_���"bOBD��B�������>qv"?��P~�b��/�D~�b������'*���$�A��=��WO�V��=w�����y��@���n�m���so���e�>m�����������C�z9=5�d�.�����������(7����I��6�W�|����W����Q�F�o�P<$U�>����|h��q�<uj�~lV�m��y=���o�C���e��j��y�\�]���{��\��s����?�������?;���]���������S�s�o�����w�����iRv���Y��������o>l_���v�����>X�U���l�h9�T9M�{�u�B]�����~E�F����\��O���c�R�;�b��%F^��
a;�qC���az4t���4������1x�w.�w�D�&�
[F]NB<5�o��Gr!�
b���~$�%i7�v�WVa��9��D/X�r[5 c�����q#�jk�I�^rm����j�L���5Q7QXlJ������)�&d�C��U-�9+
����z�S�6|�f�	��Q��hx�I�6d&�����v<B��E�"�:t.��r�r�d&���A�E9�N��Nj>"�6�Q�	r����=-��"8�����R��r���`"�Yt��+��i�?���]V���������m������U{Z]�?5���v�\gP����y�M���^7e��s���N���wm7�z�������p�y�]]��y;%aW���������K����8����G���������i8x�=7#���c�]�i��v���=o����k�&���q�����M�����M�������yn�x�	�=��3�����_N��<5�ts���w'��������wd���b~+2���^�����4d��|V'[�^�e6Eb�����YBgy]pa�Q��P���1��X���ObD��T�By�
�[����l��L��Vt�����s���	�n�+Ms�k���/�g�/d	GB6;+������`�+���50���^u�T����q&h*�Q��\%m�{	�|~����F���H��(P"0��m������)����	r>O0�DDZ���A����~�0�
e!G�6��N�n��`���!3��	K3��N�u�v��#C��]lda�S~�B�I��}9:���^����6���)�����Ww���R��n�x+��8N�J���MS���<.�r�OM�Q66C�j��'�����Z;�
V��kq���d%.#�D]�Y��&��h�u�x����k�;������'2�y�g�_��
n��m�^��5aW�5�S�n���PQR���������1��j��v!�VW�,[w/.9�fZ��aeJ�Ik�]^�)��	�p:&hdcA9Nl�Y���6�c;3�C��������>��!�d�&�������9�JbT�J6���_`����g%[^@t6Ul�4U�d��/o���y)����"�N5��"f�:��!��\�
�m�)wVg��>#6�R<6n)vB���7Zh5���Z�87�T��{dt��N _'����h��N�0x.y�I���D)������2if��<��M��M�<#8�����9<�`7��Q���S����&T�km���s�+p������V{���X�	�W���F_�
E)�����*>D
%rD���D���(1#!��njO�	�D��+%&��EM��&Q���Dsw�k�"���D�H�P���	���dG��$hrI8JP+M2e�i:���F�H�)Dt�e����0E{a&�LG���j<��te��oD�����yt5�L� �|aO���dM��+b��W������
yU0n�X���7Am�M���7e�,S�
L!=�x��YM�Yi&�i!��P,m/���uMJ��R3��w��jvnX�3Q�'K���$}v���
�I���R��&NC�"#�Un�t���I���T�' ����7�`����.u($]�tX��H;:��57h�a�R*��w�*�����yH4��>x�;j#���8�����`On4FN��!��TA��5��&�j)5+�%�
����kZ��m��=��I�|�J��DMF-���5�d���r}nNO�5��\K]�-��_�;%�
��o��Cmx
e���j�����J3^������.�L���UZSGf�}�^>�i�/�����
�F��oB��34�b�����J������q"^PI����Ud�5���)[�2������q�di?V$��3��Rn��(���
��t+��%�h��������S96���D����D��,�Ap�[J�n�Q��v?��t��X �A$%�.OVPz3�HP.��	J���Q��b�8
{�X&����t���VJ�7��������)�@J����9�r?]*Oo���K���K�SFH���w�6,!�����7�2B�<�����a	I�t�3�j��T�+:�� Y�x�7�|	R2����"�7������
��S3Hg�K�
��`�F��������/�%�2�a��vl����\&N����� |;�_����u������,w"�QT!5��ZJ`n��(���B�{.�#1�N���P�x�����u��@�*]MJR���QL��Bo����OW#	^��e�uz�.�[7�����!W3Ke��Rs���:���,�Q+�^_N<�f\A~E�s�I`����%'���Fi�����6	}HQr��r�b�I�N�,�Vsg�F5��}��������]:�G�t/��[7��S�^�6����`F�Q[�1qs��8�~O�4���W�~�7+H����~��&Fa��F*�V�����1��Z����=H�������#z\�b(�\(�V���]�Ek��i��@
��E��(�����K<�b���"pn�j����d�9��A�N���%���s��K{�b�������~��^�������?�)����k�����TM\9g�rO��P��|:7�����5���F�
������� ��7��yi�.sv�����6�{m����2t"�,�M��4����;/�h
2����b7u�R�_���'�%4��I�t��m���F����b���Hq��2���=[y�=��������a��U�
���;�����SC2;������E�^����"yx���c_RD������&EV���������h"��T,�'b�[($r�j�
?����A�w�����������}|���w<������`7���}������h�;�����\X6�)�?�������n�b?^;E��L8@7��03�-/�K�d�6���
����a����������/bdo���Q�/�2�2��N�9��q��/�F.C� ��q��/��AC���m��xs6������������P���0�9�!`�z��qS�0a?`�c��6p2U}#f�u�?��,������m���(��!�="���#�MY�)�)�M��{Dr1e�zb�Lq���)K%%������"G�/�!�|r�8nN%�F�L�������3o��8$^%����~����1
Zf��F�oA�u?���u<�a#�R3�n$��i��*����
�62�"x3#��]���?����,�6�E��������t�	Z�y
�'����R�sF_@��:�=�J��3a&��3|0��B*��������Om�6�Q���eZ�r�q�������b��jCDY������~�<����G�1�����:S���K�:P�!��l=������&o���lk��k��������[���7u�n����<���v���j��[y����zH�4���}m������s����q�vJ�vlTe�B�Ss�����_���g��<���AK����9��������P����0��i6>8��?NO����r
|�cZ���t����y�F��Yv{������������K3���?�:������Q�g��~<�+N���#Y�$���� ���h���d;4]�i?n��lqD� ���l�h��v�m�����]����t>������3�
k,������������s @(�?�����G7[#q+�/��N�kX�6��)�V��?��8�O'
C�?�?�5��c��:�U����'����I����_m��a���ON�_;9sB��VU�F/)��zU)��-u���u�x�K����G��80Z��&�
{�x������w�xnx"����c�k��Fu��tV�QS�vOQC�:�Lh���7�'������a����s*z>����j$��E'�?�}�_X]��NS�
"�*R8"��E�<6�����ff�/��	�o}����SA�\E��"���1�[����Ca�/�<�e}
��~��~���������
�W�c{Z�NVS�?j�_�2_��S�Nk����7��
#DjB����s��|�u����z�A������!w�����qXz�mH�:j���P�7p����d��[x������Sh��p
LLR��K�8!n�T��dI���OI7��05��wDZrN:��O<��
���r�����~�dO��7#������g(��G$��'�+������&����S����5==��.��oV�Xm�}������]*y����j���d"�O&2��y�& V�(
>�r��X.����ao�������}$�I�����m���zZm���'����k<JkJo��������c�"QQ4�����/�x*[�]��r���&�1�N<��S���55G����n���������'���M
�^9����+����|W-�-��n�N^�O6�q��E���#Q��'(vPyB��b�d��=���xtS���x9O"-�x��S�7��*���������g%I���uh�uD�����exN��� Zw�_��%[E���������:?%S��4�;N�T��[S����)6�;���O�;�L���O��Pw����������v!���|��D;��Jq������k����7*���8(?Er�Q&�ZMF-��������)=~�_V���cB�[�s���e�3�YY=
����e�Wc+�~�Za�G����a�zn�3����2
d��U��y���F�`��E����g�������d%����v����H�-~��Pi��{�� ��:�������m��lB����5���&'S��d�p�����pL�V��]��[x�@!��5P����D�s�����i�]������e�#9
Fhy�����MDq}6��
��E�?�:���(L����n9�D�������D��\���u���q�S$��QD� �38
C���r�O��PV��F!/I
��u�w����S��7���m%Syo)�����I�&�>B������D^�-���Y��J�zd��N����
�J����/��@��Hw��b��)!�tH�N���(;F�c4Ab�l;Gu�G�����qj��9���k�8��!�D�~�u`�"D��ab�F����p���H\�����e8�P�b�(uP�%�Q�P��.���r�QN������H1����_�c�Ly��x���i"���)w�
P>2�i��uw8]��W��C?R�_���F����[��U���T���((�����=���M(�+�~�K��G9/���@�g�����4�H%���������n����6��MC.Z���{p��������>���G"���,6ph�7�n�+�n�%H�D �8E���M����Et�j����)Q��F,���<nE�GWE)�z�*'Sr�V�e�)1������Ec��p��d�(e�D�l�"���c���O���+C��W26�<'�H��+jQ�v��1%���.1�D�)�Sb�L��$�1�O������0�6:�'n!��^�
��$�����
P���w{�|�����R�mIW{'\-�w���I��'�!�M�MEF����e��]��`,��$qFa��g��	�;dD�X"r��9f�p�����A�t>����b����P"T���8�\��>������TPuv��d�4�g�7��k4�����"u��3������{)1�P*�:���{�5��Lj:u�������dbi5��iQ�p9�)2t�*�3qJYF�bu�����%�E���J=�����fM������������e�������s{�R��������u��7� �QP!�+��"���k����%��4N;Ix"��d*��P�.���L�dJ�K������������=�G���������R�C2REl��!��x���j"������L	m�b������V|pc��#�\�x��"M��f���,��|D[��k�/|FV�[�- 1+ax7	3T�]�--1
+a�8I3MR�8��[h"VB_xUq��gi��[n"#V��������r�sL*\4WI
�K"�[��tl��8��[>"u_���$_O�����D���C�$`TOt����D"���$mLO]�H��
]Q�\Y��8����-GO�)7E�����#z�J��j�+�����)�R��+Z�7���R��hO��8��]K�C���l"�n^��<	��8X��sth��d�����7x���m���`�-sJ��cb|�g�T��Dmr�\"aa9���=��e����L�L�lf|����g�i�bm#���cZ5*R�0��/��O�B���C�������O��`E���PyVp��C:/�*�W�������M��Q�*��s�������m��|8��t����1�m��f��1���%5m�zQ��#��;y����i������x��*��V���jj)j�;�,?�����r���������(�p_�L~��]����L��`�A��&Ner2y_��9��R������i�K�]�unV���2�_������_�D\N>��=�������`-IA<qi�����[B���!�z�H��A�y@�����.�&���=�Z��3Q�B�����2�`�E8��r}{�'F���A��s�S��8�:�~�O2�X�I�J�#/���TR��%q�C��?E��L������O�x%�Dg"����S��+<kg��J\d��
9E��LbU��I��nJ�����:9��^����jM��fB����
�p������'���GFc:&P����<���eN�-��1�S�e�]��������l�]��TnHV�8)O��	���o���G=[��Q-��5���,8�tJ
q;,1+���'%8�'��9��������>�x\Q�r��G�+����+��p����`���0W���Pm���4HM`i
*�l����|��{����!��d����I,8�����S<"DFg��������>�j/O�p]n���u�/f����z
K��R2�s�v	������������I�c�X��x�M���d��#����'��+�<�"A3��E��[�I-�����t�{B{{{�b:��q�N��S^�l���A��}5r����*:^�4�#��x;%O���'��� r�t�co��>6���y~��v�|z�]����j��4�.��?;�</���%6�%�:isVC�$:��O(J��b��/������N���GZ�O�����$�[ O==e�hH`$�i��</M�ha�����|:�����[D������d��'��q�"�z���$��{w:�:�G����_}��f@��:*�;f��"��&v�h�]O3fPT2��[P�'/�
v�����_��E~������3(2��u��D&�@��y9�,��&+��9��$6E�hSd�c��7!]�v��h-�O`b�����g�N�����������Q;-��[����DN	moe�;��fN��J5Qs�
K�cv��M����)pO�������wUH
�S>��-h�|1�3�F�������hS�$sD]�	Q��SX"^��x�GW�R��ba3�<��M�}b����Q��%(�a�y������`��xQ��Y.e�1��A��(�f,�c���\Gnq(k������pR����0�<h%�����V�=Yad�Le�� ��*��$MDu1rcX	�]�������D%�e�}���������������tA�[���hCsF���?AU�B���HN�HA���]5ug��tB&�TF���NH�D�"O��xNH�B��S/'�"QA����	���r�Le�4��']����4 _'��B����?�jI�rVc
��B\e������ZG�7E[-��/
q������l�2�U)XJv_�*����11����D%���E!�1{i�
��
W����_Jr-dm|=>Cf���U�.�VO�A���b����v�
9���/�mS�w�S;�������9o�����p:����K����U����|�z�j?�^�����n]|�����j=������+��w�1O��%<��B�=c��#-2��>xA�1�9����vxo�:kF�<�a��Ua�nd�*+P�5�b����TV�+����2E�Qy����PE�m��t��k�e}���j:� '����1o�=q�	a��L3X������G����L�q�G8z}D�!�!!v�I�G��&� 
��#`�����2���O���A�^�gQV�-��7������x���rK���MD�$B
�����p��TV	*�����v��-�����VZ�+�eJ�S�Q�p����������z�������`�s�z]���z�����%)bK��kD����w|X�Pm�5n�j��(07�B��Zm����9D��!q�j��Q���(r�SS��
_z�����+����V������c����43�uu ����,ND1�`x����4d2���6�U�J?0��24Y��K������\r�y���e{���C{Q�t�/t#����S�n���]O:��>���Tl����6%*Q��i��,�����0^`�z�����:��=6�L"���)�@6�h E����~V���z�4���v��a�l��'��6�$$�v�
K�?�%���{u��]K��U��3M������Z��	����l���.���%�~��t]����s���l��~�Tv�^�e3o�S�lJ8�f���Fh�c���������H����t���O]n��nZDuv��'j��1f�6f���?�r���
�!y�����=t��>NxTL+u�^�e��)s5J�����r�`���B�SB\`Z��oI�����[D\$]���D�����I���x
�N�{I"�
�I�)���x��M�������I�	����"�f���L�`������������u����^�U��6�����4�i�����k?��SG�lDM�����d=��b7`4�
I�

{s�V�����Cc�0'uz}����-���01uv}�#v����q��������++��6���A������=�[_����A��Q�����:��$_�q,�AK����m���9�����h�����A��u���f��9m��e��5]���|���$B�Cj�E�^�712H�!��,����_�%���:�0	pk������s��3���H~6`��dD�0�2X$���.7����3�G4����CC�n�V��K	=����#�b��S�me�X�/��@������� "'_����O��
8�9h/��Qb��&�G,�B�!��'5��{��tx�'s}�`���d���������Y����W�=��~�J,Qh����S����?W��y�j�:C������F'�nw�>j$�����V��K��l�Fi�|�	�t�w���s�E�����`�u��(�H|Qx�����{�V�u���Ww�*�6%��k�����R�G��t��|�3&����?����������0U��W���i,&������%J�9��Q���ab������0~|�O�
�+��I��G�� ;q���w"�=ut"3���!�3�J3D;{t20��G��9w�@��dp���N�~�I�=�a�(d��p'.s�������D��5�����
��@�_�5�K1#>5u�Ad��\��a-�o������]���W'����r:�c=�J��E��U������������Er�.�M���>DF��C	G#���S	C����C8��BF��U��_��x	�{��t��Q]^c0Dp�x�?Tu��-�!�!�S�tP���(�~H-�~�g�0Y�x�K�����'����iQ�,Y�����{p��������*c/{c`�W��0������6�7E��	�GE���q�/"���v�A��"�7M4�����m`d8�uL�|�?�rS��
L��r� 6�I����������$G
��������T��pE�W!���>�O,,�9
)���N���
��5e&��@���l)�zK��H�����L�y���"Mm_������-�l�Cq��\�bo�F�J���$����P�+#���{�k�_��	���={�MD�	���%�P���)���[`"���^��I��!\�bo��DS��E�27���_8�^�f��zI��P�g��
�g��t�^}���B�p�
����?�"%1����$eL�^1�D	���sh	�*yD�^�W� 21��z D����"R�1Dxb$��>�����T�
�)P������[
'��N��7��
�������,-�d�:������7@{p�tm.����Yc�8�"n��xe�>x>�D�"RQ$:k}1�|0���e�fE�"�I����4h��_`j��n���:/Jc�V��MI	��]s�����-:'�~�����u���_�@������d�@�I��/�2��C��w��/������x��.k�g�DR�N�R�:l�,8^���_�x!#��:�/d!����T��N��d�/d�����T����LG��8����T���q�*:f��E�|E�����:�G�����������x���������������z������^����[��hK���pCB��z"����%�G�����Sx����.�����i�T���GZ��E�M,U:�����D�Om$U������/Swr�S%X�����R��9�����4z��F��� ��x���?��w���S�sMfq��s
*ep����R�s�w����s�F��x��E��9sS�M���s_�-P~{���a]
���������s��f���"��������D���C��DS���c ���G����4�]��D.�������]�I��"qf�eT'C+>���#Y��O��D"'C?�����,`�'DTb����U��I�,�R: >����j�&~�TG��\�G�&�ZZ
R�����b-	�����������36��iq�M`u���QW����2�����t���Z�R��>
I��m����1~�5E�t�WPUZ���>������I
�h��&f��=`�&DNjtG��M��C{ih����Q��=�������BS�:Z��	uP��n">5������Q���(����~8��x��M����do/��<c�6v^T�$�T�I����\B�^��Z�YB�����i<�`��p������{����-����!j;����lVp2��������/��.��W:�����n�����/#���u�����L��JL�R)�K��R�P���t�~��O��.1h��p=��c���������u�]R��� C�pK�*r|����n�����n��+�/����t�$.�"}��u<r�������e�m�\7�4���p(V�5:	pWk�kOl(v�������1��&�}h�M�����~�-�De>�Kr�nxw���Y�dUefU��R��
�!R�D	d����L���2nxG�+;E��^�G48�f�r����x[�0����E{M����E�t��M?�tQ{��85L��t�?���S����M���@�-�.x;��{��������.�6��f'a})�XZ>�ccVH[����
�'�V�4s�������R"hS}/�?XD��G�1@`6�9���<v��n����{v�K��=�K��D�~S�,T�������7e����bp�\�L�^Fjc��5���IZG�����By���Ghqi�@(�@AP(�L2�1~�M�v�t�mW7��c�,��,�w�d��.�Y����P�]�;�/Sr���]��qS��q�XU�����F�)n)�8��B��Ao���&:��rE���n��F#,H��3r�l��r]��W�&qA��f����7��~U~�
���0�i�
�%�~���&H5����T��x��n����+X	���U�zB��vP�Z�r%S>H������IaZ	�?�@�H�i�l���i.s/4���������Jq_������c�E�o�Sy.��
����'�0��I�m��06�Rw=�9U��n��#V���J_9;V�M�y_�woNRP������
��UV���`z����Ak0@>�(�$e�M-���$�`��Jv����q:zX:�G����$� X����v��^.�P�&v�;E;v6�����������������1�C^����G����&�7v����1
G�c_�aj��	�oQ+v��^��Yw����#�*"��6�����n5]������;RT|�Y�'�����i�&��U���;��HO6i����3L.�G	a�j/���a-������;��i��������=�.����~c��������C��^�~8v�ID���v��LY�=^��~_�B�m�g��k���s;�T���
�}dI%w��E�"�.��������E��~�@Q��-�h__��-"����i{_��q#7�o�bE�0��7��!��p��kr)H�������I�xEQ�����������
������:n��
���������q�&�����c�a<���:�L��������7��A�e�|�&������R���
���!^�������7u�&O�����,���������{�!��W����������*�F��`���E����������D������yh&l��A�O��Z1�uq(7�v{��8���?F�����p�3�p�D���	�R26�m��X����\0�5�j�����,\��X2�5��g��$h�,�b�.���,�����qw��O(����#	������j/�$w�7�#���a���b���T@�j�mR_3���t�-t��u�-]O<c�-�O�������'��p�P��$S���� ���#� �m�"nHC��.�F����G�\(��������7r~	����;r9+���c�z����C���,h�{qKT�����DxY;�����H�7����N��(�j�y�`
Z�$[@��,u8O����O������~}}_5��_���v:��k���1����v��~��]�J���w��MK���7Y�8�(�:f�����>�~�&	�n�no����n~o��)����
�=�sR��=�Fmu���J��<����{"������<Y��
���{av`������K�����,H���E�g5�M��'��U�SC3-��i��f\1�5�{��o����2k��1�O������f21jp1d,G��lr?Jm��za�������Z[�7���I��D����7�8��
��;^�����x�o������rgy�g'�:3(~�����vj^Jq�S��q{�\n��0��/����+_���9����u����\R�E��%7�SWS8���� ���������u��w.#o��M������\;�����}����n~�'�r���,[]H
�GZ��I�W$���X���M���{�~Yz�HN�K�:������'�������o��f�oM^)���� �$xB�"h-�������/?����|���?��-����2+Hnv��������g���o�Jaz;��o )!K���M�1���!K�Mb��Cz�/�����[�?%�_����G~_����!0�N�R����)yc��/�!�A � ]�����Lfps�M�,yk��Bo�!���@������d��y�j��d��fl���l.	O�U.����w�{���~���e���}>�����dG��p��o�7�A�_����� �-������+��i�<��S��,�H�U�|��oJ?|(�oh"��n\U�����Xz��w��k��������Y_��5��#��n�_@d'X:�(����O'�/!�}X�B(���f���	���\�s���z<�)�Vnj������f�%}��S'?/8���XRv3��.I�t{�G������-��������h�8�"=9�������rX}�(��������0^�]�b�f��/���x�T��������+U?��D�">��v�v$�~��������%���
�#5K��Fi�#�'d��j@����M��
5ts�`�� �z�
�{=�~;�+��
�&jl�$�3����c�xkT���G|�k�)^c�H����$���}��Y��e5�D�!��������,��Cy8������7Fp�Y�c�1�4�/�N#� �i$_P����<�����7bp ��@�!�<���3�7pp&��N���$_�K���cI����I���������"p����+i�8f��Y�����Q|��h�X�����&$�����+m�	���LOO|���Y�g�O����R#|��
"9��Z���emp�,�/f�X����n�%��T^�/l�����n���	���V��H���H�_�X�k��i����iOxp���gO@M��S'5���u2`e�XTMg�e��������y,��3S7_'5����n��L����&z�:�iO�����XM���������J��6�a<&5@�9"����s�/w�+@��9i�����&r��#D�=��$�#��D���n/@��
������zp|x���wk��=X�Vvm��a������9~���������.�����n�d����9~����S��x��5���q���p�����#��n
���[�}���|���/�O�9�,�v+6v���;���w�����Mtd2�Vl*�v��#��n-��p��V*1�w�!�u�p�wkA
/�������b��Q�
k���0g���,$g��sV<�3���u_�ui�������O)/��r����,��s�[;�(�����*���*����'�q8=�(��`�D-��k��d9f�����j��_;$M�-
�x�*x�X�O���HE���0���s���[��7qEj~��J|��`p�X�����UkA��2��`�G���vv�E��q���0�>���"��8�|*��'n�l�S���BK���
)��U}��1�
�+-�����\������������UT}3o��1:ok��
C��{��nBNhqp���o����N}�>������������w� �rD?�����S�Q���%\��<��.�_.�J��;���,�+�\�)+hrG6��X�]��}���F��
e�4�rY�f��_DM��Fu~�������{����6;\-�mu���p8�����rs��������0w4!���l���Q������~�%���GT��T^�GQ#�,=������B��\w��Z����������	���o��$fB��3��o�`�h��v��$�ID�������MAO���j�=f����3�- ��_��c�������<���~��'���O�WOV�?<��HX�G
^@	(w�\_.m���AP�C�!lN>\��!�������zde0�6�E��g�e'�+j8<Jw<
��J"�?D����N���t�*�� p�JR�K[9T3����(Y����fpp��v#�:����*��":�?�6$�>���.��{q�5-��y��n)b�3����m�5q�n�����]P���8IMo'�&�%��M2����O"�@���-2]�$����3�������8���a��{�� ����#_�=�3}o���C��C���"{*b�A���$�+���.�)�+�e������+���I�
��z,#g�r4!/}OR���}���c)?��`$WmO��d�,�#C�2��H�����������������t/MO�������b�����p/=��?�p=��F/�	����h����hz��,K��d ��I�N����Z����X2�~�������"k�>/�.��s��0����#_�U����k�<�HE��GW���=P�O\��o���p��&!�FIX��8��a�v*x�uP���A�U�������!wBi"i7����41�
���43�����N��Q�!�CihA�%<�n�O�"J� 3������i<8�����i����1d�y��������m��",�I{i:D<�E���<IX�\���a��$��������%~�V����8����n	��),%�|���4�)�L�������%~p�%��"����� �v������r�_�[0s�mlQ3Dd�JJI��������b��T<j(�������v�\���O��K����*�#>)>qd=�X���������XE��2���� �X�����^��{����%,�Z��m�����!����vw�6mz��z����Rv�]E��c��D������������B���Xz�G�T��n�-�G�wn?1�\�fYP
�<]�;��KQL�����)\�s
{S��%5+�����p%t����7!X�q�B����O8N����J�6P������
&����-F���^z�-�jTh�4j�;o�����T!�^|�$f��7z�n���T?������Gy>������XhZY-�8cEF�&D�oy�'�h� ��~d����bn���g����3��i7�$@�Q��>�����w���g�1�j�{#+O��ss|�;��:j���CB���]�M������N-��%jR��{��_��H1]��  �0���1F�����B��%RF���;S���%�N�)ZR7���k5���L��{�|����������}�TN�����C�I���Rs���~��?���H
p�Jt�����RnL�E��N����urO���:���o'`��6�T��aJ��%����0�d=O�QBt*���E�:m�QJ`\����?4`�����D'3��L��!H*s-�3Y�L�#}}|:=#���f����4����{�p.�f��������_
���t�m�#/h������
��$�y6�$�[O+����������~�������$�����1��v2g��f4H}�@����0����3A�
������m�:������M��q�,
��l��9���"�O�����r�nF���7���A����A&{�)[��o��@����h�W�,����� H�`���^\� z��^F�Rd�si1J�*�R�B����1��%�*D=z���
��
��M�`bL�	E��@�l����\�8����iU�D���Cu���5�fT��.(����]�V�	{j��\���S��z]����!(�^W���C)�����5{d���G���A��� ��=9����&[N��#h��\����v�t?5�~�t�a_Z��+oe�������:�L�&%���M�O��o�����#�P
�`S���n�&"��);��
M��/.���I')k��b�43�2�nZ`�1�����42)i��id�q��T_�����hA��b�&&:O���2�"�@���}t�/���6�����k�$7�6!�u�����\>Te�D��:6h7���,�A ��X�B�!)a��XJ�M�F{M�
�����}�jk0�
w��$4\����f�����m"K�g�$hAk�N����1k���O7&�M?2�ay�Aj{����c�p����/��v��T�\/���?��&����*�Y~���bg���|���Q�}�3:����wny��m�k���Df������[u�,��ecB�#�q���.��e�W8"�5k�Rx@����\��D>����p�2�"�!��[�����1��~Y�-Nf�X���ao�%]?�2��?�������x�q�?2H�q�x�����2��L�Y��������6�A"%��R��o����K�u��v�^��]���5q��|z��|�K����;^��?���6��}E�h�H��t�3#���4	�!����?��
��������;v�'�1��Rz0Y���uW��.��z:��c�����B���L#t��IF�C��D�����|���G�3���P�I��^�cu�m"u���[��������!Nb����s�oS�6��H�
�v���CJ�����
Vo�)X^~l"�Q��[}�J�G)X��Cmb �"�EA��{�����D���(����dK�W�?>0<
e.�-�m�E��?_�w�yW��w�*Z]��n�����E����m�R��.���;���nIt���@^_=T���������w���
�"X�?)9p���5��o�e���|%f
����si2X�����A�Jp��EP
�C.yW���_���,�0�~��>����+9�p�o]��/+1��������,�/�S���F����	��9^�3�� �]�K��`��9�-�p+�t�		n�s�h�����C��"�eBP�W�����Q���Fm�z9�&��(<
���J�i�I���D#�����= gTz�N�{�����w)�����-���6�J55�X�&�`,����+I����m��j_��M^0��
Eg9m������m��d�L9/KK��kT���SJhp���d��x"[�"YQ�����S����s�R��,�8���	����!���Z�(;%e�����Y�R`�IP��fm�z��������3^?v��rS���(+�'��(�Cz��`�xS��S�N�o�]��2Z������V���`t�{y���q�����a���[�	�x+�[[6����G7��,X>a������+���_�w����?�^v�ET�P��	��p�f��n��n0�c2�cT^���W?fY�-���0���U���iw��T�������t
p�Zp,W�.����Q�k���r�VE/g�	Z�?������
�����|�X��C,j���T���Slg�l�b�e��,�1����%\-���"�y�=�����oFY�hA�����d���F_�K������oA�pgt�*7��a��A�6j#^rB�����@���g�������9TwXc0L��� ���/8������1��H��h��EL� :�_�c��1kv�a���2<jZ�_��DuXG��hA��n�Vw���Q9'���C,Zgex�r|��������TK��!�
�m���*H�ma?���pV�!r������t�������/�X)/���m���<CvGu���0������9����:l=�I$Oj`	4�
O��7h.��?�������^>^/��L*�I��k:�-6��l�r�Id��j[��V���I�>1���V�g\Y�8u$�
��$$�gl��)v�T��l���-[�Y	m$��-�n���L�������(�z��I����}c�6����m��6��n9k�����_��S�8�;^�m����?��^�+T��j��~��
����X�[�/� �_�) �\f�j-@�C�`w<��q�9���@�D�����j���X��CP��>!�Q�6��ZM�@x�([������������������;���������x�~������v�AXA�%�lk�*��p/a/#@ ���b6�c,iF���z��#�)
�k7����P�a��MUJc=�
-��I������/�T �o�k������
��EO����=�������]�6�B�z������o���mh�
��Saw��E�����N{CL�_!��9�h^$�5?F���
���?d��C��S�:�����
Ss��+��}��k����j���5�$�\��N�q;�]��k5�������<~�WG��D������O�:D���s�y9��?�����?�e�}�`_����B�`Rk�Sw�"���i����?Mm��}7$	�bS���>89:S�f����^��H4
^h�e�a������p�G6]����2��7l�R�gv���y��j�^����������"�{����I�~r��I
����?���r9Q)�TQn����I�'���/����g�O�D�e���%[����X�G�k��hznjot-���m6y���3�q��b{����U�)5��\9�`q�����	��eN�n+Y�� �z0d�Ae��%�4�,X�+_=��������[�rp�|h��4�?d���Z�����$����� ���0Xe�H:����?B~��B��/�+�������+���j�	��n��w���4L�>�r*{�z�	�o��%�O���~�/���%(\	 !��]�����;���h
�l����������EUvP�E���#!�l���T�"�-P�
u+���&YPe'�������\J���[.Qd����Po���o��5N��
5�&�����R���0�J���v��2p�F�&���w�c���a����C���J5M8^��:O�g�>{��_}�gN�e�vEe������'+�8��Bg���0�B�RcG"*��1������.iL�������Ye��\:�*�r^8:V`n�N�~qri������L�	j�]��W^'-�R�R==�5fy"��r��T��UP}���Ev�4�;��	�4��o��@����:x.�,���'�i�,�4V���py���0�I�^�����
E/�F� �~���
@�#�?�[���F�X'o,){~t��QJ��#�P�*j��E�{��	�p��W���=��8�V,�^���O�N�X�6�RpJ�;D�(�����3#�;�uC������%1os�� �"��f���)���)��Rvh3�;�x�����[��S?����.���t��G�?N�� �xd]�t��@��}���#V[?�L�t!��0WW{���*,��YV��S������
`��+��>>���}���1����,W?��)��wJ_��j�B�?����:�5�L�n,Z������TQ�n6�?������j���LIXKS�\��P�}?�f�V��>�H�!�
:(:��iEo�<������4+56����]��q�viu�XU���uPK/���?3F<p%t�0�8�"0V�k�jH�
h�5�����w2&���)4���A!�!������X0��K|��tc�P�c7���I�nt����)�v��ntb}P}��Z��A,�d�J'j������}V����r�*��W��n�y�0�$n��$n����������)0�1thb��|P�������Qfrof�}���cf"��D�"�R���M�l07�
%�|���oW
�p+yh����b	�biB�����4yh�����`	��N@��*��K�������M2�CY��v�%��%A%m�gTqa%���ZM�r����D��+y�H���/8^������
����]~'0�+}v�T������Z<p��c\	%6xO(hy��b���A�4�=[�1�{��:���������n���p|�X��8��F��l7���\�
���
�F7�gd�K����QxH&
i�_%�Y�1��c�O�����m�1>9�����5�
���)�� ��r����4�s��.�8�~�J��9��df�pb�Z"'4�m��t�K
������s�����G���p�pve��Y��^GAv2a��+)�9���*ZOHULIe� F�W/bd��2�����%������xJk�^{z�wP���V��^S��?��F�.WPP�IoM�����U���v5#���Te��$�hHw�3�|p���m����3���O@��nMU�m����:sV��E�<-p3��w =�`-P~F)xpX�K�������C#\�f�t��D�|PA���6����'��3��p��c���m��|f��f��$�|V�r|[�Z>�}:����	�P����4n^��������:��e���X6�=kJ���v
��z��_���.���l�}u|��H���6��"�|]��2��sC��i�A�f���e��D�g��&3�?�{�Yr���r���i�f�?��{��j_k)����]�B���i�iL����GA�E�GS�����b&V�_qv���2i
�pe)����Y��������p2��w�_�<JU�k�q�����Q��m���a���tz���T�.%�����&	7�F�r����}[���\����R<��NR����Z`F���e�^�I	��������������}��;�a�vE����lj\��@���m��f %�\7C���E����>b38�o�h���s��������j{��x��J������0C�g��2&���Z���zw��s6����1�f���ft����Q��Jqy���������C�1�{���j����NS�5��R[�S����]'up���" r9������������?<P�c�+�����K�y���?`*���U��E�<�I
�[���}�Y��Z���z)����i��M�h��5	�uUP��y#���`�-6V�r�w�U��?3J0�^����(J*�UP��z��^��Q�Tk+����Z�0�+z�r_��n5q����$��0�_r�k�\�1����,�`���u��'��H����)��L���J���� o����7~�^�ncr��:\�=�h:�k#	�����@.����.Hh�:X�4��61��Ro:������r�?�+4V��#z�&�����`��eg��:r�n���������R�cj�;r��jJ�Bcx,���&E����`��Gg���	�M�
K�'RV'��zA���rRe��%�5G�&�&\[�F3
-OF@��,�XF��XxCLR�%�����P���j;��wq����{��u4�$6�*�����[�P�.{yH;W��������7��Q�����������T�.������L�q,A�tm1��L����b���<��+A���������h�V~R���X%�AL��_
b8N\�,�
<*�i�������^��WA��.� �
t�����E>�6}I*�R��
?������Q#q��O?�N���6]j,������*D� �t�-b����<:9TA����+[����vt����{���t�&2��� ���d��-p���)��b'b]���5K�m���Q![y�u��V�
��X�l[r/���gAV��+����*�6srp��J"t�e�G��/�m�Z�X@
���Nw�B/�I���%}L��Y�tG.�E�/�Cp����;r�z�$��W�`;������yf���}�
<�^���=����\q����U�${/<����
�_��u�BzL��o'$#����2\�yH�:w�F����u���_X��0LY���6�du��!��r�
����b�N���<�5I�_X����A+�����,;q�m���$.ti�Kes�I�[P�O�=x[A�E����I���TY�yo!�*@���Y�}�l/-�����J�e"����QU�|)������VK+-;q!�ka������RZy���P�[�]�/o1RZy�����V���ls�V�+�0i�V�����Ca����6�}�mh��D��{,�K|�a�����O�8��<��AF�9n�t��B�c�=�~q�q��t�c�D�6���Z���>���rA���|�^��z�}��%�X�c��?��HY�H���e_^w���s}����x����Du.�������������D�����M�.����%*�o����.?�����|�~}�����t�����0b��1�l����������Q_�56�M}e�l��f3U7��SjaC%Lo;����Hh\ge���WD����H�����bm����]��~�5bx���N�5g���X�#n	sO'^�"Kp]'&�^
fR�����^�u�
[]h����`>�Oj���c�%�6�\��!�)�6�z��[�~�3�����s�o��v��)��+�2w��4���"���!���W��LF�8�����tbRz|h=������2���y��		�R�k3H���,��Pc�c
����>�:@�^,�x/��-��L��'�5>p���~����(�w��BGE��g"=�}0_��������X��0<�[�0�����E�3r'����%�~;.A%����pb�)�^���^����^�������	���H�����Y�[���T�xN�@6�"������;�G�T�*�w_Ho�U;��>;ZI���.���:^�2�����U��Y�-�}�hv)���#��/����-�����<��������������e(�ds���U�����+��OLj5_,)��J����,�v`Yp���:�����:z�T��_F��U�L�.��E �J��8����n�h���o �������h�N�5E 6�n��&���.+�����|9+�?�(�d]���r�����7U67�,��*����X2H/����e�}}���93�����U����A��C�W������n�
����4�+�av�lnX�Q
����%�m��z�9��(�Jr����>#�������@18�<_�������|in�#S�/��wB���\�4�����"�Q2B��a��K@.�>_
�G������h�y������>V�)pC����Y%�My�-^���4RK�:����1[�+����W�������t���`�2��b�36-V�<_�#��/��H#�@�^����m��}���1�����@��@��lA^,��"��Z�`����v� �r?����a��T���b!������B �.��_,|n9V�`��-*\,��m���9
<2�X�� g�G�"��������(#����83��$Yy��A�`�2����XliN=��<����\�"A@|V�t�� c�q��`�����I����7��S2��Xl�Hx1��3���K <���������	�����\���(����^��9m��9-H	���8{��������fe�8�	�`����N�q�����w�cR0��tR���]ix��o���	���#��5��};m����hw��S��w����������a�U���o\A
���C��>�"��X��,���%���9�x�~u��F*}�����0z�Bg]��o�-��v����~+�$h�j.B����l0	LOB�m2R7��� K8�����&���,B�q�C�;�Jcl�H]W�S���*m�}�Z�={�v�W�?�o��H��b�z�X��\w,S�%)[����Um�A�1G�+m�/6�������|M�(�V���:*�7�>�G����e�mhc�tw�?G�eB��]��cx_���p�
���[������u�x���X����P���j�<�,�����T�w��x����[��<~n9a~��}Z�����H�GK/�����id�"m�*[vh�B@iK��S}����+j���L��AS}d������$�4eD��6�k�N��m��w)#tbU/�� b'��,�M�y���y����X��A�_N�$�4�j�!�t�?
��Tz?���<������$�	Y�b�mz�H����c�m%	~N�5$�_,��)`RM�&5%:Q���A)jII���5	C�N�J��K��\�����'K
m!��$��n����w��rQAj�B��pAfjo`8?KUd�y$��G�
����-%�5��.����iL���Y��%a��M���M�����%K1j��%	�rL�		.I�,��n��K��ZA(A�����
��yI�|�NB�s	R���yIB����B ��%�*;����|���^\`-Y����Y�!u��I���Co8����������#�����`���h�0�`e�)�p]���w��X���{O=VI����{����I��7o��~J�<�~p`��9�%��
]i��X�A.L"6�K���N���J�	Z���aLO�=� �C1�}����<f�0W��Q1�P�
��w8����S�M�����������\���1�Az��'�8�	���S�b��*p���}�p������+���j����p�������EO`�EF@�� �����M���;�A�E��%k�s[r>H�2� �����u(6U,E�g� q������A�D�+���a>H��Bw����c}[8h���a�z��>H��AE>H���|�$�	��|� ��*��$�>Hp��$��W�>H"���G>k3r�xI$��A�D�|�� j	�� �������}�����������>�_����7��bRC��
���=����t��'TH�1{�k�w?Ry4��,������`z��<�_���Q)
�#�{�x�3��i���_|�M+y���P��Q^�����W��i
N����m��"4����
 ��Ja����6������Em�Z���`��q6}qD�z	�k1�k�
�_�sI
?2/rD��a��/�%B��#�0�~�n��D"cL��k#T9������6����,�t���� ����]�a�#���A��ZR���rkd�is��3�c��F0q�M�t���W���p�$�)K9�PJ���y��R��%	����5�.y���R�6R��.	{���!x����/��)9�������� y�H=�IJ\�&�AL��`�DB�v���	��iz��%/L�����x��b�S����w�$�NQ6d���u>n����c_�L-:�,�]�^�n$���w+���`oW`?#��J1�0��e@,�^$����c�)w)HzI�W!��5k�/�LH�g���M�.��)j$����l�&�c��; z;�)��n����v��E!>I���sL�;��4��U���tP��V�jJ���k}����{�IM���+T1�Md�r&e�0���m����G�YD�_�d�7�"���1�m9o���g����i�l���>]�X�A�I���g�YL���S�t���uf����9��Q����]��]�:���+����7{��`�~�Tv���OM`F���|���q2������G�bz�����O��!%2J2���:�I��PS��1��+����(�]��
>���d�d;����r/�s�uS�.��Q�%o
�O<]�^�-#S+@^(��w������tgaw�Z@��|'���t�����]A��0}��K3����|��a����W�QLqq���K�,������E����C�U�m������~7F��;��|���N���2��\��		t��ti�����F��,��.��ZW���\�)�E��e��=���S�|�a�O��%��r�$����}�Z���0E��\����#4��eS��>�xw"��w6�kjHk����Xk�ua�<{TJ1�4�#������r-��J�������r��L}LYp��z��*��z;<�wDQ+ �����po��8��z��P��8\�����j��i�x:mxG��W��z5,j�[�7	�4)l-'e�B�b�i<t'��`:�����1��e��V�Oh=�>����F�d9�u�l64FS�V����#��\r��6�h��4w��
Z��}A���i�n���Qv��r�����!O����+������/�*]�-����S��Q��T��M/��}'�.}���UL Vu��}}���9�A��>���8�h4�KWd���n���I��a$����	1��LJ��pA?��x�a/*���������^�c�R��/	��^����������������g�Q����1rd�;��}�"�������ge;}�>���[���!f�R�4l!E��)r.�
Y��%��W���URk�a���H�����4��[^�:�}#����]����7�EF�+��h�;�g-8�
Q�E4������3i�A�L�M�[���e�Adh��-����=b0�� `�q���V��D��9��ss�|�p{i��4��3����1�V�~_�P�k�l'�1����v"�'�I���5l���<���($�%$����;)��h�|��\WZ���:�6M�gC����%iAo�[�{t��
����3��g�"��d�����H�eD!�A��N��+�����nNXS��g�H�TX�\�G�qk|����lH,�o&����
q�&1�G��c�a<��������5	Xp��b�>k���o'�$��v2�]jZ;v����D��NZz[��n'�$, �v��+����<�[�NM&��k���\/
�zN����Ed������/���~��?�%�~>U���C3����nY�������J�j���g5�"����,4��6��j�H���1{t���LD�E��H������� �,�8���v����&7��)��T=	)�\����R�?N��9�yw���TM	1�:�'�pk���Al���(�8+�(�F�:��4�����W#��z����g`�sn��d�k��X{v�E�O���E}7$<O�F2��'4�������.8��+���/{����������}5���������Ix��]
r�?���~�?>w������/z9�(���!k��5��a��#��r�56�N.�������$[@]�9uW��?����n@�������RG����>_�?����Dve�;������T����8�$^�dY�^�G��g��DYE�c}�1�j���;V*���I���
�����p6�*P����xT�:`6��.Yx���x����x�rd!�����;���X�� �*d!��
�w0��+`Z�����2�-��	��Vc�N
�4W���������n���+$8B�,�?���<Ug<�,�5���(���T����)�AVp�Sl���8(��km�����&;u�{��`�Dl7��xM�9�!�?����+:t(~R�����Z���C���,Y�1B9�y0��_yH�	 �sr��H�<�/����7=JW���)���y��m��
.0�bu^���[��VY���XlM������G�����w��c� f�F�U���*	���>r��}7��D���b�M_����/�P���+�t+�ul���s!�EZ�"I.����!XTCvb^V�"=Bp�5�)k�$�H���,�pQ��i7Q�/��������������w�����.�2[,�-����g)	����}|;T
����
��Oo���
dmd�Ckufg1���,��Y���=���������ZpS��sR�6�6K��i%����,e=1{��w�Y*�F+!�?���@�F���FV;���&a����R��Y	)���5]� �^*K}N����a:��F&����0v	s��1g��]p����%��c&f���u���$��yk�;r��o�7�}�_����� W>�������+����<��S����H�Y�|��oJ�|(�oh�gs���S��<��$�z���������N�
�#������k�?I�a��������cEM��$	�..dB�7��LEM�k��n���y�,wSQ��fSpm��� �8c)��$K��S��.�ap����bW�tK��$��Q����,���~=Q���!�VOT������`�~1��U�6��i� �4_/�Qz-�~��T�9t����o���zy�S���G��������������w}���0�p����2L}�(�q���,��Cy�i_���?��SBo/'����Y�[��m����7���Z�����^V�����~5�bO1:�$��Q�����9	�t�7�:��}����Q�i{�����evC�$�"�L��Lr��?����I8TpD�T9u%O)�"����U�=�t%�+�B��Z��@�]���/��-�������@4��7��Y�����-Cll��,���s��cSe10�6c�54�,E�"6H!��a �Vei�-H[��2)L9K�mQ���u`�GdP�%gy�-dQ�6��>!�AA�R^���4>R��a�A�H��\�i�;$�U^��Z���T@��������pU��_WU�{�@
�r�����P��S�r���L�qW����86:�EUyf�P������������T��D�jGU"3�f�iV�����������/d��SH��Ks�l��/����;>��1�\>�$�g�5�f9�_ErRO��U� <��``��*\1��I$��3��9.�a�W�\��r��~Z�����V���#0 +�#r��������7�����w��?x����8�_w��X��7�zpu������/���9��m�����������#��;[���,:��/6*��w��?x���8�_$<�Gkx��t��o ox������<�N8��$'�
TN/H	�`n��:�M.����������
8?��G�G�).�_?�C�����3��n�~���Z����pL����#��)�����}�2^
������,��v?�0�F���Zz�W�Ejh�c����,'��'y)Y��%���0�k��4�`��+R�[�M z������%t��$�d��E"���@��i�`Y�|���xA\+C�Xk@B#���������=q����<`h�P5C-����>��������U���~5�+�ky8��x�~hg�a|
��`j��L��\�k��fh�����!���|�0; ���)���P}����7�����"%�`���!����x�&R�1�a	�)���)Y������,�r��8��b���Of��b��`���$����8&18N�w���:��X��Y�0`$\|55�S�����w�D�n�������y�-���7���T�w������^����aSn��<��4H��>?G}C��c�
K��8�>�ZdO��� E
O���d��w�MV�Dx�A�6'Y�E��[a1���L�$�mBN3�������� �P�K����>\	��s��i$�����=F��;@GU,�����c���B��ra�B���v+��ZH��fVj!\�&�.���r?�����h�
�lt��������-Gy�����w�_VSkq����8n|�!���6�G)�'N;\��$��
K��Q�	�K��~�!�����$���G�7�8������p:�
�G�n�2��s��O���c$.����%0��n<���y�)���5/-��y��xR��7�P�0A�F��	��f6aD=�*���X[a G��s1�`��e�	����&W�@^@cle��&�Z���aY�Y�6"i!l���&��l�I
^V"$�[D�X����`2��$�N�yl$�i�+��e�_��4��VB$�N@�`������� �,����@&�%M����8\�Cf~!�y����#K�?�����e���$HYG�^;~(����U�"4������eT�%~/���?Y-/�f�=�',�d4��B.��AD���W4a�[��$bBD�v��<��u����gdB���4��������2D
�ib��5)�[�<����n@��,_p,�@K1�tq���/��E����cW�G�������JQk,��R��T;�<��*M`w����41���4��@���I��k����c���-
�pM��m<�<�F+M$�R�4�����#���VJ�
�d����Iae<�u����w���gG����"�6x3�4��O7���?){:&G��nm>���(
�GV�z�v���-�G�x�����)6{����
��I�7�t
~k��9�(M������\v���d�C����R�v7�4<+�Tzl(	���M���������5�`��V�M��������@}5�������A������G�<�{��>��������8��d1�;�X}������n�;W�6��|=W��})����;�TV�]��j_��vX
l������zZz������nz��G��n?1km��[PZ�<]�>��KaT�����)d�s
����%+C��KYBW�
o��F�������&�^G��D�����Je6���������(�03�-&Ky��^���y3d��������|��$���� D�Yl������x-�Oo�����R���g��d)��fZ��<~nIR!�����������A�������2��8�9B���~O'[)=�<wlHB�����+��s���� �Wc��6r��X��o��<}w��u���Q��������Di�������K��nF��4j7����lP����>b��_�.Ur�c3����v��s2�"�S$����N��h��U���g�3M����}��kt�j�G��US��>T����6'���J�h�w�u������#5��*���.��{��Cuk�M��������s
���N������������e��z�����&r���5����@���Mok�J_@z�KtZS�i
L��t�p�r�{R�0Ciy�P�N���������{���0
��_�s�E4bp���Hf����
���y:w���z�����s����SC	 ��]�k=48hlo�d�C�8� r�M@O@�������	]��`�����~w��Yh�����e�^�W[/��iK����^�M����]����-��z*7���:�S��y�M����������6�rYph�T�fh
h�mR'�8C��kr�eW�, �4$��-�BoA��Y-2���0� <�������,jU�e��A@�h!K-2�B;a�A�`��d����*2���0� ,�`����x�":�>�/����P�8~�~�gn�����z�tq��T�wC�|O�S��C�����B
��������������VA��������s��>R����� �z??�����&^N��#h�ppp_l	�e{�A�+����L���N�q���Pi��L��]�]J���cSv�<~nFgg)���4�K0�)+����K))A�d�$��M���%-�p��.���I`���I�����]J�Au�$��'�^���%�R����������^�v/h�R����.I���>��Y"g�`���}t�A���6��I��|�6���&�'%�N��c��4����FX�=���'"�5�)n�5)���'!P~\��%��dj�����[~�����f����@��$�E���5;��%��n���*���� _�3X'�m�k��+|�[7>�S?�����ak[
��'��d��oo��&�S��W�S��������|V�LLJ&v�S-�7�� v&��������1o-��9��vt�>����f;�����~f3�Xd\��e=�L�v���������@����	�-��s�M�>fp�$���Pl�V�����KH`!k^<��.�]fA7N��[���K�a�t-I������w��%��r��}g���1���?�e�G���,�����w���[�H�{�LF������R}=�]���c����DM���>���6�D�R�!kMf���c���"D4����n��������bQ�$h��#����������_��#������^f����8e�l'������T;�(�~��;	��&��@nC������O+F�x_�>�B�<���1@����*�����{F��T����,	G"�wC\�nP*��tT��S�z���`��z��PA���U���
�T��-�Se0��_���TG�XE+���s�,
�b�
�,$z���GQ����&^2���<.^�{��y�|�|����]u�*���hu)�����S������K����������%���}��`z��9mi2�C�Z_I,��������Q�D�:�jb�`-�6jp���4����=���h|%>��j��������X�������}�u1�G��b��&�+ir�{]�/K2�&�����>
,P2'7���-T����;������^������J
��gAn1��NO2p��}���tp��h?{��\���~�V��VW=~:����:2'��B�D1r������"�x��'z9�E�
/9k^�wZ�nBN���P3'�x��f��k"+��R���W����@�s�y����e�t�4/X�0	�����[
�D���+}�����e��������'�Xh�z��������E����-���~Pln�����fu�`�7��[��U�������E�>)SLC6����3���"+6����'f�U�������<�r������}tG�?��?�%���/��3b^�Qwj~;�j�	�����pb���0]������\7(�!xv(��]:(��X,�m?�K�v��<H����>��'/���5�k�.��W������@V6������q�����
��
�L����K��	��f��e?���^a��b������w�Vd^���O������,���l��������U��Ym�����}�T��@��/l�rZ��w��Z!����<����-�)C0�@�\�����B��u�3��yF��h����*�c� �gE/��~��$�a�*�R�Q&���$����F9���x�����
�!0k,�i�/f����R��a�	�B:�
��@���UJ@\��^��`�lb�����&'x��Yc��@��������&(*/���v@E+.M�"���E�����j�rK����U(xTe��-��\����\d��u*?*������/Yhi�)�K�@��wO�N.�>^�����v>�.�������d7����C�3*���i,4���M�A���@�_(��}���AB����$��^������Ah���$:b��������r�*�9-����;��z�ds���vg`��T�<�$�
���9-J��6{�=�*�A�hA����=?	��[l���������������{��C�������q��V���Y���oO�O}c���l�k�l�[�h����Uth�X.���������".6�7�d��Z��_|��Wvc����w�����v���8YG�F���p��US����Cu}_�����2�O�|iZ9���}fK��3@4��/�FjMc�T����yw5PX�RP
�@bmK��y_�
Dl�1I$�����*
4
Kf6��X&H�NK����NWIj�IC�XM�+V^�u�W�"b+�I"�B9V����G[�L�I��%�]�I�����Fe�o��
dl��4�&"������E���;Stl�����������"�$��`�&7�1I����`����&�g������ �&2��I2��%Pb���;)'$l����������b�&F�E9�S7��]�R�@�li5��������a���[���GS4L+��\����w<����d�bk���������������c d\1p��#��PG-�E���P��\��X��E�6����M'�86�O
�Cg�z�jP�q����Of����z3	����3���J�\���X+���[�xl�o���j�Z������"d�z�nq�LZ`X���4(6���8�����F�i�M ��YV�DI���W�����$.��^c���@�v3i$qj�l�~*�UK9����7���7o�a���4��wCC!`L'�]�st�<�7C�x0�������� \d
��4f��������^� �2^��;3��biR�������U�IQ)R�e�H�8C��0B�c��T����b"�zf�����$����$,Y#�6v�N�P3h�$��<�������v[��r�nW�����vM������f��������Izk������e=��id������ ����&�&e-��)��? ���O�����g�������0M�ze��u��-��0��N�g���'�i����F�}���j�m*��Q����5�A#����Z�p����6P��r���_gMS� ���`�����������1�:Nqg���9z���|��2�T��U4�
]����;�x�����" ���&�=8���vi�@"��@(����D�9�r@@�x� f�c7Q��0��W `�+��
L��c
E��)���������L�G$8rI@,y%���&r�K0s����sh�g��	�����Oxb�9@0��``�'F������	S��������*)��*@V��+��
"^�
&X��\C;>AS"r�Z0.A���	�+r� ����;/ "��xA:�/V����5��}B��&�
b0�������c�+�+���O(8'8�2����O4��9��uw�f@���&�=�������i@��G5f�����
l+�/��/>���#�"��m�z�=�����#�^�xD8@:�1��_�$���f�#���G�@���w�G����W����Q�t�B"9�HD�?�P�t��#-�H4�����o��M�H@�?��t�B"��H39�H��"&�yF:����`�H^�=����zF:R���w��]!��^@���H���X��s��.q����qY=����o�Y�=/�������o��������V4���c��D��]T�aZ�"s?|��^��^t����S'^��sW��q����w+U��!h57D�~�"�-���
_Mo\����r���b<����Y�����n(����S�$�f��.���GC������'I+�c��0�i��Y�VL�����%��xX�gX_M/�;};����Fi�XO�X�^�
e;�Nzz}���F��|��aVs�{?Lbj�
lW�~dS?T����,^��Lc�Z?
�������XS&�����\x�6-�E<�
)�H%���
�1���l���j���:x��l�i������Z:��>Y�3j����d�2�i����Y�3i���e�[�tZM
a$��d1���z�[��Fc���l��;R����\�#����Nu�`T����T��%s��G�;n��>��"��:a���x�f���SuZ�)s�xM"�������j���il�p9�E7�yTd�,�����s��nD�(�l��V[�=lo-��������t��S
�6KU7]���8U^u��#6���_J�4;�x$�������q�8���
�f���\�p��$�����n�<PeS����>��NE�M��S��[������b���G���5�8�����t���u(K{D}�[/�z�H55��	#^5���ynz	z�����/��s�/��?Ej57������Wm��G��>S�@
���z��������A�������6��P�Ou��"�>s�A��T~��O��(�j�aL�}�b��D��T�-\)�2��],�w���W��`�&?��&}���7��>�����%�o�b@�����F��:��p���u7�XW�b�K$��Q��s'�}��c���Z�w�g0�f�5���������~>U:�z'9�W��k���8����-���To�}y[FpC/I�)���b}��<����a�����.XQ��Ijm�.��v*�m�$�����U���b?�
�A��v���=T��[�m,��s�v��X<b70[���/���SO��lF���{�[t�K��>�b|���Y�����|�?TO���"���I�r�f4��}���&!;�f���x����K��r���Bqm�����^y�K�j�}��wO����%�����om�������2�~���j�X�G�e<��������2�	�h�{�[(��Rm���<y��������35�����>�I-g��O\0j{�����k5�Im	�J�q�I."�Z��lZ�SL��a�?� �Z�) i�lL��
R�N�v��<g�X�����d	�!��	2�5w�=���������|�����k���a�[�ks�|M7�u�[����?�������\���KYY������K���uz�1�������3n���L��[7���t�� A�����,y�i��6�r�����e�
1��L���g�������6��g|1������OZ)�3�X��|�8Fq$P�k�kb�����+y���|�8�:�l�U��_&�h���@Ge��[(G�l���(Gcb��7g�������~3��l��ev��/�x{�F�x;��� ���<�����E�y3���gA� 2���8(s��;O���e���%��UfAK,���3�R���k4�:���<�T����*�����[���N���I�������jo�Bh����iysc"�dD	����p,���D��d�*~ )���O�O�z[=5�2w�m}����b6L�>�e��0\�qJ�Q��������!K��H��3��T�AE1*���#m�C�W6�r/��G:���~�Z2^����-��U�a�	�hpf,)�El�-	�44��������  �b���Jq���K���s�Z^��z.��]{)��vlog��O�f��,�������/��G�s���X����O�R�/�C��O������dL��&_w���r�@H�C1S�/�-������������[�%���%�P�Q--5j�vUnTKVs@�����A-����I--g�$^bF�4KM�wTK��Zdk��������������%�G���|J/Z�]���|R/$c�v���~WDt���oX�CS����J�5�����s�v�66��l�A���6���-�}�[��Y��v�x����J�+A 5�y�������vV�W���m�|p�d=x�"0>qc������N��v�}��O��$���{=6{�����m��/`}�\�v���b���c�y����Y����S��r������}T}:�G�v�������o�!��=y_����ky�]��a����8�c6�����)w����������z�^���r��7���*;h�2�w�s���M����'Vv�^���E������r-���hs���h=�(��g���5���d����LU�~ ��0��3�y������YH��@���I���4dMG�X�N�������aEn��������.7���4������8c�s�Ok*)D��o7�]��v�`<��0��R�f�v>+s�dMTmjE3d��~���-�cksmw>~�v���Q'L��I�PO��	�L;A���4��W��SH��v
�����-C;C��q�$X=������:1�.m�ub�M�z����D{	��		D��-C;�����W�G������D7|�HR{�K������Wn�j��l3����4@n�q��(�8n�$FIC ""��!� 6l�ki:�k. X���W���_�����3�z�L?Xc��}s����^��[S$��i.�;�ss��m�yptp$��fgK?��������D�N�#/�O-l��n��[���/�A��nU������^,Gg�1=��*z��$�����.��x�,�y�Z'o+��I����{�1QD��vO=&���=7?��2��JB�z��Of�$xx��O�V�C��-�H�E/��&��<���7� g3i�����t�6��}3�F���6�H�]�h4����q���p5]����HL��t\$&�h+:.i�x��HL��e��"1����y���> -i���,�	�P2�D��B-�hC���fm����L�����2���C�p��������h��j�L���u5G&�(��h/Q8��A2�&���o��kt|;<wAm��:
��Q���r���n{}��]��������=u4G�0�^���wTtL��a
2!�z������<���d����,��!�L�	��Z�U
�<��B�		��`��+I%X�\�,�o���L�F�l�6�.j�6�D=]t7�=\���E�=K�`����(���O�fS].Q����R9��|��K��j"����������u�r&�{Y�jc��Q�M���������P���������HG6�b\�8���<���1�_�5=���YN �������&�c[��c���;FM7�k����S�JJ�5�ty;���������6n�2����T�Sg�B���G�WQ�����X��1����ZV�~8�����8joF1OdI��	������2�f_^t���/N��gB"�$B��D0����]u�.q=H��$�~�<<)%�t��_M'W�$M���DpY������b&����������gA�%���	��j#��rZW���$�'h��j�I��)�v�&���"h��j"�`��i�&�+N5�"-Hv�!��V��A�6�M4�Ji�1L������>a���0�?!�Q{��uG��sU^�;��6(-������_j������n_�@������"�O��b6�V6�`�dI��i|�p|9	������[ O#Y�S�4�\b�Vn��3�B�;J�$'�	�}N�����<��%9������J��6K��H��he��&�j��R�[�=��"���$gf�>��j��@�$���l�$Y���G%i�6Z��f4�
/Y�C���i�kG��6*����O��_3���i�n���'��Y(�]���;�����8 3���{p���82��~y>��m�M�eQ��@W�������98M�2D$Z�/��0�R34m�@T?�4\>��)�0�0�[z0�������.6��z��f��/�0�	p�BA�ab�`�A�N�)
={�`�K�Z�Tk���:�		f�V��r5X8�dLQc�G$B^��	�t�w�X�!+��Z�g��7���7�Mco�����t�r���������e�)����o�b�����
��5�����$��h��w�N��:O�����S�
s/w�H��M0;)���Y�Or�)���My7�X:$��y�b�Z�_����[��4H�i�{��+�XK��W��z�4��S9���8��m
!A
�Y�o��������5x��J-&���M��9����-��r���9�p +[��@��Bd��g��8X�,���e�%��,De���2G���mA�!A�t�~2;��
�rj�^��v�r;��	?�����icw,gQ�3|�Y��~k(m�b��{�98��,�,�5`'������{*7����-��\$��g���n#<Yo5�SX�9��r����<�{>�,6LO������o������SYo|5�X�x����/��d��z��`���I����{��k�,�p�nX;(����b�r�������)������������j������~�^j�k�aw�v���g������k6�~~�W���+�m7��oh�����������z���|h��:�?����n1�X��A���?E}cM5}1V7l����Z|��_�'�����X�
M����'
����pt�n�Ap�j=]�!m���#�c(��!vIf���8G��/�,XZ���)�����a�!�!�2��R�LdYB�[���,�����e �����_���vnc&�|����Y��`���c����Ye|�;vO2��;�����.����t��p��d����c��]�tN�!Q�??%��j��r@9~�eqI�*�d<�
\���Z�5 h8G�@�<�Ck�@��i"�(��J�g����]�_��qh[���lG/^��1��o}������[�3����8O�Z�3���i�l���v�I�����Yj5�������l����k�"���@Z�s-Y�k"�1�N��D6�d%�-Y'�>&�S^�� ���]�7����I���\��$��G�5�K�� =���L/����:�6�CG��:oh5��w����+���3y��^H=�9I������|�`����v��J4y��o���d	R�~����%�'�_C�������k��
����D07���y���� �<5|������t�����Z�#k=������mu:WM���������jO��ge?.���3�^�����i��5�����`S�p�F:���n��-��t;"����I�zs��Hi�?x��`�*z���g%��o��rX������������}�u\���T������k2�zpA�^&����eQ�K�
�/��yw��w�O�;���f*`��yP;�h\9ryk���o�*jb���9�K��7M/����������������S��<���. �I-���Q���aF:���p�C^gf��L�j�����9��ir�fIf�f�e1H1u�5���+N�PD�z�h*���::>�S�JTy[�"������v����|d$��#6�m�������a"�bN�z��I_���IX���P��#�~s�.�F��A���
J��oC���Y���*����o?Eq	(Z,�	�1�h�'(&�� �k�c���u��mS����w���e�W�c��]�+���G�������{iG�HKZ{=�'��t�
���/�%��}�QIu&Z��o���S��`���if��7�G]�~�V~���2���i�dI"���6�y�;��]SHc����-V�PC�eu��<!���)�Q�o+�G��ZG}u��>�I���_�Fi�e���e��RGv����n�i���+_����&s�x7�5H
P�bQj��w����v�%�c����]7�����Z��Rlx[.Z�IDP��[����f9��������xi*��������U#��X�*-�2M�VP�`�NB6�����>����&:��$o~�&{��������� ln�d�����war�F�E�
#���Sm����s�^��wO�z���'�n��*XK�4%�"U��{��_$@R@"$��Ou�Df~�G"���r�j3�}�]mv�r�������%X�|�\�~�|}/Y}��*�L��	�d�������KQl�Y5i���#�p8�s�W� 2]M�V>OQ�nD�B��I�r�*~�S3���<������]gS�K~f��Id[C����ls{R@���������	 �����n�T����P��A����]���3IbB�aY�^��B�o�`�
OyQ��C���0��_S��
��c��<B�g�}8�	J�OgX��l�i�t��z:eU�����K�X����n�/�>>��������8��fU�=��S��z�������s����\��>���lP9��Xi�N�z+W����"�+�7������v_;�{� �h!����	�U}��C>��D3������t�6���o��->��m�,�*��6������3t�1���q|�SVC���V#�p���oa(:�g��"n�����3?�$E��f�5/�c�f����I����y�
��$�����-gi��+���_��L�.%!^�Do����fg�=��K�����m�TS��4iy�#Qx��Ex��p�i���d�$���^��*c������YkO(Lu�_zv����UOTp�=�
���%��f-
I��l �q�q���B&�4�����E��	1CY�`���g�*��Z������J���VT.�:%��mn����� ��$a]3�l��lL�)F���@k��M�ST�������7�J��Y��������nA�������r���k5s�*�H%�:2-�jzH��2�B�����(�_*��Pzx@
_����>��/E�P�x@�^�����$�
����U*�pg��;s&z�H�Rz���k�y*1k9�aM'N�+��.K���s�u�cR�������0�k��$8�i����U5i��M]����S���$����KQ��O<�����E����B4��#�<�R
t��I���&�Z��g%C]-j����L���W\�$��,��KN����$y���~I7�y�����P-�A��C�)��������n_vL�[Z�y��/�����.0�f�H���~��~�t�^�\�����)D�����Nd���<
6�i����<��t�e\��[M�v�JI����?��w�di����Vz�4#A�`���&u�D���WB�IT��������w.��5�\$I�uV8��r� +�������'�B���v%&����S���)��i0G:e�}��rLP�3�A�����G(:#�#=�f�MmRi=��y34����
�3o86���
p��p8�[�Sh(������Svp�s,O�K�y���
>�t��;�����EWU���
�o�F	1k@�l��+���m�:�������I�6���F`+��#���� j>q^�B9�B�;��$qAb�Y2J`b�a�i15����v��g@k�h�R�����V��C;��s?��*k�����v�+7���G$�2�����F>�5�r���3���/���n1m`�R3��L@�F�Lx�<,�?�8K��*s�&�����L�(�������6b��O�(�y�
�����?f.���[n�.8��(�G:k90��w����r�����X���>�9&���t�K3�*�>�v/����	��w�X��H��^�!|�
	�_��pp���~-��5�����i�>%a,m�����JP����A��&�Sc�0s[�SxB�E��@�K�x����tb,�3T#��\��R ��049��}�h����]��
m�P���tIV�]�,^X\Uh��+������3F�o��P���Y�q��Z������� ��;s��3[Q�xf�;���(���m���$"��\��l<]�=wd����{�b��r +`a,�+���B{��Y�.i��e���
�L�wa��abt�ZI�,�c$=��I0"��c$�� H��P	*y0M�ut=��-�����LS:��~3���5
*����k��N�K��W�r�X~
���U/#KQ�T�|+?m�K:�����h�.���[:������J���#O��k:S�H��M�IY�Z�q���E��P����s��Dw���W�5��_q�H�������{A�&q��fb������K}�U������6Zvy�/O��N�p��B`1��:�H��'�����������LpN�w45\�"�^��	.I�G\�������SO����D�"���
���&�)��)A�P^�_��	���D9D�9��c�l�DU�gv�N�h��:�D\0�S+��gl���g�l���P��Z�]| g���ki�J�~��Fw^��9�����1I]D�����J'��oi-��� ��0��Z'�uS�J;i�p��mg��z����,�PL;`e��)�
Sx����yrg�S��3�=��e����Hl��!����d�^P�0�R��a���!O�P���_9�g(VK�#*y��R�Zavg
�H�������R�>\�>�}s=��L��?~��g���2-:�x�0�&���htMo��#8j!h���n���ZX��n�]��/���J~��&F�#�����K);4$�<�jAf�^�j�?���64w�Sz5��jo%r����M��n2���.Z�J|F���"{��J�4��%�O�Rh�=d���>��r��)R��@
T�N��Z$��V�
�z�����CH��J�������|�`?�������7����9/�}a��C^m�7�"� F*���F����T�UK4�����S1)�3��a�49�	>�CU,i���~_�Z���r��E���w���n����{��{
��!MT�5��v��h��F�PBt����k���}�&���H�X��d�'��dH��?y���(��P�I���(���.'�Z�\+L<Q�9��\���8��%�*��z��rM��{~v!8o��VO-�kb����T ��g-@��}�}M�j�������V5t`���]��G�2q.�M��&��o�������|���*�?��<�^:��������en[���k����M
kQb7H`_����� ��bd�I8#�
Q�}��){.	�
��J'�W��F<!���L��N�����8����O�qr��+��8rN��W��I��8�!���+�5T�J�W�8�
��+�J����3l��T|�� ��of�8l��?���q���8�������p6_�g��m89���B�Y�$r�@��s���B63����Pp�j�Nj�Q$��� I0��<De��Hj;}}9��[���|��s�S����5�OmV���]����h��8�����Q&7��������6�n�9�>�w�ZE!���V���d�,D�#���B��7YD��B�rW�7��%��<�)� s�5�C��0�x���i>4|G��Y2���i��-���f#k?�uy+�����Uaa|���c�k�����~���c<��)�n�����C�=�gB�O��{���i�������d�r{��?78*�r�}����Z��,�F&�_���
����y��=n�}/��J�t�n�u{�:�y�\#%?�e1�����t3��/�8�X���.>NwV*��+��E4�����4�<�z���wy13��|�3-j�a0�Z�'��wY03�r?5&k"�6�`p5h���Hj��IC��F�u5����q�8�>S�:�g�N���97������R�PRA�Yw-��L��q���V�����a��@��mm����v�
[�)�D��ps�oY������X� :���3���6��
%<`���d(!����'�����^�&?�cv�����_2�o�3�����<��3����ec�0O(m�ht�Y���X��F�>��M,���� ��������y)��$���s�i4g�B��<��U���Wa�����
do1�zC���rY/Y�JI�C����M��aMo�L"������w��5dG�����"��GC�4�
rpi����]�~F�o.�� ������Tx����?����m�nI"��T�{�i���9�-���|�I���x��J:��+�o	��x�	����b?2T� 7�Z~�[9z���>��8c�d��:���d���E����FO�fR��T�g�L�_��M��u
�\���b��#[�����HW���r����A Z�6S���6r�9�����m���UUU�F��OO������b� ~U�R��y�R\������@�������"^�J�H'��������.[�5��}��E�9��P�f��Z�h���n��~V3z5�s���c�|�!�1�+?�JW��+"\��i��>}E��Fz�2V���j��Y�j�������������y�i�}�~���x`�������iU�O^74�/����,OA��D�L�Au�zv�3���������o������������4��[\���a����Qt�������">���/.�^�<j�����?�+�;����[����j�
Q�.��mQ��B|�Y�_O9
jg4@�����	b��+H�\����������dp��8k%��EjzKm��@�7����}3�A��;�N�������
����P<o5��IO/���J��@q?����+c �Q��'l��������|,5�z3u2V>�pb+�d`����g���Yw��O���B.���D�����&�KM������h�&��8�%<��-A�W�����+�H�4�H))mi`�����UP�]r���Y�.���+:��:��-���N
�t��uu�t�N~�f�O�����7
��j���\o������`�m�V��q2��xj@����s�{�5�6�Q����&�]�<��v�;OZ��I��i�������m}b�Z�DNW9�K��$�zWDn����k�Dn��"�W���Am��	�����i�����N����D.�@L_H���������p�fHB_j���������q��!!�*O��$
�2���< �����+��������c�h�.�lq��Q	����@�K���������[���z��w��n�>�z���z�P�4^���T7,�*F�=�w~E�VA��1gd�%��p)�k����B�6V�d�%r��Mm^�<���6=(�%�3��������P��x�Wg�l�h�]���������_�BYm��4��5���E��'��f|����D�����ec�r���9mwY;����OB���{E�	j=�7q�x%5�t����	#$�,���Z�&'
m"����V��/��_��W������aB���[�S����V_����%:8r�*}�x�;cv��	L	��������������]��������L�&|��t��������;�O���X���/���9�v[�F7��L�9��u��5�'���+@�S�-������x��[/�)P�1H�����g�s�6���`�O��q�z���e1`|F~����>�����0��T<[�����$U��XvR���n1	����M�b���E_��kM<[��D����>��~C�-�A��}L8�DJ>�Dj��o?��Du����`��o�p�����/���D�%qE1qW��g	*�hBw�5T�-��������;�=$���1��=#��R1"n���kK/�A����xLnI�7��������c�:�;�7�Z[�Y���k,���1��G��d,�����5%��"c�6���3����&)bS����y2��^w|�������IU";�q
��_$UF���N+$Vd�#5�"^�����G��i�1e���9����z�>��1K��1��?�QZ;'�����H #��K�)��p����*�����v�P�F����3��[{�x�C~��+{u1����$g�����_-Fy�*�f�w�,U����{�!����������}���� ��:=�t.OP�/��]��l��c�p=ja�L<���`���isc_������_c��54� ���|���{��O�m
�W��#���l8��Br��X�S�A����UPT��%��_�Y�n/eU�Ki�?��� �+SD�!J��"��'�P�����2Hq_,��Nz
��������n���8nu	9_r8����"K>tf�{fh�������;���]���!u�K�,q��yp���%���/W��5��qc3d���>V�w
Dr,��X��A_Yr�~�Il��DW�9�l��tV���l��C�|U6�zj*��T6�^���.[:O:*Z���#	��n�yY�
:��� ��>����U������XgpL?�)RX?|/-[��������>�/-����
���@���p/�?L��@9���x��4��1uw��.%�]S������j����;!:B�A� k�=s��C��������I���s�!�=J[1�l�JN�#gO���+f�eV����7���C���XMp@��H�C��_@�5&�����V��OB*7�tj�).J���n�'���(Y�Q��e�Y@
����er���D����(�.}�Ma��`	�k[����X�/���e�<H�pXz�,G}CM�����n+�R�ED��O�)��cm�^�����w�ewk�#���b����+3�X�(�2���+V �^Pg�S
�C9�W�O	������-^��%�n�����bd�XY\Y0�W-��0$�+��4O^�C	���\
G�"e���r$��n�6|����Q6Ub���e���HQ�ct�(y���������MYS����bx+�M������
1GN�-�X�1op(���(�\.m)��z�A��9���\�yAX����-k��z4��9�q�2�5(����9�gJ,�x�#���
�r
�*:�Y<�@�7�iOx�����a+D������u�e��fs*7�m�������� -��)C��+���3^{��s.�������Q��� ��O�z
�B�j3fz�f��T���x���-������e�;���.������)
�}7�=���F�{�n���k�"�94t��.G��W	���]%�RJY������/nt���
]>���1W[�/&�r�����w,��)`t�����R1@���:� G�������

vZ#S�|��m�p�y����S�!� �m��W�^�"L�[9���bQ�(��uv��F���Jp�4x��T/�i}�4�-M����<EsFJ���%�\^=��z�(A��xA���&YU��s�R�v`�f	�������lU��;r��CK�f�J��.X��K�`�����5�k��������L�}��K&2�����u����V���.�==�p�x`$���:dU����9�����m�������h�����
2�B����YM�F���au��~����	s]�=e��*���U
EBm�+D���r�p�����D�����+��N�\S�B������XQ����@��.�)^��F�����=�q��^i8A2"H�W7�1A������$�K��$���W4gU���0�t��CP9X_W�
`�03�v"���o�Q��-�o8�A��[�������Z~_��\Fp;	#�����hH�K�w�fWA�*�N�C�.e��dC����"�`e:X]*�����|#��)�E��k�Zh.�����qt�&���F&K�%J�,����M��p��E�1+��G�!E4}dhG%�����89��\x-������j!NN;/Xqr�y�[�����3�B��]���>�}E�)�U�~���#�:9���X�b�~=@��ye^�]~���C4o������:=m
�\B�^]�:�9it9�$H��|(���c��x�G=&	������i�$�~��9:2I�($
��}
��,�#�5�8 ���\E�maXm������!@*"��:��>��U���]�O�(����rr
��A�����W�=!�q2�ok6.cF��m1RC����"=1i��gl�{w��{m�{_��a5�������c(�^��}^�K{GJH���L�9Az"����Md!�$HO�zE5���i7� ���y�� {��Oi�k�bFF���%YlDvm����Lz�+�<�[��}���;m���~�L��\��������$��3�Mpms����6���X��T��|=����#�91H���*��O!3��N��i���"�z�!����Aq�S���|��pA�.�Mak��u��,;�iG
Rwm���4�iR/��au�1�������sK��
G�Qh�+^
�xB�����t>!Sd��x���Q<����4D�;e����l�_h��%F�uI��]�vI{l���������0z��7{�����fS��{v4d_�&��J#��s���;Oe�����;pG�B����nlL=���Rc��~��L����N����Xb����rO0.#s\D�Uk����7�*�A�U�����d���8�O�p,���j�[z��#�]�U<)b�����d���)Dm19���?�sS�H����O����w?��]�t=�B�$

�~����kX"j>�+���4�Y=���w6%U�c�N;m��������c���'du�������R��x��Z�F��!k^m !�����j8� \"`1�,����l���C��3�C>��� ?A�TdBo"h��z�i)ln^�d8�Ka6<�[�Y;��=O��?����C4���?��h���fm��J��gD)�L����k�K��=�p�O��zl�J?I��yn_��,�t��MYSl����a���
��q��v]ciEM�5��M���� ������,���r[��!O��ua���5
�2,������)U��j���J�1�~���!��#a�~��,��i��O6��F�+��������e#��HO�Z]��*��K�*��T��[��#������'R����[�v����������_e(N�}'>���xaJ��T?[���%q�D!��e[�(�@Z���i+���K^�xmK�����Ap�0��m�qyh���
o�b��t����4���@�@��/q�,n[��4�#�c�y���U�@��w�z��R���o�����V�6�	�#���J�~����+�����)!����}����B06O�3���3��<7rV��H�����$�o26�������y�������d�k��6�4vG��e_{�Z�Hsb9���.OO�����}���PT�MO^
[�G�6�
*��{u3G6�C�a��B�"�|5��x$�_F���S~a{�6���H�h�mNWE������_"r�w+��C���eOR�e�K�������'Q�����L�^v����[F��>��?�^�l�}:��%�=����z���K�
�c^��
#���l]�eu�L�jOB��nc�]RG(q�X	"�}����r�9�GnG�K�)x��2AG�
#u
O�[��l�� ���HQ�p�9�Dq�L\��D�������\����CU��!#{�|��)1p��x1z�-���^=������Pn�?�#�53Pt��6B2�\k�aR�eB,m����Js�}��vi��%���?B!�:�(���J���m/r������vG����e_��������1�x���e�K��h��L*O�)��|K��3��T�o,���&�j���!��R���TUD��u�^���u�� ��##=�uZ��fA�n����r2��zKd��Rm��{{Nw�=�T U������f�P�7A��<����eOu�������M/\	?Ghp%3�+�m]/�Xz��-crD]��T���hb�:����g�k����Z����VW���[��l.�|x@Aa/�]�t�N"[�$�S��H����@@��������^��[P�.�<����/��Cb
��m6�������
r�r|k0&�|��	G|��H�B5+�fN4�I==���2�|��J_K�3��q��Q����O�O'T��x��v��3^�Y����IAZA�N5[�]��HP.��5tEF�S��{-g}�M4����UB�!�"���n ��>����%Zl��<���
�
�����)?�L1��8�`^9fl�r�2��_L{�]�OE��
��]�#4JUE�e���T_g���<�R^��B�����{��������|�|r������������Q[���"�l��,B���z95��j
T����5��x��*�KB��(QM��-7u�XdZK��R_S�HP�X���&�a��F�L/:����R�X�>|�j�C�������g��C��.3������n)�/����lM��@B��f�R�5�;��nE�`�1���9�������F{�%0���=g����U�V������%���������W���e��"^*����k&.����R-mtO�'��8��d�d��Y�^o�-�$��6g�}��R�v6/_��lH������t���I�5(�]{�Y����%t��_��������B&C���=h���:?	��~�u���+EO��
w�����{����6���H#CJu^A����|�M)�h�����R��
���M�C�S�CB������n�fMA
G% ��F����Ct�}��� (�T��Lk����DkYF���\,�	��������D�U�^n���N��[���@���X&�W��x1���y��]&��=�m4�����\m��%p���'w�GJ��u��I�[���AA��i����	Ci�%
��7<����IY���`������5��OiQ�u�
���.�/���W���:R�v3�$�nK����Cc�I�k���1�"�)gk�������<���{~4.^*\�)e�SqU�!{�����7�^~�!2u����gs{g��^j'�{(}���yl4�8��G����
V�j�.cM���
�:����z��9���c�v�����>n��n7��HO�@N��6��-�	a�
W���x�-Z����}�K��-��y�-w)�`����;F\;��j	L0\����Z���y�o�S}	R}-�[S���r6�~�t���1zm��mo����aY���s����e���R�����8��X���x��hA���`��6�A��� �?H�?2�d����Dl�#����7"��9�T[�y�tn�k����j*������rcc�����/n{��si���h������u��<S>��=~�-1�����|Xm�U�H[�-����x.���|����������C��?���v�7l� ���idf�l}�F���>>�����y�m�6��l_����{����g<?�����X�������1���'O��)�!
�/X�7��A����D�����/��2��o��Ld|��������J����3�F6����;N�Yt������N~{��TC��>��Z8U��������K��x�`�����-�Q�m�W������������
�����/����_ c�O�Ty���g"q�X'U�R�aKc2ll����t����w�����������o�{GCJ�m���R���:������u5AK%^-��w?������D�����h��W[���ZH����O�~~��������s�������5��	�
Ge���w�����~O�"�l�h�����M�n.:��n?�|�G��Hd�2�	��E��������'(j��H���U%
�8��"�@���^�iVt^t@LB����������/��&/���r5#x�ff�yQ�����E�k�\)���z�(n�[t��di���o��
m���-�?����ws8Nd��y{����=� �����b��L��$3�
��Xh�yJ����CI$%]��=��8$����N������0���?��[:L2U�h���a��]c�[:�Z�#v�:IiAx^zO�kR��h����jJu��(�m<XM���(vB�yWo����t���kF@�����t_�O�{A�p�������+�$����K	�;�����cx����i���qj�vPRG�B���,����|�h�1�ev��3�&�^�mR%RJ
��
+���FO��G@7����!�������m��������e��P*�;*4]���$����������Y?6Q�����WN]��4��>��������d�����q�1�ym �����"�y�\+3W��Of����m��]�e����m���p����!�h�N,Ty�9��2�wJ�	����B[������~��_�������Kva�E`}����d�X��JA+�$�$���k��87Qe�!I�k�c&��}�pf�1I�k/j&>��O�|A�:0��
��v�^�8���n,��G�	A���KL��rIk	r��F3^�������D�<�}O�&��U�ob��!�*0���TY{%�i$�o��ku�jk�H��qQ��F'�u�"���R�0CC�����j��U��s(�,l&O�������<9����f�+���'4y�j�f�8���FN\T��gD��I'k3��H
�I)c�&������+Q���3\�N���{9�[]vox����.�Qxz�'J�ux(8z	�U}���jX���V��auKW~�j����Y��m��a��cX�,X���va��rms�f(����
�n�t����#�n�.3Y������%�4|;.(���{Q�����4k�s�����}���ZK��Z#������G4q/��H<&���S���4�i�/H�~��x�|�?S�5c\���O�jGtbr�;V��#�y�#��X��e7f���%�>��dI3���ho�U#��V@��p��bAkq*�	��VP���U���U6���K�������:��Y�����ir��u���������U7X�4C��e�-!	�|�V>�y����V�&�@�K8�u����'o�}
N��������o��q�^c�&xJ�y����5��������}��gTO��
��Z����q�)&�_Hj��6�}W��R(I�d�_�
W��"!�b�!�����t���Lw[(6���]������������7,p���9�+���q�4[���M|���U�N�1�6��h�B:"c�h���N�^&Bq���j�n�����kU�0���!��b�q���$���;�&J�iv�1�������8�����d�C�j}�+��?ez��=��)+
e��zUvyFvg����>�gt.\�x
j��G��'9���|��{<�4��.�����v��Z#h��p��,f�w&+>��Qf�z��R�b#�2����A�,�G����(�}��������C�<�Q���I��Yk�g(q9�� ;1?���|�Bp����������Vs���gh3����.�	Z3��!������Bd$?j��H��<X���eO���K��[�����'��!y���f���:�}^���_�~���%a��F��R�O����d�(B�������_��Y���b�b���Sf����o���w�NiQ���c`m���w����zp��}W<!T�f��B��?���m��:��������r:��v�mh�2	����2��3��?�����:�g�3�����<��Y���a�A����� ^Sb�o%X��;a���E ��n�9���~"�*)�T�J�6!��Q+�[<����/�����1�p�+~��9��6�����T����8����NY~�<K����4�~�O&����W]��.A:K��2��|H������N���U@4������L]������6�W���4���'6s��.ce�ge���_t��V,O�����2A��H�����wl��Duk����������<�,���F�jf�Bg[xHa`��^�BZ-9���'r��t���j��u���7A
'�
-��8�W���I4j�	��,��4�A!m���
Y���"*��p
a��m	c���)Jt�<��q��9>��7'!}$WV�*E�=Ve�
�
�+��W�GpF���=����79�W	���I�.��gyd]��W����J��p�>�E�N�I�@���]JT������2M@�4���L��5�;���Vc�]�ZPvyU�f�p�6�`M�����
��)Ka# d���Ob&l��.r�?���a���9�0v
��#�����4�?���8R�:� �AkP���$�Pm�B��5D�����&:iD-�!�i�������7�]�tM�N�t�$]Seuw�+��.'=d<��*���Z\��no����^'�����N���M�����B��X0�\��+dj`�Pj"���SZ_/i)�S�.�u���T�^	j���&"B&9X�9��-��%�j��b��ZPf*�����(
y��|^����nTqKG+����:�b��B&7n6���6������1��y=i����6���8�
hM��O�L��a�H�zs�6�G6�w�>�yH��}��|Z��rR������r�������*C�D!�����E������E��>��t����Y��_�����������m+1[:���dd����b3�d(�
%�A�c��#�a�]��Kg�Y�ig8	�hP�}JiN���F�tB��H�`6�v��De��@��?}����&-��^7K�Q.(��-�+���u�!�����.\��v�e���|W�C^�����*��4\�kp�!)=�
�Fx���~�����m�2�]'��#�����������^��R�������B��d���[�#�Y~�^D�����<������`%$��C-N��mpr7��y�%��5*��\L�����2�Z#�8B��|]��� ��O����t~E��9��+v_����o]�/�P=�&�h����Y��6��[�x��"���-/�;��+|@tG���_����-�k\���u���'�:=�E�G�3��i3~���"d��R�P)&s�<z���f�2��4��������x���TL�jw?�A���+ed37�I&3C`����uV��� ZM�@���Y��.
��:�#&lR;*���Q��"�%Vd&���v���
�9FK�O�����c�/>���%Q?kTa�6��
9�V\��%\�,�Z�-m�\����%X��&��Z���.i��5��9���tK�" ��M
�������P4/
�� qp�'q�=
>1r�f���t������W�� _��aE(�]���������-n�������x���,=
uh��h����T]�����#k�SL��=hpBS�|Q*
�r��|���[��� ���)m=���H��������;f�5��c������c_�����q�5Y�lx��o��vLH��:���������}gk�E���Q���n@����o����.~������t�X�X�_#p�FEj�aLo��C�G��k��Qe���|��$U��kz<A���vo�3�@E��������k`������������mN���N��\�g��)H���
�r^���&�l��������&���8vI���}�J�7(.�r����Ww��%���u����c�.PB2���y�t����T>���z��-���!J�V����&Q��K��k�S��4VJ����dm���u��}x���������T�����{W�3����
5����U�z���3c���;5]�������<�5��i����Uih}{�����w.��M��
����&=��n��������~��W�{?����������y���zh����C�|��3���{��{tJ�0AN�i�"�7�7^����I�IL��g����2�}��]��\�������R�r�R���I�x0������Qro���p��$6��#%E�+B���^��}�C(��o"��F��<>����yh,R�D	:��\��{5���l2v�f�~�7h�m�22�\�+V�RQPL��}��}�Bm�pe���h�����rT3L����Ih�����Da��L��qw��3;����q�4�����d<$R�����;�������6`s�t���oT�n�c�d�G�5�w�L�~R�g�4����F"&?�5TW�&�XXdr*��vWcaQJ��8����p�_7�����i����M/t���e������DFYdZ��:g�;Gk���>�l^3�<��4�-��[��>D�|���q+���9|�������t$1]���'��b�Z�f���Q�/�k#���i�f
�	���{�09���I0�����>e��M'PN��`�#���e|������1�9�i�"�P8VM��'����=C5�|UL�����Cg
�$
�5��S������i�D2�/:��eC-f��f��V�Q��}����bhc�`�0��A(/��z9bq�����_����r�1�����j���m,���1�l�0��a��x1��r�X
������d��H�Q�3szG�����1'W@&�}��e��Y�=}�M�(�[#��P��h2Zu����g�����l�>UQ}�Dp�3NflT��Yy���kT�z0�p����������
�.��Kz��B^;q�� :�(��,sb>@�������t�o&��`[�rH���?�.)�_������ab��D�.x"�n�^h�l�\�%�i5;��
�	���G�d�9��.?��<����?�!l��_�7�����[8Ec���z�U��j`?��Y����C�"wbT�����/Vz��������}�hA{�s_���������} ��!�>�u��e�m��j���w���|[�������t<C�T��f�=�������{d
������[F�K����+\��NP��>��R��3�s�U���e�&��T�G�����;����v-����p�>���1���$<y�h��Nx?	a-�!C<IS,�C	c�Km�
���je�������*�&��x+#�70����c��h��6������>��q��V���n�O:���1}�}AM�]���*5��6���@gBA�����6�5'1�o�Z�9sS�J��"�i�en��~b��6E��.u������Kj)m�M]�L�sS��a��THL]�����f=��Bb�b��b�Rj�rb�R5� AJ_@L]��������K
��P_-�tR�>AC�63P�Ql�P�J}�)Tg�H�F���d������R�c�cvF�.Xr=��<]�{��3������Y�v�<8
���/|���4�;�!�65d.�t^����wL�@=� �m��F��(���%aD�d�$HNTFY#�~1��{t�O�|g���`9&���;�tg�����R0���CW8M
�j ������)��(�����~�f�m��i�)����)(��EG1y���Y�G�����Ibr0a�.F���t��iL�*�B�I3u��*��������E�O��NJ
W����Gw8�y�6�f��,�G�u����"^���P��M��=�d�S���u}���.����@���L�q�p���-�I�1��l�^���oK�~c��{m�%�j>����>����1c��FK6y�5���[+�������k�����h���+�]��i�	��=���W�����g~�%Q8R����}13�S4H�{�+g]H���.��i2)=���36������b/PB�/��������_��}���61)��Rj��YJb��d��@t{�&������Y�g����In�M2������zF���u��d��[�3u�S���4^�J�,8�7�]^��i[o��q�T��������S�����r�s����v���!�{A	�e��[]k� RF��|6������Wv��Ye���,�����w|(����z��������T��g�#F����7I�u�:j�:�a�l�?HO�mz��T}����*���a��1�����Q��"0^��������5�y4��z.��)�t�(k#4�8���z9eT+� D�>���z{�8�|��d��X��;F��z��]��s��E���g(����{l���.+2`�c���<Z�P��������d��R
H�+X��3���q�\���G$xf
Hq�
�Y�q{HO{�7��Lx����/�fF��r���o�'�M������~����xl*���V^E��m�8��;���a�K���x'��5-��t{�E�DX_S����{w#^j��-(QEE�Y���v��a(��I���������+���y���t N���X���er+��rB����M�qS�At���8u(
�I@.����@G�MoO�e��G�{SN��us[6'�K�ny9��t��������W���M���&2�R~�!w��O��}�?��/y���������(-�[�#���1�6�Lr�1�^�E<sN*IJ�z���C�s��:�H�k�-{>�����c���n\���8Ik�����n�O��Ze�K�~I��"�����n���/5��1��M���frK?|J��N/�x���e�/Nk#���m��t�������L����D�C��~�O�JU��&�~���Cv���`��<�/Y�=���N� �B����W��{��-�f��������O)X�����qKh<&����]���������?��H���q�;�6�.Y�0���P��b��\���,�?+�O"�Y7���������s��	a���i��x�M�k�+ ��Y<��*�bZ��A�/����L��:=|��P����T\��
/}��N������k�k�r���x�{q���4��z���o�g}��X_^�x{��l���a���������b	p����V�dB	7�"Ry��N�z���&��������G��s�~Zg�sx
�H��������-A5>�z�.C/�[]���mr�����X�u�*�X�I�c��'��L�N��Q��7��&�&�O"|L����������h��s�w�a3!�l���������^H�0��<J�\�cZe���c/�e(�:��D��+�!��������0���A[X�E����`���
`����C�=t�<�$;��)p(��x��Y��?5�q�gk��
_�n�>�G�X��N��f6+����W]��C�����}�?���������Jl�z�N��|&��fC%vi����m��`]:i�iG�,�}`��
v��Q�����j�r��mV�S�n��z��v��:����^�5�1�������sG<9��mn�e��,
��f�����f���5��.�9����|M^6����0/������p�6��h�����'�)z8Z-��r�pU'SzN0|f���Kx���	`��(<�i��>�li��l�X>����������Mf�Q�<�Kyw"�9�Z���6���0oQ���A�8��n60��W��\�kK���_^������oV����~�>=��nn�?e����q����
tp�q;����7��F��2kg�N`��*����0���@��dv���9��z|�^$��[_\�w��$�����2;�}C���)�����:���
zl�:�6^jn$F�	�[�q��N^�������+6�l���J���p_���V2%�{li�`�0��f<�8\�Q��0�e{������
�����~5�����7xw��C�w�}L�	����
y�������oqg�����8�_Y�.I/0B��m��e~b��/=b���N�q���_�8&��F�}2�-K�vD���/������#7�4N*�
�������g
�>Q�MCo:a\|����'�E�r7�]~�[C�W(�1N'��&�"AU��3^G�L��&i^�J���e	^l/�9�)���/�1�4����1�ed��M�F
�zXNn�X�TWg8O�m�%S���Fv�"H	a�����p������D��c%a3��k\����y�D�N�G����Tn�f_���6#�c�����sO�4�;b�Qb9��M0��>G����y�R����S��l�[fP�c���1����R�uZ��l{����`���1'9���N������ia�������X�?��}��O~=�F>+�� �#�6�D���M��
�o��0T�A�]��*]E�o���w�����A{D�JA�c�S�����
n��zp���5�@�.1C�52��R��p�Y*����*
a��"����������X$����H������uz<sU��A+����vkfr6n�t�F�����N����eG55x������|h>{�'G�7f,�+�,b�4��G�,��Y�\8
G��3���%��n.3�����i���V�q�"���KU�\�lw��vN!�~_d���'�=/O��n�:Mrt~�-bb�%#T����U2Y7
���`�� �v�m*��=�Q>���r�|��R��VU�7���=���w�ln���(n�d;�k�����(/<��5'��-5�0���T��J�D
RQ��M��st=�����i^%\�V$F�F���	��
�]fB��\�W��T��p�^������Z'�U�D�N�}��	�:a��sF�Ax��N���������[��~�����%K����n�r��F1T��qz%����g����l����^=zK�2]��@Q���!P�������l��.[����6��4\�Wo�������:��Hwg����K��5��re6�
�G#�a(����Rs�#������K"��7�K/{E|I6N�IL�;xdB#��[^����+��}�R�:�g�g�g�_��Q�'&��&�=`����/��rmD�1gS���+b�A��v��u2��F����PC0)��3�������	�CP�������W���,;�!-���������!2H��HX�l�t�4@����	��������[��(���?�p�W����w��{!����u�a'6@����q?���!��`O
�r2aAy{;��8�5�F��bV�EnU��!`��g���o�}v�
Ozq#*��(C���d���Y�U�G}���6�{�bL���$��� �^��tI�s��p��o� f����k�(�����Sh���!�lN��nnTi������EM��eP��sY��[����n�{�B��
�xK�z��E�=�)?u�����%�����F�]���m [zb��f�n�qBD��j�����L	�'gf�<��.��r�Z�d�Z�=�l��l����K��.�1�v�9�w�����������
=�t��v�ol�Ox-�5�����]���oG6Kn�D���,�h�����V�L�������&�D}k��F�Id#�o�ZA'hKN�_��O�##�0m
�]�����A�b$�f��[��3[C�f��ZB�����17��R�&�A82>�0wyN�"��QgJp���������'-�����dL7�jY��n|�gJl�G=�J:e��->��5����N��h>����w���-7�S5���
�%���;�^��a��d��H��#�����f�T����[��ej�H���:����	jMN)�����[��u
9�yAU��b���tL����~�����iAU��������7�`����� �K������U�0s�*&%���Z������Qk�!��6]_Ik��+,EX����M��m%�{
����[�����^�T]d����IC��=��\���#=���.��0���	��$"^��J�����JFe�P���������-L������Y�,E��j���,����qX�8L&�����W��ae�0Y+�{���r�Q�������2<�uy�?x�R�)�#�w?��kOMAR�����r�������e�K�t������U��q���3�
��!b�S�o����#j�-g���d7���n7�&�>W���8������!C�+Dg�b��*�P;������/z���t�~�rD���e��+�#��s��W�-6�Z�i�]����l�}2�� b�O�~����������jirw���+�s��q|�U�ft��0�W�a+���g��k��#���b)G.��;���t�&7�c��
U���=�b��P�B5A��?���?A[��;���U�UV������n=�y��|�y|1���P"[
�CP���iQ��2�.�R�D8�"��sz��2#d��M�M�wS~�:\]�z�����/Z�7�o�U��$���=�%D�������

���m�f�+��p�����\��,p\f6[K@����=�iD�!�\�=�}����<�&�@��j��U���5?(�6*EA��z�fLAl��pL?�����
�eY�O��<�&^��N��E~��H+������U�Fw%��N�+�(<wTp�UC��S��������������c�n�*��T>(}��d��g�FVB?��zK��<<�_C��+Q�}+7�~������N��/�iD67��F�>�i���@���(_�$�~8e�1�><����9f�l�=�_����%�(M�s�L�����#O;)����
�����g�mY�(������m�*>��(/���j��y9�l����{��K}M�	%�����EZA������(��</G#B
@��g�l�<���9�D��r���6N/���������3�08+U+���B��!�����k�-�48d����,�j2�hK
WT�^
��a�������v��R�O�9��}y���X*�~��R(n������L����j(���c�/:O>N������>����~��|{>@:Q9�8��63g�����m�'�|y0������|�C��F����	��<@���S�|�xS3P�||���Z�9�F�����~��7�[�7��05[b��G6�@���S���Am��E�k"��^
`Nm��R�|"P���!�cc�b
�#x���n^Q�Hy����VA����h'�c����1���2z�%A��;��c�T�N��?�����T�V���?f��k�8� �Q�]��c
�(�[6=��G��l�}q��Jj5H
�����af����i�@�v����
�ZS��]���}]����V�l����f��U���Z�������A	������nT����������k�-
�� �
���b�����X�����4�v M�jF�^bg��1X�d�E3�"-�������$>1[2�Bd���q+�8}f�4�x��j�.{�)ful�2�<(����={Op!�%	p���#��,��%��Rq�>O���cw����AdJ[�(��)=���;F���q���8x�<�������|���n4����E�����B��A�\
-��Ht�L�F�pO�+�]�5$�w�/��������|��+�le+fq�|��>���e�O���(�)��f���0U����/�����-��
:<hl� g���V���"�A��|�����MZ#
��mY���D��$k?�|0���I�*�p��]��N��I��Wj�L���kZc�S,j}RUh�]���{� T��h��H���7�JM>Z~^��m�	N��y��L,;Qw�J�|H��7�;�%\]��E��;��<�c�6�c`('f�\���59D��[)~}��D����{���Y���^��
�����(r�����=�g��vG���y�(��vn}��TO���yJk���������O!����n�p����Q�~������	N�1�|��������� �OA�{C��x�FQt�+�)#P2��*�
<Q�������M��;"k
 �(fhQ���S���`OBQ�Q�����C$Nv�!
'�q����M����m��i�(�~6
��l"=1%����8��O�@���
8w�/R�Tm����a�M�I��S��:$�7���LP�.���&�] i����&���'Q/�ES,<���L�
� U�j6S!F\	JQ�}�����fS<�U4�?�LQ�r�ik�����[������rz�!�X���	J�K�f���xn H���+^X�#7RQ
Z�t�Fv���P�Rj!j�4 ��v}Yrg�g���(������
8?��V$������1����Y���c�Bn��h�^��Lw�`�)���O����"�z��Sn��I�L|�a_�oG�3Z�0�{^�L���X���3n�|=��WA��PJ��:�M��}�P�o��J��A������,0^f������$�u
�l�*�5{H�p�N���������7��������k��[P�Sg�]�=���!n|F=��o���-J(uC*
��!�����Juh2�4>����0u�4Vq�.U�
�:bV��3��[�7�V:(���U���a�X9t�D����/�����gcm4�{��D��9�Q��M��vxlF��M��,j
��s�3�N�������7�t��D��*�����9��3:~)CW?��|l_��5���1��E(��T����i!��|^7�|��s�=��#=����V�����������@|,���7�'"�kR���:/���?=�Im���&�C��3`����p���r�t*�AO��� RR^b����o��K������|fp�.Y'E�~�������~���(��)�����uz���1��mpdR��@���2���3m�����+���N�����c8:e��ZE9���N���z<�wPh7�+h��u_�b��Q��a����G�x�D��w���Y���HOE��I+�k>�@JvPOq��I�,���[�����R�O=�P��d���r�<M��<]�
\���O�+���_DW'���U�w�
V�k7���?|�I�.[��*��7���2t�T�Y(�O4����VI()}�X�����>��r����>��wZ�\��}T���T��SB����3hO�K�����S~d���q��n��^�F�x��e?�^�?
y<P����	��_���.�}��:I?tx�>�U�O��~�}���#V)�G`�nY��A�B�k[z[+�N�#{��=�����8J�.Wp��C�_����|����l���D+A�#����c����M��aY�9�������>�WcY�;�����������#���#���_���`�o��a��n�U?��G�%�����HYs���V�����~4wX����^K�\Y}���j��~�e ������b����)��4M��S���c�J%���
l~��C7�q��;��
l�#w����>t����7�cP��"�u�v�Xt�o�n����>x�2���7�������D$��
���6�(���~�6�����;�;�H2f;wXU�6�cF��
��aYu���i�1����:`;J�Xl�����
�8��7�s���o`�6�n]��m��uLs���:�������uu-�[�Q�������`���i��[W�&�������u�]�-�l[t��5Kp�<V�fC�M�����7xr����
R
���6xj~<��C��.�Z�w*k�
�q�s�}3e�xh�9�Q2�	hg��]}�����U( ���&N���/W���R�L�{����]z�1��9�HMh�(o���b����35�K�O�v��0�W��� /y����cw�B����S�/(�p��������F�����E\����fo_�%��Vl��\��s������>��u�mq	9]���C)/�^��I!!I=��m�	I4����S
cQN������K�}r���/3v��HQ�CY��-x�y*�%7�*r� _@��(����s�����h��t��A��bBY��h�����[�������4s�[}�c��
4r���?Firq���K?q��&��k�����7�i�4cv���)�4���������-M���C�_��x-�Y������s���l��j�/��\� .�,�*�m"W!����>�>Q��<�Rf_h�B�^VQ\5����z��������*U�Q{m����^{��C=f��p��yP{����g!��$AW��uv~jn��� ]dC�����f�/����Yw^]�K�Bd8��\�j���.���O����Pp�5{���w�&x�_��w��ot��O��tzJ�nJi�L���M��2�����d��B0���u[Wbh�D�nxFQ��������?52z��I��K��6����$}����D1�H� _�O��D����KS����==��<C�9������	�s����~�h��Oy@���d�#.�.���P���>l.���R��1QU���-�e�f��~w,>��Xn�����$+n[S{C���%�aV���}��B8���rC"\�����sZ��z�5i?��P��*.CU�n���Lu?���Bux�*�`��[���=��tQ�>�
����}���c�XA���z�2-6��\�X_J����hZ�m)��=�8?�Zo���J�����W6��c�J;���&��t�(C����;k��XC|'mI�'=[��������@��o��/����d���g�2~����/�o���=����_�/�S��t���N��$�� ����8�w�p5�Tt�s1���(�Y8,��E��o~��*����,�����/�2]@,�����+�u����	��>��i�A��_��+��)��l��Y�yEIHc�0U-�r�}�!4a��WK/�������
�������C���;|�����������H�PN�l�~��N����R~�0��!��&�O����������*94���q�������_�h�l����&�V|�!�.n8[��u"yM=;�[�=4�$u4��o����p)�����"���f��������9g����@�o���o�����q��e���:�[�N��-����?�ff�	����q�����hp�;�F [=���1-�TYFdSC���a�p��}�NA���KA
g3Cy8��[U_�q�?hy������P�	���Y,�j��D��������� _���lg��/c�E��K��b��|���"����IS6t_�VTY�>%�%������n:Jv��I�:�b���	����������[(Fir���21��D��D��=���� R�3vR<N��;	$r�$&�E�*��b��u�r�D�(�1���cz����=���z���Et����~;�~�	���j�PT��I�$�L��I<%��~�D�7B$�~[�i�N"�-�E���R���c�N"J�l��(���^�����0���Wp�QTA�)�/����7��U�-�L���+��I&���3��H(��u�����
��i�N"�-�EKG� �u�r�D�(�1���cz�����j{�������>�M��09�^�3	,�P�2N�[hY����;6P%S�>�Bj2M�[�XD��SH
FIBwI�8�o���C�&	%B<T��;��H}��&F
���TX����d���LwQ$m�+^�M���/��af������h]2���m�n#E3��x�gL;�6}����$�e��m�|w�0�IF��z�f�>��K�>�g�>}�T^�|/�����|fO��V��y�x��n�'�;����M�}zs`#�'��~0���de-��_m-��}�a@������Y����Mp�A@���=\������(�]������x�^7������3Vv�g���7�������{�0�e�,�&�������*�$���.�B���(��{�be�N����$d����+7y��!n����^Ea����R_��M��
��������-o��t�u��MO�:N�B���2�[Bj2�rNv	�����@��U�z	�qra�N�w��t��'�r��\&��Q�>u���:����:d���L���Wu��o�m�/��\�t�%*���U��g���|(j��5�������1�	:aS3���6���z
7�IZS'3��k���"�v<[��1��S�N����5xx�-��RgUp�~���l^���*�i-x>; ��s%j�m�c��	�����x�T��}�$T�5Q�����"����@Y^+�t�\Y<��9�
��1#F'@*�I�r&�������$��Qj�/	?\����QFg���%F��^�iz���!���R��FW���\]����i��|>t�������G��rfj"=��#<���SD������l[0���E��sz�U�����^p��
!<�]��am��R{I���P������� �q��5��d�2f)�����6�(
��
H�=��zL�B��;��G�]��=(��)�5�|X�U��_Hpr�����)7hmz���LI����ipP�0������5�d�Rz�
�_|)&%h���w�����������!�����?~�����%��Wa?�U��y��4��\�&�kdIJ �F������� LB2��ym"��m���S����9���ymTU�{=V��O<G�%]F�����=j�=��67�!�`��~h�����i��B�p:n�=(��Hw.�z��_�����N���g�Lqt����mya������V��"��D���q��;l|���2^���-�t��B�^d<rR1q�da�BNO/f�����E�<"��'�h3�%X�K`O`���R�7��p�\�;�0I�0����k$��;�Ow6Z������7v(~������|��U0}����Y�=��o�/^��}��x�����IH��hG�>���l1-<�1��w�]�i��3!�e�3{vA�^"��"���c�*�%+��ubyN�f~�����gv-�0u�HR�d�bz�m��0L�1�{��I�%1q��Q�%_��s��wP��<G���g���p:b���p"C�d�-zZ������0��c���N��j���m���.����cW���=	�`��� 0�}�){���2g�e�jl"�||��I�C��ze��"j���$���=VR5H�8�[��>�-sv��v���5�z�>����r4�*�D�����/?�����o!�@}d�sy-���� �JrK\
�vTZ��6S
���������+������(���[{{y9������������_uP�w���$e��
�R�	�0�Z��N"SU��M�	�3�R/p��K�,x��U7j�+������������M�L��
�z��DA�D��|�4��4��3�v��D�C��~�6W��Tm��OS�����Yo�g;o5����_]"��W��D��Pb.�����d|�����d|���<��}XO�gi���Y��}8����>�������{�d�*�����v6���@�����W��	�$1���M�����Q������qk��S��7tI��4P]g&�F1
�|�)�����
�	�$3#������f>S�[��&���4�]54�a��o��b�c�{z~�a�g(��-"C��nl�c`��cc������������iul���-��f��X�y_��L���"�.*S3��,3�������k�������F�6�`�%G��.�����w�qI�D��OA�p��uf$R���^�g����}�����KPK�9�&�:Um�w��|ed��d�nn�)Id�/"#_����7uv����Or(�����[8��������?Z�X��G�ni9��E�XN��H����p������tT���~v�D�@kY����7l�0c'i��+�-����v q�8!'��|`%�������n>��N��p������=_��Jbj��V��������2~c9���o���]s���]�����R�
��"k���R�
�x�?����r��(����R�����~�rpi�=���Ybj��������N}���X*��9�D��E="j4
��������`���y����f����E�@}Wphs��z���^�P������n�I���|�������\�o����������EyV�����9Z�L��\p��d
�Md���i�,\�*����,��#Y�{�H4�:]DW�n��#)���H�Md����*����_d��@�	95�E��~7���`d��w�y�Z�m������n*s�~s�MY��rG���>Ao�}������7�����b���[��'��i�1��q]��me��m�}u��m�FU��l�u�\� �}���3�2P�����G�`
r��jk���q������7&�j��������p����m�}��B������G�;����nN[�S'.NJ����,\��T$���H_S/Hl�1�#�����&
Q����ey��7���(�+��e����*8G���&^Z[�p�Ml-w�#GI��cgx���zQ�=�V��y��8�9����r�����~�m��w�a�����&[�6Zf	�3��6X���l��w~��5���������{nRPS��rU��]b;��_sN=���������������6�R��-WC��Oz9Du*'9���e�$	0%X(� �0���U�!E��I�~������]/Q�,�����d��n6�s��b���������4�����������w��]��ws����=r��������9}7����{��z3��O����y7��i���}��wx��m��p�n��>l��y���v����q9}'��;������B�����$�i98��H��-�M�����`?-����N�����+����|���NY���c�"CL�f-Io�������A[P��^us�����n���9}���%�gk	��29��Y]�[K�_��;��pn-�~}��)��;�6�c�@(c��}��Gz7��6�2������DZ��v��)�~���f��v���p{�R(��.���<�4���b���"S�HC��VC����`��G��z��6G&O�Z?�LKK^�\����sfK�!�����
A%!��oQh�K��d�<��@����^����[yKEd�����2�S���S��5r�� ���p�H�	k>Q^����D<���8Q�!wP�D|������E�x��X�:���wdo]b�������*aD4ZGIgoJ_6��n,������.��I ��9�A�	�� +O����^��k����M@�d4�Q�3{�g�e��xoQ�����	:O~�N�������
4kQ���M&@S���G�G �N�"��"��_����?Oa�^?�wi��/W���������W~�%~��8z�O�4�f����z�j^��yz��k��X������hu���������R<������cz4��M�y��T�
�2���/���a�����oA��6����f�������^~��X��u���{�X��<������m�u�<�I��8��SR=?3H��ss'���W��8�r�_��j\�c26%�Q�h�:s���?���h��N����RWe�h���L��T���P�c�����,��a������1=}a+z��akt��WXD��3;*�Yx�E#M���U���PR@;�IO1R�������J���xdY���T�\�|#���6U��#{��/�!w�C��1~%��$<
<!�t��VT�-�������us�o.Y)b�$�+t�kyY��~�Ex�u�0�Q��_�Q���n	�IS��������D'C���0v�����=T'��������#&���2��8�)��1����G�"�~Abi%�	s�~�.#����D��V����*�7�:��U:�o������ONp�!c{��r��{��;(y9�?�}x��|Z�<����l7��)�8!_�{��U=@�O{�$����jVD�Z=FQH������8�X���7����kB0���K=�����2����J�y�������=5a.� [k��{n��q��������=?������|��v�����V�H������{����:�!��su�5�9&e��Hz�;��GK,=x6������e���k�@��{{_���X������[c����,s��l�����sd��������c����YV�����A�b;�9���k��_>���
���N�V�s�;nh��G)W�*�~rF��A����Gj�������+���B�<t4��<9w��S'��6r^�>��V�iHq�T�n&�m��T �W!�+j���kA��k7R���!�r�a���')D|���`GBk�g_���QmW
*((�e*�����P0��������jWcj�vEqm���w>-p�1^�����JZW,�{P��]*kT�`���T��!Z�.�����fD�L���o�d|AM�*w��=/��1iP�
����[�����g����������#�*�	>v�,�
�������a+��]���(�%�!��7����?��l�����"�m������U��vAYf_G!Yp(��>��:G�J�V7~�Xq��Bd�o��I��f��U��[���(V���R��T�#�w��Bu.Ey������o2h~�r�s����i��
��=�dg��e�Q��*����������b����I������A��w���U�t����R���ysO�P!�Ix��3x��dCq���I�Cv��LM�r����C�}Y��/���5��H������������,7�,��JW��l$-��W�e��kc���?�+�skb*�������)6�F�>��c�%�z�Bdl��n3yF�W<����ej���M7!=mzej�h�����������%�	A��tk^~,� ��[�c���Y�\�w��c���t�P��)�#x��&��MON��~o����N��=?G��a4�Qm<Q�=;�"'P�]�q;3�����
zR�]ul����}����tD"	����
�Ez�
���e����qc�gN�}����\~��q��p,���t3����0���X�]����������$��X�e"~O�V:/���Se���>���9�>�~h1�-}��	&��(��q+��<��T<�!��W�r�g���Gf�	@��������g�Y�f�x&����h�(Z��uv+���Z������:�@do�k�������a�`�c"~$��r��p�_��C�P�����`�����@ez\S@�~��]��xc�.
�Jd�{!�1.&��n�aA�<\GQ�nW��J�KB����2i�-����#W�S��Z|4n1o�T��w�wo�[,^^�Y�M�G�G�o,�e-�-��k i9L�*MCv���Ns�z����[��}�L��)
�YG��/}�dg�����b7��N���k��t{���SO�z����}�3"��5���v�]�S'G�o<�96����"���?mgf@����3�
�E�!�7-
lcC�������������%����>�#c��:T�����
�T�#t�FkM���N�����>U�+�I���_��!����-�!���`.?��E~Ny���g��b4����$H��Z��:?N<w m�02N�o{���I�
^'�����E�����PW�SsN8h�G�~���yV6�,�����_���W��;��T<��A$��IVv��7k��0��`g���sh����+���~�mz��o$	���1cK#c����yA�%����&bP!�����0H���H�U":+�����5�S��l�+H��q�J���x*E�<q�l���;���d��!�`P�=H\�bo>�;%��Mz2����
�U��Q�<�T$���,�0��a%�]���N�������X3������V����KvM����?��lpo�A)�F�$��2�X��5H�$]����:����y��"�)���/l��rm�H)��+����$�@{�"�s�@h��#���T��o3��`+�K7�d[��~����[��V%���K��5����� ��v-b��<�S�4{i\lI�D�-'�:i�-�k�H�%�u��Xvy���F����>����>��	C�62Z�
J\�[�q��6�����H�~@����h����*�O�� �pb�WT�_s���j��*|
���?������W��`�����{R���<��Y��v�������E��7w{��v�G�`Tk�nv}�'>���V�^�$e!0v�Ph�����YHb����]���|��;.o��YQ���ge��~�&�G�1�h��@��@A����D����)��i�������wa��A�w�%%?� |��]N)[>������$���&joE��DR��������vN��,�}�U�"��M�@Z���YY�b�a+�
U�a�.�%�b�\����tY�C6N�*�IG
9��"u����kC����0����tTcm���u�J�q��.vN�=����O�C��������eH7&���`=H������F�<yy{�\��u�: ��w��#S��@�F��\�����0�����~��!��sA��(F�?�6���F��#�&���J�[w�A'��G^�;	���
��]����w���5�����zP�������'2���wf�(a� ����=�� �da���t��]B/G�i��Fm���tK��'�����F�B�m���/��Bt2K5����R.�lmO������(�$�U�������~Ua:�X��j�R����#|G��{I<b-)�U��k�:�������f�	x���Z��;u�^����YqnKr�������rK���c@�7�-���8$�//���t����J��!q�'X��Xy�4+2��]QFd�%�((���]!����tFy�����;�5bZ���JyZ�:�������~~����?z%���-�p�3%DV%���|��7��Fp��l
�w2x���u�^2��C9��~cM���8�*�t=�\S�f��R*��	��V|��������A�p����Qd�<.��gI��Of'�����8^��BC;���Q5�,��'���2�T��f��`�&��*(a^�����c�S�~vZg��>w+=��5+�V� �/K�^��i�N���4���$9�����Lpo��~�!� : ���5��M��y�,o���Nk!�9����}��R,���j�*��T��xA��j���=U�����Y���(��ak>@�74�S�A.�N]��KE�����F����
 W����L7�������T���K���/�!�	�����/�B�f�"k�������|���k���J��
h9Fr)6�m��������G�C�
��x�";���<��4���������%m^T��[{��
�Y���a[����5I�	x����,�lp@h��#�����m�X�(X��i���k�ba��@.��I��;\F�E����in(��y8�$�y��Q4�y8��kN��q�<#U�e���n��]�0�����p���-3J��aN1�mk�Z..�$�a���#��$�H&��q�|�LOg���o��7_Z�	���]Y��-�e�8�A�����O`M0��
��R!����g$����U�C-#�(T����z�Rt��L�*E���D1$0��:"0��(wH�p��v&�rU�"�����F��y�QD���-
v������Z�jk�&��;���3�?�������+����E!�}q�L\�f�|r��q���9Bg�o���7������+���n�pp*	�>x�����h�:OG:�8 3�F�|8�k�������5�J���Z���}�E�?�	gZU}�x����������b��u1�N���<A1[t�G���{$��[C��b!����5!^3Ax$�fB�JIn~Y9F6�W��L�����4�����`�6o���kv�W�f�����YvD��kg����>����'bG��w��c��igGsX�M��������Z[bc�g`h���!���pmR��r��@20��.�.aM��1o�.����k�[�Hu��0
tf��P���MTc�����D�@Su����+���N�Du��:���u-���g���B\e�{4$���(vE��]�:�- ��
lw�]Bty,�����j�G@r���*W
�c����"^&���XvoWD_���r�e���T[���dL�8��p�v���P��P���j<tr��
19���A�I�r�1Y����[���s%JZ��D���o���,��PH"
��|�-�Bb�q
��v����]���%��2�GYf�vj��iB<Q+
P?����jk�����E�,OB�O�`�<	�l������P����J�������-�r�W��e�h\XF�� �Y�8D �	I�s�l6F_T��}�j�F��}����/)���h�6��v�p��PmFi��K�
f����K���6!�Exk��H_n��n5#�~��&-�{��,�>t![*{%���,�gr�����i�-��F3��2};�����9��e����H�O���	��@[1o���"����������CMo����2�����X���&���6�P���+���87��JP=T�3+2����BlU�ES������/n���W���XUgl�5���M*}H�#���9!c�m���fX����8���?g�lNz����v��J���m�P�qN��?AG��8�/����m����.�t��n��&��z�V�|�n��%����?���A�@$)�_J;���a6��#�"K��q����������!Fx2iI�#��PV�uAN��m-�0N���n���h�.�[=Q�=D�<�z�xw(�:9��D��� ������-�y
%rV�uk�N^k��r���>M���L�����\tN'�������K�6:O�+iy#H~WO����r�K�W���u�	�b/D�W*�7�>eDT
���Z��d
e`����4[�w/�I��K	P�/�
�t�/J�t�M��\^�����|}~m�p8O�{E��@����
7��#�T-�Z��/�[B�N��g�%���Q���(t����9�������tW����|���C�����BY��9/��:��F�Z�C��L�8���xh�n����Z_���_��F'���qm->.��'!1���-��?���gI�C�E!7���"�<�p�����O�s�/�E3q�>{����/�M�{����A�{����"�W����C�����o)3�������/�GR�t��<�E���|~j$������	<�L��1�J�������d��OJ:�-������bE���U}~*����d�^��`�x����7����5��T'�J�*����(�e|%V�M���l��n��|��2�SH�����<�n��� P�r��U����O0�x��y''r��g������B��`��aQ����&�O ���Y��'H/��2������S".]����Rm�6�����C�T�0a�\�oZ�i����yJpiDJ����j05���(�9?�q���6��_o��9y��c���{%4�(�?CL����0O��IZ�*}�����[mqq$
���F��X�x�u13GI���42!�*y�./�Y����v�V7gX����XbO�_���J^�������aF�u&����^�=
6�y��s��':�h�����L��xigJ[��-!N�W��xDXN���,6�����*I?�G*r��~wB���Gi5����VdI^�:�(��|X��3l`��S97�eU�_g���Iz^��9��9onPh���"�����n����K�������u���������p��pD6��1����c�m�@���D�z!�n��e����%�p�$B�f|���OZ�(��J��SP
�����9�W!jh���C�Vo�\R��Ao�N������M��e�4�Q���};�z�c��>M�ok�2�scY�=h���~n�f�d��{���<�4�Q6�x�� ���,'d�U��.�o����n�� �S�c����n�F����M�B5��t�."d`�T�koR���V�P�kI��$�t�B��)��Z*����aa�4Mr���nBM5>3��
�zyK���Y�/"�����:��S���O��jS�{�*`t�"�x��QV�.q�	������e�0kV��@9nR�^�f�hq/���d����q� ��)x�����Ftw!��IKKH��o�	%������I_���>Z��{��l�-(Ap�vz�uV�]|��T����Q��@��I�4��D<h���hd{?�9�P�]'knV��mh��
��|��o��9OV�M�f
�D;7�9�z&Ni�9��9_�2�[jw��
�62�n���a�����-&�F��md��j�<����H�[��IK��K�R��[R9�Z�!��bK:�����%���/8��@_f��
��R���?GCuRY��r�����H-�z�VL��HY�b�/��/�]q��h�l�B~�����|�S����J��h�*�s�2�6g��C5��8���iCt-o�)�m����Q�H
|��8��k-���Z����F&��O����C���9?:�?~H5zU�O�8&���h!GT6?j*tbN�M2N%���Pn�i5��S����nco;mo�W����l��Q�,����c�r�������^�1~�:'������� �Rs���9�����Vc<D��	(Z��F�0��}]�|��<'l(�
�\�oDEj����q���?�RB�:���Z��e��#�A�����7hO���*`���6,^�G$���m�;f�&=&�GY���Y��ttw�V�6�`�+�n�
c��W���N�������A���)����A!Q
�6��~j-����"����������SZhR5t�������[D��kU�jE���$���&:�{����C�/2�!y H:�L3������L$��Y�oB
�<�5'����H��KV3��%�������`�T��&�-D���|��Nc�PU��\&5���R����R�O�
���$-�|��0y��HS�#]sHo����L��h�)j��i��-����h�����X��i����'g�m������i�����t�����>��V!dfR�r�&���n�l6`�7��(8��M����������d�Q8���*��n��0�����aA��Z��7a��3ZQ�C��kN��V8~d�����I~~#��+���/�=K
*M�j�c�����D#��C�"��}�c!�x\������S��U�%]y���
m<J����&;����������rJ��#TS��������f���,A
������)�[�R�5�f�a/%�$�B|`�����,B%F��6,1V2N�b�'�4�D�BL�����T�C��oU��s��^b�B
t���7�$N���/b���I���tJ���0�W�V�0�.��k^� ���7��U�_V�&�,�q���8��a80V.[�Y^~f��R��qBw���R�#������W��\@^�&?��_�����6��Bo�H�h'�ol�w������!r6��P���B�x���c�^V�������J"�����Qd
Ra,��1'�&��T�%)�v���fD��;�47M�g�HsK��'���9�&>~4:��w������m�N��w��d����M��,e�I���)�L���<�Ze�Z�96�(�6�b��
�r[��(��78�
[�3Si������;�7PaU�B�;(*��i^�05e�k�}�K�?������%�T��%��s}0����(�tw��9}��5�A�'����8�]!W�NUAK�Ee���������w��6�`�4�?�B;E6�[V?�v�������A�����]S�����-�����.=CF��Yw{6���e����>X�k�����)�?����Q���;�)�s�	�>yq�\�E}�M�R��G5����2[����0��0��4*.������VXr���R��+������e��k^����]<��:	�����
��4xere���K�s��s��O��NQ���sN	B���:��4�,
.�B�_q�a�yp�Z�C�mdhY=�*�3k�,�H�#fy$~����m#z�Z�`��	6�s�K%0z�	����h���UTj�0~������b��?���RWd2�=/2Z�z&��)�����G���
*�u�@�j�	��)�F#��5�����/P��%`^I���jn���Q&S�b4:e���9!�A#�sU�W������a5���U��)�`-��r�Xlc.z�8��@�RF����]�w�[�~�����8#
�"�����F9�I��l��X���	�����h��//y�69_D"Zn����$-����5EI�f�[^��QG�K�l���fI��t���f���Y�'j��%�H�,i_8��d���po�
$��H��<�ha`$wx���ZY�\�&�@�J��`�������6����o��g(y��$�3��Z��7J^��G��f�6�^�	��w	d����4��#�
��"�=C�r���}����?1J�mV��z
��]��D\��#��"G��� �o ������.��`�� ���@!'�t��x{0P�{'���!�79�'�i
����z���,�!A<=�9=9�4������f�*��}��S�3U��q����i���@����(S�P[W^���nV[������5-�v|�����>�N��}���Px����R<�x9�kV�]��%xM�F�$��65F\����\4�E�f,'�m�v��b`I�.��$����f��$5F��,2����+U�D�n*������o�d>q
%���7���t��P��U������&�c�>���[a���4��dnv)���W��<HP7����<n��|D(�]g��1T�g�sf����
�'����D�
�T51�-Q��F����B���W6���
NiY��	��U�U������{�����83|R�
����pb'8�x�O��li8�pA:�Y�c����>.�����??guV�DJ���h9�J�P����M("�PTM��$� �=����n�����O����~�
�
��
7 �`/�hV1\p�I�9����W6.����x�
)�(Z��':�1�	J5���?�"�aL��������@�
�J.���O����XJ�
�>�cE��E�:�
�q�%��@W����=��qGuK?Un���<�c��Wja��{��?]�G�t��m �+y�����}��z\��m���L0���~
�"���@*%��f</���i���B�!�_-�F���x�+W~�������������i��=����<����$T�J����PX�<kF�����,���Uyy:��DXm���
�@ ����aHb5�`z�S^>5���Q�6 �*�a�?���z��#����LsOV��
4Zcd��d�������r����5����p�cJ�{�=E)@qY�
���W�`c��_HwZ���!���Y���~�pY�i�l�|Tjn�����H��mVky����?�]��E��#=�:c���nU^��A�"����FTl����]1@�%�TU�qV�
W�xm�1����%��er�{@=���9���g�����
�R�gd�����2V�\Js�,a����,e����7vmo�V���mN��E���eL�>�{Z���#�;��*�����@#���m�1�����f��
��}�BK�h������f�=��=I[a-b�����l�>��'g_�K���j���c���c�-�$o��!���}U�i�g���TKZ>g_����o��6���������#7�E��x�W�����Pc���x#��OF�'�y���|=X����p\��rDa��\L���]M��S~�f��.�������{ve����O�sES��=
�9��
�Q,*���2��5U�5��x@ X�G��4x�����j���0<(o��5B����4^��H���!��
FOa�A��m@JaL1���x\��_��szg��\fF"���b�'�J�I#���S�=A�NZ�[I:�lP3+K��G���,I*@��%F�����O�us��
t��u��}:�<E��u/<�I$�����g��w����(���H��~E$"��&��B�ShHZ�v`��T�!�'���{u����^qS���f���~-��������l�Hi�c�g�� �����������-���h�[	(��i�_@G���3�3�f��{�������B�D��k��<�t�M���T��@�^��V�P�z�?����n������(TE`�)���}�<��R����K�*R���K�O����7O���
`�}I���O���y�p�%�z��-��}7�k-����\��o����~
���=C���\kz?VdF�k��y�_L!P���M���P*�[�]�zX3"s��f�/�����w�^z>C\�s3|�B�j���vfj~�e����]�i������zd_k�V�[�������q�4������ �����)Y�:�}���q���G! �X�������aq�]�����]�\$��??����MKn]��������8���S�j "�]OE
$�d%�f�I�y�.�p���Y��?���R�h�=hK�d��m�C��dxV����t!jO]�@^���������H_�������O�Z��X��Ys�^�d�B���C������3z���zpBv��=��v��_$���x�45W�2��:m0�}�sU�h��!B��>�0���J��8������a����O�����a���#6p?�G#7�]���d-K����Y��Y:������j�z|C�S�1%��a���g5�����\�S4�i3hZ���y+���������(�z���a�������6�����*Jt��+zd���g�"l�j�a#�M�������{�S8��_�"�X���G<o��)��$0�[�����E+�'WR���g����8O������hD�����[�qwp����
�9�|�l=&y�5�/�������Ka�*��/>�8aN���8}��R�v����z�b�,!=����Q�Z_MH�����G���I?Y��l���ZU*5z�?�ny�l������q&�Sz���X�L(B^������F'����� ����C�<Zt�.��v��s�-,�Z4���dmi��UIA��d�w��<*�����~(�&�l�@<��EK���xM�e�m�v� ����vA{�� �.�e�������mal��-� ��r�3+�E@�U�,P�������������I����@�u�O����*�EMb���������\�3��k��V.�<�W��8I����x�Bur���q��x�c�m|��P�nM��2�!�<�W�����\f��&(��#A@�$0��4y���R?��<�
FH

� ���V}���(P��?��G��
Y��18�4�Y�%���.��~��b~�
5q��3d�v����c��Q��,���W8{oE:��{���s�p
�R���3c��*��=<P�
�Oe �A��3��b��5�u�e��w�(���$+�w��a&u_|�Y���)�-h:����Qq��l<tn��L-O_��>�j��Vy���_SH�66�~��a��
|��)�u�����2
��D
���SJ�����@����K�`w��+
�F��w*U�����`k^������d��Wp��@����2���H ��gu�~��k�(��)���#�m���)C�����������Vbo����c
�����"L�P��Oy�������|�ZdXyR�T�n��B����K�����T�0��N��W������yE�U ��[I�=�E6�yVW��i���;D��c��@PY��A���B�.(��QJ�[���Jx8,UY���:������k��$�(��0���?�E+��������M�Q���i��3q2�r6����Q5p��B�E�`�5M��
������}lZ��:�[����yo��l	�}/�A�$�o�k�Qz���y���k?'e�$�&�:�i�������
%�Cz<�d�/<��TUPg?������w#��H�o���)��t�j/�+����������'�*�2���Vg�����GQ$7���A��w����G���#�zS���������Z�{����8|n�������%?����i}U���"m+2��W��O��������`_kM��,�y��J���mB�����#�&?n�pW���{��zN�o[wT[��������5U���r�!�_w�y��k��%�$-�K	���c�d��-j�$M�S>����0��/�1���'�Y����C@~j�"+/�����SU<�e��~����lI�:��2��{��I����x��S�%�%������M�d�P��kZ���~*E�R�<l�'���e�-���������3�m4�kg����6�����A��n�������%��'���� ���	����^��X�5�o��VlK�/��;���/��$�wV���3 7��rW��Kf�gE�84m�f���}
dX-Bk�!"��U7��e�����X?�w�#1eb���`o"�'��{�C�[P�5�D����w��GT��-A���&�eh��>����]��!��
;R������?��i��l��g��?���?��sp8��H���q��cU9Y�	~��@�R�5�DV�������3�,	������F~�*��F2p�at�U�\����l��~q��
@�U�P��������O�
�� �
����6�g�?���/�V���9C�8�J���	z!��vQ6��0���e��2�MP�D+��As�"B�5�q��.0�
���9�c)k.�X��+�u�.�+����S���E�2�N�:���fZ��Qg(�ox�'M�P���m�"5����5����������=?k���x�X�h8cg���|F�o:�o.��������<��t�ON�-��;��<���L�O����1���*��Z��S���Hm!����%1|
�%+*T�\����~�3�P�"������6��HT��nO�|�'Ww��7�8<i�+��BU��O;1��*���\������?n��2y��������l����4{#���(Z)���h���'o����x�+�GB5�Ez$�����6���jvs�K!G������@{��^�R���d�wQ�U��?�����p�r���k�o���~-'�'�X��"�����-�?(�?[ogo�����`�������d�l�e�s����M����lZ�PGaUd�i�X!wJ�� or0j�l�QV3���~5�.L�}��/u��?��?c�V�#���a�(�iH���8��P�����XzH����i�!��:6�%O�u5B�05o0�:;��:QyN�����9Dl��$+�#�1)����Z��5�z_)Q�d���9��<|�;@���g?ZK���VUOR��\��W�+���;�-?n��F�s�)-����K>�?��c�*�F��b\>Xy���*�h���rH�@;R��
���C�{;����
�����5�m/qbS�������}dg�"��T?&�����r�=|nC|��z������e�2<�/e����������zm^��\W�_���8-W���<�'�n�����T�z��GoIz�^��e�����T��������:�*"l�k�P[������6�eg�Y8�b8S���4�&�h�����V����Y��'Y����k��v��Y��s3K��-��M#����d%��Dt�P��@]�dt���=���8���U����EG/V�����B���/��g���Ekb��#��������� \d����F�:���&�!�Ye.�-A����T������$iK�+���
&9Fjw�Dp��G3(��4������:K?���-�s(W@o��u-��7e�����n7���]�Nv��]��p��Wn"�E���5����rz���������%V�{�b�����u��+U-�W�;�'�S:����]'t#���s�������$�:�V����<�pG�F��I:�T�?<G
�9�V�oBbBt��M�ht�Sz\8!�F�}�N(����>7a�bW��f����FhM�����	3��:3N�����q����N��������'0������3�=�C��|N�_�N3Z�Do���(����M�{�v��&�=a��$��$��%!w�Z�5�������(�i2&����N�1a�>()��y���J�����������:�q�n��*V]|�Awa�����psN�)��>�.�G��������KOv���M2�5SF)9��td��#��
7_��]�����,����\�>��5~n`��6@P9Z���m���D��k�Hk����f3pW����CT[���B5�-\���D���o�vW��+A���[�*�� �Y�a��s�%�5K,_��4�������AN���w����2ArO�L�z�M����ms���-T�=��z��nz�Q�,�_+���}��Byg�kZ&��S9#���Rc#���Du�i��U4
�|Z,��0��_;�������5���/��Q/�4-i�O��Q��tL�6�z��>���;�pEP6�z
e��� i�\h���~�^<u�#�����Su=�u�F���D�9��2������d�Q�6������1����|�LF!�(\�9�$��C�r��w���}5'D��������R8&�G���G����Y�O���53q��*�!`��r�xD�V�<e��X���u���P��31�-�-�0��D�`�+��6`/� py���3�����)��{���Y5?���������|:��'��7:��sxE9���������*!&������}/�f?�eC2-�KZ��9���}���M^C�n��0�td����g�Tn����J�_�������l!����ukbTU�����V�*W=�!�2&q���>��~�p���<M3��l+gX�^�r~�� c�P�
lKv�>����!k	�g�����uV��>�"`��oJ:�B# �����PJ#�_z�[�4���@��j+o�����i,��:R��3�P�*��#�?}�Ey������Z����3�b��(iWW����������Z!�WL������B@XS����`�f��B���<�\"��g0�������c��%eYZc;R�����������"
�k���1;������\P�\�������IY�
��dY�KD��nQ�Q_?Z��:�}���������tOa���o�����E�Zf�q��b-3������e��E���<I����B�$��gj�,TMqZ�L}/�"2�����a�H1����b+{5��g��T�BMp~�*�
���������J��C5���K?e����n���3��n�~N������eZ���I���4��oq���w��K���8�x	n�7����94�&�6>���Th�����4�N4�M��<��'��R�����x�A�:�6E�XH#�T���*�6U�6T'���-,T_��zm,�.����������n�U9P�x�Q�+Tg�bTT��bTT��bTT���2���L����@N�3���6�3�a������z� ��1Z�3��Q��AN�3�1��9��<�S�I6g�A��3�1"�O�
<�`��h�A
��G*m��������&M�z(���8}��A��E0��PB.� ��������K��7��R���8�-4(dr4�4�v����T���`HQ���z�;�,]=�%��C=�x�q�z����G��������2�+'�D���������%[����Iz��F1�oy��QS�ND1P�7g��et���������7Gz9�b3^!������5Mp��/�9xa�T����)��
M��_��`��oM�.Q�7�&����B�c�^����?�<�]rh��8`Vz�*?
�yi�=�q�d�����<�a���0�+(^���*3H�Ze�5���"�u��K������OY���� Sg�S�6
�pX [C]�)�`U���q@����!-[�k����j\��B��N�� ��=l��}B��A��{��F��Ma����;��j`/��dW���/��:��&���d�����+'��G->�d<}�i@��Je�il����FS�$B��n���z{� �/�HoV*i�k�v�8
%���,�F'�d��/���G4y���6���b�qf��M]�����4�wI!k�n�����R5��8��RgTH���Y{w'B��|?��������-��Jj�NXB�����b���V����~��M��U�P�"��URM��h��;fI7�H�plIcWIcz���,i�T�n�$�X'Y��e����
KI�� �[��Or�5���$^��w~���U�r���zA�;�H�YyZr�U�u�U<T����R��
�q`���s(���Y_R2��xB�C'��r��y��C;�Y�W(t�T��4
�����$�{�)m^'A�U���_�i���6����-�9�=�5CP�S;
G���#����m�(���A���EQ������=8H���Phz[���D�#�����7����
9F+��k�n�d�#M�����sN�q"���i���E�d��L��U*I��Di����i���y���1����y��>/��"�-�JW���+
�k�V+�KjUM�
���$���
����Q?�}�
+������M�[���E�%0�x��R�l3]F��Uf���LG���!!'���>f��J�}��K�/��>��4���\DmV�1k'{���s�U�����}B�A���L`��	��c]�8��T8�T�'
G�8�@�s�����Y�e��v�q���"�R�CJ��-TB��o��}/a6�0��!�T��2�}/a4.������d@�*P���]�����A��2FDj���S(mK9hQ���~B��v�(kq��n\W��(;7���pw�F�����@�w��.�P5'���n���ab7�������e�������HM�&�{���e�5`�U�(��b�	�;	�����58��K��!t�b��T���!%j��*��;6��t���]�Sz>;4]��*�CWk_v�}Ac�����%j�?������<FxZ#L� L2.������L���������
]�r�
�R��*����{��cml�FI;�(��%�������� �/~[��=�L�E�]7u���<=3]�o�H����Q*���0����������8��_�/i�/���}�
���!5}�J�UWVq���l�*�Rw����'L������OL+;L� t�dHI�92��Y�\�Q��@���u�&0e�3'�*�q)�p��S��~V7�1�#�����VK�in��ST���R��TjJ�2��T�2���4W�3���4W*M�^�4W����f4W�O�^�4W���8���W;��z�1Y����fB�B-u��L�G���v�	#����4�.�����&T.���b�D��P����s�Z-�Ot�����Y�!u3��!�":?�2��47�<�.�m���/]��";qiN�X��Gl�����v����o������X��bC���������h����:X����%�w[�%���BR{���99�����r��Z�����9��v��3p�z�7���J����
�&�{���\f"���C~P�{� 0q���:������">���v�O	(.�������86���Bu�x����i����u!8UY}�Eb�g��=�������(��ll�i����(�@��S�E�2f��~1&�&�e���2TO�w|��y��m��Zw�O��� �0XL����b	(�^��e)	P�����6�M{�n��u�xZ�W���VgP-��<�,h�P&�o�
�=K�����~�����������}c���j���=��J��_+F�9���e�(]Ku�gwj��?$��UiWm�>q�}U�P����
�
�z���������w������It�Nr�}c`�*��	?hAD�������@����8j���������d�<`��?�Y��P��z:���(��Hr�D�2�������[�#�%e��5!�����
��R��Q7N��8�DM�9g�4�*M:3.�N�U�'�3�B���'����+����^a������j=W�mt��8��)�����Z
���� ���v��Kr��j>�k����yq��0�������� ��<�@2TI�,�L$#����*�����K&%�WZ��,�TadwW�5
�4����lg���:�V��K;���A�e��B{M�v1|�!A��\]hG��t��p/B{����g(��(��c�#i��9��#*��/8�.u�]=�[���b-������y����O��	U�t�����h���������Yx�]����{Hp�n����������]��u��mkg��Q��x�����L�R��'�����Wb���4��T���4[����u)���WA[5�%��E���1"H�����K���v�3�s]��z��[��v��pL�������t�?���Xk��E~������(.����W|�H��p���3��,I��z�*d�+x�J���K������8�� 
�j���L��H��'H_G��M�O����@��^�m�C	�UN�\�����@�����r���5����l�m����EYt
����!vp���p�:�?���)�����U��L��!�j�;��'����MQ@EG����~�\vL�LQ������M��|�\�����k��&����*�5�p����o�%+E�I����f���@YW_���+~��bRgm��\v��4������m�����9WU�D!�Y�?�9�
�fSy��b��PB.v��z�/^�=X$Bli�c�(�jX}��Ggo7�����
�q,B�Q�YsW���ZF=���o������+d�e��I��NY��������~"F��5�z��[��l�a`4�4En"�9�����.���A|����Nou��m���L����eUj|8�����6��!w��j]Q�
=���=������\���
'�F�������^Uq6+���b�bwI+�����sL�r4-P%���c%~&�����b�%���Y���
�}Ax��	n,�_�	B����G���������x��Z�t�k��Oc��(��Z��c������-P8��m�b�lj3��gx�0�$���9�~���7�=��-����T��H����r{��^j�k������-�����/��VY��k�pef{��'�#6x.�p�����an���2����:���]�_�t�E�t���
�|�q�G�is���MU��b�7*�7 ��v�������[�<�B3��d�cj_YZ�G�~����Z���e���[�����(b���7���9�W��F	��	�,����C��,��#��"��u��.��d
�������A�n�v4/�(S7^{����7^�F����A#�R��(��G1����Uv�	|��"y.�KP"co�\���d�7{��9]�8��w�p�'~��J���5�@���S����]�t��)����Q�>2b��Rn���"�2+D,��Qg�4���r���fp7_��:�m�R���������p�]K]�]�]��D]�]�]f�D]�]�]�SG�Kin�(���&N�E�FT���oS�+O�3�JIJ��+)S*B"/g8lX����O�szO�iCGR?����{{�)0BP���yvz����GV��P�_��C��z�&�OSJ�"T�l�g���5I�c5���������2����C]j}\����s��[rN&G������������R����;=���5��\s�ZGZ���85��$�2ut���9���q�8�<Gql.��y���4]-�9q�5��tE�����*�Hzs���3�5AI��J�s%d����O�C��&����C����~o�>k�0���n���/`��
y)��<
�!�tEt����-P���
�p'��W��0m��U�N�xS�_��u|B���u�����@�~j�
/A��.9�x�'5-w��RY��h4�$e���']FP�%7��1p�G����P-q�e���")����uX��x�"g�cb�;��J�y����� T��D�_x���J��:�z~,Ig��1��+�&Q��)���\��d1nI� t��j��]�x0�l�����M��?l��1�G`b���sI�b���Xu�����J�w.�b�)�S1����!A���0��K�xSE`83�q���_���Mx�Cq�m����k�����\t�B�����Q4Y��D!�tB�QGK��|E������6���{?�`Q�b��v����sJ���)�
�Rp*TEQ1W��r�C��p@@��A=Yo_T�@,�;�I������ �E�@�vZ#��6B�!c�BUc���G�cd
��!�N��t
�v@z
�Ok�D`�5�zu�q=amA�}�!��s21P8X�1�(����FN��c�&q�r�#���{��~�&
��]�2
Na�AHz����M�.#.����������N/t08Nz��~��<��� 1�*-�!Q���Z��t����-��
S���E
5��L��$i��7i�!A�FJ�I��FQ:�&*��Ad
�G�^e��9+�{�S�g�%)���M
*]��w����V�<��y�)#Hk0d)�3#�ah��zK�{*�������1�Sx�U�{��K�_^�N�}���}S�+;��Q��F��J�tP�d)��"6'g��S��-��6F�"J��qcl��C��]��j���Q�����K�3ks�T"8�15]�$����k�n�yz������K������M�w�v��)M�����(R:��1�PD]��MD���&�;R��D�*Q}����4���O\N���|e9�:��<A�;3��3<A������^�������������@v��emN6y���r�S�]�P�����n|��%*�],��W��/��6
#��..�J�t8�)����W�4�A8��\|�D�*Qh��D��*a�f����n�L�zP�z�`=pI=���#��p�n�!�8�j�����[�`x�u��-������W�D�H�������G��_���� �#�"�����S�/G�	��v`��,��D�Hk�����%��1]NH/����8nQ�������7��@�F�F3�%���7��l@��w��Z�2��#J\�k0��{[�v��6���N)��~jW��G�]��@]�/��/���z�E�^���=8�J�����*}�����V�����������v��0��;
�!���������!�
��T�9=�d�c��nEun��Q���9u���������	:J-���'&&�h�'h�Dc�T��~������x����^�����V��y�]2���=�M�
���ht��G-�L�;T��m	��7���R���%<�#��-�A0?h:��Q�n�g%�zTx$�h��lkr�R)<\�����t�C@(R�J����4��I+��mV��m��hz�q x��Fl���������JxMv��X	��%Ga��_t])(��i��9�C�!:�em����R�Y�|�~|���?m�	��+����3���LA��)��;������@�ct�0����KE���G��_;9W�jg��aL*y&�c��e����u���� p+-�����9N���W4�L��X
�\l^���z�,����������g*��1���=g�������=�(��y�q�H������`"�kTp���G`N�s2�G�����sw��<�5�*hGa�m�<r����n�:��O��F~�6o�B����Gy�����w"y����m�F�8��������>���;���g�z�Et��<�:�:r��"��~%��sC{�'����$��[A%������i��%�x TC��$��xl��Wg��w%m7<���[�����+��������b,���#w|�]�����|Nn4r���
��U�=E�y"S����2�y�D6�<�`�<#�,9���d���Zj��!�/������8�t����H^������[u���uB�n_5G�G8������LX��!�@u����uRP�|���=���HAjD][v@&�`��\H 8���G5��l��vn������ �U�~�6�;�]%��|���jF�8Pi�����R�Q��G�RL
��"-a�(��%�l�a�.���JK�����\Ag�c����aG`�����Pf9sVT3	��l�9Z�2V��?�����f�����J�B�����o��&6;+%�[������U�5���_�4}+GO���yh=Sx�R(l���byV��u�aV����9ExG�������N���*���w	��F4H������� ���S(���M��^�V8-�j����a�7$`�s���w/�:�������=J;��1����$�7^E&�/��n�|-���_�����oD+�����*�/r������dd>c�bE
=�����%����.�)���
����<����U�	7x_������HKQud���K��r�)m��}��u��_��C�%��)���V.r����H�g�-�y��h��Q'=�����y�3t�d�9,�����!62���A��dM��9�cW{�j�o�������pR&.P��g*�����P�t�U3�92��~���P��?i�Qo��a�w�~�����z��3��r����v�a��}�(�V[�D?4�������(m����V|�xr�%���
��5�-�����6J�c��0�����!��`�(K��
��c�Nq�:2�NG�@J�"���p���&`�]����:��]�s����`��2�<Z�����9����(k�����?��z�R\�����18��t�#��P����;T�k�.��+.�*�Ox(����K8\��}���0��F���
�����!/�`������!���l��S~����%�9O�=-�K ����b�%�W��7��T5������f��V�Xp@�.I������__���4\�����<E�4���Z������l������gdBN����A��������������6�#g�"l]O��_�aF]<��)��>X��=}�����?"�_��_�~���P?����4�k|��n�
EL�y�Ew�����fD���>��i���H���6x�9�9 <S@e�����)�]O9�$���3r�������H��^[�.���C�Z���]I;g:&���L���������d��&h2�l�����N�$-��@	VJ�=-�;
��L�0R�"b���R-���|���S�`��g!�����+�h�~���do.��e�����KjeN��f}�$Fy�����X<i�[}�^��(JNI`U+��zr(57
�u�iTl�_��������}�!8���������C�~��`��+s�#}�ID��.����4�W^6i�%]O$��!���=}�J@�����ep{5e�F��s���3���@�#�xs�_gU�7��F5��M��~;jTK3VfBF�Q�z����j�P�.R*��R�0T�4S�)ER��z�(As��WB/�h*��Zh�+i��H���%�N[�����4z�l��aq�'�y[��_���9yO���u��UE��f���Ex@�w�fn�����U��� /��~��/��7��6����7�%��������	���$����M���(�iyOZ*I���Z�p<}���h��h��w�;�S���%`����>n�Zn�����83�}�:�{����
�B���3��
�]mh�p��
g��������$�O�����Z�kL�;�_KZ1C�8z-i|���}W@KY�%���Qq���H����M�cg'f�6����l<4����T�W�^��D9FUFj;�'����Y���B�Y14�A�J�m �[%2�g�
Q2��(��xg�*�(�8z�����r�]V_?�4H���������G�b����WHC@�Ih���;�T`�OFXS�D7���N_T�k��0@�F��5"� D�8�-k���g�������w~~��r�|��l��7�������B����Mf���������?">��h%/��\�K`2���O�����|��t��������zo��y,>t�`!$����7�����v� �i�O&���a��Lo�����������"�!�6��_����D��m�b�}�����&[�2i�Fgrk:m�m;m �CwL������-�\j���{(��� �����k=���#����0������,�i2�������W�~F��F�S��a�Z��S�Y�s�5�h�����8'�r��=��\+���n���������5R�������M�R�����AM�kDu_���_R8�������������#�������s����ENF
������\�]��C�����3]Po��!��1�����*(��c�_�"g���������r��R7�c�z0��o%�[������!���M��.�)�hw��D��v�|���a�?4�x�!��C`eE����k�!#�}�a6��V������������\qz	���4��=��<?do������r?�����|��F�+��.��N��g�G����
8�������E?��S^�(��%o~�zP�u�~*����`�fTr���C1����i�������@!O�
T+�|dAz���	��j���������� v����S�y�J������f�����V���P����)���#��;X1�<tc���H.��@{��W���EH�2��B*���7i\	s������65d����F�@s�l����p�^�H�7-���I0�������}F&j��i���L��{�������r���I����32��D�bp�$9�����U�5��il������[�2��[j�f��a�����N����Qn�}4��*�l�3�?��z��% ��b�  {}����H���
^������h���b�����&��kl?��A>-c�K��"4y�#����F��?����CJk."
H;�d3i��"l�1���6��'�f����H�T<f���fM(=;~P#&���-�:��#��T��EE���<D=�������dF'��n�Qqv�
(�*H��6��
�$�:c������E�A������	��3z���	���q��6�.�fC�z�LbE�g<#����k_�j��|R�����n,F7���2ok��'�y#~�o�������!(�=�����Z4���3��`����4G��E�b�)��r� }��(���O��{���0�&����TU�`�`�J�9��2�����L���/�{�o��X|�������M7���~>W|=z�U��x>W|�z�5��B�7"�xC�oV��������pr�6��j��x
>�4�	}mg���;�&{��F �
�����>$�����������.���+hn�@d�Pj�L���
��� X\��bTgcAg�X7��T��<�}K�Vb��4�1@�Z!�n�n$[�j�~Sh����.g�������j��E~)3TM����j��R[M�C�?%@�R�<���y�'������S����[��9���k���.����IO�@����������(��`���C��U�(�rh���2��%��5�0�T��	����>�3``L�0
�l6����`
��H���l�FabHQXw?t��]��f�14��yM��Q����;m�&��=\J���X��W]�3�"o�r��sj��!���|�]��M)$�4=��F!�I��Nr���������Yo��%i�R�%�./4�2
�1U�J������*|���n����������-�������{G=;'���j����K$��\7��j�3��o��;�h��]U�h��������w�X�7	��jU���yg�����7.�����k~y���#�Q�����)x�)8�����<�i��5�Q��_s���O�|��oV���+,��p�Bc�����/t���x�P:�qU����q���UL3��L�Q�ID��E_������('��P�C8V	�k��>���Ui-��
�y{
�aJn��	�:���g{������E��KgM2��Z� �5���� ����o��9�J���3�� +M[Y��J7��E��m@��`�jO0Vz6���T$������GQ4������5�\-%��:���O�X5M��Xy �]@��#�%�����!�J�mM(�b�mm���}�|	6!E������P[*\O;�h����o(�E���6�����W�2���@�����"�K'K�����E��k����V�cV�7M<��)����_�8�]=��L�~��meB�^��c+�{�7[��}�3��������V&����R8��&��Q'������iw�`�j��l�F
B��t=

���s�h4@���a�� ����7��<��	�P��{r8i����\�.r������P([�
��d]>	�x{V'z`t�hA=������`���-8�=�PV��,s��-m��u7��
���������Oh>��V-��'��-�7�-J9852lV�a4W�&��|�Oh�-��Bg�;�e�xk�mKMM��n���6SZ	8P��/��!����[��H	��.��P����ar��,?m�\H
�����J�s	e$�!�/�~���\������S������QG���I������L[C�@R����.R"}0;C��2��oO�������9��A8O�E��t�3�4�%����������+�:/��G�i*������_'<eai��Mvr�g&�;���h�����@BP�U���!��J�;�C�2��(�-e�E����fYd���_�P�Bj�U���C���SWp�/{�@L��}%
4���/�H|��'�Z���*�IW|�7OZrC�e�F6��w!���2�����^#pG���bX��rwM����3��%1�w���a~nw��]�5<G�#�jtN��wk]p��L*���T��_���7�WU��G�����@	�����5�?�����t�%���VRa��
��Ax@q���+��ER������mB~�?Y<^e'k�?�����NA}�����x\�.��j+"�����=��1�aO��S��?H-CM��5����B���/��?��������%O��`���I���_f-A���(�Z�R��A�����O��TT�-���0�8*�e��MT&�=��D ��o�@�;��;�����wa��6�E�
#���Y�H]�*�s�����X��Zr�u\�e�������������H�/$/��3�{�� ���H��2��-��'�����uG�C\��8|D�t�,���� �����E"EC}_�o��������:�H3�����kE��G�?�/�����]����G�rqdZ�y3����ueD�6^�dXSU����d��rj�E��o]���?��n��MX&����`B`��~5Z���gMI���x�HXq@�D�Q�Y|KPo4��^v���AU�s�_k�|�.!j�s��4�SP�>��6���j��<`o��X�s\��6����R��.����R������%��s��P�J�z2�(��%
\R9�y��a���R�I.?�L<x�&x�����C��v��&8����5�2FW5�3��	�c�O��R7;wk�s�&v���~xT����JZ��B�����epFq��4�o�h�{�9�YE�1F��l6�(�G]h��@@��	K[*�� ���}�����������Bn`�jZW�#T�lYM�bGk��>w��rHj��f�*���e\*#vP�s��b?l��m�!�#�_$��GI�=F��H�_j�K#Yg����$.������������������	��3v���@�	��#q�x ���u�b+�S\�q�8�~��3B�!KQ%P��+����Q��?���dNx����������En}���@�s���>)���	�#LWIu���D����Os��{��������OJ�R���z�d��������"�,�#���v�]pZ����O���n�1~>��/d�����O���zI��sJ��YE���gO
��%�A*�.\�<����L�l��`t[/�b[D�u��e]7�����x;G
m,K��E3�N��{�K�ZG.����e��s�������j�����3������c�F�C �vE�����1��;�N����vq�����
U��D�v���I�����(Q�h.
<�t��p��]�jd:NU���(
�<H���C���~Y���.I!��_��������y	�?� 1�����������u=]�����X��5M�k�b�)��Ogz�*kgb-�EG�)�3�G�<o��,G�0'(�&��|&(�_S@2�9��4�q�����d�%���)�DN6F����sth� �>�~��\h� Zo��*��i�]LC[^{2��:�8i����y�N���})��?o���=�p9�����jY��Pr��Q��u* Y���s'+~K�O��]����W!26�2���� ��F��n9��������7�/o~y����\[tF�9����pF>#�9�����-GM��E�(�K���x��J�S9�h���N�������@����������Z1��[K��[�l��
&���W���p������o�2,��a�Di�{�������i�C]����O
�h/���	��(��.7��!� ��\J�*6z&�)�]�4�<?� W���T�������T�&�p*=J^����G��]�A�����88P����*n�Y/T���q����l/�"���� �1Z�q�%�a99����H���(�l������%,����W�"��.rZi��6%��lR�*t�beDZ��Q����*�KcE����u�25c/Y�iG�f4��(�����O��(]s��
Z�(�FC^��Zy�������\����K��d~����7�$(���wl����dh�1�����|��ZS��3p�~�qW�������,Z�(_T���Meo��j~o^|��Z��y�&@M��|����G�e�\���5(�����������tg>sK��6��,u������1�R�M��f��+	��c��K_L��r���[��b��r�����23 ��h�~m4z���F��UI&���,T���2�.
��3|	2���/z�D��Mb�k�����4?$e�A�F������%���Z�5K��F	��)��!���8k
i�a���(����a�w#�~�U�+Qor`���<��X�\����gJ��J��W���|H�x:�CU��5
�U�9��U�������O�����]�����[kG�	x��T�Fl���C|�� i�����*�t��f
`�B��(

�����d�Z�K�W��r��S�������w�[�k��4/�w�Kw/���j������
[����{�/8Q�y�	���Xao��nq?.a�����C#Y u/��S@[���;�8@����@aVl�I�j"�L�h��w���I��Z9w8Bzh���[e.u������D=����'��XL�%�<�A�^�X�L�q����VK�io�JN-!9'�L��D�,^�������FW�X#��@������y6A��gk��/��y�@w(a���HDst; 9�j�)f(���	1��x����\��=���Fk�-��M���XG�8%s�m9/D�Z���i�����E�u��@u�`�o���V�{��.5[�W�����k`�,��D^��_��7������A�*��-�c�A��@��.���dW�F\��7Me��/�6Uc��lR2��n�?�������������g�5)��-��qX=�� ���2���K�(�s'�(Sc�.�Ze�K5����
��9������?����?��O�������V����y0w� 
�,����T\s�dl����������O�� {h�Z��a[����m@�^zZ	�B/���@+{>��������JX�3t��/����2D�N�b��������/tS���^,mp�����1�L@�%K�����kKmZ�$&^�������������G������1Y?V�4�;�@�S�=���l@R�������Q��#v*��a����S�o��-������|�������$1�������������)��c�bxkxL~�����}��o����}O���}�V�8�vr���������4��z��/����_>��g�M�1��v^sC6������������~ �1�)���4"C)�l"s6���=<�����_���ts2l��b"�-���o�������c�����#�ey$�f�H�e6�$�m���f�|KK����#^
�@M��'����=�h)�7��E�C-�#IqGQ�;��S��nn	������k����8�)���"-��D�N���0����A��L���\����c^�w��de`����o�-��B��Nt���gM\����t��_��s���Z}N��]o��R����q}z�G���u��}�M��j����2M��{���p�{�v=�'�[�bt���f<�I�dOL��v�g�d�@�r<�W�T~����}�3tx�������hg�&�����%�V�!M�C��m��=��u�~�r�F�lE��_J��;���1���E$m��7�f+ya�o�A�Q8�#��/��q����u��-�\�"Sb�����H��� cG��E���
S�W�������{�+7��z����U���|WTu�����������o$�����D�S����TiE�T�t�[%��u��t�8j�1����}j����0�25e2���� \�	;��}��s�)�G�C!3;���]��am�
4at��<]��%��#�Z�!L��
�U����������D�]����q!�����Uq��|�
���^�@@�.nIn=��Mc�����H2��';�9M�oah'� �x�x�d�4���Y�d<�(�d���6(��6�����f��WD���4K[]�&�kZ��O��+�|_kuL��s�����}��������g���F/o����(X7�f��{-%�)������s}=	lG�[������"��v�T�
�$R�h�������8%�I�#u;pZ0��hH]��-Mj��`&�����[�)�HN�B[�,A�;�n��Z&
�n#���5O�4�������),^@���r0z���jZd0��T��-0
���fS=��D����p�Y{Y{_;�&Y\�'��e���5s,<���;���	�'�����>1-#g��y��k�Gvg��W9���C�E�,�a���*�����c�����D�	���'0#	xN�&s����c"� 	xN�&K��t�H�����b�|K�
W�_d����%���HmH� ���j]d���km�Pv2<LT74C��q=c���%B�����b�t��j��b����X�h=%�c��
�����(�����c�����F/��y�j
Q���H��Y�B�7�p�
��p8�LY�_tp�,+�� `���c#e���� ��@s���P -l�w������ q� m��v�I�}tJ����������	����|�U�uSP-�f��/+�B��uq�m(�J	��������� A�z����������� �Kc�6���"]sW��a�����6@�<�)8P"��*$����?uh�Y�����}���Fb�y
��2~�1$��������F����G�!��,2����6�6N�:q��j�1`������>#��[�q���`��b%��Wp8z�ub��Y�;�B*t�#�[��!��/oJ~B�D}m[=$%\��b��eg�K����(�[���xDfk=��>��=
��	���!@�F%;��@T��G�8��52���fk�uQ���)u�;y�U"[J�5](�J�w��$.P���������O�S'u�����o���8�s��^>%a`m_�^Mo��Hy������)�n��_�" ��&{��;�����9e��fDc�==${�n���_�7�j%#��K�).�d�Xu�P�YH~����lc�^l�'��WEuLJ����'��)f�t�yP�G�}���/�K��C����'����,��Q>}���}����Ew���{�YM�ny��8���%��a4��@�|A�"���z�b|�����>Cw��{+z��}"V�}B�0��Im�1�F�!�KRZ�o��;�[	3�
��d��$����������H����<���	h�/�
c^-{5B5�����"b�[R����j��l���L�
�V�C��'a���A�-"9=��+$j���j5���J�����Q2.�k|��o��=�}���yd�]�ymY�+��-1="���e���j#�_m�z
���K��UO!l����t�H��7Iz�'��OW���D���������f3`yk����WH�<�k��s�����{S���m���������������;@���[�cBv9A��o@����or�$Z�2�s'���
e���)	�e��x�s���x�s�`���}>�Il�l��u����>S#��.4mne\_hj�t���Rk�@��o�}�bu�J���X��
y]�\�B����\W;U1��vW�)�����h���=�}�."9��=*yx2�>�� wOL��/<�*�������	
/�������u��9
���g�*��p�j8|G���� [+O����<�n��q��3,R�-�kH�W��(:a��-"FG\���&��>N��b���+P�
������88L4s#��A�a�zo����@�%U��oL���jz�#+wI�l��!���:�����A>'+O�A��+��fB?��*+���im�5I�t�R=&��!!���@ik��%���'�0@+
��@���DU�����ey�<�~�/���V�D��
���!/�2��E����l?����n�6��g�����=�O@Y���r�$�$yfpDER=�i��q�uJ�o��W�H���pC-�9�N��Jf=��M�#�!�l<����H�Z��j@��iQ�zb�Bb�#�aBB{�O��I�V��	+���h����a-~����
�CrL*���C/�o���}�z���B@)jp���:z��*"��[-C}/E�h��������X�������_���
|����L"2QS�O|5�m����V�5�o�5�ex�&]��l�-i��F���0���O������v��U���Q�����8c�!�����l���1V�nof���i��5M�����L���������U38)�1�Sr������c�z�?E�=:��Jj�_%v����%~�����U�Q:�'�j���"F`�|S�)�O.<T�d"�hMGf�O32��� J(c���X��%�3�D�����8��j^c���
08�.��>bc�j�#������t�n#���k7� -��Gi�3��7�.�$��=!��9i�{U��z]�,�T|�"tJ���1V;3���-mr��i���P�&(�(�����S�3wj�y�����STU8�3�7��*�q����Ng�A�O	��.�����N_5�dsE9����r�2b�����9�'�)0����5�5`[P�����D]}T|�f���@�Ni�@�� �(H�
m
PMm}X�R�l�6����`F����E�BZ�����l�h�."���	�[#@�J���r�v��N�`z��w`F�"~3��K8�_o�~�z`M7���X�a�\��9�.��O*�Q�'�]�Ka}D����x!��WE+������j4A�0V^H���cY�X�/�pR
���$}�E�7�]2����f��]����Gl����
���,����=$���f��M��8�mv�p����mc�����|
S�!]�S�%�XA�=QZ�h�3�kD����y?q|o�v�R�p����M>��E�<FE���s>��N�xC��dO�t�����YVUX�S���+e���Se	i��K�x�T^�q>����)Cu"Hnh!ZU��G~��$x}0m��b$]R�i��C�/hfZ4id�M���F�M������R���P?pT�2��U�j�B����8`��Qy'�?�o�k�*�KzA���8�(|a�H��-r��]������)I?��r���KG�)����MP��
�M�-���ZI����DQWmb����\�c��i~��o���t<Uo|�n�a�������>�u�{R�4�_�6��$i�����?��W)�(W����%?	����(������j[����s�z�������+�;���������r�vk"�Ee��6��8��V���U�:�yU-����{M��-dl����^A7�������n��._yz�t�E���B��)��xM����_�&~���^��
X�^�nh�����G1�M�����1;�}c���cg[�[5/�	Ph^#����t���u�[�ZI��f��������g[���K��hw,(��!~�@����0V��B'~�X�=$�4�n�~9i�<nY�]bK]W����$����B �*���	����$��xJ0��4�Sy�d8t��R�K>����}#�O�{�w8�o�H��,�|8:C����'�I�0�G	fr�������0��8�f[t��&w��J?���$p���n9%8j���q��S�S�P6t��I�����5�*����t��D�C�����2����}l���g��n�vW�8R�0�C�p�B�H����w52@J��T���5A�78����k��
��
f��i!Nd@j[���Z�[�s�bk�%n:������'�b��)
����a�U,���s��� ��1�B��f��r�����\R#��w3��v�!����-��%��v��]Gh���s�)<�b��;nu�����
�Z~,u;uN������I�#������M�=����Je+�[����U�m�����:z���W-w�+jXo�n>oJ�a2t�=i�H��K��B�������58��x,��Q���Z�X����,���k��X��>�3@!��GLAsyw��b����n=�/�����Qf��N.e��2
a����z��8Y�p���j3`vq�-6�uFS�oq�a/�,���&a{b�b%��$ug����;�5V�0�����b��b�������u��G���K�>����B����`=K^��B���F�
wA���8�
p����`�GP��<��D� ������0`��C�v�>>�W�<`����>��-i�����vL���~
2��8�W5tF7(C�B�� s]I���������K��$n���h�u���d��j�Q@\��p6��G�c`5pB&<\N'58[�
5��9Dx�!�8��x�"S�zv�s��R��3����p_�����[��o����S�M�bYf3���A�
iO�����9t��6*�DT�2���b�Zx���KJ�����~������aLE3�.7��.	!Ut������[��M�f�s(��kwa��
9����[�3�=�ZR;sS�+%��|���s3V������U�P�?NX�����P8+���1���+0��<����=����<����ys�����%g��wm�ke�2��	g��+��w�zDa��]m*�~d��OR�w�����w�R����TGf��B��:���a8/4��)����N{�N���FW��R��K����2���r�rw�����]�TF�R���N�:e�,���
Q>K}����*Ch�ot���
�}�����\�Tg3}����Na�FGuR��S�����3v��<�otC����:?]tA~���T;R[�Ua�f����f�3y��H�t}8��.^�nFD����Oic����T�s:(H1�����q��1�c���8�3�6=�^x
����^B��=DeXAl�������)J���@��!j
�h�[�I-s�'��`n�$D��r^�s�^�}N��$m���3q�&��a��-�rS\����Y�F�����@.��MA)��9W�����8����g�����\��T�����|Q�3[d3��"�
����1OB\���:�`J��S6-�gj���j6�%��V�j������k(Q��*j��u���Y�s���M!���r��j7��n ���Ne��i<���6a�2���r��|����
��Mo�8���z��W�4�:��8�|V������%��v\{q)��WjH�
���P����,^�%[&[�aR����l^oD��s7
�q7��+5��hj[�]�O��W��&G���H���v�������������W�q\]i��5��0s6�%�^����{���\��������q��y��l��b�:���=�����j3hTV-�����$��!j�lL��J�jW�:N�6E>�ZU$��z-�9L)w�Y|��tmDR�.V���^��0;$e�d�*�����t�t�e��;E�D3����d��M@3�wY]���F�e���M=@�<%X��/o�6�������>�K}+�K94�����$�m-!![{�D���i�������9	��v'��Oc��WVQ]e_���\��GY �'d���$�$��g���"6�@\t��#��>��9 �.�4.�Z��^*P���Y�V�"�)�z�DA�� ��j�s����g��0g�0!�sQ����htswt�3d^��k����p�v���[[l,������Uv��T��o7.z&�����	�2�Q���(*(3��%z5���!��L��	#��d�n^>�Z�����a[r��X: �K���V�i��b�������VE��q���i\�����xk�����c��\N"i.�������������"�d.]
^����R�����WA�W�}	����xkb�����x ^��0/nW.*@�����G���=�Je���n{=w*�kwi����n��p�LU���.�I��i@/�z�&}	�=�rr�?�uS��;��_�	�C�wB��I����Z�%��S1��,��}U��+���L��_�����������/:N���>��t^�R��RY<��
lv�x^O�O���>'Y\���~fu?7���Y�j^��M�Q4������Z�3��_�t)���d��9M��I���
4T|��U�<EI����C\���s;DUTT�l������+���>M���p(��yYq���s��$�~>%Y��C)��_�X������	�g�_������'r��A�������3��^n���=(.Y�xO��dX����+�����h���������m��G����o_%{��t�����"N��FEt�������g)�Y������g+�����-}�����[��E��OQ���x�f����q&�����K���'��i��z���y�V)a���"a�>������F/����y�>5����%��yB����o�~r`�������?�����c�v���1O�x���g��S��7��{CZ��R��"��n��/U�4����	_"��#(|}���������B)����?.����>�{���`=������dLc\.4��:�4���S��5����&[�1	����j��5�D��6���vtk>���w��c���wvL�0�������V���r�B����Ee��:����j���X�!�&xe
TK�yI���������1mi�S*��f�oL0�nl��h��!�?��>){�	��A�(����Ibgaj������I|
�6�F�1'���\����/oZq�h_�8�b�[�M~��;���3�X�YQO
X�#��z%(��F+���'����Ioml�!b[�����}����m�M�j�`V[����$k�:�I��t�Q��}����FT��Ie:�d���%��8.��-!+�4w&+6(+
�F�W��A�.�:���R�WO�����n��Z��d�ob��Qo"�O�5�|������U�L��� �5�����p*����%�O���,n���+�G0���w����4������a�P�gqvT���~SU�/>������6��!'D������3�2��%�����xqB��3ze���CT����=�h'z����(�K�fB���������s'����v/��d���fN��Fi:�l�W��@/V��v���9�-�lW���4���4�w�l������#b�~��|�Ul`�J�KO��Nk���[���
F��8��b�
Wf�GhOI�&%T�3|n�~��hm}L��b�s�������i�.f;=R�H)*��#��������+�����~nP�s5�@���)J�/�I�#68�7�_���wq��$W
�Cl3_O���[V�?�s&�R�>�y�b���#�7�fk
pL{W���%��;e3���_/������nJ~�&75Z����\�	$T6fX�a]�����������iq��CRT�����1�!�;�d�*?�Y'�[��5�8yz`�&U��&���*��������-�v~O��t�2[H���-�7t��D�lc���z��2/���`�%aW9�^�G�I��v��I���4���P�Y�i*n���������j�wdd���:��el7sI����c�U{�{�q��=e�=�������|k�O�b����,�ty��dh;�kFM~��NS=��XXi�������� ~�����R�q���UN��m������i�C�����fpq���<i�A�r��qX�a�]�4}�ur���p<.��wc����'�`pW���\9�����o�c(p|�1�������P���c8n�{����c�S�t�����9���x8���<���!��r�K�Ya��3�q��U�=���n+�����F��R?�Zl���R� O�d�L^�����'6(6�BAw������mmS���sCp
���G���:��������P���%��Q�y%X0���m�=8�C�����������t��0-�
��#�h_�������R�W#vf�;>p�t������(��(�X����5��#�����N&�����#g�H��1��pe����1��"����P���
��x����c���C��X��v��F�fC�	�"�M���F�2D�������X$�-s6��4���,}�	�,�"���  E��K��x	��
	U�o���'�C��B[�q�j�u
�X��X�J�$������N%��'�L�`�r-Z�T��(-��I9X�<S�Z�39S����K��?q�'9^��NV/+%c�������,��1��Om:E��	��EM�a</N����8;Vl���=��m��}W#M.rU�w���	�t������t�E�O�}��mB����P6��Bf/��4�Y���x�%�����'�������'�(�R��z��7�v�>�Z�/SF�U��'N�W�Ij1����#:��e�*\=���S��)��	6��������d������t�`xD���(9�����VO�3���^Z@M:�Y��O���w�c�&#���kr���i Y�Pp,�8��j*�d�W���|�
>�)���&��I*�5�)���2����}�q���lk��� ��C��3Y��"#Vj$�L�	E��M�U0c�[�����4*V<:�8�P(8���^
��-g�&R���Um(�h����5YR�N�>E�0�����/Q�|L�`��	����\S]B��&d�����,1��(\�W�EB
�<�[���Av=q��qW�)+�,���I��k���H]�o�#�bUPH�Vc�O�]��~������Q�7�>9��h�����azP�P�5f����3 U3��&�u�"�]2�x�V�I:3��>��%K�',��5�%������ �2��Wz�����#<G�b��X���p��#6���V���B�r��n!��{�+�%���[��0��E%��	�J)���i�������}L�����]�������bX��0@.g�A�{�`��P���w;4�)l���xI
:p$������jG�Ar]!�Ma��n���hf_>� �z�b�!sN�^��[S�E��B��u��N�6ToM�e�a��l���:�-��(�[d���'Z��M����L3)#�����@����Gj��t 
�DR�jl�iK��f4��n���|h�L���!���-�%r1ld��r�5�����n����F*�&�v�����6PC�8{"_C/���QI�).������
�	~|5��Z���`���Q�.�f�OFn�^l.�6�6U;�S�2>)6����4��NG�.s�b���uG���s����<�'��tp�e���5F������Y�.�7��%ta]�@'���I��7�!����Go'����<5���h��O���!h9�M��U�?��-K�:U�+����3�fy�tv����#�����s�p���Q�
ok
5O?Gj��H��f�!��v1�� 6��x�yV=�|��%���e�r3p�H,R��G�1V����_�������;�dt����z[�!�b��D[(G�����=kfh$	�x��`����e���J�?�m�j6(�58J��Z\[��f�l0
����������T��7(*�}
�[���+��%�
���P�ph��Y �g��r��!���?�v^@#�9���S
-n��$����O��~5g�`�N�6��8��y������zI���[t��T�i5K�����h�n@�2��m��Q�=�l5��������}����F-�q%�S���t���?�xc�1�{�d���x��� �)�4}	�<��"�DN�������j$AmAh�	k�a��j{�������B�+�z������1v[��	��[�	���Z��a-���^��3�����5�c\'}�*����1i2Q�d	�D���Xn������y�r��V@:�r�u���Z��a�X�y�/�>�aj%��4����g�l����"���'�
�Z�?�I�@zj���n�����R��N�834{%}��t����(5�{���>���k�OFNB60�-�2�5�o�6�����
WT��e�����3U�L�w���Aq!��������k��r�f��n���?�;wvo�8i�UAb�B$��C��dqu���7��zO1[Nn�,R6����.P������KY�'L��K���\����y?Q�3�s��{����8Lr�4�xo�l�w�o��<&Eu�R���K�������|����_���.����x����X�Qv�����z b�����#�����!���m�n)���9����r��%u����p�-
����)N�l��R�X����dON�M���k��awyz�dc))s�u ]D\��Z[�-��J��������U��C:a��5D���??@�~���-��p�_B=�f�����`��(��#�������2H]tY���t[���w�A��^�KZ% �DI!���7����+��Y�����T�Z���^�o��Z�-V[US�Lr������_��uP6y�5��W(�7���	>��"�[�>�J7�@�D
QO�l"�h�h t���>������C�t �����L���� �������m�^a�����a����3��SYh�!G	�v�`�'~�Fo��>h��/Nh��^��$���'5c�3�]�����?��H������n��v���|��Vc����R���6����+��g���-��^����.i�k� �?|���C#�&�d��o�Ba)��*|?������k�������	�KO,mw;�����DL�:��cR&|�g�\���p������D�
fE���}^V��k�lVQ�T��(�! ���Y�+��a|m�G�m@����c��9.��iG�M�+�\�8y�v���_%��������)I_�a�����N��8b(=�g��Ue��U��]�Z�;B�^�~U�����Vx$yuUWe(^�2��	�!��2s�����z�w$��V��W�,k#l�[~)"�	�a�Ol�����?�;��i���HeE���A���	�'�| *�|P��Ar10����6#Ju��U%�])��2�y��W$4E�L������fhW{e�8�
��x�]"��/o���Jc�����j��%k�*.NI�=�2e�4%�3C�-�m�:T5�E���.���z9�R!��^�-�^�����P��[�<u��g���+?����}�1@���7.w��?���UY{�q#�t�H�/��g��<�7</7�"MR��:���T������#@Y�����rsW��oE���%�@�k}�k��E	���[�^�G����{�V$�pq���t�>qOQ�O����KA^%�D��`q�C�A�M����@b"��Lu����e��LX���C��"�F��4D1]���I���	��
�Z "��Qt@��l�t����^r��p��
}���Cd6���&�	�L�d�gA)L����s�$�"
��*�/�Z��q�=
f����'�8�����}���T+�fy�7%U��z��I&26���\���(�p
�
Tv9�E����-�?�3�H{f+
��a�>d4Y�����|��L�=���������O��Q��5��e�j�,Z��i����Mi9t���{qL�8����k@c��v�EK�3d����=5^���f��l������*1��+NO9��o�ED�x������!����"��k���8��������pDI�c1��dP+�U���#i���!{,���roi��*?���"�7�����`�0y��'���s���|����34�N�&PS���<�M��;u���xSg�K
���u�K�.s��S&���h��"��#������e|O�CR��d-������-��pm!���������x���-{Bq�kd�Y� \�h�I���%|��;(�~/h�C��6�������Ioj1�i��phY��I���D;�:H���D����k�ZS��>/lm;o?.��vg��zH���J���X�2��W�`M���Nd>�%��u����6_$���5�e��6q���w�i��	^�1�����w8^�Ow��[�Bl�Ejt�@-���
�������9�?�!�+���������-�m��o���j���w�'"\+����JR��i�����*�W�H�
R�����57F������Q[���(�
�/��d�����E|/���)dm�q�I�<��a����z���Q�����mT$��)��}pb������&?J`z�.9B2l��F��c{+��h��S� e�M�c[����tz!�����)�j��Z�p5���J�5�ak1�������~pfl����������l�����S��Lm_�)/}��c�
��S������Z3�f����]N��T'%���$;_H=���|J}K1Q#���h��0!t�U�;7ZM�:,�(kt�T�P���/Wa��YCu��gb�0��"ctJsQ3q��������*,��;���,(ZU�F4��Z�a����YR����uT����y���S���?"��l�k�`/M�������:C�D��N{�������a$����ak�/n�]y���z���q�f�1�G�h��B��a6�����e�4yE�����@I5b�an���Pw�R>�;���^�.�}��?�'jnEn�^�I7�H�n�0���_�ty|8q����������e�:��4m��GZ�m����]�w^�=��~v�����R�~�������({���3g���&��G6�K����������c�����f����dtW�a����X��d���9�$6�
_<����d�I6F�_$/�v��E�8�������"y��������H�|�"�Y������G/��C���"y,c�(\��}�<��	�(I��e�<��Q�dt���~=��Z$/o�;�dFr2j��t�{m���G.�����"ydL�H^:L��S06~���:��Hge�_$/fm�H��%�,��3�}y<��c%��<3[O�<v�?���&�/���x�>�<v�ey<J��/���[r=@Z���NO����oY�{W�����y����O��o/���G<4H���_fy�C*�xs�c��VA�}o�\)�����^�Q�Nn�������4-p���&64�����y� �F�&�s�CTX��	�I��jY�����.���jx��A�0�=�tR�a��>�����s���e
����g�y����G���~�L�jt��a�2���=�ok���%[�@�`?�]���q)V��Ey��*�`�EqNn=����	n�4��d�C]����`�AU����4fx���YMV��������~�l�y�S-
���@4�d��i��MU�����4������}|���gF�sF�6�^��b(�������W�/���1�
i4`5��|�:���u���!�,�/]�'�u���'��`�a�k���c�zAl<K���M1O��bW��k@i7�h�������i?|!Ngzh�������q&~\���\�n�9C�:�s�S73r�6J���RTb�\���v�u��A�����/`5�rk����V���-'Q���
�ki����{-(7�
������kb����'��e�h�-:&����>�������<�u��3yF��<��g#��9���>�|��l������|�mJH����}��9���w�9��O�T6���/�����}i6uL��c�oZ&_^>?�j\��p���Rt��G����?��o]��T3�i�/�uy��D/��_���������'mg�r��ZI���(�z-�����d��(
g��~Fp�������QY��U����
 �PT1��sw�E:����w���M���9J��`P���Y��^�so�}|���yK��p����������vw�m�b��e����p�Q*�|�e��U"����b�9��".�|�N�t���zf��L(�Q�B_�ql�KC�ce"������A����<�Y!���$�{��	{�B}�@7JK�rT^����D����B,gQJ���,[�'���j7���\��fe���7�6&
.��Jak�0��Pvxk?D�z�������O��[?9�['����:@H�Mu�t���P�Xw�m�W�T�Z�3	��$�f�dT���:��\��(�S�:�������*������C4Q�����}�o�,��;G����[�g�t|�q���+)����=�b����^8��/��vC�%+�!h/m�!���P�����A|r���D�	����)a!h�D�b���7�f�r����i��G���&\�U�.�U9v���;l\	�
Ayk��O#�@e���sbv�Dr���Wd���{���A�j
o^�t2�'M�)��\����5��C �� �
��c[0�����yR���
�G�q����G�v�U�W{�;J��857�*E��t(f���uj��u��Hw(�����|�0/'��C�Z'x�{��]D��u���:���
~��MO��+�f�1��E�ao��Ze6_#O��(���:u�s�� ��p���,�\�z��R�BM��7|�P����|#6
�A���.��fQ,�����l�(|d|�����/Dx��3���t��t�_Gs���{
����s�<&i�cP��"���^x*������=�Q6O��&3VyWH�v��Q�t�"�=G�J]}�f��pz��3kd�A#�����m��)'������8����k�1����g�&q���k�����Z�a�:���@5��t��K��ge��h%��y:�T+6���8�����7��t���j���P�l5�$83���8��o2���"�k}��5��]������lC�i$�����fW@��xNI����l����jP����6����\�F���5zX-=�����W�gz5��ys6}�i� ��^kG�������5�(�6c�N#�5�F
���r��"YO����#�M�q�f�g3)LQM4�'��h��a��m]�	�p�V�+<�#�����+M�DZEG�C���Q+t\]�u<���b(#�h�!��bg0���=lI�~'��{>����6����6����m����H
���f��
Eq�V��@�C�\�l����hB�J��G���^����[�s�Q���	j�V��6�6��6�y�qr{��S������F���3DI�w�%��?41�W&�z(r/dZY��#� �1�M
�Q��}�^a��4KB���$l�z�$��%���V9���U����9z�`�@	�U�{	�����h�	������7z���M�i��5�{����)r�3�'zD�DS����P���R+6
0G�k���s4u�7
~����u\]�u<��������5��AH�����<8��+��%U5������JM��]sf�\����^��P�'a33R/���*�%���V}�l��L�$������{�
7�h
��A1���)10}#����xk;)����n]�e��cd�����n�T�A�6����j<j���^�����XM�>t1�'�< 1^����Z�����:9-���hm�O���=����j�I�'�A�GzY�w/U\E��%)�8�C���G^���x���HO��OM�2��>O/�,,�O.����0L�vE�����������z)�����L�x/.t{�^owT��������1�)��q���r ����7
���C���9h}WG��T-�rw�|���e�:��3��)J����6����������1;M����3�Q&���;����.�	�8��U*������1��_�n�_���������)M��!����UM��9�D�7�y�G���O�
�4t`�.T:�
�<b�+`Q���c@�i�[<\N�����Qs��R&�`	.YR)�yWgGU�P��Vd������k��:$T~?l1W�����:de4���a�v�>m�l�Ol�������w���{�P�����������Mp_�q�*����L��4�^��:�3��]y����|���|���h�  �?��~mR��]v�,�,?����L�5�^�����X��Eg��n����~��a��Xo�4������zIAlH�A��s�F������<�MW�����e�s^VGfE�����'������7S{�@|g�������uD����ih�����\Z�P��+�uE�U;}D����#8E�|����4�������w��~W&��|g���dV�s�R�X1�@i)�w�A��.&kX��,�2;�\���^������x���K�nM�.�p`oqkV
mW���������M��?��{v����q��-� �l���u�6c�^��W����=4�RP�����
��.�6�����o��2�")J��z7?G�^b6�NL��pM�����J�h���8�O0,�SK]��)Kl�5����O������!N}��{�YfAxl��,S�!�
 =���2{��"�	�7Gbi���fc�`�<��KM	���l����y����Wc	��������;�D��cpe��@!87�����4�q���s3�
��AQ��fC�"��[����>g���L��������Oq����T�1�3��|��?���~�`�B}��J~I���q���T�v)�Rm��������������q�RV�i*��6�
������Et~H�x>�{��[1�����tX���(`-�FHo�.�S���H�(~�����>+<n'O)s������k���b-%���o�'|�"�=����-4�(���'��'�sv�xR�[�D���$f*�����+����Z�$��Ix��������9@B@(VDs��u��l���f��l�������	M����\�G��W��0=��ytLOp3n����Ma��X��0|�;������l�W:�d$�l�LEb�!q�NP[������&#�B[Xzy���J�CA�(4�U}��lw���u-�����Uj���z����Z����t;���H�s-��:��
��-�3��y��
6i������w���:��yu5����3iM�a�9�^�'�k��
��5g�:cb���L�+��<�
��L�0:���_o
R`�5�jn���K�8	^���8^��qb�.i�y]��&KGh�����MP����"���c�G����K�?�8������O�(��jiq���
K����V���7�v�������5��������-�������hs�9����`^3dc��n�����
L,���TUKw&��7�}��������t���	"��rfV�~�������N%J81d9��j��`5y��Y/��t|�t�,�5�����9�D�<��x�����Z������g����r��>f�S�k���SfuPW��N
a��Y)��:f$gN#f��
:2Azr.-��XA�>h81c��V���V�������P}���1�R�y�|�}�o97+�jU�\u"V'��jA���PR�W�������52�6�Z�XDM>�P�����9���O�x1kA��AU��0����>~���^���#D���I�E}�0����pc�.���Ym�uz3�`!��G�U������aV=�l|��0+
X�k�<i_���Ya@=�F�$��E��*G�aa����P�����"��<;2�4k�gg�i,W���]0��3{�k�QH@�c�~���5�(T��LC� cM��fT�p�R��X���n���O��}�4�:w��?9���5k�k���+2��|��]m��[��\�+kz��:?������m�Q��5p��!�X��/�������W�5)�
<���M,Y�T��Q/�Diyk��W'o6�$�v���(Yy���y����Z�S����� ����������� ��b�%�E{�gp�,f]��r�D����QabG<���r�WPtd��RY�u|�D�X�����Y�74Y��Sat,��J8���V?v��k�r��rd�!L������P���!�L=jd���#���-���YG��9���)�eBp��1U�f9�c���#/���rc	�ZU���Lzac������o��/�V���w�����j�\Q�E���\�u(2���8�pg9aj�z0���Xnl��s��r���6������nO��4W<ZF�j�����ZPu?�����Y�0
|�������N8GV8M��Y�@�(���+���Y�p"��@��`�w���N����0+
 ����L�oV�<}1��/������n�t�OhY��y��I��u��'��������R���'�>�3";�b�-Vr���t	*�]����S����E���T9D	��~����P�y���1���+C5e���-�����36G��y9�i�.���M��q?� ZceqZmB���^=��,��
Q�#Wm����[��27�=�"k�kh�N����Y��x�9����C#bnAN�u����Z���j����>������%�����B�x��1����r>�����\�A��������	�O�tP��b_�E����Kk����cxE�^8���H�#��O�K���t:\!��:�8[UU<������^��:�\X��.�FD���aB�
���R���x\s����H����dl���$[@�jy���F�{������i���G���gC&~n�`��j:Nj��&�l*�u@%�;��"��g��������T��
�#�3x#���>?���5�7���5�����:��R
#������Z�c��k�%���J:�J�N�����������?�U�����\#���4*�y/���@(7�O��u���7 ����X�^~S��=�g��)��rsS3�oh��O�)��y������Oa�+#CyF
9?�Y��e^��+�}���zz6��M�I>�)O1���,*^��V�@��\�A�t�M	�2G�Q������[���]?&��82�R�(Uw9L������b�o.�>���8����qm�Q�I\��VL��W���L]�C`��\�;<e��O4_u��t<����%�?y�_� �!o�>R/~.n��m�!�Q��i��D�/uF��h���$�
�����r��x������j.Y�yx���-d��x�j���xp4�V)@�b��� ����_>5���
�z�/�����rQ�B�_	�+!O0B�a���BY���>��d�M�(:��ps�����v����W�9�R�J�~�s�����1�%>��9�i����eG���K�D����k���eO�/�'S���������_���B��[J�rj����D�����->��"�)��,A����Q��[�z�4�E�g�}v����7�����>:�2��/��N6��rAUDY��i��Un�DY�N���#��W�V�6������������r�X`��IF:���mF�cz[�
�[
���2`K���8�C4�����e$q�}�����{�}�BQ>4��Ju���u�>����bx��N/}}����v��������������>��S '#^���]��������88���1�[�o��g��z
�%�;�Fb�����[�.���2���:�=G���=�Myb
V��FH�Q]/��t���0G�I�p`G=������Zi��E�M>�w:Q�A���p��&m_�w���}�|@�t��b'���9_K������B/�+��-���_8.���'V"2<s�=�-����i�OK9�v�<|N�P�8���W:@�+��5g�����r�E�z���Q\�L������y����\q���hY��
U�>�[�*8!G�O�Rn�,����!������Y]�]T����I7O�>����;o�/��}�\�x�nM6��4 ��0*��iu�M��%�,�W��G�,�Q���d��S�d�rK����B�|�y
��8�OA��"��c���P#�c�������Z_��.��p
�,�.�5)�O�3t�w���P���%,���G
�������`B�Sm�/""x�����b!<��-<�f�S�N������8�)�O��_�Wv��s����;����r�9 �%��b(�3g||�K�����U�J�w|��%��H8
��#h�J�Pn
^���li�bq �S	LV�VO}�C@��@w+b���8�@Rqh���������=����F��D���+um�6xRV!tq�/��N3[�m�s���Q��MC���h�1��z�Lq�]L�e�%�,�i�;e���0,<1\2���x��Hz�I�Q"8�������:���e�������;Q���?�gT�Ze�<j��"����h1M"��-rh���i*����^���j�0����c7�
��������GGD�1���#�?����c��r$���0���\q�Y�q;���{K
�)�6�����X
�������\�r��7(T�?���\E��y���?4P9�>�� ������P��5�`�PJ��P�o��2O�*~w��������yT��P�>���0!UQ������;������/�;CP�)d�6P��QMDa������Hp9��_X���=�=gu�$;�]�d�x��}���c����} D�C����F��@Y ��Pud���������u�$���/���[BpmY=���D��!����}�!��Dx����mG"���]J��������i�W���d��w�>���z������y�@Exc�y�����r��;3��k\|oQ���a�������d9����R�� C��Xy�Ztb��������h��*����!H���Y���j������+UheM�����}���_/\����
��W���Nv�q���A�`��W�)������lX�AhQ�H�^���0T�t=Z�k�!:~Dw���P=g�����
P%�A�oQ,���m���)��h��fE'!��3Yo=���F�r~$���
t�������I;�u'I�6�R~����9�����0]�r7g�Pg$�+��v��I�Q����x�{��*�������y������fo�>W�LGU`nk	����O��E�2 ��q�����/��Z��-\�yB�H����yH���c�&�����{x�(�sg����S�x.��e����z?HF��u���R���&G
���)d�wa��h��92$t{�A�g�q��!�y$��C�"�/����#~���^b$�A$�IA$��Q�[��P���c>�����eB�����}��#uI�������}��J�m"�U�):h�%�x�*�!�Q@���CA2m�� =����*	����wc��Cv��Ko�K��7�:�EqY���1����;�CIZ�5q���yI+�1���1�rr`�S�ef�0������oE1$�L�T�5���^g�R�������ev���lD\����k^����)�v��~��v���������N��v��*<���;�O��M7v�����4}�U���,f~t��p
��C�F.rJ���A��{��:;f]�QR��*�L����A�fU���7��,�8A�*��|�[��K�O8����:7���=�)4E��s����������o4������j�=�=a��},yy���
�U��7"�H�P�t�x��)+�P�Z`���;��^��&n�*K�y�n��U>��i~��W����M���&���/o����w���z����)��L�*�4�%mt?����)����r�lY"�,nQ�eG,��;@�S��(a� �!D������s������<��������)L��)NS���L&|���H(����*l>�#�P�a��
p1`��m��b�����K����$��V�B	u�t;���Fp�a�$U
��NA�mDf�p�|L�i8&�������pnf��@�=�a2�����!��J]"H�������4Y&��'G|��a�r����}�:`7AZ5�{�=$7
�,�^Uz������	��y���
�o`C��N�l^�j���4�6�k!�2Z���l����d���F��U��v��3�!��y,f���7��;��}C�u�.�'X@g�4�n�C�������-Q��oBy������u���%I
B��s��sX���w�&W��ItH���|�/r�e�^��T�	�V�Q]�3^w�Y��L�w,;�8���mp�a�����Mt ,�Q=Fx#�����%?�/��������7��=S��h*��6[=���&[�����b\���N�2��l������,������*kDb�J��O��^�K��eX=�l���F�������a��j�����)��1�����({f���X�-�}y>M����/�I�$�V�v����7�G�?��;t�T������b"0;�B���3�\�R;�����$r�O��#�I���z���5�������i���������Q�a�����9��I"�y$�%u�[i�b��Iba�DT
��+�Wb!Z�s�E^���;g�{����`��/��4��h�Ag�������2�4�L��~�!�e�v�=b���HgG�q��(�Y.�X6�v(�&������v�'�9n;r����a(B�{��_��{0�]d7�,F
�A1��qA�I����|��(��f���3D����9�E��}�X��8��c�VM�?kI��t	n���`���/V�����������������?����#�9&�U�N�"-�����;���I9���E�K�V*'7��
]�i�$(:�ne>��74�j��#����-O�����I�X�U�Pcz�+R��	t�������_����NW�F��8!�-Q������g��G�W�����K��?�l��J}"�V�v���b��5K�E9�pj��}�RU��j���i����gy���8(��g]{���!*T�W�&R[g9�;R�50���H��yo���������an�n%��(d����s�<�����k��Um�0dE�@_����%L���U3W�ck^R5���"k�B�k��l
���SB��d�Vn�!Y��;<��6��������]L�$Uu��l�\Y�aM�M���,g�����tk����Yo�Ln�O�������)��2�oR��x�L�^�e������������d��e�Iqd(�;�IY����h����P�N��E�k���5���5���]�����i�� 0OS�<�-z�v������h8��Un�(-�t���A��Xg+�k��\��^TO�*����N�K]W��Om�x*��h�99��>0���iP�
��0��7�>P���8;?����$�f �>+�}w�e���}4��3�ej���h ��~�n�C=�#�rU�hXD�1���)�3������}�0EO����(����A��G�k�q8�����tT����_���%8���c�������E/����5���=Z/U��C��I��`�.��r�zP�Q���r/�X��{U����������]������t�G��~����w���\wbZ�W�%q���R�@hf��U�o����?ti��Mr�&}#!B�62��*�&�	�l����@Z2�5��<��>#ii^�}��u;�Pk�K;-�����go4�;,N������,_������,b]������,����i���}�
@���%��D���!l�|���;��I�����pW����-q��5��u��
�y}��?�H�������zL�Zm�Um�=�����	!��4�D,a�
���,?d[�z���
�@�T�����U���[����	�4�������f�&�!�\F�,�P<��M
AT�����0�[i(4M������:<���B�m�z��O2�K���
����f��Y�+���y,�� ������k�����o�S��N\�C`�)!<��iR����:
�
]S���U({����l�[=-��d���0�����i.�,f;�P,���~��,���.�dh�\7�������^�,1e6)��G?�Ig)/�B����\R��E42}_����TW_�#��FO�t�o���jh�:MI�x-@d�l��������Im�F�[|0��P��,>(&O����w�h3H�D'(D�YG(����w���	�bxc])u7�1��#���v�s�����pJ-����y-	a���H+.t)�q�e�t��L�����h��1�������%�e����k��S���[B�C�/��R���'�"Z2;a���w��n-hm����:Sg��}��A[���n7��b��;�h�TQ��_��};v�!/�W���0$��J��]���B���I�I%�i�6;�z�\���p�\(�8��[��-
���X��q��3O0��8��IIh0(�EBQ��k��q����M����Kn��zT��]/���6���������d�Z9^�����5���C%Q�����r|�TW>M����z�Q����8������>�TNd�n�J��4;O���no�q~(�R���OC6�D����f�]��#Q����c������&!y��T��\sL@����N�;<AQ�W;���)J�����t!��#O��1^[�}�~tsJk5���������u�_�:_G�E:�"a��"����&���I)�e����5������A}\'��NUpJNYWl�
T7��|D$�
MGF]o��:5�B�I4��&
���
��;r���vWS���0�����3T�������{�\kssKn;;u�A��tg��$w|%d���qk���~��g�F��!��������<&?llWr��i�?(bo�1��yD�>?�� ���?��'Cq���a5m.���Fw��r��/�����#6��U
��*�?�})	m���Z�x��2{��^��5�)Nq!���j���@���D:�'F�&;����
����-�Y�Q������':	�A��x�.�9����nB��GbN���g���������OUuO�<���(
��#���F#<]L���A�������mT���]g�j�hP����\�D	��� ���VVAf���.~yQ~?�='���
�Bq-K��kR�[�w�4j�=��!R�F]�B��g�4���w��9H*�c.�{�.�l�]����#��m��F�����-J��ny��,�)*�e�ap�3��H�3�
�������I�����m}]1yv27k��DOs�Y�sa��3��f� �J�Ey+� e^����l�L5c����S��  �U��)��Y�
��7�z��C��GO.k��7��"eb�U�;��!���}������s�����{��u�	�L�����Q���\�p(��9��$��R���!��������!9
�C�����i"18������a�4&Iy��t��]���|),��S��������a�$����H[�Y\�j��e���������\5��>9}�w|z����O���5�[��[��@����6C�NB�����_1�]�8������p7��U�}�?������%N���9�0A1`�C��������V���WfB�_3,�T�ahP�u!�0������
<�C1
x��TM��>���b�/r�y(�z���PW��5PK@��%[��f���A�>jd��S�F�c�(�u7&y�H�i���+�E���W�Hy�1sW���F�k%�����l,�1}�]��A�P���l��8�k��\��h\L��zSm\�F�j��.c��t�^E���d��Z�l�����5�X��SP������\+�>n�
0���K�
7�T9��������Is���o����/j�b�f�t!Ih��f.l���5-�e5G��KQ@���c(z��P#%��a]���P������q����W��Io��������Cw	6@>�l�nel����{����U�$>�����bg0=n�"�*�d��=�;��z@o���u��}
ZC���Po]]�C}�0�V�A
�Wma�.��~��!��C���Z[�*&���h���.08�R	��"�uk�.;��^���b���`�8���o<����HGe�va�|�xr�6l$�Z��r�I� ���>�;FJ#n)��2��+��k�����l��v����m	�_����|��i�������;�Zk���t�5W��S��6��#�|oL����|��M�2�:M�F��D~��h,4t������r6���`t���)?J���������,-bL<Ph���mH'��#��
��~r�O%	�O�
�!B"�K�f��0�@��4����������zr���e����vtc���m7"�\�Ew�(�\���!���;�|$U��c���*��xA^�D��U)��������~J�%�n���u�����{b4[��e�,�K�*�x�`�A�7���_a;#���x��'i8.��vBd���������SJ1�y���e$������������lFq5��ET��v��� �LI?�mS���������:J��}���V��������w�p�7O�y�����$���I���k��d�:@����4s�
��s�C�>�*"^qf6t��R!�h�?m�3<�@�dXjK;�C� qr8%�p�uOe$t�?�
�	,;2����V�v����(&"��t�'��.��Mi�X-�4����_6	��x�J
��UZ��3�X��5jFR�}������ �ckO����0���@������<n�5d�gD!_�u/����@�=L���>������+V����2{�����������E������L�8!K:�cF`?u�'&dX�%8����r�!���Oj����V�%�
����v�DT��S�3��n",����]PSJ@THO����'�!o5(���YO�_�PX�t�.�.�:��*�[��i~Y���qxD>����,����i7��%�
x���;��>�c�SZ���|�����)tQ}���������5)��(����|d�1�"��Z��D:��^n�p����4#C�/�@�n^uQ���sX����b5�{[c��1��p]����R(W#��n�M*�fz��x��i���H+�������b~�l.�(��������h��e������"��);n`�J�!��8;�m��c���a���-��#hL��wl"������Aji�F:X�&w��q�4'8f����������l=K�*
�\�5����D��A/�	�6�a�{�����{vP����|������k�Z��@�L��'8�\�m��VP�zRz+�Z3{�]��\��'a��lh�m_WUTq7��i��&Q���cC.�(�����l�����_���znFk!�\�5.��u3�
��W�~�r�xv0�,@Q���+
�}a���cHl���`0���e�����G�>XA�x"hi/rx0�*�G��*��S�M��S����m�M���X����-�/�i��
)��6��X���6�2�I;78��=o�v��D5d������esN+��������v�~������9d��[���9d��[���9d��[���<5^H�S���/;wVw5�(ho�j�)�e���e���I����b,:�,��IY���/��~R�y���5���k^�����'�[���>���S����h�Tle��QBR�������a/��,�*�'mS�E�-��	�i��z��web��7�99�8:�,�y0L���=t+�|H�Is��[ZB_f0�2��8���m$�DU!������� ��>��o�tm������j�i�����L��>���j��^���&c����K��yOv�0,ko
����������(�p��"9�W��"�:��)��*�UZ��IJu�p<''�����\�?\]D;&���]��G�(yh@5������B�I*��Qm�j<�9���������-��[w�D���T5�o���.�������Y����$�D;-��}h��vw�WKm���L���;D'��'�VP!� ��0�n�ES�HL���x�6���>�|��V2p�d0m����{���b�(�]XZ�(����s�=�}#D�����b����F��h4�������M!�8@����4E���Wt=�2��b�V ��x�4f(:�G��*&p�-8�
>�_kD��������{���0�"s%�������S�{4n�Z:x,������49<H��f��h�������U��$-���C����K��nydIP$�RVV��3�],�?B���ff�� �W�D,�O^:����3N�}����Y	'������4�5�����/m��8���22��f�k|x�������#�������zb3a��hsPo;�Ww=1��qq��JK�u:z��0��fE�����@V&P`� liPI�yuro�W7,p'^��EM	�VLiq����������$/�-M�6��
vdve���T�-���066����5��N|2-���]��|��;B����� ���6Z�~7�(xm����k ���r0��94����<�T&��55M����;'�4�!�h}��{lX;��B�����4�yQ}�K���>�Vt�m�f���g{����:5'�I�����>5� ����~�H�_�T�5=�����8P��T4�:4QB�������5M�i���X>��`�LSW��|Na��/��flu��#�
~�J�����b�3�zIKzx����A�&�?+K���P����M�I��p��� tI�AnP���
9����O!��A�S�)P��+��R�GBP�������!��V����0�!���8�
 e�p��������k��9�5eU���!�0���0��3H��C�x��'�~��:�l�C;��%��/}Zm)Z?Q7L�C�p�T��y�t����v�d	#��������s������9�L���#T��d�nY�!m�W�1S����^p����}#�N/u��t�
�-$9���+�}�y��`�EyQ�XA1���l�cj��E��Z�J�&�&������2w�"t5	�pu�z\�#�`��
Ft����L�=���Vp��@v6V�^��e�p��~u�Xm���t�|(o����)L���������U0�0U/P`ae���
Tg�����BUW�1��u�t������~��@�al�e<��K$}&5�F��
7��b3Dcd�f���a�3�n?�msNmv�H_��D����C��V�m�P�Ry��F��7�;��[�lO�n+d�}(���C��V;�x�Y��i���(������{��A>�����fT+|�:�o1��<�������uqUu�v��d3������qq_�%�@��G0c�b?�t�TZw
����"(�	��B0I��f����#M�������!� ��7���t���
�?7�uf���h�,�U���
��&�$
];]��/IF!�%�^Ig�n�}��,dG�p^p]�V
~�>.~�}�F=wut-�>���4N��-E����d����<�d����D���P����x���[�~�@;T��
�_������+l�F���h�o��g������7]q���&9Du��5�--�k���n,k"�B}J=����V0���kQT��l�4!0��l�b��S?�NbF@�������w�x�irwp���/��C0~�v|hs���rp��B5��x�
�t�B���B,�C�.�����N+j�9b�)��?G��X��i"�cT��?[�C|��e��`;�<5�|]8���X�[~x��o�A��7�8a��a1ZP�0�c����y0Mw���=�z�0h����6�Xa���h����oY
A��1�@���! ���qc�p��sQk[}k�k���Q]_?*tJ�+��7�7��|,��yy3��TF�g��Z�����-�/��-� ��J��%=d����J���0�%���/��
r�����
>L�A� J���A�!,8����Z0����x���QS�:�SZ�*NH)��'�F�����QOX�%Y���;{��L�DC	D�H���znN����������d���!C�s��\�0��\���F�8��L�����^c���������:��OQ|������A����S�}��T�����.r<���`-��!�m�S
��D�����������|��BZR�|��Wp�8���[��h�u�5��\�kV\���m�
�������.���d����=�������4���;�����_��[�L�{�!�~x_�����s
���YPf����Q��0Ur2��}�z��1)�{�S��>O{�h���`��P}b����p�����V���3�N�T��X��vF��"0��<*��k��C,��"h�n��7�w�.M�4a��9X���Ho�����#��[��A����m����jv������y&BP��r����`7�#L�������Bd5{/9 49~]��B�xsp.u�3�7e�-;�7)y�Df���(}+!Pb��=���i���F*kG;in�t��Do�To��B(����&�]�U�{�)��(�sd����Q"���R������;H�X���PjH�X���n��8(E������:�����jQ=Ni������B#E�������;�lr:�����5]���3�rT�
�E���&�����������7�t9�6��_�s�Q��/�N�	Z2�"3V���H�sw��4���e�k��V���_�i�
����][9�W���Wl�>�����8�f\O��U�[�����D(*����"��u}�x�Ra8��G����������fO����	���T���o���~7G ��u��1ot�9�R���[���������~����>�����jp����Q����z�����:��]�g{�Q� �����������
�x`�]c �o<V�ll��p�3�F?tNP���������+��}����0���lP'��K���4FS��&5xF������Oh������k������� �tc����r�eV����c�������f���>��#�p����{V-���w���^�\,�&���:�2���L:0�4�:���0���'����� ��t�j�6U$�c�Z�>I��:�j�d;�����+�;A�������+��	e;������V��ar=���T&��5>��)�����JE�&��B(q�+����/�p'W9����J{��'�bj��xT�N��j"lu����2��4�4����z"lY~H������S��N7F���L�J3G�B�4�kv���}���$���O�,�?k�!���_���~K=q�("�yJ�����n����I�������U�����N�<�e"��~v*�����/���uA�lF��?���*����B
��{
�:��q�� h��"���R] ��8z&���@*�������H+L��]���+��]w�����x�Y��6>�����ts��pIiR�7pN�:�{0(\"���@)���#cf�1
Z��2��JA�hBAV�(p�������|i)�cnk��K9wx�|fH���������A��#���h�Y-!�U�A8'���������{�SX�Fr�%qQ��N���J i+�ea��0�����Ja5]�1|�!�e�F�d��eJ�@��t�P/
��X���pa�
Y\�QW'uc��z����L����N��u��	�:Xn�/ez)�f�8�E�%|��Z��.C/������_~�J\� W)\��k��XI_sO7����H��!M��"�-q4IK�����L��<�u��U���2EU��v���gcl�bZ ��X�K0oa����&�:{�����������fU���6w�������"������C�j����)�o
AO.z���Dh
��N�jt:��X����Xq�F��������N�	I���I��-
)�lc��:����{������C]g�����z�,�K-��6zG��T9����z�U��GUc�']����.����L2sks	 ��kh{�R����c�{c&���>Ys���b�i�35��_��g�3��}
�PW�����w�/�
��_a���_�A��5�d������X�[?gy
s��Lo�������nc�Cx5��$����S�-�<)ug�����^�1>������J�
��K�G��q]	Do�C��/R�.��`r�1V����<�3UA���C��%�;�q��.�a+�[�7���T-�o���1O��X���d�e�/]�����t�w�W�������\�w�����9;�����vI��;fC���c|��x���',�[.��/�/�BP}���s�� �%<���}qn.y�O������E�@�T\����q�2��'H�NN3���>���r�QZ5�vFQ�h�BX��$g�1O�u��"_���B\���]`���sU!���	9���<�/W��]��f#o�����%��U�/
����#�#]��W�8�#r`Un_�1���MK���R��W������Zh�V�v�K�lK�Zbt`�'w+�;��6:�[��e�=�����,�u
��I|MF�������r<�����I0�~������
��x�$����
�N��BZB���O���?��T�R�!���b������>cQ*�����+�1������������?�?�	�"1|
0006B_human_readable_entries_code_v2.patchtext/x-patch; charset=US-ASCII; name=0006B_human_readable_entries_code_v2.patchDownload
 src/backend/catalog/genbki.pl     | 142 +++++++++++++++++++++++++++++++++++---
 src/include/catalog/genbki.h      |  10 +++
 src/include/catalog/pg_amop.h     |  10 +--
 src/include/catalog/pg_amproc.h   |   6 +-
 src/include/catalog/pg_opclass.h  |   8 +--
 src/include/catalog/pg_operator.h |   6 +-
 src/include/catalog/pg_opfamily.h |   2 +-
 7 files changed, 158 insertions(+), 26 deletions(-)

diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
new file mode 100644
index 973ffc2..a363cdd
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** my $catalog_data = Catalog::ParseData(@d
*** 114,119 ****
--- 114,170 ----
  # tables here. However, if we need default values for a catalog, we
  # need to wait until the full tuples have been built.
  
+ # vars to hold lookups built later
+ my %regprocoids;
+ my @types;
+ 
+ # index access method OID lookup
+ my %regamoids;
+ foreach my $row (@{ $catalog_data->{pg_am} })
+ {
+ 	$regamoids{$row->{amname}} = $row->{oid};
+ }
+ 
+ # operator OID lookup
+ my %regoperoids;
+ foreach my $row (@{ $catalog_data->{pg_operator} })
+ {
+ 	# There is no unique name, so we need to invent one that contains
+ 	# the relevant type names.
+ 	# Note: assumes that we're only interested in binary operators.
+ 	if (defined $row->{oprleft} and defined $row->{oprright})
+ 	{
+ 		my $key = "$row->{oprname}($row->{oprleft},$row->{oprright})";
+ 		$regoperoids{$key} = $row->{oid};
+ 	}
+ }
+ 
+ # opfamily OID lookup
+ my %regopfoids;
+ foreach my $row (@{ $catalog_data->{pg_opfamily} })
+ {
+ 	# There is no unique name, so we need to combine access method
+ 	# and opfamily name.
+ 	$regopfoids{$row->{opfmethod} . '/' . $row->{opfname}} = $row->{oid};
+ }
+ 
+ # type OID lookup
+ # Note: We can't just use the same type lookup that pg_attribute uses,
+ # because pg_proc has type names and comes before pg_type in the input list.
+ my %regtypeoids;
+ foreach my $row (@{ $catalog_data->{pg_type} })
+ {
+ 	$regtypeoids{$row->{typname}} = $row->{oid};
+ }
+ 
+ # We use OID aliases to indicate when to do OID lookups, so column names
+ # have to be turned back into 'oid' before writing the CREATE command.
+ my %RENAME_REGOID = (
+ 	regam => 'oid',
+ 	regoper => 'oid',
+ 	regopf => 'oid',
+ 	regtype => 'oid');
+ 
  # Generate postgres.bki, postgres.description, and postgres.shdescription
  
  # version marker for .bki file
*************** print $bki "# PostgreSQL $major_version\
*** 122,129 ****
  # vars to hold data needed for schemapg.h
  my %schemapg_entries;
  my @tables_needing_macros;
- my %regprocoids;
- my @types;
  
  # Produce output, one catalog at a time.
  foreach my $catname (@{ $catalogs->{names} })
--- 173,178 ----
*************** foreach my $catname (@{ $catalogs->{name
*** 145,153 ****
  	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
- 		my $atttype = $column->{type};
  		push @attnames, $attname;
  
  		if (!$first)
  		{
  			print $bki " ,\n";
--- 194,205 ----
  	foreach my $column (@$schema)
  	{
  		my $attname = $column->{name};
  		push @attnames, $attname;
  
+ 		my $atttype = $column->{type};
+ 		$atttype = $RENAME_REGOID{$atttype}
+ 		  if exists $RENAME_REGOID{$atttype};
+ 
  		if (!$first)
  		{
  			print $bki " ,\n";
*************** foreach my $catname (@{ $catalogs->{name
*** 201,221 ****
  				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
  				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
! 				# Replace regproc columns' values with OIDs.
! 				# If we don't have a unique value to substitute,
! 				# just do nothing (regprocin will complain).
! 				if ($atttype eq 'regproc')
  				{
  					my $procoid = $regprocoids{ $bki_values{$attname} };
  					$bki_values{$attname} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
  			}
  
- 			# Save pg_proc oids for use in later regproc substitutions.
- 			# This relies on the order we process the files in!
  			if ($catname eq 'pg_proc')
  			{
  				if (defined($regprocoids{ $bki_values{proname} }))
  				{
  					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
--- 253,301 ----
  				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
  				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
! 				# Replace reg* columns' values with OIDs.
! 				if ($atttype eq 'regam')
! 				{
! 					my $amoid = $regamoids{ $bki_values{$attname} };
! 					$bki_values{$attname} = $amoid
! 					  if defined($amoid);
! 				}
! 				elsif ($atttype eq 'regopf')
! 				{
! 					my $opfoid = $regopfoids{ $bki_values{$attname} };
! 					$bki_values{$attname} = $opfoid
! 					  if defined($opfoid);
! 				}
! 				elsif ($atttype eq 'regoper')
! 				{
! 					my $operoid = $regoperoids{ $bki_values{$attname} };
! 					$bki_values{$attname} = $operoid
! 					  if defined($operoid);
! 				}
! 				elsif ($atttype eq 'regproc')
  				{
  					my $procoid = $regprocoids{ $bki_values{$attname} };
+ 
+ 					# If we don't have a unique value to substitute,
+ 					# just do nothing (regprocin will complain).
  					$bki_values{$attname} = $procoid
  					  if defined($procoid) && $procoid ne 'MULTIPLE';
  				}
+ 				elsif ($atttype eq 'regtype')
+ 				{
+ 					my $typeoid = $regtypeoids{ $bki_values{$attname} };
+ 					$bki_values{$attname} = $typeoid
+ 					  if defined($typeoid);
+ 				}
  			}
  
  			if ($catname eq 'pg_proc')
  			{
+ 				# Save pg_proc oids for use in later regproc substitutions.
+ 				# We build this lookup after the forming the full tuple,
+ 				# since otherwise the script will break if the abbreviation
+ 				# for 'proname' is changed. This is fine since pg_proc
+ 				# comes first in the input list.
  				if (defined($regprocoids{ $bki_values{proname} }))
  				{
  					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
*************** foreach my $catname (@{ $catalogs->{name
*** 224,232 ****
  				{
  					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
  				}
  			}
  
! 			# Save pg_type info for pg_attribute processing below
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
--- 304,354 ----
  				{
  					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
  				}
+ 
+ 				# We can't do type lookups in a general way for pg_proc,
+ 				# so do special handling here.
+ 
+ 				# prorettype
+ 				# Note: We could handle this automatically by using the
+ 				# 'regtype' alias, but then we would have to teach
+ 				# emit_pgattr_row() to change it back to oid. Since we
+ 				# have to treat pg_proc differently anyway, just do the
+ 				# type lookup manually here.
+ 				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+ 				$bki_values{prorettype} = $rettypeoid
+ 				  if defined($rettypeoid);
+ 
+ 				# proargtypes
+ 				if ($bki_values{proargtypes})
+ 				{
+ 					my @argtypenames = split /\s+/, $bki_values{proargtypes};
+ 					my @argtypeoids;
+ 					foreach my $argtypename (@argtypenames)
+ 					{
+ 						my $argtypeoid  = $regtypeoids{$argtypename};
+ 						push @argtypeoids, $argtypeoid;
+ 					}
+ 					$bki_values{proargtypes} = join(' ', @argtypeoids);
+ 				}
+ 
+ 				# proallargtypes
+ 				if ($bki_values{proallargtypes} ne '_null_')
+ 				{
+ 					$bki_values{proallargtypes} =~ s/[{}]//g;
+ 					my @argtypenames = split /,/, $bki_values{proallargtypes};
+ 					my @argtypeoids;
+ 					foreach my $argtypename (@argtypenames)
+ 					{
+ 						my $argtypeoid  = $regtypeoids{$argtypename};
+ 						push @argtypeoids, $argtypeoid;
+ 					}
+ 					$bki_values{proallargtypes} =
+ 						'{' . join(',', @argtypeoids) . '}';
+ 				}
  			}
  
! 			# Save pg_type info for pg_attribute processing below.
! 			# We need to build this lookup after the forming the full tuple.
  			if ($catname eq 'pg_type')
  			{
  				my %type = %bki_values;
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
new file mode 100644
index c3ffa29..39e9b59
*** a/src/include/catalog/genbki.h
--- b/src/include/catalog/genbki.h
***************
*** 37,42 ****
--- 37,52 ----
  /* Specifies an abbreviated label for a column name */
  #define BKI_ABBREV(abb)
  
+ /* ----------------
+  *	Some columns of type Oid have human-readable entries that are
+  *	resolved when creating postgres.bki.
+  * ----------------
+  */
+ #define regam Oid
+ #define regoper Oid
+ #define regopf Oid
+ #define regtype Oid
+ 
  /*
   * This is never defined; it's here only for documentation.
   *
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
new file mode 100644
index 5724e3f..3d9e9e7
*** a/src/include/catalog/pg_amop.h
--- b/src/include/catalog/pg_amop.h
***************
*** 56,68 ****
  CATALOG(pg_amop,2602)
  {
  	/* the index opfamily this entry is for */
! 	Oid			amopfamily BKI_ABBREV(opf);
  
  	/* operator's left input data type */
! 	Oid			amoplefttype BKI_ABBREV(lt);
  
  	/* operator's right input data type */
! 	Oid			amoprighttype BKI_ABBREV(rt);
  
  	/* operator strategy number */
  	int16		amopstrategy BKI_ABBREV(str);
--- 56,68 ----
  CATALOG(pg_amop,2602)
  {
  	/* the index opfamily this entry is for */
! 	regopf		amopfamily BKI_ABBREV(opf);
  
  	/* operator's left input data type */
! 	regtype		amoplefttype BKI_ABBREV(lt);
  
  	/* operator's right input data type */
! 	regtype		amoprighttype BKI_ABBREV(rt);
  
  	/* operator strategy number */
  	int16		amopstrategy BKI_ABBREV(str);
*************** CATALOG(pg_amop,2602)
*** 71,80 ****
  	char		amoppurpose BKI_ABBREV(pur)  BKI_DEFAULT(s);
  
  	/* the operator's pg_operator OID */
! 	Oid			amopopr BKI_ABBREV(oper);
  
  	/* the index access method this entry is for */
! 	Oid			amopmethod BKI_ABBREV(am);
  
  	/* ordering opfamily OID, or 0 if search op */
  	Oid			amopsortfamily BKI_DEFAULT(0);
--- 71,80 ----
  	char		amoppurpose BKI_ABBREV(pur)  BKI_DEFAULT(s);
  
  	/* the operator's pg_operator OID */
! 	regoper		amopopr BKI_ABBREV(oper);
  
  	/* the index access method this entry is for */
! 	regam		amopmethod BKI_ABBREV(am);
  
  	/* ordering opfamily OID, or 0 if search op */
  	Oid			amopsortfamily BKI_DEFAULT(0);
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
new file mode 100644
index afdfeb1..17ed0e2
*** a/src/include/catalog/pg_amproc.h
--- b/src/include/catalog/pg_amproc.h
***************
*** 45,57 ****
  CATALOG(pg_amproc,2603)
  {
  	/* the index opfamily this entry is for */
! 	Oid			amprocfamily BKI_ABBREV(opf);
  
  	/* procedure's left input data type */
! 	Oid			amproclefttype BKI_ABBREV(lt);
  
  	/* procedure's right input data type */
! 	Oid			amprocrighttype BKI_ABBREV(rt);
  
  	/* support procedure index */
  	int16		amprocnum BKI_ABBREV(num);
--- 45,57 ----
  CATALOG(pg_amproc,2603)
  {
  	/* the index opfamily this entry is for */
! 	regopf		amprocfamily BKI_ABBREV(opf);
  
  	/* procedure's left input data type */
! 	regtype		amproclefttype BKI_ABBREV(lt);
  
  	/* procedure's right input data type */
! 	regtype		amprocrighttype BKI_ABBREV(rt);
  
  	/* support procedure index */
  	int16		amprocnum BKI_ABBREV(num);
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
new file mode 100644
index e0e4f62..472511c
*** a/src/include/catalog/pg_opclass.h
--- b/src/include/catalog/pg_opclass.h
***************
*** 50,56 ****
  
  CATALOG(pg_opclass,2616)
  {
! 	Oid			opcmethod;		/* index access method opclass is for */
  	NameData	opcname;		/* name of this opclass */
  
  	/* namespace of this opclass */
--- 50,56 ----
  
  CATALOG(pg_opclass,2616)
  {
! 	regam		opcmethod;		/* index access method opclass is for */
  	NameData	opcname;		/* name of this opclass */
  
  	/* namespace of this opclass */
*************** CATALOG(pg_opclass,2616)
*** 59,72 ****
  	/* opclass owner */
  	Oid			opcowner BKI_DEFAULT(PGUID);
  
! 	Oid			opcfamily;		/* containing operator family */
! 	Oid			opcintype;		/* type of data indexed by opclass */
  
  	/* T if opclass is default for opcintype */
  	bool		opcdefault BKI_DEFAULT(t);
  
  	/* type of data in index, or InvalidOid */
! 	Oid			opckeytype BKI_DEFAULT(0);
  } FormData_pg_opclass;
  
  /* ----------------
--- 59,72 ----
  	/* opclass owner */
  	Oid			opcowner BKI_DEFAULT(PGUID);
  
! 	regopf		opcfamily;		/* containing operator family */
! 	regtype		opcintype;		/* type of data indexed by opclass */
  
  	/* T if opclass is default for opcintype */
  	bool		opcdefault BKI_DEFAULT(t);
  
  	/* type of data in index, or InvalidOid */
! 	regtype		opckeytype BKI_DEFAULT(0);
  } FormData_pg_opclass;
  
  /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
new file mode 100644
index fe6b660..8ca7621
*** a/src/include/catalog/pg_operator.h
--- b/src/include/catalog/pg_operator.h
*************** CATALOG(pg_operator,2617)
*** 50,62 ****
  	bool		oprcanhash BKI_DEFAULT(f);
  
  	/* left arg type, or 0 if 'l' oprkind */
! 	Oid			oprleft;
  
  	/* right arg type, or 0 if 'r' oprkind */
! 	Oid			oprright;
  
  	/* result datatype */
! 	Oid			oprresult;
  
  	/* OID of commutator oper, or 0 if none */
  	Oid			oprcom BKI_DEFAULT(0);
--- 50,62 ----
  	bool		oprcanhash BKI_DEFAULT(f);
  
  	/* left arg type, or 0 if 'l' oprkind */
! 	regtype		oprleft BKI_DEFAULT(0);
  
  	/* right arg type, or 0 if 'r' oprkind */
! 	regtype		oprright BKI_DEFAULT(0);
  
  	/* result datatype */
! 	regtype		oprresult;
  
  	/* OID of commutator oper, or 0 if none */
  	Oid			oprcom BKI_DEFAULT(0);
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
new file mode 100644
index b683770..2f410b4
*** a/src/include/catalog/pg_opfamily.h
--- b/src/include/catalog/pg_opfamily.h
***************
*** 30,36 ****
  
  CATALOG(pg_opfamily,2753)
  {
! 	Oid			opfmethod;		/* index access method opfamily is for */
  	NameData	opfname;		/* name of this opfamily */
  
  	/* namespace of this opfamily */
--- 30,36 ----
  
  CATALOG(pg_opfamily,2753)
  {
! 	regam		opfmethod;		/* index access method opfamily is for */
  	NameData	opfname;		/* name of this opfamily */
  
  	/* namespace of this opfamily */
#3Peter Eisentraut
peter.eisentraut@2ndquadrant.com
In reply to: John Naylor (#2)
Re: WIP: a way forward on bootstrap data

On 12/13/17 04:06, John Naylor wrote:

There doesn't seem to be any interest in bootstrap data at the moment,
but rather than give up just yet, I've added a couple features to make
a data migration more compelling:

I took a brief look at your patches, and there appear to be a number of
good cleanups in there at least. But could you please send patches in
git format-patch format with commit messages, so we don't have to guess
what each patch does?

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#4John Naylor
jcnaylor@gmail.com
In reply to: Peter Eisentraut (#3)
10 attachment(s)
Re: WIP: a way forward on bootstrap data

On 12/13/17, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:

On 12/13/17 04:06, John Naylor wrote:

There doesn't seem to be any interest in bootstrap data at the moment,
but rather than give up just yet, I've added a couple features to make
a data migration more compelling:

I took a brief look at your patches, and there appear to be a number of
good cleanups in there at least. But could you please send patches in
git format-patch format with commit messages, so we don't have to guess
what each patch does?

Thanks for taking a look and for pointing me to git format-patch.
That's much nicer than trying to keep emails straight. I've attached a
new patchset.

Note that 4-7 and 9-10 are units as far as the build is concerned.
Meaning, once 4 is applied, the build is broken until 7 is applied.
Also, postgres.bki won't diff 100% clean with the master branch
because of some useless quotes in the latter.

One thing that occured to me while looking over patch 0004 again: It's
now a bit uglier to handle indexing.h and toasting.h. I think it might
be cleaner to keep those statements in the header of the catalog they
refer to. That has the additional benefit of making the headers the
Single Point of Truth for a catalog schema.

TODO:
-Docs and README
-Finish SQL generation patch
-Consider generating pg_type #defines

-John Naylor

Attachments:

0001-Fix-typos-and-oversights-in-catalog-headers_v3.patchtext/x-patch; charset=US-ASCII; name=0001-Fix-typos-and-oversights-in-catalog-headers_v3.patchDownload
From 40038f21d863f1e206819284a264ce55773a3236 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 11:52:37 +0700
Subject: [PATCH 01/10] Fix typos and oversights in catalog headers

---
 src/backend/catalog/Catalog.pm             |  3 ++-
 src/backend/catalog/Makefile               |  2 +-
 src/backend/utils/Gen_fmgrtab.pl           |  3 ++-
 src/include/catalog/pg_partitioned_table.h |  2 +-
 src/include/catalog/pg_sequence.h          | 10 ++++++++++
 src/include/catalog/pg_subscription_rel.h  |  5 +----
 6 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 54f8353..0b260ec 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,7 +36,8 @@ sub Catalogs
 		'int64'         => 'int8',
 		'Oid'           => 'oid',
 		'NameData'      => 'name',
-		'TransactionId' => 'xid');
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
 
 	foreach my $input_file (@_)
 	{
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index fd33426..30ca509 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -45,7 +45,7 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
-	pg_subscription_rel.h toasting.h indexing.h \
+	pg_subscription_rel.h \
 	toasting.h indexing.h \
     )
 
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index ee89d50..c0efc07 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -2,7 +2,8 @@
 #-------------------------------------------------------------------------
 #
 # Gen_fmgrtab.pl
-#    Perl script that generates fmgroids.h and fmgrtab.c from pg_proc.h
+#    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
+#    from pg_proc.h
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 525e541..731147e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -10,7 +10,7 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.sh script reads this file and generates .bki
+ *	  the genbki.pl script reads this file and generates .bki
  *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index 8ae6b71..6de54bb 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -1,3 +1,13 @@
+/* -------------------------------------------------------------------------
+ *
+ * pg_sequence.h
+ *	  definition of the system "sequence" relation (pg_sequence)
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * -------------------------------------------------------------------------
+ */
 #ifndef PG_SEQUENCE_H
 #define PG_SEQUENCE_H
 
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 991ca9d..5748297 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -23,15 +23,12 @@
  */
 #define SubscriptionRelRelationId			6102
 
-/* Workaround for genbki not knowing about XLogRecPtr */
-#define pg_lsn XLogRecPtr
-
 CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 {
 	Oid			srsubid;		/* Oid of subscription */
 	Oid			srrelid;		/* Oid of relation */
 	char		srsubstate;		/* state of the relation in subscription */
-	pg_lsn		srsublsn;		/* remote lsn of the state change used for
+	XLogRecPtr	srsublsn;		/* remote lsn of the state change used for
 								 * synchronization coordination */
 } FormData_pg_subscription_rel;
 
-- 
2.7.4

0002-Cleanup-distprep-scripts_v3.patchtext/x-patch; charset=US-ASCII; name=0002-Cleanup-distprep-scripts_v3.patchDownload
From b706c2337865d28bc56bf2ae3f5e949921bc85d9 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 11:52:37 +0700
Subject: [PATCH 02/10] Cleanup distprep scripts

Be more consistent style-wise, change a confusing variable name, fix perltidy junk.
---
 src/backend/catalog/Catalog.pm   | 14 +++++++-------
 src/backend/catalog/genbki.pl    | 38 +++++++++++++++++++++-----------------
 src/backend/utils/Gen_fmgrtab.pl |  5 +++--
 3 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 0b260ec..6bc14d2 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -163,7 +163,7 @@ sub Catalogs
 				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
 				$catalog{rowtype_oid} =
 				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 'True' : '';
+				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
 			elsif ($declaring_attributes)
@@ -176,7 +176,7 @@ sub Catalogs
 				}
 				else
 				{
-					my %row;
+					my %column;
 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
 					die "parse error ($input_file)" unless $attname;
 					if (exists $RENAME_ATTTYPE{$atttype})
@@ -189,18 +189,18 @@ sub Catalogs
 						$atttype .= '[]';            # variable-length only
 					}
 
-					$row{'type'} = $atttype;
-					$row{'name'} = $attname;
+					$column{type} = $atttype;
+					$column{name} = $attname;
 
 					if (defined $attopt)
 					{
 						if ($attopt eq 'BKI_FORCE_NULL')
 						{
-							$row{'forcenull'} = 1;
+							$column{forcenull} = 1;
 						}
 						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 						{
-							$row{'forcenotnull'} = 1;
+							$column{forcenotnull} = 1;
 						}
 						else
 						{
@@ -208,7 +208,7 @@ sub Catalogs
 "unknown column option $attopt on column $attname";
 						}
 					}
-					push @{ $catalog{columns} }, \%row;
+					push @{ $catalog{columns} }, \%column;
 				}
 			}
 		}
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 256a9c9..4bd614f 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 my @input_files;
-our @include_path;
+my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -105,7 +105,7 @@ print $bki "# PostgreSQL $major_version\n";
 my %schemapg_entries;
 my @tables_needing_macros;
 my %regprocoids;
-our @types;
+my @types;
 
 # produce output, one catalog at a time
 foreach my $catname (@{ $catalogs->{names} })
@@ -124,7 +124,8 @@ foreach my $catname (@{ $catalogs->{names} })
 	my $first = 1;
 
 	print $bki " (\n";
-	foreach my $column (@{ $catalog->{columns} })
+	my $schema = $catalog->{columns};
+	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
@@ -150,8 +151,9 @@ foreach my $catname (@{ $catalogs->{names} })
 	}
 	print $bki "\n )\n";
 
-   # open it, unless bootstrap case (create bootstrap does this automatically)
-	if ($catalog->{bootstrap} eq '')
+	# Open it, unless bootstrap case (create bootstrap does this
+	# automatically)
+	if (!$catalog->{bootstrap})
 	{
 		print $bki "open $catname\n";
 	}
@@ -169,21 +171,23 @@ foreach my $catname (@{ $catalogs->{names} })
 			  Catalog::SplitDataLine($row->{bki_values});
 
 			# Perform required substitutions on fields
-			foreach my $att (keys %bki_values)
+			foreach my $column (@$schema)
 			{
+				my $attname = $column->{name};
+				my $atttype = $column->{type};
 
 				# Substitute constant values we acquired above.
 				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$att} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$att} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
 				# Replace regproc columns' values with OIDs.
 				# If we don't have a unique value to substitute,
 				# just do nothing (regprocin will complain).
-				if ($bki_attr{$att}->{type} eq 'regproc')
+				if ($atttype eq 'regproc')
 				{
-					my $procoid = $regprocoids{ $bki_values{$att} };
-					$bki_values{$att} = $procoid
+					my $procoid = $regprocoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $procoid
 					  if defined($procoid) && $procoid ne 'MULTIPLE';
 				}
 			}
@@ -215,7 +219,8 @@ foreach my $catname (@{ $catalogs->{names} })
 			printf $bki "insert %s( %s )\n", $oid,
 			  join(' ', @bki_values{@attnames});
 
-		   # Write comments to postgres.description and postgres.shdescription
+			# Write comments to postgres.description and
+			# postgres.shdescription
 			if (defined $row->{descr})
 			{
 				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
@@ -240,11 +245,10 @@ foreach my $catname (@{ $catalogs->{names} })
 
 			# Currently, all bootstrapped relations also need schemapg.h
 			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if $table->{schema_macro} ne 'True';
+			next if !$table->{schema_macro};
 
 			$schemapg_entries{$table_name} = [];
 			push @tables_needing_macros, $table_name;
-			my $is_bootstrap = $table->{bootstrap};
 
 			# Generate entries for user attributes.
 			my $attnum       = 0;
@@ -259,7 +263,7 @@ foreach my $catname (@{ $catalogs->{names} })
 				$priornotnull &= ($row->{attnotnull} eq 't');
 
 				# If it's bootstrapped, put an entry in postgres.bki.
-				if ($is_bootstrap eq ' bootstrap')
+				if ($table->{bootstrap})
 				{
 					bki_insert($row, @attnames);
 				}
@@ -276,7 +280,7 @@ foreach my $catname (@{ $catalogs->{names} })
 
 			# Generate entries for system attributes.
 			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($is_bootstrap eq ' bootstrap')
+			if ($table->{bootstrap})
 			{
 				$attnum = 0;
 				my @SYS_ATTRS = (
@@ -296,7 +300,7 @@ foreach my $catname (@{ $catalogs->{names} })
 
 					# some catalogs don't have oids
 					next
-					  if $table->{without_oids} eq ' without_oids'
+					  if $table->{without_oids}
 						  && $row->{attname} eq 'oid';
 
 					bki_insert($row, @attnames);
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index c0efc07..a51a755 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -57,6 +57,8 @@ die "No include path; you must specify -I at least once.\n" if !@include_path;
 
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
+my $INTERNALlanguageId =
+	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
 # Read all the data from the include/catalog files.
 my $catalogs = Catalog::Catalogs($infile);
@@ -78,8 +80,7 @@ foreach my $row (@$data)
 	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
 
 	# Select out just the rows for internal-language procedures.
-	# Note assumption here that INTERNALlanguageId is 12.
-	next if $bki_values{prolang} ne '12';
+	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
 	  { oid    => $row->{oid},
-- 
2.7.4

0003-Remove-hard-coded-schema-knowledge-about-pg_attri_v3.patchtext/x-patch; charset=US-ASCII; name=0003-Remove-hard-coded-schema-knowledge-about-pg_attri_v3.patchDownload
From a43dd20557d9f137ab412279694e2e6aee45ef15 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 12:06:21 +0700
Subject: [PATCH 03/10] Remove hard-coded schema knowledge about pg_attribute
 from genbki.pl

Label a column's default value in the catalog header. Add a new function to Catalog.pm to fill in a tuple with default values. It will complain loudly if it can't find either a default or a given value, so change the signature of emit_pgattr_row() so we can pass a partially built tuple to it. Format schema macro entries according to their types. Commit 8137f2c32322c624e0431fac1621e8e9315202f9 labeled variable length columns. Expose that label so we can exclude those columns from schema macros in a general fashion. This means slightly less code maintenance, but more importantly it's a proving ground for mechanisms used in later commits.
---
 src/backend/catalog/Catalog.pm     |  49 +++++++++++-
 src/backend/catalog/genbki.pl      | 158 ++++++++++++++++++-------------------
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_attribute.h |  22 +++---
 4 files changed, 140 insertions(+), 92 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 6bc14d2..246aa36 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -44,6 +44,7 @@ sub Catalogs
 		my %catalog;
 		$catalog{columns} = [];
 		$catalog{data}    = [];
+		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -169,7 +170,14 @@ sub Catalogs
 			elsif ($declaring_attributes)
 			{
 				next if (/^{|^$/);
-				next if (/^#/);
+				if (/^#/)
+				{
+					if (/^#ifdef\s+CATALOG_VARLEN/)
+					{
+						$is_varlen = 1;
+					}
+					next;
+				}
 				if (/^}/)
 				{
 					undef $declaring_attributes;
@@ -177,6 +185,10 @@ sub Catalogs
 				else
 				{
 					my %column;
+					if ($is_varlen)
+					{
+						$column{is_varlen} = 1;
+					}
 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
 					die "parse error ($input_file)" unless $attname;
 					if (exists $RENAME_ATTTYPE{$atttype})
@@ -186,7 +198,7 @@ sub Catalogs
 					if ($attname =~ /(.*)\[.*\]/)    # array attribute
 					{
 						$attname = $1;
-						$atttype .= '[]';            # variable-length only
+						$atttype .= '[]';
 					}
 
 					$column{type} = $atttype;
@@ -202,6 +214,10 @@ sub Catalogs
 						{
 							$column{forcenotnull} = 1;
 						}
+						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+						{
+							$column{default} = $1;
+						}
 						else
 						{
 							die
@@ -240,6 +256,35 @@ sub SplitDataLine
 	return @result;
 }
 
+# Fill in default values of a record using the given schema. It's the
+# caller's responsibility to specify other values beforehand.
+sub AddDefaultValues
+{
+	my ($row, $schema, $catname) = @_;
+
+	die "Schema undefined for $catname\n"
+	  if !defined $schema;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if (defined $row->{$attname})
+		{
+			;
+		}
+		elsif (defined $column->{default})
+		{
+			$row->{$attname} = $column->{default};
+		}
+		else
+		{
+			die "Unspecified value in $catname.$attname\n";
+		}
+	}
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 4bd614f..1876399 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -119,7 +119,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my %bki_attr;
 	my @attnames;
 	my $first = 1;
 
@@ -129,7 +128,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		$bki_attr{$attname} = $column;
 		push @attnames, $attname;
 
 		if (!$first)
@@ -257,25 +255,25 @@ foreach my $catname (@{ $catalogs->{names} })
 			foreach my $attr (@user_attrs)
 			{
 				$attnum++;
-				my $row = emit_pgattr_row($table_name, $attr, $priornotnull);
-				$row->{attnum}        = $attnum;
-				$row->{attstattarget} = '-1';
-				$priornotnull &= ($row->{attnotnull} eq 't');
+				my %row;
+				$row{attnum}   = $attnum;
+				$row{attrelid} = $table->{relation_oid};
+
+				emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
+				$priornotnull &= ($row{attnotnull} eq 't');
 
 				# If it's bootstrapped, put an entry in postgres.bki.
 				if ($table->{bootstrap})
 				{
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 
 				# Store schemapg entries for later.
-				$row =
-				  emit_schemapg_row($row,
-					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
-				push @{ $schemapg_entries{$table_name} }, '{ '
-				  . join(
-					', ',             grep { defined $_ }
-					  map $row->{$_}, @attnames) . ' }';
+				emit_schemapg_row(\%row, $schema);
+				push @{ $schemapg_entries{$table_name} },
+				    '{ '
+				  . join(', ', grep { defined $_ } @row{@attnames})
+				  . ' }';
 			}
 
 			# Generate entries for system attributes.
@@ -294,16 +292,19 @@ foreach my $catname (@{ $catalogs->{names} })
 				foreach my $attr (@SYS_ATTRS)
 				{
 					$attnum--;
-					my $row = emit_pgattr_row($table_name, $attr, 1);
-					$row->{attnum}        = $attnum;
-					$row->{attstattarget} = '0';
+					my %row;
+					$row{attnum}        = $attnum;
+					$row{attrelid}      = $table->{relation_oid};
+					$row{attstattarget} = '0';
+
+					emit_pgattr_row(\%row, $attr, 1, $schema);
 
 					# some catalogs don't have oids
 					next
 					  if $table->{without_oids}
-						  && $row->{attname} eq 'oid';
+						  && $row{attname} eq 'oid';
 
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 			}
 		}
@@ -380,19 +381,17 @@ exit 0;
 #################### Subroutines ########################
 
 
-# Given a system catalog name and a reference to a key-value pair corresponding
-# to the name and type of a column, generate a reference to a hash that
-# represents a pg_attribute entry.  We must also be told whether preceding
+# Given the schema of pg_attribute, generate an entry for it using information
+# about the attribute it describes.  Any value that is not handled here
+# must be supplied by the caller. We must also be told whether preceding
 # columns were all not-null.
 sub emit_pgattr_row
 {
-	my ($table_name, $attr, $priornotnull) = @_;
+	my ($row, $attr, $priornotnull, $pgattr_schema) = @_;
 	my $attname = $attr->{name};
 	my $atttype = $attr->{type};
-	my %row;
 
-	$row{attrelid} = $catalogs->{$table_name}->{relation_oid};
-	$row{attname}  = $attname;
+	$row->{attname} = $attname;
 
 	# Adjust type name for arrays: foo[] becomes _foo
 	# so we can look it up in pg_type
@@ -406,23 +405,23 @@ sub emit_pgattr_row
 	{
 		if (defined $type->{typname} && $type->{typname} eq $atttype)
 		{
-			$row{atttypid}   = $type->{oid};
-			$row{attlen}     = $type->{typlen};
-			$row{attbyval}   = $type->{typbyval};
-			$row{attstorage} = $type->{typstorage};
-			$row{attalign}   = $type->{typalign};
+			$row->{atttypid}   = $type->{oid};
+			$row->{attlen}     = $type->{typlen};
+			$row->{attbyval}   = $type->{typbyval};
+			$row->{attstorage} = $type->{typstorage};
+			$row->{attalign}   = $type->{typalign};
 
 			# set attndims if it's an array type
-			$row{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
-			$row{attcollation} = $type->{typcollation};
+			$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
+			$row->{attcollation} = $type->{typcollation};
 
 			if (defined $attr->{forcenotnull})
 			{
-				$row{attnotnull} = 't';
+				$row->{attnotnull} = 't';
 			}
 			elsif (defined $attr->{forcenull})
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			elsif ($priornotnull)
 			{
@@ -431,7 +430,7 @@ sub emit_pgattr_row
 				# fixed-width and prior columns are all NOT NULL ---
 				# compare DefineAttr in bootstrap.c. oidvector and
 				# int2vector are also treated as not-nullable.
-				$row{attnotnull} =
+				$row->{attnotnull} =
 				    $type->{typname} eq 'oidvector'   ? 't'
 				  : $type->{typname} eq 'int2vector'  ? 't'
 				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
@@ -440,25 +439,12 @@ sub emit_pgattr_row
 			}
 			else
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			last;
 		}
 	}
-
-	# Add in default values for pg_attribute
-	my %PGATTR_DEFAULTS = (
-		attcacheoff   => '-1',
-		atttypmod     => '-1',
-		atthasdef     => 'f',
-		attidentity   => '',
-		attisdropped  => 'f',
-		attislocal    => 't',
-		attinhcount   => '0',
-		attacl        => '_null_',
-		attoptions    => '_null_',
-		attfdwoptions => '_null_');
-	return { %PGATTR_DEFAULTS, %row };
+	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
 }
 
 # Write a pg_attribute entry to postgres.bki
@@ -467,8 +453,7 @@ sub bki_insert
 	my $row        = shift;
 	my @attnames   = @_;
 	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', map { $_ eq '' ? '""' : $_ } map $row->{$_},
-	  @attnames;
+	my $bki_values = join ' ', map $row->{$_}, @attnames;
 	printf $bki "insert %s( %s )\n", $oid, $bki_values;
 }
 
@@ -476,34 +461,49 @@ sub bki_insert
 # quite identical, to the corresponding values in postgres.bki.
 sub emit_schemapg_row
 {
-	my $row        = shift;
-	my @bool_attrs = @_;
-
-	# Replace empty string by zero char constant
-	$row->{attidentity} ||= '\0';
-
-	# Supply appropriate quoting for these fields.
-	$row->{attname}     = q|{"| . $row->{attname} . q|"}|;
-	$row->{attstorage}  = q|'| . $row->{attstorage} . q|'|;
-	$row->{attalign}    = q|'| . $row->{attalign} . q|'|;
-	$row->{attidentity} = q|'| . $row->{attidentity} . q|'|;
-
-	# We don't emit initializers for the variable length fields at all.
-	# Only the fixed-size portions of the descriptors are ever used.
-	delete $row->{attacl};
-	delete $row->{attoptions};
-	delete $row->{attfdwoptions};
-
-	# Expand booleans from 'f'/'t' to 'false'/'true'.
-	# Some values might be other macros (eg FLOAT4PASSBYVAL), don't change.
-	foreach my $attr (@bool_attrs)
+	my $row           = shift;
+	my $pgattr_schema = shift;
+
+	foreach my $column (@$pgattr_schema)
 	{
-		$row->{$attr} =
-		    $row->{$attr} eq 't' ? 'true'
-		  : $row->{$attr} eq 'f' ? 'false'
-		  :                        $row->{$attr};
+		my $pgattr_name = $column->{name};
+		my $pgattr_type = $column->{type};
+
+		# Supply appropriate quoting for these fields.
+		if ($pgattr_type eq 'name')
+		{
+			$row->{$pgattr_name} = q|{"| . $row->{$pgattr_name} . q|"}|;
+		}
+		elsif ($pgattr_type eq 'char')
+		{
+
+			# Replace empty string by zero char constant
+			if ($row->{$pgattr_name} eq q|""|)
+			{
+				$row->{$pgattr_name} = '\0';
+			}
+
+			$row->{$pgattr_name} = q|'| . $row->{$pgattr_name} . q|'|;
+		}
+
+		# Expand booleans from 'f'/'t' to 'false'/'true'.
+		# Some values might be other macros (eg FLOAT4PASSBYVAL),
+		# don't change.
+		elsif ($pgattr_type eq 'bool')
+		{
+			$row->{$pgattr_name} =
+			    $row->{$pgattr_name} eq 't' ? 'true'
+			  : $row->{$pgattr_name} eq 'f' ? 'false'
+			  :                               $row->{$pgattr_name};
+		}
+
+		# We don't emit initializers for the variable length fields at all.
+		# Only the fixed-size portions of the descriptors are ever used.
+		if ($column->{is_varlen})
+		{
+			delete $row->{$pgattr_name};
+		}
 	}
-	return $row;
 }
 
 sub usage
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index a2cb313..71fc579 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -31,6 +31,9 @@
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
 
+/* Specifies a default value for a catalog field */
+#define BKI_DEFAULT(value)
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index bcf28e8..5436a90 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -54,7 +54,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * that no value has been explicitly set for this column, so ANALYZE
 	 * should use the default setting.
 	 */
-	int32		attstattarget;
+	int32		attstattarget BKI_DEFAULT(-1);
 
 	/*
 	 * attlen is a copy of the typlen field from pg_type for this attribute.
@@ -90,7 +90,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * descriptor, we may then update attcacheoff in the copies. This speeds
 	 * up the attribute walking process.
 	 */
-	int32		attcacheoff;
+	int32		attcacheoff BKI_DEFAULT(-1);
 
 	/*
 	 * atttypmod records type-specific data supplied at table creation time
@@ -98,7 +98,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * type-specific input and output functions as the third argument. The
 	 * value will generally be -1 for types that do not need typmod.
 	 */
-	int32		atttypmod;
+	int32		atttypmod BKI_DEFAULT(-1);
 
 	/*
 	 * attbyval is a copy of the typbyval field from pg_type for this
@@ -131,13 +131,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	bool		attnotnull;
 
 	/* Has DEFAULT value or not */
-	bool		atthasdef;
+	bool		atthasdef BKI_DEFAULT(f);
 
 	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
-	char		attidentity;
+	char		attidentity BKI_DEFAULT("");
 
 	/* Is dropped (ie, logically invisible) or not */
-	bool		attisdropped;
+	bool		attisdropped BKI_DEFAULT(f);
 
 	/*
 	 * This flag specifies whether this column has ever had a local
@@ -148,10 +148,10 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * not dropped by a parent's DROP COLUMN even if this causes the column's
 	 * attinhcount to become zero.
 	 */
-	bool		attislocal;
+	bool		attislocal BKI_DEFAULT(t);
 
 	/* Number of times inherited from direct parent relation(s) */
-	int32		attinhcount;
+	int32		attinhcount BKI_DEFAULT(0);
 
 	/* attribute's collation */
 	Oid			attcollation;
@@ -160,13 +160,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	/* NOTE: The following fields are not present in tuple descriptors. */
 
 	/* Column-level access permissions */
-	aclitem		attacl[1];
+	aclitem		attacl[1] BKI_DEFAULT(_null_);
 
 	/* Column-level options */
-	text		attoptions[1];
+	text		attoptions[1] BKI_DEFAULT(_null_);
 
 	/* Column-level FDW options */
-	text		attfdwoptions[1];
+	text		attfdwoptions[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_attribute;
 
-- 
2.7.4

0004-Data-conversion-infrastructure_v3.patchtext/x-patch; charset=US-ASCII; name=0004-Data-conversion-infrastructure_v3.patchDownload
From 79ffa06c5d7e161c4976132c566f1548ef494ea8 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 13:27:41 +0700
Subject: [PATCH 04/10] Data conversion infrastructure

convert_header2dat.pl turns DATA()/(SH)DESCR() statements into serialized Perl data structures in pg_*.dat files, preserving comments along the way. It contains its own modified version of Catalogs() from Catalog.pm, so remove data parsing from the original Catalogs() function and rename it to ParseHeader() to reflect its new, limited role of extracting the schema info from a header. The new data files are now handled by the function ParseData(). This is a one-off script, but it's committed to the repo for third parties to convert their own catalog data.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard format. It writes attributes in order, strips out values that match defaults or are otherwise computable, preserves comments and folds consecutive blank lines. The meta-attributes oid and (sh)descr are on their own line, if present.

Add the ability to label columns in the source data by an abbreviation rather than the full name, in order to shorten the entries. This required teaching ParseHeader() to handle multiple column options.

Add default values and abbreviations to a few catalog headers. More could be done here, but this is enough for a first pass.

Compute pg_proc.pronargs and (if possible) pg_proc.prosrc, rather than storing directly.
---
 src/backend/catalog/Catalog.pm            | 216 ++++++++--------
 src/include/catalog/convert_header2dat.pl | 370 ++++++++++++++++++++++++++++
 src/include/catalog/pg_aggregate.h        |  38 +--
 src/include/catalog/pg_amop.h             |  31 ++-
 src/include/catalog/pg_amproc.h           |  19 +-
 src/include/catalog/pg_authid.h           |  43 +++-
 src/include/catalog/pg_class.h            | 138 ++++++++---
 src/include/catalog/pg_opclass.h          |  17 +-
 src/include/catalog/pg_operator.h         |  56 +++--
 src/include/catalog/pg_opfamily.h         |   8 +-
 src/include/catalog/pg_proc.h             | 116 ++++++---
 src/include/catalog/pg_type.h             |  47 ++--
 src/include/catalog/rewrite_dat.pl        | 392 ++++++++++++++++++++++++++++++
 13 files changed, 1232 insertions(+), 259 deletions(-)
 create mode 100644 src/include/catalog/convert_header2dat.pl
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 246aa36..adb0c86 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
@@ -16,17 +16,14 @@ package Catalog;
 use strict;
 use warnings;
 
-require Exporter;
-our @ISA       = qw(Exporter);
-our @EXPORT    = ();
-our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
-
 # Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Returns a data structure describing the schemas of the system catalogs.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	my (%catalogs, $catname, $declaring_attributes);
 	$catalogs{names} = [];
+	$catalogs{toasting} = [];
+	$catalogs{indexing} = [];
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -43,13 +40,11 @@ sub Catalogs
 	{
 		my %catalog;
 		$catalog{columns} = [];
-		$catalog{data}    = [];
 		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
 		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
 
 		# Scan the input file.
 		while (<$ifh>)
@@ -78,68 +73,21 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
-			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
+				# Clear last catname so we don't overwrite that
+				# catalog's schema with a blank one.
+				undef $catname;
 
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalogs{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalogs{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -147,7 +95,7 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalogs{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
@@ -189,8 +137,12 @@ sub Catalogs
 					{
 						$column{is_varlen} = 1;
 					}
-					my ($atttype, $attname, $attopt) = split /\s+/, $_;
-					die "parse error ($input_file)" unless $attname;
+					my @attribute = split /\s+/, $_;
+					my $atttype = shift @attribute;
+					my $attname = shift @attribute;
+					die "parse error ($input_file)"
+						unless ($attname and $atttype);
+
 					if (exists $RENAME_ATTTYPE{$atttype})
 					{
 						$atttype = $RENAME_ATTTYPE{$atttype};
@@ -204,7 +156,7 @@ sub Catalogs
 					$column{type} = $atttype;
 					$column{name} = $attname;
 
-					if (defined $attopt)
+					foreach my $attopt (@attribute)
 					{
 						if ($attopt eq 'BKI_FORCE_NULL')
 						{
@@ -218,42 +170,77 @@ sub Catalogs
 						{
 							$column{default} = $1;
 						}
+						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
+						{
+							$column{abbrev} = $1;
+						}
 						else
 						{
 							die
 "unknown column option $attopt on column $attname";
 						}
+						if ($column{forcenull} and $column{forcenotnull})
+						{
+							die "$attname is forced both null and not null";
+						}
 					}
 					push @{ $catalog{columns} }, \%column;
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
+		# Prevent toasting and indexing blank %catalog vars from
+		# over-writing the last real catalog.
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
 		close $ifh;
 	}
 	return \%catalogs;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Takes an array of names of data files containing Perl data structure
+# literals. This function simply calls eval on the whole string.
+# XXX This is much slower than parsing DATA() statements was.
+# Is there a better way?
+sub ParseData
+{
+	my %catalog_data;
+	foreach my $input_file (@_)
+	{
+		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
+		my $raw_data = do
+		{
+			local $/ = undef;
+			open my $ifh, "<", $input_file || die "$input_file: $!";
+			<$ifh>;
+		};
+		my $parsed_data;
+		eval '$parsed_data = ' . $raw_data;
+
+		# XXX: Is this enough error reporting?
+		print "Error : $@\n" if $@;
+
+		$catalog_data{$filename} = $parsed_data;
+	}
+	return \%catalog_data;
+}
+
+# Copy values from abbreviated keys to full keys.
+sub ResolveColumnAbbrevs
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and defined $row->{$abbrev})
+		{
+			$row->{$attname} = $row->{$abbrev};
+		}
+	}
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -280,11 +267,43 @@ sub AddDefaultValues
 		}
 		else
 		{
-			die "Unspecified value in $catname.$attname\n";
+			printf "Unspecified value in $catname.$attname\n";
+
+			# Give user a clue where the problem was.
+			print "Showing other values for context:\n";
+			my $msg;
+			foreach (keys %{$row})
+			{
+				$msg .= "$_ => $row->{$_}, ";
+			}
+			die "$msg\n";
 		}
 	}
 }
 
+# Some pg_proc fields are computed as part of forming a full tuple.
+sub ComputePgProcFields
+{
+	my $row = shift;
+
+	# pronargs is computed by counting proargtypes.
+	if ($row->{proargtypes})
+	{
+		my @argtypes = split /\s+/, $row->{proargtypes};
+		$row->{pronargs} = scalar(@argtypes);
+	}
+	else
+	{
+		$row->{pronargs} = '0';
+	}
+
+	# If prosrc doesn't exist, it must be a copy of proname.
+	if (!exists $row->{prosrc})
+	{
+		$row->{prosrc} = $row->{proname}
+	}
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
@@ -298,7 +317,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -330,22 +348,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index 0000000..d61cdc8
--- /dev/null
+++ b/src/include/catalog/convert_header2dat.pl
@@ -0,0 +1,370 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# convert_header2dat.pl
+#    Perl script that reads BKI data from the catalog header files
+#    and writes them out as native perl data structures. Commments and
+#    white space are preserved. Some functions are loosely copied from
+#    src/backend/catalog/Catalog.pm, whose equivalents will be removed.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/convert_header2dat.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+# No $VARs - we add our own later.
+$Data::Dumper::Terse = 1;
+
+my @input_files;
+my $output_path = '';
+my $major_version;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.h$/)
+	{
+		die "Input files need to be header files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Read all the input header files into internal data structures
+# XXX This script is not robust against non-catalog headers. It's best
+# to pass it the same list found in backend/catalog/Makefile.
+my $catalogs = catalogs(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	# First, see if the header has any data. This is necessary
+	# not only because of catalogs with no data, but also because some
+	# values coming down the pike are comments or newlines.
+	my $found_one = 0;
+	foreach my $data (@{ $catalog->{data} })
+	{
+		if (ref $data eq 'HASH')
+		{
+			$found_one = 1;
+		}
+	}
+	next if !$found_one;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+		push @attnames, $attname;
+	}
+
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write out data file.
+	print $dat "# $catname.dat\n";
+
+	# Note: Put extra newlines after brackets because otherwise
+	# some catalogs have newlines and some don't, because of whitespace
+	# around DATA() comments.
+	print $dat "[\n\n";
+
+	foreach my $data (@{ $catalog->{data} })
+	{
+
+		# Either a newline or comment - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			# Split line into tokens without interpreting their meaning.
+			my %bki_values;
+			@bki_values{@attnames} = split_data_line($data->{bki_values});
+
+			# Flatten data hierarchy.
+			delete $data->{bki_values};
+			my %flat_data = (%$data, %bki_values);
+
+			# Strip double quotes for readability. Most will be put
+			# back in when writing postgres.bki
+			foreach (values %flat_data)
+			{
+				s/"//g;
+			}
+
+			print $dat Dumper(\%flat_data);
+			print $dat ",\n";
+		}
+	}
+	print $dat "\n]\n";
+}
+
+
+# This function is a heavily modified version of its former namesake
+# in Catalog.pm. There's probably some dead code here. It's not worth removing.
+sub catalogs
+{
+	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	$catalogs{names} = [];
+
+	# There are a few types which are given one name in the C source, but a
+	# different name at the SQL level.  These are enumerated here.
+	my %RENAME_ATTTYPE = (
+		'int16'         => 'int2',
+		'int32'         => 'int4',
+		'int64'         => 'int8',
+		'Oid'           => 'oid',
+		'NameData'      => 'name',
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
+
+	foreach my $input_file (@_)
+	{
+		my %catalog;
+		$catalog{columns} = [];
+		$catalog{data}    = [];
+		my $is_varlen     = 0;
+		my $saving_comments = 0;
+
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			# Determine that we're in the DATA section and should
+			# Start saving DATA comments.
+			if (/(\/|\s)\*\s+initial contents of pg_/)
+			{
+				$saving_comments = 1;
+			}
+
+			if ($saving_comments)
+			{
+				if ( m;^(/|\s+)\*\s+(.+); )
+				{
+					my $comment = $2;
+
+					# Ugly way to strip */ off the end
+					if ($comment =~ m;\*/$;)
+					{
+						$comment =~ s/.{2}$//;
+					}
+
+					# Turn C-style comment into Perl-style.
+
+					# Filter out comments we know we don't want.
+					if ($comment !~ /^-+$/
+						and $comment !~ /initial contents of pg/
+						and $comment !~ /PG_\w+_H/)
+					{
+						# Trim whitespace.
+						$comment =~ s/^\s+//;
+						$comment =~ s/\s+$//;
+						push @{ $catalog{data} }, "# $comment";
+					}
+				}
+				elsif (/^$/)
+				{
+					# Preserve blank lines
+					# Newline gets added by caller.
+					push @{ $catalog{data} }, '';
+				}
+			}
+			else
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+			}
+			# Remember input line number for later.
+			my $input_line_number = $.;
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+
+			# Push the data into the appropriate data structure.
+			if (
+				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			{
+				if ($2)
+				{
+					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+				}
+				else
+				{
+					push @{ $catalog{data} }, { bki_values => $3 };
+				}
+			}
+			elsif (/^DESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# this tests if most recent line is not a DATA() statement
+				if (ref $most_recent ne 'HASH')
+				{
+					die "DESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "DESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{descr} = $1;
+				}
+			}
+			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# this tests if most recent line is not a DATA() statement
+				if (ref $most_recent ne 'HASH')
+				{
+					die
+					  "SHDESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "SHDESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{shdescr} = $1;
+				}
+			}
+			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			{
+				$catname = $1;
+				$catalog{relation_oid} = $2;
+
+				# Store pg_* catalog names in the same order we receive them
+				push @{ $catalogs{names} }, $catname;
+
+				$declaring_attributes = 1;
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
+				next if (/^#/);
+				if (/^}/)
+				{
+					undef $declaring_attributes;
+				}
+				else
+				{
+					my %column;
+					if ($is_varlen)
+					{
+						$column{is_varlen} = 1;
+					}
+					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+					die "parse error ($input_file)" unless $attname;
+					if (exists $RENAME_ATTTYPE{$atttype})
+					{
+						$atttype = $RENAME_ATTTYPE{$atttype};
+					}
+					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					{
+						$attname = $1;
+						$atttype .= '[]';
+					}
+
+					$column{type} = $atttype;
+					$column{name} = $attname;
+
+					push @{ $catalog{columns} }, \%column;
+				}
+			}
+		}
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
+		close $ifh;
+	}
+	return \%catalogs;
+}
+
+# Split a DATA line into fields.
+# Call this on the bki_values element of a DATA item returned by catalogs();
+# it returns a list of field values.  We don't strip quoting from the fields.
+# Note: it should be safe to assign the result to a list of length equal to
+# the nominal number of catalog fields, because the number of fields were
+# checked in the original Catalog module.
+sub split_data_line
+{
+	my $bki_values = shift;
+
+	# This handling of quoted strings might look too simplistic, but it
+	# matches what bootscanner.l does: that has no provision for quote marks
+	# inside quoted strings, either.  If we don't have a quoted string, just
+	# snarf everything till next whitespace.  That will accept some things
+	# that bootscanner.l will see as erroneous tokens; but it seems wiser
+	# to do that and let bootscanner.l complain than to silently drop
+	# non-whitespace characters.
+	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+
+	return @result;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: convert_macro2dat.pl [options] header...
+
+Options:
+    -o               output path
+
+convert_macro2dat.pl generates data files from the same header files
+currently parsed by Catalag.pm.
+
+EOM
+}
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 13f1bce..f7be2c0 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -55,29 +55,29 @@
 CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 {
 	regproc		aggfnoid;
-	char		aggkind;
-	int16		aggnumdirectargs;
+	char		aggkind BKI_DEFAULT(n);
+	int16		aggnumdirectargs BKI_DEFAULT(0);
 	regproc		aggtransfn;
-	regproc		aggfinalfn;
-	regproc		aggcombinefn;
-	regproc		aggserialfn;
-	regproc		aggdeserialfn;
-	regproc		aggmtransfn;
-	regproc		aggminvtransfn;
-	regproc		aggmfinalfn;
-	bool		aggfinalextra;
-	bool		aggmfinalextra;
-	char		aggfinalmodify;
-	char		aggmfinalmodify;
-	Oid			aggsortop;
+	regproc		aggfinalfn BKI_DEFAULT(-);
+	regproc		aggcombinefn BKI_DEFAULT(-);
+	regproc		aggserialfn BKI_DEFAULT(-);
+	regproc		aggdeserialfn BKI_DEFAULT(-);
+	regproc		aggmtransfn BKI_DEFAULT(-);
+	regproc		aggminvtransfn BKI_DEFAULT(-);
+	regproc		aggmfinalfn BKI_DEFAULT(-);
+	bool		aggfinalextra BKI_DEFAULT(f);
+	bool		aggmfinalextra BKI_DEFAULT(f);
+	char		aggfinalmodify BKI_DEFAULT(r);
+	char		aggmfinalmodify BKI_DEFAULT(r);
+	Oid			aggsortop BKI_DEFAULT(0);
 	Oid			aggtranstype;
-	int32		aggtransspace;
-	Oid			aggmtranstype;
-	int32		aggmtransspace;
+	int32		aggtransspace BKI_DEFAULT(0);
+	Oid			aggmtranstype BKI_DEFAULT(0);
+	int32		aggmtransspace BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		agginitval;
-	text		aggminitval;
+	text		agginitval BKI_DEFAULT(_null_);
+	text		aggminitval BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_aggregate;
 
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index f850be4..7bbd25c 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -55,14 +55,29 @@
 
 CATALOG(pg_amop,2602)
 {
-	Oid			amopfamily;		/* the index opfamily this entry is for */
-	Oid			amoplefttype;	/* operator's left input data type */
-	Oid			amoprighttype;	/* operator's right input data type */
-	int16		amopstrategy;	/* operator strategy number */
-	char		amoppurpose;	/* is operator for 's'earch or 'o'rdering? */
-	Oid			amopopr;		/* the operator's pg_operator OID */
-	Oid			amopmethod;		/* the index access method this entry is for */
-	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
+	/* the index opfamily this entry is for */
+	Oid			amopfamily BKI_ABBREV(opf);
+
+	/* operator's left input data type */
+	Oid			amoplefttype BKI_ABBREV(lt);
+
+	/* operator's right input data type */
+	Oid			amoprighttype BKI_ABBREV(rt);
+
+	/* operator strategy number */
+	int16		amopstrategy BKI_ABBREV(str);
+
+	/* is operator for 's'earch or 'o'rdering? */
+	char		amoppurpose BKI_ABBREV(pur)  BKI_DEFAULT(s);
+
+	/* the operator's pg_operator OID */
+	Oid			amopopr BKI_ABBREV(oper);
+
+	/* the index access method this entry is for */
+	Oid			amopmethod BKI_ABBREV(am);
+
+	/* ordering opfamily OID, or 0 if search op */
+	Oid			amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 1c95846..93c246f 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -44,11 +44,20 @@
 
 CATALOG(pg_amproc,2603)
 {
-	Oid			amprocfamily;	/* the index opfamily this entry is for */
-	Oid			amproclefttype; /* procedure's left input data type */
-	Oid			amprocrighttype;	/* procedure's right input data type */
-	int16		amprocnum;		/* support procedure index */
-	regproc		amproc;			/* OID of the proc */
+	/* the index opfamily this entry is for */
+	Oid			amprocfamily BKI_ABBREV(opf);
+
+	/* procedure's left input data type */
+	Oid			amproclefttype BKI_ABBREV(lt);
+
+	/* procedure's right input data type */
+	Oid			amprocrighttype BKI_ABBREV(rt);
+
+	/* support procedure index */
+	int16		amprocnum BKI_ABBREV(num);
+
+	/* OID of the proc */
+	regproc		amproc;
 } FormData_pg_amproc;
 
 /* ----------------
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index 9b6b52c..c06e2cd3 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -44,20 +44,41 @@
 
 CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
 {
-	NameData	rolname;		/* name of role */
-	bool		rolsuper;		/* read this field via superuser() only! */
-	bool		rolinherit;		/* inherit privileges from other roles? */
-	bool		rolcreaterole;	/* allowed to create more roles? */
-	bool		rolcreatedb;	/* allowed to create databases? */
-	bool		rolcanlogin;	/* allowed to log in as session user? */
-	bool		rolreplication; /* role used for streaming replication */
-	bool		rolbypassrls;	/* bypasses row level security? */
-	int32		rolconnlimit;	/* max connections allowed (-1=no limit) */
+	/* name of role */
+	NameData	rolname;
+
+	/* read this field via superuser() only! */
+	bool		rolsuper BKI_DEFAULT(f);
+
+	/* inherit privileges from other roles? */
+	bool		rolinherit BKI_DEFAULT(t);
+
+	/* allowed to create more roles? */
+	bool		rolcreaterole BKI_DEFAULT(f);
+
+	/* allowed to create databases? */
+	bool		rolcreatedb BKI_DEFAULT(f);
+
+	/* allowed to log in as session user? */
+	bool		rolcanlogin BKI_DEFAULT(f);
+
+	/* role used for streaming replication */
+	bool		rolreplication BKI_DEFAULT(f);
+
+	/* bypasses row level security? */
+	bool		rolbypassrls BKI_DEFAULT(f);
+
+	/* max connections allowed (-1=no limit) */
+	int32		rolconnlimit BKI_DEFAULT(-1);
 
 	/* remaining fields may be null; use heap_getattr to read them! */
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		rolpassword;	/* password, if any */
-	timestamptz rolvaliduntil;	/* password expiration time, if any */
+
+	/* password, if any */
+	text		rolpassword BKI_DEFAULT(_null_);
+
+	/* password expiration time, if any */
+	timestamptz rolvaliduntil BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_authid;
 
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index b256657..f8ff6d2 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -31,55 +31,117 @@
 
 CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 {
-	NameData	relname;		/* class name */
-	Oid			relnamespace;	/* OID of namespace containing this class */
-	Oid			reltype;		/* OID of entry in pg_type for table's
-								 * implicit row type */
-	Oid			reloftype;		/* OID of entry in pg_type for underlying
-								 * composite type */
-	Oid			relowner;		/* class owner */
-	Oid			relam;			/* index access method; 0 if not an index */
-	Oid			relfilenode;	/* identifier of physical storage file */
+	/* class name */
+	NameData	relname;
+
+	/* OID of namespace containing this class */
+	Oid			relnamespace BKI_DEFAULT(PGNSP);
+
+	/* OID of entry in pg_type for table's implicit row type */
+	Oid			reltype;
+
+	/* OID of entry in pg_type for underlying composite type */
+	Oid			reloftype BKI_DEFAULT(0);
+
+	/* class owner */
+	Oid			relowner BKI_DEFAULT(PGUID);
+
+	/* index access method; 0 if not an index */
+	Oid			relam BKI_DEFAULT(0);
+
+	/* identifier of physical storage file */
+	Oid			relfilenode BKI_DEFAULT(0);
 
 	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
-	Oid			reltablespace;	/* identifier of table space for relation */
-	int32		relpages;		/* # of blocks (not always up-to-date) */
-	float4		reltuples;		/* # of tuples (not always up-to-date) */
-	int32		relallvisible;	/* # of all-visible blocks (not always
-								 * up-to-date) */
-	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
-	bool		relhasindex;	/* T if has (or has had) any indexes */
-	bool		relisshared;	/* T if shared across databases */
-	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
-	char		relkind;		/* see RELKIND_xxx constants below */
-	int16		relnatts;		/* number of user attributes */
+
+	/* identifier of table space for relation */
+	Oid			reltablespace BKI_DEFAULT(0);
+
+	/* # of blocks (not always up-to-date) */
+	int32		relpages BKI_DEFAULT(0);
+
+	/* # of tuples (not always up-to-date) */
+	float4		reltuples BKI_DEFAULT(0);
+
+	/* # of all-visible blocks (not always up-to-date) */
+	int32		relallvisible BKI_DEFAULT(0);
+
+	/* OID of toast table; 0 if none */
+	Oid			reltoastrelid BKI_DEFAULT(0);
+
+	/* T if has (or has had) any indexes */
+	bool		relhasindex BKI_DEFAULT(f);
+
+	/* T if shared across databases */
+	bool		relisshared BKI_DEFAULT(f);
+
+	/* see RELPERSISTENCE_xxx constants below */
+	char		relpersistence BKI_DEFAULT(p);
+
+	/* see RELKIND_xxx constants below */
+	char		relkind BKI_DEFAULT(r);
+
+	/* number of user attributes */
+	int16		relnatts;
 
 	/*
 	 * Class pg_attribute must contain exactly "relnatts" user attributes
 	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
 	 * contain entries with negative attnums for system attributes.
 	 */
-	int16		relchecks;		/* # of CHECK constraints for class */
-	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
-	bool		relhaspkey;		/* has (or has had) PRIMARY KEY index */
-	bool		relhasrules;	/* has (or has had) any rules */
-	bool		relhastriggers; /* has (or has had) any TRIGGERs */
-	bool		relhassubclass; /* has (or has had) derived classes */
-	bool		relrowsecurity; /* row security is enabled or not */
-	bool		relforcerowsecurity;	/* row security forced for owners or
-										 * not */
-	bool		relispopulated; /* matview currently holds query results */
-	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
-	bool		relispartition; /* is relation a partition? */
-	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
-	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
-								 * this is really a MultiXactId */
+
+	/* # of CHECK constraints for class */
+	int16		relchecks BKI_DEFAULT(0);
+
+	/* T if we generate OIDs for rows of rel */
+	bool		relhasoids;
+
+	/* has (or has had) PRIMARY KEY index */
+	bool		relhaspkey BKI_DEFAULT(f);
+
+	/* has (or has had) any rules */
+	bool		relhasrules BKI_DEFAULT(f);
+
+	/* has (or has had) any TRIGGERs */
+	bool		relhastriggers BKI_DEFAULT(f);
+
+	/* has (or has had) derived classes */
+	bool		relhassubclass BKI_DEFAULT(f);
+
+	/* row security is enabled or not */
+	bool		relrowsecurity BKI_DEFAULT(f);
+
+	/* row security forced for owners or not */
+	bool		relforcerowsecurity BKI_DEFAULT(f);
+
+	/* matview currently holds query results */
+	bool		relispopulated BKI_DEFAULT(t);
+
+	/* see REPLICA_IDENTITY_xxx constants  */
+	char		relreplident BKI_DEFAULT(n);
+
+	/* is relation a partition? */
+	bool		relispartition BKI_DEFAULT(f);
+
+	/* all Xids < this are frozen in this rel */
+	/* Note: "3" stands for FirstNormalTransactionId */
+	TransactionId relfrozenxid BKI_DEFAULT(3);
+
+	/* all multixacts in this rel are >= this. This is really a MultiXactId */
+	/* Note: "1" stands for FirstMultiXactId */
+	TransactionId relminmxid BKI_DEFAULT(1);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
-	aclitem		relacl[1];		/* access permissions */
-	text		reloptions[1];	/* access-method-specific options */
-	pg_node_tree relpartbound;	/* partition bound node tree */
+
+	/* access permissions */
+	aclitem		relacl[1] BKI_DEFAULT(_null_);
+
+	/* access-method-specific options */
+	text		reloptions[1] BKI_DEFAULT(_null_);
+
+	/* partition bound node tree */
+	pg_node_tree relpartbound BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_class;
 
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 28dbc74..7c31622 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -52,12 +52,21 @@ CATALOG(pg_opclass,2616)
 {
 	Oid			opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
-	Oid			opcnamespace;	/* namespace of this opclass */
-	Oid			opcowner;		/* opclass owner */
+
+	/* namespace of this opclass */
+	Oid			opcnamespace BKI_DEFAULT(PGNSP);
+
+	/* opclass owner */
+	Oid			opcowner BKI_DEFAULT(PGUID);
+
 	Oid			opcfamily;		/* containing operator family */
 	Oid			opcintype;		/* type of data indexed by opclass */
-	bool		opcdefault;		/* T if opclass is default for opcintype */
-	Oid			opckeytype;		/* type of data in index, or InvalidOid */
+
+	/* T if opclass is default for opcintype */
+	bool		opcdefault BKI_DEFAULT(t);
+
+	/* type of data in index, or InvalidOid */
+	Oid			opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index ff9b470..c94186a 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -33,20 +33,48 @@
 
 CATALOG(pg_operator,2617)
 {
-	NameData	oprname;		/* name of operator */
-	Oid			oprnamespace;	/* OID of namespace containing this oper */
-	Oid			oprowner;		/* operator owner */
-	char		oprkind;		/* 'l', 'r', or 'b' */
-	bool		oprcanmerge;	/* can be used in merge join? */
-	bool		oprcanhash;		/* can be used in hash join? */
-	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprresult;		/* result datatype */
-	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
-	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
-	regproc		oprcode;		/* OID of underlying function */
-	regproc		oprrest;		/* OID of restriction estimator, or 0 */
-	regproc		oprjoin;		/* OID of join estimator, or 0 */
+
+	/* name of operator */
+	NameData	oprname;
+
+	/* OID of namespace containing this oper */
+	Oid			oprnamespace BKI_DEFAULT(PGNSP);
+
+	/* operator owner */
+	Oid			oprowner BKI_DEFAULT(PGUID);
+
+	/* 'l', 'r', or 'b' */
+	char		oprkind BKI_DEFAULT(b);
+
+	/* can be used in merge join? */
+	bool		oprcanmerge BKI_DEFAULT(f);
+
+	/* can be used in hash join? */
+	bool		oprcanhash BKI_DEFAULT(f);
+
+	/* left arg type, or 0 if 'l' oprkind */
+	Oid			oprleft;
+
+	/* right arg type, or 0 if 'r' oprkind */
+	Oid			oprright;
+
+	/* result datatype */
+	Oid			oprresult;
+
+	/* OID of commutator oper, or 0 if none */
+	Oid			oprcom BKI_DEFAULT(0);
+
+	/* OID of negator oper, or 0 if none */
+	Oid			oprnegate BKI_DEFAULT(0);
+
+	/* OID of underlying function */
+	regproc		oprcode;
+
+	/* OID of restriction estimator, or 0 */
+	regproc		oprrest BKI_DEFAULT(-);
+
+	/* OID of join estimator, or 0 */
+	regproc		oprjoin BKI_DEFAULT(-);
 } FormData_pg_operator;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 0d0ba7c..39bb8cd 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -32,8 +32,12 @@ CATALOG(pg_opfamily,2753)
 {
 	Oid			opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
-	Oid			opfnamespace;	/* namespace of this opfamily */
-	Oid			opfowner;		/* opfamily owner */
+
+	/* namespace of this opfamily */
+	Oid			opfnamespace BKI_DEFAULT(PGNSP);
+
+	/* opfamily owner */
+	Oid			opfowner BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
 /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index c969375..4b2cf32 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -35,43 +35,99 @@
 
 CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 {
-	NameData	proname;		/* procedure name */
-	Oid			pronamespace;	/* OID of namespace containing this proc */
-	Oid			proowner;		/* procedure owner */
-	Oid			prolang;		/* OID of pg_language entry */
-	float4		procost;		/* estimated execution cost */
-	float4		prorows;		/* estimated # of rows out (if proretset) */
-	Oid			provariadic;	/* element type of variadic array, or 0 */
-	regproc		protransform;	/* transforms calls to it during planning */
-	bool		proisagg;		/* is it an aggregate? */
-	bool		proiswindow;	/* is it a window function? */
-	bool		prosecdef;		/* security definer */
-	bool		proleakproof;	/* is it a leak-proof function? */
-	bool		proisstrict;	/* strict with respect to NULLs? */
-	bool		proretset;		/* returns a set? */
-	char		provolatile;	/* see PROVOLATILE_ categories below */
-	char		proparallel;	/* see PROPARALLEL_ categories below */
-	int16		pronargs;		/* number of arguments */
-	int16		pronargdefaults;	/* number of arguments with defaults */
-	Oid			prorettype;		/* OID of result type */
+	/* procedure name */
+	NameData	proname BKI_ABBREV(n);
+
+	/* OID of namespace containing this proc */
+	Oid			pronamespace BKI_DEFAULT(PGNSP);
+
+	/* procedure owner */
+	Oid			proowner BKI_DEFAULT(PGUID);
+
+	/* OID of pg_language entry */
+	Oid			prolang BKI_DEFAULT(12);
+
+	/* estimated execution cost */
+	float4		procost BKI_DEFAULT(1);
+
+	/* estimated # of rows out (if proretset) */
+	float4		prorows BKI_DEFAULT(0);
+
+	/* element type of variadic array, or 0 */
+	Oid			provariadic BKI_DEFAULT(0);
+
+	/* transforms calls to it during planning */
+	regproc		protransform BKI_DEFAULT(0);
+
+	/* is it an aggregate? */
+	bool		proisagg BKI_DEFAULT(f);
+
+	/* is it a window function? */
+	bool		proiswindow BKI_DEFAULT(f);
+
+	/* security definer */
+	bool		prosecdef BKI_DEFAULT(f);
+
+	/* is it a leak-proof function? */
+	bool		proleakproof BKI_ABBREV(lp) BKI_DEFAULT(f);
+
+	/* strict with respect to NULLs? */
+	bool		proisstrict BKI_DEFAULT(t);
+
+	/* returns a set? */
+	bool		proretset BKI_DEFAULT(f);
+
+	/* see PROVOLATILE_ categories below */
+	char		provolatile BKI_ABBREV(v) BKI_DEFAULT(i);
+
+	/* see PROPARALLEL_ categories below */
+	char		proparallel BKI_ABBREV(p) BKI_DEFAULT(u);
+
+	/* number of arguments */
+	int16		pronargs;
+
+	/* number of arguments with defaults */
+	int16		pronargdefaults BKI_DEFAULT(0);
+
+	/* OID of result type */
+	Oid			prorettype BKI_ABBREV(rt);
 
 	/*
 	 * variable-length fields start here, but we allow direct access to
 	 * proargtypes
 	 */
-	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
+
+	/* parameter types (excludes OUT params) */
+	oidvector	proargtypes BKI_ABBREV(at);
 
 #ifdef CATALOG_VARLEN
-	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
-	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
-	text		proargnames[1]; /* parameter names (NULL if no names) */
-	pg_node_tree proargdefaults;	/* list of expression trees for argument
-									 * defaults (NULL if none) */
-	Oid			protrftypes[1]; /* types for which to apply transforms */
-	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
-	text		probin;			/* secondary procedure info (can be NULL) */
-	text		proconfig[1];	/* procedure-local GUC settings */
-	aclitem		proacl[1];		/* access permissions */
+
+	/* all param types (NULL if IN only) */
+	Oid			proallargtypes[1] BKI_DEFAULT(_null_);
+
+	/* parameter modes (NULL if IN only) */
+	char		proargmodes[1] BKI_DEFAULT(_null_);
+
+	/* parameter names (NULL if no names) */
+	text		proargnames[1] BKI_DEFAULT(_null_);
+
+	/* list of expression trees for argument defaults (NULL if none) */
+	pg_node_tree proargdefaults BKI_DEFAULT(_null_);
+
+	/* types for which to apply transforms */
+	Oid			protrftypes[1] BKI_DEFAULT(_null_);
+
+	/* procedure source text */
+	text		prosrc BKI_ABBREV(s) BKI_FORCE_NOT_NULL;
+
+	/* secondary procedure info (can be NULL) */
+	text		probin BKI_DEFAULT(_null_);
+
+	/* procedure-local GUC settings */
+	text		proconfig[1] BKI_DEFAULT(_null_);
+
+	/* access permissions */
+	aclitem		proacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_proc;
 
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index e355144..1039c1b 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -37,8 +37,12 @@
 CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 {
 	NameData	typname;		/* type name */
-	Oid			typnamespace;	/* OID of namespace containing this type */
-	Oid			typowner;		/* type owner */
+
+	/* OID of namespace containing this type */
+	Oid			typnamespace BKI_DEFAULT(PGNSP);
+
+	/* type owner */
+	Oid			typowner BKI_DEFAULT(PGUID);
 
 	/*
 	 * For a fixed-size type, typlen is the number of bytes we use to
@@ -66,7 +70,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
 	 */
-	char		typtype;
+	char		typtype BKI_DEFAULT(b);
 
 	/*
 	 * typcategory and typispreferred help the parser distinguish preferred
@@ -76,17 +80,20 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 */
 	char		typcategory;	/* arbitrary type classification */
 
-	bool		typispreferred; /* is type "preferred" within its category? */
+	/* is type "preferred" within its category? */
+	bool		typispreferred BKI_DEFAULT(f);
 
 	/*
 	 * If typisdefined is false, the entry is only a placeholder (forward
 	 * reference).  We know the type name, but not yet anything else about it.
 	 */
-	bool		typisdefined;
+	bool		typisdefined BKI_DEFAULT(t);
 
-	char		typdelim;		/* delimiter for arrays of this type */
+	/* delimiter for arrays of this type */
+	char		typdelim BKI_DEFAULT(\054);
 
-	Oid			typrelid;		/* 0 if not a composite type */
+	/* 0 if not a composite type */
+	Oid			typrelid BKI_DEFAULT(0);
 
 	/*
 	 * If typelem is not 0 then it identifies another row in pg_type. The
@@ -99,7 +106,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * typelem != 0 and typlen == -1.
 	 */
-	Oid			typelem;
+	Oid			typelem BKI_DEFAULT(0);
 
 	/*
 	 * If there is a "true" array type having this type as element type,
@@ -118,13 +125,13 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	/*
 	 * I/O functions for optional type modifiers.
 	 */
-	regproc		typmodin;
-	regproc		typmodout;
+	regproc		typmodin BKI_DEFAULT(-);
+	regproc		typmodout BKI_DEFAULT(-);
 
 	/*
 	 * Custom ANALYZE procedure for the datatype (0 selects the default).
 	 */
-	regproc		typanalyze;
+	regproc		typanalyze BKI_DEFAULT(-);
 
 	/* ----------------
 	 * typalign is the alignment required when storing a value of this
@@ -162,7 +169,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * 'm' MAIN		  like 'x' but try to keep in main tuple
 	 * ----------------
 	 */
-	char		typstorage;
+	char		typstorage BKI_DEFAULT(p);
 
 	/*
 	 * This flag represents a "NOT NULL" constraint against this datatype.
@@ -172,32 +179,32 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * Used primarily for domain types.
 	 */
-	bool		typnotnull;
+	bool		typnotnull BKI_DEFAULT(f);
 
 	/*
 	 * Domains use typbasetype to show the base (or domain) type that the
 	 * domain is based on.  Zero if the type is not a domain.
 	 */
-	Oid			typbasetype;
+	Oid			typbasetype BKI_DEFAULT(0);
 
 	/*
 	 * Domains use typtypmod to record the typmod to be applied to their base
 	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
 	 * domain.
 	 */
-	int32		typtypmod;
+	int32		typtypmod BKI_DEFAULT(-1);
 
 	/*
 	 * typndims is the declared number of dimensions for an array domain type
 	 * (i.e., typbasetype is an array type).  Otherwise zero.
 	 */
-	int32		typndims;
+	int32		typndims BKI_DEFAULT(0);
 
 	/*
 	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
 	 * collatable base types, possibly other OID for domains
 	 */
-	Oid			typcollation;
+	Oid			typcollation BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 
@@ -206,7 +213,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * a default expression for the type.  Currently this is only used for
 	 * domains.
 	 */
-	pg_node_tree typdefaultbin;
+	pg_node_tree typdefaultbin BKI_DEFAULT(_null_);
 
 	/*
 	 * typdefault is NULL if the type has no associated default value. If
@@ -216,12 +223,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * external representation of the type's default value, which may be fed
 	 * to the type's input converter to produce a constant.
 	 */
-	text		typdefault;
+	text		typdefault BKI_DEFAULT(_null_);
 
 	/*
 	 * Access permissions
 	 */
-	aclitem		typacl[1];
+	aclitem		typacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_type;
 
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..7b5deb4
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,392 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata fields are on their own line
+#    -Fields are in the same order they would be in the catalog table
+#    -Default values and computed values for the catalog are left out.
+#    -Column abbreviations are used where indicated.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+my $expand_tuples = 0;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	elsif ($arg eq '--expand')
+	{
+		$expand_tuples = 1;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.dat$/)
+	{
+		die "Input files need to be data (.dat) files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+my @header_files;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/;
+	my $header = "$1.h";
+	if (-e $header)
+	{
+		push @header_files, $header;
+	}
+	else
+	{
+		die "There in no header file corresponding to $datfile";
+	}
+}
+
+# Metadata of a catalog entry
+my @metafields = ('oid', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures
+my $catalogs     = Catalog::ParseHeader(@header_files);
+my $catalog_data = parse_data_preserve_comments(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	# @attnames here can also be column abbreviations.
+	my @attnames;
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname;
+
+		# Use abbreviations where available, unless we're writing
+		# full tuples.
+		if (exists $column->{abbrev} and !$expand_tuples)
+		{
+			$attname = $column->{abbrev};
+		}
+		else
+		{
+			$attname = $column->{name};
+		}
+		push @attnames, $attname;
+	}
+
+	if (defined $catalog_data->{$catname})
+	{
+
+		# Back up old data file rather than overwrite it.
+		# We don't assume the input path and output path are the same,
+		# but they can be.
+		my $newdatfile = "$output_path$catname.dat";
+		if (-e $newdatfile)
+		{
+			rename($newdatfile, $newdatfile . '.bak')
+			  or die "rename: $newdatfile: $!";
+		}
+		open my $dat, '>', $newdatfile
+		  or die "can't open $newdatfile: $!";
+
+		foreach my $data (@{ $catalog_data->{$catname} })
+		{
+			# Either a newline or comment - just write it out.
+			if (! ref $data)
+			{
+				print $dat "$data\n";
+			}
+			# Hash ref representing a data entry.
+			elsif (ref $data eq 'HASH')
+			{
+				my %values = %$data;
+				print $dat "{ ";
+
+				# Write out full tuples fully expanded. This is useful
+				# for debugging, and as a prerequisite for changing
+				# default values or column abbreviations.
+				if ($expand_tuples)
+				{
+					# We must do the following operations in the order given.
+					Catalog::ResolveColumnAbbrevs(\%values, $schema);
+					if ($catname eq 'pg_proc')
+					{
+						Catalog::ComputePgProcFields(\%values);
+					}
+					Catalog::AddDefaultValues(\%values, $schema, $catname);
+				}
+				else
+				# Write out tuples in a compact representation.
+				{
+					# We must do the following operations in the order given.
+					strip_default_values(\%values, $schema, $catname);
+					if ($catname eq 'pg_proc')
+					{
+						delete $values{pronargs}
+						  if exists $values{pronargs};
+						# Assumes pg_proc.dat is in expanded form.
+						delete $values{prosrc}
+						  if $values{prosrc} eq $values{proname};
+					}
+					add_column_abbrevs(\%values, $schema);
+				}
+
+				# Separate out metadata fields for readability.
+				my $metadata_line = format_line(\%values, @metafields);
+				if ($metadata_line)
+				{
+					print $dat $metadata_line;
+					print $dat ",\n";
+				}
+				my $data_line = format_line(\%values, @attnames);
+
+				# Line up with metadata line, if there is one.
+				if ($metadata_line)
+				{
+					print $dat '  ';
+				}
+				print $dat $data_line;
+				print $dat " },\n";
+			}
+			else
+			{
+				die "Unexpected data type";
+			}
+		}
+	}
+}
+
+# When the build scripts consume the data, they just slurp the whole
+# file and ignore non-data. That won't work if we want to transform
+# the data into a standard format, because we want to preserve comments
+# and blank lines. We have to separate data from comments, and
+# parse data entries retail.
+sub parse_data_preserve_comments
+{
+	my %catalog_data;
+	foreach my $input_file (@_)
+	{
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+		my ($filename) = ($input_file =~ m/(\w+)\.dat$/);
+		my $data = [];
+		my $prev_blank = 0;
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			if (/^$/)
+			{
+				# Preserve non-consecutive blank lines.
+				# Newline gets added by caller.
+				if (!$prev_blank)
+				{
+					push @$data, '';
+					$prev_blank = 1;
+				}
+			}
+			else
+			{
+				$prev_blank = 0;
+				if (/{/)
+				{
+					# Capture the hash ref
+					# NB: Assumes that the next hash ref can't start on the
+					# same line where the present one ended.
+					# Not foolproof, but we shouldn't need a full lexer,
+					# since we expect relatively well-behaved input.
+
+					# Quick hack to detect when we have a full hash ref to
+					# parse. We can't just use a regex because of values in
+					# pg_aggregate and pg_proc like '{0,0}'.
+					my $lcnt = tr/{//;
+					my $rcnt = tr/}//;
+
+					if ($lcnt == $rcnt)
+					{
+						my $entry;
+						eval '$entry = ' . $_;
+						if (!ref $entry)
+						{
+							die "Error parsing $_\n";
+						}
+						push @$data, $entry;
+					}
+					else
+					{
+						my $next_line = <$ifh>;
+						die "$input_file: ends within perl hash\n"
+						  if !defined $next_line;
+						$_ .= $next_line;
+						redo;
+					}
+				}
+				# Capture comments that are on their own line.
+				elsif (/^\s*#\s*(.+)\s*/)
+				{
+					my $comment = $1;
+					push @$data, "# $comment";
+				}
+				# Assume bracket is the only token in the line.
+				elsif (/^\s*(\[|\])\s*$/)
+				{
+					push @$data, $1;
+				}
+			}
+		}
+		$catalog_data{$filename} = $data;
+	}
+	return \%catalog_data;
+}
+
+sub strip_default_values
+{
+	my $row     = shift;
+	my $schema  = shift;
+	my $catname = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+
+		# Delete values that match defaults.
+		if (defined $row->{$attname})
+		{
+			if (defined $column->{default}
+				and ($row->{$attname} eq $column->{default}))
+			{
+				delete $row->{$attname};
+			}
+		}
+		else
+		{
+			if (!exists $column->{default}
+				and !exists $column->{abbrev}
+				and $attname ne 'pronargs'
+				and $attname ne 'prosrc')
+			{
+				die "Missing value in $catname.$attname\n";
+			}
+		}
+	}
+}
+
+sub add_column_abbrevs
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and exists $row->{$attname})
+		{
+			$row->{$abbrev} = $row->{$attname};
+		}
+	}
+}
+
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+    --expand         write out full tuples
+
+Expects a list of .dat files as arguments.
+
+Rewrites data files and strips defaults values.
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

0005-Mechanical-data-conversion_v3.patch.tar.gzapplication/x-gzip; name=0005-Mechanical-data-conversion_v3.patch.tar.gzDownload
��N2Z��}�#��'��^�������f�'�^�d����G�Z���gn��,2������~�x����$��@"dUk|�gv����!��b��o��Y=����������Y������i�o���u�z��-���"��q����.�"N����4��,��b-�E\d�!Z�4������GA������{���������_��.����+�e����.o����uS,��f����x�,�e���>��9Dq-���/J�8_H�_E���������=F���j�����]���Z��/^����_E?<<���,�m�_�8�U�*K���b�����?7��W�?��_��h����]�4�Z]����6�H�_��D��������W/^�����z��������J|�m�_��v��{�������W�m�z�9u7����������N�x#������n�m�pn��^�z-���^�����V"A����k�����+������m����Xy�O�m���Sw��ZP�[�h�x�mn���v�)��z��������2:	�����$%�!�4�z{�m���&���w��y�A��(:a��t'�i]{��vQ�F�o�u�~���������o���cs/�$g����QWY��������?�����O�����d)L�������v�~(>��*����{���GQO���O"/��h����>����f��f�������}�S�I���OW���DS}������=�d��}�kN�z�������Ro��O�ZU	��$�`R��]��l?h<%i1%���kv����V����O��(�����B
��I����,z�/�>9	���m�5�M����7�z���N�z��z��t�[[9��Sst"H��c
�Y����IZ�S$���f-��E���f/��c�������V�*wM�k��xaQd�`:}�s�b��n��������t��l6��9[
��T����j>]�Sm��w�!u�P1�n�]M��wW{���nS�������t�H7�N_�v����5u��lW?��V�}ex��/^�7ww��������,������}����*9/6�u�>�e�W���*���tk��������v�BX{n#_~�,^.������������>�������/>��H�x�o7��?�2����|�	%=�����}W����W������f_o�������Y�9�����
���n�
��9o.0�W�������
����������f����������F*��oI+��a���U*i��;�A��^R��I�dS�9�gH���]�Y�P�C�
�XA�����~���k��_����)���������:Ot]����w�y@0,��U�=P��6	���V�@;��5�]p5	q�j��dX<w����IK��������L�j%	�ZJ���~VT��h���	+1�n�����5AX
�����>��������N�p��/���m~��^�a�wT?���������q���=���aLt�a��~C�S�\X�?�<�4���6�?�1�����C��^~��/����
���|����Jlj�p�V���
������`��nC����"�H&\��-��F?�3����4b>0����#��'F�����j��D9������WL��m}�o�&K��zj�]{fMuU�dP���&���IL6�����d������l�h���U�jn��4]�t���I�l�7��W	HH��-b�_&���RPf4��O�?�+�'���9i]w�s��g�}����3R@L1�f7E�Y�@�fU
L�/!��D�����JE��j'�i,$���s������rA��q�O�'Y<u��`���BI�(�������^��
�zK�L������k��M������D�QG{�5���.�?���((�&�����<{f
�7�n(s���h�9AG}<�&���kf�����,i��0���C}� �xA�� ��x��g�$��������Z��7�iN��F{����~�k����47�A��c�t����S�H��J!�B�:�b�8��=5>���:������j?k.,9�]���J����L��3���M��b2�zbl����M	U�N4U����D���b�S]O��9�����lJ���Q��`���4�`���U��0�or%Sb����	���;K���;�RS��W'h����aV0:�1?����
����������{(��	"���SK������xuX-]A����to������9;�z����&c���|���:=h�wt��D�QW���S��~��[��6:�a@/�13
�+�{K{��-1l�u�����}�	����N�A����WdoL���Q�&gv��:l�%=��\bJ���������K����KH���Ni&��������]����-����~���0���=�;j�r�(/�v����������x�^2����$kO���[1"��\T�w�����}O�������q3v@4��~K���5��h��q���e2l����j�Nf�h�f��h����)6��}(�g�;�i��o6!�'��*�MV���S:�b��d� �
�*���<��������	\B~|��:�_Yz�)���
NS�M #s���f�#
*�4��\E4�,�1E��6>%�'�*D�������������	f���0��|S�W����������=u����>���}_��<��Y����!���9?�B��?�	�of���l����y�(d���i�����������c����O�z��5D���S�d~��2�m:�L}�8<�����yB���=5c��>�����b�qZ��b"��Y����(�M��XS�G!�Xx0'����1�����2�����:��0��<�������h/
�Z������p�I���K����,�s������1�7u>�������L��L-�C���?�)�i��������']�8[��<����������L�����������\�8\�?s�<p����/�S���K���C�X������!:6��7l�/���'�|�)�^��f�JN�i@4y>�>�`��R��\XT���������x*���!P���I�@�Syz����z�#�n����^���HCD}�i�H�nJ���~L>��9��o�C�q�7
���geW���8��0��~��	i7�dl�-n�4����D�������m�n�zS�������#f+�bQ�������s�H��4���@S���w�8���v�����T����$'<?���r�$A���3�������c��3v1���3�p�t�6�&���}C�����"��++��O�"C���P�%i�ez��p0�k6���x09I�B+��Cf���UEE.��<T&���tz��Ce�����
4���T>/�Mn��YP~05 ������no������z#����2�B�M��MC5
����O��W���+�{�Y�VgDP��-���kK��$
�
 Lv�,�B�������s?�a�;aS$�~�����,N"�}��������~K�� G�:M��
V��Q��_���2�V^t��[LMR����q��	II����^�����Y������>�����������_�<��q�������zs�����`�0{c�oD+gyKf� ���n�m��7�����-��������0`Uw	?��hy���\��	��DP�O�^�����z������m��x:[->����?��l�t�}>6
���yE�G�Jhj�6�3*^����wF��2
M��1:���������cx���ml�������]7�S���}����.k�Yni���g�K�b����g��{YK�Z��r��F��\�����8��n�c#�Y��z�jN�h�t����#�������W����v�a�6#@7���r���Yq�����C}z`5+_D����v�Jg����`�{/jW>����}�Fi��o����f��^�k�_[���6����x�k<�+���m��1:��G>������3���.�������z��q5^ �����Z,3�q;�+#w����_8_�|;��>���=������63:�g~��$�Dw���6��^%�->*�>u���� �C����Z�����������jdfs@f:��`�:����$Z��0�����
�&���7�Q~��3f�����Q��,�����+f��������$AJ���P��^�d(@�9@sJY5�	��)g.�80A�����P'�0A�4{�0�	�]F`65�
g�<�f�<f����z��y�f�&�fN�P�A�	%�s���W9��&H�|zk��xVN���	���?�pN	n��xa�f�c:M�&�T�tRf�c:��	3�1��ly���T4���*�{�h;��Z��p	�9@��R:�O(p^J�	���_���K{w�������3&�N�	S��,t�a�$0�+�v�>�������P�4T�7�{6A<S\�<f��i��Y��N��H�0s�R���:JpI�5T*
�&����1R��$�T�i�1A5������� tZvL��NO����JXMj�-�k{�2�S��2��?�>�2�8aa�c/���>�2������^F�������`�pV�����r��1�A�������y��p��,U�}U�C�L�4h�f�%\_�5;�q�4�.j"N��������!5;��A���9)��%���2���c����P��i_�P��Y��������R�����F�����'��c��%��c��R����i�>�`��$�������9BY��]���������������E/x�z�{D} Z����B����9�pTV�������Za�e�.���p�`�b�f�.�bL]p����n���R����R?E�g�m,L 8�J�����@�@�YGL ��E�x;.a'UY���G�/z�o��0\��N/���)��9.�>�-,�������p��g�4��bc'^�����L�M=8�)���<L]|K�������A���$oU�������*����%���o�Z�3T����5T����|.���K��W	���QEH-�;!�b��E��j��Z������Z�(����Z<>.0�����-��B/��")�S7�������t�<�D^��	������\�L�����lu��R��.��'v���tms H��"�q�tm����ks���@���G�b����3h�	���\�9��\�N�f��xM����{k�g�f'��$%s|p�h�z��`�ZB�|\0Z��.�d�7�������r>np��-���}p3��2�O�����&m��`+�`���+��M�����M��5�����"N��wNk�5;i�+��:��q��M���r���[�V���W�x�_���p�l�r���[2����[��q�-�d��q�-�����~��/K-RY��*S.)�60�������������g�b�����)��H������T����P���h���%�����.rg�i5t��������qz)WBm�&�iP��2xK�<60p��'z���_��*����d�V`��\j\���W�z}DU��P����A�3���1ak�&6�VY�`3k�$6�,9V� �!�p�p(�I{��d�Z6\��	���6l
`���
��ig�
�����}��k�?�Y�JS�JSL��5��bZ=��`@Z����`@.��[x�`@.(eV�8�������f��S)}�%a�8�Vs�N�u2�g�z���`K�J�n���&R�d��c�D� �",,5<x�z��-����*m[�L}c|:��v�Aq�JC�Q��0�l�6.{d��=[���F^e������G����|[�,�:'�K����e:p�k-�x`p��2�:g�rX�N�������PwbE��b���S�f�Z��3AAl�r��	�����1��r��
���e��ia�h
;�3I��dQ&�.���q:�&����%�2��7���R��/��A��q�\���rQ���<T}h��\=P3�jDx���:�xl�tT=IRe�.J�w����i1[\T=��r���
�:-6�����Z�sQA^�����C���LmP�=,�q���!�FMtT��sQS���<�LG��5�Q�cs�%$H��j���T��rp-9<|\��k�����Y�2�������� ��eR���=R+��2I�T��a�d,zm�J>p�-0X��^ZV����b���9��	�fW�g��V|g�}>p�-F��G�c�h�3@��h�s<-��G����P���2WK
F��L:��J�����2a8��ZZV|`0ZI�~������'�i�+�X��u����qJo�y'xZ��)�>p�-�^|������bR���1F��\���3��T��������]& b�\����UJ����6���f�=�	3*���*�M�S�3(�O���DG+�t����V���Z+�/��2Q��Rx#����Y�@�������
3��	j��`���v�O��@�aL3�����C
��t�(�I)�' �L��Uw�\���=f������4�J�I��8��9�Ds-a�q����&�9�RYS�U
�u5K�ZBPkD�%n�%���X���������'J��y+�,������
��Z���
��j��'�:G.9��fz�pK����r$�n���62��N)Kz�Vj`h�������l�'�{<
���>+���&F_5�i�"��*������h��BZ�����e�m}h�Tj#��z��-���I���X
�(�����J	_	����kvD;�z%�lXj�K��k4F������UY�h+W%��0��C�a�}���v�
�k+E�
o��j��f��e�J�'�e�R1c�:~
���ToB^ �C\�DG��A�7����L�5�U�����BPu9j��V��V:j9�R3'�>ol��UqgR��],g`18���� \=]s��\���I;�bQ���B���F���}�����������F��c�O�B��6lX������+���8���M�^��h��]��l�Km���.�k3U�78mO&a�$
VKTw�-�v`)uQF���A�OO�����S�����>C�B���������:W�Puo����<T��eK������Be��x���PYg`*��S%x�����{�����Boa&�E����e�Boa&�B��LCy3����7��	T9�Ts����q��R7s5RY����y[2��+lXpn����a������`3@���`��y���-@'X�l	`���[X�`���j7�����Zm6���j������'D&.��s����������`��=EK�L
���hI��g���GNr<r
����a..����f��B�i�n����P�2l`X.Vt����k���S@�%
�������s@��tB��e�g�)Oj�E9	q����B��Ju�p��n������l�L>p
��O�9�
d�g�8��*Q��|���L�|�=�&�h�ru����v��exs�-u@:TXliw��csDSYZ�2c,Vl?����	
>0
�Ti`0J��e��P���8h���	���J�9���p�)O9GQ����{�T�F�*UR�����J�	��b��v8�
�`����sl:��O�&����v�/���X��k�6��@{,���P{�#�@{,[��@{,����19�xzI�\����p�����/,��h�L;��w���<��7�j��O�o5��*7|\��	���F�y5����k����������ZR<��0q]����%Lj������%f�-���Ecj&�W���d�o���?���������?���X�k��&:�<��#��6L�\G%��u���S���#��l57z����j���Y�b�^��4��
?�f�]j��Y�z��e�I���@M9�2�ej�`�U��,��)dm,n��/��������=�����?�����������29+5��[&S&�yb��<�PD�X)"O,��'������@����+��r9����2��^P\���K��OPl�a��'�`�(�`�'(�`�G(�`�g(�`��(�`��(�`'�Q�N���8H<q�B������N���c[����vI$���&O/U���3��,�%���'��H7��`�L`����g�jy����^�4�K
v.e(uX�.�� v�&�
l����N��0���<5���'w�����a����k�a���k�����?��{Xm���9�U^6�]�~(�
�mv��-K��A�P�Z����|T=�t�f@����%�z��/d��_�f�� �JpZ>��v��VO��/1�>WGM�=W�8!8Y�����`>**�[v]���b#;��z�
6=H��m�u�7�V��V���1T��V=f���Fc���@�Il��,P=<[��j4�U���1�,P��o0�%�P3@�<��T��1������c���#�Z%�P}X��P
���Ac���BKn����_����)�>q��Tf�:������*�q����q���n�oB���_���J�Z6,T`�
�`�~���e���*��+���}i���U6�>�R7UM9�Z���	X?�Y��[�y���M�M����y*�q��SJ��T6�`<��<Me�����������`�7D��=&�1�&�����05!���WV�2#4��\ee���j��5��`�S6@��D����A|D���Y
��`��R��6�����#�P]l��
Tb��6$6���Z�`����.7��)P-�����<9��8� �.9jP�E��s}��O�r���Lo�T6s���X�a����2e��C��6e�����I2a��h��'`���8Hf�Xb$4s41��9���Q�]������Xe�����L\ 7{���f_1q�����	\�x+�!v&�n"��p&�n"��LX�D�!23�5���B/NM����/M����/���&�����2a���}Y������E���b
�P�6��
�#���)&�.D����!Z�^LX]��/&,�t��x�hH�.�_e�<\�n���y� �����p3�k�<���6	J��������J.����&��5\���T���\�Z�����H������8��h9<\�j�y�0��ny�`D.���F��Tgy��j�x��{,�X-R��/mPD�9!4��a��v*�;&�
$���^�����WL+����-Xv7���dkx���d�)�"��~aOTd#����5��M��>v�?�{�&{^�hO�c#�p�=��F��]-�� �`O�c#�����X^��K�S����_��Y�H�Z;���G�9��-\.r
����\� �����9@��8��'�9ORF2#�a$�r�S��:r���gP�����
���	'w��N�2�H��)@���p�3�l���"�����"���b����S��9b�Aq��sd?�F�#i���#F��yjL�	N��i"��y0���
`E�	N��ifu���'�hj_�����62���'3�$h_����]=����T���2�`�8N 	V���2��=��$X��y��r�����a��r��'�H��"O����E�L2R&�h�2�p���f+*����lEr��������-O{��[r���
�9c�d�2�H��@��
.2+#������&�"��K9�3��r���P����k����l�\d�����-9��a�E���|o7pkM5C��Q���giw+��	@�L��)@�G���@��p�s�L:Y�<�����f��W-���=s���o����F{ ���6�7d��@�����8�	��
����Y��Vl�R?�������Fc�a���`�2�.2��b<ld0Vsr�\d���*T���d��G����U��Cf#'�>���)@�
���d�@��9@�f8��������kE���)Y��|� ������H�u��#g�f�:��'J7"OXD�(����P`9����=��
=Q�9t�,�|���!n��9@�1n
�9@�A>=���lO{`v���4Q+���6������d���EN�}z�"g�>�q���t�H��n��@}��]������&:�}��`�w���l�Sk�<Xs�� Xs�� Xs�� Xs�� ��
��%�����cSe��������k�U��]��n�h����&��]����p�~��}w�4���=J��k���q��uglF����/>�����]tss�������z�[�u�zUw���-f�zw8��W���n����7������v�����������y-��^���"o��������y�z��������Y-|�et�x��>�_fU}���j����Y�nJ��t�^g���a������b��q����$���89eBkl��8d�����!0EGb56ZL�+��-	�&��`	��4!��0��k�j�g~@�"�" 5�	��5s�^�E���|��
9�S�V`�n���$�p�O�U�`������N�"���p�9Q6)�$-��4E�d���E����I��U��`�}F�E�_x0I��j��X,^Z�B�9�16�04�'��	���.t���"Hl(����Q}3�]�N�uXK<���zLU�4��L �Sb��#����B�t�S
�"�<��M�L �P6�`m3#s��'��������
_�����B��6U6�\����jD���0O]�5�Tk�\��;Hl(�N�DwU�����/���4_���3�{YPtq� m	���Z��N3v%C�.b&]*��T
;NtU����B��L���c��������#���TA,
!Z�]6G��4^@	4�<PI�%p�Li2�
q��$.�f1��R��I;��_�����
���@S�,U_t9�"�X-��j���1P�yL�e@��T��E@Z�1)5k��:���v���=R�&�%�hH���D7���G�/#m�d���1����.��cBK�K�0����t�u�9-�8S��s�����E��j�,-�������'�h�E�jh��69������:�Q;��!E6��������n��cr�v2^{l00��xV�R�������^�p=YF���.��c���|,HW���"��x���t�8�/3Z����%-
I�
�hP��M�[��n2�����9&��
cCA	��rTUf�&�|�P?Q��1�$�d�Gb�#��>b�#2*��NbNK�b�	4�2���0����@B����<(��U����#d����dH��RY�q��YN�;��Z��nw�����@HjD�g��a?�	����#}����/��)
��1\������La�!?��~��B��dJ��E��
/d��u)p�����IdjD�iG����u��M� �w&��{O-{��
���'�/��'�fGY�$�"p���2I�.��ujn�)��(Rl ?{������R��A7�*�*5��?2����)���-8���L[�����NEN�v�28����Iq�x�P3
�uK�����!h�6�i�j%��1J"q�
��9����1�����1;]ZOr�c,M>�
�7-���h'NW��a��k��~s�����R�8���"���&9����J��%�@�X9��o�X��k.V��p���U��%/}����Y*_�*J�7�W��l,�~��:��b���K;E��X�9�v��X���a��e�X<9��xr�a�)G8��X��W��I�������/O'xXH'p"��<,�N��x:���:����Pk=��@�x��T
b����B4��s@������S����
�"��a��T����
�>�?��%�)
i�w@�2-q�
�od9�!����t+^�cn�7>�i�7F��*�.q@�R�k�G�R���u�����iNX.�@NXq.S9�SdcAY�x���%��R6�c����Xp�$++�s�xDRfjX�!�E|�],>t�d��-C���A�.j�S���CS&�C�E�
6m|44]����b@����LM~|4,S|�v��i���4�����P8�8 �G�2����|4(�/��2�|h���o���@EH�hX8U����@���hX���p:��n�������q@C"�	�hH$%v��hH$x��
�%Y�]�R
�8�q%�abA	�8_������L,��%�hcb�E^�d�X��[�;��1����`c�{4l�af���#,b����O�y�����ll,�������}OL+L,^�����l����XH�����A��N��s���DB=��I��	F�fV���l�a����J9l�a�������e��?}���\m��I������5�.�B-���K�z"<$t����YHp�M)��g����^�����_h5G�[���8��8H��� �;n_��E��5�=�Ow��m$^�q���&�H�o����H^��?�������J�=�B�%���,$V_���}�B�Z�����:�����xn�4��s����H�~�:���O��c?M���~��b��c�����LH�=eBr�()�B����)�B����)l�����)l���|F�`������=eBr�)��F1�x9�S��3!��S��c�(s��0KnB
�'�%W/xk���r�����q$^�q�x�A�;�-��G�E���E/8H������ �{�C��QY��k$^�q�x��A�������-}J0��*+�s�eY��cb�z���t/�
�:������
�1��`F3�C��1#�G��<z���c�����c�����q=����T������}����!���<,��pl�D���{����A�yX����z�>tuC�_���A�yX��a�{P�`��&&��.��\,Nr�8]����
4���* f�@�
b
�a�4��5�}�{�P����l��4&���b����0&�����/�C����PNu���.[��.�L�����������h����o\4����qV��&z����n���v��Y�����Ew,���\4{�������S���}��:�������@PK����e�q�x�;./|�E���'��j����d�2�~�f��j�~�,���o�Wv�����o:w���:����1zn���&�<4���{��Z�	��~�p�����-x�N���[�Hu(��9�k	�=7���sSh��pg�s����)��~��C��[��0��o��dT��[���m�f�\4�����[zp��t�]���P>���\4��r�x*�E������T�w�����\4�nr�x��Ec�b��>~����6���F���<M��X��Fc�&�������Y�WS�J�F7�7��h���E����#Li��+�K�W�Br�x
�E�)$��?���&�>��&-������6���h�h>�����"��~C1}��q8�<�����a`�p�f{��Tv
�j������\4�0�����m�J�(���4>o���x���v���i���!w�C�����b����nn��U�>W�{a���������k1|���a�~��������}�.��l�h���(^,�,{������b����eR�I������^������[�J��sV_~�,^.����I}��TR����yX���D��Cs\��&��c��6��9���v�6��9l�U��s���[�^W:�����C�Y5�Wg����dMLG�U��~(w��um�=4��c�m�1���O�O���f�D���v{�G�����������9�W[��f/���������_��U��K
�Ufr�����lL���}������~���������
V��+bA~*8W��{������+�p'-������>��������#�i*�q �B\�V�w{$������7������={"��-_vuG}V������DO���[!P�a�,�7��z���^����n�M(j7=��o�Z�5U�vh|u�U�u�]^8��o����P������������et��E��h��)Xj�:���}$�{����E��5�^�(���i����q��������6w��������ml���������a#u�}{���h���+�^�u�j1�D��;1�7=%�zslVR��I�Kn��gp�����b\�|��\g��V/�wR�%��[a�����]��n���C?��/���jP�~Z����x��>s<>�{�V��]�h���9��i=>�5��ZzwV[N3)l&��73���vd1U��&��mY���CqY��-���P;eN�Ah3H�8������
��� =�q����j\���,X��fP���f�h����/913;��q����z�Q����+��"95R$D�C� JB���g����8����@�'�X�CV����S�C��S�C����Ae3
C\��#��R1�=
OH!bY#�	Z��2��"�/���%��U�$���6���i�C-dCnfB������y^���q%V������5����$��k�\n�\����%�(<��ql��I�S~���r�~]���pe}����Y������_���������>��vo�R����N��C{�z���k�����(��g�W���X~G���V��u%~��D�����^��o�U}��m��q�!��z� _���'	�|�=�C=i;��eR��J�I����_�|1��Y����Z<h�q�I����� ��?���K������S�{<u��E���}��Iy����!����2�![����D�e��^�����Q���&H�����]�~#Z��������$����W}�N2��po������me`2��&#('v�
�8����NF�����ej����55B
m<��{���(��0#LN�ds�X�b�Tq�D���yU~�<�*S����T#�"�����O*j`>7�28	n�hx-=�}6=� �[z�'Y��q��gqh��k��R�'�l����4�M�4�b��$����+�������3
��r���j�>���f�>��H+v>��O�7O�����R�g��(6��3)��w����\�)���R�g��(���S�e:�L�@>�bS�<�bS-=�b?���@�
-=�b���������y*��-=�b?���D���fWl������Y������bx[�p�����������i�+������WCK�1e�jn3�@>�bcn�J�qKO���%�'Ql��@����wGy��$����J���!���qZ�r�'���-�t��(��h�������<�*\R�'�Y��.R�P�TE��$CCHh�\�����G4Cu��Z��Cu\L!��e}*,��$`�(<IC�X��!���D�-]C�
=�	7$T����[J��J`�mD�L�%S����	���7�v�����<���G��nh�Q��x�m��|��\��m
�����7�n�_uv����{i�L��<�1�tI7���?�������J3��K2*qf�.!���K~{��=�1�$��
�p��'eLM�)2--=�T��u� �z8p#��p�?.���L�P�6<�U�<lmj������}���gS
m
�Af���JF;F��q�HCWdS���z���a3�C��mj(�
<���N�K�,.�)��]���'��'�
m�*����-b$�ih�L�E�j`�����6E��,X\�����ch����c{:�����i�No�{�^��$�bF�Z����./@��
�����>I(/R��oZ��Z��h�����I�������8����W��lAi��O�����,��%4O�Ms��l	'�3J#�[�z/pJ [*q�#��%�O�<G��,��vJ2�5v�=�%b�#��P�h9jyI��(9e�W��{���O9�����W_G����t��O�����%�!���%�+���������o�����fNL����O��tm�*�2���L��������U���9T��URo1������E��k+}��}If�EY2\00��P<�R\��p\�p�����p���-aXT�f��,*d�����w���|��j���Q�:�����,���������P��n~�	$Y��M���m����(�����l�RE"�eXe�����,�Yw�����S���?*�&�����nsjz=��S�f���Z
E����,��D_���������P���C:��)��D�Y����l�h��.4�{�m�}<��N�=s'��]�H���N�����j���&X��v'�X�}���2}�b��K)�k���f{��^�B��k���Fv�P$UG�6���a�������^�}����%�����o��q<�:?A;d��L�,Wh1/Y�	�_c�N�TK7������?}�_���h��}j��}�zw��[�z� �U�T1*Y�i��IZ���j�������j����R��|�����x2]��%��a�<����W7]��I��������s���p�ED�E�.�)I���N�!��P�2�-�F�m��sva���e��InWP{��c�w����Y��i�J��B�m���8�V����E0�z��p�4*>	K�����J�qK���i���!�����S�i �s��v�d����2������+�������4���Q(Wd\^�����~��a�������M,���/�*��R�_�v��0�F@���X���|U�C�N����a#�nN�y�(�e�������~CP��9F_��W����++��r�,A�����3.=e��U{�WW�R/��E���u���?5���o����X�
��I�/�����=����z��i�����Ki��~��M^�%� �?>n��?���n�;��d�{[���~)?l}�j��{-^O��4�]#�X�M�����C����$����v��lGV�MT��>�jg%�Y�U����J�mHy���ZH):5���)����h�n��K�O���.���YXu���3	�o�������,��f��E~"=�A����O�{I��p%G��2f���e�F�����x�����f�J���J��=�Q�����pnes}l���O�����h�K��/]�����`�x���/_9��v;t��<���L�j����N�u��(f2Vn��_L�z������.��a�[�g����Y�.�n�?/�=�#g����P���w������_�w�����~�~����zo�������~�������x|:1�]����\�X>z#��
����Wv{3X��ucf.��������_;p�~������I.�7��S��+��S���zV���������l��w.�UkC��u�j���*z����qxv���w�����3�i����"����������$�	�w�~���~����WU����7_��������]$'����n|.����a.��������W����a���"�n�W��t������)��������F���E�������������E���X����E��.���a0��;H��R\�x��S���5���z+>��)7��v�����������Cy���*X��^���>��������)�9%A��T��>��[$o�m�n���`r���+Y�ew���?���<���/�R����|q��eB�x�k��Wd��:]��<�u����������?HS�mD��C���Om)1�"�?`Q�e�S��\j
�Ss|+�<49������?D�}�
]+��7I�08a��[�0s����n/�c���e��� ��MR+�>�F�Dy��U,���Z�����������;�}���=�����M��p���pN��S��f��\�y��w�Q���>�|��=��C
Q_E�e�B�HF�d��_G���v#�n�I��>=g�A��8�+%���a?���2c���������	V�v_�C<��%��H.�j�>�$p�,p���	9g#�2��v��"E�}�����[p��6�A6Xn�0�xw�4�Z5 W�-�	������6�������i�xYb��Z����fpE�,L����u��:�QE9�8��-C�/J1���\MC����M=� ���@���)�� z>���p9��Fh�#4�Z8��6�&�S��0 ���Y�i��^v����r9�=g�zY.y�#�7u�^��L�xLpP�906����#.�AJ�����q��
�.����# b�k�����,3
�TO�n�:�}W���81����`���m���g�R�XXR7���X��O��*=2
x=��O�����%����>�Z�������_s�7�n��0��9���e�z��������::u�Q�xz:��jy�b�������~�WV&Y���r�g�s����~OP��V��6���f+�Do��}9l���Q�>9�w� ��!�~)(s�W�~�����
���d�[?g)���:tT�$���S�b$V��G5�?L:G��������~���2��h@S�0�9�,�w�q�25F�#�N�4��~���.9�����pI�����N����m�zh��&e��[38������ ��%�;%2��
{��������Z�����q2u�<{`O�������5�.����2��(�d��h����C��+s6x��,��(��e�b��L���De���>�Bv�p5e�%��1�&�����5r��s�tQ1��� ��P�	x���N��Zp�A�v<o�cT���!<�����7t�]��-����f6��$!�/���c��X$������JJ�Wcoi�7�&	�B��������S�F����������-s�]�����[����m�c'j�"�NL�.��nBvx�M�~:���{��W�M��L��vBj ��o��4p��]R���Z��1,�*�����wjnk�r�*�����W[�*���:�3����gEg�*��	#����z���B�>>���p$
Z��=�N!�f������6(i�cmN~Dzk�6���?��;�	?#����)d�?&���;M�B�������3��eA�����H�����O�1[�X9�F��<6GCJA��
�TN��������#X��^ZK��J�{r��D7�q7MA���'�F����[��m��s*$b�j��<��7��;[�x�f�����c�q�
�����A������1S0�N��B��>	M)�	�0s��������c���	o���(��Q]�����(��?}�m4�j�Q�Y����s���^~{���k{L~�Wh���uy@��\�(���~���D��i�M"A����/��~{l�Mb�A�����:�f��?�&�Z%�J�4K�m&�m�D�cM���������fo���$�,�`�D�rWoZ���CA4i��QlZ�$C_�I����&[5$��f���v-���8G����sDm�a"���9��6��s�f�a:rC4�;�|�������1W�������.���1��4Q��\��qq��M��g%��QS`m��������C�:��9��
�*�aW�h��!��s���b�vQ���2�
�;n�������7�x��G���i3�v�H����4��"fJs��u+�D�C�#��q+�[�q!:{(z�5�l!���'[���9�@�-�U���5���CMz	�.z53$���5�H1��>;�58j�,s��6Fi�Y���X-�!���6GM���0�4�Dh,��/-}}����_}D���@�}����=E�oS�%DS+�K�/�l��N�SA����an;\y}�u�2��2Ir���J��J���T��X6o����������Yz�y�JR��+�������?}�Y�jw;�a���P����%��us���_7y��A��w�I� jeU����}���c��+�#)���a� >�z����4d����xO�8G����,�%�Kb���(:��� 3x��k_����N]��
ze�!s�x������qU����g�������>�6wJ�l����P*w�'���S�Q��`~������?W�H/��������l�N��S�������g���9�Q*4�������<|���1�
��7��=����Y�q���!�J�g�0�D���0��c�U-+�u���/K]x��F�|4p9��*��������������jAR�6�����t��-�1���:
�1��11�E:�����`~��5.�����{�_�����g��L^�����0��%�@2z>�8��F�����x�
.3����>��L%^<���T��:���R/�2�s����M�S��
hy���H������l�wl3���r�a�+j��h{��S�v�����v�z�H��!��a����=�K����x��R���,���	7U�#�3N�}����d\�.��r���8K��s3��S�{��]�x����I�2P�s.��\�	���Z��(��)e��^����.f�B�K����V[�g��,����Q�m�0Q���H>h��>6��������U��
������!Sy �t�z86���c;���VXM�0�����Fq��e�n_������B�h�w�����9 �����:MQ���fx�]\�)��KgF.z��
b#���}~�Ce/��6��I�5�8t�l��$�C�o`���+;�>���r�fCq�w������2������N�������eL�n���/e������Bj��ZD,s��q��l��b!�/R��_��#����'�c\���0Sxk [�q����sL��u�A��;9���wR���.��gI������d6�'<6�����h��acArw7����#~����`��^��	v������,�U�U���g��e���3/�X3����:������@C��;b?���/�j��Z�\^�b��8�����V�q�9�8�a?6�U�b"�6��s��	��-^�\�u6�����x2�C������?i�w�=�H
�������l��X����K���[`��/�J�3�o�s6��+� �DKH6g���	@>�V�tClM	��g�S��&�3�<?b�F�7���Z�k����f���cH�M *J���oO��Q�A*&��6(�D�&&��JwB�`�n�����0�u�f�;b4B{.O�Pr}D��HJ_G��;��MgR��/&�����}����
Y�F��~V��Vg����j �dN�l����Wu�����23K���!���;�n�-�_���a/�����4��1s�����>y���1�2X:;�+M����(���5������[@0���#�
r�A��� ���b�����>^j��`n�S#?)@.��M�>������V�b�=��>��<���'��y-6��r�y�Y�����<�8�r68�������8�;��x��P8;��2�xr�s���:9��s�u��������O:9��#W�b��Lj�
��G"5�<#k|�5��;rfN�b��^�s�Qh =%����&J�����t�^��eFn�����,P^������eH�fD���HF����/�?�[a����?w(�s}4���5�V�q?�r?\��>��q�EX"��Y��|�����}GHc^�[���B��-92�S�~�6fN�9H��1e"�F4",�a'xdx�)����9�{��>��:�aQ3����K�� �c�x��j����J�})g���V�%i��c_	&V���JR�}�� �F�p"���������>4���������Z�?RXg{���N��F1]�\����z�����5
��|�9�W'j������L�>aV�`�FD��%�
d��n��`���q38����\�<����v�����:s��7�|{��Q�K�0�$��<�����9�4�:e0x�kB����d���7�/��9�Ii0��:c����3�k��/�Q-�~����1���T�����@l?vg�W_y;��&pjO�i2����o��S�:�*��&��#��5SK��@��DQ���Tx�IE@N��)���ouD��y
<�J��V	�
k�bk��D�\����U��Wv`�<)�M���,�nG���^�;8B%�����g���S��$~�#
s�j3���d2�\��0	�0���9�}Py2xM��'��g��;��-
�*�I��/vH�f�lW�� UN����es��{	0�&L���s���3��%���#������l�C�~&�DS*<6�
-3D\�rdL��J�ZPs��3��8G�(&�Q!2(����q:F���r���e��,!W������s�����u�_���*��;���)W�����ym���SDQ���G�H��HJg�$��B��zU�H������;���x0i���S��R�z!�(������(������k���1����
�|$15� �x���%I�Bj��8_J�y4dh�2/0�S�G+��#<�NS#w�+����7{�
���������"��7���������a�b�� �,�����x�[S���ysMD�
���=�*�x�� %Ng+9I��-`La�W4�:�W����0@4rn��K�x�G0K8����i�C��x�J4K8����h�����,��o������:��*7���5�/�]��������[���K|��d�h�K\�r��4��(>b��F�"�����:L
}.�ql��k��v!�����(�+O�l��=�P�	K���0c?���t�h5������M�	���J�g
����	��^t��J���U}��$����D���{�dC�^�������f���v6V�����#��s�����n'���1�L^IT<�5D�����B��*}�������1�!����z�*W%y�Z��m[��Cx��|d��a���d�rP�������S��E��o��6�J���S	���@�'�������4��7
�6�^����.��T��,7�U������/���+m)���rH|E"�RtP��E�}�c/Q��?���;�Tt��(��c��P���~������
��o�t=a�[LX�������r����)t��5��u�H �(� �-����}����_�V�Dav?�K�.������|yb�	$�>���6�6�b������^xU�

o�:��S��Q�@���9��)b����i�'>�/P��v�{`
P�/��O��m����v�K`�x��U?~q�"pM�3�?P�dN���*��6���5�]5Lp���������l�'{8XTd��1�7�59�n���W�Pd�d2�:�M�Lqb���21f0:q�|�)�5;X&O�	o�e_=�6[.���3��b
F���������z�B/�U���G4��
Pg��3��XOZ�����h���4M��&���C
L8��D�n��A�&~?��~����dG�Li�]Si��*8s�`�b��%�J������)(���������1s����.'��;�[$p���3L��c=Y%o	,���s��x�_yrLx��t�(�����
�x3M��P��Q��������a����1�N�)������C��\�y3�[�V��5�&�C���-Rj��.���[B_�A�����hb=�$�QT�@�9���R|-�'��t�B��gx���<��V�):6�����y��6��e��O�����b�T�������0QI[�BoI6!(j�#op|�90��u��n����{q�w����]�G�y|j`oJ�O&u�*X����`���Y���K��}8�/��'u��;�H�/O�MD�A8S�6��A�����D�{2����Z�H��F�
���?^�L�+��6����Oap���?n	g�e�����)�{j���M"D��6gt&�:�?~�:W�3<�"�t����S�� ����4,�����j�������.���#��8V�����I�������9��H��>��D��8�s�R>m0��@���8�W�3�C�b`0�Stf{2GXetu`.��+�������� ����^O������g�Ks\���d�p�K2�]�h������L�1:w;2=�e�f���"��������)�[	�]��� �8�P�Q5���R���
p�����_�'��SE�Y���o.�0t2�Y����{��H���a8�7St�d��;)�{�QE�*�A����q����|�r�Q+?�8�T��7�2��xn���%M�80����(�wH�S���b�}SQ�RUD��*���L����U�Jf�9���lU�Jf�9��!lN����b2US�s6�J�m�]*���X���=�(���9��C����K]$��L��)m�t�{,M�0��9?��?K��Ni[�T�[N�:C>h��,y�;�m���f�L����W�t��T����F���7�
�6���
���TH*:�wh��:������*_�PV����f�U��i^�Dbn��%�����T������(�f/�c���St�����5�q������*����vW��e�z���Z���1�XO�)���h��}nc�`�>�(�f��}��
+S�~�^8�����'�����w��.�Iq5��(
�t���0�6�LL�%���D.�p��R��*�-S�iX#Y3Oq=�SE3��������m���C�Iu��#Y�NpD]��A(!���I�*z�|:([o����B�h��N���`���E}�e������,r�=�$y����D}t�Kv����g,s�:vo.M��n����x.�O
�%�����	��j��s��!���Y��W���-s��j�Zm�+�3����W`%�.�	�
N�E���6��b�^q���tP���kz�L����Y��[j����t������vz��DP.
���]voF`,mdW#-�!���!u��-�3�Ry��,���x��4�@�lB{SJz��7��h	�b�w����nt����&�������MD#��d�SCE2����T�����x���.�Atj�w����R������A�����8�B������m�
���n�wb��������p]����?Y�F��2�������=�����_��Z����Fp�a��s2��:+c ����\��_F��&�����w]S{��gl,����5�<��F~�)O@G�A,��hd\��<����DJL��,j'�t�x4R�:�F"�P-�$�������V"��=�H"�U-�����1�5F�XK���=�c�/�y��u{q��!��xh����b`+���n��r����K�$Th�b��T`R�IOV~��,��c>����`O������'�e%��.����V�`���e�j�;2n)������
����\���%oqVre�d���*Y}ys�����x��|��U<�Z��i|�"vB��ebW�<+Co�q��Ea���\������8�Hd_���
��[��!���2$����b� w&O�F��ij|/"���,Y��s����.I)��,,C�Z�	��:/�����������iv	��N��/o��X������)v	��.S�/s���9\��^�`�8��r���%�m�s:���[����a<�,��h�l��r1��_����D����g;<�Ko��"<���D��=78�t���=��4mVG����T��p�t���"Au8*L �S��pL�G8��4��P�W)���D�pe�/�gMP�w0��>�_5K���."WkLcP{9�KT����&�#:� ��V��PD��Jg%�>�\pg���"�����U�u��%-p����{>u�"p4N*�rL)\��!�x=�|rL��;7��L���4�Y���#��8�H�#���ET���v���MMo ��=�������^�<������������kvvO,^�(�#�;sTJ�^m�K�/iZ��$�f'wz�TA',���=L����V|z�}�\����r����d�B
���B���_�-���Uu���dV-���`��"��`�
'}�O�v��OI��R���Vu�SR���T��L�T�S�����;U��J�Q����HW����C���d���K00��Yh��^�IAJ����������[
��S:a����jy���r\�������H���Z����,��C�J
,����.���`G��}��-�96�]
3@���U�0����~��,f����kw@��7M?.����0���H�q���S��ztz=i]�$)Kd������(�'B��s�C7��Y�)�
�
�[w�
}!,��:����sZ�2d�.�_�c'��Z���f��a�.�m�ow�=����L�B8��!�h�(��{)2Yr�M�xQ��->�{SY��a���$�Q�KP���}�_�������E�J�n3A8X5�2� ��lJ����Dg�z�B�@p|�m��� 5~������)�t������Z�-���s8���y�o�����%��\�8!,���9�v�	����s����W7��S!t�p`|����oa;6����8� Zb���=�[����I������,���,�����z,�fg�Xb�f3��Kl�T�
��.��1:K"9�vc���8�z3H%b���3<���>@��]_��&�!NW��:��������5�/������n����]ov�QL�'��:���9��8�z3N��bT-n`|�U��~2X�<�b��o�Q:��l���@'�5��[�p=�x��\��,[�<��!��H,�4�8�-������XS�h����|�<{���<�ab��@0<�=��y��!����?�3X��N�����4R�����<��l����H>" (�>#�L�N���a�`f�c )DAA�o^m������U���x�)�&��"nV��=t�����R�"*1>2��K�=�5��u�p��^����.��EW�����If�c���p�b�;y��m2��@o�	�7F���=�gPe&� ��������:�����e���+y:1�g��za���A��x�������9��<x�%�g�*��|�zi�g�� ���gPe��A��rHy�$�����A���Ky�������A:�g��5��{�B��3H��|�<�����g�����]�P�~<�
x���t�w����+�cp��|Z���zL�8���������%�n~�� ��OMbO��@�q+�7'�0�B��'���|��]�$F�k�5��F���G�`S2\��\��e��lb;�����N�� ��
��2�{D�p
=��tN�8����T�g����?�4�c�;�
�zXM%��	��UBY���>�vy�����Q!�J�{bm�#�n����Z�'��}yn�	���,Cg���"���=�.,�Cz%�\{b^]^��v!�f�%�`3�D���T�!�7������9������1�#}���8�pm����eOJ�eR�c�0���l���I�gR�q���I�woB%��)��Q�1T�&s$y0OD/R���1?_#[:��\�����\��Jg��	��L�hSG��������u�Y��U���&t������b)�_2����0ARG�������N$�]&����|���,
��X�20R��r�.x2�i	a����^�������%�Kj&G����9��t�i��sjG������4p�f��������9'��v^B��&p��re~��D;z�o��8�����"�|��������s��B�Nm�$�HI����FH�nC���Y�{y?�p����O�u�u��y��<Z���z����Y�GA���wr����O�^g����f�\QA-u&w��&�KI�zr%w=�������m)�P��(A}a���d�]6T
<�!*����q��r�y��^H\��{�e�z���+���f�I]���@�o�&�T�9u_���W7W�|�5�:��Y0����@{�.�E-f>q2�7��!7	)� ����	Vg��:���o8EK�D�
�����Kj����"'��][2�������5|��(d��>\3����q��"��e�'��u}�����
j��u�(�����}s�`D_:�7��������������j���J��`+�9�����%T>3;_�������0��X�Y�A�/�2(g�����L���A���Z�q���ser1��g�IwbN���`��f��(�mdI6�{��gA������t<����������'�:�e���2����f����Wxqu #c;!�V|�oa���/�!i��o��A����@�DK4A���$��!	���-�y���� =�A�b�9u�~�����kjw��sh�Ce9J~��;P��f�<�n��J�_OX�O��.�@����MLd��q����i����l��a�nu��]��^�Gu�$���K1���L=J����
��=*uSZ��C)�)`u��M�RA���Rx%�L���S �s�_Z$���{>!�!�;������2{j�I�>A���Q�'aG����)]������C}���[���W��	��'��4�Qw.�b��z�����7�
�#BE������7?�����������)�bu%��6+���>��Vy `:�)\�T�G�v�z�Cw#�.�e8
�7�/F���Me3h�6N��O���V+a,��6�����f%���&bn	b�����1���i��(
��P��(�EyEa�{j{:w2�G�H/�aT$=�'�����;u��&b(5�Pd��s��Y�C*�m�mO��
J���W��~C�%<�XjDlR�&IUw��K���6B��Uc3��%j���*�	����&��1P��q��`�����bZ�xv�D�������(���aK��r�������{L]�/s�!@*?����Ss��M$�%
��T���f�W0�%c�k��������a�]�`�@��C�����L��`@)��w��S��^���6��������)q�@��c��tK,!*���Z�����xg���
\g���F&��S7����k������AYr@y4��7p\��4�`����f�6m|y3�=�8�7�M�w������'�;�M�F�����`��)��M$���Dc�Lw��y
'��P*�W����c��gO�D��������c�������K��+bC��%������������$���������S�}84���S*�Ta��hBR	U""A%"v��^���L�C�sH��'h��a�g����g���M�V�����&s���g��aHPA���$M��A��K��'(������H���@�sN�HP�������1���n�w�S#!���s;�~�*~]�S�38b�?�W��t5����"�
�hIR�%t'�	j�h.��d���n�g��]�4��#���T�j��#�#�U�l���N���Y�#��7f1t:��3>�c[�<�@�x����������N�������"��=�������U���~�(���f���g����:����A�>�����7��L�yFX(bNNzd��L�L�DM�i� I�L�����7����~F�>��+�S����E_#�o7u�������5%��@�m}9�R��.H�qR�s�	:��o�w�����48�������Z������������d,��Y���T�xdq����02g)��6U]�4��=�Rz�42c)��/��DG������^�=���7�T�7�p>[-�%�&�9	�+�a��dv�Jl����{�oI�#O�w�������-P����Gj���d�q��Y���Vq��MA	��������|EFD&���xr_
>�����x0�H7�_(�$~�J�R�f�Z�v�����C��l	C,�%���C���%�-*��Zr���^.�<\k"�Q���k�]�P��/�����E�LyC\����uy,t��]���vx6���Zbg�x�������5=�
�)`�D$7V'uK��P�$���lx�����'�<8W�Y�{����u���M�r�&"�oF
����[m�F2�n���n���j.tc'���+Q��[
.�\fh��XUvX��I�)tB����b����� �\�������������=��X�)
�������UM"MU�;��
���_ >�yR�u;��<��?�|I��Z��K��|���yf��&@y},|M������/�q�k���_�h<?�l^��^�r�w�7e�T�d������s��>\�yy����9�,}��6�8<P�w��`�C;�N����xfN�2�E1��t2.>��w�/-�I��x�*�uB�x��V��\"8�	>�|��OIdvB����(�W<��w��[.��8��Q��A������{I{Ac��*	RRq�������8�'��#���!�lI����=�T�Yr�[�n��fC����j&��������30��!�6��Y�U��m��d���x�.�"Qw�����*�L%�O�+����.�l2�X��0�~���E���3��L�#A�(�v��b!���Q��5e�-��@h��m�@>��A�zL�5��D��[X7��Y���]������a�L���(�w����)����[ 6��hg��+�q ^���^�]�,����&�u�������2Q�����a��$��#�U��=�)��Z�)<�`<|$Y}���IvG�Md�����c�(�����T3D��+AI���w���.����r�$%�H�Q�G�@J��E�2r������1#%��K@���!U���S��e���@�E��e�*}��x^.�"4���-T�Sa+��tT�%�� �N����X&.���7�U�1�����{����rMK����^��H6���%$�	r;�.�i$�%;��";�d5�q��F�Y���-/��H6p�!�]q��l��o���o}�y�-G�Ym�1[rb�� ����,f������B��}���N�F�B��~c.�5���7z.�>��>C��L� Y��,��+5��)�[�����)]LD�$(�RH��r-	K�+*��#A�u��$��	.+�\��{�P��]qY)xr����D�B'e7��~����53����A�����i��5��|:i������3��kf����gJGmfbbQM�55s�A8j���R;��Xb�`M��J��h��S��~-���f�
h]4�L���\L���W��1}�lu�@�BX�[F���$\p���$��m.��FY��|���G��$e�QWI������8����N��t@4�]�,5���S'�],���&hBgO������bm�B�l�	����Vt&oD�m������t&����%'hB_G�4AM��8#'hB/n���F,�41�9ZO�<��^	�&(�3���rB%UO�	J/Vt&oT$!9���q��d��	��^V��&^G��tO/n�JgP,�T���8A�DM�=�@|-��������>W^qn�=H*�._���W��|Y�Z�����E��bw���Ji�@���y�������qR���s���;D��=�Y�
AU�Al��agX,�����=
�b-<4���x�y��{�#�[|h��8N�f��#.���y�K����~��m�<�{���D��B��N��;�E�Mh���%
�(I���1��	��)�'4q��Ga�R�
�
��4Q�T��Gb2H1��m:l���a�F��q���I.-T��&>������2on��VR��4�C����9�6=_hC ��Y��!��(����~�u|���a6��0���i,��A�D'�\j0��u,���/��Ch���\�F`dV�e�Dtl����}5c�#3�XX 3������y=��k����c��[�P���������/!%*Y��aw(#�M.��<cT5���;�����gSXJVei�	��+�/=�4�������^x/��t��BD[�q}��O���%���?�{��
���<cN,��a3,	��[h}9e��M�c��=�rF.i�8/�\B�=3������o�n
��}�E!�������&>� �x^��_QC��*7�������&��%4B/\U�A�@�9N%=3�V|�I�,3=������-���[�h[`���
� ���F�TJ�	a�Y���lf�����eG��/���t�����1�i
�8���Fgiy������V�\Z�7	n8+3:��ub�I.S����T�v�%�SK����gS��Q�B�����@l��T�������vn�6��r���ZNC$��T��R��E�'��L��O��9�rl�<\ 6�Jl�*!�.��mu�����U����Dz� Dg�H��?����=�����(��!��k�9�}���*�@�{tR��;jG��U�v�S�
�SE
^3f�xp�����2l��9R�:��(���K�����)y$�5��������$�����o}'q;���_#�j���2��`�W?���xv�D�/hj�CQ6��\�<��Z��RljeC�v�[ }��R���P�%�S+
�_����A����|;�w�I'
���Sb�P����
V��\i��E'�����{�~�C(��-@mTQ���k�w�H��oj����vXE����)���.�7��|u���ea]7_t��AY���V����K;u�w3`�/R��C����r����w����tk������o���)��s����U����@��Q�l���g��P�o�d����b���]��j1_z�\��B��v�9}v��%c���� ��vW�'?�p��1_zbO$g�vs����T�\�G����"�V�#�{���q��{���e3����(��+����,�8��{M�[X�VW�g�2XJO�����_n�����o�}����Y����}��w�;���x�`)=�a�"��a�U�/�f������9o��|�z'c�S�	�	xtl���\����]!orC%_2��}�KP?s>��d���]Rz�2-;�e����;���P�E.����n�b�2��v9v�#%�t��*NPC���-�P��OfM~�juh�)Wf<���>�uv��u[g|������30�@��������@��!��	w{D)�����x��(*�R�b�U��L��V�����=�@�����^�ZU"Nsm��T�]EV�����Ru�V�*�#N'	�&�D����.�7hE�=2Hq����'�n���@���9�J3g�Xk�x��Y ��b�����.�c�F�u�G��y}d[�gv ���a��`+��,:	>?Ve����d'af�u�>�E�����P�?/�Q��3�V'F����6h��������c�C��K����@:����WO�8���u�Q0��_�(%�����NK��[����|Sz3�����?� ��x�|2�������=#��ri�Y�6H4��u����c�-����|2o�9f��7"�3�'%H�!gm�qr]`0�#���n��?�:;�Y���O5X��S����7�S�:�xz�]�7���c�m��38X���s��b��
Uz���a��!���^HJ6_H�S�B� b�b?:nQ�N�QX���q���r�M�$�����V� !TF��fG�V���b�+U���V��(���F�*�;���y9�p���V8���}$�MV-7�F�NW
pi+�j?Vl7��6�7�����d\��4>���
��k�UkC���ZI�vl^����FAN�JkK�Bpn^��B��F~��.�[��/�����B���-�����8k����g��6k�6[s���Y.V
�X����e~��_�nB��c1����1I_�������n���g������(��K�4#�>���D@�gs�4�pq2�=�4.��HHx��ch�	W���_��D\��d�
��+�!��8����	��=�=���^H�>^��v��������^�������P4�|{����9�8�G�4z�o��/���C���l�x�;O�/����P����!���Kd���=D;M)�z��#<W�/�r���J�������|��X��zu�j��#�\�/���8@]�Zp������*�s��K���tB��i������fq��B+/.;�s=3������B��%[���@.S��e���l��-�p����g'hZ"!vUw����p�ee�/I:�D\�����S�����u��-*����S���Tv�zK�T����,�������lh�����E�*
�R�Z��G���� 
�@�P��}vd+���<
4�i�/���Cs��7�#��wA�����L~����p��@�]�%zA'S<By�!/�rT����+��Eh38����,g��u{���!6�!�zkw��n^]�"�bi$I�3u[ ���H��".`�
����D��:pA��*��?���~��}������V����^����%��S����5{��Z�7�|�\e��������:��G#�M'���c-��5��V�����,�Zclt��h��K�fV�8���=_/�R;/^p�@F���%;��y�:���HL��G8�j'��V^��tf���������h������k���Bh���=D����L]4����e�.f��%_��~��w�p���V-�����<�i������w-et�x�#�\�������}��=����|��+����q�6uq�������b;0B�g���7���K���o�MB���w�#��1�{�w�
�Z0����:�5AS�����P�%���F#�����1����q,\m���9R�� �D!9��c)WsY����c���>��Uo��s�}2�q����C����R��>{�r.����G�x;�{��5�6^{�e��ck�*�N�5�����M���{xN�	����~��K��P��G���0f��-�r.��s���W���{j��U�ge����!��������+��>4�<�}��4U�������@�����������S�u�>?���m�O(|S���o���j���v��o�����gT�;K_����+���NK��W�bb
`5k��{���?c%��zK���U�5KA����b���_��"��Zm���
�����OK��G���^�<��w�;+��;�g��K���i.��5@��<�] !19��!�b������DD�t;A���H�����>Y�����[�U��d��j�Y��PIe�����c�U�b#
g[����X��/�8�OP��NX�q�_�`�;$�Z")2G�P7�6���_�b�|G����XA�L'1	l��z�����v��`l/�����y����X�9='���K�����e�{:��si��%��L�q'
9���N�W�T�����������VD�h�:E�I���[.��6Q�{�0����9V�=�O+� ^�Z=f����=��r
���k���z�kz��m1���PL���H�=@B�;�d�Z%r�y-����`2sk�nG����$���l�������#q�>���*��<��~�!89��p�8�X��(�Or;p�9�u������D��+{������uD�D5"�F9sZI� ia�i���8)N����Y�A�����G=n���:�E	k�nQA���<�,x\���Y�M^u�!����5��k6������y�z�	���|��
qH73��N�x�2�1��I��&�d~.�t�����=�}r���j�0����9�r&��YAla��K��l�.��w:"�i�{��$HN���6�YOl]��V�k��BU>^.�����+(����mm��6�:�n����@����[��?zfJ�@T|d�m����"%��n �KH������py����2��b��TT�O��f�C�>�����R��P�F)���e���%�K��bS��P����WL/
���w�/9�Q��:|��2[u�q:��-,*�!�Z�	;��v���Y,��Z+�e�����uRRY,�z��O�QWa���80�+�����E�ei�0�,��kY�b�,�������*�o=��88���J�5�5���8e�z��Ft�}h�G��ps�#�l�t-�W��G����ckjo�������|,�[!�uY������F[�_|�~������r���������������L������������)m�;��~�Kn��E��9��h��E^����F���>K7�`L���k��S����Z����O-i|���z�j�}��
�����.������[������dc������w	���H�^������%���"S���E���h��]���o-�����,.����!,[��Xr��f)���C��jF�B`�}yhdg���=/a��}Q���b�Ma��l�2k?T�;
�ec@���l�8q�$��q�k*[y,�Z_���mF��i���M�h����r���cz:��*�0��{
'�E��VH&��X��� X��V.�g��M��5 �
Hb���.4Zr����.�
c98�0�^�� 7�?5N}G@e��O�5����`9_t+/C��/�(��6=_�������0Z�E��a�L�Ok��l��3ohF7B�1�6Gl�)5H�fg���,���*3r���V�����!��� ���-��5����Z��E���v/���nA��0��������I,�jZ�4����qZ���`,GKz,�6;� �=)6�y%P��:�$)F�K����-�M���%�`��s�`Y�z���`9�ua���]FC3B!��N%C>D.k�R%k"�s�!q)����(d�����.bf�LX�N�6I(�� {�m�t���&!,{��[�|=�Vw���%����Q���k���j��Y���Y��n3����u��	a�GL���A6)1�Ld{j1�O��B��5�%�k���s^�Sr�e`d�`����l(L#�RHr�d�"g8�5�	��"R�h�4"����2��{1����������	 �(���F(����'F0R�`�-o�������6�p�id�zlu��F�l{��M^�F"c�V�t�3������3��$6hF4����?&��v&u'IF,�x#��F�8$��Q|d��
�6$3pf�������N{���)e�l�Up)��R����W��g�Yf����]<��o��\�[�sA���:��<4?q#����
�e&�`��t��g���1-OEV�1<u����{-/��S(�#�����'�Q^�vo�]��O��_�?Ny��*@z,�����~����Ry����t�O�H7m�����$��#�t�����AL�I�����oZ�����.�@�a%��^��s	��t�Xd�2-�|�Nh�������]�`�K����>\G��R��E��I�� ��]QW�	��{����N����9�=�����(�������M�f����k��l��rx��'��>^����Zy����K���|��w/?����C�+Q���1��"ij��_D��^��U+
I�=���bU�����|�r���C��>6~x�.�|��r�
�m����c?�1"��T�	�9�����Sue��^s=>2�����6#�W�����'r�������M/�g�x�����C����\s�5o�;����>�B���4R�u����F��X�06����>����V��?/nX/���+6a�3v�x���=���^�
�������.�i�.yy������k���}���3��&��o{Z���6����|���{�_���i���E?��H������C����<J��|���������������������^����N���LLO<��^���C�d��r5A��g���u�)k��o	v���U�9��E��.�I�����:����G��/�e�Et��}��U}b�E�^���+D�����*�����s��k�<�%��{��^{��zN���B��rVv���)^��E���k�Q�D������>�

Z�
������I�����5(�H�1L�L���E�s2����9��	��1���ax?���!8��{�����
h�EAb��)\+�t3,/)5lf����|C�c���5��j�'�6�g�k�0��1k
�Np�G��~��D��wGD
`�����S�g��)��/Q�1��:O����a
���g�k��t?�[a�!������f�&�0�����������wb�����c�Y;�z��ewb����G[v�z�3*������jg^_m�E������j�iQ����Q

�V�3Z=���H�PH rl/�����]1cF�)��,���y���x�����o�����P���	3�=l����7L�~�1wpyw�3��JE��O3����;������ +�0�@�r9j��0�<7����_���Hd�Y4�|����i&
5�bN�b�i;s�0����B���������j�����7�m�#����rtN�E%�"�@5�������{�����}�}J���;�������PY�Gj��x������Rd�C�j�F�=�"$v�x��)����-�B��M�PvH����i���?����]��e����r���.h$�0�����{,�qgty8�N�������0'N�&	���3�Cb�/uv|?-H���q����prx�X����f��f&<|��!�@���E�<y���}�'��,�J����n(cF�lr��o|�)� ���"sG8��1���MsW��^h�����I��S���0_�X�]��[[�5�j����l��I��h�� �������4�{������\6L���d���uM���Pd�!4c����U�Z��*b�+��XL��
�<��#���~�Q.������|WVJ���7���o4�:p+���B��IZ:s�ik3>��M��T���!���w�
�}�	�'P��"�eE��Q�4��"����h3q���f{Y��t'���#�h�-���~`g��m����B�c{b���f�6�������G-���~`v����vL����!�;4&�&�X1����k��5_�{�U��+� ����Xy�:
��(�+5/�x}��y�[(�l��(4e2T��rgE�m�dRP4��B4xi��<�U1�5PhJc�
��:K_����Mi��0��A��k��o�*���������u��o�	��a���n��M��^�pP�K
h�w��O �NWJN��S7P�����(��()�z��AuC���Bw���<[��B�G59wh��+�0��+tA����
����d�&i����W��wh�8�D�T[Fp���$�R���4�h�8j3�W8]�����9�8.<4����q��yE+����yEK��2A������%x�s�y����xn��1$�1�Q�6��G6j����%������%0FcO�4�@�x�Y@�M��WX���s>��lj�H�-��QeE�T��W�|��\}��FG�$;����iLtV�����	:-����D�d��
:4���GGG�2�� }�.�tIF�d�@�����M�"bot��<���x��W$�6��Z�&��T�	��Oy��ht�7�# qd��r�����pL�bB��!'9t�	6�{�:K�O���=����JCG��&�`�F�����x!��%vx[�G��vp;B\ry���0��l��b��i���@):S5�zH�GZ3�������k�����*LN�<�@����c������������q�>�|��"
�bFR�o����N�L\��q=���������'��_��H<<�����K0�N����	q5��.�`8�����J�z����m7��8�L>�4�����g�1��^��.!���w��KL��f�B�%F��#�TO�\a}]G��L��`�F��2�E6{k�-%�������l�,�:���c�'���Y���m}-e��$$~�E(��{��2�cr�,��z/������:��E��r��(��KPg����/7��D��5�C��)��p#(���*����&�����,���\�d:]h�+�r��i{���gk�J�����e�?Q�_���%��CZ���Y!������F�(f-y�����|���
�<h�&�
�c���k�v��1a:6P��)=t�9e+���r�F�tp��j>��@��&�~"�)o��<�����Q�xQU���3�t��r��S���9LG�1+IL����0]��iq�)qB2��������Au;�@i��A0�������O�=����D.���sc��������)�6"�9����4b�������C� ]��Z�<�!/� �8A�e7�>������,��}bF;���f�sZ������k��!�����E��N>	Z���*�Q<����ql��R�t:d���A���c�FV�u:d���A�)��h
�o��y����6W�L�z7���G5�;z�!�#���R�Hx�Mc�����':x�������'	
���(���8�����*�=]�T��V�9<c����v�{�f��4)�I��`�>y�h�L�+>]y�
y��v����R�����p����	,S�����Tf����_���?Z��/��\_�������SV�I�3�����
�������C*V0��e���reC��$��aky����[��
q�mw�������f�\��J�����"�]v����#�����:<���v\'�K������j��y��6��{b�8.[`b9.�`bB9���+�=1��}:�'�����s�q\h��I�8.4��m����g���Bw���V�
c����B��B��pC-j3�N��V���@�����@&\�\����Ep3dj
��J��	���u�� 3�u�� S�u�� �+����~,��������wY���������l����,��!?���c���C�*�{������;{u�M��Q��1����C*0�l��j�u ��B����I'�.�����$��D�I
.!q��8��\�s.A�P|��;�e�(�kq�������hdsB��w������+
(��3�U/{G��oE-��x����j�vU����%Q�'�����Bf�s�P�S@$��j������Z\��!9V\�w��"\��L�k�|�..m��^�
�L���o��J\�A=��{L���*3�7��xE<Y0��>������z>�u�sv`o��Uc�L�/����
�~U�D�e7��:�
X�$[����`���nF�Y�#�*I��������"?.2�x�"m��I��{f&��>L=�M-������L����Z� �9����������9v������I���\FD�$�mt����$9�?-b,$�l���������z���g��A��]�.@p�q��������`n�2���_lB35���6��4��]N�	/��\�I2o�T��b�c.+��|�s<������'���[Q������u�qz�!�P�B���lT|}���(�v�l	����-��mCX��F���m�$���YH���}�����E.�p�.�M�iN�C�`&$\�#'	�w6��J��pk��}�X���mtV}=4����������`��`5ZH��p�8��n,��5������scC��Z�`��(���9�������$�l�0�����,�-v���y<��=S�{<���|�f��&n�����$�7&nzZ����h	����!l?��TDk���p7%b�Q�I����{:�	�!�]
��p!����
���h�����>*�4�FS�%��j2����4���Gp�`8ZX�[	8e���O��U�>E���@������)��.�11T��K��$��u���nh���Vx>l���vC_3���e�	�����)�6�h������n��LX�X_�y��@���7�.}���q���S���5w]s� ��X/o�����h������}��/�F]=Gv��%���
 �����$���z�E��[,
�W\-O��R���R���ECd�>W�vV�����{��'/�������5����v7���cxu�$-�me�g��-������H��%���<�n,���8B;��vz�w��QD2?�H:�*�"�#+d[��>�b��tJ[�8c�c+dk�����
�������X![�~u7���y��2����l���v����A�;{8��e��t;
������u0���c���dj6��9����?XO
F��e?-�9=���d�$D��xz�t��r$9�k`�y2�lL��z�3���������"��8�V�=����
�0���i�#&��Oe=���oIG�-J�r-���19�~���_{i�p���N�zfmZ�������S~����W�q��JA������KQ��Wn��_�������su�x�����7��r������W�?��=c�����.q��g���i*��	�Kjm�<A��3��X�\��}�9����{
l#cVl�4@hAT�C�TR��ax��	����b��N$X�Ck�%�Ba-�`�[����E5i@a
��&��p�8����
nRP43���l��-F���`��pX��h�;���Q��w,XD���XZ�FES�������c	����������B�H������&�Tq������{P(������	��MB����,.������}�����Y$�E�F&
�7�q-la���b���t����z&4Z����Y!?j���hg���C��A{�>�lv6K0{��c���f�^L��:�I�����@z�Dj�2��S5�1uZT4�	]��=uZ�G�
l�@��zm�k?y��ta�5OdgR����#������io*��<@�U}�R�mH9~G�;VY}	��W�g��)dL'�Q����C�h���bg{���=�:�)�6����jV���W*�7?S�60�j�������6�7]o\��ps����.�M�������8��si��|���s�a����)��O z�]���v��k�24m�*�NY{y�?v�H�jL7���b��*��{��e���cG7����������ZB3������I��HwO�����S$Q���G<����|6Es�v@��c���S��Sbph�TU�VV���	���:�!7o����}�F�9��\&��I�IJP����o��6��{.��R�{�(�W9�1�D������{d5vH^euF��3���"�������b���@�3��D��/V��HP��4q� �#�������L�&��IG�1�V\J�HQ�%&�tU�#u��Z�N�MIl\c5HT^5L/&�5C�F�J�I�A �i�Ab(�T0P��K
*l�Q����_=#i���*�$��8��JT9��I&-K��?���`�i����c<�a��0������K�������Jz'����ik%1�9���%P{i����Yj�N����w�}���Vn$=nC��rg����>PB��OtZQ}`�94#1��6�H��h���b�)^�K������hK��*�-��V�7I�����L��gv)��c�Q9�U���F����5_y��B$������.�uw[A~����m�%"(Cm���|����������%!�B�������.LQ����]����N2�"/������Xl(mu������l�h\��WTR����"��]�5�|�'*���_�d�����{#������	��� �L��6~�}��G�;����Z]����	Ht5a��"��H���$s�!m'�2�@e\��R���Kv�o����$A����|�l����lD��{~|�W0�4u*��5_��Z�(e�E��59SD��aiE^��*�A�z���u�H�y�R!T#�f�sf������Y}����)���/���������<�0;�^���������193��t<��d�(�(e��3:����N9:<gr��L����[9�Q!Q9���X`m�Q9e�+9������+M������k��2�x����3����=f�Z�Y���`9D)	�5��#{<���\��	��J8��c�t��z;����Au���k��~���H�S�r�e`T@,��d7�	?�k�w�������~�@W�^��e0g[
g�|�4��x��)0��L������\;�T�����;�������6j�f:���3�
l7�XbF�w��n',-�_���{
���i��O�?@�+:���a2Pk��?��3�����d����} ���e$�Kf���L
O�e�Zp�'�t�����";��>'�(��$;�����q���y����U_�~�%o�g"]�W|���jD�Tc�R4y"O�/��G���V�r9�6}����1�9.�9?��'��D�Hl�4\b}���d��<���
������5�7I't�cq�2��R������������a���:�G����S.��)�n�!A�g"�����}�
q����g�J��`e�#5F�%���
B_x�������e��`8�Q�P�"�
Qv#��Nn&)�k��Dc�F�z�c�^��$MIu]W�_o�,�����t}��V	����Qi������(�J`�����MW��Q`uTyC�E&�/2�a��Z�*<_��}�	8��]��dF�d#�S�~!&�zi���������+�����;���^��@��]	�/�L;�OS���y�$;�PS:��p0 ����k)Q��T��;�~9^��0B����F:�����A��q#T�s��)����8��L����@9�0m\2L\�0N���.�"c_��r^:�K�����\/���^�#���C����W�?]���b���pCx��G���V���Z��GW���������{�%��p*���'������0C�����V��I�e�n���ui��I�'�A�kD�u����Kp� �LY���8�Hc�
A������}+P��t�D�m��>B����
\�=������ \�}�7������&������Vh����^$�E&{��e��I
��?w�k��N�p�`Cl�FQ�&r����\�1��/O�U�=y�Yd|J�CU������f�&2�~�g%�u�$J��.q?����T)O,��K�C5�Q�V���b���,l�:&�{�s$X��=�^��q>�>]�hE|%a�����lC��9�r.�D#.����8�����=�vv�N������y(���8o�����L�������R*1�hJ>�j��F��^��MO�>E��^���n�9�.G��{����R��M���V�.��;���)7�Eu����7n�D�o�����f]�-�/���	����
�6�r� 8���Lx�	bP9m��l�U�P�-��{4%�7�����w�x�'�d�;���|6I�����X4c�����%B�"�&130�����a�)e��4p��$�i���]�A=M�j=X�:1��';Wh���������n,pD��@0�������*\|�1O���������mL3�m��eM��6�"��&��-�����j/��*������fT�o�H��N�a���_����S�����6��CFNeE��������;#�4��J�<��#`�e�To<U�}�>��8I+�8����)���J�8�n��u���3P5$��UC�)��@��Pi 
J=��H4\A��0�� E���N����9����Zy�V�SVdm���u��c��s�Vx��U�tG��������U���jf�����	@�����>�G�X��	/F��LN~�����c&kN��O)v�!��1�!�FH�����,����?y���s�j0�QDv����K#[#Vj6���l7��ky��p�{�Y�g����K��������p����1r�����9�n��Q�
�d��L.-�/�&r�Ci�|A�%���0�p;J��+n-\D	;.Fp��x4���Df�,2>�Q��$?�����	I�����
�c@����Eu������1Y�P����������[�}>-I��%�>gl��}JyeS%�r"���p��-�`����#�w���M�������(� #��d�&+���>����.Apb�s��y�{�t��=�x�0Q����3�p����[fT^��c�d��T
G%��M�������G�7 �t�u #�p�6w�2#���N���?�h��	���"�@���?K8lP��	��RMS
���E��Xr�R�JP�g;�9����?z���_{���J�ltK�&�*�����: ��S
�[0�|z�(+�i���	_:=!uo�u��%$jvu����$���s��n;���:��(�Qi������~��)�O��T��d"r������^?J��������6�+�W���g��{���k�T��s
X�>^���)�Q�u�@
�6N��^�0�?�
"��v�|��Q������+���~el�z`Z��j��Y��R���"{�x@^�*o�� �#\��"�4�jA�{�>;{o7M��p� 	���B�.�6�"�k��F�D8�{���� dW
�j1��[�\�-�e���:"��B5�v��:2;5���=���v��D�zj �g{�=��7����o������&��\�a�����A8�����K��8#
h(��gZ��������&HrTdM�:�����T����FM�w�!���<�k�������3x|[B�?,Jb���P��u��M�6�+���������>�}�7tl���,3m����4iY�|�}���C���^��h�g�3��&1�|{1���@��A�1Z���&	�a�"���$|6��1�v�uc�N0��j�C��[�=4H�-�W�Z=~��k��x���l�D5�Bl�uJTP��Bo�L�<f��1�A����G/��R9�6!�v�,-�A��^-�C��u��]G�:v�������-���2�UI`1[=[o~9_LV�%�-�b���6���a�u)H@�Eb���|�����
�%�n/���11��,��m��Ctb��,����<F2s����$W�e<��;���";����B�I����
hL�6��e�	��l��	P��
�����+wSsJ^rX�)sV�1MW���ea�$C�Q���Q]6�6�j����E}���<�r�k*�j�WOC�d�,��3����������fd�^��%mAI�������g �@���d�j������_�������e���(�_n�(LV���i�4.s,&���V
d��w���
�\�������������5���9_`�E�f�Q2>�Ws�����%��b�osW�Z������f//(��l(��E�@Y�Q>	���h��$��Z���q��Z���C�U�k�a�~�����%�U�R�J�5Py�5l���B�����L����<+N2z���E�
����;��$�������/D��)���7���pts������H{3 ��=Y�mC�)v��=ps;����#X,��f1h����H�[
b����s�x��r/"}���k�t�
��Z<>�O����_������*�G���&����T����h� ���BR�w��+A ��~�W���B,�U`�f���� �Cc�t��"-e�t�:����N
#sb{��i_����}��*��'���	!)����Y��Hi@����/:P�p��A:y8{'\|��Z�yjW�����z��^���i^���Mku���^��Z�l����R
��;�T����6~�xw�~��~S�~��u��o|�}�!�1?R�����b`�|e��5�4����P\G{N��|���&�����%�=�`��N���]���g��:��O�d������
�<���4<�&O�bb�����K��*m�&�5��.�A0KD��)����u�������6�����69�mCljK��^F�)���D)&fQd
��6��$,��,�04����+���D�wZ��B�cc@���ay�T2��;VY}�qh�����F]&�s���~���8����3�{��S��<�uNG_�/W��_d���jIH��c��E�������/)�=8VMo�l&$�1M$�U�Q�M���<:�>c�����
b.���c6���H�F>y�a��,�f����Hk�`�=h.�~�?{��7����#�\�|��g����?������9�z4�������//�������u� �4���G����
������m87�������8d�1��S��9k�k����������Z��8	�g\3:��F�-�S7&���k�9u���It�k�<�p���)�L�~p�pq2p�62%��4^�1���J{�j�:�%]!�'p�A&_L�g��b~����m\m�@Y�����4�T�HF���ML�yhR�����>�9�����E�/��C�k-�z�������<����A��QS�����\T7���{|�"$�H��J��ez}�x����_�Q>k^�a�V	"��*��l�+N���� F���Kw���G��o���j�hn�,/��/���!���

bx}�l�F�S�E1�a����Z`��Y�u����M����\0x��M,Z��Q��:����h��;���4`H�$6-���������O�1F@�r,���X[���#���m�0�L
]K��EC�%�jx�X����k���[�����5'����F�(�u�V�t���WH�y����|��+?�UN��{u}e�7
���z�gt�'S~��])\�����#/������5�����Z���=t ���\�HurB5������V:-�Th����j���R����z)P��6'�R e�-Gg�����������m�&��i��������*�Q���r��V�M�P��tP8��
�i@C���`����[F�"DKG���M_��{�x�b4�%�L[H��q�k��zA����|�)>?����_���������F��Um ������
l����
b��(8pK�W���,�/���*Wh`E�D����7�i��Pqh�=�(!9bTZq���~1r��&t?���QO	��RNQ�����.D��!��b������MbX����I�����_�3���
�.{���������&��}W��l�"�����\�QM��V�
<r�%|�y�n�v�r��8�6w�f
�����5[p�����������rNE����lF�u�KbJ�h���x
�����?��k��������5%�D�8n'������8�E����:&9������o������*m���`Z�z���&5���u��:���e�r7^��&(�������S���w!��HSt����ho�������H<������P��w���
l2������]��
�8����'	�zw�����$��2����#0�
����������\S������_�ed�!+�]���D���$�T� >�S��2��S2���'B��
�r9��'�J����}�y1���:p��K���k����}Tr%��S���SK����~�����VD�c����e�^k��J�$���$Al*y����
�p�zP�x����W����XE���Y���^_!H3�0U����Jqj~��bW��/05U{�w��������R�v��R���[
CA.�,n������#0?�{��b��D�I`?Qn��e��R\�G�&��^?<��'<��{��z��������l�F�]�s^��(��4/���;>kx�-����t���XWM�5O
O�yg6�y��L����W����|^����g�A�^s�3��������������bGb�Ou�E/u�OcyJU�x��b~z�8�j�|���O"����!u-N�}���$�	,v���dOSF?��q���-���7O�f��8��sN������[�
8J������R19ga2���;�\Kp�V�9���%�vG�f7f�H�����~��
n7��P��A�	j?���l5�����u�����u�@F������� y@9C��q��P^�v���6t;g�P�||^�<�_9�3G�� ��TK�� YI�(�e�|^��Oi���ib��DIx]��9p�v>�p8��Q�	�-)��%4�#+��A���f'��M4U�9f��*I&s$I%�x�:�K�h	������(�-GN�G���'����o�N�zI��S�Q�J�rM�7NK������X�)���e!X���0{ ._2R��'�}�A�J���^�Z�W�A�������lDw��3F�9�������"�\�S�>/s�g�������L�IPB��;<T����y��++�
�B�=�r@����N������:zH�7jl��
x=gu~<��	�U-�V���2��W�	��#���H���+B�0��R��cP����-��m�G�bz�BzcS$���i���#9��n�[�Q�E��
���J�����@�M�g���v���5�@�l��dO]d
`�;.���G��=�k8�}���bo����f+
�"�����j��(ZE���6��+�����8<�7J�&��������D^�����wv)��>>�q��SGC�9n������CY�=�8��U��'/-��2S�57�U��z��k�]T�t�,�c���8�����C�Z���c�����2����6�u��KV����P5c��,�J��O�[���u@s���5�>������z�fW���y����-�j�8���5��4t�n�����]
��2n�2M����%��������*�H4J�����8?�\/02��
hD,���U�H9�'�#H���������ZHB���6![E�m!�& �n�4N[�p�=�%m]�GWMi:ZM����k���b����_����m����x��j�T|�.m��������F�.n\8��d'���-��6�yw"�BS���t��T�g�f��K)�&i;�*�aSu2�����w�[�.k����~ '����w����N���������3���R1�����o���Q`� ���D�1=�C{��ps�'.*"�� 3EM��P�h����
��a��/4G@SQM3" �e�,!�/2g	�G��szHtK�||�=�u�3�m���`��zl�{$���D�W��d�-�0���E�
0���e�
p���@��Be�
Q���}�9����f����l1�eO�N���%c�1Hy���"����
S���rr&`�?T�����Xp�I���<mM�eu)}��o�,�}�����T�$+�o������'�����uF
�G#�bg����Ev?i[�wT;�S�E������|X���BH���`_�����vq}�A�
z�����O@�w�����Tr�x�CSs���UM�,�N=45��<F���<sr��CSs���V
n��,�'���r��~!��J�:��0YP| g�]u��_���E,_�:=���f@�6�|�%&N��S��iy����-z3��{w�gsb��^w|$'���fcv
n������Mce�Q�/1;�w���\��-�<�H��������e��-� ��QE��jU>���P:��d�SJ��MWu}�&TUN��]����������C��g"�Po��]���W��X02�]�n`j�v������G�=I{�-~q@8��&��x<�M�xk����W8�CQ��j��&�/#��!v�H��[��;�d���#��1�:�c��(8u;�V���'5�����Sx�~F��{�F]��[Ty�h�����t�m�I�buP�o
��\���/FCf�<x�8p8����D'���	NG����~K�S9�#[8vHw4f����4B��n3��7�/Ax.��o������?�N����?�����9�[��e���'bL��+������Ws�UD���D���G�#���S�|�$��A!�G���Hn�#	�5
Ex���"���H�`@�l���~E��R�XQ��c�A�nZ����'6x�(T������������t�P6�c��D���8I�@�Y[������9��h���i����V��@e`�����b_���vJ�)��g�x�.[t�FcYn���&*N�@[����Y�}�����|/�XH4S��,�=)���+�S�(�Te�H�"�01�^��G�a��f���>����6�c��$����|���o��k)+_��|��U����Eq�:.�<.��L���)���"
?����@��@�\9���p��g�7p���_-�{���I>�`@���3o�)?;���f6O��B��p#�{��nH��7�D:j�$����K�)�I�����R�p�7�Y4���������A$��o�
6����?��u��L����������#3�w>YS�b�]��
��y����������[�����	��^S��&�9{ub�����7|�
�CSiCL�q[�7���X$b���x$����Z���LG�v�F�p�D9�K�$�p��I�4&�`�V��1D��J���(3��-��x��r�C������n)��;���j5Q�&om�'��=u��bT��R��_�����q����O���f�cG����0��|d����#�Lxj�S��ZE�*}}lr5$>m4�_���(s"F�c�h�G����Vi�l����U�U0�&j����X�B�
����Y:����U�;��?x�
�8��u� �����^�.��c���""��8DC���[�����GW~��8Ds@vM���JV|���gE���JW|��n�t�Y�e#�����3`��kv����5���Rt�gM7������]��a��m"�~u��=VB��V�)OK��D�YP�*	8�I,N�#
}���9�@`���*�0����a/m����2�SIa��=
h����f��>��L]?V����j;2����&�������HW,4g��X��R�"�������uj�gfO�y��+
������?��{����_�N.r������q�T���i}`8���5]^eu T��GT�& uq-}+_�"���S�l�9��l���H
T���$��N���k���G��e���Y1��S�����=y���"g��<:�H�X��8�K���"m=9��G��l4�g�u5�B���(f���5fn#����cI�$���!i-�J/�^Cg�DZy�����N��KL��O�c�$nL��S~��%����wy�+/~����'��-�����'�����~�{V?�o�|&���]���}v�~7f<a}�K�����y���]Te(�opW����Q�BWfB��[5����`W����i���yYz|�>T�����#�4EH]�yt��Kz�
���RF������A(����(�I��"�����9w�Ey4��������;����;��1��U�l��P��>1�1���������o�N8���GkE���1R6}R1,xAX����\�tH"G�������z���?|����_^�� /�\)�M�U9�m9���I���3n�S��v�	���Xg�
\�.�g�|��S2��Y�
�SGwU����Y����J7��e�C����e���9��x��f����-'�$�$*;������W���Q���/�T�:X�M��>����ZusK~7J�9�7�������l�Ay��r���24l
z����P���^���C/0)�}���<5��Z��E��x��~l6�k}�-y�E��l�f�}>���Q����Y��my�[Wu�AJ�w�[[I���l���6c~�6����S������m�*��I&�?4�Eg��.���U�j)��&�7&����z����� ��:����wE�Zqc��x�c@�c
�?�$�l��r��5�,�bB� ��4����g�6�������&�1S�sa�d�
bX6�!v:���{��}1�
�
�
)����r���D���z���|�S��U����g����TV�;����K����������G���R9�?�>c�
��'�|wuN����z������������*L�Kv��?y7�D���9v��{�t���C^�����#k:��zc���� �Y|}�;�	�w:�y/�a(��	�g�^���y������XQH4�3���`fZa�!8�gS�.�)�f�)1�N$�������������D���1��?b�)�	#�^a�3n��8�������
�[��=�B���qo\e���t����x��g%���30�
b�x(��'*�C���d���o�G8���<9����T����������~	�F�����lb�)���p������{{�F��S��D�!B$\���f��0�w���U�@�gf�j��Q2�07'�}���R����(�u�'�&����������a�����/���w�f�gC2c�2�'g������Ap�������\����KK��������	F�����
��rt,��)�D4����p�d�t��Q��hi��{k)�0A+�]K�'�*�2��"!�\��9C6v������\G��Do�!T|��/�x�26^����2��!���]��)�`M�/��c�tX�N���N�G��Y����K�\F~��	��u~b���b&W��+��G�@��-���y�-Rt	Pt=�����Hc������xA���}7}�������
���'~.v���`��zv���Y���qH�����
vd�>�������\y���r��0����CV�����l<q�����\��vG�J�u��N�em��Q��b��k�\�R=�B�W�/aW���m�G`3�O��1�9h�Ju����56�f�eb<���dD��zz�������������~���x��7���N��
����dG���`>�
��d�4y�V81�>�^�������p��:��ax�����{x��Z��e�D{#��!��K8S��"$���������z�s=��5Lnr�N�O��Q�[�����)��������36
YKx�2g��,��M��$�?	f�����?��f���1;�S�����`��(�Ra<&O{����:%�[n�q����7)�{4x�M������������>��3��7x�����X�����oL!���] �3hJ���9�,8c���7_�����������_�!J�cz���Q,d	�ThX��O_�������8��wo�����_�@�����Wh��S;Y1�����j�����}���_SL1������E4������C�����7���_�������Z+tn-;�����~���7�z���[a_e�������������jV[�3%:Ffq�x]6��?P ���SrM�)��$	���MSz�(�	J��:J��Wo0%�|#���<R+!t��TP2�����D2b�����
d��� �`���cop)���?��}��@�?hb/~��ph�_�\���)��M1y ���f��K�[�W8Mf�d3��1`K:�$�b��<�����f��V����JI��{�z����W���A����Ywsc&e{�qH������Gq*���ROM�������{`���>��j��^}�:���t�����+"��@�X�:����5D[��T&=���^~"�J��eD�X�D?�����D�O�������A��>���.=��m$%���/��1%�D�h��qhsc��9B]��Iero�}M��%�����c�^ ���)/���(e(m@y�~�^�l�1Y��v9�F�X{8�7(����E���\	av��LLy��y��q4~T��K�!�	�l0�FO�j���b��1=�jyq7�������&����\��2	�~#Dm�-X��[%�������~��������;&vy�g3�Zg�
P����Z�����������J0�'#�
B��}
�i���Hh���:���6�Z�-	�
�;
�i;��vIR�S��j����l&��
|G6�fW�4F�6 �iV�����^����H����I�?J|R�&z��'|Z&����B�_}�X{i��+�2#�����Mf�XE*�G�r�Q��J�$��f��7H��S�%q���fO�X�UN������<����<!����j�a�����\-�����E�QK�S�O�#��'�k	I�$�g5hJ��$]�k��k�
}�pS�;7�K��nfp%������>/���/�b�n�9����Y�]��������	ko^�����U���a��q��?�7�m�"��`����ns��}��Wp��Tq'!�Hf!zN��=)*{U���>T�;��E���M{U���n�t@B;��:���v�_���$�*\�(h��
����k�e����3]O�g�y-��������'j�����I)�w�{?�N�6�B�i��B�:��T4p6��nGjyF��(W�\I~.V2�
VgH����}.���R�O|�
U�J6�������Z�Vk�p"D���\����|?Nr�r�?��c��6����G��7~zj3_G'��E��Cf�)f�$�(�8�c��h31�Y�����w�����{����?��������i'_�P2S�����.���y�)"Y$��d�PL��B.@��Q���_m�
���1���(�����:������W���k���G���{���5bk=Vn��;^�?e��Z?V4:=�3!���^0	�E!�d����iE&R��`��1~�����e����>�Q~��Is��]R_�o��)4(��OT�����5�&���;���K���t-B.jM���1��@����F����_�m������ 3����19����d�5Y�^5%��?vi9�X#��U�8�9-�1��r]I��H5�9=�]�YP�(H ���b_���Ns�`��Z��B�6.���<H�� �-�������+�.���S�W��#�8�s��!��mv���H��V�n@�l~"���d�S|�	������/x��z�b{������)��l����������+��5���II���9����P����?���pK����QgCl�
0����72���oFW}W�����,	/"F�H�Zj\s�#����s��|���G��H�&x�iRL�P����.Y�-�	A�<S�&����;����6Av�H����(v��S�n���k�������I&�������J�n��xVT�����-������%�8��TO�2{�{g�E���jR0����12<5[W*zB�G0�L�x�������Wu���E��A3
"��R�KJu*��3��u��U>�-�����V|8����:0���/��j��Mz�?$�Z���
�H���f�Du�������D������Q�4.� ��c�<�N�'M?s[P�N�~��GMY����	��C1�R���$AD�����������FZC�=+i��i�4�^W(��������o�~���~,K3M�}��������"���6V�o6�kj���a�����\k�����:E���;'
�c{�Lu�;:�*��~���T�]���AGQSXD��K�"bX�Y�E���"������&�7�T��������bSibx��lK5@zG���1wMUp�}�����p�:��������f��b����9���*
������y1�B�n�m��9f%�d����Y]�,M+��(��ay-�
*�����Mq��k=�o�]���C�c��53T�
L��~V�~����Rn������~��x����e:=�����9��lv<�������"0��[������N3!��\$�:�(=��*�P�=iQeR	��:������'!qP��".Cr��z��������F�(T]ulk��B=����=*��W���U�������sL��l��*��f��/���3�Fbc��T�D1���*3�>Y���N���*�t./�������
A���_bBw��s%��d����y���*��av/(#��\1��dO�eP���E��\����?�<�n<���^U�F�_[}X"�E�
���7���c1��'u�35���C��O����m��l,�������=�}-�;��oH��r�<q6A*N�%���-��9�]77����n����X�r��,r����`����y���'v 7j�B�,N����/�hh�P�H��_e$10B�
�}fe"�F-�%��ne#d[�-PJ3a�JI>"+>��5�������=�s����?)&���
i��5�	{���&�q�k������w���������5�������G�1o���N�"~:H�A���3Rqcu��1��!���pt�'�d�lp��Q�:A���i�=�n��;��K~�B���=#�������Tyy�eU��'�*��hF�rxba`�H}�O�0��}�
7p2��h�
EmD�=I����@��fTG2���.g����r�������9/���
b:���z�Oz���-�!b�qSJO.5�n<p8�	��F�(X��?�!0�@�SjG�P�7�S��p���Yi��2�ld���|����i��E���z?3�%.�D��Hw���S*���V�s�cX)J��P|����%�jG=K!�R��Y�� �{��f��l5�$����$Vv+���bf@7u;=?���u����S��� EA?Z1(id�yi���+1�������	^�dy���>&�9:�P����7I0I����&a��#0�����*�����k���e�P�}���\��!��������O8���R������y�I���9�5��7����\�"y�<�x�c]�&�m��q�B������f|��>�U�z/U��w��k��V��o�hP�s_���4�3{F���-�Jd�]=mC��c�|����4N^j�'B%hl��Eb�����.e��)���W����:OO���(EK��G����Od�������S{p���
��+l�KB"�g���C�<b�E� ���V��->��pL���������s�j������P�PeE|����\��	m��	.�w�
X��YM������JT�v�!��P��f�4�l�
Q9�?�����M$���YZ;_*��C��P�	�G��V�z�s�*���8���%�z�dXb�������k�$��Y���l6aU��h�q"p�Bm`���t��?�~�ooDO��f�[��L�Z�z�{�-�T�n�E�.[5����J������(���`J�d��"}��I�pOrdj�gcVk��^�=d=6`�����g?���^��-�^�0�@K3���^��*yI��������4[��M�fY���-�����q������vDU�U�����������{f�7f��J����H5I�G���_$�������L\w���~�@"�2gg���h��(�G�!��XQ�5��������~�>��9K1`�}��w��j����a�B#8�H}��X����������|&-/�s����W�pT8n�#K`8���%����g��#~f�K%����;�I}��@w����B�|�c�U�o������O��y
��y�t=��U���	YQ$@w��x�_`�k����`���cq=�y���<3fW�P�8����� v	������2��l�"]+T{��=���_�����UjD>��>���3b��3���|'6Lb�z;����YO80h�4�y��B���52z\f�X��E�)f@�����R�����0[�R&+��;�l�@f1�(��C]il��:E0�x�����:3�,���f��#���D$wj�e���TPX�%�[����a/V�S��wb�W+{��z������t�&z]JQi�P��<.����
bY�b��_r�����j������zU�����~��94 �\��4�y��E�J*f$���l|/�a�a.��Uc�Ba��l�QM���e�*T�86������c����f����������8������T=~X17xN�G���b
gVH	��\��v�@r��J����{L�W�XD��=H����Y�	��NpwK.��U8���7�n"��F:�����"�!q����5�HFY�;9=|�F��P��o��>���z�]^dF�o�����p�M��5�(.S��Q d�`�����Ba���;������!���u��bbI�'��4�:���}��)�T���y5���N�}�	�W	�/���C�����K
���!�������.�]O��7���M��N&O���W��$�s��������<���������l���#L�YqC��M��}�5�/��
��l�����?S����]�����:u]����N��#�4v-"�7I�s�%U���l����9��/�!�V���CK�����-�������Z\�G���^���J1�C����T��,YF����:��YE�"�lQ�ny$p��7nun��V&�SL3�}��qO+w8����������<v/���G��$?'v��U/��?y�3��t�����quL�Jj��G�+�)y����94vu%ds��n���$�V��}ET�=�*��QXPF�M������cN��������G��}<>e,�B�z�����m{�fWR�N%�U�JYdB��yj����y�f��}�L��hG6+4����.�[!�����.(��R;�n��hv/5��x�[q��30a+�3�vd�|�{i�)��S6�����4���6MIC�u|[�8RT���B��_]��(d�n/���X}�p/���J��ir4a����Vp���~)��J�m�#`��"�����k�-@��VIoKhMT�P%Ea3X�<�KQ�C�-����-�����$yrC�����q�|��������V�p�s8(\I�������$}W�c7+N�Y�2�%)a����iX�%.V���I[h=��-s�8�7*�@�WII���9��s���8�����������O=� ��UTC"��k��>��pkg�����z���GG0����dl��H��{���x���$��HO*QlFS1�(��(� ��������zR����@��F����&���_	9he�U��=��	?���(���g�Ir�j�D�1�W55�0�#�DE�<&)&+����#��'����Y^�q��,�J���B�X�!A��@Ah�5�"
���=���4��Ev�*|�|�
��5�t��-����4����u������r��� Sg�*��9x��0����0o�,�f$�2�Z�������4�A~��Zy)k���n2]s����,��2�����=h��s�
a�1��J�#�e5�Y*i	����qO�C���4����H��r����2�G����dm�b�i�<bY
��t�L~E��i='��<F��,�E�n�O\�b}h��������Q���4��+B����)�G�f&x(���g�;t$>^���XE!*B������t~-�B���h���������`�[!���������XGx�� �r���d����u'Vi�i�r/;�^����g�Hveo�-n�uX%t�U[����p�\:<%7�Q���R�k��
�Z/MJ��c'2�V���\GR�C��^�����Qp��6�)U����7�r��1�+�U� 7���$�@x=:�
��%`9�pSX�T�������"->51A�Y�=MV��<���O,g������KB!��W����B���NN\�c������7�e��=5	V`��d�V��X;n]���c��9���;#�A�Y��
<��Ldc8N`1����+���V��K�����R����V�<��~JT0��)�OG������!+�_:��B�����m`wV����
�.i=I����CdT|�8������++��h�fR�h �F������P�C�6"L��u1
#�8'N�
r�QuG���yp��I��q(���!
���)ie�������I������7P�9 n�y���e#�9 �L2C��f�l �W��	^do^|�	���Y�x��^9C7�D��J�;le��+z�>Ij�-���~p,T�b�}�=�Y	+8H��SI��������B���D�O3��:��b���.��7��3�_�vO�%���y�{1`?+��n���@ �i����%�O�*��*�C|�e��
�����dA�W.^����g"����x�! R�e��m~nu��F�����8f)4�Ne����j�i�;���x%����i��B�TU�o�H����vIJ�	�s�O���L����)��Z��rY[	k��,��E��{��5�k����Q�������m'�.f���nTZ�iU��Yj���"�u�������2�@�2���?>�'`���?�����c����}��R��r�^�X��2�F�Jj/qF�I��� ������l�O%�W@�QI�Yf*�Y�/^�������{u�?�����������~M~���#��������
L�<-���~�=��1!�,u������8A8����~"h��f��^:���EC3��T���Y�~r~}��P��Z��~So���>x��O��|OA#�_��UV�l29`�
I�������� �_30�g�I�W���3�����DEIha��CIHl&!I���[��������������B������N���&'�	v�)P�'��>�U�9!:���H���nb:��7�Z�����P�����������P-<�a=��z0�a����/�n���/����0j�Q��&#0���$���:jB'�>�3U/�D���X�63����~���R��RVu�J��x%����p�[����R���u_�hb1Hq�'G�kW�j0XD������z��2t��6�m6'��h�ws�r���}���Z��>+]��f����#�=8-x�V��UY{��&X�({n0���7��h����Gkut�.r�8y�h�����
���-�O9xjM8���n�����[�5X�O9tj��mp7���n�1p�7l3�w�[��%����,2u=ed!��d�5=es*����n�Q��m)>=	�z�i
���
F�<{nl�i
���[GP��[Z��o_�^mD��_�~�?=���T�_����������5�8�Z���!�oQ��"vjk�'�j�ae��l��%�^�b;t��g8K@VI���Z��?�w�8?��X�sL�dI	?�0{@��NtC�����j��x��30'}��+����Pv���9�5���"�F�gL��/QI��%��i�<e��dD�}2c���1��'qy��vO���s��6�?*c��xz���Nc�@y��K�	�Pa=�D��7�O�����^aM���R�if��5 ��<�����4'���4l����p���J�=ED��-�B�f��Bd8�xO�z&:��f����Q���r"j�t����@i2j������&Rh�0Kbzd���u�9�ML"��y
���_���Fn[Ax�P�r!t��w!�BKv]p���������r#���u&R��������4T&�/�|�����"��
b�����.�6U_�'���q�B�z��$���KY��O3B�3L������07���.�=^��6��$�5�4h����D�=%�����N��>0�ju"{=���L����1WL�������Y�f�Q�T�<5��k���Eg^���X����K[��A��jcV%����������9as�����)���t��]Ip��/ ��
����pyR��8���^s
Cyqqf)�?��m�A�$fq`d�����������q��h.CN��]���f�����q�G����|��:��m��W������$M�������8+(A�H�r��=
������==E�#xtA_���>D�[��C^���8��|u�MY���&?Y���q��Y��B9��SP�1�������-���� �m��&,AW���*W��{��eQ���1�W�h	���W\�"�
w;�f���1\Q?g	��=�I���Qk��
Nc��"�=]���i����54G�(���	D	� ����oz>���[}p5�E�wn����?0��������B���;��p`��vVT�f���8�'��aU�I����\����'��d��LPV�a*�C���[��*8����i��0�wJT����_�*�C�����(Z7�4���u�^�h�/���u��jv%5�TM��/7;�@j�����Y~�%�����x����2�����z��M^V5�����~c'��^"����h+��Z\�{��+[�W���9lY������(X����{#V������PL(��e-�#���c��[�S�\��%�R���?��j���o\�����f���{��)�`��;�IbNIy4�'��d]������'���V�Oy�?M�H�I$�%R�4�	�>T�W�V�5@�����D�J�{%����5��OqVBV3���m/�M����z�W�O!��������sm})� 0_�/�������~���7�Y#=�Yq��V��C�� xl"(�h��t�$8%�����_p��4����,;�9~�_c��U�����?�	�R��d�Y��u$�����T���R(:���@r!Om�S��&~�l�+�tg����������
Z���&��7x1bu�%�+>\R��a�L��������F^E����fT������d��1Q�E�B���\2o>4��s���������XP Q^D(��:Ixff�P�hn n\����*�P��,�����*�?/���;dv���P^�!��O���!S�
7N�c,x�P1wFrot�x���k���
�i���9��"<n��yJ��w�S� �]E�-�{N<���=g
��V�:$��{*��7XC�n1�����JD�uP��3&�2l�'�E�������W�� |/C[��NT��LK�e��aB�`����9;�>(�Q���Sx�4(���vx���C�z�O9V����&C6>82Hd%[�}��h��a�
���-n	�~�c�niF�6$[�����B[�/f��f}��[A���9F�{#Q���~��=S���2J2����%h�(�x�I�{U���;UFi�'/�pf���~�xLx�.^@���#1�Mq�(�T��/�����18��|��j��ED|HswB�Z

!����#^�p"�*1YY|�G.H�>�v	K�'13�_��vu��p��(��4�3!B����V�����+���SE>���X����3Y�_
�A.��6b(���A=B�^���N�=%��V��b���`6�����B+��b�hZ$"�wT;�C��q�M~"z��'����!��4O��VN���}m�����,C�g!vGT��!�=�H~�tL��t�� ���$X�����\6
/�m�X��Z�t9��k��(���o�m�^��N��\����l?�p���G��>�Kh��"�/]��%1��M�^� ��32���H"6*N��#L�}&�qzl1��?�������X��p���������������?\i�[g\��O�l��#h��.��~�+	����X~�Vb��q�MW�x�KM����������J��`����N���
<�>��/<���������.��8���������#�����5N=���5%��������>��x�GG��C�,1����7���������Ik���,�m�Q��oB�:Q�w�����E����w,�o�7���0����a�������j�?����R���?�9:��uO}!9+�k�4ov�eo^^xIY,K�5e����2K�L��[muDDM�Q��4?����?��G�Y���_iR�!��9��e�0�w�����	��-3���� �]Enmf�se#/k�,���P��%e�!C�9�h^�^�6��E�� ,)��\u\P��~$�� 
�
����,�U��l������$�_!8�8EM?a���'�
�4j~��<Y@�PP�&���;���h���b�M�����fN�z��B��FJ^q:�R�����g�h���N���LrZP���g��\�d>>^�7�n���
����������;�j~�B(�������C��cU}JVx�������W_���D�����3�U+�(` $�yN��Z�Uur�	���V���j���*q[��_Q��'���U�1f�?���{��rq#���	�xN��gP�hpa��v��
*/����Y�����>��Hg�aMF�Yv���"g�������qY�4���|�{v:�����
�zbP��-9�����:N�wI����$=_j,�f�]��2]�c~��*e������*~J����w���yi�=��*��@E�f���*��{<�<�����ZWe>�(Zq��Yd���_�����&�����
���{�_m��}�8������8;C����E��Ca�������'��k��jf�]�Y�3R1�9-?�~5/��2z�B��P[ceCL��X��#�G6�l~Xw��o��.>���\��U�� �2�,��
0x��h
�*�pO����Yrv����0�������MK*'a�������Nv���_�����EJ���!��o�o'z>=�/C
��o�t�!8�|&#�J��Y���ov ��O
L�H:G�_)F�����;lEs�$�������
f T)6	���;�>�7��'=��j};;G��Ogn6���_���Q��p�O���38y���m!�\@��Bs�IgG��N���l�������a�(Rf��!G��"L��Bz��j.�?�UJ�nN6��
�.�(���d'�L�8�v,����s��n�����A�'Kl��B[���K�v��+������[R�51$v��1�!R��FH�~@b���Q���k��Y#d�?��{��,|^��b���8�^J0�(�l�������J�`}h*�Y	e�,mQ���v�C{J���l����������j/���m��9�E�"��2v��f;�aL�uD�C������$g�B�w����R,rI�@�^�h{)Y��b���+f�B�)�dJ�5�H�cm�N�����D�:����VB��e�3��%�3�ua�����/�(J��%e��F!3o0����9=_"`�A��,0VB��&8�$[���,�r������&O0%+x�b���������F?����b����#��	k�	 ��������c�>�q���v��^%��],}N�Z*���`���U>$�����
~�7�x��g1��`��2=����d�:����U-]��#8�r��X��14�1�����O���_R����z�3��*�}�t���W�`���������F@�"Nb	h�w��G����y���q�pB�u��a��/��%���r�DK���L`�Kl��=9L��`��8��`���J���)4����y"Vm�������S
��+�QMO���0X��k@b��3{���r����	����7C����	�D��nZ�D��58=����U�~)80�����@-�n���x
P���#y�{|�j��}/W�SL�z�r�3I[[�D�/��!�1r��}��iM��p���Y����7��t��6�h�����XX�af��"������2��9��h�'����.�������s�$KAV�G��Rp����.�@UR2nD�8,=�%�V��2���$��B�� 
��I��h�:�^�������}9��\�6��|�5�X�Y8�
��S|��5]�d`9�����I`��hE&uT��q� �aC�^���=,�s~��/�7�?��fu~G���,�#�	��B��8^���,�����)-��ZC��}C�s�l�?�y��msb���L��`;�S�*������';�����i�0������Cyv���eu
|a������qT�_��,C���X�e�&��������5�7���d�u�h���E��yJP�`S�7���t&��vt������)��u�_���AWDk�����$�u����4�F�N����g��D���4
(�}<=��+�����fm?�;r�[q��3x�H��w+�����O���5E����s�A�CA�����i�He'}x*Cuwtu��9����=��"^Q@	U4����4��h�O���_�����\&g8��}������L:��k���o�O�>���1�u|N��q���kR�G�J���r��$;���sH�PU��#�q���:# :�b���5
�����t�^���"a��J
X��Prr�I��tZ����`=���$������AOY�aK�m=39\NL7b6��	K���m��i���)����lB���s��$%�0�_����
50�i~�c�����9��7P�[+���XK��������w��H��>��'���)��UR�
����A��Z!!�z�Z���;��!��C��]�`�;�(�W��C�����HXc$ ��������^$�s�5~M��V����U��;�X���a���$��83�+q ��&~�aBsC����������7c6LIS`����m~5p�t4
���H�aE������"���f�4�#`I������3���[.��|m	\�c�:�:YtX��z�k�����|�)�?O��K���[L��"
�!F,e�@���jt�'����,�p}�k��vA3��i����1���{����.a��n������k��A��MXkn�]�������y�<d�5������i�<fp��������T(�{Ms�ui�����ui��a��Sp�\���y]:��ui�6��K�`�.�
��M��	���K��y5p��t���R!7
��.��|��T(��"��K'���.�3����)�������b
��k���.������k�)�b]:����k���}]:����R�YWy3�u�4����k�Y��Kgv
F�H�s�qE:��SV����"���)+R=1�H'MUV���vE:��cW����H'�v]���;w���@
��9^���?���d��_���0�y��e�
a��4�|��p�����P\������;;L�/�%7R�-j(���(zL���cB����{�P�,��e�	x����Jy^ A�&���S\�H��)����H���3�^�p�N��T�~6��{�;a[TA-����k�h�	��
r�@��;�l�N���<�u�l`C,���\�����VX�Vd�iL�,r���US������tE��1��C���
k\�L+�>t�����E��0�_�J7�+����Sow��NinMT��wQZ�C�B��K
i��#�����-;z�l���o:WB6�w��(���
��>���z��_2��d.?�p�;�@���Txl����D���p(�H��J�����{�n����N���g�F����tZ&�Z��&
-�;D���"e,	��x�en%s�g��(��fo��gY�oJ��4d��r���t��Z��Y�V��i�	���?�t]4�~��o'���bi��q
'��G�H��qB:��������L0�,0v��y�:�"&�U0���"(�5t��v��(���������/�Mg(�������2�oS�H�s��Xn[��@�sU�K�S����������G����_�'��G����o��I"�z����m��&N�������EE���{Q&�W ���O�c]1��	�G�����?����
��$��^~����1�'JG�|~7�t�(uQE���CXrp��cQ�M�q�s������>A���{�3�|��U��������*"q�%�#J�)a�{�v�}���/<2�nqZV������P�
{�L���[�0r��"���P������Us�Yp��`���tXg]
:�����:<�^���.����-����QV�.�����CJ���+u�hE�6e���m��m���7(�n?���>�i1�r����:=2������k��*�KR�oPD�<�=e�O�OS��Dvb�A����G�K��mt-��ky�i��N��C]�S�!�=6)����j)�&�X����,
�N���u����k��p��]{�6�-=�*��M��7���������%'�,��7��6+��P�	)�m�fE��m����P�[.=$�7�q����f2��w���N�w��IpfoP��t/����T�#}x��{y����&Mo��6u�^�������� ��]����EG�$I�;X#����x�e���k����"�>u XvE������1�Y���o-xYzm���3wa���BCo�,�r/F�6F��6=��(�`�Z����.kM����BHT�*�X�ukb���;r��\�d-��-W���p��e��O��H]-w����`)�v�K�9]�������/��(�5�n�3y�4�BG�b���=�b���b��e1�O��`\
M�*-Ku���
�&����������s�;|f�:2��P���+ �^�[�X\V�NaS��c	��5h���>�F};�_bxV����Wl����Y�s)���i04�3.v�tm�������s�q���\��n�j�>��ih�i��DZ���c���h��L��,��������(����oY}��SV���x����2����B{��Z�7�J%��%^
���I"-�M���"��L��H��@Qj,JO*��Y@@���=�x�������q��<!�)�<@(AM���^O��HwZ���}����r6�&7�5i�i$!��J�$E��	�a�a"BMB�����4��P�����g���C�'����Wn�$�B��f��&�	��7��O1��_�f��u&mkr$!��J�$E��Y;��,��D��4� �IR!94��P�����gki	�T=N8��!d7���B"�I3����\c~�7�a�`_�f������4�kHA2�I"8%���b<l�?D$���Q���)�!dV��F��o9�{j#����%`v!%���`o5�,fA]nl>�D�=�������`o!�!B�N�$+5e��	�&GY������5g(a*��M��a�5o*�Pq���x�+,���dCS�!YIH6��ri2�OE��g�^��v#O�A(�	4F�����yp�x��q��$,0���,��3r@6Xp@��~�I�������
��<=��0�dzG2��
��������5�*.|}����������Q���7m���E�|�.<�W�-�������m�![�L�D^����c�+��h���	�0	Q�Rc�DM�����8V��#=5����@����]F	 &J,;�x�pf�_���%��|1�2�kLc��D�$`��	�k�d�u�������"���<*S$ �&`F��g	?�~��`K����Q~�mL�>3�
���	��������kw��;>y��O�9Za�Rs���������������yVK�������
�Q9�	^5�U����9S@�����,�[����z�Q$g����A���*��G�y��������{Z&'8V
������s#�'�%�U���������"�_��J2]���p��r��Eg�)��x,�x�`��F�T��������B� ���{F�
��m����
,R,�{yG���<��X�o�<
����S��5�2}%���l��<l���Z���4|�������W�4'��@H���%�F,C�������@��$F[�d���`��������_��_?����?��),������@"�����
hZ�n���+,���	c��A����rO�e�?���+4��~�����'���`�W)y@x�<�E�T��$P�o(��6�b{ &����D�.. �j��@�F��)"2>)��f(rG���fX_xt���7_$.�{���'������O��?��w?�y�=�I��
���V�!����X�67���{��"���4��4V��sY���[� �=�'����)�N#F��*���f���z4�Z����f��w��<���,�>F�T��v��
����t��b2,��`����iF�1��W�U}&n��Y�tz�n���,�~]mo�v},J��1�y-\��(9��7\���9_�^K�FIO���G�+��e���k���E���qh��������p�i�8r�r�M��V���k>t8��Y�K{_��HOjBB#!��q[9�����m���sRF}y]�������O��n��%J��F?*�g2�E��a`�Y;f����������4���������Q|Z�&un)�P�,�r�.�;��2��a��-Yr��`��}�-����e��,������$9aS��FE�-Yf_A�Uv0L$�SP
��%C�<�!�.I��mF���;�q�\6�Y�T@LCM�~Z�7�����@���� ���ng��"�z;����i	�a'���7+}�,p���>i��h�'��k7�A�b'��6�����}}��<�k;�d�+��S�"/X&��`�����]6+�_6Kq��������5�U
���������|��w��0d�-�Y�~��=D~�}�e �k�%��x�������Y�Uur���5��>��[]���vI������?�~C�U�!��i�
O�E�� R���g����+��CJ�����G��@����\}��B�D,��V�$D�����v��}C�EB�[�Vr����-'���^J-'?���Jj�<7�h���L�����ZvIK;>^o�����\�|�YC���{>�!B�F��PG��E��P_��e����z�h�x�^�Z�����$�6�@t=Du]H���
�)$C��d
�E�����x�D�����[>O�F�hy:7�x�������z�;EU���%���7.����f��B��*
q�@/����"��;��p���<#�����9��^�9{	��71�p[��������������qy�wU�p�&���}����
��x�E�U�4��w��eG�/����hF��v������P0�	c�.p���d��f����M�v������M"3w��If�j�tb	E�Sk�_zU���-�c�>']�>.������,�����}n�_�_�w�Y�� �P�������6'Sl���h�nz5�R���Y�Z�v�F"f����m�Q�
����
;�Z�:0�6l	�k+��P�EP�H�Z��mk��m+��f�z�� ���XCEEv��]�7��`E�����{ 4����kG*m��
�:�jH��09�S	k})$�����[�k���=��/�J�����m���9,��W�!�)Uk���9+������s�s�A
��RN��
��:�v��E����F"���V�p��2���Q����U�,��e��i>&��Z�N��� �w�Y�v������V�y%Ra�Z�];rY�6�����e=-���^��h3��q$`�R��vT?��5a�%a��t�L��v����F��rmk���=n�<�:���CQdJ���-�nh�
52���]k�c�7hGum9#��Z;�_5������WK��v���$4���Z;.�����v��M�R%�����4o�]�����8,��^k-����v\{�[o!u\�kS!?���a\��M�/�K��5�hG��j���.mL�&�N,�@4jc�[�R�"�+��v �=XR���6���\����4��K��%��R)�����@,f)S@�0Q�P�W�M�����&"4L�	���z��D�ID��vR�z`��
����{=�����'���n�,��3��%����������iI�"c�5�m?v�9l���_}9T���^�����6����1)�R�Go��������d��5���+/;�������;
��y�����C`��G;�i�V���mY��#��n�r��/L@'�`��oE�����4��F64h�p������~�;�$d�Z[��#�z����^�#���VS�Rc�}_v� �W��Ka���c�c��?��%%�����N,�YF5��C�0���EQ����Rsh�Ml���u;�����l?����Y_����(c���"{�7����m�92^���,��s�������n��������������g}V��}+?�@2���z����MCh�
������k|�O�R	>4�H�����!)�gb!*�^K�[3x�)��n		=�mk�*���cuc��X��[����3���6/��	9Sdn�?���|:N��m�����;c�!����mg�O�+�
��Gy�+i^+ ��]�Q�����m��0�}��+���3��^����&/^u��
�Bw��e"dY?�JHY��AIx�\���$`��7�{�(����stCH�?%��|:9�CZ!�D����pX��OJ"5�n�pS�8���q������������?��[��`%�:]pC�I����l7�U"��D=���!��%M`�~O)���O�,�����������dT$�mn�O.��=�?@����4)%,��b�6��x��������k�)���
�I^��Q�^.d�[��W���R����c��a����#��.5�.i�Uh�����{��EY�0,+V>J�*a��t}�q��go�Y�l��~�����������W��j�����|%�o+���t��}K+7t�
5�����D�������Oeq����#�\��,nI��eU�FF���2����E=����V���h�a����q�?�|N��T&#�\����s�f,�2y��� �9>��9eW"~�S�P���r�r�,��������\��cT<=H��SU�,
��O�h*�4_~5���F�h�,�	�.�t�c������J�Po��O����x)���W^^@��c,��
����V��K��IV�_������!>~!N;�g�#N\���c_���mDRg4����-���|��M�)���1(��r�(~��e��D�-[����T�J)y?��{���
����"�7"�FDS�#p��+���1y��cQT|5�K�X9'9;f4�o��X
�a7BP�5��Z�G�t�C����-��Y��%��%J2��N�0l����,���d���D'9��o�����u�e�*�gr~>D)�Q���}����M^�\`�$���-���M2����;��-i�O�T�������29��+au�;-�cY^�UJ'�6((^+��fi	�d��S�K^�m��_��������x�_^����=h71��s�
���"2�������W�aoa�i�i�6�S��<������ej =�Z���z�e#^G���u�����K�w�����O�����|I�f	���)�nX����8����k���!I�Sq�F�6D���9Jb�8��i�`���B�(��WAI-lZ���t�X�*,�/����(���X��lO�I*���XY������!�m�;AKF�
���D3+{�5�����F�S�;�p�n��Cz~��r��+sMh��v,X_��1��h��f�7P3�1�uEv*�%e���J�OYCzD��5MrM�����8k.9iw���u91�����I�����\]�_���Od�SA`���@p'���%�P�K�<��#K{#�#.k���|d�i�1A�!'��f���?}��
"�m9Y� ��@5��^�0������*�m��[m}L�A�����O�S��h�RD��%�W;m���{���J����+�(cF�7^��V��`�����'naB����|K�0K#�Oo�� �Sc�.�xDBH
�^I'���_7��g"�L���m�z.�
<�IR,������^���mK���K�R��������(�'���SZ&l�����iq�wo�������5::_L:�]v�{����
���\cm����67b���&cz������A��	�i��T5��Z��jt/5:���#�9SnM�nz���M*��B�5Km�t�M��W~�C.��Y�W�p���4�l���@1��g�������=����%y�)
P����/�c�������e���5�k���=g���wiT��:��+�����1<�>7�}���Sk�Nm����smv�E��8(q3�I���#y����)D�����!����e�����x)��p{��@G=^j�,�c�8�c��^����n��
�^�	���dW�e;s�������v���b9��<4V^���G��c��L[;�^��s��1�`�aZ�a��9
p6���p=�
���B[T�X��K�����"��:�4��t+k�����s�+;��Y|���^�i^�?$'A��L[l^5�BBr���`Y���V��V����Y��?�"�k�_�WN�b��s���4���Y���S1r"�����t�h��n���:=��_�a;���6u�)E��{%,���%���Q%���i�A�G8����:B�����KS�p�I�r���,�_�2�e���F����Vq��%������O�iU�o�#����"����
��A�������%`�W�&!�Z@a�0���^�f`�^��G����{T�.8{NL+6�����^��_��OH�Fu���[z]�aT���j�%h�����f���p[����L�n�����k:�]�Ie2\m�=wW�e�
���x4���(��
��aN���B�d$��>�Wt�=pVS�����
��>����c�z*�s�c5�	CM�wz��3���# ��pZ�F}F���6��y�Wq��}�y���Z����Nu�!��v�
�q��	���>�6�2je�J^0�~u����=��I�^�p����
_������A'�]���Z!UY��xC�]����U�YK:�>5��Q���[R��Hz�7��g�)��UXb��J���F��@�*8u+���H3g�&���ta��SG�T���w�Z�3��A�\3&]js���-���e��n�I���"9�����g��������2��)��xx���H�V��8+��p?.,��`{�y/TC��uD�~�5F�<V��A�Q��qz��d�0�f���yN8=W�<0��������J#E��K�Cw���%d��?����>d���e���ILLR������y%g�e��v]��x�j���1���@[w$a#�@�����,YB�b��v�%���&���8��v�n��7���c}/��8���%��*���o^���k��Cu���+)e(Q���M�n� 8����F�^���!���Dj�C���m����
��$�u�{��Nt?N�z�)����y��Y��^K��Q����Pd1:9����O�E�9*)G���s&���9��O�S���Y�VC��(�)���BY����l��S�,%G5��SQ��-�/�X�������e�s�2�%����Pr_v
�qo<�\.���{�<����^����p�n�e�����_�������������7��`m����Oo�B���c�T��p���Sv��������6�����
e-A��VJ;r���<X
���I�bV�w=hZwR�H~�� E��C��
�����d��|���"x"bO 6CI$�	�������-�-���d�Sv� ����?��S���,���w������@5aM�E��*O�2��VD2%���r��]$�j#;��d1���e�,,L����S^H
����s=3S����Y���k3���k���k'b"��X�/��(Tk���6��;���W�1
95hE�'�D�i�-��#��S�Dk��b������Z�S����HQB1�WBQ�M�������l-��)�o/����4����p
�2�8�
f~7�����-�K�.����
�0@=�V(3�
�"��5��������"���ivj����F����XI��W"�,���i|J���j�Ro����YZR����\o�L��)MJ'��(/�+=C�C������*�[��4����[����������|a��b��4�*�f+e���4`���x*�@F���Vu���`���O)��=��A��?lCzF4lI�1�a]�R�?#���a1��L�c<(�������k��t�+M�SS
�O-���C�P4���ef@�j����_�2���iVA�C����\������'!���������5�I�(W�#��1VA����Q�3c2��� �R���hkL��[�}d��6Vlm�6f��������-����E�z9�MXYW��9���?D��;�E�8���m:k�)r^�@k>1�$l��+��O���������@�����k�:������TAC����v! �%�B��GQr��h�^HbCp���?��<�w��Y�NI|����2i�nu������tLn|P�Il�������(O�;��ZV��$���������&f3p==:Q�Q��V����D\����D�wk
F�<�2H�*�����[���B��Q�!�'�2`���p�N�w �u}{��O[H
���Hg���O��czI���YG���<��L��|5m����b�[m'�����Rk4��4���o�S4���Nfjz+5��8S�;���\�C���x����gB-�4YRU���q��Lk��R��+�m��P��/�x`i����'������81a�KY�\�h�f�`U�
o.qu�Zg��!	b���Z�%&!�Z����B_��*!V�����G��PXS�����p�o�������WH{�q�Ac��Ek�xJ�b��H����H��I7X����EZ�'a�!-^S|,������Vk�P$q`g<��ec�p�B�N?[4�Y��m�f�������Wz#;h��Rj��0��WH�Nt�K�
�a=!-����U�,MVq#��3����9	�]mu]�th��)�|y�rza=�CQ(�kaLIS��������R��ZJ�YLH��VR{�Y��/��Do ���?��&�vgc�4���Q48�;�b�b��V�[[2 ���,!-,�����K!1���<�5l�nB4N�!�vZ�>�kz%V�#!��e����]�.4y�����l�l���i�
<��8�=�eU��!��S����N_Q@��p������h�����s���%Ir){)�s�L~�������^Q���D�j��ic���Q]d������{~���l��/����b��_��
H�"��
����)DoN"��p���-AE�k�����*����������v�]v��sr��R��n�G���UM��r��5�����q������bo�+������J�luE��*%�1I`m�m^#��QZn:��?F�AEi�������{��!`�oD��.w����F����N�,'�Jz
���m�]vM�!����L��m�bi�n�_�mZ,W4m��6��H���_u]�,��>�^w��%S��y�Y��\y����Gc�+Q���2������[�\)����5���������,SI�x8/Iz���������'���!O��C��"��
i�F(b��c bs�����F�7��g��27����U��"^'<%P#�!��3b�Y�6����e
�� 8����pp�7��W�.����v�*�yn�"/�{�'��hp����3:
!�!���VZ.7�����NK���w���j��������6�Y����/r�;��J�i�.����g"����!`�:���Gw���F&�BO���zTUd�G^>^^��%�����l$ h|c�5��840��z#3��=[{��f���#~��os���v��Y7#���Bu�`�d`$}���~��W�-�F
ru���V��j�m�l
=���}i���h$�)/h���d���Q���������$��_�������R(����N�k�_�����[(����xP ����C���T�g�r�������i�B7����Hr7�R8a�*�GP���4���Z�����lT1=�<�U�
.�b&��e���6��;���m�d�yJ_��lUF�x�3k��������w��a-�!�p&��Cn#9r��p�P��4*7��s��v�-�'"~�[�`8Wp4�?�KC9���2�,�s�~�%f��r�lMYZ����'"�����0(\K@����/V��b��
�&m���&�X�V�ee��I�����-��UtY��mr�xxsf
.7zm[V��{�������4���X���M���U����+U���a�Aa-~&�����r�3��-���b�l]�C�P�l��>����dt������^4^]����Zu���M��C�r�)�
>�� �we;!���#c3���O���Y
�~���������u���Dq	��{O�
x/e
Y�Z��95��h*����ER�;K4����69NJ���}j�@g2�#�/1-B%$���w����
�{WF�����~����_��=H�X��KAk~���-������F�6����p�R�<u������BaJH
��h!h��6}Nk���=~�[����;y��6��$�%kiAL?��V�#q��S�����P����n1Q���������
�\���'�MM�+�/�"#�������V�R��@���E��ER�
�\�?����,�KQ���8.r����p�������a��gz�Y0�mY�����	�����������/�Li�e���v�B�R�O�����0`����������S/��9zG�Fz�Y�������'����@@�ga`����l����s�5���$d������&N��M��(�t��O��Tf��R[�O��0������ p��q�����������I�o�	��������s��f&2
>q�����7���(�P�o"��#��<N�4�����U�R�`j�k���R���>�R��C��HF�e
��.Y��W�O���1���$.8�
���	�U�yM*�Vv�������%����^'�4�*.�S�;����K���SP�F:w������p�1��.1���p���n��~�'{�7�����j�
<?�;�I��v��X�u'�,�i%k��-K�4��S!L�:t�&L�����6��T��E�v�F����z����FoOiu�z3S����;�����A�/I��{5���
?���&T�p������l���Iqw���.����s���@T����Z�.�L%F�fF|:�dx�O�K��B&��S�����_B��k>L�o.}A����}�W�B�������m�#A��V�����3�0��v5pT�
#���&\rm�%�.��F����;���F�	�gl[4���8������[	�x�fU����.�����=&����b���9�l,���_�c���,�S�a��I���m�[C��9!
M�87Ka�q��G3�Tqt?�"�&>���n�T:=���jv
���h�#M��[������j�x}��w�S�+��p�v5�_��*�`U�zkm�=W����e����qu�U�"������`|���p���8����� }:j�b�(�6)��w����@�W-����O>���#Lx�������,����|O�"J��R��A�����D�9� ��C#x�D:erf���r�)uv�6�N��kQ�Y�K����K�AI 
Ij�du]X�8�h���i�@�.�8�Y@��I@��h]w�B��		v�9h]jA�da�J���VKK[
����s��II����2�B
���Y�Jn	�#�
������U�+�Ln^+s�������}!��u-���p�AS��g'^Ns�~O<rA�����N8�*U�<^P��}����j�z�x�T}��uJ��[�����������'���[���� ;l-�	5�q�f����k����
_��/TT�7)�u9��z�[���(�����y�s�H�N������$��!5�e�>(���|4���/��9�aJ�)L.8{��FU&?<�4����6�M5��U'����>�Pu���52�*^��m����I�����6�����j�aU�yd27U���P*N�|N[�G&c���
��5���_#���|��V�Y8������a�"���_8I:��g�y
`#&N��k�B�ka�%��$�2�&�][<"��6Po�����S��@X1�����Qh��e-h��2_Al�>h��b��Y��|��*�3S[�#�V^V����Q^���f>�3Kd|���8�{y^!�Q�����%�a��.�����s�:�/�}������^�z�"�=��7�����np����e�ip� �B��GNj0@��9o��A>N�O����I���P_�uaU�5	��=u���>��P*�E(A���Y�4�a+����E�-��PfMFq�����v�H���n��	
o��m��K��`��UUiU��-.�n�I��x��u(��4�V��'���V^\\����#���}�v���B�/-���:Jf��5Y����U�kx�cX��4�"B�l�	�
MT9i����c��9����(!MW���Q��9��W4�p�;%������)4����F����~Ww�v��^��0?���gPE�d"����@��J�T��m����V��;��4��G�������@<�D<������n��F�_��w���f'��+(���	B�U�)}t4������4��
E1��Q����R���]�~g����zm/V��h�r7���\7��d"9�E$���dr���RP��W��Z8��,��^��y��0.��9�&^�r�2J�����3s���'�v��[~*;��C8�"�P��5��)t�~�*F��(j�."t��v�E���[�Md+�?�i��\���s36PXY�Akc6��u3e����JY2�����!b��z�w���#��-#+�kJ�V���e!���(�������TOn��l����{I�Y�����=K*�y!����,B:;�hQG�#-�#w��Es�N��i������0N�z�a����	��j��E�M�R��e������5>���P]�N�H�.����	zI�����;A;I��v�v'�(i���$>`������I_�C\��h�@�0%�����?@�������\��%^��Y�N�����<G�#��c�Yt����Q,W{�^�: M�vJ��{VG�I	4,`�#�������*FyMK��G��q�-���u�2
^���fg���~K�;Y�-�$+�q
�/��%�����)��t�^#��{.CF����r!��E���n.�5=��+Ux���1�+)��^�EM�Jj����;�OY|��G�kz~�,�D�������G�w���Q����k�x{�b��-7��r��~���?W�������x�N������k�~��4q�!����(y,b�}hv��^Z9Zp�rm(�5
z���paR��}X�Q�����=��6Y���!�z����P������X=��y��T��Yt�U�@����S�s��E�\'2����F�WV�a�=�����AB��X��sY�ye��4KTX�~K cM�����=�q#�RBk�o���Z�������1�N���pB���<�y���**�� �,�
��6����4'rO��!|(L�}����<YV��y���UZ��	��x6?��A�Vy@�p�Z1;�z����"-��9�*j>�K5���(�,V��o��8hS���h�0'"���������G�v�L�gv��w'�@���o�����!����
-�#_9���C������>]���i��I�>�	����r ������vB�kv�t	�v&��`?1�*������~�����LCg5������������~?������j
6;�)aC�^���8��~��z����'w�Rv���8������9�GI d@G`���q�Z\C1���#q����~=A.m�]����]ru�P���g��x��]�F66��8��Y��Vn�����b���2������r��Y^z,��m4G�����y����	���5��x.P��R��L���M����G���f��CB<�)
��
o�>���b�&2��'O��G4[BQ�)�"cNYW��X����!%-��5���
t:}���S����1	O��������$wMJ\�-��{@�#T�\H�-#����w�O���[E����e�k��`s�G� bl���D����u��%��n�n����(nzJ�
���.����u������WZ�C�}�U�8oXt=G��0D*)���+����^�/�kO^,���u(�� �������W@�|�k/\��"'Ha`������p��tKU���7��_��D5CEg�-�����g8�����nL�w��"O���(����<���3�h�/����7IFBM*Lh	&��
.�&+���-x,������7�&3F��fEL�qJ���2��,��K�d���"��x��92���t8BG��c�fm�#��.="P�7nHV�����4;4Tqd(��XcY�p' �4eo��N�������@]�K�,]��
���	��a���\���/�2��u�n���b��bV����������8�Fn{B��
!�
�au	#����K�����Nl��DGF��m�f$�@6_;`? ����{a���tf�'h
�e��=���`yg^��HWf
����T8�pr9�������%��������!�-q[�=91r���0��Ah�,���Ya\��{�64$�E�Cdy�t�������$.�"�/�S�&V
�+Z= �F�>D" ��H�.�� J�E��{+
�]T�
��+�����B0�J��0A�M�RMA��~%�X��R�l�Qdw����U�\��u�>��/��i������(�[%�z�U��j��$_*���R+����	v��A��+n�,�*���z)����_>�w4���=>yu����sRz�"���� �g�:�y){"p�3��E�2Z�J�O�c���"Z��(�sZ�Ir��;�������,��\����d`i��,�.�&`�A�73a�I��3������W���2������Af�mg%2�nk8��Q`6���f5����[��>�y��6�[�����$l5U�	(�y�j�'�\�a+\3*>�g����������y��U�F>�I�	 gviMU{���8�C�	&����iFu'�������I3��1�����A���+Gz��������{����%d�B�>
����}d�~���z+U� �
���|���
��.kZ�e�^��)%��7��"+�dQ'W"��|[��eU.Cv�Q�SY��L��A��%W��Bj}��>�������d�&���l�w����U������G�@h.�o������^-.!�61B/�[v?C�>�S\^�na��uZ@��$P��3M����2qI\�
�U�_
���{u�Z�����4�0���G���~��!�!�����C���iN�=V�$��r�vCk=_���B��%�f��I����:�;!��I��9�{x��%T��������~������������z ��+Qq2
bL0�$�C
�~������FL��{��w�nI�(-#h�?�t�mP�LHTH��H�UV���l<d�����L��d}J���@�����_�b�����s@��s[�%�o7�-��H2�C�(�WN�N��Cf��_�$�,�kz>'��F�M�O5�m<��o,E\�i��B&�n����i�D�I��u�r��BU:z��������<�M���en��U�
�H�X��S��'����hR{.�J�����:�c9���j��~I!�uZ����	������W��*���(e��{�{JO��(�"��5�v����+�����g��tf��B\�$P��1Jw����|�dL&4D0�\�����1
i(�����{/n�;���&�{=r���y��G 7��d"�t���!��l1����jU�|o]+�-�s��s�HUw���(OI��>��z����+��j�7mC���T�Ht�]9BJ����Dx����)��K^[cW��~�,yM*tM�2G�x��Lw���}�
u2����-��$�M8{���H�����`R�6�)� ;��p.J�'��x�InL5����A/�'��PA�#��8�T�h�t0��{q�xy9/��0w���l����_��nl���'2:�h�;0�?�n>�e�n2���dnLN����O��"�2jtDQ=�F��yVK�w5�)�F��j*��){{�Fa��c�@��l��������N�"TM���b�y�������e���`���<�`�a5�_�j~����>)d����3��fB�	�N�z+~���V7�� ��|��p����K����!��p����u�_|I��*|���;��}������/%�N��[����`e��\�B�e���4��i���=XFO��l���+�_�3�R���J������B������w�H:���h�Yf���l�u"������k�	�3]H�;�v���s������P����*i
K4o��l%6���YNOh�i�����E���+wXN�mr4$ZAtV`�y��do��v`�$�.���n`i~J^�E�,����g�I~��I�.�@���%=�j5	TsV����OF����r�������X���X�jW��gyJ�[������p�[����e�v�*�t����Q������"{������04��!�p��=h+c����S�6�����*�d@�A{(0A�(4~~��I���\�FH|� L�
Q�Q]91P��?��{I����e��k�����[W���8���.���Z.p�27[k@�(�}<��L)I\���)oH:��������Q�R�Xl�1�����Zy��L+����	@�������ds�+����mc�x|�*�k���#!eW��Y�����]c4C���4b�U^��6<g�O\T�Z�Yh+�<�O�1�=*CgiK�P,��r�h1A+eh���� �S>�L�.����tN���Sj3`{����w-��XU�2D �����C�W[�=$�t|s��������(O��������L��o�����o
�������;��]�d����~���U��a�m����@�b�������'\{Q�D9H���Be�!G��+_4Bp���^.	�D%��2�zG2�	�w��1�}f"�Tu6���Q[�O����s)D���L>m���|Y�_=v;���3sp��P����l��K�������TtZ�!d���������I��B�����q�
{?n��L��J1#������X+;K�w���,28�q����k!���2=~G� �������3Z������8D��z��1�?��%�y������uk~��b��F�K��Gk���������H����x�$�/4��HV�
���nr��B���6����%������������Qt^$��������*K���[�<G���Y���==\-h��?���zj����'Mu�qP�{�������������Kpv ���j��xt���t)D��FjV��\zE������`�V-�i�����DuB��������������|��	�OQ�ivj��+��Z�o�X��5�:�9�����'�������1��,=�PA��(:�U��%������
�y��|����>�F�%}�h��{SeI~�Lw�)����~�+�	�S/��i��4W\����X�B:PU��Y4'��)e�l��W���T0�H	�����9y�+�Q!����z�Zhn���~j�FNM�[���/3�o��9��;�e�Gu��G���H���%����s�~�t�ZjYj8�A��u:����(�p�wItnN ����>`v�X�*�d��XHg�&�����V�DtuK�	�}c�}4"
�����|+0j���hO<���w��8DF�6�snP!�+����eB��S6>U����o��/������r���+b��`�i����/�����V>vu�����"��9�U �)`����`�JR%4pu���]��lE�#h�.�[�yiEu��2���P���?�����?��C�
�"��Y��0��m��k|v�;���Dq��.��47����/0?~q�e%��%��V�tIK�������O��ow�.�35|�����\�$��a����O��N��U�IF,R�'-�+�� ��y/i�yyQ�u8n�^����%~[��G��E�����c�	��mF;��F+. >���$�x���l#(U��do�Sy��xS�8VD�D����_���;�����7d��%l��dN'k,� �>���s�*h���NmA ��nX�uC�D|��DpR�
�t�7��K���a�PU�C��\�/�%�+���P�]=�!$4u�])�� ������������/�P����t���<~����Y�~�&��w�����,#�a�,����z��5yK��o�Yn��~�������oO���9Y'������M����y�Xz�^-V����6A�������mnG��u�W�j�*N��5)Y/s{��L2)�f���������(����Tb����C E$��K��TM���A��ht7���B�Hc������de�rD�y�����&A�'e�d!��+b6�f��W��G��Y�R�0������?P>ga���+&�'���qc�������{ d�{�����qO���?�o�9��d��Y��>�C�_��}��4�D��g�P]����t���k5M�D(G$*W{I�b�����/X��
"J�g%�������6r��KEX
W��V�X������g����1H=vL�%��Oq T�����_�B,&����FV�7��5
�u����d������'4���
�Y�f5��w2u�[M��Ie6���T��'����e3v��wK������|Q��Prn��_\]
�>%��k���#���������j5��;�{�FsPvT��&��XL�7C�:�$O�b����0~��j��8�t���b�X����^����-�w�r{�����������-����Vl{��m���6��m3��6��m���6�x��-$���z��WT�����^p��l���]�����j�T;�T5&�Qa?������Q�) �T&��\��d�)I��NWH�R]#!���P)e����R+��r�q��C�E��l��U5;mq:���-����q+u�)�=�"U~�fE�;k�4+�fu.����0���}�M��������4/� ��hA<�dE���(��5R,YN�[�n�;��Z�j��2��U��`��W��os�����J-Jun 
�(��#~P\���U�9P��H��Y{�#����~����(�8��Y}~A��~��$�8��-�AU�Q����L_(���9����_�<)�
��m����l9��0_�����V�GQ��0��:������5.kX-����;M�Z�E��U��T�6E����%�W�4��R�����&���K'K���DAZ&���s
�'i�/T�,�����?R���-�"l!(.��g��|�i�����_��|�/����4�����Q��t��8����W��9��jR��.
���y�,O���gx�l�G��d��E�WT�X��	��T��?G��1t�3K�{^�B����� %+Uy��<�p�8U�����Bc�4Y��b�OQ���A��GA)�7*���F]�c	/�
�*����#�(���g<;,<7�����"��x^V�#
�)�@�����<T��!
��B���'�?m���v�xFv�[��ljM"5`�+��WG���P1��*���s��9"<�:/v�t��R	��td��r����^�<�>{����s$FA�z*��Z�u@�bh|����.������6B	�ftC;0J������A���=�\�]]�������.tt��T���:T��w$::T���tT�����P���5%N�����'O���Yl�YG���x&d<�����2��*�y����8,wU������@<m��p>�-1�P!&�}D#l�lO��!T��#�mgQ$�XW�(bw3�uU�M�P�b��&����-:�KZ���\�#�`��2V��-�0�� �@H
�B��b��j{2�Dq�D!%����H!O0n������a<� G�6"���ZE#P����T�V���kqEC8`��y�.�/�N�X�:�"��!�Y��iL�z��R�*+��R[&T���}��8
Q��ZD��������U��N�j'���@�!(9m���]	�.3#T�}��G�������a�wp�w��P{eO�oW��E���e@��t����5p�#	glg�[�S����5k
�UnQA���3H�%�*k����%��rD����h���2���;���P:3�z�0���.^|/�����Y���NC6^n��&�9�����^����
��ogu]�=J�_�i�����0�����P��W�����&���9@����!C����)�0�����R���\dm|4����3���������a����d���0���|r�9n���vu�~��l�e���PS��m�/�xp
@��og����vk��Oo��r��v��j�%k�A�X��G*nX<7
�\������W	P�� $��E�G���?Z6B�XZC�����r���
�j���u�DM1�������8=����7��=�����m��B�H+5�
�uSD��S��<�7���S��0Slq0�����0�E�������sI7�\�0�\����{�(p.��]��#\����R��R	#�Til�RR����������������;{u�W����_�����o.��_\���>
yMK\�i����U��Y��0NJ��aN*5����9}Q��,z\Y�HYT��j�DrBEX=�$��������JS�4$�aC��j���jt8��,����Rv��N��/���v��Bj$�����������C��9r�(��Tpt����k
F��s�����)���0WrbFNXsi�$4`��e�j������hE��
VG�:�z�3��fC��V�B�))^n	�gb&?�-:>>����4�w^8�5Y��1�1�75	�j��W��;H8oF�4?\.��i8��!^���I������;6<�'�;�)����Tl�_�D�+a���v���D����*�� ^n�O<��mm*�j�7���I�`WwD����$�y�b���l�r,���d�����������{���t��f�>��uM�_��?�}r�3,��T<e���|d��!�\���w��n�r�i���/0
��A��4���*v�1I�#�69��l`*v���l���[H�	&H�'� � ]��V����5��h���]$��"�Af�v���]yK�J�����_�����}	���y$AC�@P,�PUAD���h���J	Sr��k�!f��n3�<�����I�����LU<$�����U��cHIR�KV*�Gs�,{�^"�f��T�1"i�8���e�!N>��.���u��_6n��3���@$
�_R,]���I���8
H?���\O�I����*�>@[���OB�u��H��u������	l)ah���������jX��cO�$r��{�,)e������dr<��R����
O
5�jL��GQ9�'� n�r;^�0���4�����J�F?��@��
j�n�����������?����P8�M����cW�W6�.H��P.HV�����s~Y@���~�������������PG�;p6��:�������>�����@�)/��K�kG�SU���>%��Z���G����b�8��Y����=+��h���x�������m�����"��5��h~�"�]��5�t�n���m�E�P����Or,:�y�PPm��PzJh��Ow���+���:\M�O5�6;��^Rp����p��vk	���#U���r����=
��`����g����}�$����n+pu���m6Dl/|/��
�i����(��
�"�?���!��B5����15�\��k��
��;%�EJ������a]��������.��[�	�����3u3Z�v�<���0�R��UQTR����B.��b{���_��������j"���3����T�v�6���!	bs�(��5���vC�7�]t�C������2�X��uM=�u�v��b����!������XB�N)�����.	5;=�C'�?���k:�@������d�d2tX���M!�!If	:W<F���wfd���|t�c� ��f�����OG>�����~��a�*�vn������u�����,pV��}��
�����w����T������8�(��
��j(��;$�,�i�M%5���q�Et����N�{����?)������~��'H:��"#c�������E~��h��Z0)�4O�;�/������[�G\M��������AB������S�c���Z�4�������S���8E��@s�����$I
�%I�$)-^c��#H��]���s�+J�X7�4uZh.���/�0s
��[�M�a�,�c#��3�����v�AJ-��zBX�rCd�b�����k+"`������]f��Rc�]����f�n����c@����;��h[�
��	vN]�}��y��]"�4������
�m[*� ����d���`���.�5|���U
�'��[I��ys�v>������%�Y-��mI��!���,���kE5#����:q���e�gi�y�=X+���7��'(�A���P��o��"����?.�0��t�)W�!U�U\����@/B�~q����e%��J���h�9���
0Dp�v�$'�I�c�
�wEnR����^����������)��B�8
�=�A��������j��v�]�����G��y���n�5��k��
[�V+
�X[�S��=	Fn�]�E��uOk���&Q�F������'����5lt��7��O{�{�!�/A�����T��an���fk���5����-���t=	������iO���{\������w�>x�����W41�b2S�[Rf�u�S%7�sd"h�,`�'E�����
�-���=5-�H���kR��XUjJevP"���=?t����l�<T������5M=�*Wf�	���)-HpR"������i�vG��Z�5.;�s�y���i����"Isz�7d����M��<�<�D��k�>[{�A>�P;���>�@D?��R~6�;w��Wc;��h��a�t�A��U����lu��-y�I�������hN�W+��������9mK��E��<�`E��`B/kS�!���!��(��t7A���V��������&��6k�n�����z����|�`^sl
���s�>F��L�p"����A��@�����\{R�1$��'�����0D���{24��&�EpVA�	cj�AD�p����!�-�1��Bm�t�>0:%�QY�T���2��������S$vW��7�l�\��vk�L����g��bF�m�l�&���]X
��&��=�I%6s���.4�L�*���aq����
�"d��4�e8Q�����������@��Cm�~�bj���[��z�mjA��!����Hk�j�g�q6M���3�;��M�������=�I������o�7Wk�H��"���Mc+�E[����,iaIA��]��������f7��#;1���,��^����+�fA��r����#k�RNg�^W'� �$a;�$"[�$a�����'�j`~^];a<	�VO�7{�6�Z\�l
���xo+�P�����n���wmA�����!�q���8
r�X��t��}�
%���e�!�T^C���}��Q�����iF*����f�U�h%�b5	����DI��T�m��{�)�`�Vth����n&d��y���m������QI�P
��i���7�P���9��=3��-f@�7D���������k�|S��#�~��x��8�9L�	7���^�������
t��:�P ��0���rX�i���5���
�j������Q��_d�	H�E������]�AB�F
(���TAj�R[963��|}�|(N����7���6�(�wX�����)?���x��=��%�y��r
0�Yx��dE�!�8	�8c,h�n�����Bm�X��e(Q3�����(�������!���m�����a����>�_��=*g���O�3m�o1p�m�1w��;��+�\������K�B�[|	}K�Emg�{�S*�y�3)]	����Q�P�>{2\h��w��Em������g�Gt!��s��1��{������i��Em�����O����$9����|���,����-��nvy��d�9�"��������������gy0?���o��X�8Nrg8��n����0f�y��q-�qv��B~�."6�~�L�17�RS~:cG*��I�}�2����S'[.(���>��_R����9��yq+MmE�����#/�<����n�0s|g��� ��i|���9�<�"����	�����Rc4�?�'��/����J�>~����@��e��s��>)C?��Gn�]f��4�s��O_��e����}��U?Sdcn+/`%\�����,A�;(0�p1�i�J�S��<���uP*����Q��%m�	�M�`��+��Z�L��@+H���+Hv��^��������3L��%60��N=l|`���W=��@�4����GAE���5�!}`�Q{M����:�Y6�0����
q�J�r��lC�8j��������0��G�3�|�+=�q�Z[�p�^�H7�LO���NZ��`v���S���?^�������������gc����lq��������|���.�,��������

\R��r`�`�E _jc��6������5&&�m��Q��]����'@���r��f��e�f"�5V��}:��E�y�?4�*��q������?��c�w��x�N[(tP�n�}Y*�A.k��K�-�F���k�h/-i�����7��i����������K2R%��<I��X������>��-�:�e��'`x,���95����������q�������o�������v��?�,
0006-Hand-edits-of-data-files_v3.patchtext/x-patch; charset=US-ASCII; name=0006-Hand-edits-of-data-files_v3.patchDownload
From 95ceb4eca1bfce99d298475923062744120dced2 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 14:15:21 +0700
Subject: [PATCH 06/10] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray comments, fix up whitespace, and do a minimum of comment editing to reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    | 12 +++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 11 +-----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 44 +++++-----------------
 12 files changed, 145 insertions(+), 89 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index bec8094..3d1a8b9 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -9,48 +9,56 @@
 { opf => '1976', lt => '21', rt => '21', str => '3', oper => '94', am => '403' },
 { opf => '1976', lt => '21', rt => '21', str => '4', oper => '524', am => '403' },
 { opf => '1976', lt => '21', rt => '21', str => '5', oper => '520', am => '403' },
+
 # crosstype operators int24
 { opf => '1976', lt => '21', rt => '23', str => '1', oper => '534', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '2', oper => '540', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '3', oper => '532', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '4', oper => '542', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '5', oper => '536', am => '403' },
+
 # crosstype operators int28
 { opf => '1976', lt => '21', rt => '20', str => '1', oper => '1864', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '2', oper => '1866', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '3', oper => '1862', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '4', oper => '1867', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '5', oper => '1865', am => '403' },
+
 # default operators int4
 { opf => '1976', lt => '23', rt => '23', str => '1', oper => '97', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '2', oper => '523', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '3', oper => '96', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '4', oper => '525', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '5', oper => '521', am => '403' },
+
 # crosstype operators int42
 { opf => '1976', lt => '23', rt => '21', str => '1', oper => '535', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '2', oper => '541', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '3', oper => '533', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '4', oper => '543', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '5', oper => '537', am => '403' },
+
 # crosstype operators int48
 { opf => '1976', lt => '23', rt => '20', str => '1', oper => '37', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '2', oper => '80', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '3', oper => '15', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '4', oper => '82', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '5', oper => '76', am => '403' },
+
 # default operators int8
 { opf => '1976', lt => '20', rt => '20', str => '1', oper => '412', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '2', oper => '414', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '3', oper => '410', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '4', oper => '415', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '5', oper => '413', am => '403' },
+
 # crosstype operators int82
 { opf => '1976', lt => '20', rt => '21', str => '1', oper => '1870', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '2', oper => '1872', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '3', oper => '1868', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '4', oper => '1873', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '5', oper => '1871', am => '403' },
+
 # crosstype operators int84
 { opf => '1976', lt => '20', rt => '23', str => '1', oper => '418', am => '403' },
 { opf => '1976', lt => '20', rt => '23', str => '2', oper => '420', am => '403' },
@@ -90,18 +98,21 @@
 { opf => '1970', lt => '700', rt => '700', str => '3', oper => '620', am => '403' },
 { opf => '1970', lt => '700', rt => '700', str => '4', oper => '625', am => '403' },
 { opf => '1970', lt => '700', rt => '700', str => '5', oper => '623', am => '403' },
+
 # crosstype operators float48
 { opf => '1970', lt => '700', rt => '701', str => '1', oper => '1122', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '2', oper => '1124', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '3', oper => '1120', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '4', oper => '1125', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '5', oper => '1123', am => '403' },
+
 # default operators float8
 { opf => '1970', lt => '701', rt => '701', str => '1', oper => '672', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '2', oper => '673', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '3', oper => '670', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '4', oper => '675', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '5', oper => '674', am => '403' },
+
 # crosstype operators float84
 { opf => '1970', lt => '701', rt => '700', str => '1', oper => '1132', am => '403' },
 { opf => '1970', lt => '701', rt => '700', str => '2', oper => '1134', am => '403' },
@@ -165,48 +176,56 @@
 { opf => '434', lt => '1082', rt => '1082', str => '3', oper => '1093', am => '403' },
 { opf => '434', lt => '1082', rt => '1082', str => '4', oper => '1098', am => '403' },
 { opf => '434', lt => '1082', rt => '1082', str => '5', oper => '1097', am => '403' },
+
 # crosstype operators vs timestamp
 { opf => '434', lt => '1082', rt => '1114', str => '1', oper => '2345', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '2', oper => '2346', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '3', oper => '2347', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '4', oper => '2348', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '5', oper => '2349', am => '403' },
+
 # crosstype operators vs timestamptz
 { opf => '434', lt => '1082', rt => '1184', str => '1', oper => '2358', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '2', oper => '2359', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '3', oper => '2360', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '4', oper => '2361', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '5', oper => '2362', am => '403' },
+
 # default operators timestamp
 { opf => '434', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '3', oper => '2060', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '4', oper => '2065', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '5', oper => '2064', am => '403' },
+
 # crosstype operators vs date
 { opf => '434', lt => '1114', rt => '1082', str => '1', oper => '2371', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '2', oper => '2372', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '3', oper => '2373', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '4', oper => '2374', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '5', oper => '2375', am => '403' },
+
 # crosstype operators vs timestamptz
 { opf => '434', lt => '1114', rt => '1184', str => '1', oper => '2534', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '2', oper => '2535', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '3', oper => '2536', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '4', oper => '2537', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '5', oper => '2538', am => '403' },
+
 # default operators timestamptz
 { opf => '434', lt => '1184', rt => '1184', str => '1', oper => '1322', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '2', oper => '1323', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '3', oper => '1320', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '4', oper => '1325', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '5', oper => '1324', am => '403' },
+
 # crosstype operators vs date
 { opf => '434', lt => '1184', rt => '1082', str => '1', oper => '2384', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '2', oper => '2385', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '3', oper => '2386', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '4', oper => '2387', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '5', oper => '2388', am => '403' },
+
 # crosstype operators vs timestamp
 { opf => '434', lt => '1184', rt => '1114', str => '1', oper => '2540', am => '403' },
 { opf => '434', lt => '1184', rt => '1114', str => '2', oper => '2541', am => '403' },
@@ -378,17 +397,22 @@
 
 # bpchar_ops
 { opf => '427', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+
 # char_ops
 { opf => '431', lt => '18', rt => '18', str => '1', oper => '92', am => '405' },
+
 # date_ops
 { opf => '435', lt => '1082', rt => '1082', str => '1', oper => '1093', am => '405' },
+
 # float_ops
 { opf => '1971', lt => '700', rt => '700', str => '1', oper => '620', am => '405' },
 { opf => '1971', lt => '701', rt => '701', str => '1', oper => '670', am => '405' },
 { opf => '1971', lt => '700', rt => '701', str => '1', oper => '1120', am => '405' },
 { opf => '1971', lt => '701', rt => '700', str => '1', oper => '1130', am => '405' },
+
 # network_ops
 { opf => '1975', lt => '869', rt => '869', str => '1', oper => '1201', am => '405' },
+
 # integer_ops
 { opf => '1977', lt => '21', rt => '21', str => '1', oper => '94', am => '405' },
 { opf => '1977', lt => '23', rt => '23', str => '1', oper => '96', am => '405' },
@@ -399,52 +423,76 @@
 { opf => '1977', lt => '23', rt => '20', str => '1', oper => '15', am => '405' },
 { opf => '1977', lt => '20', rt => '21', str => '1', oper => '1868', am => '405' },
 { opf => '1977', lt => '20', rt => '23', str => '1', oper => '416', am => '405' },
+
 # interval_ops
 { opf => '1983', lt => '1186', rt => '1186', str => '1', oper => '1330', am => '405' },
+
 # macaddr_ops
 { opf => '1985', lt => '829', rt => '829', str => '1', oper => '1220', am => '405' },
+
 # macaddr8_ops
 { opf => '3372', lt => '774', rt => '774', str => '1', oper => '3362', am => '405' },
+
 # name_ops
 { opf => '1987', lt => '19', rt => '19', str => '1', oper => '93', am => '405' },
+
 # oid_ops
 { opf => '1990', lt => '26', rt => '26', str => '1', oper => '607', am => '405' },
+
 # oidvector_ops
 { opf => '1992', lt => '30', rt => '30', str => '1', oper => '649', am => '405' },
+
 # text_ops
 { opf => '1995', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+
 # time_ops
 { opf => '1997', lt => '1083', rt => '1083', str => '1', oper => '1108', am => '405' },
+
 # timestamptz_ops
 { opf => '1999', lt => '1184', rt => '1184', str => '1', oper => '1320', am => '405' },
+
 # timetz_ops
 { opf => '2001', lt => '1266', rt => '1266', str => '1', oper => '1550', am => '405' },
+
 # timestamp_ops
 { opf => '2040', lt => '1114', rt => '1114', str => '1', oper => '2060', am => '405' },
+
 # bool_ops
 { opf => '2222', lt => '16', rt => '16', str => '1', oper => '91', am => '405' },
+
 # bytea_ops
 { opf => '2223', lt => '17', rt => '17', str => '1', oper => '1955', am => '405' },
+
 # xid_ops
 { opf => '2225', lt => '28', rt => '28', str => '1', oper => '352', am => '405' },
+
 # cid_ops
 { opf => '2226', lt => '29', rt => '29', str => '1', oper => '385', am => '405' },
+
 # abstime_ops
 { opf => '2227', lt => '702', rt => '702', str => '1', oper => '560', am => '405' },
+
 # reltime_ops
 { opf => '2228', lt => '703', rt => '703', str => '1', oper => '566', am => '405' },
+
 # text_pattern_ops
 { opf => '2229', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+
 # bpchar_pattern_ops
 { opf => '2231', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+
 # aclitem_ops
 { opf => '2235', lt => '1033', rt => '1033', str => '1', oper => '974', am => '405' },
+
 # uuid_ops
 { opf => '2969', lt => '2950', rt => '2950', str => '1', oper => '2972', am => '405' },
+
 # pg_lsn_ops
 { opf => '3254', lt => '3220', rt => '3220', str => '1', oper => '3222', am => '405' },
+
 # numeric_ops
 { opf => '1998', lt => '1700', rt => '1700', str => '1', oper => '1752', am => '405' },
+
 # array_ops
 { opf => '627', lt => '2277', rt => '2277', str => '1', oper => '1070', am => '405' },
 
@@ -674,24 +722,28 @@
 { opf => '3794', lt => '869', rt => '869', str => '27', oper => '934', am => '4000' },
 
 # BRIN opclasses
+
 # minmax bytea
 { opf => '4064', lt => '17', rt => '17', str => '1', oper => '1957', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '2', oper => '1958', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '3', oper => '1955', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '4', oper => '1960', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '5', oper => '1959', am => '3580' },
+
 # minmax "char"
 { opf => '4062', lt => '18', rt => '18', str => '1', oper => '631', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '2', oper => '632', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '3', oper => '92', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '4', oper => '634', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '5', oper => '633', am => '3580' },
+
 # minmax name
 { opf => '4065', lt => '19', rt => '19', str => '1', oper => '660', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '2', oper => '661', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '3', oper => '93', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '4', oper => '663', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '5', oper => '662', am => '3580' },
+
 # minmax integer
 { opf => '4054', lt => '20', rt => '20', str => '1', oper => '412', am => '3580' },
 { opf => '4054', lt => '20', rt => '20', str => '2', oper => '414', am => '3580' },
@@ -745,18 +797,21 @@
 { opf => '4056', lt => '25', rt => '25', str => '3', oper => '98', am => '3580' },
 { opf => '4056', lt => '25', rt => '25', str => '4', oper => '667', am => '3580' },
 { opf => '4056', lt => '25', rt => '25', str => '5', oper => '666', am => '3580' },
+
 # minmax oid
 { opf => '4068', lt => '26', rt => '26', str => '1', oper => '609', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '2', oper => '611', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '3', oper => '607', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '4', oper => '612', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '5', oper => '610', am => '3580' },
+
 # minmax tid
 { opf => '4069', lt => '27', rt => '27', str => '1', oper => '2799', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '2', oper => '2801', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '3', oper => '387', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '4', oper => '2802', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '5', oper => '2800', am => '3580' },
+
 # minmax float (float4, float8)
 { opf => '4070', lt => '700', rt => '700', str => '1', oper => '622', am => '3580' },
 { opf => '4070', lt => '700', rt => '700', str => '2', oper => '624', am => '3580' },
@@ -785,30 +840,35 @@
 { opf => '4072', lt => '702', rt => '702', str => '3', oper => '560', am => '3580' },
 { opf => '4072', lt => '702', rt => '702', str => '4', oper => '565', am => '3580' },
 { opf => '4072', lt => '702', rt => '702', str => '5', oper => '563', am => '3580' },
+
 # minmax reltime
 { opf => '4073', lt => '703', rt => '703', str => '1', oper => '568', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '2', oper => '570', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '3', oper => '566', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '4', oper => '571', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '5', oper => '569', am => '3580' },
+
 # minmax macaddr
 { opf => '4074', lt => '829', rt => '829', str => '1', oper => '1222', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '2', oper => '1223', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '3', oper => '1220', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '4', oper => '1225', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '5', oper => '1224', am => '3580' },
+
 # minmax macaddr8
 { opf => '4109', lt => '774', rt => '774', str => '1', oper => '3364', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '2', oper => '3365', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '3', oper => '3362', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '4', oper => '3367', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '5', oper => '3366', am => '3580' },
+
 # minmax inet
 { opf => '4075', lt => '869', rt => '869', str => '1', oper => '1203', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '2', oper => '1204', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '3', oper => '1201', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '4', oper => '1206', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '5', oper => '1205', am => '3580' },
+
 # inclusion inet
 { opf => '4102', lt => '869', rt => '869', str => '3', oper => '3552', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '7', oper => '934', am => '3580' },
@@ -816,18 +876,21 @@
 { opf => '4102', lt => '869', rt => '869', str => '18', oper => '1201', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '24', oper => '933', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '26', oper => '931', am => '3580' },
+
 # minmax character
 { opf => '4076', lt => '1042', rt => '1042', str => '1', oper => '1058', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '2', oper => '1059', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '3', oper => '1054', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '4', oper => '1061', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '5', oper => '1060', am => '3580' },
+
 # minmax time without time zone
 { opf => '4077', lt => '1083', rt => '1083', str => '1', oper => '1110', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '2', oper => '1111', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '3', oper => '1108', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '4', oper => '1113', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '5', oper => '1112', am => '3580' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { opf => '4059', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '3580' },
 { opf => '4059', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '3580' },
@@ -881,36 +944,42 @@
 { opf => '4078', lt => '1186', rt => '1186', str => '3', oper => '1330', am => '3580' },
 { opf => '4078', lt => '1186', rt => '1186', str => '4', oper => '1335', am => '3580' },
 { opf => '4078', lt => '1186', rt => '1186', str => '5', oper => '1334', am => '3580' },
+
 # minmax time with time zone
 { opf => '4058', lt => '1266', rt => '1266', str => '1', oper => '1552', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '2', oper => '1553', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '3', oper => '1550', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '4', oper => '1555', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '5', oper => '1554', am => '3580' },
+
 # minmax bit
 { opf => '4079', lt => '1560', rt => '1560', str => '1', oper => '1786', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '2', oper => '1788', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '3', oper => '1784', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '4', oper => '1789', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '5', oper => '1787', am => '3580' },
+
 # minmax bit varying
 { opf => '4080', lt => '1562', rt => '1562', str => '1', oper => '1806', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '2', oper => '1808', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '3', oper => '1804', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '4', oper => '1809', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '5', oper => '1807', am => '3580' },
+
 # minmax numeric
 { opf => '4055', lt => '1700', rt => '1700', str => '1', oper => '1754', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '2', oper => '1755', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '3', oper => '1752', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '4', oper => '1757', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '5', oper => '1756', am => '3580' },
+
 # minmax uuid
 { opf => '4081', lt => '2950', rt => '2950', str => '1', oper => '2974', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '2', oper => '2976', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '3', oper => '2972', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '4', oper => '2977', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '5', oper => '2975', am => '3580' },
+
 # inclusion range types
 { opf => '4103', lt => '3831', rt => '3831', str => '1', oper => '3893', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '2', oper => '3895', am => '3580' },
@@ -926,12 +995,14 @@
 { opf => '4103', lt => '3831', rt => '3831', str => '21', oper => '3885', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '22', oper => '3887', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '23', oper => '3886', am => '3580' },
+
 # minmax pg_lsn
 { opf => '4082', lt => '3220', rt => '3220', str => '1', oper => '3224', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '2', oper => '3226', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '3', oper => '3222', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '4', oper => '3227', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '5', oper => '3225', am => '3580' },
+
 # inclusion box
 { opf => '4104', lt => '603', rt => '603', str => '1', oper => '493', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '2', oper => '494', am => '3580' },
@@ -945,6 +1016,7 @@
 { opf => '4104', lt => '603', rt => '603', str => '10', oper => '2570', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '11', oper => '2573', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '12', oper => '2572', am => '3580' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { opf => '4104', lt => '603', rt => '600', str => '7', oper => '433', am => '3580' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index a165e06..6c25ebf 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -260,21 +260,25 @@
 { opf => '5000', lt => '603', rt => '603', num => '5', amproc => '5016' },
 
 # BRIN opclasses
+
 # minmax bytea
 { opf => '4064', lt => '17', rt => '17', num => '1', amproc => '3383' },
 { opf => '4064', lt => '17', rt => '17', num => '2', amproc => '3384' },
 { opf => '4064', lt => '17', rt => '17', num => '3', amproc => '3385' },
 { opf => '4064', lt => '17', rt => '17', num => '4', amproc => '3386' },
+
 # minmax "char"
 { opf => '4062', lt => '18', rt => '18', num => '1', amproc => '3383' },
 { opf => '4062', lt => '18', rt => '18', num => '2', amproc => '3384' },
 { opf => '4062', lt => '18', rt => '18', num => '3', amproc => '3385' },
 { opf => '4062', lt => '18', rt => '18', num => '4', amproc => '3386' },
+
 # minmax name
 { opf => '4065', lt => '19', rt => '19', num => '1', amproc => '3383' },
 { opf => '4065', lt => '19', rt => '19', num => '2', amproc => '3384' },
 { opf => '4065', lt => '19', rt => '19', num => '3', amproc => '3385' },
 { opf => '4065', lt => '19', rt => '19', num => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { opf => '4054', lt => '20', rt => '20', num => '1', amproc => '3383' },
 { opf => '4054', lt => '20', rt => '20', num => '2', amproc => '3384' },
@@ -320,16 +324,19 @@
 { opf => '4056', lt => '25', rt => '25', num => '2', amproc => '3384' },
 { opf => '4056', lt => '25', rt => '25', num => '3', amproc => '3385' },
 { opf => '4056', lt => '25', rt => '25', num => '4', amproc => '3386' },
+
 # minmax oid
 { opf => '4068', lt => '26', rt => '26', num => '1', amproc => '3383' },
 { opf => '4068', lt => '26', rt => '26', num => '2', amproc => '3384' },
 { opf => '4068', lt => '26', rt => '26', num => '3', amproc => '3385' },
 { opf => '4068', lt => '26', rt => '26', num => '4', amproc => '3386' },
+
 # minmax tid
 { opf => '4069', lt => '27', rt => '27', num => '1', amproc => '3383' },
 { opf => '4069', lt => '27', rt => '27', num => '2', amproc => '3384' },
 { opf => '4069', lt => '27', rt => '27', num => '3', amproc => '3385' },
 { opf => '4069', lt => '27', rt => '27', num => '4', amproc => '3386' },
+
 # minmax float
 { opf => '4070', lt => '700', rt => '700', num => '1', amproc => '3383' },
 { opf => '4070', lt => '700', rt => '700', num => '2', amproc => '3384' },
@@ -356,26 +363,31 @@
 { opf => '4072', lt => '702', rt => '702', num => '2', amproc => '3384' },
 { opf => '4072', lt => '702', rt => '702', num => '3', amproc => '3385' },
 { opf => '4072', lt => '702', rt => '702', num => '4', amproc => '3386' },
+
 # minmax reltime
 { opf => '4073', lt => '703', rt => '703', num => '1', amproc => '3383' },
 { opf => '4073', lt => '703', rt => '703', num => '2', amproc => '3384' },
 { opf => '4073', lt => '703', rt => '703', num => '3', amproc => '3385' },
 { opf => '4073', lt => '703', rt => '703', num => '4', amproc => '3386' },
+
 # minmax macaddr
 { opf => '4074', lt => '829', rt => '829', num => '1', amproc => '3383' },
 { opf => '4074', lt => '829', rt => '829', num => '2', amproc => '3384' },
 { opf => '4074', lt => '829', rt => '829', num => '3', amproc => '3385' },
 { opf => '4074', lt => '829', rt => '829', num => '4', amproc => '3386' },
+
 # minmax macaddr8
 { opf => '4109', lt => '774', rt => '774', num => '1', amproc => '3383' },
 { opf => '4109', lt => '774', rt => '774', num => '2', amproc => '3384' },
 { opf => '4109', lt => '774', rt => '774', num => '3', amproc => '3385' },
 { opf => '4109', lt => '774', rt => '774', num => '4', amproc => '3386' },
+
 # minmax inet
 { opf => '4075', lt => '869', rt => '869', num => '1', amproc => '3383' },
 { opf => '4075', lt => '869', rt => '869', num => '2', amproc => '3384' },
 { opf => '4075', lt => '869', rt => '869', num => '3', amproc => '3385' },
 { opf => '4075', lt => '869', rt => '869', num => '4', amproc => '3386' },
+
 # inclusion inet
 { opf => '4102', lt => '869', rt => '869', num => '1', amproc => '4105' },
 { opf => '4102', lt => '869', rt => '869', num => '2', amproc => '4106' },
@@ -384,16 +396,19 @@
 { opf => '4102', lt => '869', rt => '869', num => '11', amproc => '4063' },
 { opf => '4102', lt => '869', rt => '869', num => '12', amproc => '4071' },
 { opf => '4102', lt => '869', rt => '869', num => '13', amproc => '930' },
+
 # minmax character
 { opf => '4076', lt => '1042', rt => '1042', num => '1', amproc => '3383' },
 { opf => '4076', lt => '1042', rt => '1042', num => '2', amproc => '3384' },
 { opf => '4076', lt => '1042', rt => '1042', num => '3', amproc => '3385' },
 { opf => '4076', lt => '1042', rt => '1042', num => '4', amproc => '3386' },
+
 # minmax time without time zone
 { opf => '4077', lt => '1083', rt => '1083', num => '1', amproc => '3383' },
 { opf => '4077', lt => '1083', rt => '1083', num => '2', amproc => '3384' },
 { opf => '4077', lt => '1083', rt => '1083', num => '3', amproc => '3385' },
 { opf => '4077', lt => '1083', rt => '1083', num => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { opf => '4059', lt => '1114', rt => '1114', num => '1', amproc => '3383' },
 { opf => '4059', lt => '1114', rt => '1114', num => '2', amproc => '3384' },
@@ -439,31 +454,37 @@
 { opf => '4078', lt => '1186', rt => '1186', num => '2', amproc => '3384' },
 { opf => '4078', lt => '1186', rt => '1186', num => '3', amproc => '3385' },
 { opf => '4078', lt => '1186', rt => '1186', num => '4', amproc => '3386' },
+
 # minmax time with time zone
 { opf => '4058', lt => '1266', rt => '1266', num => '1', amproc => '3383' },
 { opf => '4058', lt => '1266', rt => '1266', num => '2', amproc => '3384' },
 { opf => '4058', lt => '1266', rt => '1266', num => '3', amproc => '3385' },
 { opf => '4058', lt => '1266', rt => '1266', num => '4', amproc => '3386' },
+
 # minmax bit
 { opf => '4079', lt => '1560', rt => '1560', num => '1', amproc => '3383' },
 { opf => '4079', lt => '1560', rt => '1560', num => '2', amproc => '3384' },
 { opf => '4079', lt => '1560', rt => '1560', num => '3', amproc => '3385' },
 { opf => '4079', lt => '1560', rt => '1560', num => '4', amproc => '3386' },
+
 # minmax bit varying
 { opf => '4080', lt => '1562', rt => '1562', num => '1', amproc => '3383' },
 { opf => '4080', lt => '1562', rt => '1562', num => '2', amproc => '3384' },
 { opf => '4080', lt => '1562', rt => '1562', num => '3', amproc => '3385' },
 { opf => '4080', lt => '1562', rt => '1562', num => '4', amproc => '3386' },
+
 # minmax numeric
 { opf => '4055', lt => '1700', rt => '1700', num => '1', amproc => '3383' },
 { opf => '4055', lt => '1700', rt => '1700', num => '2', amproc => '3384' },
 { opf => '4055', lt => '1700', rt => '1700', num => '3', amproc => '3385' },
 { opf => '4055', lt => '1700', rt => '1700', num => '4', amproc => '3386' },
+
 # minmax uuid
 { opf => '4081', lt => '2950', rt => '2950', num => '1', amproc => '3383' },
 { opf => '4081', lt => '2950', rt => '2950', num => '2', amproc => '3384' },
 { opf => '4081', lt => '2950', rt => '2950', num => '3', amproc => '3385' },
 { opf => '4081', lt => '2950', rt => '2950', num => '4', amproc => '3386' },
+
 # inclusion range types
 { opf => '4103', lt => '3831', rt => '3831', num => '1', amproc => '4105' },
 { opf => '4103', lt => '3831', rt => '3831', num => '2', amproc => '4106' },
@@ -472,11 +493,13 @@
 { opf => '4103', lt => '3831', rt => '3831', num => '11', amproc => '4057' },
 { opf => '4103', lt => '3831', rt => '3831', num => '13', amproc => '3859' },
 { opf => '4103', lt => '3831', rt => '3831', num => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { opf => '4082', lt => '3220', rt => '3220', num => '1', amproc => '3383' },
 { opf => '4082', lt => '3220', rt => '3220', num => '2', amproc => '3384' },
 { opf => '4082', lt => '3220', rt => '3220', num => '3', amproc => '3385' },
 { opf => '4082', lt => '3220', rt => '3220', num => '4', amproc => '3386' },
+
 # inclusion box
 { opf => '4104', lt => '603', rt => '603', num => '1', amproc => '4105' },
 { opf => '4104', lt => '603', rt => '603', num => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index 927128e..315b0d0 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -1,12 +1,14 @@
 # pg_authid.dat
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# The C code typically refers to these roles using the #define symbols
+# in pg_authid.h, so be sure to keep those in sync with the data here.
+
+# The uppercase quantities will be replaced at initdb time with user choices.
+# so we must double-quote them.
 { oid => '10',
-  rolname => 'POSTGRES', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
+
 { oid => '3373',
   rolname => 'pg_monitor' },
 { oid => '3374',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index a1fe83d..add77ad 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -54,6 +54,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -193,6 +194,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -227,6 +229,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -241,6 +244,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -248,6 +252,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -256,6 +261,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index af762e8..d574ba8 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -1,12 +1,10 @@
 # pg_class.dat
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
-# Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
-# similarly, "1" in relminmxid stands for FirstMultiXactId
 { oid => '1247',
   relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't' },
 { oid => '1249',
@@ -16,11 +14,4 @@
 { oid => '1259',
   relname => 'pg_class', reltype => '83', relnatts => '33', relhasoids => 't' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bc4d41f..dfa1553 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -1,7 +1,10 @@
 # pg_database.dat
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 646fd30..3281eea 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -8,6 +8,4 @@
 { oid => '2200', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index b0f2e8c..8e4569e 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -44,12 +44,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcfamily => '1985', opcintype => '829' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcfamily => '3371', opcintype => '774' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcfamily => '3372', opcintype => '774' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcfamily => '1986', opcintype => '19', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcfamily => '1987', opcintype => '19' },
 { oid => '3125',
   opcmethod => '403', opcname => 'numeric_ops', opcfamily => '1988', opcintype => '1700' },
@@ -124,7 +126,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcfamily => '4064', opcintype => '17', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcfamily => '4062', opcintype => '18', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcfamily => '4065', opcintype => '19', opckeytype => '19' },
@@ -152,12 +156,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcfamily => '4079', opcintype => '1560', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcfamily => '4080', opcintype => '1562', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcfamily => '4055', opcintype => '1700', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcfamily => '4081', opcintype => '2950', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcfamily => '4103', opcintype => '3831', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcfamily => '4082', opcintype => '3220', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcfamily => '4104', opcintype => '603', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index 1437225..898e2ae 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -1,7 +1,7 @@
 # pg_operator.dat
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.h is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1581,6 +1581,7 @@
   oprname => '&&', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_and' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_or' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => '5003' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index ed5db1e..2aeb6e2 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -1,14 +1,16 @@
 # pg_proc.dat
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -17,7 +19,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier
 
 # OIDS 1 - 99
 
@@ -1774,6 +1776,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   n => 'obj_description', prolang => '14', procost => '100', v => 's', p => 's', rt => '25', at => '26', s => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   n => 'oidvectortypes', v => 's', p => 's', rt => '25', at => '30' },
 
@@ -1934,11 +1937,11 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   n => 'pclose', p => 's', rt => '602', at => '602', s => 'path_close' },
 { oid => '1434', descr => 'open path',
   n => 'popen', p => 's', rt => '602', at => '602', s => 'path_open' },
+
 { oid => '1435',
   n => 'path_add', p => 's', rt => '602', at => '602 602' },
 { oid => '1436',
@@ -2730,6 +2733,7 @@
   n => 'interval_hash_extended', p => 's', rt => '20', at => '1186 20' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   n => 'numeric_in', p => 's', rt => '1700', at => '2275 26 23' },
 { oid => '1702', descr => 'I/O',
@@ -4753,6 +4757,7 @@
   n => 'bool_anytrue', p => 's', rt => '16', at => '2281' },
 { oid => '2517', descr => 'boolean-and aggregate',
   n => 'bool_and', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   n => 'bool_or', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
@@ -4802,6 +4807,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   n => 'pg_postmaster_start_time', v => 's', p => 's', rt => '1184', at => '' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   n => 'pg_conf_load_time', v => 's', p => 'r', rt => '1184', at => '' },
@@ -5658,6 +5664,7 @@
   n => 'jsonb_pretty', p => 's', rt => '25', at => '3802' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   n => 'jsonb_insert', p => 's', rt => '3802', at => '3802 1009 3802 16' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   n => 'txid_snapshot_in', p => 's', rt => '2970', at => '2275' },
@@ -6069,37 +6076,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   n => 'pg_replication_origin_create', v => 'v', rt => '26', at => '25' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   n => 'pg_replication_origin_drop', v => 'v', rt => '2278', at => '25' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   n => 'pg_replication_origin_oid', v => 's', p => 's', rt => '26', at => '25' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   n => 'pg_replication_origin_session_setup', v => 'v', rt => '2278', at => '25' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   n => 'pg_replication_origin_session_reset', v => 'v', rt => '2278', at => '' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   n => 'pg_replication_origin_session_is_setup', v => 'v', p => 'r', rt => '16', at => '' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   n => 'pg_replication_origin_session_progress', v => 'v', rt => '3220', at => '16' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   n => 'pg_replication_origin_xact_setup', v => 'v', p => 'r', rt => '2278', at => '3220 1184' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   n => 'pg_replication_origin_xact_reset', v => 'v', p => 'r', rt => '2278', at => '' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   n => 'pg_replication_origin_advance', v => 'v', rt => '2278', at => '25 3220' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   n => 'pg_replication_origin_progress', v => 'v', rt => '3220', at => '25 16' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   n => 'pg_show_replication_origin_status', prorows => '100', proisstrict => 'f', proretset => 't', v => 'v', p => 'r', rt => '2249', at => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}' },
 
@@ -6122,20 +6118,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   n => 'pg_control_system', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   n => 'pg_control_checkpoint', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   n => 'pg_control_recovery', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   n => 'pg_control_init', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   n => 'pg_import_system_collations', procost => '100', v => 'v', p => 'r', rt => '23', at => '4089' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   n => 'pg_collation_actual_version', procost => '100', v => 'v', p => 's', rt => '25', at => '26' },
 
@@ -6149,19 +6141,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   n => 'satisfies_hash_partition', provariadic => '2276', proisstrict => 'f', p => 's', rt => '16', at => '26 23 23 2276', proargmodes => '{i,i,i,v}' },
 
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 063b975..cd9a78b 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -8,6 +8,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 65a60bd..a94010d 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -7,48 +7,35 @@
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
-
 { oid => '17', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
-
 { oid => '18', descr => 'single character',
   typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
-
 { oid => '19', descr => '63-byte type for storing system identifiers',
   typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
-
 { oid => '20', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
-
 { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
-
 { oid => '22', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
-
 { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
-
 { oid => '24', descr => 'registered procedure',
   typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
-
 { oid => '25', descr => 'variable-length string, no limit specified',
   typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
-
 { oid => '27', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
-
 { oid => '28', descr => 'transaction id',
   typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
-
 { oid => '29', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
-
 { oid => '30', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
 
@@ -65,6 +52,7 @@
   typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => '1259', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 
 # OIDS 100 - 199
+
 { oid => '114',
   typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typalign => 'i', typstorage => 'x' },
 { oid => '142', descr => 'XML content',
@@ -73,16 +61,12 @@
   typname => '_xml', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '199',
   typname => '_json', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
-
 { oid => '194', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '3361', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '3402', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '32', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' },
 
@@ -98,6 +82,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' },
 { oid => '601', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -108,7 +93,6 @@
   typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', typdelim => '\073', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typalign => 'd' },
 { oid => '604', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typalign => 'd', typstorage => 'x' },
-
 { oid => '628', descr => 'geometric line',
   typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' },
 { oid => '629',
@@ -128,7 +112,6 @@
   typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typalign => 'i' },
 { oid => '705',
   typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
-
 { oid => '718', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' },
 { oid => '719',
@@ -151,6 +134,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '1001',
@@ -231,6 +215,7 @@
   typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typalign => 'd' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', descr => 'date and time',
   typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typalign => 'd' },
 { oid => '1115',
@@ -249,6 +234,7 @@
   typname => '_interval', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '1266', descr => 'time of day with time zone',
@@ -257,6 +243,7 @@
   typname => '_timetz', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', descr => 'fixed-length bit string',
   typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typalign => 'i', typstorage => 'x' },
 { oid => '1561',
@@ -269,37 +256,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
-
 { oid => '1790', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
-
 { oid => '2202', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
-
 { oid => '2203', descr => 'registered operator',
   typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
-
 { oid => '2204', descr => 'registered operator (with args)',
   typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
-
 { oid => '2205', descr => 'registered class',
   typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
-
 { oid => '2206', descr => 'registered type',
   typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
-
 { oid => '4096', descr => 'registered role',
   typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
-
 { oid => '4089', descr => 'registered namespace',
   typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
-
 { oid => '2207',
   typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '2208',
@@ -338,7 +318,6 @@
   typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' },
 { oid => '3769', descr => 'registered text search dictionary',
   typname => 'regdictionary', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typalign => 'i' },
-
 { oid => '3643',
   typname => '_tsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '3644',
@@ -395,6 +374,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249',
   typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 { oid => '2287',
@@ -432,8 +412,4 @@
 { oid => '3831',
   typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

0007-Update-distprep-scripts_v3.patchtext/x-patch; charset=US-ASCII; name=0007-Update-distprep-scripts_v3.patchDownload
From 864866206cbea843e56bbba7c7ba4c7db6ae12dd Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 14:22:25 +0700
Subject: [PATCH 07/10] Update distprep scripts.

Teach genbki.pl and Gen_fmgrtab.pl to read the data files, and arrange for the former to double-quote certain values so bootscanner.l can read them.

Introduce Makefile dependencies on the data files.
---
 src/backend/catalog/Makefile     |  11 +++-
 src/backend/catalog/genbki.pl    | 114 ++++++++++++++++++++++++++++++---------
 src/backend/utils/Gen_fmgrtab.pl |  34 +++++++-----
 src/backend/utils/Makefile       |   2 +-
 src/include/catalog/genbki.h     |   3 ++
 5 files changed, 124 insertions(+), 40 deletions(-)

diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 1876399..973ffc2 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -93,8 +93,26 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# We pass .h file names as arguments and then look for matching
+# data files for the data.
+my @datfiles;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/;
+	my $datfile = "$1.dat";
+	if (-e $datfile)
+	{
+		push @datfiles, $datfile;
+	}
+}
+
+# Read all the files into internal data structures
+my $catalogs     = Catalog::ParseHeader(@input_files);
+my $catalog_data = Catalog::ParseData(@datfiles);
+
+# Note: Since we have now loaded all the data, we can build lookup
+# tables here. However, if we need default values for a catalog, we
+# need to wait until the full tuples have been built.
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -107,7 +125,7 @@ my @tables_needing_macros;
 my %regprocoids;
 my @types;
 
-# produce output, one catalog at a time
+# Produce output, one catalog at a time.
 foreach my $catname (@{ $catalogs->{names} })
 {
 
@@ -156,17 +174,21 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	if (defined $catalog_data->{$catname})
 	{
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
+		# Ordinary catalog with a data file
+		foreach my $row (@{ $catalog_data->{$catname} })
 		{
+			my %bki_values = %$row;
 
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
+			# We must do the following operations in the order given.
+			Catalog::ResolveColumnAbbrevs(\%bki_values, $schema);
+			if ($catname eq 'pg_proc')
+			{
+				Catalog::ComputePgProcFields(\%bki_values);
+			}
+			Catalog::AddDefaultValues(\%bki_values, $schema, $catname);
 
 			# Perform required substitutions on fields
 			foreach my $column (@$schema)
@@ -200,7 +222,7 @@ foreach my $catname (@{ $catalogs->{names} })
 				}
 				else
 				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
+					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 				}
 			}
 
@@ -208,33 +230,33 @@ foreach my $catname (@{ $catalogs->{names} })
 			if ($catname eq 'pg_type')
 			{
 				my %type = %bki_values;
-				$type{oid} = $row->{oid};
 				push @types, \%type;
 			}
 
+			# Add quotes where necessary.
+			format_bki_row(\%bki_values, $schema);
+
 			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
+			bki_insert(\%bki_values, @attnames);
 
 			# Write comments to postgres.description and
 			# postgres.shdescription
-			if (defined $row->{descr})
+			if (defined $bki_values{descr})
 			{
-				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
-				  $row->{descr};
+				printf $descr "%s\t%s\t0\t%s\n", $bki_values{oid}, $catname,
+				  $bki_values{descr};
 			}
-			if (defined $row->{shdescr})
+			if (defined $bki_values{shdescr})
 			{
-				printf $shdescr "%s\t%s\t%s\n", $row->{oid}, $catname,
-				  $row->{shdescr};
+				printf $shdescr "%s\t%s\t%s\n", $bki_values{oid}, $catname,
+				  $bki_values{shdescr};
 			}
 		}
 	}
 	if ($catname eq 'pg_attribute')
 	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
+		# For pg_attribute.h, we generate data entries ourselves.
 		# NB: pg_type.h must come before pg_attribute.h in the input list
 		# of catalog names, since we use info from pg_type.h here.
 		foreach my $table_name (@{ $catalogs->{names} })
@@ -317,12 +339,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@{ $catalogs->{toasting} })
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@{ $catalogs->{indexing} })
 {
 	print $bki $declaration;
 }
@@ -380,6 +402,48 @@ exit 0;
 
 #################### Subroutines ########################
 
+# Supply quoting for a normal bki row.
+# This allows us to keep most double quotes
+# out of the catalog data files for readability.
+sub format_bki_row
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if
+		(
+			length($row->{$attname}) == 0
+
+			# Whitespace
+			or $row->{$attname} =~ /\s/
+
+			# Quote strings that have special characters
+			# except for certain cases. See bootscanner.l
+			or (    $row->{$attname} =~ /\W/
+				and $row->{$attname} !~ /^\\\d{3}$/  # octal
+				and $row->{$attname} !~ /^-\d*$/)    # '-' or '-1'
+
+			# XXX Not needed, but keeps the .bki diff down to a reasonable
+			# size during review
+			or $attname eq 'oprname'    # Operator names
+			or $atttype eq 'oidvector'  # Arrays etc.
+			or $atttype eq 'int2vector'
+			or $atttype =~ /\[\]$/
+		)
+		{
+			if ($row->{$attname} ne '_null_' and $row->{$attname} !~ /^"([^"])*"$/)
+			{
+				$row->{$attname} = q|"| . $row->{$attname} . q|"|;
+			}
+		}
+	}
+}
+
 
 # Given the schema of pg_attribute, generate an entry for it using information
 # about the attribute it describes.  Any value that is not handled here
@@ -447,7 +511,7 @@ sub emit_pgattr_row
 	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki
 sub bki_insert
 {
 	my $row        = shift;
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index a51a755..b9a6a11 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.h and pg_proc.dat
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -55,35 +55,40 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 die "No input files.\n"                                     if !$infile;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# We pass the pg_proc.h path as an argument and then look for a matching
+# data file.
+$infile =~ /(.+)\.h$/;
+my $datfile = "$1.dat";
+die "No data files.\n" if ! -e $datfile;
+
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
+# Read all the files into internal data structures
+my $catalogs     = Catalog::ParseHeader($infile);
+my $catalog_data = Catalog::ParseData($datfile);
 
 # Collect the raw data from pg_proc.h.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
+my $schema  = $catalogs->{pg_proc}->{columns};
+my $data    = $catalog_data->{pg_proc};
 foreach my $row (@$data)
 {
+	my %bki_values = %$row;
 
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	# We must do the following operations in the order given.
+	Catalog::ResolveColumnAbbrevs(\%bki_values, $schema);
+	Catalog::ComputePgProcFields(\%bki_values);
+	Catalog::AddDefaultValues(\%bki_values, $schema, 'pg_proc');
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -122,6 +127,7 @@ qq|/*-------------------------------------------------------------------------
  *
  *	It has been GENERATED by $0
  *	from $infile
+ *	and  $datfile
  *
  *-------------------------------------------------------------------------
  */
@@ -157,6 +163,7 @@ qq|/*-------------------------------------------------------------------------
  *
  *	It has been GENERATED by $0
  *	from $infile
+ *	and  $datfile
  *
  *-------------------------------------------------------------------------
  */
@@ -185,6 +192,7 @@ qq|/*-------------------------------------------------------------------------
  *
  *	It has been GENERATED by $0
  *	from $infile
+ *	and  $datfile
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..8ccfc3b 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,7 +24,7 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h $(top_srcdir)/src/include/catalog/pg_proc.dat
 	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 71fc579..c3ffa29 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,6 +34,9 @@
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* Specifies an abbreviated label for a column name */
+#define BKI_ABBREV(abb)
+
 /*
  * This is never defined; it's here only for documentation.
  *
-- 
2.7.4

0008-Remove-data-from-catalog-headers_v3.patch.tar.gzapplication/x-gzip; name=0008-Remove-data-from-catalog-headers_v3.patch.tar.gzDownload
�O2Z���{�� ��B�D�nl�$=3=O''�������t$%�����oI� ������oUu�L�L��{�W	���������Wu�����j��=^6���|��:^�������m��n���\7������8��"��=)�D}�c�b��2JX�dY��E�i����������fhv����������E�����?CsG�l�4����$���E���"M�6^�I�.Y�'�r^G?n7���:J�(�����*y��|�� ��E�q��E��bC����jV�����O��5�������Q�d��v�PV�}����<�2.�������������~��������*����ki�Z��FBK#����^]G��Ct�l�gO�>�����,�g�o��������sT�hrs
����j7�}t�F��|
����p�����Q��-�Zm��e��`�^�V����h�����F_Z�/����]{�ud@L���x5&'(��q{m@�g��e��j��n�a��&\;���[��CT��]@\�o����xs�<�j����
nE@\-M�uu!.���(��%�q���f�I�u\l�����n��I<���a��6:����W@|�$��.D��y�4c@;.�g���=����bd~VA������Y�U�������n�Y���nu=lb�r!���9����_urq�������f���9�������������&������������S���n�T����'{/���0�H�lV����z�z�[�S�������0��s���E���r����P��GlM��N�l��v�,�zr���������B���5��n$��d��\]�����Z�?�E��N�^7��
M�]�������^]��}:��YSc���yF����^��|�Z������g�v��\7��x��QH��k�;�[�f+����v�{0�M?��K��C4�y�����a�?����(�kO����ck%D��Bh���������'
F�chq��0��0����Zsv���\-F���"�����A�&�@��8?^��������(�k}t�i��Y�x&���hW��D�_�����h�����)��������x�h�:?���/V����3��{���=���''��y�6���,�����/���O��o������+���n�����S����z�>�����ny`���k��(zm�jw����x=�����(�=��}]5����6�����#��[n���)L�A�;>��_�(��kT��1ts
`���0���.�/�����������V Q�������G�o!��13����������N�#�#����]���r�zE����fqy�������K�������[����H���:����r�����d/�����3(��?@��$9�>�^����>������o��g�D�����]�@c��uO�IS���	���;W�nBDL�`o��i@�E���#��.o�p�%�����~q�^5]!v"�b�e&���J���#�3��(�MP���@�WT�F�����?�
����~|�����������~��������g&���O��������g�������~�XE�!��Y���#�i��y��@@��D������{��s�>�x��b���``������`\	M�8���?��Y�?�z��(`l��v�?�H�{:(Z��>������h��Y�V�,������z}��/��k��ej�$�}������x`��JY=�@��uo����(��#�nf5����f5�YM�UF����i*Of3�/�������TQ�1����T��hK�VQ�!D_2���z���y�_����	mp���rNSp<�R&�:��{f�_��B�g�{���#C�_V
U��?��*�)�&U9����h���[�\e
O�2����>F�W���^uV������^�{=,L6�^5$���}q
s�A�w������\ k~�v?�%�b���a�`l_�#^�D�^,IK����N&������_��
0z ��/�����DM��[Lw/J�M�F��� ��,��(f�[K��������r���^���U������s4���S���aw"y�����7v��dC�Y�<O�$���O�$�0�@)�fY���T����"X$H��D�V��q�{��;Q�D��*n�Q�B���l��J�;�PA5M'���W��4��U��J���t
U���U���*:y���P�:������?r���\RQL��w��VY���fc���4����?4W�ju
������b�1�v����m|l�7K�~5�~����J$mI}�nk�2�������~84[}���[3P�	DY����f�9�[��,AOL9�9�f�k>jt�'n�Q2���2�j�qC�_/.��FV��[`$�Mp[e-{9pZA�_Z�h�6�	�\X1����I{�"�r�AY>�QY^� �=���~��I�0h��*jW}y���8�u����Y��(�{����a�f���,�((��8�u��tD3
��O
�X&9������`�;1�c��O'J%�Sqs��`�J07�[�-���+��Jy�N�X�tZe�'��.�����4��O@O
��X
�Ft�g��.��eI��m�=qu���.KA�Ze�SWX�N
�26
��h���]�]:5��~���7<tv���.���N�4��;���vY�v��g����.��%Jh��X�	����]�w��37����U2��m��'B	����<���O�WM�r-���J��XP����l� /�*V��Y���y�k��}�,[��8�}?�����U�T�3+�YGpXw5��;�������e��P����@S�[	�M�_������b�.��Vez:w[^,�n�#3.3IB�CY'}�h4�L��N�R����$��e��L���/R�T�Y��5S�f�<������X�����)�i)���������`C��Lr/Vj.z�>���	"�!*3��"K�~�~	?����Y��CD�wDD�.�Zd�����n����f���X>��_�����I��f��x�;��ot+���h�l����j�B��:z��.v�=����|�]�.��d���_�o%Y@��/���< ���[I���~'��� �Wa�E�����a�l�YtifuH=�C�$��ui�vJ�8~Q������p;��_�k����V��i�/:��������v��{��P�������Le��\����I�}����8������DO^��1F�dAn�AB�7u�}~jB��:�;y���y�_������n�Z��M�*���+�8�����y��[�%�Z��E_������>����_~lx5�F`���m<�
�~���{�m�H��������1���f�1����0�P��g���Y�,���h�&��*��O
uK��W���y�����?|�����s!..�p����������$KI��~Q����w~A�XKA���v�/�ny�*����/�S���Z���_�����b�/��R,U!,����������n��N��|�]����]����xCW���B4�rj�o6`���?��?R��\�����<[���,�����-�/���8<�3���3TOg���e��vux��������3e}H|�;��/�F�x�����V�n���[����T���Zm2m���OY����&��f��O������f��T�O�����f��R��8���s��Tl�������w!B���jm2�Zdv�����9�7��yB����=�&�L���zax"r�m�>_|t��5>:���|��Q�|�X,
�T�'A~�\���n�6H�������js��By$Eq�n�F�mc�D��F�3?�/\M��o���4KJ�~���=�t�������H���=���������=O��4�q�q[q�e����cn��� ylw�v�.����������e{��[��5���2�m�D�y�9��L�������Z�g��~�9�i�?h�{�?Uxu�s�y��������[�QLc�;�r��T�Z��f}X��r_�R��j���I��z����3��������U��>���]Z���:���R��S���EC�
��/�����2���������{������f�:�����'�}����'oO��G��r���k��OP��y>?9YU\�7aIF���E����I�W���Ptv�|���t��~���h�E�����YlG�8��F���@��o�
�'v9�<_�f����������juq�w��6?���k�2-������KlV[&�+%���9{�������vI�?[}}��GQ��������p�]�5c)��9e��)Wi��T5����E�c!����A����g�V�/�==��������_(Z�}�������gX6�l&�#��f9������/������'�������l��fr�������������k"��Y��m���,���� �B��B���c$���������W�A�{�J�!�n������wXG|5�t��.~���A��o_?��K^��F2����+�8�;�����]B9�/�|qr��i����.�J�t
�n��m�^}��M�)����i���������y��pu����jv��M��^�~�����vw�w��f��<���������\x`�?�jjq�R$�e�~:��g	����D�Y����
a��p��Q4�����3*:,:'�X��c���~��>�A�#!�,�8�R��@hFe���q1d��$V��r�!&1$U�d1���@p���@������9�4�f.}`R���Sl� h2���N�<�hnI�6d.���g�Yq��$�E���o�B��Q��bp�F��t��D�A�^&��
�&��,BL�U�XV?KR,��%�4���GK	dI�>�RY����rC,�!������5x@{���yU���5�,���2�����c������=fiX#3�E 4�-��D�B"��j�EU���:��?��P�����B(�wT��]BgT��B���c���r!-ya%��(�����"x;����"V�Q x�KwB�9�Q�:�k`N��(��qgYdN�@�Rd�fV�I)2��)����FhR��p���<�#����@b W�����H��$*��@�'ay��
O��Z*<	,
�]�D,�l_��a�`��>&	��e�`��~&	��i��\,z�J�	�(Cd�t2)Jw������!I:�e�@�N E�����������3�T��xF�*�O��"p=�T�'z�?p8�i��v�=9!��<*Xb�T��C;B3��(��3^�c�B�Z�R����	�7���Z�l5�,�pG$=4�Z���LFR8�P�&)R�*P�Kg�a����S�h.w�C��1������{h.W,rO�,�d�����vQJ�.�)���1�p����F��U#���J�v4�h����Nx����c@�B��)��qh��^�&Q��cH�B����!�f��t�.A$��S�%���&�t���;[[�g�YA>��N���9�w�OL:=��1"Y�����7cic���F����[�k�o�����n���\�i���J���D&��}�e���$�cB�J1R�(!�`�e���cJ1r�QO���>URFN�2��2r������\FN�<��2�=����t�S����)��L��8�_8F�1�j�a�#S ���B��IY�o��k�k*r��5�5�8���S�z���r�\s������;��F�1BWZW��>���8��gu9�����)�Je��2R)�����F�}U�x#�	*E<t=�}�W��W�;�f_U ��}U�Si�U�N��W5�����\��=�Yh�J��g>�R�s����t�y���=�������;���TL��F&��J�Q���
�|���q*�!�%�(�q9����V�{���F���s��%�(�G(��8�a��q�L�%�(�C@��|�N���/����{��������S|����|���KDW��Y.wv���ViM�$��=E�!��-�q�\T��#���"�!@&�E(�?���PsMy
R��`y��8�C���#8&�9Gp��{A��R����~����u�+J��#W����2\Qb�����%�]2��������p�@��M<N]�QR��Vo�q���(Gq/x�(9Gq��n�k�<��@I0wM:��$����Q�FQ�I`�/�9��Cc��z�^��������X��,�����E���1�V8��W��9�cp�����P�5;�\��Oy��x�+���PR���F(��8�r��q���!J�QJ�������A��*�:W�Z`���������k�N��F��H���h�||�ob2���R��]R�:uf����Y�Q���.���3.$��"s����C�<�:�_�X���������
OKt�3���3�w��
��k�z��=�F�G�b0��m���a������eaO[m�>�����t����i�m��UwA���/
�r�W�����ZtxF��J������-q��+��IE�ad�xw!�O�i�!_xrM�1�Wqmrb�����1��S�Z����������aU���x`��<��c8�9��)���12N�1%5��9F������p���%�\-��%�\���%=�CBC���pHh��s���������|-H9�����1����py��u�e�C�;�c�w��uG���d�/����Kk�<;��z!�IS�`��!�!�.=`d�!�!F�1���)�����=7�y�t���0�:��(��H����M��+�m��i_��m�5�+��)�-�W�f�v�����nk$v���R�
Q��� �Z�|<��PNP���>�?���\tp��V����\9����w��� ��q/Pzw,*��j*��P���'L���l2�4�[�Ls�C
���R�������Rce:��M��,vw�� ������8�b��q�B=�RF#��d���_=�P���2���,�5�!�5�P}U-�������%����a[��X�B�8NLkX�B�k9Y�����\��P�TK���N[FQ=�l�VH3>���2��jU��������|��2���#nR3V
)+�����uq��d����ET�qwa�j1�c/�vk��|���@��X����0&^P/�rX���ME��g[�M/�q�;�G.O\q`�X�����n�l(� E��5eQ�?L�V��5f�k4������L+c��ux:	��Px����)�NA��
��s�u_|_|_|_|�ST�b�^�2\�	��R�7r�w���c���*&��G�F7�#E��B������br](�R-���	C�LGK
�in0vh����r��U3O�:$�G�(Ox
�P��awL%u���"�M� �0�+8B�7����v �x��o������]l7�/�n+#*�����nB�'�U���
OG�k������*������*�[Q���r{	��-��P��mUn������m�{
C��p�J����m�V��P�
3e�no��I,V�������8M��s,0du��B���TxF����U��Sp+���s���g�m�*B����"T���*7��h
��+q����Gi��t4n��0�!L�JBW�!/66�18ZJ�Xf�(NK�1O���!N�q�)8���Sp2��8�i����j�r#3�����!�+[��&�s�&�
�T�#��Sq�A�PrN���J�4��a&���HO�e�Z����m�������o��rW
QGq�f�d��\����	:�t���s��\��z�'�|�"���\���F8\��������;�kaM�Ry
#�k/����J�0B�m_��m����tj���}i66������/��"]3#���dFmK��]��DM�����>�V��h��rW
QGq��d���C���7�q��3	'5zDjt_�Im(���C.m�|�EH�F�P��]�@#.m�D���(�z�RrG6B�8�#�UQ�C)��+�e%��d�2���o���{&���4
C����1�<L0���	� gb�1�TL ���iV�0����,&���*�b�,���,����*�A�Q����!v�:��S���w�T��3^���z���{ZH�m�4&�O���	����Z�w���%kc2��a�J�����Wx��rG�0Ba�1p�d�Z�Pr�b���;}�p��p"�������[^��W��\���-^s�2#����W�j��km���^7�KW�K�G��:eef��f3��b�	8]�4���&�t���.~���Pp�*gBM ��P��J_����q���|�&QF�cl\0R���c��@�cd�F��s�"��u8F�1\=���e8�\�
�@G����Wg�1R����j'nFi����x������C�'��m���5�-?�9�k���'�5���S��j�����<�a��I��NA���)	�<�������|�XW^RE��%���@�^]B:}	E�&���P�2��RgB�����K����(�^/��~/.&�����U��v/x�"�E4&�{�f�Z���,����J�j�H��L ��\R�H�p�.��f��34�Hl��E<�����J�t�r=#�d�	H�DbV���a�`��h�Jl�r��� I�^i*H\0Cv]R0�$)�b��`��~�lrh��vF�R6Y�kM)�H��T��D�����I$��H�D���GJ�o��-��R�.�D���")����)�H>��X����N#�p��^#�	HR#�J�F��)�5��R�� uHzu��5��$3)�HArKT�@Wa�#I�(��5Q�]��$����*�4�"�e;������$�!yg��CV��FdS��F��vb� �J�p��(�<��@��1:�jV�� 
r�L�)"L�����J�.������N�[�{��$���A�����)�
a�Xy�&L�P�)�c�+g��0��#�.��VQA������.��������C����������'��N.���U��\o�� 1I�;>T��h���$E3
f����@GsR9����|�$.�?j�
�N
G�$%�h�\"�EC������@G���/���p�?u'�Q���JE���
�T$�H�`IE�����T$�H���G��*�Atc�d� ��J2A�X%� �n���	"Q5o��$���T$)��CE���F
*����������DU$i�1��$M�;NV��i����b�����J�iY��Hg��P���-$�y{tIm��&Im�0@E�A�h���8	l���������$��W��/�W��x�*R'����^`O6��2��d�w�
R*���� 1������I$��(H�D*�H<�����9L� �:`!�g(R*�<\kHL"yZBC�$�'���r�d�~q���;9-���+$���
�����y$�;��PE��{�QA������,�7��vcO���i\����Tr��}]��TI�)��*P�V�IZ�F��
�5���.5��ef�]}������rt��
K��5h���������R��D�x�Q�~�W��������������P�]�����;r��3�6��'�L�j�O���qo/<ykX�9~:�s��Yg�����Q����0����x����f�xL�y'�t�L�y�ct�\�y'z<�����F�K%�y�;W8�y��W8����o�<�N_&�u�T�M��$�w�Y��$�wbM��%�w���������t<���s�:�t��E��t��YJO�t�C����oo���l�\��w�M��v�M���_��p����7�I�xC���K��U���xa~P�y����j�w�@�R
�n�_�����K5���y���K����V���k�:�����-O�]����'���K��~7�����uq��R�7�������Ix�������5r��6�w�>W��>�$����������:���V������xR`��0��<r*YM��%{G�C�T�yUM�c��j:^&�������.���2�BJ�^��%�^�:�K%�w���1����x�����u�\�
��.�w���jsa�X���\���;�3��{z������������=�5����3ZV�����fK��j�E��w>c�'��o:��/���xR����xR�r�'��4+�"Rseb�Z{���T�yR�c�'�^&�|����9�I'�"�W���<dY����ot5BL%�w�|�(�[+��!f����F��D���K����F��D�N�v��A>���)&����d��_i�HGWq�TS�r��Q��o$2B�T��exJ]���<0j:�Y�/c�����J<��������/�x^?�����g��f��
�Ft$��`��PhD�B'`�U���'�����b���hDGD'`�k����hDGE'`U�k*���(M}S�VK�)�O�0�7
�c�A����|�F���zy�o��r����f{���S��?F���[A�x��E���9��g��f���n�����E�m7������^}w��������R�����������n�����j�����+�@���n�8���>�G����-��8?9i����<��E�=:>>�Sy���_P����8����Kz���GQ����0�����7�(4��mt�n�?�N���~�[]�]�,���
e�n��D��9`���@�]5�>���GM�4%@_A��O}I�o���������j��Y�FbK��������j�B�D�����aa_�\����� Y����y�g ��?�D�����
 W0����/�<��2�i�("���B��6���Y�]m(�h{u��1\^wi�G1��^���2�o��7
��4�
oQMr��R�m6�pF��"v�s/�0�d������H�:�|PX/F(������(���l���Y�H �0��H>U���\��������2mgy$��-��=e��Z���<u�]��M0-S���J��2��Z&��d�����]R��j8b�� ��L�&8������v�ewU�-T@�V�~�xmnC�����:)�uB�B����`���+MT�&ewW��h�	�I�I���E(`�]�D�EYU��@�O�k����*�p��5����E��O0���t��L�2��z���bE�_�Eb�q7�n%)[����Yj�J�����Xn�qE,Z������"�,�A��d�:VXT�B�m����k�#*����b�}
#��������4*����4)�\�
�����E���Fn��R��<��9b�YD���1c�P�����\sJ~�(-�� S���Gf�CP�wl�:�����UmP~w��(]X�M��#c���$v7�eIb�XC&t��cCoxd�&C�gVF�7df�% �+K����2��\���fB�Qm�?�^��4+@i�e��mxKgf����PbjtN�v+uS���! fK�u��5��5
P�����I�&4��te@��������Y3pP������{f�
y��D�������e7��n�D������M�0�4��(X`�X"�������
*���<�����+PXcK5�;/����
�e��/3�R��:Z��/�����|Uf��N������ps6�bKc����lC�z�fOk�x3����p�������	Jm	��T�%���i�u��U�����hP�Ndpmgf��5(TGs0�_�iqX9,3�z�������F�{�KS�\��W}��S�\��~+�����P�{?m����e�	�$��9r�
����!(Y�9�_
��@�T#���-�8�`�({|U��C�(qi����M�#s���T�y>o��:�MfA��B
��f5���Y�+�[[�	t@�Fso2�SJ4Gc��!�����%�cO�����Q���:�J6�����Y�G����3���&��u�6��.�@���,���~�$�������Z��B:j��X�
�����������~��C<�u���V��@�x����o	t�G��c����X|��(�@S5{�!(�7sO<�7��k���1��@�0	�j��C��p����������#�0Wk�0�>
Wd��	�W+��4�:�R	@�~�p���1P��.����%��cmz��JL�l,: C@K���hn%�@@�>��%Z&'5��E��8��/�p1%<2���}�)�|!��
��S�u�C�V�6�V���Ya��h��f��������5l�=%	��oF	d���!(F���CP����!h�����!h���M��O�+�#H��-4/��2�*A�V��A9�U--
�l}l	�
����:h����g|�
<2����+���=�/[�Gf?Z���=<��x`��f��Zz;
0C@K��bWk�G�����j����l4��f�6���6/0��-�=��
-f�be�~uH��X�H�����.8Ge����b��5jfk>���,6O��M�,#��mifl���n�c�<6��S46��!����n�#`��������tF(��h�)
0%@�"���-��f(�z1%0����+�n�@7�
��q�����f7�
��m���ha[\*�5~H��5�Wc�0�D��1	��.*��.*��.*�V+`�c�c�c�#�����Byd��I�$�PI&��LB%��jd��I�F&����v��Ihk'���B�d�\�P.��K+`Hk���f���B[��Z
�j5�d5�����.��W��+�n�@KG�HKNq-���*���Utw�
��kG�p:F�z�0�����Z�p��y�sw��2t ���������Y������>��s���l����	'8N�s���H&hEb�����TF:�-�z���z���z��u'����6~xj���k���k��Zj����>�m���B�u�B�u�B�u���R9�=3������U�!��CX�H�������h���:��%tXwK���*%(����k������y>l��yRl� ��y�������#X��ZN�M�I���f�s��:�[#tX�F����kR�`�P:�]��J���J���J���J�5�/n���.OO����C}������T[M����o5��*�_J�/��K����o�_�=���&H�� �j���	\M��j�W4������&hD5E#0����q�����K�`5��
�7P#z�P~�,��
�7��zX�p�����t����a�]���2uX_��OU��h��itXw������a-5r����3���i��&:��MtXG
|y.�8����k2�u�d��������?�G�f�nd��(��Q:�����x�aF�<
���B�u7�k��k�m43���5�a��@�=�a���������e��/�&�1l��S������_�h���
��:�]+������������
:�[tX�6�Em(����~wF��[����O'dW;v����^M���j��,�������4n���j]!�kfK��F��k��k�k�Z���Z�^ �y����ON�	;_$M�f�b��!'k�D��>����II�
������RU���Gx���)�$>BQ3��|�Q�k��YF� ��Q�4N����>��������|�=`��k��c\�!���M���Hh��=�H��.����y��;MI����g��''�<��C�5�%�
J��fS:�'���U����>EA�"��h�����M����`�B��AP�����a}��F�\��(-A�������P?K����g�������ow��,�]p���jy�9���$�U�S*���p�7�Qw�f�F�i��f~�Z������u��~�\���*��_LT�Z���j�O������E��k���D�-����%-l.H9d��������J�o���
t��s�^,fE^mp�SLB��5����uUc����E����?��z���w�O�<����$:����g�
����o_�|����'����������9}����Z�@���!)h��-s�{���������??��o�^�������/��}�z�I��X&���A�������=���O��=����7�o�>����Y��#�`��B����o���r)(#�������9h��i#��7O��8{���N����z�������4��y���~w����O~8�����8}�i`�fQ��������(���.�/:����2���fm9����K�������K�|��Bz�*9���_������.&z�������?(iz�����������Bn���:��C�5�!Y/&�C#������h��|v��[h�v����a{AC4��vD7
D��/���1uD?o���y���bu�Z�/��#Y�������R�s������ow��VW���,�������.uE�F���]`�S	x(��Ox(�^��?����?��L�WG��K�,^./�J�����U��DI4���[O�z�����d.�,j�E&�����B���|`�����"��U�&����2�� 8�0��g���Yn�����q~3G�o�h��eI�(��8M�Ub��,����)�%��#�H:���v	�m�9#%����D���y"9/=@��H4����s+S��y�)'�@X��z��y��\@�'�nK $������7�U��)� +S��j`������	���� �����0�8�o�
���y���V��z��#�2j���_3��z���������^`�A��������t��)G��P�)�����
o��(s�:@���G�����o���x�a�����@�Q,pH��8��7������@
o�i��%���C����cT%���U�Hel(GeT�Xx���$>�K�!:<������5#���>��K�H�=�}tu�?D8���q��� fN����&�k������{U�����]��M�(:`�S'l?`���f�S�}cQQ���Y�P�(��@y0��`�WpM���7������OV���+�=� Q�.n)���,T�����Ki�dnB����J�V:�W:�O�3��(Mi�����)��	���� �a0CN)J �� �Q������'@d�y��|������#������@Q�lQ��2�!�(,�����������T?�!o����;kF���u?����Ay��	E�dn]C���SA��sb���2���
�>e�uQ�c)!��S.���iO���U��<������H��&��
���[k D�T�G���[���)��z����� ���W�81_���U�2�Q7�{s��l�����'�vV<���b�V����u�C��f>(��r�c~�1T[��3�EK�T�uF��0^�
������)h8{1�j( [,]'���"�~ ���j:�jV	��U�`��h���5��4!��z���Q9������v���e��f�K��l��Z���[lq<}dI��9�2��v�0�^� �O�g����H1V$<)��DT��J�h�^��e�Y���}0��xSed���3yT������nK�4��sb��8]a�)�����"��tA1y}L�0���h��W��LJ���l:����8���G�.	��g����)&��@����Tn�L1�������$�U�
���v�
�e�O���|����	E��0{'M'��V�vOL�G��l-����9?�m��ci2b�o�=E&�#G2Zy�jk1�R�1�r� "�����|�n����ivE�����X��(�Q�����R	�<@��xY���%e���J����N!e����K�OY�J��}����'xI��$��]�y�{I�Uv�9P����?>ya��v���f���x�������|\��4D�����>���Y�SR�L���I�/�oW��H����=
*���P>�G���8�A��v��sX�4�)��hil:)��}+�j#��d�cup��N��������_[�S����!^�e��@�M�(�{�	�Y��p�!q�'0�%1o/�w���
���3$�-�D��	�v[v����E������^*+,QD�G�W����nv����n'��Qn
��c�����/#�E��Lq�+x�@�w��; q�
p�:N����]���]@|�	T��������}�����vs�{Z.���C�Qss��������5���J q}�~�/^}��={��d\����f����f��h��aTA�U��.��9S|������
������(n \s��x����D����B�/����6J��'��~�����re�q�^��Jn�i���h	�u=��{�����o4���2aY����]�����R$$'�R$��'��%������X�{�c�]�k�"��5a���(S�����������O&��.��c���
���AT�b��^��������W_��D�"J���Y����U��Hc���qV�����.�Lt`Fi(4 ���O����?�87�r�C��:?/���I�,�Ev�S���+�&�;�H�6��l��8JQ��n=�G"������%�����kr:�~,u�A�q�oo6Kd����E�����<�s�;��e�;A���<�����{��j�A4��R���f��}��]�T����a�@������Z��i����p�b��=��{}i{�c�Xn��A��n>� ~��o�6���%������/P��ow�f�Po�|��AY��:�'T$�)��a)?�������K���4�S�2�F����^�y�<pP������<�p����X;������NE���rn�������?�x�;^j�KwT��{�IS��������n&eS�d���M.eC�1�|
���!�a^��������3x��������g�mmw����P�o��3!���O3B[���D<�;��y�5w�~�}_�h��99i��=��NW����?��uJ}`����Y���0�#,�#0�/�-��������G��P~G��%�>8�WwV��C�E���K�d�X~^��
�xl��c���Z5�x��=�x��c-~t���������5���>���tN�����k����f��s�&���f@�L?��^�y�����q��b�@,��wC��4���4|�����>v��LHq���3������Z����� �����
FQ�����%c��Y��NN���<N�Rh�x<�9mx�b~r�!�1)�#g~���1B'W�9�gF�(������1e>8hU��n�eI�`[��;�3���v��������x&^F�"#%<I�D)`v/�������?}�3nv���������^ �y�a���c��0��eY^�`�mV����E)�g�=�T��1?f�a�Q
!K���X�<��Z�xf�J�%~�#��&���a��$=}I&��6i��z������`�<�%����0�/+�E���$y�(�E��(�8
F��d.
�'c	1�2G�����"�ME>1��
?�D����%�	/�Y�1W�v�p��t���V"B��O_>{�����2~=}��x��^�>�)Cp��DIQ0u���{���\O���}I��Zl�V�=��\�]bI��������	68��2���4�!�����Z�Jv7q��Y�E�
s�����,<_���@G�c;���Lg�V*�Gg��~�)Zn�~4"?G7�cx����p���Sv��p|b�3�'/q�a�|������Mt����������-�3j�<v��U�5;_�cr:����CWy����n5U>d��{p,�h�]RZ[~�G�����6m��1��kt�LN��yU6���vQei���}�*��
3
�Sd�?�0S��M�Mf�K����o|2�0�C�.�=�p�Yc6�Q�dho���h��vq����|cS�3�##2���o���Q��qsmwW���,T�Bh%i����i��C�2EL���nt��ra��|������|9o����(�c�jZ-�>��@��K�3-���AV��5���m�e�jA�PA)�mN�&��D����/��4��0.��^�X�Q�T������������f##c���tn5i���>��o�E~�oU�Rr�a���[E�x:����b�<�3��d�ve�p=[&��������n�����G�:P;��f	]����@�$�\�n���O`�Y�R����Z������i�����;�y�Q���X�����0���F�iA�������&�0������e���U�&?9����h�A�U��t�f��X �z=�t�QtWO�9�������{DN��P�2�N|L/�����A����l��[���C]I�.��g\K�����w@���[]\�;����r/e}�h�Y����6���py��)j�Q��|u�-�)@BW�E��9��")����4�b�z�N���~�����2Z����x�LG+����?�YC�2�p�����y��v����������������.6��r����:]�^XSs^���<9Y4M��� k���4,�fc���,e�z���9O)�}�{��R^�R���|���y��%���46v�m]{����O�O��!e��@y�J��/��	��f����F�3�*#Q?i�}h5�KS�����|���,�%+#yY�S3$���L"}�����K���<$���x���7�|����jDW�G):��z��}R
�j��H��z���u)�>V�O���
?\7;��qbD���l�F:>�+D��������	�����54��Rz(9cy�hX�NN���n��K���(��:C�b0
�����������4�RM>��|�-�K��������z���o��h�o���Q�?t�?�f%���������z������|�W�w����$��c���{���sh�#����^-n���(�j>F�K�_{yC7�����q��w����d���2��}��/��*�����#����#l6-�� ���r�����Ms�M�0r�a�fY[���y�X.��+�8��7)(P�>!n�7���*[T e�G��!*�_����0T�>�[��L>5�F�G��2���Y?��
�x,7#�iV���u�\u�-����/���~����s��S#u��p��N	����7���XX�SOU�������y��?H���������S3YQ	g�%�����/O������E�=��?)`rM*]�����E�����<^J�4����q�S���U{hpF8��x��e��
Zz>��eu[Jmrgb'e,�S�uj~�hq��$��"i*���M�%aSj1N�Q'����I?|�AM|�2h\[�:��!M���t��m�����
�B���|��+�u�����,�IW��cq
�t���`�h'��?����@g/��x������@��q�t�fpP����w�pz<���'o�F�����B��M�Sy���|�Z�*-pHK�_����?U������}7��N�|����.�@d��`I��''m�f�E�	��������y+��V=�'_��jpRe}����Y	���J<08*�
�w�PC/���#?Or���(HK��5^5|	fv�~E��K����2�-�|�}�<����aMI�����]�Y���>�3�F��a��D�b{/����	>q��ylq��J;>��]��������f"�9�b?H�et9p�����\���v�G6�Kp=ei���E�����A�Y������\k���n�k�Y��.R����B/=�H/�0c���[jv��X"G�Vd�x���jiBNj���\�]�����w�,IS���`���}���
A���Nz�������OO�^�z�y��4#�]�#��z�&�����5��=���q�'�N@L��7>��"���?�|������&N1��S�\B�#�N���Sfy{�7���e�b[��uY�����MM�Wq���y��m:h,�"Q�H8�^����g1����,fc+�/���*��,�X��,�;��hQ�R/���`4�_����6�n)��3>��jx����*���������_��g��y}3~:��]��
3�o������a���g:���j��g2d��L���9]���6�d����o ���p
�2V�+0��V���}�s���R�=��}��X2�:%���s��@�SL���g� L���F@~�o��7�-���Zx���P�f#rvRr�|�("Oow���)�	1��n�t��`W����kjnD6�
Zb��1`nmn;~)�]� �F0�Z`I�����y����5��GN!73�S�Zh�k�^�����1tK�1�P���V�������^��)�]��f7qWcl�������Sp�k`p�u�w'gn�#�WW��7�X"�p��h%�����`_�V�Z	/C�RaTW�HH�^����� ���\MdG.��pJ)(fh������������x����_�����*�+�Fl�:)��$��U1^3���DfCO<�@�]����tq��2^�u�5�r������a�[�^x������mu*�e�N���h[���G������+�D�KV�4������5M�6te�v�����y�Gr� 3�����%���SJ,�)��z�7��46pG���4�/=Si9vAk;~�/�t:���4�h�V�
*���)K����ci�YCP@���������aVh�`��`���ft��z�Yw
�/�;���������/��.��j�Xe���*i��R@Zf�ub�|1�Zm,����fe���
-1w{/;v��f��{����k����q|���|�@���������3h�f>l���-gzAV�;Q�Wy��
p6�q�Qwe���!q���vgRA�W%b	�PYT�Z]�*
H����k��"V1�Lg�Dgnt����W������'��[�_�Q39'��o�����"��.<����]��w��ZFY�\zYt���Q�y�z�F'�q���p|��/M�c�(��[����}����/s���P��yJ��w��6q���a^��U,�G���`b��fA���T j	�"��a�b+�f�\E�3�b�[4�("�f����,"���/�"2_������ spQ��(�zEE���K�����������zFC���b���Y��%����YN�/'�r�-#G���H��V���H���9n����� �8����)�!�$�����W���N���;�����bh�e�0��Fr-�U��8$~V����]��W�������eg�q��\~�7?|�D)�P�E�7oQ��
�xa�K�@�!�*��[���Kgi�������+�Nb��z�#&���Tq$�����Y�G��H.4$�o�t�|2�Q�H9[GM�,���l���}Q��6�>��7[Qb���h�
���%IEr0��hLpd�?V�������3����s�������M��d��
_�z���7������S��\u���������;|��pv�x�pvpb�9e9���!~�t�/��4�����(�ez�[O�w�e')b�J���;�H�o�pA�m�a%�J+��p�l�<	_o�\��_���w!��&�����W�4|���s~�X
���d��
���YA�����=����H��U�{�����eG+�b7�K��{��n{����	��������8l�����W�[�}r�����s�����k��s�n�*0f��������G7U�w���]�+6#~��92h��Y#��������cz���J��oDTh�	n��D�TK�j���j=�.���`�
�|@z�����������~I��S�jA����/�F��d js�P���?��W�,�������v���u�w[;������3o�n\����##�,t^����S3@��O^�k��L�}j]Pl���~��3����;M�c��guBL3���P�f��{)�(�`��N�����N�9�,�5
y2T�.Q|9�H���@���<�Q�����TV2�sR�3�:u�UE?�ViT��\������M�� ��"c�O��\��&�Ar ��F����\����(�!U�fD�>�R]x�F���|�d�{H��Aiff��7��H��������M�\if�rK*��T�8����S%�����V�2����?�iv
|-�V��fq����ZF&Qt<�/*K��vM��h��'�=��-j�����dd�
��7�K�����P$�1C��,���	����zG��D���AM*��;���B���\����9Q$�gD����vnO�%\�����'�F$�Q�#|���tWa'L5�#��"����q�@BZ���G��7������X��A���o���D
H�������������6K+����5�@[ p-&(��^i�w@���C��(���p����g���3���Z&�AH���JvG�J����}T�
Z=�����\�.0����c�H��Q/�XO����P���\T��FA=@|N����K���y�=Kbw�ws1�&F�e�'�	&����K�&����d<S�=X��2��`��3=j�Xi�bfN���L^�y���~)���y�����[H�BN����@2>�h7�����A�x8���xb=�ThV�
���^� z��^9�{��lWG��y@N���Y����k]������z�A%UJ�r<�������������>����/��-�06��r�]��IZ������|D��3n��4���<��om��Y��G\Y������n�F�6����H���%,���������>�u{~�O{��[M~6��j������n�w�n#��\�#���c�G����7S;ZY�%W����i[�X
aCD�cK�eu���6+LH���.�[x�����(��_���/��j��O����t��0�����S�V�<.���B����4��%�A���RI+y�s{�
.��3�*��gxx`�!�3.����z���yW��0���0$[I6��_T>��Q�����}�B�^K�w����px��*�j�rwg���[��S��7#����1<�K~��N�������#��0���m�	&$d��%��&�t�)��n��1����9��������B�.���������RxB����O���`e��u�F&��;�coXi�����<q��&���.g�`c"�}nZ2A�e����$�u�q�;0r������+o�(�Z�hL�4�E��A�xv}�k��'i�Rd��s)<y6��:�dE��vQ�s�_nq�t���V��H��N*}��h����%����	w��w�*�����f=���{�m!P��s��u:����-W�Qx���������mmWyRy���}I�3��w�1���C�������w���j�YL���@����pz�������A�����7
��9H=kY�&��$F��`�2O���~NN��8�I�YS�e��r�b<��i�z��)Ra�&�"�K��~	�A@����x��{��<d�9�t�zgpx��3����4�#�id������c�tw�b7�qEnC$��g��!q�?��{f��Lr7$�|��rFk�]V�rf�����������Mv�
�9s������xt�+e9���5���w@��4g����q+��.���NXz���;�0_���&�#A�������U��t��v��f�����C���o7O'�,%e�F� ��6��RIH�9<Pw�1�!��r�x(n<C�D��\v��{e�w��p:��VQNVx���No�d�PJTF�nK�������yW������m7h�'n��;Od5&H�5X�)0o�V�i�)�v"����������k+��M�m��H����2nC��Veh��Ry��6uH��^���L��]�1e�)����E�,8w	���C��eA���I�:a4�`�E.I�gl\0�:��D&E&�����p�F���o)���
����NF��ry���(<����3��e$r;��<J�y(TK�,���yT�PH�p�L$�{5��c
0v)c��=�G��h��	�-���Qz�5vb�����G����0io��B,vR]�����(=��z��{�(/��!���8�h����3��m�1�o��8d�[�T��!/zj���
	v�����}���������5����T�n���x�*�h��m�m����N�����5�c���(���zh�Wz��r7��psQ�B�\���\X�yq�	E�(��}�NQU�k�`!q�1B%����#=�K�D�PG��v������,��V�y���#��6`T�$�����G>�����Ua��LT��Q��	�6*�\��R�>w#6�[f����:�b�Kn��r��3L�|."�~s���k�4��}^"1��-�B���+���t���S��eJ�n��_)�u��RpO���-�����}�z�]��[{sqo��	�s����I(I�/��P�dZ?%��Cc�=��G�B��3���������~��\�m�����C���"v�?�� �F�"����]�o���W��=�/b����h�o�D�q�]$�
R}�kN�������8�K %~�s��H|Ks=#	�c�����f�F�r�EF����w����g@!��UO�>53s�P�������g�lV�T���^��Y��R���d���a&
�*����jR���;%t)��`���R{���pf��w�bo�o�n2"9e�I�A$�����$/��$����
��j��C-� ��#�w�������e[*��~�-�D�������}:��(s�w�LR�B��4��\����$u.�
��0#��������:#91.����o���NF�ry��Dlv�'������*uJWMTR3����2�(���������2�.}���� B)��VFb�g3a���
)�A<<X,.�P�O7��
�:�)E���h?���H_|4�s���An�gL"���Zm7G������v����E���O~<={}���O��y���l���4nX�	��������{W��Q��`��8�����i��v����F�_L�t��&������<���*������<W$@&��'@�{P���
����3&�,�r�7cj!v6Y{W�\I�+x�����o(0b�x�^8O�����62r����l8VxH����b��s6C�hQ�oIjxv���>��rP���
�)�����&N�[9J�\�DN�p&��/}C��n$��(�P�.�.��;TS�&D�S��W.}C5�4�A)�jwO|�g*FK}	����"����S��C���\)����g�)�C9�F�F����
W�����[��b����^��C@Al�*pa����+s�������kQtT�/������.�%f3���$�*S����Ee��SP�q������jQ��'s�V�\�2��������a��U���DC�\�.t��nc)�J=j��m%������R%~[I�:U�����CU���D��[���R���zd=���R�~[�f��T����������J�zl%jWz[�R��J^�T!s�F����6���2�/P1�Z��3����s���L��5#�F��\t���Ui%��)�m��@�Z����h�z�^���LD��L	V9����:����{VLM>�����gg�����#���f��K[��m���x��%�_.<�X�*y��^5��.���������V�}�+E���g�[�3��3�v}.�o���&sn���p����o
����g=.W�1�m���s��9�Cv?9����iD���BKf�������s�������f�3)]��j������6h��v�t�T��1�eb�S��y+����P{T��h���t8'�m
{"���P��d5�xR�'�mY��e�h��D���:>������$�C�"d>�s��Cb�RTw���P�3Q�D�X����%��-`EJ��pn-##�IN��'�{w������x��'u]��S[:���]�*n����Mj����dPs��f
]��<;=����S�y���Ize�4��!G������r��6�����8wi1P}�V�����ct���jNyVExb������	�*��^���}kG��o��y��J3�*A~\�\Q=q_ |�*Qj�uw��%��G��fX�5�a)�5��������z�}���Y\����_G��w���|���I�'0�����\h*��M�����*K��Ylg�}PX�tu�S�m�}���v/{����s@��s���
p/�X����*��p>�+'V>��;$>c<1�rp�^T�r��M�/<�w�M������r�[�c�=��i
�h�������W�w���!���NG�����j1"m��N�ZV���?}v�h�J�w��tS�����b}�8C1�x�jv����R%�Mg����+�~W���s���
�������T�;���I>�ljQ����`e-�|��*��S-�=��8_����{�K�H~QR�)#E���'�#��^�2��d��H�]C�:v��u�i�ak����w�?u��*�M�0����c�N!�2���S�G�S��3)�f���u;u�;�����\�s���
H�&#�p�<�&�:vOw�����Bj��z52�����Z��i]��^��y�j��c�$�F��A�����M�4�����*�j��*B!��Y#9�����������wKn��_
��gKrU)��=n�e���iY���3�g��<���yi��\j���g�$d���<-Y���_@�EXo�,��S��"y����M�}��|��
��%�Y������@�b�]�#��)�yT�K&W��r��U��t:����������s;����N���L���-�u��$���F�)�����R� ������K�����>�w����}��T��	M����a!����V��g���z\�����~�U�rg$;��������Ia���z��HUOE���v�z����~;��xCb�4
��'�h^��6�E��&�L�u��������4�����A�����:�-F-����!�G�_�H2cb^����}���"F'%�`����!�IC�<�f
A�n����o����F�"�6�S�1f���Xg�����+?8��t�:��'o���2N��|2K|A~��0�s ����$7����j>�tM�\ �y����ON�:`rD$��s��M�/a�`�����8Ug��)����_�yA����HA��l�	Y2���������%�0���F���1�1�0����:��HcA~r�����BD��j����x"(!3U��1�B�{�24�I���#gB�7�<F��:�"���l��������3.���1�>�0P�f�_�<n��d���.F��{����������F��w�1�"I��~�{$���GHx�)7���C9B����w2���#����k<�H$�A�!Dr�a����:�bd�#�{���D�:`"s��oF �*��J�>����8N.�BOj�R�||~�4�RMHci�'>�B���	��G�C�Q�?���i����O���E>65	�H��>�<[��T����"�9g"�;\�DM !�A ���|~�?45-�	h�y������P����l�����������C)HH���a�|����5��R�������	K�S�|�$?�h������$F8�-��4����fOX�p`<����H��m@a���bq����C����	�
�J��aFF����k-8�3J�V�9��R�k���u�����
�D��3�	�$`�O�!,*��?�5�����6a�
�3�u>V��p����i~�q��`����3���o��Xb/ersFK�j�(�n���w��"�)/��|5xav��|���02�S^MF�$����Q�����`x�kH.��r����)�G�H�U��Ao���My
�>"�g����)�A=�1.��:��#S^G�#[��{������K��d������UJg�)�Oz_}�oo��b��B/���.�������W��/���7�=��Y#����3��Y}_z�����_����\��,����2@�8��C�{��B�b�Wu/��M`[��=��1���c�WC�1����I}u��&P�����@
�M���'"_��'����y�;����&B�7+2�?�-���|F1�A����p0@o1�M�\9���o#Zg�f����V��C���_��=4��3���m8|0��R�V%:G���I�h��G��~��`'h����8��	|F�tBf`(��&G���������~�G1L���J?��w�����F�bt��f,j2v�Q���K�;����Ug�-�E��_�q���D&���#h�|D����k�tQD�7P��!��\�]@1�j��5�a�`r��y����b
X���yC�������W����9���bA4zzK� yo��$�p8��D;�vIZ����N=:>�������C�0��iS\8>�5��AQ�a~G��&����� �:����[M��j47�������*@V����p|Zk
U
�V���Lb���_����6S�3b�Sh���uz���0�5���&�~���9(��,D�=�|(|g�k@���2�R,�k������lk�?���X��*���$������{8?�?���o�k���5�*|���bi�MF��4 ����6��E�XPn�'}������On�h���ZH.l��B�������Q��6���Lkw��J���A>@��C2�[��/4s�����8M�V��H��4m,8>�$Sf���0
�G���0C3FQ�w$s@�^K�U���84_�Q�r��$��8���7
Ew��#x)�� ��#���QD�HJgQ�a�e�%���+�C{�n��%Q~h4���S(<5��%wQ�@Cc������Tm���a�!p�F��
�
q����*�����\T��y�ruD�(�E��Y{�X����j��A��`���B�(������Z���"��TX3Q,��h�����b�Kj�L3�c��I���.��1&__�E
P���m����y�R
P��dT7��rQPi�$Q7����Pi&M�Ja�B��a�B�#l�$<��{!Nv?6����2�(�y�����r0�<�����\������re��h\���R��Fz��9�����\���,�9�9���g�(�Hg����3��	�Z�y�UN����y�x0�����S�*������� 
��+��:�S�d�q%b�<��cx,S6{
�������5�&���8AN��Y����$.2�ziG2�I���2���~]��b�LSO��;�!A���^��C������-���L��!(a$'��M&dC�pg	���#N��4����:�����qQ1�N-�K�i"�/_���'af36�.���`A,!&��6����I��\����
��a�w��+%�7(KfdN$��@�k{����l�^[M��g.� ��9 ��m=��Sug~lVL�<L��4W�����~q��)�_��1�me���o�IF%����w>D����& ���\T���^�
��(��X�K��C�g��O�8���Tn;]��Q}�����1�|m��2��������g:��Y4D���E���=����1NSK0:������F�!4xG�0�2a?q#f�eQ��t������\PC���T����f��
���#a�H6����&�)B�F�>Y����7-M�@��5�Z 0��3V)�nD�H�H����"E�����E��L/�D��������(:;a������=g�h��:�9q�=��l�k��{�D�i�9f'�7i������=g����3���a��i�N�q&~:��4q�	O74�~����������oy�>s���Kb��?�v�����v��X�O�d��\�H�H_���z#��-�|���������uJ�x�[�!#�-Hr!!�����V���I���b����nJZQ��[Hl<����COI����:�pa:��q�O
�F$�69��2�c�3�C+�T2�D��uv������
MPa��+������{�?�;�@�M��B��g����"E{��^
NQ-�#��8G��U�jbIP���T(�-;(B6�yg)���,��#�����PzMS�>�3�y*��M������8Q�"��i�2��������[��>�<��e{>x���x` ~�%3��U�W���jU] *���9� 3�����b-��\��ry8}?��Z�l���$=����	��v�"Q�g5�#)�[P�&&�����"��&�b�8`M���U�
�&�v�������Ba����gTb�����=�����L������a�N?�@���N	�>�Q&�D�
��"��[?����,G�M�G
�cy���h{s�3YI�v�
Z@i�E�����no�v���pS����1K/E;������jHN>��������_�F��~3"HdX��n9��,�qq� �xx�#�����F*�����z	
�qB^�"dg�)p��""	")^@d<����[����;
v��0��[	o��2H��(-I��e����eW2�o�8����>�HR���$<C����im�����nV����L�����}��c��dI���[�k��$w�������?�Ud#�n��
�>������)	*��d��H��~F����7	r����g�����7�~�[�Z��?;{~�X���������X�3$��"0x�A]��uW��=�����i<|���^g�":e���#gp�!"���oZ�x�����
����49���I�s��k�u@E��5��5�G��:xb���(	K�f��q��]f�Q�a�x$��I�5Q�^�������]�����O*�*���HO�������Dow�v ����CO��7�!x<���;�*�X���\)�H�x��0����z)�w��:���fZ���R��{�����#���k�"#��LNTm�1�fTgX]��i���H���G.K��G ���G��@r�����&��,�d(���V�uew��x�Y����{AP����=��<r��R���+6���~��v���y���J�������#'�t�
UMz�������MT�<��L<��&�����3f�8���Y���C#�*�tW�=�����K/�l1��H��E���DN#��w���C�'���q.�������?�(�)�O�+r�4��ETrJ���Kx�P�j����#f��i���-Fm���#���B�3�S���9-�l1f14p��L���h��FCK���Lna7d�Q���(C	��,[^&������[8s62��'���C?Q�e2�o��`�ceI$��0�T�(K�`��<�N4�#':��L��8����S�<��L� ���� ���e2\V���-��,n2&�k�&��#Q*���`�P������\U��,�62����4CD�i�00����:�5��u\�z��q�A�P
8���E
F��Q7�p-P��0P&�������)��?��S����x
w���N*������_���D�������Uc!hz���������=�8��E��������Y�g1�����Y��mk?�l1�����?�D#W���A��H����bf��bj�Ih�b�8�A��4���\3��3�����Y<���'+f2���P��8+f:���T�rT�lP15B�$4]1�1����}��*f�VL
R3�����D��}S.��DE����
V����G�8pE��&���J'��TLW��iKP���v��
V�\��4���F)0�j�������?�)������7|U��c����KY�����P������w�� �H��S�[y���4aNs�~+�NN+5��}$$<�~+�������Vb��N'����_C)B�Xf����Eb�3���!�q��V������^L���3oy��x��u]� ��r�3��7���{�
��L��g�1�0�> "��,�����,���BPz�}p�'�8��*�Mq��ov�k��CM~����7V]��!��z���z�����Zpb�����D�I:��a�K
k�9�3>���F",
�m�-��j*������jZ��J�v���j���$�W3��b#8Vn��h� �^8X�/�����/�_�Oa|��-wKc]�.O��/v��T��5>�~���4N����<��'�[���q�{�V!���z�/����{?���7����kJ�x�Pn1�>�rS��l`������`�vZ����&LP�px��I�x~�p
d(�m4)H�4��a����n�OA>�Omd)����fZ�BLZ��&��M�-��N���|�������h�;���>Y�L��5OrQ<t��p�F�R�Q�i2�\�$���h����	�r�Le��j�����>l��c,0�e
����\>���.���c�t�3�`��6�=�|�s��U�y�E����.�{����R��6X2�A�)(l��tld�7���cl�i�`f�tg����xx22�4t�����c���^��=
E���zJFs>���r
`�=�|5�y���gUX�}�~����[F^�R��r\f�
��/��
���.��c}���4��Co���`Kq������C����`k�����3��K}���b�s�t�o�a�^#ta��m�x
aMt���#�o�C��#Xd���;�xvmT>.�
T�xxEoxmt�:ut��^6��A���:��>��7ky`�=�x���
{Mv�/�>���
��
cm�6v�C��8�0���wE�&m��7�[�����C�Q�\8ok�b����S��%���~�b�b���eT��c�7�����Xxhd5�Q.P���lY,T4����bT���:�AG�N�8���[/����9�@��-�������P���*�C��Zeg8��>_ju(1v~k������z���PZ��mNzbq�i�.Gh-��>l�e���<m?��U�s���P(��|C���Fo������aW��e[�I+���
���8�}��1�"G�q^lB#�-h�{K~����E"���"�'��T~�A������=�B�6�i�O������;��x��N����r*A���]��J������"t���b�C�x.����)��{A��4����U[~��m��_RA��v�@
�f�p�Z���f�"�@D�:���
/�<����J����Z��j�	�-�&U�>T3����b�1(�
e�
Q��}&Jf��l�L���t��/Dy��u�L������h������!����.��q�	�L"��4���o���~��?���@��W�3����
���lb��o�~������{�v2��/�Y���m��#�!��I5#�;=P�k���	���J�<pXe�M	?��^�lh<��/tn2^�j
��I��|���p�4y��r^]�?������#�R���9F
(Z�� Y	�o�����3_>~���y�rCK>��r]|4�+��&���_x��
��k�*c��u�z[����/~�����,�6j&�rM��ML�6&2�_�rQ0"%i�������7�R8"$R��tE�2��*x�G&����b���DuQ�DR��6-��2�����tFjA8��d�c�W��������`	_�Z����f�eW,{
	�H?�B$a�8�\j-]�d3�<�wx�����'���!6�C��"�t��f���U�H�w��\21e�t�l��{
��`xE��[����.���~�����.���C�/gM��L������
�d3��q�m�UF>Q��=w�V����<N]��)0U���#�/���#i���C��	O�������m�1|�H}N?�<�h���G�8f�2���0�c���er��<IS�F$D���' �
��f�=�G�R(����R�y��0��C(����T�S��5�Q�t����e8e-\�pj���#������
�Z"��#�Hf�w#C��&E�\nQ4FU����m<����:
��P]�����e<�1\��������i�����G�_>i��"n�<~[�S��	O����6����}>R�s��"���2��@3��Xd�0��&&er�q�,!�q�B�@�t�Z����c.N�g����R�6�Q��Z�O���|����r�F��*&�L�������t<��^YS�������g��)3��e��:rYp��{X�;R���i(n�@�bNNh)��C�w�J�p�F@��f�Px��5}�����v!����6m��X�L���<�������������oe���2�JGA�M=N�~xwP������]��*�]E�9;�b���BK�Bs�7�UW���R�S>�~�����. �H}�.��c���d�H�L�>X�#�aMZ>�1�C>�j�3�i6�z�@�\�j7[<����,��4d3������>���p ��o�x���^���?�t
�g����|���6�x���V����g�����8�/��+%�=�Vg~��;������������_�}XG�����	�,r1e�49��e-��.�����h����-��HF\_'��[����(Td�l�h|	���<�~����N������$�X�"	�H���!(=�*}�d�<����W��������b%k�D���������<||n�=����ap8��3��/D=4������Y.(Y/y����7�����-y1{�:�|�n��*Gh�����x������J���R[J_�E)���o���f)�N��@����q�^��wy�E�7��Hh��Ii��fDL�����%(�7��dk|y8U��Y���<_�s�ZC�L�^�tx�iz��3����y��"_����3�}��\��M96�4�������/~�_��
"G$
V�x���[�d��a���_���F-��>�&��mY_�����"M!�bS��a��/-�(���f�j�-���Z����H��\jfp@
�<B�Nb��� m)[�C$����&�l���E>��D�gC����~�g��������Wo�l���r�8�S`0�L�������~��@P'#;���Qo:�������}����o�{s,��^	�z����^M�.b���f#����[�*JC�-&R��� 8�|d�� '��%N��[��rW�%�@ X���7��~�be�\�6:��C�����a&V���
>u*��� L�������Q�c�KW���0
�GN�r^�������
:0�k����G
�c�����l��K������@CP���V�C�x�	�j6c8�*���_���a��e��
�Es!YI��6,]1�}��������?�s<J�J�-�#2W�u��<Q����4�`��$��d��b��9��
(���fYn*3�">�zM���p��)�3���h>���$Zw �B2P\WOO��������B��,y��%e�.W]u��~?�v.*_�3�G<��q��r>�������.��r����)/�)���Sf��r�1dW�g���_�3G+^q��yf,��(��(xh#7L@��8�c�x� �F�F��4(��������/���.�FHI��
�$������N��z_������?G?���KHGdP��^����B����T#��n4=Z
�H���5Hb��HP���#��	��T�v�*�|+��M���#m`~8<�8��-�P��#E{����a5�4�]�WT��;�Z��>��G�9��>�������:���>R}z�����8x�G� >��}�3�E���Q������]�&��Q]�gO������}���\4P��pV'c����|�Z����P���dR�����K6��G��q�+�����z,���Q��
�W��|>7d���a@���D$N8eijj��	��zK��@��}���(�Y��5�xd������������3l��0	w�.�a��*Fr��Y����0�a������u������D*���@��'?�~\��f����sFb����|���7�.�[���^��T����|Z}Q�W������E�=l�8n�"Q��W����3?�����v<>f���W�I���I��G/_���������V�~�k���������_��G���7��=������o�� 
����)���W��������c��46F��-/q���l���W�a���C�G�������g�����f����?��������q���+�9�[���#u^=��B4��������x�\�q���l��<��jt]>y������_jR�>�o�o����l��
~��t���|�<�g�~x��J�mm/t�C��.U��,H\��������|�^aE�"|x(�������4�>��L�S�����[�� �2&�� �i>Vlg�0R
�m?E�?�������y���7�}��%������D�+a���O����o;/�=ye�+A
���i�pAM�1X��lU�}�>��&b
}����=�W�7�kK����-Q?��)H�����T|�[*F�������H�}����������9x���J���
A+�!����z����bAn���(�vX&_~����������~5�����cjl<g��b���N��V���X�5	��j�0L���s�K�4�Z�e����:6(^��M���:�����o�o�&X���g�m�)�����}���6���%����s�ae~qC_C$��{64���A��a ���5��4E;{��=��:��o����N?��u����4����$$K�5Tc��0������g�}��B�-�(���N��T�����2#��F������*5FVL�k�T�?�~����_�^h ��Vq�AR�25�u2c���hw����|�����$�����PCb�^�����eZ�����3H��a�Lbb�zE��A���S������������������7����N.V��R��	����3O�o��1_gxC��nO1�
e�n�i}��X�db" ��x`��}�'���	�
�B��A��H$"4�$Mj�8P���Bh�f5Z��>�P�lm�$VJ��6��@o��5f�k������Ll�/�)+|��[������h#��R�����~,[�p- ���v���{z�T�����������m},�^���za�+���x&�T��2����2m��������^a�-�������|^���X�+�
�z{�d���C����"��%������D�Z�tu_-,_�	��y�.��A+o���d	���-LE(_!�J�+TG�s5�+�E�zE��Vq�J��_�/����L������s���E��b+c�Bu	�1dJ��ix)���K��/j���zgZ�P*��nR�������!��E�E���Xf<|��������0*��K��-�zi��QZ�z��������C��u��}
�����,F}�^������h��:ns�
�=%4���L����W��~,��Ns�����$������(����l���������Kj��&�w=>&�/����z<������j�&��L��&���}M>�>9n����O������.!���u��<}R]���/�^�!a��'��uu�B��[���m������4��/-����C{7�}�������{��<�2c�|�'1�� 0x�8e�-��~�W���/��=�/���������o�/+AE`��q3	�@B��$6���R����?����o����a5������/zVOa��U���Ua�����<|FF~hga��u������7�z�y�K�=��r�|�mN�Jcd�;���������.�'W���bWz������h�������|y���������owe��#�t��O�L�r�b�j��Q+[gw���>����"3i�����F��r���q��-��y���]������f���Z��4|G~�T,�^$�E�)������-��k�q�?U6�����A��E
/^�E�������]y�������{�8� ��X�xN���\�c=����g����S�aU��9�d�MZs�*fe`��o�<E����E��A[������u�8MF���	?���TLcE���������_���O\��"���b���o������M����v�����D4(��,��3P����P�-3���#�w�V|����`#��K49�u*E9T4�$G���uC�t�B�`>V/��Y������^�3E��aW�lT��c<�A�2��?�*}���|�a1������t�^���}�"��\��$��o�����^�~��/�O-7�lSl6�r��{*�XmX=��a���=��8���{������@>�YU�	�#t��u*�~[����=&S��fC���Y��N��t[}_����g�\�l~d�Lpn��.��w|�
����^�(��"���K^�^���h)���}Y�*�V�
�'6]��a����p���V�<�������c�����;Y��<�{����������Q��A!���A �B���;�����$��mP���$��G���.�ET#��i - �>�k�������)~�� ��"\�1�����������.^"�����E��J������N�r��)$KmN-��6�`�E�[��,Zf����A��O-��6�`�E��`��3�����	���(^Igl�	D�$���{��<rQ��&�h��C	�]�Ck��E�'`f����~u;K�A���4���� �sS��D)�&�������K!����0�W�C��r"����M6���T�X	�3����������ez�	#iLS�T�u�^��N�^�r��.���K8�iPs���M�v��1	,&���&W����d����:A�v�3��[+7�R�#��r
�	r����f�+_�T��`�jd����]��pAC=Y��<���(�EA�I��px�D�/��6���!������������|y��
/��;dx�<"q��{�32<�7��G8g ��$<��K�G���v���=���,�D�s�	Yz�pw��g����������.���4"�0\Ht{�wct{��ra�������bTp�B���+�~p��w��H|[���Tx�Q�
�=���I�K�m��1E�G5��~3oy�m��K���p��@�'��h[��
Z�� 3Y�X�����e�G�����Xc��Z}b
C�� L�S�)?�y���T�\5:��)8�z��I�������f_8�3i�t��N�<���-�W����!�0>��C����/��I���t*B�G�$�B�]3����}a��j��������� ,�r���B&"��x���p�lN�w��+��;_N�~c�X��>���z�]��^�_/�0�r�F����g�|v��}��'������KkY�r�����N����E��I�|��:���Z����%d%3� .��/�`m3��26���>����?�,���0��������TgzW]>����po�S	�����,�d�3���|���DF��G�dq/^�������'9	o]\
�	6� �e���6�e`�s�b���E��~���v�o]�eT
��������w�u?�Y�O�.I���6i7�g��L�7Al�	�:��O�M'��O���I�0�	������_��B��B������i��������'��4I�u�w��(y�u����~O�H>Ef�����������!�`��U-e��bE�:Z�O��o��Fft?���>,����r�t4��������&5$�����Xn��U�"���A���>����KR���Y
��u��& �<��\�=�'Sbx�Ip���;A�vK��2
0��xM���I��4���;A���r��4�����ia"��~�,�H�� ]��w�p�������8�a��h�Z��5+'��(�n~�*�4Ojg�47
?�$@+������h�z7 ���
�}t����cL<�
�zt��
+���)�5�m�D�lv
��8�'��q��hT���]�rJD�q
��s��������q�/��9�B��Jx`_����$"F���JH�������CM��/8d����L:����6��'O�^�RK�3z
����������Fw������2OA��Zw�rf
����M�"�9�2��Q��"���#E����0���e��jkG�'��s��TVGtb��se��-�/^���<�F4V	Z\����L����>y^�Ut��zw{|��Z7\���5:>�p��;��a����
�s�G��������Kr��.��Z:"� :[CY!�SkG��/$�_D�����+r�T#��z��(�9p�G��Z>�ius�QM+��h�#�S��|�qs�Q��:<<p�G�_R��{��j�&i=~�!?2�z���C~T�4��G|��K�������M�d:�W�	'/��k��
M�!��N�Ud��O�!����"�f����jt�G�����Y�x�AL�W����h�G���YpW�A�v^}���������?�w�%������*>���5SK�vA�r�?���\�(���s��x���=\(x�"F���m
R�AW����cuw����P(2���������P����������#�%Xz�.(��P*��L%��5[`�������=�E��p,b���u���=�!K���)��[���;�v�'��.Kv�e��O����x�������34IM��u��&fP�Sk�?t����2</C0���`l=mx�FlQBI$�)�`"	|���xj9�(2� 5d��.d��D��(�f�s:`c��G��#��.`c�.�%q�`^����k��6df4�����������`�x�BF�1�!.�����h�,� ���JHm|b.�hb+��������0�gJ<w`D�LL��Rq�A9�;q!���!����Da�q����X�:H}�����'����^-2���)�L2�z��&�7v2Ud�A�������9b����DT�z5���'�d���W����qBI�o�\�r������MP�m2���H�`�@eN�
!��	��K6����J7�oRm����������3���&(R��M�8�]\�h�9
�Y-�@[�]-7'.f��0R�gL!]N]v<hd��<Q�
���"J��d�qJ����������p���1iRG����]��, >���
C������rb���9�4�9���I�0������B�$���D������"fr��]�7�-��l>=��#��st~1��	v�6��)4�@�b����:3"t>b�?��	��	��������cDl��]��Gd��qcn]~8�Xp���8*.�S�����=[+��������Q)���6���	{�����<����C7���Z�e8��S�%���k���$�O��M�u�P��N�������P��Q��������-/�G��1��c.���R�W�<8\�f�&v����V�H��x�T���h�����BN����A)&W�"����p�����3
4_!O��U��Tr��4��y���.Mj:�@c)�&�{���a	����Ln-���RO|1���3���Pke��vit��|�@m�����v^]:�i��j'_����a\�DT��!��u�J��,a>�t��[���g1���)4��=�W��d!���p��tb��
^�����T,<�mA�/�n���6�u� ���nA�(������B�P��E�D��-��%1�;���{�81X�q�,�%1�Vq���m���e��t�d��1�k(]�8%u�c���u��QR�8&��,����c<��\�c�.K*��aV��40����`���K���UC��n������JIs��e����?}�Y+j�
n��������N���C�v<�j>���?o���.uH��S��&i0|O���3�����8Qb��,y���hX���t��UD<tx�d�3�:9<<�����<bmEay���K���T2�r��W���N{wi3%%��-8h:?U��B����e��DJ�|��D�_���Tf���<��z1B���XQt�C!�1n�0����#�`�G���Lp7_�<#��y��VNp8'%{�gZ����9'��!��wu:��;�"�p��=�[	!�(��{f���[��P�~j�N!�n8����?%(���C��T�t=���St����*]���[�L�t<��b���rmr=�"c$�1����C*F��1��92F�OL��=�#���Q�!JR[v\G6#ud����:���#[[n\G6#U�Z�����b$�l-��ud�1�G�����h`F�c��3. �L8�g���OY�I���>���8|2J���|2�C���*K-����'�$��P�&�<��(���w@Sv���Qm�p�o��,�$��1��I�f;%y�g:�{��<��4��;%u����dI�<��}��</���K�5TVBe���-S���"�a7{�����{�h^Wp����W�p-�/�k���|9lN��x0jIzCm��KH�6u��`�M�k��[��}�,%��X�	U�:� |�D
U�=z*���UM�`���H-�����z�'��M���i�e6*�NPZ�AeZf��&W��i�q��h�E�do=W�e5d�w�_����X�������g���l����3�+��(��_�s6V��
�.�6A���a��AV���S�a��sq~������8C��?|���u���hD������	������&b�����$����sS��=��=|��x���v����?��?9F�@���������r_�_��g[�����.V�L���� Hw]ll�}^{�����l�x,6��u'����E�������@��,S����)���QNy]N�q��viZ��5�z��y��A�����4�`��YS�D=Y�5����8��|$�����q�[�5qy<A��G+���	�����L^ ��z��E�dP�$Lu~[�����Icx.v�f
W��u�o�i�e��2��<DzJ���Fd����<��h5�!��(1a�U�P"����FP��x{�"AD���;!ff��'�	"u�bN�,�s'��<!fc�o�P*���g�T��bu�b��Z����4��p���6IO��I"�K�9C���]���4�R�G�B��I��vG���v����8�-��^�5��T2�����y�L|��p����#��(��P��Kk�x�O������kWX�Tdf�
~n���cWDswE��:y�����$3oW��+�;vE6�������3�}Aq��(���Q��N=��6O��Z�d�}b���Q��O��O�6J�����O{9Tk���|��2ogD�3����-RstC��T7�+W��	�D������U���=��c/"��u�����I��V��������3���Tdf��/�������sK�y�w��7��^��Mk�y6�K���:�����d��
�����WW�i����*��K��Hsf�v��3gWdB�D��)�>��NjVF��������Qr���������S��u�C���]�-g>�'+�-�$��|����R��"�t�@��={���B=4��+V`|.���a�P�8"���H�$�A�s�t�c��
��A<S!�}�j{8�=-4���%!"�TI��N��dV����6�) ���-��������u_#<����wM���T*�mB��Y83�k&LBvXkRD���u�K��@�&�B�'� ��[R @Igcv���h ���xn,�����P�1�����T�,J�H�i����\���d��i�����[]{��8z�6��O
5kW�U��d�r?���D�y�zx�1�:C�g7G�+2|�84�#zM2s�O�������
��g�����1��vbyO,I��O��b#_�������1���[����	A��$�x3/�����$1
.Y��r�vH�v4����ngN�&�����@��.m�K��i�����s	a�G.b���<lb����g�e���7�M{�`�I�m�lk*�51+I��N��[���]i��Z;M-v����Dy��zb!�,	E�:�i�V��b0�M�5j;[qP���y�3����I[�������mg�K���p���S�� 5	�B��u�G��r��Dig:\w�:�Cj�n����8m�}�"o�R��$�i�P�.��"�6�i�O�5}[�o�@� 3Q�I���C���%7��0P��e��V�r�2�/B��z��D��m�KW�zJt	N��\���X����g���*�L��*|��"�6�IsO���K�U6K��4&
=��:/�4�(��i�
��Y�]y�V.s
�0@��&�l���>�������a���v^;:����a;
���t�r8�?��Y���F� `�E��S��L�O�O�7��_����2pt�,�q���u�.���i��?��W�6W^E��X(�{d�N�	rn���/{�7T3y3����K�2��/�x�jt�Y�1�.�FC;W��;(3u�q���L�G.NC�(u�ZbD��8rs�h�y�"�Q��J���6�h�;7��c��=��S/�C�[��!���y����#V���������q�G,���4u��C�G��%2�"O�������:Jd1���������D�P�	�o���9J����<b.�(Uk���KLH�j�����C����1�;���#�p�R57;fp'����T���������W���������7��w��%����=��Gp&'h�������/{,�q��������jdq���.��o:�
?:���zF����f���p��)��	rod�������:����r���'��d��:	�5����9
�����8���yA��i*F�Qnn�����~<�a��r��W"H����<��@�Z�G�&U# -�b�H1�4��-� ����<A �rq���'&@"$[&A7��m3B�G3��Xg8�4i���j�����=�G,���*�����op��0iD�F6O~��+��Vd�25�eK����,b?0��q��m��\�W�^L�]q�a&�S�??N;�v�<���FY�-ds���:��Uu���?<�����e�?������m;P<o��^.q���^�O �eF��>)��b+��iO
w�Qn�LI�C����A5��$v�I]
���n~'iRW�������I<�K�B5��I��U���w��A[����|?���l�Q���)/���}�=���,���P�����N���:�3��<��Uq)�/<�����p)S���1Y��X���4H
��r2s�^ ��Ui��nu)/K\��<������9)Fi\%���6T�B���r�Tn�u�_�������6<&����m��ss(�-�?p����?����+r&yG�W�\��)|?
"%s�i"�A~F�����t��)��XEz���k�re�9������S���iG��K��!�-����4�V���y��do�:KK`;'���BR<��M�������*jKK��i���U�>M�g�3q�P�~f[���&EZ�������L�C�	m���ruNtD��,�0��(kM�7�	���iM�
t�kj���Z4M% ERT�=��=��J
��h�G~���2m�����7�q����x�b�lz��"R���w��{d����H��b$��<���rSt6F.��@?�T��~e=jBJ+)�&V�W���w�<(���a��(�T��y5���:N\(��W���,����5 �M�wCI<KM1��]W;R>X~�\kj2��z��g�=�W����2�A�9��o�Ff��:���X��������\]x���v�BIl�sTMk�!
����u��H�`������b*)��i�F�V��a�7fV�i�z<��N��|x�?M���x>�[�:��_}
|��[�u�/����yv��4b�LhM��(���`�_[p��w���`�(��,x���m	���a9x���u���5k�S9��,�����8s��wO��8�_��H��jJ6vQ��^���� \oIh��"'�I��n8� �����U�r�y~���S�����'q���h�4�pd�v�)b�y���w���saU;�
0��\�^��T2�'�fO:u&�nz����Wl9�/�A	�����t���c�n�����^�&�����}M��28�8s&�}��p� ����D�g����x8WpyF^B��[�g�T^�������	�`[����dZ7������a���f5J�l�'����U�x�}�~]~0��wy����VNGM�$��<2���3��=�J���\�������p9�:UG������ ��t��#kQKS[k!�r0��b,�Yt��P\���z�G�R�O�*���Y������l�GL�/�+O��%WQCA��1vr�j	�ta�x�����I�3yn����g���7(�p��on��8?��#.��W�{:�7���~����rwxgs+?���L���b�&��?�J>s�	Un
��p�&X3����q[�J��Z6����D-������b�g���LSl6"�aO�e��1���.������
X��	ZPO���2pf�Q��'8��s(� '%I���sq��!��b�����H�[������@cW�x�����P��g���A�bo�*3V�����	�C�6��x
�x�C���VW^o����p�����:>�#��539���K�/��%N89�������Z&���Y��B�T�J��5��u�)
���(s}`���|d�G�����r��W��a�B��]���Im1���K�����m�l|,&8Qv����I�Q|�1�n[����}�3\��^���j�g�G���`���/����.���=Z���G%�Y��������DH1��k}J�I$2����2�����.�v�^��4���k�J�����B�<�2%��B�����`c,�bJx�U�t���Tf����%�=,����]QU��"��R�g�={������a#c��,��p5�<A�*�Da'����;!F�Q:)��F�%S�E�~u�����8z���o����I�"q�b�Y��t,?r{������5���/���8���R���pf����8���<�)���L
Q���_H
���������7�Z���	(��9�Cn��"+�L@�"Y�j�"`&��H�,kJ�n]O
i���D�t$vD�]�x��l�n{�1+����n�O�Kdq����!)\��Y��6�Q$���
��zw?��n��/g^�w����$6�&��EH���@�� y)1J���r���q�}�>��X�m����T�j�X��}0�G@`�$�Q��C���� B�c�:&��$�`�:f��$�`�:���$�`RK�]L�����=��FD���u��r�v���B�b���>�fD<#��i'"��]��z�6��L����0���3�.0���2�w]\���|��[��8?�
4�d�U�-O�6,���F���Z�x����w��>��=��D����?'��^��\]/�^�_a��P������#g���P����$F���T4nH�ke�����C0�O���
C�=W�'�$����\q��p��V�np%1�2t����;am���H�>p%1*��-�����i�n���}�Jbd�$��K����$f{y-��/|��`��������+�LD�)�n�a~�D�L�g����&C$o�13	o��!&C$o�1���G��='�C��n�v2D�����}�HL�� �+�CBDu�ly.+�P1��<��Fb�Q��s�����[-�MbD��+���U��p���C��s����'������z.x9�(���x�c�W|h#iM�����iM�D5�8�qa3+<�w�}��+v�2{q�xk�Sj4���y�H�D��QD����o�����-J9@��`4)�_��/��,x�@����\�}�Za�����H�+�������e�����8�@0�������@���s�|�!������^?��M��):��n���(�|g�d�;2�~�ux@MM�?�_�,����J7�z_|~����y���".��
�H�z�������Y�	w�W*�J/|�I���ci}��v���5�]����%,���I��������������k�s*D����'8���������Z��!�?�k���������4�'�l��|N����12������{
���A��)�qZD.��9�B�"��l,����E��#����cu���-2De���-��4��
uXCcnn?��OL�$���4�B�n.[���>�s�Y���c4_� ���S<��Tj��Ayc��	���g����W���4��q���:w��	Z�$���mn���&76���O��zY���	Sx������,�:�q'�}���������k��bL��aS��gn�P&7p�e�[6ru�S�}��,����f�uT��1�v5:���y� 0{8Kp�H��h'�l�|'x$)���f�8pB����h`��e���^����Ph�1���b�}���+X!"<���]�����T�L"�j��B`�}!0I�2�A��!HBA5Ihd?Li'\��jO��(��2=#��#}�.���4��y��~,.�%s������
o��h���,ReA>�,�^�K�2.o�$�c2�1�2O{s{���f��4����j�L?q#�F:v��Y#nn0�;������Q����l5��P��e�d���w���I�Xd�������\������-�w$��d��/+t��y���(7{���i����K�����*6�}AZ�}�q�JBv�T>m��f�XG�����nuyj(��h9�$����A4v��������cn�N�R.=N���%Yv��P�stD����������:=(3�f3�cA?,<kw�$�1�5F���J~uH��.����p��z���_Uv��
f
��E��s�mGz�4G����2��=���e�G�mt\���
����PY�d��|��r�.������[�^����i�������k�M�b�X��9�6��$��lR�-OG��4RF��2U(A�UA�_�)��f
(�0!����H5B4����D��A;����%0^z���](f�K�+�\�;.A�Hv}8�H~A*��e#��	�~�����^����|��E�Hn������z���G�'��L]�a��IP��i�s���-��n�����0�_`m�b��.���^b�q���v�f����@��@�N=1B���%j�=y-X�Gy$��B��_\�k�G}���<���I"8�?��	���8��B$��A��"T&$-+c�?i������0�_�@��G�!����K�
���e�3<��>���6<<�2a�B�����n/c�z�>M4��[�Y��8|�����O��o����q{X�]�~�E�0�u����
��_��O���^�_�7F���-���	�,��S�����R��/�����x����H��j��M�������Xp=���G���Z]`>��s�3�%�t��;��b]����
�+b�����wb������):S@����z����O;a�$���MB6�=|��A���B����j��tX��e�]qr�������D�O5��aG�I��k}�����VZ�&4��'@,�R��Y�>����V�O��9�jE-0�*6v��s�I���������	&�0�5����}�L���/���w�&�������[n��+(�e�`�"���+���v������Pe�������E���������|0R�Q��/���������B'�06�����z�uUh�aF8+�!6�'��x��#�r�\��E6Sk��3j*���Y�KZ�5A�.�~]�I���d���Cm
L�|a�}*�*[��=KbJ�Fg7>g��8�=���/4�xhq�?����w��+3�|���F�tt�y@8sT�X��b�;�����'7�
��Q�
4��E���-��H�E��5��������6x�����|sI�f����K�d[�jx[WS��l��3
o�l0�Q�l/�a=E��\���K�=������=:{&�7��3��X���h��/�����AU�_(���
�:���p
�^���pl��@:�pT���m
H���r���C�tpI������0�a����[�Fg>f>i����'Lu\6�S��9n�(5Y[n%%*�@���`2JT���F�l��VF�����v`��G�r7��2�M��Z���cz����^f5�X���Z4�s����If�L]j��y�O]-GN{ab2������b�^���)���[/�&1���jp�������p3
.��\A�7��B:�������9B��Z������"��D#8iY�%�7����N3]���0i�}��Y��E������6�YV�8hk[�K�b����8l�����K�
�Q��r?����8����t��Jq����#\��M�����~p�����a��A
-�+�e)
�i{(.�R���&=������������{��0���MM_�b��"��jsg"e!>�����+����|L��#U�P*�z|�_TsO#7���Li�u�~��	��v^�#�����4��u���y�!5�m���b��?�.�H��
���7p�q7�d�.i���
+��K�&�;��l�%I���X��\�6��Q��\�5�^)Q|�Z�@��VM���H���:���(���U�]uO����T��*����s"��B0�� 8�����	���r������3B7
�^.'.�.�T�qeQ���R���qfw�Y<��
��>L4nl��{�}TBu.�l��w�����t������z����~���Cs��#S��ss:\�g��"��p=�E}�����^�����"\�o�
v�����c�Z	)�g�j��WB&v���.<z��Y'���[���:�F��P=���;?9�[^b�8_>��'��s�'�gP��4�?3��8����{
C�\v�wj���;�[��`;H>EK�p|�R�S��������X[�Q�����hs�D��1�/md���������$���O�ef1C���S'ueY�C�^��Gq�	�!m4?WeF ����w/�x��:{����Tz����9��O���o'���\������]�������/:�w�8������Cr��9]���cY�|������(p��&�4��S�������%��wbu{ �����nx���z
T��)O46Nyy�Wz��B�>����;��2��n,����7O�[�m���������p��73wM^[N,��W�:�jE����zz*���*���d��A9�v�}���8�
�*�)�x�`0o����{\���v
���F�{}u(O+�����m��r���^�W���H�\���|U�-�s��\����:�����e/���D�s�[#�G���rU\��a�������3Sb������]9��j[����������w�'�[���/���^���/��b�r�?��a��GN��t�K��5�:�d�(A/ y@��s�iiu�N�K-�E���g==�����?k_��
vLK�?1�x�������;�������<�??�}U~
?C~�E7�z��W-%^2	k�[&N�f�T���G6�>U����2�`gN7W�'*��6��;�F6�sT'$([lWKCP��=t*���8�^���5dF��p+�!��7,��Gjx#G
.G�J$)$���6��:�s�6�l~8m��]�j]q'�%B�P���PZ�Y�x���1
���!��,�nr�mX*�q�Y����)6������K��lS~�a��W��.YR��}X��=��3V��]�a�`�L�+[�,�6)��-�Nru�:(�~���9�\&����
Oj���h��%��$�)������8Z|��<�	wyf;���bI�{��8�HK�,���8��T�.��!�'_�+j�}NSt���f�(�iNn��A�,��^A]�����P�+�i:���nA����!�B����h]��DF�
QG�����P�
�����0[���������2W=�A��>�^Vo���6"$)2���>#5��k��3"!Q�,R�`��H�H�D9X��'���:#zy(��zHH�CQ�	�:�!!U�(S]���>#�i����jM�s��I���Tv9�M���:n,�=�FF�6SS%:��r�T�/�*��|��k6p���g!���<���r}����e������Tm,}#�1�����O��'<��|���<��y���k~���;����>{���z��;�j
������R�}��|D�/�����N��yW�)^���D��O��j�lA���������3��l�H��J��
�����������NT�	$��lo
�����n{p�XdN�V�S%G��PH�������k��Q���b1�m��2�b@��(*)U�3^G1�	���Q�F?�eT�C+�Z�]u�qC���I���r�����V�$��uK�=���ls5z���}�U0���B��c���E��$���������kwIuxoayw�_��� AO�q�������9���&h��n�=���R�Gx�d����{?�����b�oX��9O��<����x8W<���>�8�@�u�#W�R�?�
kj4��e;:��C=���zW]>r�?������X��3{�p,O��p2:��_g�/��3o�{����Y;��h����]{��{v��7��E�z>|i<����Gokt{��q�`��w��+~!��B�W����-�K���*O��l%�-;[�6X��
��LAa����~}f��L�:���h
����N��sw����u2���]����*��{����:o��.�r��P���`������?���)�4c'S���}����X��������j���o��%_��������Z[��w��?k����
���'��3]k�w���a/���5�}�j��L<���t^\r#���R�;�������uL������#2P
M���������+W�p�g4l���E�MBK,+o�,VL_<
�=?������6�@��Rf��} �~�hPB��xS|{z��0h�F�����tbd�������D��#������>��MC{�8U���q���{�:���q�������Q�����(�Qs��t�����I�#��x���
���,��8#z�)����8vni����[B
���������qb������%��8�7�k�����v���G�������/���H����)�����;��O��m����k�[���}�L����������:{<�������c���u	o��^���d=�.��j����j�UO�MLg���p��?\K�X�g���x��;�����������s���	�3Y^�b�
^��A�Y_R����1�7Hck��2�3�������^�h��������w�������v�����lR��x����=�Cey�b���*��[]D��s$W$o�����#��x$st+'D���|@�k����-�f�Ym�E"oy,5sy�0�8p-OL�fV����
5�CU�fJM`�%!y5���V
�b������%�h@m���Z3(�@����J�z����N@�>���9������@:TQ���l���aWi����l����Z���v�X��b�{���_P
0�J�I+�����8T�G=Q�e!��B�����v�U�e
�Z^h?8V��-sbn`^��?��D/~>+����=��8%+������;`&�E�t��&�I�5���&a[�*{a����������i��"�<���w�|g��L?�������c�BLF�O���~+_�,Lh���H5�4�J��^h��e�l���tV#ey�,�G4�6Ih����U#�:�,rB'E54��Mc�QC���,�e���e��nLJ�ff%Q�#��,U@��;Q�q��&�64�_�����@1��G��R�N�%�pEr�n�����)c�����6��j_]�kZ�6=�}Q�>���8��9hc�F�*US����PP
�\`��i\����~5x���
����E�������<U�%�f���d�������j�8��C��=��eEm���a{e�gb���t,����j��$�&O\�����:u=kb���������h�����h�h��l�����X��1�ji�?H����l����@������T~H�m7M���1b���1 ��-�H����z.w�]"8o�<�I������������^i����E�����^����2�1Q����}�8���^@�*f,��o~|���:_a~��x8q������ts'�N�-���W�����:ie��z��a�U+�����6&c����x`�����Q�$��G��V�}i��������,��B��]������A�p���l�
�~.|����S��=���$5��|��^�����H��������*��ju�����_8��O�.���3r�Y�����(�o�L�� �������j_���~8I������h��������t�'a�[���?[G�t���o�}�j�������U	�'�>wx0|u�G.#=�e��k���D�7���0����\8/%{>�
p���(�b�v�"��BPb�a(2�*�H"�9�o��\e"
b��w�!��I�1���������K�����X����90������7}<����G#66lD�F4hQ����x�o(�Kx!�}Am|Fn �53�~��0�y�=�K��U[�#=
*(��cc�Aqt����$
��}`����K����@��=�+�&4����r|��w���7�G����<_���V�#� ���)x�������[���sy���h�������W8���/��B��$�W'�A5���BA6�
��0�g�3j�mQ�)!js�t��T	��@@N�U�D���#JK��&D�*����P$D�)����P$D�+����P$D^A����1P[GB6[����uuYrr����|x�}��of�"_q�2),va�����{'��]&����'���L�(�2N(r�D�L������M�Q��3��`�����E��#�]l?n �;^\�k�~:���r�f�����#��M����i*��[o�Gv]-���<�����2@0�h�k���&G�����0��\ub��s�������w�I���r�A>s���Hzu�y��h����*HQ�F�m�D�?]�!*�XWY�Q�w�*iQ�&-�'8c�`N��8�#�{�u��u�X���(>��C�����*�2����=h}E{,��,�`9%*T})+�w��)Q��K��IL1����%J��k?z:9Jj��(i�[����&j�}���	%5�H�$
�N�$���<m����H&�4���,�[JI��@f��:��O�������Y��c���%�q���L`�S�������t��Y���uu��UIY�$�����E��T_��������������pZ�]��Hg\/>7��Qh��0�)�C~�������O��7Kj�����B���H
���>w�5�W��e[r��?���9��h������?��MAe0��</g��_VVVVVVf�C�1
�x"�������k.���(�������l��0���r0���i�N;'v��(82���3O��!y�rO�0�>�vz���^��)R�s����u��e�`�|���8��f�����c����r�B
BcT������
]���i�8�:%�_jR�Hh��\�K��
4��d������^�J(�]��%�C����)a�."C���U���l}��7��({w����NeVI
����=�@�$��B��!El���u����^s2X�2���$@c�;L��6�e1���Q"�Q�(��7�C�r��������s���02����{��w<kxkJf}���Al����T(R��NGv�4}��=��#j��%u&�:�me uN	+�M��2��i��ku5),�������b�������b�A��gt1���}��t��_C���lX1��P1�
��Q������6�H�c\}�����������09L�0�m�C��|�#
�)@4��&CQcav-��k��k�=���^[r��L��Y���4&�<���@��vq�>&�)�t�%��C|��~����"���\.��{=p��?Zg��2�sy�}�j�UE
]�-?�9�����:��S_�]�n�Gv�;����:�'��`��ZyL*���v(�lW�e��8��������7���6��}�����)�l]�$"Z<��$�V-�����5���BQ���l��6��*e�%���8����������;�xY�e9��s�rG���f���a8�qI{gR0�P\�� SH\��i,<���A�n,���w���?����t�"��W���nXGF4���i}vnl��a���Q8@�Q�e��F��[�V7,�J5��S@%$G0P���qc�I�����wFDE��H��*�E��8��<�M�I��X��NY��M���+��q:���$�D�*����5�������[5�������%��?���4A�@�-�E�pI��r������%YT�wy�^h&>m��������H��y�������
�W��w�70m���$4
���yQU���+��H����o���CLwx�U\�w��ybC?�C��5-;W�%�������>�ek��If_��Op��4N����>�:y�,s�|�yb�������ynX:yS��s���@������$�
;3�7�#�S��<���E�#]D~�D��^�8�E��M����^�&��E������g��W `�2�c~��N�3z@���>?�9nxG�NX��Z�����en���"����Y���#���u;t�
����2�����Kq�@`PXD�9�lY��0��y�%��%�
�K	���,[B@�]��)V�@����9#k���L{�����[sp���,s���:+����Z�<��t��[���xT����{��V�1������e��m<�n}5�n~�cL�X5�����3�
�X������9P���Q���uF��3��H�[�Y����yBO�5�g�M��,�)��������i=}�W����E]i���o�D9����;�0�=�3z�xX�����*O^��w��(�$���������&}A�&��8��~@5\�PI4���11�����V������g��[�(�UDh5[��u� �pzJ��rDSAh
�T���/����f���Yf�������5�(�k"2k<��vW7FA�x��4���4���d������.erI��8�e^G�b?����6�����?��D���r��<��	���O��'���mY���|<��o�Sl�v�61�df[��+hM��5ng�����)9}\z
��Bl��z(8�Z�'KH�57��Js���-��h�L�,5�����e��Ir��h&I,�F���/avM���5}�K��$cKs���2
����6���d_f����=������)!���lq��Kq�=������[�w~�k(�}�W�v!^�reu3����
��+�ih����/�p�U�p��������1I����K�����[�O�������r������:�������c��}���"��	X�>��^��t���U'*OJ����Py�%��L�4��l�m�7��5��q��cQX���T�n��������Kf������,Q���	h,��5��4�5v�0:;�B��D�g���#j�Y��������z�O�[x��)�'����!PO�XB��V�Fb`����H�C�O��g�����0�)���-oC���n������Sc��5�Q�_s������u��H�Co$�[�yQ/#P��F��JX7���Fw�^5�F�\��!��CmF+$V9�s+�F���&n��'.l�s[����}p���W_��tnl�M ���7�3C,� �H���6�X'�����k�x���W�6��0E�1�����5O���,��sBV$�q���q���1��0N���2��=���
J/�=�������3Y}����g:��-C�Cd�
}#mo��94���=��i�������b%"���(��CB3�?��+!{�t�#��B����A���U��2����1>�nc�n�A��	�����4[�C�7u��J���Q�H�|J��F��	r��	7�O��F�����ml&�fA��h����=���j�!�K����^��=pk=p�A��4��!<�-�Z^������i�[�!�%�>+���Q��|e��Vd����20r�����C>�q����� ��G��]��n�v��K}��z�E���0���g����������q&�?�M�<�.5���q_�����@U�C�VC����!�]�c�'+B�����jPoUi����9m�\�����W�����BN�cX������*���iD�W�=����J����5�;{Hi��ZX ~����O5"�b�����b�u�5�"-��S�h��z:�O��gL����W�����������;�M/Hi���[�7�tWy���x�z����.Ml� 2���������������e~+��$B���V9+y�<Vb�,���J2VEn�t����X�����bm����X�B L�?��f������O�~GLn�AS#��d�<+NN`���:p��	FV�� 0��`&��Au�|VQ�y	?�z�8O���O�P��(���)99�;*�������|J��L�o�5�<9�2c��+=@���mJda{{�^�{��X?��U|y���j?O�������X������	k.6�N��zIt4vlA�q�I���~�z%a9`����6��a����-�P���*���;
*�q:��$@7�O�/���v�	B���<���D����k� ?�i
��o�����d����IF��)*Z�NU�o�n$$0�	q��2��%u	jli>V1���W�.h�\#k$DG�_���@%R��Y�rJ���U�AE_�-��$�`,g��C�yQ����#I���).�I��(8��?�Ix�B�r�p��s�*(�k����u�'��8�cL������I��h���e1�"	��6��$��=���("?�3�<?��s��������]���D"�3�O����%��Var[vC<}�+f�n?zH���:)Y��pz~/��H>�T/
�������1����5d~��j9����3�����Z��`�7=A�2+B�5G�us��#o5��_�BB�"�jQ���Z9��cPlg��i����<xZD�)'
_}��
�����2�x�������:�"��R���k�E0��[c�#C��qR#4�������?�j�}2�r��;�0�)���9�;��r���U���*�!��%�(.�$Ogo��������-#�����[��Z�U�Y��:����,�$���Ei��3�x���$�kJ#����?�������G��~��}�>;V�	��������R��>�j������,��"��2����:��M��o�q7z���o�8bf�}e��\������N��rt��'��x!��`�
]�|�np�����N
D���N�����Ng/���w�SL����%���w�b7��z*(��.���G����+�N�@�����M��}�_������NFG��H����/�
��m@��S����2n�e-���������J����Y���!��#1����?:���o��_����������IV��C%Sl����P�-�a�����Z�{l�6�L�����w?������o�����S�����]�������2�A������Z`(eR�c��w?�����������)���Q�l����4�N���h���g����5J����)Q��q�^%�hS!�T&6��~��������+����;����myFY�X��c�"e=�������cT���T[����
Tq�@�"�m�6��<��^R=��4e�s��v���C|���������@�����4Zat
�9O;��Y������;��W������;���i� �v
���=|�����$T�*\����?����L�s�2������j+7�;��@������Q��^A��B�}<�fX9�V�
���>E?�����Y��gQ���rdS��E��a�Hw;�]yN�*�$b*E�v�5),���+����.	�[��=���f�;Q����d�����?���6������=T�� r�K:�����}4�{F��p�!�:]i�A��JH���� �4��B�&
�7��U�Q��U�5Th��!�
�`F��qM�[(@l��@�]hMk��3BhGx��[Ia�~X3�a��]Z��������/4��G�����;Z���GC����q
����Q=Rw,)N�����;��j��!��9^5]���-h]�vW����q���m6k&�d��b]5���w��|�
�������������82*���U1�- �\Ch~/4$.��3���K��A322��qJZV�<���f%��|[������uq�K��c��������T�@"V����<&�����8����Q1"kVN|������Q,�6�WZ�;���[!]6*d,���8�����~��_�k�����[���:�1`6XP2�w$MD�:Cpz�te.Mb�&\"������1[#.qa���@��I���Kd�;`-{���%�!`-{��&g1&\"�c���@������K�Hx��l������b�����B�P;B��I]Y�����tB#�y>��l�g
n��%q~��s�~�����O��{=�@��s]y=��@����>\`�����b���#���������#G%�f��(W���[��r5T��^ItP����n���i�D|"�9�����X����-���m���B�D�t��]�����t��A��l!>�n�s�����3btZ�n���4r@�vf���6����l���E	���^�q��9�H��0�Z��`�Z��;6������5�jU��6��V�54�@����^���A�t���	i��q���3=$^lk|j<��J���3��GO���)'a�u���M�Dn���Vo�o[��M�b����Z�y�������9	��k���P��i}v����1�U)b�-|�cA����
�<`2y�C^�b&�AS�^5tP������m�����]��-���&!B.q������m���������������ES�m6��{�7��b��).PA@X��vH��3�T5������mKs�K�����4��� �����E�
�f��������n����& �
:l���&c����������A��g�_u�\L�W�D����8�����rR�R�
|�o�6VSx�r����"~�f���^��2n-�s	mJL�+$Z�G=OZZHa<6,����G��z��`�����6"�������ANkQ�LQ�$���x6�=xE�
�o��n��M4t�,��7hvl��^��� �;�!
];�Tg�y��������~p���[UMd��������}�x��B��z�
�^8B0�QTitp���O:�T�[����@0����<<Fa��n
AMkB���.d8�w����r�K�M�)��=�9�� ��.��,}Q�,�_Aq� P�4!�)���XA�]]�m=APMqAjT���$ww�|�"�en���PL�����f������R��;���X����G"�G����<�k��������� ��B&
H/M�=�UI��ES9X��sRBQ�,���l3w�
2��+ML"c6`�jD�."���&Q�0r�a����j�D_�F;NaSw�B��#g�
��ZA�W��D�a{[�>5�������|�h`����UpM����q���E��/=������K5����%9��������7|"���p�#F��z�k�������!�;Z���&i9c�Z�d�m��-�w�E�����Cp���h2YOD���GF!��?�	����s��k���P�%g
��Y���?X6g�����s�^L$2����M#�SR��"�w�w�Jh��z��K'��:P�^7������d������
���;�X#A�����������������������sOq!�I�"����]�5���zA�)i�8�Z��N*��J�_h{q���F�$HNi���� ��Q��������f�}�oLF���>%'��Q��A�n����T
�N�>��������vp(�	��Zp�� �4���0%d�[���R��O�p�B������T7�5���j����J���)4�������V>�'�9L�8(��[�����z�~
�q��"7@+%�Sx��5.B��Wp	T9��s���v��1�m����AM��!���(E| �^����P�s���5�2��
v�=�yjTu�]N�R�s�`���-�9t}�=��V��f�O��D��WY���T]z����������64��S�.����*�3L/��C�
��������\�X�{[=���XJ������H+{�<F�w�,��}H25���P��Lk���7Xg4�@AQ�����w�����F��?�������h����(������������k
4��G��cCm��E����X7��PL��������&1�������J�����\�Bp��nNajJ��]/�ZW��3�wGl�\-���[.s����i}�S��L�9�7d�y�L�|S+�Z�Q��)�P������1|,�e�kd�!$tpN����2�>E�p��P@q0�i���LN�B��q��S���0���F�pFS�?Pr�X�Z�0Y���E�+5�@�E}n0� ����H������/�����s�ah0^����av!uM�e�K��
�,��z������F�"�������(N������!��X'��p���;h(<����o�����@�x�W�����8(-<��9
$�vz�����x�=�v���x���]�Qlk��/�>�[3�����M�i9�bC�;O����I�Mj��2��I��y-w�����x�����ay�H���K���5Lx�J�^n�lO^	1,�����</�+!��V)�_��W��5���[zS���U��<�����)���j��{����7H-�\uBO8�W2����X�����O(ix�au+���3�1�u�_U�K	
y�ch�y����X�(R����w�ER�/j��3��6|>`!%�-i�	�q5��cX���^.U���X��,�����cB���i&���8���~����X>$����A�\X[JO���2P��D����c%b���)�J�	7.�
�U<d������6�FvV3�
����=���E5
Wem�����vW���N�Z)w��~�=�q�����������G��q���)e)0�hA�J�����zYJg�u'�^�
�(�#��!���V@	�P\S(���](�����^/bA�%���Z����7/��>X��1~��O�#�	���:o�/1bC��������N�4�-{�i��)��`�����9)��T�uR�n�	��65�=�
#$w�$j�D�W]�('�0HY��2-�2��LW����9YJ'��6I$��U�������x?�[�� �G����D*�\�y|q�FJ��m��(�����%a	�V����].�0a�^E����H0:<��
��aP�E2q�������u��
�N���.Iv[&���B����m/���gf�]YxQ)���
(hg�l�(f��^`���t�GV�
O����C�����re�O^���%��$;)o#P�
��C���VvC�^��������(��r%~�8��Ah�%^=q����_��N����F���G�����F$69{�o�������h"�8�`m�`|(d�f� G��A��M�7K��hB��0�v0\�X4a�a;�m�q@���1��<8�m���"������1� �)���L�z	�K������Z'���A�[�]I`�Vn��
����s�a�zf�oy�#����f �4�q$�a'��|���"��2<�������:d'�h<���&D*D(3dt!:�#x�Qx�'v������s^����K�w��oC��9����f��#a�ka��1�����f�k2��yY&���[x�j�ia�a��C�4����c���&�[iV�(O�%_�I�"zR�(�.T�rB�C�6/�Wv�W��>#��lo8kE���%�t��GX�j��p���������`4��i��p�*��Je
�-��?|�����P�A6N�b�PIt��&h�U��p�B��cJ�'���2�c��D���'!u�%�$\:v��!?��`@��HN��qP*8 i����"&�ec�0h.E�1�C<8���74��y��In9C�����R��?`qP"�	YHW��xu��!���b�wyX���&� �[!�S��9��O��p�d����	4u^,����o�e��uU���9G������fk�FW�2��*HV���������8�W��Rr� s��\�(M~�i�@���M�����]�/�?9�\�Po(�lid������c��������-������������$�2k�cHkX���c�~9mZ�(��C�O�,�����N�)f����{�I$�2�e�q��2~��2!?����A�f�eCpM����Hz���N�Z����,�u�~:�1����~�e�M�l���ng?F�urXs�����t�C3��kl�����nh��i ,�':��7��{��~2-�M-+L����N��������5@w�}�'%��'d���tYy&���E(�8O	\4PT�*6,��I<�����Aij@dh��RTj�?�������?S��
I"5�0y��@~�cf�f+��
��(�]4��r���v(��@E��&�W�04�_�2�(�<&Y��:
������M�`�������4g<����J4�Dvk�E��s���12]��\�hDd/i�s���qMpt��Q$(�@JT10�k����.:�3 ���q-?xs�f��}�${^z��4g1�dy��@+�����U�qe���@�����5$D��y!��i�����4����[�<}i��Vp��K8�����m��@�C��Z��2�@��k�����y!|�������f�k�|�[h�ou#���R`����l�^��a�����~�-��Eq��.��.��u)���pm;9�rwOj����jk���\�Y�;��n�%F/�nh�v�~AX�Y��ww-�D-���{��l�e���e��t`����'6�����&�B���e �th�oE{�Om�Q��!6�X�{p��Laf=�a�3�i����VV����G;L���Ja�������}	,rw1�g;����r[_����u�Yl��f������p�'�����m���Mot��<[`VR���B����%i�Qa�}G��-��1�,��G���������6-l�g�jpz���1�t�����~��"S�������u#:�s�?ps,v�~�5�m)�,��
m��'��V��&�=�q�nu?f��r��������Ch2~3���v-�K�<�?�'���Tm?��'�	�g��������!�D����l���ov�����5���<�Gpn�L\�~�OkQ !������Q���Z{]������Qb��e�3�[dw]����&
8L�Rs������b�^^������ }��������4h�����@�9@���[
R�Q����Mi~�,
:�|bs�Zwa�}__�+Y�!����n#��rM�YMkP�;P4��yN1Ye��RQ��B#*4���#����:������z�O�VQ����R��	���i���nX��D�J��.\���5�"XA��V@rA9����;o���J,�Zl�%��F)�N��b�7,���R���GA����^��m*�si)���Q��:�@����
��X),���9����%�s�|������a��Kf���5on�Q��T�R|�p���[�S|3��#�Y�<����_�3hkR	xC}�����h[��������G����������f;�����6�����pHD�R��s~�|�2Lo�\o��~�Wm���4&���E�n� �fgp8b��`�R�z����>�������	.1������4\����
��~�pc�	�V�u��g8�q��qP3h8�q��q}��3��8��x�j$������m$���x_�&av��R'�e�F�PJ"�d��W�����|08��^��|\���x��$���3\TgIB��XF�����O;��`�5�/����U�X�l5��>�z��5b0��B�6�"h��3d����d
��CO����2���Am��Sx�+��d
��������0���L�����2���F��
��7�BS�~����)���`
���)��Rm0������^�
���a�x|1���[oFn���6x��[�2�
��y���pk��&��;���[�K�r(eS�p��F��l<���w�kz+����-G��F
;�i����
�6�E�������)������?F�C�g	�����o:y�Z�Q����
�y��:�'e�6mQ0����I tW��������>�n?9N6��Zg�7��~���o��v�u�N;'C�����[Q@��a��nJ��#��[g��Q����sW�.���8�����d�L��^����
?��7�P�^%�����z�!��
m�{�`a��B`p\��K�V��a3����T�1���`;1z�j�;�SbZ��[�(Oo�����`�������}���:�D&�2q'�IXU���:��o����Z.�c@.k�J&�l�+�f�L�(D ��I-�1-�N)�"VB�
2�����:j��A"vj"$2����dLO���bmM��5��h�����V�	-I�@F4����I��O����g�P�s������b�e1����&��Ac:�$�,�7��*���\L�}�B!��7
��{���c5ahKI��� _������C�}�Zf��!Y�cD��E�6���p4�E�u�Ad��C�ja����RS	�,���6��-�qe�O.�)4aZ	�|v��z:d����,���uU������v�Nv��8����QY��Gi}2�U����o�������dw�~G��n�,}������w�8;b��`3�SJ���X��+������Y��%v�Wnt�Y��z���`6
#�3a�����m�.���d�#g	c��N	�����������p�+��K�Y�W+�t�&�Q��a�q�
����d�=��C����9�����|�	}T�B�����5�:Q��,�?+�����g�����C��_)�?�Ut^8'h�[|�@O����
���%�����g��=���.��������+��4^/'h��E�w��s^�"_�L�7���X{��n�J������@K�L��'8d5����HL�r0%j�0��0}w������C�@�H�������|O�N��s���l��t����a�	[w����/K.�m��"`_��F�������,�f4�W�l���V7���B@-�at�]hy������	�� Qx���0����>�����2\-��5�������K/�^w�
����Ye0B�X��������G���K�P���W�Z������j���E����A�{��-M�����4�/YM��.x�y�!o��u�-M���a_�M��G�'>����	�_������qW]��?��x�G&�C���'�*���o9������������-I��������z�n�w�����M�?X���=�W�|@�#��/������&9���kr| {V�+��V��KI�^�i�K���D?�������0��3���z����>�p�Q�E���#��F�u`���(M�C��X�?����D������������$��BY)���k����z���cR��'��Z�e�%r��������i]���ua���G8�P��r���w!�k����|��������'�����F("�o5������.G:�Nq
���e�y�7���f�m�o[�������������db;H�ct����)nYUP/!�6�B�M"K�:a������g��5 �z����<���/P0U��>H�ex���]�DK���C���	zJo������i�"�sx�L�$����|�"���c/�o����'	e���qC��bwq�����|����=8L�������[3S���H���3�||��Ti"~r���H���.��J�n�����i���S������4����03���1��������bP����,o�eT|�K��*�-�����4��������G�+���O�`M4>��!K�v0�o�=)�<�����lja�1JT����;������;�����W�Q���$���M
�n	��G,��B���H���1,cG��B-HC�Z�`�aeqhi�����Y� \�m0X7VX��j1I�c�������,�C'x��/;�eb�?���\����<!xZ���e����$�1��<V������2G� �k?U8i�d�+u\;��r�k���
C"k#���j�`�t�������[��E�0�.��R�����/�q0"�{+	�dQr�7��}Z�dqy U>������C�B���\@�*J��&,l ����p��x�O��	�6��h�I@:�'Y�?�Q���	�.AP(�-��Y.-�8���+�������� �y����+HZ �O@&����@���,�&����BM��j�e�4L,���"h�������m��	��n��"������j�������n��������_�|{�!n��S��Dn�g����X��������$r�<�v��������$n���v��n��3���{J������FK$�*�$P�Q�[X����F��d�,�E~u*j���8�l����d(�ydR�#j����e��,������Tj��H��|���/j��y5��������
��;�t�a�dBG-�>��D�C��4U���;��H��IPQ�j������i��x���Q������BZ�2�r(��kG�G�k��oWI�\�e\-�;�C��&��y���`�z���zxJ��Y��j���J�d��"$��>1U�������6�����=C��e��8�^����r(�-�����"��AL#
M����Ls/@�$M���=u��(b)�Xv�[�����o�����XDg�Ve�W��e�?�i7�)7����K�\��g���
�)$��z���~���eBh%���9�9N���O�[�=��{@q��WP�	�s�r�����@+n���j��6>���s��s��J�P����
s����Q?yS�����������S0M��_>��T����������s��,QR������4�������IP�����IQ�=�����V����'��e�U�%TV��J&���#8|'r�p&�L*�L�
!�*����K#�3Y�j�����j5&�M���t��s�������m��73��[	O-�~�(��'XGy�{�����*'���E�Q�vm��*M�_\@
�	�;y��j!%b��f�dH�����R����������>~��h-)�6EK�������VD1�`[�������	rw�6a0L��	��n*J�N	�
��(�����l�n��8D���m����W�����k�����
��"=dq��{N�1�n7��$m3��"y5se�>-/��*N"�Z �V��6�U�����nb�H��uiB�N��)Kdrg+(����K	f���h����GQ7ia��U�+��K*2�u����3qD�P��d�Dq��e2i�D�D�Ne�D���%2iE�D��te��Z�e�*�h��DQ;��������;��Y����c��vh����Q��8Se��Z"����&����W��v'���v4m���|�vI��l��Jb�2���+2�(�����<A�W#Dq�U���@B,�Cu��j���+�C����:8��w2����L��_�T��%�v�
����D3��)vv����^��BM�@�,���Xh����%[�.�u����w����&��?FE^�C�(���4���GIvJc�$�22zk'�
g7hO���h�0�C~RGZd�1�=;��'�����<��"��G_b�T�����:�X��Eg\�1��9��������L}�� "�z�g��q��>b��������/�7��(?��t�=��h��n���$����1By��B�d�<��
6U��9q��2J��y��8U��B}bO`��|��`B_�w&���b�9��hI
C�I�=�l�~�j��������`2"C��������G�,�����K���A�c��<-!�Z�^��<�%��fK0��\�F��nC��(�h#��YT����[��=q8�r�~���2/��v�����}$��n���"x�?�^����e�=��d���n�}������P�/�qv"�P��E4����=����b�����>�+��L��O������$�_5��4_&{�a������&�:i �E%�P����c'�
����������`�A��C����Ma�����I17������J�+�mE���PM��V�j�k��m�����'��U��@hM�^`"Cg�����"@���!!V���WH/��jE= �c���"�A]+7�b����No�}Q�hp�t����/�����m	�0�O_��($�?]����!����5��q�
��@�i��/^���F����y�8������L��F�I������KG�������J�	jL��ZHF��`s��p�P<�h�bD11hW���0�$:%�%b.�5��^.�@�_��\�ayv�7��L\*`n(f�DM>���QW��86�$�J�z�A�9��*�i��0B�Q0�~����U��;HJo\���!Y`�QYH��@<�1O���Sb�,?hiS�i0��P�5�����N{�2���#R�8?��
j�O"]��;�L�q��������i{$8��nI��-|{D6����^>�X�HCgCA�E���
]!y�l�nY�;Z�������1BMg��c!/���!��l�������D}�x��5�kXh��	t,���U��0
Hzt����|B
����P�Hl�R�y���d~���~�O}�^�7im)iA"M�t<�#�A-4C4^
�ZK+�f:NV��.��v�
hl��������!
x�k�@�RZ��^�I��:_�<#�T�����J$,K�[�j�hE�:34�m5������ �I��g��^���P�q�����h
X<�Z��zNh�k�(�}�+�O��L�~{�9��S���bs&�h����3�	����������6G���?`�$�r7
`�D���,�0�~�Y����.�W[��}[	�ay���t+�_V��86xJ��v�{�d�}E�*R����8/_�hH����mO(����R/��E�]gE�*x)��5*o��I���zS�����}�_��:_zo�������>������C><h
��/&�	�����bM[�7���h;^M���.Q@[�4Vk�T8����-��Oo���������L��L����a��z�`����3�C3���!��\@����4��|J��BxS�d/�z�H�����/X������BX�k	��������i���c;QHeQ��t6�����;6�i�,}�kg�B�"��	���o�.�t�"/^;[��\������i9^�����"{ZN��#��6����FnI�t�(\gM%$�?��K�U����_�P]hv�Z���S���-x(�TJ�#4_GaY��W�X�8,;�l(�]��o����x�]�������J�_NM��P��@xJ+W����=�~�{$��>�Do��A�|�Y:9n���Gy�Q�.=�u����Ry����
���U�[���;��+�S���D��i"%�
��[JM�tJV�A	����4�6�Y��5i��!�$��|��G������O�a�W�F!� D�*��t��B+�����O44G'�n�i���T#yN�H<��T��*��y5��r��u���u���[�T������jA)���Z+9_Y�%������� �k�"7�~m�F�+�^��1��v�!�h��������{��/N�;qQ��}���	�P+&uW���M�X��c|t�P�A���5��[u�6�����j����������9�����w���w{�U���)��g�R� ���/CA�\b|�9e$���@F�z��w�[��r���p	?����v�h��c�W�'���������$��qve,�*�����TSg�����{����
=�!|�B���lK~U4>�M�����P��k���:���j���	B�9�U�	�J8=?��Zq���++����b����6�)���*�=P�edn�e:������,�.a��Cx���KL�m�f�J�H�!�I���5����n�;!J��H������d��m�D�.�b ~�rS��Q�`0	���i�d{�@�}><'Eu����A*%F��!Y�����J?���\��J~|�������"j�D6���:�
�,��1yN���|)��B�����Tf}S����*�H�%=�g+(����#4��WNX�dx����X�8snKG|LJJ��>�i�!�������9�_>���\
v���_�S��[LJCd��2V �L�KL��M�CE��'K~�P�%?<K�E������8�Q����/@O$~
8���MGs���B�9Z����MsA�nm[F�&��1-��C�!���#�C}�����q�>�o�gh),�U.��+��cy��UBK^bX�0��[K��\�b&�,	��#��}��y��/�&�)t��$Gu
�M��QjQ~�$����������A?A-���jW
���*��n<�+%�P���h����M��N�_�]���C]����H��}� �!.�O��$Sw���F�<��&��x�T�1���P�C���===A$G�u'�/�G0����5��n#��1��z
�(A��5�C>���ATxblC��K�v����O}:��I�B$.~K�j���f2��_���<p'_g*�I���t�9*L��	�S�!P��6��7����������������wY�#�
�_{���H[=.�^!Si�-�b+�Z�:�kI���-lq�B��m��'�'��:��{Q�����zN����l~5t��EW��h��s���x#��7-����Y�GS���!Z
^��:�����q%��������.���)�i~�����ep�P��)����k���,����4a���(����Q>��$}Yj4��i�d��Gs/F��&����^zZX�7���^�}�X9mX��A����Z*�WS$��F����@���,T9���VX��x���1!�B��54`x����w��]��+�"eVf��G�]|?�r~H�����C�f_�������6�)�K.d���i�q�� ��U+�7U��p��F�.���.h����������_�T�#p�'���n�������:#*��\�@�j5�e�=f��~�#��x3
�(NE�kT'�����q��y8����8�"����q~��x��[��"..Ivr~�w��Q���U!si^"ss��R���	��M��=�32Qt�Q:��q������N���gp������
��k�O����&3����g,���������,������}�wz�8;��&
�nH�s��!L���|�AZfi��,y�]�+��/&%q|x�fYU��'������E,22�)Z@��'1=��P�����cS�]�\QV�I��q|��8B�l�rOW��5�T~H��|���e�iME}V���+���n�{$�XiVW^��+��bVaX���z#}���=:�m���+n�D'�����n����a�eF�C#[-�z}6�{d9l=De���L�O�������C!��i"H^�	k4�7z��l�[��@HX��������W�ab����>�FE �
����f������Y32w��q����A��o�L��]���:��M�a$A�p���l�b�$���8D��Y�a(K��������
V���!�H��*��7����O��q�����ya
�f�l��U���x��]d6��.o%�����wb2��.��5}�f0��{���/��#}�F��K{i�/�M�������D��j����A"�9b��ZSW�faT�����V��/���k�Q�~���D�8�7�]�5Fk�Dc�	hj�P�G5�f{��qF�yGK�xJ�/i��uU���q��G��m1�$":�w����(#l[�+d�W�?K�<?�
D�ybO���`��:�8p]�nG���2F^8A���a��y����_���w-�i��8M�T��uX4�(����7������w�6��Vf������CA�R�����f���F'��IyLz�&��kJ��67_���Vi�O� ���D�c�����D�\]�Rz3���Z�qb_Q�����tK[��`����^a��j��.x{���	qXR�M�mM��
]34a�tE�I@x�p��o�9Z�$zH�c]���ncp���>����/�������M_%ua���,����B{�7�P���\���
2u\!�:�m�@(7V�~g�G2��SbFj@d���+�8�>����VzEC�q �1z�}����4�&����Qy�n�o$HpJ�W��
]�����_�:4��k��|�����:`��M���Zz��o��X�?�}� )hU�Q�_�OR^���-����KM��i�'#�B�"�w%{V	�}l��L����y�R�b|�%J��7�0kU"�o������T�'��������9.�Z���g�Q���7�o�Q�P�X{����J�n�ee�����Rst8�.��7������:_�*�����.��.qA~G��?&'8v&S�����v�1V�����Q��c`=+�zK��`i[���m����^��1�k3��������a��o�Q�+��J�{��P��J�k�j�O����<J&��]���c�/���C���fyY�M�]o�6)0�����pd�L�*z���f��Jd������Q}���rp�bJ��O��������2��Z�	�3���Q��;j�<�_dd�z�|C�8�������cI����m��7� ~tO��/������	�&�����Jo��������^P�e���r�[�zQ!�����%�i`��Q�����t/&��:����s�V��\�Y�uX�3�$�D�^=\�.�"Y�?�4�h�=X�1,�<kX��Z�b=�t��M���L���1�#���{��F��w��c��z����[���f�������������=�q�D#GPZ�|Cod��Y/,������!2��A��uI�${aU�u�yk�U��.������:�v{������U�mb���p���������-�{���l0o?�>�xG���;|�����>P�x����3���
�������w����w�3D3�;�0a������%,�x��mk�xG,T���p���C��`���`�����?Z��!���JX&[����1s��#"��6t7f�w���X:��;��)��#2{�C�9��;��������x�C?d�HG \��t36w����E:5p�HG�^�0t�f�t�G�H��P��������o~�D���@����C����w�������my���a	��������L�#�n�%��q)0�E����>�(BwK^��J*dy������X^6���]�:��c��aq������R%��DQdh���������|�J���a(�7�w�����������2��I��URH�/6�(X���(f�^(D�A�J��,�����EO�j*Ix��XV+z�ZSI����y�
Y������v]O��x}F��M�p���g-���D��@g�0��o-�����e��d�am.�y��!h�#"Pac-��4Ac�0����d�1��^:���*�k����>����@U�$��i�
�0u4mo�g&Co�g���3�T5�����������|^�����|vq�b;�nyUGb����1r�>��Vo{6�8��������XF������@Q�D;��m�t��F?RD2��%g���T#�����Lm+�]$6��w�t��E3����l��Y�]~G�����	,�����{�)������H|�����	@~���Zwg���������F�����]�dc	h�
���%�%w�Z�v��>�^P`	������-���B�O�`��\q�9��hIzz�uF��YoK��$���:K�+������@!�?���'��8d�e�v�>
C�"�d���_h��"	�a�k�����/�����|�_�7T��Y')�����
�����J�������U%S�5�WVJ�?��f���pq
���>�>;�E	��~�/������R����5�����O���(b����)��x�-,����Wu7�Ox��8,���j�}J*����Q����S���?}��>8d�^��P��XO
&���We��O#���5c�JC!�h�NAZFR���H�z��4`P;��4���u����@d/b���{�[p��~��VDM�CZ�r4�����[�E�>L���>f�;f���l�����e���'4��;fS�Z
`�x�Z�.W�/-j��o������[X��'�(�PvI��:4������6�4s��0<��3&���z���@�������j���}��� R�v������N�������\���.��zi
A[�`E'm�3`�f�v�I����k)s4@v*�Pu��#����M������k�L8D�^ �f�7}����+��3D��x�#pk-���HwV*�"��10�.jx����_��1X�� �~�sT�sw6
Hp�����	Mc���&	
�����2���sE��Z�Q|�q��@)����UOo_�&4���o~T�p�.��M=��}�-<��MJ����.t��w�qB�qBgT,Y�H,���d���5Tlx����;U~�4����1���(�,:��:�/(���m8�2�����L�\[I��I�xd�)�YN�]�sS+�W"�M��u��!4��J|��8�b��^�������C�f��/��3m)�9K��+��r�$���,^[��0*vjS'����F��KC�Ri�Fi��&b����W���2�ww�k�Z�� ���x������e����Ty�V~�:R�E"4=�e3��1,[*?!')?|�D����B����>�3������F�]���6!�q6]���@���Z��_��j x�"�t���yER���J�r�-�E��(�C�E�0��ZQp�}3�/�^V��U����Do#}��hk�N_�?����|����!�>�t�2Y�����t����@�l���(���%e��G+�QQ�e��B"��������M
�+p��j���s��'��8Z�s��w�����>p�O�F��2��F�8���a��A�+|���)�U9�������N!��8�(�����7�$�,%�'S
�������U
"�iT�#�A�XO#|����p7nEk��,4Ua3�t�@%%@
@��B[!��[A����=Y��B|�m#����nza�,�Jf�aD��!�V���G�EW�Jj*�~zQ�*��r1"�!�������r��6�R���*l��E�Z.z�`r/���L��tOK�.���-�{mY�tX�����*a���Q�����@/=��X.��`VRS)6���V)���A��v9�-��ac-eYh��nb���^=�\#�E�F��9��/]�vK�Z�:��
��~j!��A������l�n5�����,����=�Q��;����xI��
xS�7[zg��%ld�5����Q�@��O
|����z�WP+��.���[�/�����!u���BAY�P�l��Hl�����z�����2q/f)����C$�Jb�lhdPE�S��l	Q�k����jl&jIQ��,�Z^����H�E��2z�r�P��k\,}�1�����6=�q��;A��'����Wx�����f�S�""9o>���I�%gsf2 9~l�W:^�M�t�g,f�T���r3<���6+�Jv���Qd�s�1=[L`#�i�%?~^|�����u"U�g�j��Z�8M�#5j��`J	��u]	��Z��*%�O-;%0��0��j
�����`c!���N
���I�����=��Z:L�"i��+]�8����v��Oi�oe��>0���j:���[�M�MB�#K���v��n3����~��C���6��k����5���2.\���������z:�����v\�D��z�;�-V�RT�{a;K���z��l�*���wlwb��4T�,e&JcH�	��
��)V���)LO�\3��1D��@���
B�Q����uyz!������Wd�VI��`��8���*.�"~K���U�KL����R�5.���t>$�����hR�<���#�I�6�gz�}U���!��*���9&�/;M����gh��k��������i �z��{ ���I1���������3��o+K��LEk����;�����i�
���:��v=>����(�4�*j�ki~��K�������W�0��������0�b�O�_~�:J�����Q)���Z<I:���E�~�V� ����:`z@�:ag��j(�Ml��0;:P+J�
�7���#��[:9�zXU�yd��7���d4�^n#t�<;A#WZ��9�.!q\��H�Z@�2!�P����R�Ym~[��m�����%�x����%��[B_iWViQ���0�U�@��@��_���m
R����4T����$w��7�����5�I,����#���?~����S��U���I�<&iBf�%TvK���d�F���AHC&d(�0M�s��
�3s�{�����,sOd���GTi!o��~Gl\��R����/)�m�����1?^�
b	����B���a|k�������V�%�kX�Qc�)*�GLo,�hw�]1ZP�����lJ�����\q�v���^{U4��F�����Q^��{>U�5/�F\���9��1*@�w%�MP�uk�	*�<�����e��f}����f����%������-���4MS�m��8�T�d$,��f�x���gK8
Kv��]Zl�@�w8�
2�\�Z\�Z���������s����n�MQs���kv��9���V�>K�'f�t�e~js��#�P����y6��z��D��k�lr�L\��$o�����(t��%��{�A&h�
��5�z�e�3q�S�x^�BA5K~/���)�E���Y��s�.��6;����%�����G���L��o������-�ZE;��t���X���X6�^#������q}�4���B���
O��%�~�sS{��n�c����9N��U[�dx�0l�"jjvM���
�;s8��r$JD���e�x 1^����d�As��x����-��z��Q�v#/�d=��nfOv��z�������Qj4��0!�6!K�w]���������0�\����b*|#�bvv��FA�,���
����J�A�]��M��u�����	4�(�������'��k;��:�G��t~��!u��� 'Op��bd4w ���$p�c��w��������G������/��cd������~~��1Xtl���Z��"���H1��y��v9n4�?��Z�����fb����w�)qV��Y������]����r��e��d���I����V��\~�T�%.+2v�@W���U1F�����iu������>�$�u�Z3���H����xy�cc��M8�������$���5���U�d�*�"����r�P�f<[�����u�xt�J���+��H�ZLp�����W�~Z`h0�U�����5�������Z��xo�����5�K�~���M��\�w+������x��x��[P4��
�0�!:�e�����Y�F�WHV�1�;��aae�����31�m3N���s�X�wm�O����LU������LU�m�����g�����
��x������]{T���`%#����&vT�;��O���F�����$�f�3Xuy?}�1���{��'�3�x]��O���
�.�H��:������K��@+f���n����*{��Q��E�WQ�
��s�<�O�bO���;�@�	l<����l"o}��~
V����p?���������������a�����6�d��T7�����>��S@0�o�>'�@0?���}��'�`~����\�O�\��>��@0?����r�5#��Tg\�S.���MGq��-zUY:����b�,�W�T��K=�7����o���*�5��~����
�j�X2�I��d�ns�d.�����7�������]\������A�~��+A��cq��cbFrL��}���@�[���L�>N��	$��KX/�^���7��fF��T,9���%���*h������|x��*/���R�����d�����J�@�zQ�6K���H�)���!D^�����y6Vm�T���%�,��PBn����b��Fp�q���L��4,��+�-�%�?d�N(�n��y+��{'����de�i����XrMW�<9�-�[�:s"���9��K��=3N��[vPB>%-�H�}����d���b�T�}=��E��q�Bm_#���T,9���Z���a�/]��<������i�Xr�i�67�z��P��y[��I����Xr�k�6�4��	$�:_��#G��[�N7t,��7\�Jz�[>��b�3;|x�F�� �]FVk�k�Yr�6�����.�&c�4]���B�>^�AK�}��k��^It,���d#s����D������z��&�0]�<5�0f�"�Xr��KXo#hX���
����R5�������C�xR5���]~�h*]���8�t����6��3'�.+Al*]�F0�D�>��\�z��h�����Z����L�����X����6��=���%�[���x+b�3��T���%�]����J�y����?��C����{+���L���������u�.����YIl����+��������o��Z��U��%�<���aY�;�F&e��/�n��zM�eB�����h����)Y2��������DG��>�����8�5�8�f)Q��8���7�80�a�V���@��:�u��c~G�A�E`h����[�,�*��$"�����7��A�5�"��*@���'�}�PO2E�{��e#o��
"�AK����V0�F]���z��U����J��e��\���5+_��,gE�KH�7;���P%B�|���'�z9K�����K�#M'��F��\�������oB���05�7f;�"e�������u/�H�,9o�q�����E�	Yr��4wV4+������T�1�
W��qM����6����b\5K�����fn��E�,�%�	Z��K�;)���9K�;���[P*x�n$���%���}�]��U�WmJ�������A`3�L�������Wh�U��%��"]��L���IK�c3Dp�^5j(���
R�d��lQ��5K���i��v���YS�d������T���c��_3m!g�
iM���5�l�h*f�fT��dy#X���>T�dx��}�S!cv�5K�w5�b��z�T,Y�Kc�d���-&5��c���f�\���Y5;��+��TDil�v��$���,�v%���)���
K�Y>\X���=��CM��i�f�X�	��,O g�^�(<#�0��-J��od�M;�LC��X���f��T�[��k:�L�j��5�0���rDF����AY�d���L���M�L��VR**�"�N(R����IY����[T�����	Y2.::�U��BG\xh��d�o1?!/��
�����?������1>`M��k���<[�p��!�X���������;��E���]�wc�{���l������6�|�����v��FSE�CR��kW���+1]��_�_���Y����p������	[~����yq�M���M��oE�
0N�������6c	+��h�n�X9���i��8���
+�����c�G��5v����.�,��f���E�Q$��� ��hy���)��4B��+�7���$I����������Wrz�O�v�q	3X���CND���R*��@&�?�HDT���7�"�$�Y!y��;��kQ��N�JKDx������B����A�bzX���n}w�,��D����Cf�	�%���x:�.�wW�.����������6�?8W}�<�}p������o`�jZ�<-#�@�D�����l��T��C�>�GW��|���H����#�m���qN��2��%�r�E��$/YJk+�#bk��_`Iy8���c���,,^�OD��4�?���`�R�g][`�5��BR{1���_�,>���E�\�W�V�����4���}��VE��������e�������0���|�aIXg�(���+
z������$��!���L([v��PIb��$[[����b*��/
-=����_Y�6$,_��\�Y~+�,��[�C����/��4![��*�9��8-�����l@5��CJ{��7�s�r+
0��a��������]�bBP�����������G�FfMG��$���9�3A����[P�;����nex�uT���pZ;�����X>!�!��M��J}�y1����d�������-�A�CO�2.bHNq�n�*��]�o��������H����}���%�9�C�����N���;;��������	��)�o���U���s?�8
���8>��X�k�r�_�_������2��f7��Fhg��g���i��U�����u�"����[������g�#'��N�2�t��zcq�9��T�'BN�1gCK���a�w�G���m����;z��k(NU�Y�P�C�����-G��������g�@�F�����'	Mg)�l��l�v-Td]{^P�
\P�K����z�L�$�Ha0=%Y�j���p����0R��!��Q=z�<���h�[�	�t���x�\46��������e����o��������_���q��-N�gOiU,@Q��n�xq��D_;?��s�����C��y��J��"����J6��)|�0����I�!!#
�] �4��{4�����6�L�A�eh(��B�FG���ZW����!vC�k����;�S����������`-h����j������b���2>�p<��a��tK�� �j|�D�����SOyq�����%)!������_�A����7hZ\}������)�zx��C���������/=����������	q2���<�oZB���y�����o���T��
�m9��8'b�`���,�8[�����j�|%2�pVH��E�L���a8������1,c��=]K��}���d�K8�j^K2't�*�Q�b'h�����z*���V���5U.|������5m���� 	"2I0��j0��������������]����4��g�������v��LL6�Y$���,t�Q����s�������4vXT���&@�jc�;�z��K�yMB)qHNP�+�z�W������"���Q@oS�R^�V�3��t����!�oo�I3�EU�������xV�n�?~0�R��}�5xJ���
}�vN�4����6����en�G��B�2ZHn�*��%T�����SU6������7�d]��Uc]
Z�
e]�]#-���2m]�W>Y�~u���E����	�w�aY:,ss��cRfN��}*X��=��g�xK���rK�A����:%eu[���p[��i��h�������Cz��9|���3����{��F�/z�-
��^����,@�4��v���w��{w�g{�ci!	��F ����s?���L �L�J�����B�L2~�������� ���AY�x����,��2h�:$�)�~�NQ�,,��IOHe�S�k��1�U�NVFJ lm* ���Wu����|�`����8%4����b�Qh�=8�	���uT���.�.�ZcaYU�����
�+=Q�Z���xq5���9��,�>@��i��$hl�����A���lj-3i���F�"H=��5�DLsw���#�~�UZ�*������=�
��b��pjt��X5Vp������p����7I)g-���`.a������\�vD�k�<m�����&*��:�u�����)"�D��y�>�)S^,x1���K��"Nm����d:�����h�4�B@�EG9`-�u:��;��1}�jk�����������L��d�%Q�_W
V]"��-aX���C��[*\��W��C���bM�Z��."wY�[���Es���:��tE;B���=Q�c�{�Eb�86i�i�ur���>yDGY�Z?����;�V��n�{���5��o���O�i��7���6@+���m �[����:�X��x�3�r����"-�����c�A5��nipn\�5.�/E�O��k��|�=9�e*��G��W����	�(�~2���[�G�h-��	wfI����
�)�3I\hL����ow'p����F�^"u���&�{�o/	�l�1�I�"I��[��tAq����:�"]�T���%�6[}4�D�VL�����X�P)#m56���
�$�)B���������`'��e�.���"�J��.T�V����/�"�E�����V�FS�P� 
�,��1�!�{N-�p�l�;����)GB9Y
'�:Y+{
'k,���~,�D��~�$B��W�����D�]������������r�T������#�3��5��Yq�]M�sM$���\Q���n��pI>X���R���]�|)��|�Z���I�j�w��UN)�M�Q��u^�^C����B���Z�����}=��!�?�
F��<K=/k�YGR�%�2�M�9��B�/�.�FF��0z��VWuo�"�����'����j�1����l���%OH+�����,` ���������.h���%���x=�q�M�S���[��qCD��c����\����+�g@YR
���3C��>��OQ�2���
��f
������������[?�4��!������~��\��y�R];
��81X(� .���4����!��~��"Or��EiH��o����m���V���a�'kj���Y��}�E�����
�k�/��o�<g3l�X� ��sz�8k�K�)�g��?�pg>��G���@��C�Cp�9�]���<Ej�iB��s���F?�&&n����333���ff���:,�����4���8,�J���g������4�R��������9
��
9'�f?���E��'j=B�!�V��Mz�������3���jv�5���0
��M��$�R�Y�J���u�>5�Y����*	�������=�U�h:L�����CU������3��<"~�`eum��Tk����/��8M�w��)��U�GCy��SR6i��A�O�J�����q��V���2K'�v�Ge����V�����C����J�������@���f��N?�f�����W�Fg4�<�����Y����mI�����i����oDFQr��V���93���_}�����W�3W�3�����3�gG��u�b)?�3�(����W��"�I�Ve�����q�sz_
�����)�;Po�Cl*s�uDg��G��d*Sh��4z��
B����Z����c�h�������5��G����GH;���I����E>����z�l�t�K7t�P�e���6�W����l� |������]�d��]��
%4��K�?[y;�5��T�sc��|���d�P�E+��K�u6�V��+�G��$Yg7/�w�tX<v;�6iw�+��
��knA2M���\���g������*r �1@,�j�Zck�
z$�{���~��J�U�����4�\P��uL�.��.�5��B����,���������(-�2f����q��{�=��FQ�hY��~��qP�;�[�0b
6E�#�6��6:��w����T�4:����	Th��t�|=��^n�c��db1H%[�J=h8��H+�Rz��I������P���K�v5���`~d��4j�x9�e�qs���W	F���f��!��'����p�Z;��5���h<����l����(��sP��n��u���>bc#8���XA����y������'@V	%x���6~
��(�����i%�,��vwIkn5����&�R]�ZQ�����~�$���@�Y���!��"�x����
�?'�[t�f/����	��4������5���E��c�Ug����,���7=���G�G��_X�0�v[�&ei��)�
���1�����
7��
��������mQ�����O��D�s��������Tc8S����K�7���w��x����������XFgZ<C�Tf���Hw+E�,�OB���O�<�gtG�������Bu{��EJ��<x\��j��3�H���cY ����hL���~F�C�8bM�ZQ�^����s�x�4x�D+�����tn����p�r%�*�hBr�������dA�?Y9nr�Y������>�T?$VNP��O�GIz�>*��J���MA-9��!���,�e'X-�k#�[:I���K �{����}o�U'Y��>�wqJN�Q*���$U���X���zl�������T��e�;]�QCl�g�����O�V�
�tY-:�
�PN�)7:VG��2d���urj�
�l�q�m��6<�B��]�z,������x�p
�����Z��5��m`@y�\U��i,�s(��������c!L�����V�qu���.?�j���[����Vt��)P��������f��8��
i]�!R3Q&sz�n����~�%�+�<\��mN.+"/��m�\�D���d��I��a��Q;���PIZ��IQ�e���g?�>���Ri��y"K��M�gY�����z�@��S��1��9�Wh: F�X��<��������V�����j���%Z�'J�t|aZ5�a���!�iu�y�]5i�ZS������2��^�yG
��!R[�}+�:�e�9�������p����59�#�-�l�R���*-�J�d����/	�6G%xq��R��#T.8*���G�tx*/���n�����/�KM?�P�qTC=*=�@
�������D'g��Wtp�VFP~�B'G���e������|��5��A�0�_o9��������`
?�n�<�SC��?�W���HX��AL��,e���%c?~�:���tbg���U���].�����6:n�r-��zn��2
&�Rl��lXj{�p�+	Vu��x"/Kz�8s�d=�u]9g�*)�|�S��z8���p��B�B���c�%�C�L}
u�L���)��HYw���q������	�~���������8����8F����>�L|��XWg��;���+�9��Fp�Jc��EA��4t��6��~���	i�s"��T�b�\mJA�i�>���{�0QL�����)E
�����5�IE�Q���;�T��w�]�
�Q�*�i�Y�'���<MhU#��h�-�p�2�#Zq=(�w�"�FTz�P<v���~|�M�]�a��A[Zo�s�S����M���������|B�T	gp����$��p���c��p�5�����j ^&G&�Qd�+�]��B�D�1-������Hw	5�k��Z�g����,��O��F���{���a�t��gw�6O�.�.\�p���T��i�.b���3�n��W������[�B\W���*�a����%O7U{��c]��.�in�C�PoGK�Y+#i^������R������9������k�b�Q=X����@�8�87�Zi��Ynz��0�*F@<���a�5]�������;�fP{��5�:���H�\�r����+�"Uw��5k^.a_�T�ul���u��y!Ru�:]���z�n�����DIE}\��^�F���Y!�z��]E���A��"��l�"[�G���K#=b��+Mt���@��\*�!X��q���,"���\�U�c�KMHE�
�����Y
��|��_�Nz����|W"|v�z��6���a��\i�Z�~���N�T`F6e�
�0���y�K��Q�j��������}�_&�,��\�����k���`�T��=�q��{��4���T���'������WH�[��%jVX�lF{D[�1�R�>�?A8���)n&�;�Pw����4S0N� ���_4��t�;��GW^t���W�I[�C"�ae�m5����*��+��_���QTm*X
Q���,Mf�����#Nr����Kqc
�u��)$=�LP_`{��1�Q5�eS�����H�Uc�#������H��y��\4�`w�%��iZ�a�lH�P�N�H�*���?��Xh��R1���jM�Uo��l����~�X���.
�u���������U�t
���S����E��W6996���ODsvTd����U��G��hUeD�?�6'�e71��(�g=�Jq
RF����M�ga��K�9�`t���C0V�O��N��
s�D�,T_*Dk<K6Y>��.
lp��q��=�s�x�4X���Wo4t�k#�m)U�� �UGA�9X'F�,���]G��Wh����(�j&��+:|Sy�c���>�����L��������x"-�Y��j�������x,���(!.�>�WF���]UmpZ�=�!�3�V����������� 6���X���`���jl��#����m���,���v��2�o��@���<�ev��'e���Ui����a����:"�0��X����s����\/L�c�O�eU
���C�����e���������k�;%1�P�C��'t�!��j��q���Gd�}B�uyB�@�����z���}:�]��=3����������+���v���X����Z=���Z�K�(�v/L�(u����=��~�{�e*bik�/�l�	��P�y�#��of���5=���
��o�.�xf�j'z��*�z&;��0bBW��#�\�T��o��4���jR(��Om��b� ���';��;����~���By��+�._���.�Z�����&�
2�D�9���R���p���t�G���@|N�\o��i������Yd�RZ:}p���w�q@y���d���,�#���0)��lSY�r���r��~Dlc���[6_y5P����_7lS������5hlGY�|0*�
eED�"������vEh���6��0���2[��L��;58�a2�-Vex��dg�^��(�+{Z����V��U>X���%[`�XY)_�����j{�Yq�+�S�����6H��<��9�,6���4�8��H���*VG�U�����
G�e���'v��75o��j������V6.+u)hq�L><%=o)/W��H98`_�C�,���:J���}N��,�%�YL�_�����0�iR���p��d�M"2������h-�Q\�,@MO+���@/n����9��������[������\!�NJz�]�:�7_a�A�"��3
�`L�w�V�|M�'!��H_o��a����t}`9������j$���HE�]�z��K�@1"�����:k�>�nkH��)��Kd<tq$���dC��OI��$��HK���~6��6
O�}�������!TL�G��
���H\��t��3��g�?���Xir���b8�Z��m�(��Dn���C��QK�s��PK+����WyBAw�u���:}�.�T�����,�,M�)��|�T/h0�z�fh����R� %3��!_���"�?�&���*�h����U42	���>��6�wQ��[$�A���4P�JDdK��c����h�/P�����o��V��g�]i\v�
��C�����X���cG�����FK�e���0usQiI�og�ry��`t�fl�����;��-)��8��	��42Y�\^(��'�
�	��S@�?�P�v&�	��Z���"��;�DX��� ���9�2y<���D(,�d��K����T�)���cQ:cPb��
�l��e�8�Y''�l�q��q���\Z���l�A������qxFHhb�8�`0V�.��(D8���w���bj��C���,�7cz�I�����`�Fu(�@�0c��A���#�q��������0�R�G�%������0��tF��Q}��s8�G����p�O|�Q}��n���$N�]������+�~���-Eu�S?� �(�	���h�pl�^E��DOa��9��z{4��)��� �^��J��a������!��9.�������V��R���f���ESw oK�q0=�G���
K�<���hi��b�,��4��F'�"��*������B��������L�`���������-.-m#�!2k2|C�6]��
����O;H;�����i{V@�_8:�Poe|�����2P,�7��s�@L��A_�q�s��kZ����>$l��f�|�=�)� S�m���J ���GWC/nKa����G3�����J+ �uAg2
��F�u����)�k�UG�=��jT��N��#{lv�&J+����0l�[q����H�W5��S�2ai3\7���rz}���:l*���]�)9��8��;��W���uW-�{�����-�Q�T�r_]�m��h@����!�����o���K�t@�D��p�
��
�F���t*���%#YQw�V����V�9��\����t��m�q��x�n���������,��I0�v�)?�'z�Lz�)x`9�O~��l�[�+e&�r�QZ5���j����g�k���N�c�F�sve��v��+^�HT���K^�����Z����S��������g���[�EE��*d��)V�����x����r�:�}����6�oL!VT���]u�a��KMr%y���xTX5��P��5�>�\6-	�*�V�@�:����C��PTf��J��I����6�VTb�����.��=A�U�����!�N��AH<�q�Q"�n�z����v�Z�rjb����Ic��D�c�����S��s�JmA���:N��!3��O��V��n�c���d������j����f�>�R��O�u�]"5�-�j����,&>��f
:���u�\s�����@�6&�0�v
�e������^{���i&m�N�����'P������	[:�&������}�<}�����h�]H�s�F-��#F(���W����8~L5:t��<cd41�Ar��"$���|������O���6���>h)�$�xr�M�����2��`}�"��Z�����W��yLN�
��~F���b�+�������Wr���X?���
� �*:�0��%�}�%��^�2��Q�k���*@�`��J�#Wq�^w��^7���7���S�����J��L��YE��3QhM���<]�&����$$�nv"����Y��-
%4uj)����b���n?we[u��8O��2�b���J�
���9�yl�������z�t�L��S�]%�fe��O��J��#���Q�)�}-v�D�!E��"�:�EG]��|�
i�_�8%O9j�9��2��[�+S$�.�� �L���&#��${�����mG
0$Z�@��B[&;�8��q
B��/H����F�&�T4�L��F�ez25�%-���p125��2�^]L�����3q��������-�����i���f����4��9&���q������sh�������� ��G��h�tYj�I}�����2��E�}PvBpm�,��L��HI����!]J�MJ�~�0�Z�.Us�4��4G�Ei�:��hv�-�ph�w�A��XVY����O�����[3Ms��^��/{�,�e~�b�T�3�����Sb���X�Ud��4�kyr�A\%
�2E�j�h[9j�N�(�MZ&�Zee�����m%��UF*�d"��X�q�i�����:�������Ug��'��z��D������jK�q{�t���Y�o�~�9����h{8�9=���ss�]	��������t��'�V�03ml��5)��	�/zp���=+(���)f���As����I9�p��/�����ic�U�4<~�- �M
�pJ�<�]��_����x��u%�-���
�f;7�����|A
��\q�2Oj���OF~�$���]H�"�,�O�m�K��u	n��5.�5[S�(��e�s@�w��2=x���0���`�1H��)�A5�l��� �6���pkn��n�	!�%:@��' ?3��,���^�'�%���v�4������ ��������� \����#$�Z���*3���>��5=tE-9.������]�`>�Acj��$q
�1�"L��1���2���T��	0�'��p:�6��*l�q�����&L{
o��D
0+;rf��@T=MU~�Z�E��:\A���C��`�y��Mj1]�����,�E.�w�9���q\+�h���1������U�v��.���4�Y�d��>=GA&u	�,4�m�6�����XSZ3(B��:��� B5O�Bm��a�U�y^���v`e��'V�����^��
!��9z9B5O�Bq4���>�?�G)�V�	���4|����<�����<��<,f�B�*����j��.>��Y������r�H�5-"�y���pa�5�#��i�����i'	�n���Y�d�k&_rI�Y48�x?#�rb*9YY��p>,#���h��:���F>x�AYK�,�5	*g�x�v
�w��J�YAw��?G��.H����dF��T����0����QU�M����,��F2�t��l��5��V,*X��OAz&��� J�~����mp��W��C2�d`�g8#��r�.C�fY�S�b�R��b���UK�p��%�t�r?%�f��qFL�*O��_e;�@��&9k�kh<H�%rR�vpg����u�|L�l?�}���Q!k�����-!s\���<@k��� }�����)���x�|.C����9N���3!��	R9{��.a�U�)5���~v��+�O�����x5&���\�]�K&�AZ�G�� �0��;4�$U[������l�1T���8�H�����sm,���!�n��� ?��)Z����w�Di)�6��=@C�:�qF�	��CV�P<��@a#���S���qzc����oh����P���V�_&A���[e'��;�e�t�)#8<m���z� -�AO��~�t�����,�@[jC��������x�f��X�Ig���sQ�w^g�L9I;:��I%��DH�p�!����1����7��6��PZ5
��8�a��#T{|5���V��"L��������T�,�}��\������aNJ�I�� ^�����NJ�4�?`��z�}�R�6�)+�rUasm�#����������zT�����l�D�������NE��4�����nE1�\�h89������,i
�
O�i��Fx�b��3j���� cb H.%Yh�FMr��~zi�Mr&� ���@��|:]6��S@��������j�Oc����]�@E� �#=����Qd�PmuNhP�����������Yxt��J����]X�����yi�/$-��2����q�w�Z��zlTU;�������_�o����k4�
,n�d�~u�	,nDN��4�O����SZ4�K�����K�����<E4�K��M�E=(z����3h=a�yX�Ku�fq���4��l1_vA�c{�d[����V7*�P���t��+z7��w�-LG-mJ�Vn~��s
�xc�%]J��Y�Za�GYe��.�n��4<�^�^lL�`n�;�a��XQ�`��a�b[Z�.��}��^N+�������(
`!
���p{K��]����#������t/n�.�u$�{2�d��.��U(nx?��Yol!$hK�V����T����A����np�.bit�.=n �.����]z�����
!Q����!�pA��^z�X}��������O��bTW=������c��c_T���6�
0���4�
�����~����J=7kv"T�yU���g`����qiC*��
����Gu���e�j*ht@+z:���i������j��v���w��/h*���#��� �.n�������Z�p�Ig|�MM�2nmTS����a�[���tk�s=� R�����)x���
��+b�= dA�H�[�w!�|�>~r
R?O��R�P`��|�<J?N�p�G:���{�
D�O%���!�1���c�_WH���Q�����]�k�D~��m��v�
�&C�3������T+hQ,V��U���������MU�k�����������
io1�A�9��LS�Q�u��r�:X���r����:��4�9p��m69'yU@ls/�F�n���N:,��>�4DW6N8s?�BTdS���#p����M#pd�oS�]��*�F���������-�k�����lq�=?�EB���B�:o��c�#����������u0��Zx������J"bN6��E"��658�8v�cJH��QefKS>K]�8D>�450�`�6�����f��L�9�����S�h9����"��DMv��h
������"N	�5����B�����2zB�\���@'a�����yd'A�/���f���8��+*�
�����`
/�YDF�,�#AR���Og�$�og;����l�}	���	��<��bP����r��	�0�e�V�l
$P^�J���Pi*�q��d�\���DH35�� M�XI��j!�S]������9�m��L�{�&LS7f@������������E�<�B��Z�2 �S�3]�Q�d��A�)�!�2`Q<j'�Q����Ne��l��i�Y&���������_���EE����������F{�X?����q�^`�ip\�8%�
�4����6I2��#qb{�i�k8�W����]=�YC�q�8'2t��`�j����s8J>x�����xg|�3A��`����\B���/H!��Z�KAa�� :���O�M�P�����;�����^��\����4�w�=^(����r���%p�j8/�g�M^�=��}GC����5��w4D�N�[2g,u�.��S�KH���ne��Do.�|9����0����h��/�� ����K������N���<q����6l���[�f�S &�������h/g��m>:�E�e-\������0?��&o��9��8py�&kzR�,�
���O��GI.����}%B��D�O��3^s�X�+TB��{14R;0
��b��2��mYs��-��C#k����.$�D�B�]0��#A����\������Hz�M�`�F��Ce�GoJA��49
f�Y�2S-����^�P
��(4�C���k�G����MIr��ezb�3k	���T*SK�PK�P��):`�
������'��S!FMt��"vx7���3H�%��8�k%~J�[$� qJ�r�����Z�xB��K ��L?e����}���NF����I8�L,�z�3aw^q�{4Yowf����R�{Y
�x�����]�B)GbA��[���b�|>�?ji������?`�����1e����e����*���'���3�f�	��cg�D����"K��������{[������0&zqI���9���hZg(�"~����`]����1�6��
�H�^�E(��=F��kpr���A���g�a
9�%qQ-��9�Vqe�>T!c>�1��v�6����mr��G@nz��C�1_:|'r��w4yxx8�S��[�Q��kV]�����?�m��h*m�����5K������?��)��x��t-�P�~e�
>�	S�K�;3�l]�J�@�X�������K�C�#lsR��� 74�9�>���}������|XEiVr?AH�"W:$(���l{E&KL/E\��iH\B����c�t9R������f����9������FESc��<���22����S`��!-�l��>j-�2�']<�mn,��{��.e�`�]���]2��{sO?f�:m�O����V�E��rLP��?����Y��M"���9���h�A��x1U9�jj�KH�]��k�w��C��Mj�W�����!�H������J$Q�SB n���%.�w"pKM���x��P��"&�L>��s�Z�����1~��d����ps���N<��mD���Z�,t�k�����%Q#L;��jJ.���x�[5(oI4�/<*�R���8B�za����	��,S���4a�:*@+�k����j�
o���i�$��99gu�U���F��7��DYE�`��b�����;R��������4=�4����d7%����#�t9���}i���3�8>�"R��U~7��v_5��L�����A���4��8*�G���4���"O�w��<��:]��bctY��x�[������%kw�]�B<N�"C�x#����:��5�Z%QzD��dt2������p% 0Ai����@�������I���)!s�V%���a��Mi���)�P�s�T��vlZ'��iK��*3dD��cPJ�jNY�C'�<��������'D��k
����&�fJp-���Ce��P���( dzy��������I(;G>�>�OSt��2y���"mP��h�/Y��?����|8�s����W+�n�('2�M*�\O���tH�]P���<tt��2����1�s:��:n�����v��A:��*���$�CZ��^��n���'k�OS�A����L�����'���)��)�����6�O�8�<=	�6S��:���.��2�2}_@��,X�t�'d����Y��6�A|>>��/�4������6�=I���>5n���������x�=��U�<�D7�5t8������CB���X�q	L �4�&)\�	�@��.�Ws����y-�[z���V���9.j��i%&����|�O�d����:��g���^8$XR�x?C���(��d/R,�Fi��-���+	����/]�)����I�2Z�J��?Dx�K�8�Ei}����J�gA���� ?_Z�m�+=^T=�d�G+��b���Nir���p�d�	!��0���g���
���e\S��2/�6�h��J��.����v�������a��G����N����^����n�,"��O�z���U/SJkt�����)��e\i���6;kZ����9�r����z�R�F�(���m��)���L����eJe1FQ��L�p�����5I��&\������a�%e����!/�b_���;�iF0�h��EA����H
�Rv
�������.f�P]�a���&#x�g40g�.�w��%��U��.�0O5�M>�[��g_����]'��lG|��Aj��[�T,���48&p_4�g-"�X�C�OK	���G"�f���yS�Qv�5M6V�5A�=~/�S-<�^w�	7�>5[���#/�s�i�/A�)PcACG#Z����/����UZ��6J<������&�+��f�k���&l.\q����1�)�-�U�����?K n�y@����x�������f���aM��+�N�qC��\	S`B��(*ao�.�x#����V�g�I(�D��&D��	"�x_�1Y�M����#Q���ym�@D���a��:�}����9����U|�DUQv��g^��I����^C���:���,�C�u����Qmn���[?������ �5W�bN�}^��������W/���c��e	[y��-��r���V`�H�.d�Ug��6�~����XZ��x��fw&iD��s�Mt�Ko`�t�pO��I���JG����8���wk��=p��W�Z[6��n���I������}�N�{�afD���z��z��>3K���/h}�W��va��3F����W�~qb��1��5��jk��=�P2�Y���n]{��1����A�Ci}Y��l�o?�O�*����	����}�V����s�vw��.���#��3V�GK�E�����G�r��k?
���L�2���`�!��u�F$��#���A��K<���E!x}e��Q |�[��$:���;���s�^�)1�b&�=��^�a]r�yX��;�]���A�>����@��(]��JjZA[��9�G?&��T�Z� �-���Q��e�p]�P���b�T�c%m��k\�,A��Z3}gW�Y���l8�:�TE�fb��.lW�j3}�cu���~ G
�A*���5#SY������N�'�P�0���m��Q���*�:N�?�V�����+a����~�i�2��@�
�T
 ���l�b;�
31H���E�DOj�����lz>��nqF��~A/h���)UC�
��3b��5�l]�L��������;�e��AG)����7^�����8@�d|��/�O����&����8+<��]�o��`�g`w����y��@��3���p��p���D0�J���O8��-�Cy�t�aM
b���3��l�fB��>���f���0�F�]�-��|K��[���56J���A��}s�\�77����6Gw�����Z��/����6����^���7�����WJIA,�������6�te ���j�)�9�I�6
O���et�	����y�
�!�Ym~ FS��~�5���7_|��?�?������pi���vAJ� ��s��X���^�����"�����L_l�Z�O�e����RW_��Tu��7���3��`��.�a���M+XZ�'���W����������i�������S����))�j���/�.�
i��lU��x�Q���9o����N2�H#Nr�MdGX�&��8��[�`�O77���"��%������f.�G�w���i���1y��������!����p���~����h���b�y������`^T�L�L�B����1��������Z��z���%�"\�'"_����w����n�3���
�$��2�|w�%������K'�Y�d�6����X���j,�3V���������9���,���u�-���|=���	(u��Iq�KS��0����N;)(�����.����f�Yn�5gL��n*��1�
��1�*Y6kF����s9+������7�����$�T,sWR�+(��bj����GF�@vEB���+�i�����/��~����Wo�������7����H�$�����{��fe���M����.P�{�Kz:\Q��t3�����jt������-��w�EU���cn\g���Y�����*z���S1�r��]*y�\�?Tc*��|�YCidJb:�-1 77���mWQ�����0����~�J���n+������]��]�G�-f�C2���<��P�0/����A���^
��V_I�5��1�L�j�����z�}���f��^���'r@���)�/�%�?�n���3||�Rl����Q����P�hQ���8��E�����D�����q����PmF��n�D���o!("���Y���/��[�.��d��P���#E�8��������m�����������A��<�vZ��P�i��������2	�J��{M���
�
�\�?F�>���p�SIGhA�'��3����f�������*5]a�������L�3�L���v��RL[6���9�-���s%m���SUj%���V�%�S����z��+�VK-�w���:;m�mtue��b�Z��9���M�e���[|����u����2;8v��
F!�������_���������~����/��. �*�����?�.���l!wv���}����s2�"so�O��q���|\A�������jt�������[7X�bWqa�[O��X~�+jF���(��Y���Z1�Vd�JB�^T��f�7���������W5��M�npQ;�t�e��\�?V]~�������o����\��+��P�m����<H��_����[Yc)���	]���C�_f������>����n,T^������>~X�x��/�~T_��q�OJv�,�v��c�nn��~g���-`�R���@��j�a~�v�Z)����6���������_���F���p����������b'�L����N{:�
X}����N_����W`�W`�W������������j�b5{���h�^�V���U�g@���;�AzL�pB��������on��!���@�^�7��b�������{6��i�8�}�4k|!*�/�R��
��]�����'8�8h������7�:�����>%��U�?�8g�%�q�+����zxj/#�>'���������Z���=6�(����
�������[n�+O=���������(k�a+~��������T�5kA�����)�n	\`'l�,�����7�`�W��b|�V��A��;��.��	l��G���C��~b��/��:����i:�=���{-�QX��Qcd�����t\o�7W5k/�3!\Qm#����������w�ZH�fH�/�����:'���������#���'���X�����Gz���@I�o
�ED��s��!N��cE�\��>���Q'�a���[4 %���SE%�##�}�@��� m��|	e�sz����/hS�GAc�k�O����T������0?�.@~|�����?��0���t�q�{q�sn�����f��\g�W3��
��������u���R�����q���B��&���$�DfR������+y)<6@��|�M3xM�Y�g(�
pu�D���)>�Rzt�,!��}��W��������w�@�$��~F��<2�M�sV�
���y���	zk����@&��_�������/x�&Ir�����p����i\��d'�t�gW�z�<we��1��(�s�,���1�A�8m4��O�;
�w����y��n���'u�i��P=����U������j���}�������}M��9�x,3=��~3��cO ���)$DdX �o�<q�B�^����p����1 Z|���p�l��nT����/�#X��`]�DS��>�H��,���M�_~#Nx!����M.�8���������LjK	�A���B{����P���7(=�7!�T$��`���	F`r�k�>���qI��2\���hfpWb�qp���eSpK�/��>��|����������	�7-1�N�!���'@��N��GX�a����� �K�����Wo>.)Pk.jR�V����6w�e�B�4��fq�2Mh�6i�69g':1��3��i1����@�aH��y�����QUap��4�TB�k�H���c������)3=~�B���/>���kY�6E�h�x!����)�C�(p.F ���Y����f�>���������]�ip8���P��4X
��O��="h�<7yCH�>
�)����������Y	<���p��q��
�i�!(N���7B���	n��Q3N�(<Bx8��1d~|��G&DG����#����c-!�/d�w���B�����H|�����k������h,
���#:�����\��m�>t$�9��)����k�tM�3f83hQ�t��a��""=^�9�bCM|�%�w ����Txx�q���)�{�~���,�M��D@�7g��8l`Kl��(iFA>m�qfF�z �h���R����
�16��������
�m�hX~(z�tc!tc��� ��B{^���w��s���D��4d�2�iq���N�H�7���F���,<������N�p�����Z������'���O�P�"x�u�Io#�0�k���oZ�V�B+��@�"��@��5�Ru2����4�9����z2���0�*��q��F���wSh||>r�d��&�;�����G��M�(���M$���@8���������������{�BH/.��#Ur6�j�B���
#V~��u��U�~z���j��o������!�>��0�c	�~����~4p	� O��C�Z�t!j����Eq���X����WX��J�g�����}3����5l�@�����t��gh��fjJF`������/q�������R�;���LU�5
�����_�,)����)�,��$�-���m��Mf�����Wo^��@��/�����pJ�&2�b���Sj_1���+XS�r:���m�����^������^~@���L�Ek���X�����/�wo�$��{����N���z����9�W%o��8�<��hy����Yv�r��C�z�DQ^�6�|�����?���
:�����N�+n�yjd�CsU��Z�����K~���u�}lY��N��{6�n���/��E�{�wZ����+�(\L"c`R�V6:��g�7��8��5Pq����������C�bk��U�W��g�����
T5���d�.��C�E-p�n���(��h����i`x���+ �N�9;�V��/�������[���c����+,����(;x����A�vKr�M���MSv�?��&t�\��Lf��=���Rtl�A��E����l��~��P��F����LXS#�s=_7��~) �b�4X|=��_zl�����E��EE��&#K*�����#��P����u�e`b��Z+�&���o���@; <M����������
f"[�\�\l@?��0����{��G�>Mh�^��m�E���e��}`�	����Nt���x��SX��'�cB|>nz�)(���G��4�K����������X��XV����K�Ftl>R ��q��������p�����E�n���M�~��1���,��y0�����h���e[���qx_�I�o��1���d��v�=����'
")>�Y�(*��PT��=���h$h*���P�����LY�#�������p@�����old���Y�T5ps�=�-��m��O#X��)����zV�Bc��"��jo.\���p��8��b�k������z^'x��e���=�8QQC���}����0�I��<G�m�n��i�D�-q�7H��q����	>�
|�d�e�}�l��f���Y��x�����LUM�P��t(.�������
��W8��8xh�F�I��������o<P��]9f�<&gHc��n���n���d��+#+�x���t�0�(�j�>�}��tb�DW��o��.mio�!\��
��x,�3�)>�0������3���/x-K�]
�|���`'0	����m�{��<����x*%��|`�R����Q��w�o���~�if�&Y^|;3���~�������h]!Z��~[�R�5������yd���bo9�@������o"��xEeJ������wY[\������4��K^{�5�]N���ZL=Xo�����Uk�O�^�_���9���Ho=I�h��t/�a"���Vv^��Z�����
'n�?8��}�5�M�O����E�u�gE�����Q[;������g����
��%��O��
'2���O��E���	���H��n��.?�T�������������N�I3`kz�R������Z����@��:W��c�IG�{5b�xH2��F��H�]�����O�������^	�=-3�;�C�K����q�cUi�������*�����K<������*��5!��'`��}�w�OM.|p_\�����8r���{�*��wG�k���nj���xq�tH��u���&�]m_�n��-cU`�*`�X�-:j����x�c-��!R%�r�1�sOE[Zb��x�cc	�P�w�	������Q��:�l���Rn/��@1}����$�n�,�#�iQ���y?�����?�Y�-��D��?����(���{A�(�O1nl<!����S��?����O�d�9������*OH/�X3G��W�D����K��-=]�O�ey/��x!/>||������!\r�a�7_��R�obN'��|9]���2�}T�]9�oxF/=36��>�������?����l����2xp@�v�D���(_�<&{D��g����K�u�I|-dSq��S{��g�T���Fp���D�Y�:�&?�>��,> ��i����� �;� nt�DG�xl���cEG��q�#�O���T��G!�8Q�'�zh&��Bk�������{�����r�x�����
��O%k���?���$��a����k�����?��O���&.[�KZ���������O���e��>+v �O;�3��TB�����/'fz�w��)t��aj�~�����.F>�;���m�	�������9�o��oI,�y�;�{KI�[��^�g�]o`�������u���Lt������[[���
�P{f�v��"����O%���D��������j��s���:���p	�����Z���]jm:*pb�������3-�Hk�t�Fx���������^\"�}���������]	WW�����Y���q��]��jt�q�����L�R0�+.�af����%�Kw��C�De��L������M(Y]�[C��kBa�������NCv��<T���Y0�Q'����R�'�3������D,��-�R�u1Gtv[e`'���k��k�����lV~M�����c1u-�F����H�5c�I�G����?���*B��m{�%��}h�m����LO�K���rX.\�i�b2��j�@&�4�&��6�8fL_���C6��H��������WW��R����O/���q�L�O'f^tH����fI�^��0��e��A��.O��u��A�2���4�x~���_^����]e�5.�) w?�3�!c�
�P,S\����m��eLD�����W�Tn��\�F���p�/&��h<Cw�OYS����?��5�+��M9����)�E
�xb����
��@�7�y�6Q�}���*)�E����sj W|�
��"�qy����s�]b</�������8�4�"�yY���G����a���&����PZ������U�N�Y����!�� Ff���	B��$�;�C�&�":R�+jPt����c���Aoj�{��]n2t�E�q�O��C
��V��,?2���o��4���5�C�����(�/e1�-<f_�M���[�i���0@��2�����d_%)@��h<t��Xo���2���B�1�������-���[�P��B���2@�HI��j?���������d��^_�����R2)obi c�x�Q
�iD���������A�����PE��0P��au�C*(��ae�,����|i������\Hu�Uf����E���"�<����.��C|�����o��"����I�E%+2����a���8�!��K��3zAE��)%wa�`e"��l�t�"k���rCl[?0e�Q��!U ���p�W�S��$4��jx?��c���A��U�5A���p�;(�_�A���)�����J���y�������o?�|��B�����g���6�����=e���T����i-~(���i���g�{�4X{k��)�Q�����KUR?���^���>3T_|�����<�<# ����o�S5���.
\����&��d8h!����n�� �i�m��@&��K��O:����M� $����.{�+z}v��u!��F�y,qq�������{�x�SF��T��7c�OS�A����/���j	��3/�S����2��*Q~s��?e�I� k�X�+�y�������A���X�EF�"IV\���h��0��>:�Y�)=%=e�[��
����H������;����p��':`�c��~��S$4;$Kk��[���G��	�$Xv&K���VO��F�w���x�����d��W��u�iK�I��H�K��h	`5R�f�@y�3��`�)��,�!5gr�m�<ihG{���y���#�h�]HEA$t��aK(��F9 �wg��b?��J��
���;��������b/u`�,��
,�rX�j9��&����ca��S�w�5:Ze6u�v����_������j
��%��&���~F*�4�:�g����oIM��s���yb07�$:�lfl6fh'>���s�3:|����	�8��Q�H~���|�[4�<��gu�"OQp,���e���?_W��I����aj���LU�i8�2 �3���Q�QYH3��<Cg�6��cBR!N>���f	�2��2�n�]���`u	3�`��m��,�y�9���62�=G~jla����2��vt����Z�,k�=fF;n�����,K)�RL��m#R����hf��t����/-�-k��D�����<F�e�d�=�8�������f&O��L����
U���s(�r�����
oX�9�AB�GiC�����,������@U��4F�	��v8P+A�]�������������=;���o�����e�dB��^�/D�d��F1+��%�q�r�����h�'�%���wd0Xk�[�T��I���}��2%������|�A��Y	��4�	���7?�������>���RK����`����Tr�U�y1��WA�s�~u�
�:K��<"9������e����p�4��o�=����������{����zC����g���4���|����4?'$�+����+]�gT�������q�D��WA�]����iR�`3<N��7?��F@��Rz�~���eN��@0�q$����y�����8h=v���?j���D�G���(^����/��?qP�d!�-�����(�MF��?�$@���&�q�lW�����|�<���V�	Y_d�k���A&OG�&<~��.������������a�����[�N���aM&�����N����56j����U��e������\:����������-~��7�(���w��j�4���}���j��X����/?�������!�7���Sdd�4<���'����Ld�aDc�Bp�L�oHaV;���������_�z�5�3��0nd7_|��?�?�������1����E��IvxG������g���n
,�S���,y�C.c��T
�XZ��Z��l�[wa�����B�\!P{>��o�'���k���$��<�?}�a��-2�����H�):�G��X��k��)N(��69���R*����s�|2\�������YJ��@J-Cu�����J��+������_�?�}���38�;C�3�4y��@���uv������`!��/��f��������������>���S2���
0009-Replace-oids-with-human-readable-names_v3.patch.tar.gzapplication/x-gzip; name=0009-Replace-oids-with-human-readable-names_v3.patch.tar.gzDownload
�O2Z��{�#��'����h�Z���*����zjf�7����$�;���6&�E�I������>}����p�"����d0���8�\.���_�m}��.�?��O��^�7��s��m��q�\_��!{��i�������r�����,��r����(�E��I��E��e�fI�_K["��^/������OG�{�������������O��j�~X���X=�i�]�uQde�/W�*+WY�>l�j�o������")�����-�V��:�_/������|9���o��=��}|z���������v���^�����"�����_�XI��"��2]|�,��w|}�s�m~��������],���.F-]tZ���t�k�����^K������������b\4���v�l��������X����rW^l���rY<�����r�8���Ms:��>n���}���9�������V����Y�;�K=���������>6CY�mC�kq�/������[\��������?�e����������-������Q�j�M������^����w?/U�ZD��vsi�E��D��O/���r��}?]����&��o�Q�y_CE���2��"��:��]��U�,���$�ys|���-�"I{�j��?���~�^��-��;��s����t�|����g��P�����n������7����Lo��5�%��a����^m��"i]k�wjefy�6�����}~�,�����?�[���Cs����M�T�[q]�-����q�zh&��^I���?�-~������\��n���}J�������9��r0����h?m����e����{������B`fR1���\� ����T1��0{�~D;t��(�O����������W[�O�����O(	{>I���PR��|��o��������L%�(�)2g��()rD��13���~$�D]�A0e��V��>7}REsJ���G#$�>e��	����F_1�tI�OR���~I)I���=h@�mtII�-C�����2[~RO+J���G#$,?e��	�����^��g��~m��$���rxo�F(H�[�l(L�'��[��y�~��C�=.�j�q�{�K����O������������������c������c�<&���2�1}`J�QF��0�h|��G#$��~L���{QI���Q{HIE*�=)������+��)I��������!(�G�{4B����Q����w��^g�K������S���i5=@af2���0s���P����D
l}�,,�
��4b�q	U����X|\B��5|��������a}R���D��-��+!��ZU!@�^i�S�`����z�����(�GY~4B����Q����|�������ZJ�����9��x9�Pm�	�{�Y<
S��� ���:���g��sN4e��	���G}4B��5�xC��i��t$����j��\QZ�Z"�i�)i�*1���03����f.����0���3�ooL�����/������w4"`��x�1G#F��L��L8-%�+�+)�H���������Ro�LPI�Y�7b&f
��b&h@9f�@%iD%itf�~y�p����q4"`��x�G#f���{��m{c��:��3!T����Un�mba��qn�;Y�r�������aS��s���$D���%�{D���+w���}�G)���-����oQ
���b����{y<�6�.%����SI��`'����s�y���1���Pe�c�K��������C������M�� �����p;��w��r��B73-p+3�B72-pfVr:p���G�1����z9 �q��@��!�%���E��IP�Y5�������i5>""��GD�������/tJ�PJ,��u=�?���x�r�`^�����Ci�HT9~(���J�A�o������
�i1���
�i1��e����"���n��������B,����<X?�3�y� ~���5�4�����:V���H��Yu>""��GW��6�tg�
��������*�/2� ����gx��^��r�`�Z<H9N`����&����?~"����������d����c�Km<.0m=�`���6hV����g����q�^��O�l�+cVS�l���)��*�l���dEK�����'����������JZ�A���l;.���l���db�A���l�?���6^L����m�"n&�m��'S�m�b"��q!��	l��@y���=���OT�A��]�s���L�8�����)�Q�`��L���* {�e.0~����Bo:|���s���5E�\\y��4D|��r��&�N$������0�����Og�h���8��h�[��83��$�4�����Br\B�&�B�
�0S�i�9�`��
�����
���l�	PP����/�G�t_���2u��Q��)����X|Jh�F��7�f�
��T��+�B�5|@��0�����0(���j�S�|��a���O��&��8Q�'�������<}u���`Vr�f��bVr�+8����m�Zph�@�����0�M��W�q��(`>.g����q�a������
>.g`g�)z&J|���N4�'��t��u����z����}�'�>#>#pzB2C������4����&	���f�
|���;7���7��NA�-.g��Q���
���^8M��Q17�-f�F��L���S��H�[�+�#1�(�q�#1�b�q�#1�X�����f1�����%�T����J��"h�D�w'���.%>����������0������'K�7�6cnpm��7�6a����tg\��.���^	�k2�n�~�R({������(����W]@��'�mB3O�f��aN� �1l����H��i��"l+�.�d������,��wpo���L|n�����J|n�������D�s��L�0�qS��h�D�=GN�9������r��t�"������a�03����TF(3SI���� J��*�'J2�nr>n
p�B
np��Q��ZyN
np�z�r�E�O��\��Ii(��&�!������M��x�$���*�(I��[���k�[�U����-�i}|\0��DI��1\�z��5�:74����A�s5s�k�K��m�-kf�M���q��p[����q��pk��Xa�e��'�
xf)	'��� �@g��p�������������7�T����\608��x�7��4n������]�l`pv�8r,-�W�B�=N�D�3p��0��
���0��
�4���'�l��R8&IW����'���B��[�XoE��{*���`��D�he���i�e�D�#v'Z����x�9h1�0/�%������9��9��v��#hQ��O�����.60��5^��S������`n�xXL�b�p�e2W�N4�������7����o�q,���x�����%P�b@�.���f�;+�E�W�p~��w+���`&l
`�N��X�K�����Px�����Q���'���K����<%v��ndVr�Af���cVr�78����d��
9lc!�R��>���e���l���
�
�X��c��V���-,����8Q-�5��/|}��H��o=
@��K���@8�K�{C�C	�����/0
)��r%��+M�4�LX�,�^�
��
llX�,����`A��$�����l��R�d�O�X�n�����Y��C����H%2�:0�L��Ct|���>���VH��Wl$���K�!a�)6F�\��L\��R��R�r�^'���	����L�u�V�/��x�Y�����v��O<;���#1�@��#'D���qe��Z��X��R�MrsPJ�YGL��#�1g����X��	~�D8������I\vd��fQ����%�v�
�g�%Mz�@��-�:K��h��3�������bSN*���HV..���QUk��x����3{�8�����?S;-x�E�;�b����Qkx��asV�:].SI�RI���*���8�z������-�sl��\`�ib�ugx6��>6>|7����-4��x���:��x�0���/����G�+�@u,�
�4KLV��;SnT�Mn�	�u$��?l�H8�:��G1�^g��o��t�=m*��f.^�5��#�n��2��V����
�����>H��A���wH�V��#����O���
|��E���j��=��p?�������p|13��O�.��Y��Kx>�/X�Z���\�7|���������DMeT���P��ci��f��2�18��2*����^_E9��&��G*u�������^n���*����	��l���0���(8�s}��_�i&L��Kak��_HXBy.��)��&s6j&��qQs���U
6*�>��� s�N4���/��?yJ��
]����9��
�����ap���[���V�sQ��4�%�Y6*�QS��sQ3�h�<�\F5:#j!���k��������a�^�k����B���&�P�u�I)�]^oRe����N���d��<MK����p�4��M�!���&=q7���p6.��;U���*��cs��?�x�'����qw��y��#;t03��23;t(3����X�� g{:��`E��8�����d�u�w�	8��)>p&R6,�sPbC��.0g!�U������/��w�L�w��������V�����r��U8��*c��)���'dN$K��E�w����`CD��wy%a�����p�-��M��^��}��{*������?7��B��K\����������c%�>H���0~"B�X���a�B�����a��B�U	W�N���b�D��w�?<��$��F\6`�%�aE\6L���y��p9"!DZ���p�Y�����n�)���p�
�	8����|�s�~�D2<�hn�	���~������x�G�����x��0�������i�?�����Qt�cH�>K;��`�T����D9q����7�Tc�j�p�C"l�O�c�A^)�Jr����+��Jwp�Z�B������BW���{5~��\���i��%k��
q��f�J>Y���&"jB��v�Kj����{�d,����'�����w�Lv��n��	��YN��F�j��|8a=M�yNXOS�V���
G8+���
,N�H�z�y�~�\�n���V�u2��c*�R���HDC
	1)�g�^�@��>�b�������P�S�0i�R��@3�����x�tAW������l@I!�	�L��s-����iqM�J�r|��Kl��}���z����4����cc�e^K���z�-��[�]��BK��Z��[�]���n�w�*-�H-��p�$6�`a���TaF���[�Y�rM�3AE���)��A��	����U�����;�DF�3������@��yVF����A�	)D����5awO&��Q������.�q]D��B8�>/%�n%����r���'q��DO��������4��T��z���Z�������9_�*31JUK�=��7�rw���j��Q�����5��J^�&l��Y|7)���$y����%�F����x�5/�A*&�;�������\?�;69W7�uW��.�����]"�j�]sA��@HV�`.^��p�\��\����*"S�D�����^�Y��S�$��frF1��q~������ �CL!�6����2�V�s���=*4~�j�}}��K����s��������|��e}�=�g�������/�>kz�-Z
�F,1"�bp�)������U���n������ufi*��Ka�;|�'�8�A`����������������GQ�`%V��C�1�d#�nKW	��A-��;p|�yH	'�R7��mMbga3��
�����o�g����`&�=�]2j)p
�8<����������'Y�[>��i%*�M6��I�����	�:r���j�����	����ci�����iF���~�;���m��P�U���w�q�����i�*>�/MFRI��L��~pE���8TVj�$5�Q�0�RQ!�����e-��2�*�JF]�A-e�*j%��aP�RW!���������+In KR�������U���)��N;��atlBxv�,�f�<��;
�s;�,x���Fj����HB���X4�L��.���F���M,�Y~�V�{~�1��N����X<��6"��	~��n��9���.�o�h$o�U�)�|9�����R��X����<��'a�� �+��6�|��R$����a�V��E�f������u�p�)@+wZ�8�������e��uV��KC�J&�~ZX��	V�����R�WQh�7[��G��#n?�������9����Y�	a���rG5C���%~I3��^��z��/��a�3����q�����$�����n���A\X���{����O/-������b�,��^~�L���+�d�}�Z^'?x���Oe����JqP�6�xy���Oe������?�>Z`�����L�g>x���Oe�������@
�L�g,��p�'�z)�?�LL��	�b������"�,�*g�{�@�~�?�E
��7�z^8-5/����N\���F����!�<�p�k.^5D��W�
��X���Y�/��Y�@��������b��
��e��M�a���B).�����w�'��@6l
`��6�a�s�}`sPZ���[Xc$��]�F0�x�%�5�<�
��O,��G9LsX���9L\`g�q��������#��G���?��u����a�������&8^�L5a���yX�PdV8��C�a���yX�dV8��U~�C�>f�U�3�*��x��c&V0���j7���>�8���i�������i)n�kQR%�#�9	���4�<��r�o��Z��:���.���	I-I�����������dFjI����+�pdi}|U6�d���2+�,���	��nJv��+-��>�(��T>pJ��.@�9��]�*�R�PR��>��z|�n��;I���fe&fI�$��������b$�.%�E�Te�.�2�5Y��`��p��?�#[�������~���se:���`���gX?���W��-����;��(����t����������z@��n�g9�����v;Vz��/�?�I�Z�B�����V���8���������?~���J�����~���������8�cD4S3��wnyP�#�:��%U��qyc��dh�5�Dh����B�)��/,M�7��%g� HV���������m�z`7n���\��f�V{���N��-vy����(w)+�a�p��EB�+ukB��A�!9M�J
�:���x���rO��X��L8�z��{��2x>p
�M����3l�=�
�`C��.02�T|�M�G;:��N<�z��������#Es���Es�#SFs���F�i��r$S��#a�GD���,��Q�d�VQSw��p�0����6`�1
��X�i8��x��	��%�'`YWX���NS��\���9e��2��)L�����-Hw����0�jVr�w5+9L���\������e���Y��H%*y}��k9�e����z���nMw�C�?��}z��u��=�#_&�����r������a�@���~��O���������Z��������^Mee�x��I1��}�|��S*���w\Ej��!��'ca�D������u�����k��x����YZk�����4�����[y?7b�������7��s"��X��|vAOk:�9����,�f�Q������*�G�fO���AI�n��Z�0e�]�jFV�^��*���=	�U�vM
��Uk��S�o��
��@k����L����p!;2���n�
2c|B�6����$B�&Tb��=��b�����������$^�3~��_�\��k�`�R�p��{%,�s�_c�.p�+��7�N������X����������3B���8��+��8���L9�����0.	��S�=�J��~O�m��[	�fH��!Ka������r)����U8h(�5
�r�%
�WpQ9�f:��J�������\��[��?�<�}�O�?|e�V��i>!�SR��`:h
���4F��Q�R�}n�(� �Y�����IE�D���x"k�Q<�5�(���tOdM>�-�EB�g�u)���9�R���9S��&9%JlT��&I%J�U���&Y%JlV��;i%J3�$�P��K�[,��=�NWbn�
K�q�+�.��C/�\.�!�b���z���z��z��7z�j�:����u�����Xs��&~
{���7��D0��"R��'"��B�`T�K�Q�/Fe�\0���`\�K��1.G��l�N}��?�J�GV����[���|����vhpa�x0I��3���k������\�q�k�f��M�a'7���Vl\��Xg��!-d�P���aC)C)�26���������t?q���p�������o���b�I���w��d��mt:9D��������r~�z���6��
�/~%G�]|�2��������%`na
:o����)~��@�X��kB?`M���	V���h��W�p�x��X4S2qb�8+N�������/�)91LhNF�������3�9Y1MhRN\��������~������\����y|�|^<|i���]��n"�����$�BXk��
�9�BMj5�E�\FO��@-@Y����z�?�2�~(��������������_1]����������xA
�\�0y.^��l���/��6�_�N+/��O���&L�*���QPy�^Ly3��z��{�������P����h�O�3��������#�3P0#��(��kE�?n�k�����0K����� l�4{�l��)�c��a@�R�=AU����J��D3~"���������n���g�F?#4�(��kE�����>�JZ�j*g��G����e���l��e�f2��C�@�D��8�`��il��������*��On�hQ��On�H��q�B�AY��kP���Jg�&�
@����@f���%I��YeaJ
�
T��	!~IPk;��0%9
W����a��K�0s��a@�S�,�T%��D�b�x����S��������ZT�\x������0��Y��U��zE����%X��Y�a@e���T5�jm�R&�~v�4*{�0���N�)P����	�������t/��))�'w���T�����WN����T��=
S�������*;�GaJB*1����q$�����	��1��}{����;��y�yX�T�<�p6eV0���<�eR�4*)�JqY	U�KJ�R\VB����fU���R���P����*�e%T)iJ���Ji(��IU��UU�HU��UU�H��X)
�����*�e%T).)�JqY	U
O����8������J�R\RJ�����4�P�<>)�J3���4)�J3����T+��zU��R����*�%�T).+�J�I��R�W�I)U��J�R\RJ��������:���`T84�wu������/c��j�yL��g�V����;�s��������x�O�'����s^`J`�30B����qKj�����V���]�6�4���@e�O��~,�L.�yT6zsb"T6z4��J+<TS�������������t ���
�y\2h�q��uk��]�m�b�T� ����rm6n�|�]�4[7UyV����������ZT�}7��4��4:�n��kxj�@�t�Q�`?�L�������&���p�4������������p(S)^Y��r��i�LX�K7'q2a�N�������us�V���IgX:�>���v�x	�N�O��F��'^b���[�%�:���:��@n��V&.��9a���f�d�����4������Q����4oa��.��#�	+���Gf���JLua/��vh?;����3#�������{P��iNn?�I
��9�Al�Z3�.R���=�u��[�h��u��[�h!�+��c�V��q5�h3qc�65�h3qc������x:n�h3qk-6�N�bsk����y�4{x�G)HS��
��e��y�"V�Ud^�d�������0a��E�%P&���=Nj�(JT���&���3�����,���������%��Q�����M2Q�3Q�3�������7a��y�����2aeob>I�	�	�0�Q����Ml����/��?9��Y�M�/�&�z��K�	��7y�l7�8�H���J���S�0�$eL��p�����fnp�~���\s|��-.g.p�'�L�w���p)�w�O�6{���K\���.e���(�R*I����P�����U�,3�L��)�5�(7�&����)���[\NB�U�:u�}���\��jk��_
���]���]
���]���K!�X�L�R8�Sw���.�A/K��
/��1&.^��Q/K��*�q�g��y���4d����O��3��{cVe������9X����'�����e:�n!Y�,���s�^)������x�V2l���n���)��.\x��������Z!qA�� \�Yw�Da��v�w.�������J�:�y%�6���Qw��f��S�Ka�U���5��-�����S�l��g#g�sq���hi>��\dN��yI����v�L�H��w���(�0R��L�r��iVrx'��[�/�\/~�7�N�������9���W������$�3��� ���Q��R}�f7�E���s��� ������ V�e��S���]�pcT��D�T6�DgTw�D�T��hE��4u���~��}���<��6?�8�0G���0I9~B�+]2���"��h}l� ����"��|���h�eE��i������d���3���2r���s��t��m�s<<9����d�	�\� �O��"�|��<h��%��.2�1Nz�"�����062�1=�"����~Y�f��u�`��HP�fy��^4�����r��5d����)ld A�t
H�2��!	��S��@��c��d*�~P�$XY��d ���� 	���`#	Vv�"#��(�N.2�d�sp�A$�����"�=\d��>����I������d����h���u�m�}����������L9���L��#�|�0�p��3�$�<��z��`�RoTd�j��t�s��{o~ZIg*��3��
9SH5��/L�Z�����J���s��?�,
���Y�
P��hXN�_Fb=ZV��3�]����L�@�b�2��:\d`�G�k�`�6'?�rsS����NY.Ap������Z]��z}��Z�����vc����1��d�8g!��p�2������B��e���iaTo*�NI��8u}����
��Q��J�������-��oW$�F�["�V�[$�f�%�wG6����$�
w0$I%��0~"�]��r����dZ.2Xva���E�.�Sz��`�M���D�DK]��91
Ogu}����f&�R��(�����7)����M��^�e.�{��:P����D�>������d��/9���_.r���\� s<P'��'���}�)P{6^7����D��#��l�X�39�h�E���g<�	
�9�g��?Js"9��
B\� �w3r�s�l���E.2���m��g���'���6�/����6���)����m�Q��}�Q��FD���������$+e���2������G���S�l4~6r����F������@�+YJ���&��g���
?8*��
�����G��
]������E?r|}���-��C����DwEQi>Z��F0�Ec��EDa���"����K7JU����oz@������'���@_2	�C�����_�Z���+�X�J&�t]?~�w%��{B��)@6�=\� =9�F��F.2� �N��Bu_LL�'��t��u�p���z�(������(�S�2������S�h���p�Y6�gU&\7~B�(��[`��)@6��E�dd�l9e693>r�M��\d�0����H�4��Y���

��|�14H�� �X�:�~����;?-���7hZ@C#����;�������O���W����+w�_Xw,xCj����������!y���{�b����C�o���	��*F}����4A��4���<M"w=�?���l��o���N��������9$��f�+���1�C��xy��p9��ptr6�vs�>���7� �g"��@6�Dp�s�l���"�31�_Ml���|��������>�pfbVr0G1+7�����[������3��J��nE_+�3&,x��k�`%�(���96�Kk��`�<���]����>��a��@<�J�5�iy�k65_���%�c	8��xD%�d���+� ��T��~5Q
��|��]�V��!�G'�c���p4����J��o��O���	��=:����������[�vJ���<�����g�9����b{z=����b��t�����Y4������eQ����,O��i��O��$[l��E�����R�����&/��4%��S��*��n�|\��?�������������M�9���@y��r>m��6�������qW^��iQ?<�����Y�z��*o[�������o�a�}���O��d��f������D���kiOD�N�o�����������X�?l����O���������B*JIX@�	��h#UL��D��������d�d���d9�����7\2L4L�E���(KT 1�[�������f�(<�4d�������`
�LU+
�p>%Q�4��v��UZ0�z$0�~
l��`j�Y�L+�4+�A��d�6+R�4��*)=��4u`�m��dK�Y��0]���Qd
X�.�Tm)�r�@���bl(��+�b%�*&kc�&VV(���R�hl����m�r	:��uH`�U#J��5d����m+���@JK��)���M��-�)������J'�R�T��[�J��5Hz�3�n�+S����R���HZm�Lz�d7��� t�?�u!���A*z�T�
*5@bC)�d�4W%��T�)�;��XKI�2���j�r��������|�&�����F��!Hm.�']��L\��4U�����3���T�V��c)��u�ki0���G�B;4�h�r)��������Z4�=`���!p���t������d�hIjbe�n*���[��h��Z6�[4�~����u!r��E�	�"�8�6| 'j�:��0�\�"�f�UJ�������4Si����z%x@tk��V��M�A�\E�����,[�H2K\��AK1�K��R5���+���Q��QjT#O�O��TLQ)�>m�D���~d+q�,[������S�id�*��
	M���'���b��e3�&�Ll,EKo�7�tS�mw�+��������������O'p��a�W�������C����0��w[xM��Ms�*��t�k	'�����i�X�nO�]�l�3�NM"��_�z��G���4���hV����C����I����g>��4
���v���4�T��������b�-*r���B�������6�Z�\'�my��%M����B	9��4��2:�d�����d�H�n�
��A���zgp���m��
^�����A��	~gp���u�_?�����_�1��V��
rw\�S}��M*"7�����#SK�����*�^�	���sn���
��eGhm{TD����N	�-�����2�Z�p��juei0�ES~�v�,�Y������nv;P����0=0�{��CT����D�d�?�F|a��w<.�{N�i�$�����;�$��1|0��xaR�,���9����Dp{dX�QX��3�M�'B ;|2����R�3*.~�q�F���4(n��PZ����>^�;���������i���]����P���5�2��������PkDjq:�`��$��G����|����'���a	���n���1w��%&�e�w"����V����&��L�u'_\j
��t�AIv�DA��M+R��y��h��m�J�w����������B�.!0�������e!�{8�OL�[��_����TP������z!}��_ E�Pd�>0-�����L�?���6���r:>���	����P������|���
�%��
��ZM��3a���U�#i�,P�<G���sV-��s5�����*	9��qW�JMj�c�r���d-���3�s4���H�&���I�ya� 7�9W�D$�����Av^r�.����K,oSTf�s��)��)���&F�	d�>�L�]�����c�b��U��j�d�X���.O���JTNv�m���HyP��c��-f�m��F��"���"�9�y��;�R",�S�o������@���t]���\Mxc)m����Ni���6���["��v����]Gl0%N��_�>i�-]fX=�h��R3>�b��Uz�J��k���
I����i���j�Y�q�-�!������	d��[�cn��]L ������dW�#LR��pf�c�4�N�U�7�%��J$�@�6{�L<(V�*�������*�����2���ak)����[�@3O.�`�<�:�L��@�wi��u��z%����uOMu�j"yZ�����>hj���fY)��d~��	6���[
���������b�&���Xrr8�T��GS���w�XnP�u���eS����@i��2�;8�� �_�x�fL���D�RI���s5����y!j�M'+5��������isu������B[$�^�uC@���;5W���9`���z��&�����\Q�yx��R��;�rm�����\����\�N<��f�!E����u(xb�Z1y���\M sA%��!�GN�uf����F &���s���/i1W�r\P�Y�/cq�����R���}�����\?/xb�k�q+V��m��\�|3�����R�O��S��d+���i�E�������S�KKT���{�w���;��3��>��g}�+�
$3��B���u)�
$w���������t�J�
�,}�l|m����O�*!3�MS�A�������oj��;<4����"
�X#��������3���ja����T�l�<s�_b2�c�}�8�>���@����P������7�=2�����?�/��H�W�W�R�J�0�H��%L��K.V{�$\.V��KM��b�,5���U*Xjj5���\�c���f �L��D,M�AZ�	�l,�~��:��b���-�tyK.bi����.��yX�����q�xr�a����
)Gh���n�b	I<��Q���8j�k/O'xX�N�����x:������<,U'��1[��1�j.��TV���|����zh�����G+����]|����#�RAS��J��i��U�=b�h���U���
Q���@�2-�S4E��&%4E����l�Q���j����L+u���B��K,��*�[���*,s�6$��D��z.�@�xq.��B�/����,�}Ul,(�B=G���X��P������x���1���FC0�5^�x�?�F���T���L������������������#Ss����l*����|0�:l���1L�v�`����
����$����&���=�85�����.�<��PS|�?o`�~x6��>��,��sU�	����UE'p�*:�sU�	����!�oR�~|)�9����J@
j�% 5����	HAM��a�N����&tB�SS<���I�P��4P(|jb��;�
o�P�����OM'���&�B�SSN�{w�m�����G�&�����*dj������G�&������rU��9�������`��mrwG�����A��SlEG�w�Y�+Sl����F��|=M���9^>�7"��|48P�Vt�h�L���|�� Z���r�XR>��#��V[�A������i��~[�A)�jND�V:JA]��S����ES�����GS��^�ES���<�P��o�D x��O�$��������v7��.(�-�c���pT������w6��w��::o`�����?o`�'D�_6�'/	b����TO��9��S=it�g�G^��{�����tF�E�O�R��h��K�-���jf
M�z����K5S�3z-�~J,c��%P�G���`��X��~���1���Y5�-_&�������;d����{.��{�2�����r�0�
S&+��O�%Ki{u6����=2dcb�m���X��O�g��"?�����p��V��������[����x�XN�\.E�q�>K�LR6V�`)����,�r�X���X�P�����t+W���d���pT������1P������U�K���T����B`S�Xl*6S�����}��}��PQ\0*�F@�{��@D%�K��?p��B�@�T��
(��E�{$_J94�S����n�T@�
L����T��{$��W?T*��C��Y?T*��C��~V�����������r�/�����y�y��&fV��	�>�,�pYH0����[s2lu����L��}8���qvCSQY�wk�`T�#�;%Q{���� `a�+�vTB}9H<�� �����U��$5L467�����U\7t����sT�;"�T�#�y�"��$��r�x
�A�*l�6&���I�uC�*�:Wa��9
;��������7���d9�Wqo{������bK�YHTk��t�v��[D�k'��];�O��I3
n�N�Ip�v�L�[��f|j'
VL�($�����[�B��(��CQH~����($�v��<
����,�Br��,XKQH�-E!���d�Q"���QH~��gy�_;�yr
����<9��	\/o�B^������3w<�L�8D��nOD��I��n�D�vS�A[yl��e�sd`K���� �h�@R�	Y�L�G�	�� B�@D�AoDD�AoD�Fyl)���@�M�d���&�"���&�"��2MEze���r�%��!�����''�$�����r����g�`b�I�"5�
���n�\�uC�(�i���� �� ������xK�$��,�������P�w�����Th��:@�������"�x^�}����$��r��>�I#��q�Qh�7��f�R{h��>N����>�R��V�v��z��bi*���L,����z9����b�KL,�K����b$�C��X�-�i�$�o�yZ%���Cz��:��a�t�l��xPp�
n��A����$q�h���$
���`���KCGH:�@��QD�FO���$��JG������A�$����9x���@���a�z^���aq{��QA��M�[������'
W�=i8�}��~g��3Q���qL,�~��x������������&����~{�p�������4�~�l7���^Hf�R�t��z����<,�~����=�#*����bz`���4\������'��~��y��0�Z���`�`��\,��s�8
���T�J'�J���(���R�=�,5������	3��	-�U�=9���yX<O���*��$<k��%r'�+{3�+W��	�J�?n������q"�������0������$KuS+S��S�X����#�n/�����1���e�Sh�`�����/�*����`o�������v����.�<(mJBiiPB{���;^a�mj8����e.L,����l.������m.��~x!O���n�m;o��5�.������\/~�7�N������N���T����D���\4��s���>���<'�8����O�qA�g���sTz�i�^���~������%����+�6+���D�k�d��E�%s�x	�\42}��Vm�*h�UA��
�n��:|`�������n23]H���j����4h-�As��*����y�����������j�|���R5h.�: �j9�}����[N�f�q2�����|���Ruh����3������g��q�)�������y���ZBpq�0!��#�\����4��$��2���KMb�%���hbI
����'���z��hWf���2����/�u�|�Jo^��+�Y��/j��I+�o���#jD�h��E�D Z� �"3Dsof�����41e>t���O�`�C���k���X���h��)�'�N.o����[���q�����=�����V���l<�c���?��?��_�Z��D�>�M�q�xg\4���f������`����}8l�]9l��]98z���Y��4i��v?��u.��s�x~��������Q�����:5����e�N���f���������$K�ZJM%�Z/���X��Fc�.���m{R���n�m������>\�����w�n}�oA/,^�%��8���F��\4^��Ec�z�����1=�UoO�?�>?�����#��d"I��x������s�x���s�\4��w��
��bB?���:W����������u���E������@�D���p|�����������E������vw��M�QS�nki�i���*�M^�Qq6�/������@����������������R�T�2G��]��_��?\��6Kf�x����������z.����q���9�>m�jb�}���}8�������`������'��x��Jw�����x�>�����x}>���=���.2�pg�
����W����OvC���n����
���:�;�"��	�i������O�f��p9o?�����v�l���m7���n�,Lo��w���f�+������:�><n�r���w���f�w�|�
�����}y���o�?~�����!������t��������������������p8�X�Z_�h>����\o��A�����uw���V������
�1�?�������z��:�s�C}�����:>����t<|y����������S�g���T���d|��zdW��K�h{:vwN����n>�v�������d�&���i�y0�gU����Gi����� J�*�dJ)<e���/��Y���A�-�V1x=H�"<���q� �V7�Fi���� 4H�eI�:�d���!<���'�`�@���*0K����X&!o���#����iA(��O���s�+o]�x](c� ��u?1D�����cH����&E�>/N��h[��?��pAy��~�g�T���(��(��
 R��0"���ZP"+7��B4�0
��;/%.���U�,�|\��% \�
���*�fQ�����"
�.Ee���rhA�H�r(�����r<hE�4����KF���6�<��ZP)��r������r�hE�4��X�KF����Q����� ��F+2EE,��Vd��XE�|2JI<-�����3��a�#!���X�*��5�DF9�HR���Sr2�AOl��vt���8�����:-�pm�{�"�������c������P�
�q�r�r��n<�vPdV��O��n!tQ������v:^u�c]w��7�bs�-N�w|���dk�l�d�J�Qg�Z,� y���*�['�K@5��z������v1���K��Z����Rw�����s+�/��������/�����J��xu�hN����������}S��_�-��U�m��n��,~������}��~��(��j��f�9,���3��b�v?l��I���~�Z�~�}������Y<o����d��~�l�,O������8�p?l_���<���Yv��y�����������j'i����:�����-�)4���E���:��V�KH(����YV�Ql���w^,�*��FU��Gb��,����OpU�H��O���U4�a�V�Y��M$�D���l�a�8�,=N�d����,����Zn,�����+�L���Sp��i�e��a��,"�Tg��L�:W��0�2���Tg	q�.��[�v���&�b+L�{&�Ql�i&��q�(�\�SS,��I@q�����2��	�s+6V�8��1EQ��A�	�y{��n7��[�M,�V�")�\���(Sp���,*]��6����.�sa��/���H���\���1W�)���'��J0����*�� �Wl�6�[e���s	(�b�L~��M/:��y�7C�
��	N&+mPy&DSN��:��X#}@y��SwpH���Q�

�r�Z�4�����3�,����Bk>�5~Q�^�u�����Pg���qf[G+��Q��V?���?�9W�wz����S@}����0�x�0����?I�����/6�)Rk
������k8��c��l�e\{�[�Q�������7[�oN�m��XDc@��Y��r�f4�\�m�
�����?V������S�9eM�I��\������CD�7r�h�bz�0���Yv�:�p.;���
�������=�����m�&�go%�h�a 
m#��X����$*���{NJ�
�O�A���6��U+��ct��}N�E3q�n���y�//�m����ocd#���F���B��g��)l�����z|
3�3Y��d�������(�\�7R�D���Q�8V�TX�k�}R8MUH��f�{�4F���ZY�&R��
�J���o�!4X��K��@�H�W����&��(.}�};��a��m8%5_z&�
�E�F��*�yv->�|x�����Jw���* �	ep���dD�����:V;��$����Z��.�
��e��%#���F��l�u��{�"N���eG�%#Z��7��+\b���R$
i�Q��VD��=�['�5_����������+�/�c%p-=�E�Uo��<*oml���>�i�:���K�����iW����.�c+�A��n������xj�sY���Y�!	��o����X����9v�K�?nss<|i�M��D�d�
����\g�5�6��v�A�4������w�K}��������z�^�(M���3����ad��MS7�����S�%*�e���$��E{�:���<�(p�$Qz�t��o1{@PU��.I�M���I�n�O�^�jN�����]����\�6�J�(�����+����&�\�z*m��|��Q*�e���{7'����+.D
�zy��,������-.��������z����d��P��\�%'����/�TC��i\�
���[\ScU�wJn�p���n��A�q����9����4��� �����7���!8kw�����rm�m��R
�lY�J
�h�zRZ��e���������p6QV����!�'�rl�"+B���G�����J��Y��1�%+��x.�h)q����HI�<�;%�������if��I�\���+J��2�����=vAV?������r�L�����*�c�2�0��f��|?5�������`�������w-�p��\dH�Mr��a��\����^�
�K}j�8�������*��T���k�$��Y���'�Vd����+��q&l�����F����x�Y5^'�/�����L9��LX�y���L�������N��@���n�������8���P&d��|����S�K,�S�������C�"�L�=h��E&�����T���g�~C�:\jd��X�������'��=�d�/O��o��a��������\�$�{v��F��l��y��!��L03ka��]�b�7i�s�bA����������
H�F�Y�3|:�1�����vg�������^lv�s}�r��L�"���R����;�D���^d��w�l���l�J@d[9�� ��8�����~������@��U��T*�z��{��2)&�{L��czC�)�6Up����O���8)V�������N�2�"A��J{|k��<������<�2������]�o��-k�tYb�����0%��s�WW���N�c@�I�*��?�Q"[Aq�J*[I1�;V�VT|*um)+��So]R��O����S���U/�u�[���������\/N��������,���z���?���H�[?��5����?m~����>~\��yq���o��?v�7?�����Zw��|����7M?w|i��b��r�����4�f�8=v/�y��K]Q��][Of��&h��	�h��'��[Rh�u�9g�����:���K[���Vk�!
a����CQ�N'l���U���3�*�)g��R����������?o������r:�aJ��:�t��[�?�\z�����\�����Da��F��p����@��
�� b�r$7�
�D[$gdqn��?"w������?"{$E��y��L�GR�7�Gb�0�y$�h>�����!E"��N���C��F������Q��O���Zw����$9ESW+��H�oJ8�Zy��n�������E��R��\���[��
����F?t���1�;��g�����
j��"�������f5�f�{MpRb�x�Sa���Cy0�]Zz����-���F_����������#���~�&Y��d�_���:z�w)�����}�E&[/����\���
�����`�|i�����9u��	�
�����Dk{��
�R?�z>2u>HWO���}������������O�����y�a�^w��vp�9��>�<}z��x��4��K���]�yQ�y�Z����m��]�d�\�����{��o������zw��\|3��<��c}���~����b{���v��>xx���������~��S����������w��tp-��������-�����b�������f��~X
iK&�u�T��;�l������e��q��o����dx�:�//�v�Q������
��K8M��B.�������{DSd
n�qq��(���+6l3�+��1�X�6�Z)uwX�\��l�i
�Va+nK���j4�R���M�����Z�lW?n^�����*l���\�Ip\����AyC`�n�����`$����_�/q�O��'6U��3V+�
u��x���OA9��C�Z$����,�#y�"�0&��GC����	����J���L�Qml"C���j8}�9p�5���P�c��x:�%��y.	�E����y�2��,I�@���������Do�D�HL�V]����p�49�},���`���X�9@��7�A}����b��O�jI�k��-��������/�D�����a�+�"�m#��F�����%V�FBc�FB�Rw.�.�c�Y�Gm(pY�K����v��r�&+�t��,\#T�MTv6�3ql� ��D6�������u�(����pi�w������m^%G���������(�U��)���p����oJ$��v���S�G��-{|�#xz�c����!�D"��DH\D"��Dt������=������l���1"vL��E$�����0��I� ��������#��tX�q�t�);J1`#�
�M��g�aq[�[�Wz���.41?4!y8�k�h4t�����6��ZT�&�U����N��
*o|���������9�i���H�����ZB�~�~a�_�s���bs\�>�0�}������/]��e�C��/��.�]�\������/�������������,N����9we����l��t�<���8��d�t7�=���6�7�k��~�^���]�n��q+T���|���?o���O�m����{��V��y�/����p��e�X��9=�[�O�f������>,f����/<u�����p��iX����"]��~�XX���9�������Z�8h�K�E\�+�*K��#�
1w3����j����t�E���l� �����Zj�U���1�����������5���T?�|Cl�1��-
� !&�4N������d��a�����]�>4,R��m�H(p5@��ZeW4��\o[��"�kd^*Msv�:b��[���	�@�wp����`"��m��mCo�D42���#�
���J�y��;%VO��
��/t�W�\�:J��5��PQ�WZ��]�FY7b!�u�p�)����Jkhq�t��=��C��m*��$�5��_,�N\��$�9p�5�����ytB	V�d���C���i	S�4u���a�_:�V��)
V;�-
���
����H��{Hv���I�n����<�^�d`C��O�aR)�2��Y��<u�7+U^�!�*��+|ZV�T?&�Vj_���6\�|&}GA�+�Eu��.��0��n�g��{OO����x4d{�4M}>V������:&H�Lhw�����SL[6��.���4����)���{g:��E�����
1�LKl.��{�3���
���iXd9����K�n�U�������-�:o�m���i�'E���@��r�D����z�e��id��n��EW{�r���6�����)l,Y5#����=�>���Zm��$*nr2Z/�Z]G<�����
d�0���6�L��N�����U�' �Q�/#N8�fn��I��
���+���=��;�^U��x
��O�.�C��B��,�'���U
�a�r��W����3�����CF�C��x��f
8[!=x��bf������=������d����TUN��bv�����Ll�\!)L-!����D&jzp�6����Z�Y#sNY���8��H3��j3��D��R+����t������;$�������t��/��V��P��b@W=�-6p��''�[2$��m���~	'��
�������F��q���Up|���JB��B�He����Y�����L��O�2&^](��+��J�7T^s�?��]��P��S�[�+���%���sVcf������}��?rk��k�_� g��P�z����J���XdkP�\}=>�-��a�0A�� ��}
�]�@�t*=����q�[c6y�iI"�#�,��}IM�����t��-���/0��#�H~�6�^77�|A���;���GE��6<�K�mf�!xO�H�7��@������x�7�W����������#�Q�����x����P����P?�G�Eern0�k��ls!Iz[q��j����_����]
U_#G&�V���P'�kYK���U"y�
����Z7�6:k��W_t����k	{3��)��d*
4xCI�����L^��!������i����dJ��V{����1��������TC���4,��7�+z�5���
wF.��%1Ll�\�[J��'��v���;x��z�9:��5�'��<��\��yz�s�Q=7���m��������_~/�au;���9���}�F}������Y_������y����O��'��fE�,W��@����7�|�B���Ul*
!�G�zN$�Y���D8�_�H���3!2���o�s"+�)�pA-����=g�pk^8gn��!��r��;G='���-�K&g�3L�BH
�
�$R�j)�B��o���iZV��<���{K���8;
��k�u�UO���-��I��u�MO��X�K�t��8��z ��?LE!&OA���BN�Hvp�$t�G��.�6����jP'�Q�O^��O��E������J<N8���8j[��S�QfTrbg �K��!�����.�*����R�������,q����#o~r��Pzj�
��zy#')$�S�gCU7�anX����;���&��4�p��%��Gh�
MZ�J�1���Tf��_����5P�Q�t��2�=+�0������[�*�R���Z�G����$�_���c^�#��r�7}9���rt�����r�a�����'yi����?)cbj�-�vdQ�X��Q�xQ���EQ��'�HD�b5�EA_B���S�j9#���;B)��8�B�gt m�(��bQ����V_��T^MA�����N���c�`^q��!��12��C��$�(E������1h��D���W(e��]�eb���2Q��yl�y|J����e2+��Z*D������X?���@e�3�OuF�3u�4U:��P* �*ZF��G�C���F$3I����i3l�dx��Y��il������)Ky�R��
x������m"-��z�M?.�/\a%U<��463�Wo����]��T�4��x�1��x
��X�dgNyG�{,?�<uC-�y���xM(��^PP�) ���<�5��8��]
�_�9��z�p�������\���������~��RLz;(6���(�@���~#��Mo�B��t0}��=x)�,w�L��Sk�������rh������CK�����q�6�)�Y2}�����>�DB�iI]���������=���2��O����m~G&��;Y>��;�i�5���z�1��l���������uX�i���a������wHr0]�;�u�w]��������H���
8��q�7��q���L��7���n�k3��E:�t�Sw�7mCw����vs����=����va�p���&���b8o7��x;���.�F|t��Q���~>��>�O����r��:��������c��Fb�r���M�MU��X3��RA����V+�g�����F@�z�&�����
�������xx�J����,�~�]��J�����^����U����Rf/�D-�(�R���nV�isDdF$k�bcH*vh@�.��as>4j�����R63UA�R)[���n�����N��r���	��Y�'����LU��#��]O����W�T*[�>�=��{5�����`�}6WD���eid�]��j}������}"�����Rz��U)B�3�z��������*T�����?�'n�55�T|��NN�UA�����r����Z�H-��Z>���
��\6��������:����5��{�&j�y����N�VS�0��f�_�F��8�1�gl�$���U�v���zi�:�"��kt�*�\�q�uq�C?��S):\�1}`�Y)�T�d�}�J+�28��������	���3b�D�f1��V��6K5S+�g��]��L���U�b�3�T#VN�jQ���=qT����x�v4]��[N���b�3�T#VN���o��*���@&!����jE�Uv�lU�$�*G_g���\�QE��n6��e��!����rE�,��j���bkUo����lU�$�`��Bda�Z�x*28��mdx3����*&<��^��Ic�,�'=7//�q��;[���i�=8=.������J�z1�(��RMsz�V��x���$2��6�P8�
��BSK��r��r��fz<��_m�R=��x����m)�E�����R"��Tr,�=��
��hG��i���Wq��*�Va9���2�O����^v"Y��e|��BzH���lG��#�/�ZI\6#v�l�(D�\+�� ~����!��UP����}��"nZ#V���0m���*�X�q7��������j�����X$9X�C���M_�A���K\�c-�w�_���O�PKXA$���_�w7��XC�X�q;�$5����6��b�����R/�n��^SovH��@	�f��^����5d�8��e�1P(���y�8S��3�[�`�<���r\W�vbPF���hW�uU9����vMX��uhT�4L���� ���Cs���b�Q��J��:7gq�-� ��\��f��E i�Tg��
S���~������R�<n'Q�k5��-�2����M�s�l5�E%�`�er;��7&}�T3n���u�TYd�r���."L�+ii�t��T)���)^
a�P��/j��'��tc��\�T���b"�N��B��D7���{��T�X���E���Pd'i*��D�#�����7��g�*Hb���-#E7I�}v� (�w��Kj�*H�
���(0u����^F���.��� I,LV��������*}����f�������4�>���l~��4_
3'-*j�$�����q�Yl��`�+K�}���9"�\rI(�[l�dR"5S6�5{�8�#��� ��g���� �)Z�7�Yf4WDI�!��pX��H���o'r$6[D�e�l�g��6G�$��*�&q"Khs�A���O����E�����N���Z���!J#V��g	6����m�6�W$=������6AK�5��V�+�<(�����jj��c��z�0����#�Tky��,����>F8���Obz�9��(��
0���e������]K'^�.�P~�;����Z[x�~�������t-�U���Y��R�@����J����"�A����*X��2�/�$yD�m���6|�FW���7�6��tl6�c�[< b���������t}�n����s�r�S���e��@�R��X���	-?z+���T�BHA)����Y����|�*�AD�78�q6�.�W�"���8��1��+��������E���B�:\L�������������z]X��������e��l��i���0����<u�p���Y<��sT��|���%��k���=8-�'��k������
1� �1�{s����:p3����#y���vJ�Yk�#��������U����p�\�P�����CUjyy k�;6�z0��8A�G�+�x�2�ab�;�u�d��b�H��s��/�����]-l����`�:�9&�:������9I9-�Y:�K.	K�U��Q(!��-������MD�$������Ch���z��&X�^*���T3���#�km���B������XB�q�L��C���U�gA%H}���0!DP
&r�%I)���C^ =��P��d L���c�c���"��o0
�����
kcaJ)��2����i�r �;�]��[��i�9�~�[;�lQ�T�}���GD�����%�f�p#���l>����l�g�P��Je��PS��Yct�,e��"�{����}K�w��SD>�����t���T&T�"��Q�bJ�����w��cX�<�~��j�iR�
D(���)��?��O��n�K�[�l�Ow]�?|y������cW�P��W6�p��i\����C��mn��Z�o}��u�8��u24�>V���@���1%���(����s�9 �L��:>��E ����?dd��>=��J�!v�K�9n���n~�klG��c[Ns���=^�����n�k?N�)���R�����E������5�Q;��yO7�����D�vI��$a�D=tK�����$�H�/R�ZpQ$`C���K�`W�����4��K���f��$'za���t�56���"�{����t�c��������6�:���=KRm��^i�
���G�TIbY��]:��82�o�y���Y��\u�$&
��4����h��@����;���l�*H"tZ����G�)�b}7]d�f6O$����p�]M>�Y������az��������U�~�!�e�*	�*��Hu���j7�"�-���3-�TW����?k�K��Y8
�_Yg��+�%Y�����j������e|�������|q��w�X0n�%�����HFt��]k�!GX�oz��	X�C��I��y�9��z�$�e��K��^���=V�z�h��J���9&�L��X�=w�������,w30�6����Y�nEs�A�<���v�2S�csk�'t��j�:H�*}d�fW�<h����_$q���� ��c�������[�,k��k�<c�[tI,�n�]��:�9W�yv���X���:�M��J����>�
h�JH2K����rl��MB����l]�UB�Y�;��LM����� fz�%+���U	Il��5��VkS��o�/��d��gmsUB�s�(�����[:�H���:�'�Z�pm���-�M�[����
k-��"���c1���Z�p�+�#��q��N�b����������-��v�C����,X��u�M=��j	}��u�RC$
��=_`�zvC8'��h��H�h�!P��R	^K�x������(����o����Wj
9N��>4���!������j����j]���/�s������uN����K����mN����K����-��
vSS��o�`k�zSFQ�#�����k��YH�W1��.��%��
�C�N��v�l�pi����%�����c��=r5%1�gi9�MZ��z�]����]ID��m;K�Z_����zqS�j��HB�g/����rC��W���w�:�����$7"��f��Y|H~�
�AWU���@~�UF�_��.�"D�.V0��jm���"��2�c^�]�g����WH��
�\���-#��VP~�y�jJbv���Y�HV�
����yP�*H"r���YBHVT	G>c��F�D5_]$��\��,7$m�����q#�r��.����`������U�^�����<��7ce$��3)�����9#�����q#�"��2����I��zI]���n ������~���4rC���_������gG*[K�}��V�lB�Ujy���g-��*����<�8�^��!��<��b��O����e�����R�Z�vT�4�BO6��K�Ej6yl}ti����z|D3T�C5�,R��#V������]�P���)����S����$�,�l���C@��Ox��R<FQ��[�'^�Ak`H���K ��0�X��Q�+��E^C"��{C�I5I��T�C5$�,RC:d6��jS���*]=xik��7����Te02`��x������H�O%��[G������[�i7�+DD3X���Tj
9.�T��@���?��5j�c�E|�I�/b�_��*����C�}�_�����D$�_��^�V���*�#��m�,z�U\ ��F*
�5z��&U���6�j3wv��7���'���3��G���4�=��8k����r:��qV���"�a}������X����W�+��NA��n��2��[��
mS����Z�=��m�(���%06��r �w�^��q�������~Xwc@���q�~����G�)#�K��x�K+5A�%�6�����^�O'�7��!N;��?��u�q�H��O�lui��H�pW�>=��1YkZ��3?���iH&2�:$A�����Z=��F~���
9k��:HF������������S5h����hH������������vF
X�h�y/�[�>f4l`�&��@�u���8��!�
�R�z��r?�&G���Wq��K^)�,�R���2�cQT��<�A�� -_"u)���V�����s���_�G�-��7��+>,D�j�5|�O�
���C��2���:�+H@�!aB�/���V|0/�n�x����
�'f&�c����A�H�QC�;7�]�
`�`G��3~����N�R�.Q�MA���0����)k�a4�����w�
dt l�=�Ro��	�*$��Hhzd|K�b�������hkg���5� �(�D��<����1][��>�S"@�K�pK��M����t[Y�>��S"��*����$�����)��a�">X�S$��&���4�$�q�\�C�
n�� rN��pk���eI/�/"�-{]|����������o�GOy�5�9��<c��1�����~���?��4o��vN�u����Q[@�U�eg
&��K*�=5���qm��0�s����O�?�L������6��3a��v�������~����r��B�9����3��p1O}�;����5+?;t���A����k@6��(`�,�1��&���P�[������>���b��5K�aI �n#/����B9�?��!��%;4�&���V���'g�f��J��3��!��?�z��9�M���4r��1�5�N���a�L���&	��W
9K������w6�w����$��Y71?�$�uI7W���ZV;,��s�����}��84��c�F�%'�JM^��ekp8�3��&�mh�lY�����F��K�c3�s1-�b6+���Z����S3��Z)�21+,9c�����aM
'�f��\��cV>������U%����j�~,.�E��������<~a���
S���x������&*D�7����R��?���!����]�+5���'B���������4+�~������������p�#i�P���XO��#Wb*�`#^�X���8���/��A�+iaP���h�!&�]�ECAw.;l�m�s���>"$�1%���Cq9T
^��*���!n��_U���m����mZR�E)�U7d^��(�6��\:�\"��#�a����7�H����L2��W5>;���d�BY�fX�S3������%g���<Z���D�L2�gy��&�� #c��7X�evv���l����Vct���2&������v�r�l.!g.�i,�b���E�F����Ws���*�2�j�@�l%�|9�6�p��
tI�r�t;�P���
y�
0���Ki2,���2�]�.-	dl1�NR+\��Kr��8]Z������V��.]h�M@X�f�gI�J��Q:�g�s�n6Iw��vI��%i��n��*�3��p6� �3_A���1n;��U'�A�.��&	�1�	�Sy��Er}�x)c�4�uY����m�'Q���JI��{ �QK�0�q�KFp�����f�"�H��86���,����� +�^���Z2�<�!���D��]�|�S����ya�gW����PZx��v����x�]�����F�3�k���QrN�^��1�Q��if,-���4�%�s3���'��
�@�������6���39�7(��l��g}E3>�i%_������k���
��>�0��\|� �m2;�w����oM��a���C8����|7��5?]�Y���"?%7�j�����npR�v�*<��:}�a8��z��f����|	������2��
�x[������r��5?�m�|���������|���p���Ta����cC<���g��Z��V�+�|k��
�X����������E����n"�D�����1������@��i�]e��J�<P��_���$W�Q�c�u*CM�r\����#���,&��D:����1�:����F�L���e�<�,2�L�N<��P�������z�	���B����E6O��(�,����8�����kq!#|�P���������|��^�&pT�&�:4���Ah�<�������+z~UfvT���)+���7��l�QH/�U�-+��=z)n�k^���v<D��5��:����sv�v��,��Y.�(+I�X����h��i3_��?l�%��[u�{��o@����q�'��R����n�,�j[���
�P�&��^u���n�i��]Gd�������o��<��
Rma����w^��B�&p����I��]�s<�%V�t����Ga�@/pUO�����D�0� �o�������cE*�;�H'�������d�UA�XUT
+TA&YgU����[�~��E;S4��Rt�u�F��BdNu���-�
��i�P�.�����e�.����Q[c]��Zf�������F��n$jx]�
u�������P�O����q�=1���~/Yg���lh��R�������?��@�U���p6�[dv2�`J������6�k��k6��^��	��U;w��2h�C�hl	��k��}�p�H|�����1
7`eg;:�4�lt`�c+I���e1<����0t�� 7����u�C 7���k�m<|M�����"�Wip*-w���E��v@�(<L��t�G�2��l������I�� �u=��V\���Wg�n��:AN�%�[uR��e��P��!^��+���7N3���f<���V�n:�s��O�4��:#��M,k%�n�K}!^r}�II�����=y;?U:*^:�&��OM�INYd�lvm2�Q�:�f�$
e ��R��{���O]{�O�'6i��W�M�q���U������K���k��3e?[N����m����j�(�A��8Jh&��V�T|��_d�S���u�������q[��?H7���nRG�4�R;�Z�k�Z���nmb���{y�t����+�Kt�[��oZ��{�M�^ �����z��s�����{��gQU��3&~���u_u��)�"��j9�2�_5*'��T��h�U�Q�����To�
H1,s���\a�&[ ��[��Q��0F���
��"�����sz�.����"^n�u7�
z���
a���*���t�_Gn��b�Cw�������J���Ijs\&S=/sP�0��Q�]Z����]���/d���%��H��KIhg��`W�����nh
Z���Tz�����D\�
��&����&ZG���Ai�An����gmg�-����d�l��/���1���oK���e"�d�Hh�����d�&�e���t�DTxAU��mk�h����-zg�C����r�Y�GC��%�
��6pv[?��)���9�5�4yv���N8���	���4��J����L�
����s��P����*�vG�v}�Ca��
�5���j����d�{..�;n\�����&���x�������h�`M�>pK��P6�_��&�k'�!45f�j���Jz���XO=dF;t2���c�
�5<-��?�E��������g���a���]�����)�9���5�lA6n�����O�m��X��],�n�)�K
@�����|Q��n�M�F��3G��������-m���w�A�n�y�K�������Q����lj�j���#us��#w2���<zG��4��2^��1��M���3�����6z��W�J`Z2��0-��L���ov��M������!�������m����/��~{B�G�'��6:�&�!U����'���e�E�<aL�*�K�n� L�J�2�es�������/�N �.��{�{���>���I��
�v���u��P6d�M��I/Z\���7�K��q�l��n��.���v�XeH���2������ �
����;s?.��j`�N#����RG4�HE�b?FX��F::2�y��hk�!�'�D$l���Ld i������\��a.����!7��3��x��f��n��C�zRT�C4��`/���QzR;�v��������W3���QE<_��������X
�-����7o����������X��io�r���\}cno�?�Ae�S���AqC���
$��<��hhN���\��Rk{'5��'q�����M�	8a$���/q��I�	S%0�tp�c��5'��o+���j�<���n%���b%l�����V�*��*v�|%�#w�����7V�dO�36���v�>ya�����f�-����.U#�R���r�����Q�ZzX��up�:��O.zP����u�����\�
�;�����1fG��S`���B�G�|z�>g��14:�������n�.%��e��s~�n���)�E��[�}�f����\�?��K}��#����x���Kn�6�V��oD��+�����d��g�����������(*�����?+�~��>�2R	;��*�p��:����r�D��L�[N`l��	ms�CKY�[�7�64�������a�����Q�����$v��A�9��6�����dn���,\�e�L�	�~����Yt�+�R�TRg�B���{A;������8�,�g�5���3�2y����q�n�{QQ���@����f1��[b��t}`��=[��4R��p�u�]�XF�]�CK
������%�m�"�J�n��Sh) S��3\��7��xG���v���|�@�\�j��G/:T����7���������y����"��0te�k�n?��8�<�F?79\��\��^�;pX;�������M���n����\�tK�L7���u�
��$��B����}"A��s�pD�LdP������
T��U+��a��Z
���4�k�%��}F��l���2v��B��7�}����h�M?��r�q3'�=��$I��7����<�G��H�����;����Z��;7�f�2��3s��s�yDw�h��:�a�F�lb@��	`���g�������a7�n��&$-U�f����� ���������7��?������1FX��_[c��(�������K���zg��~6��^O���1�7�P�2���c7�P���L��k���������/��|��.&<;���p��aI�M��}���n�7����9�s�����A��uI�'6����N`���%����]��0����4�9���������-y��]��1>�%���|��F�lb@��I�����5&�`��~?��w��6��4������>&���<tf�f��=���z2�io6������R=�ie�X�����	�Wm_.&��>���I���rc���n,�d��Bs�A������Q7�f�2�x���*u������]�����R7g�����{�N��Q����S7�f���'���FfO�����Nu�qFak�}F!U��K�QL���yB���a���0�C'�i��!�j#Uc���X?��`�AlsPv�Cgxr�\�6�7��WB+�m�9��$P#{.����@4���
�H�	���=��v�F\q���bB��w��<r��o;��o�9
.d���k�8Gw�w���aw��l�(����k����;q�n����QH���W�dv�K����a���(���3,�,2N�v*��n�}�;�3
3�k�U����V��%eR���?�b����`_�gk��Q��>��~_k��`_k�
�9(����Mr�}���}ml��������`_�80&
%a��"-�u"�6|���}��V����2�������&��0]���:q\������$n/��{�t5�����e����km����$sz'��Z'�f�R�e_k� �L��`�ag��:Q8�0�B_�Z[��`�n��;������i������s�9;�p����������e���,����GV������I�L����z�)|cry�n�t�k��D5P�PIp��H
��zF�@�J�jy��������[�0b^x9/�P����F��y&=���H�J;���H�Vt�E�@�����='�VZ%e�a���w�����a��>&�d������s&x��!'�����
v�t	�C��G�i�K	������I���m�Dt1�x��Rf�a���s�����A������x���<�o��v,��'���g�	���+51���wC��<�!���B��j��5]M���!}�9������������������{5t�o�[������N` ��9����{?�
I|�������6U^gN��z/�)�9}�8���8!Q�#?�Ns�t�'�7z�!���.�2��	������/���rg���:��$!��cA��}�����A6}\�v��9�LH�5>�}h_��-$��z��L�AB��R��#����E��z�2�@-���hl �{����[6�-t�2��Dr��+(n�'hxHf�4�����e,�A-Bw�A�R���������[�Z�K]�P)�y|m���
O�I���>�D��j����:'TL�b��nB���}�6q6�%79�r��;�f����(�^� [S?l� ��eGjM�m#��^���Q?��*d��.��Kn�F\���a��~��U$H�����En{FB�{��n;��8�D�Do�Mk:����������"E�Q3�bPn~8^��'�r-]�'��^���f��hZ�1��Ae�m��}y$�y� Ov����a���@=9l���������Q4������K~+��>���6����p�i��'�d�<�Y����i�Q�z�t
�[�����R�������_?�N�7K���!���B�=��%Pt�/��Qz�D8��V���j-7�6��\*x�	.��r���sCR�"n�}�I�K�@�m��C��U�y/�R���ez)wH_�h�_�i�k����8�l�����a�W[��N%�E��H�o���+c�X�Kv�^�����x�z�c��2��sv�v��,V�Y�@q+:s������j���MM������,��9o�S�o[���jxh����u���r�5�Hx��g�+�Y�aQ�i���Kr�����`<�k������������*�084~����������&�qF�U]:�O����"@��T
[����X/�����kpT����'���d�|i�QR�o|q�����KTV��`3�)�J��k��0�����=:*�V���ul! u��f��c�9��;2��^�#����A���w�{������u^�p�{�s���7[*��/���m���*zZ�j;}���z����3��o��L���/X!	���*����@%kJz���A,�z=����g�{�;�I��u���T:?�2;^��j�f���}��$O����h	Y��_u����*��
9!gu�w���m�B2�@�|PA��S4$n���(�����$�I'�=;c��MFP��-�<��?�df
��7�+�E]�>��;@C"�f�Z����K�W�+r����"��$�#�*_c�?���+���_�w��S9E�I��H����M>��
����3�o����Rr�kmt 4jn�[M�Pz��	UP��Pn��
F-B�l5�L��*�ZR���K��
P��C
�
��Q(��K��4������2��j.��93��r��/7����n���aI�F3,����:�|;?5��QCc���mA~��y�CG����kqz�_�6m)Z����kq!-U��TH���6�#G����;�G���_�4O6�g�����_zo����7�}i`Z��?!)�����&D�����R�z�e�K5���5�h+������-OQ����H+�W������\����8k�����:��'����+�M��-w���E��vH�+�3*��{
��d�;/D{O�7�u-a�	m]���{�m$���d�-��K���mH2��=�M3
!��Ep��oz������-;�r���?�o������d�4�$�����@%�-i5����x���1���OS�
H�j��i�MK�������sq;�X{���d|oI��1�Q��~�L�I�h����}�~<���k8m���#��.@S@�z�>-����n��Ixy�����p�r�Bk�CenD�M��#�4�I?���(��b�@� uy�PU[^U�VD,p�7m����)�x��ACP���������5ERs6�Z�'F����2KY!4o)S����Rh�N^!�4Q5��M�\p{xI//.�{O�v�.��C3Ph4��CMX��`a����@���Eyh�
�u]��vZ���H.���
�r3m7��x�-�Dj��A�z
;��T�kc��e�c��f�y:���7s��nR1�I+�1��<7��T������#�&m�)��]H5���T; dj�F�F���w�� �
Uz��C��x:T���7��������7H�G�ko�mf��~*%��U���S+��(a��'pJ�O�'���)�pv<1����"a�)F�*Q��S=tmM���Ex�%��r�0M��&9I��.o�<�W������s.�����RW�����D�G��3�����y�Id��D"$P_��aD�M���UmIBz���Ud��(��A�Rk��C5��HF6�� 7�����Cv�������k�y�V�=M;F�^,IO|T�W����L�_�U�����0t����V
>�����T*���*u��H�||*��e{����
P�n�V����k��jM9A���W��(nz5�����P�(�<��1��d���1
J��TC%w%L�������T�]�s=i��`��6�j3e�������&��`��Qh���pd�04�IK������<4�ZS��o��CS���oj��<��H�?p��)�c�1����"��ch��.��)t�J�b=bXM�BqY�@BM+�(LNdj�'m���#8�*�84�����������-*��9z�:��6iL��>izs�=E��H��!{~�}��6,#���%�l��K�!{.���x���0���O���LY?fcO��+&1���d���9���yx���E&�3&���b�}���s�ity���?&eL�>�
�z�������{"��1��K��L�)�i%KQ�t,��yT�/L����<������F���5��N�|W������.L*��G������p�:�^�6�v�
�3��C�J(�����:��o�R��K�
�����[rIx���;Tp�H��1����o��3}�M�s�������O�rSCn���A��"�� ��5Y4����G���l�Y�U"�����dog�$=�N��P���l���U$H%������9�n��W����s�pV� �[%�&{<{2�sb�#�,�<G6g)B|�;?�<������m�����
B����^O��5:0���;��*�
_�]���l��5a���������������E�(?�u'8����v��2��?����/�,:�����XF��^����\�O�6tW��x����b���%/��>nsx�`G�����2B�������E��K���1?�HqJ$8����;KY`c�!b���Ws
Y�z�Kr�g�sY!&���b����8�$�@����T��9����-��7�����9�����F�y�r����^��[=7��d��.A����z}jPO>�fI�.Q�U�LV��/�*����
6~BAD�<�U��2�KT�E���N�x5�P^��5��C�<�a����������DF��
���
�j�k�iG�BB���"v�%��#h���W���/�<�������,Y��p��9E0;�7p��4�<��0$��F�������jt����_����ud���X��w#�����z�
-��q�Y��u�����(��J����r^���1�/�Q���p���l�AvI�P��6b��}��*��i�H R	��d�;��z��9���������q����7c�;M�W�s����h�����O�b�Zi�h�=�T/����/y��?��?G���wxg
'����9��?��]�V������Y3�F�%���V�2c�����[9N����H�����mN��\��tvLp��+�MQU��4��P����i#�����R�e�6�3oa�C����YO�9ex��z�����+h�U~�9p���V������0�!u�p�l�X���%�*x�>g��C�m���0�g�"�ps����x� ��s�/�������_�����Om,���O�����r�X|Znw������(�f���R7G�������s^��;/ol"���$]�5�]� TH�2#�Lh
/n�L��vM��:�>,
�1�s�^R����6�c�-u�v2	���Tx) W��c\�bV��[M!�E��lNq {������k��A���9��D�\�qa��Ki{'q� )�)$���*��^!T���R>��S���Q���-�h�6�IU7-8N1�6���(��l�U�4��aY�s7�(�Z��-��.�e�����?�e������[��x�-�c@p#|.��NoL���#���8%���*���X	tP����R�:{$��������a�1��Z������{qz��/��� ���M�S`�i���*�����E���������P��tU�Y�)�&��eP���#=�S�����
)	�
nH�\?Dq�"y��/�������!3p�i��q ��P��1*���x\�I��z3)�8��9�����a.t�$�k�e���5�]�-y����ap.��$�M�������9�]�-y����a�5.��$`=Gc�-�k�!��S5-�����M�(TK��E��|<U�,wP��M����I��P���pQN;��7��c�
�7^=�]�h��	yWdRG#�����>hPz��������KpM������b7-5
I��2��x)iRV�)���H���-�]Hw=�-I.2�+bhj=�\\��vax�CQ�h$�j�
�������97�%�1���CS��\c���.�?[v��x�;�}w1<2�MT�
o���9�7�9�O�bu�?��?6E5m��u�a�7>����Y+G�&TEl�i�G��)-�d7��*e�������?���ss,Pc�m��Qf�}���o�=>}���o�R.QGJ�����<n_������	r����&�q��$CN+a�;G�%�,����Ib<��/���a���l�'
���/lM�UM�����5�N�|�@�����d�}7�=6������d�z�[��8[S�����a]��,�'�3�+6���`c�
9���Z<��z����d)��pGj�����2HWA��y<��M�@G���9���J�8����%�lVnh��kU��=n�&��F�@	�]�	rc}5�����������;p4��-�$���1/�����:��a�I	Sl�M,r[��K~)y�����3J�7��8?Wml�c���������NH���lb`����(�	�R�)�|��K�U��GZ�L���nY�%���_��2�(-�c�!�7�.�E��L`������EiI
���2;�4nQ:p4��-x�lhQZ��m�
N�(�M
Ht��Y���q'�����-J�f� ��%w������U�5�E���lb �r��0����M�,^bY��u�����Y��*y�(lj�m��*���I�C��D�.T	�hl���!v���a��-�?��Z%���'�������(�������Y��
�h��B�G;Pt��S��_��Q��^�*��[>R��S��A"99���`���+����jae�0�
�F�|X*��+����M�P%�����R9L�^�������o�xZ>tJ!sX>��`����F���a�7F������E�]�/���G����7*e����bxg�<n�K��������^5�������R)�� ���A'�v�Jx�p��T�P�/��5�������F���>�6��;�5[>D�&'����uv
�Dg��en���Av���(;�|��p�x�d����f�U�^�v� ���]P�m@���{���V�4��B��^t�����':���&:{9���ma���3�PB�����o���o�J��4������vmta�TB�^����{�g��[V7�p�%���|UU>��q�yw$Sv#��E�4�c����Y�E�C#���;����I��&g�#7��Cv��b�D�9L���f����7������|��jg��C8�/I��F�������OH�����������H.�F��iG�lr�Pt����c�J���+���s�9�7� ���r@(��
tap$f��y���m��@L�������@�I@���.����5=�C�������a"*��%Mf���+�V�5�o���|���i�@����rI�F��KC���
����}��~=,(��n�E^�;t�mZX��;�)��^}16�,�3E��`+�@���>��� f�=�/��
���,mp����A��aw���W*H(2��:0I�v���9�����
�T'0�;PJ�*���+����RAN�Y�.�#�K���p�QT�W-���?��w�JX�����Y�L��1�$ai��Q�����B
�[��H�*c�?1��3�:��I���9����>=���#�E��8�S�2\5>��_V���v��_����\����5�#?W�g���o�W"^c�_4sq��>��#�����r��
����K%�#�|����?@���c�����%��
Q����eDq#sv� �VI\��;o|2�~B����~M%F7>g��*��h��"��5����J�F����U2g��k�r���M�o:�w�����Z�����msX"�U��GH�TD������4dP�R��Mgb?B,H�U*bf�q��3 br��|
u����&��
�J��(s��C)z���������������F�F����;������Gg���y���G�,�[���"��A�JL��E��;�Z�j��SWI������W&��
R�!�����I��j�����t�����
�
--����e����%���(��#�$�U��5:�q��9�j�"��T��u�����
�h�@'��.	T�������6?@(����F�H\r��
���u'������dA������e�J�c-�*G�����m�Q�:?F0H��'����Q�m�I��U����r�!�n�C}�0�MU$���D���R�g��y���2f��9��D�BE����R�!�Azc%����TnkNn�P%�6���rj�z����	['�"<��+%rFy���R�������[q��������H�����u$~�P�J��]H�,�{���?td����
�
gX���[��'y��7�8-�w=P<�p�V���8}!���O^�G��{v�`}9� $��F:9��83�t�<�u9� d�!/�=��C%(�������A���)�Od��|�F�mj�w�+!	zG���m�a0��c���G�3��=���.40������H������k�07U���2��G��.D�& $��s��2y��+�����#�������I����rk^�>������9�C�e�"��wk+�g�|]�����q� ��������!,���W�A�:Q�3�DL�����?RD��#��ifD���9g��?�?NFH�G���pf��N�&�L��}^Q!��Ll{��Md�����?�������fq�s���E!�l��(�8!�.�=����]Gx��GW��un��]������hQ|xot�WJ�{�����fwe6��"B~q4��i!��v��P�p��[�����R
�l|����3��kr	�rg�p���yE�\����k!���������;�-<���m�,��s���fC����j�?�?NDH1�9;��3�4��@�y_��sK���_�[����?������=R:F�jr[�
D�k�5����T�L�g$��rAB	`�����_�He���E ��B���=�+�0�B������	�c-Y�e��������X�Ic|�Y��w���:�G��s������[����X�xx�D<,P�N��V��YB�Z\�k��wb��?�@��U��k~3������n�GC��q��F0m�����x�M��[y����%;O�-[��9����T|�^F���lD��'�txd�*���F�Ry-���x��������j�>��W�P�p�.�TK}v��.���U�u���N!���H��X�������2�3l^���k���)Dw������f�F����n��&��T�[�+�f�9�,P�'�����}�I�n��~�b������*�"�����g��=b^��H0��I�ab�H���i�����a���t�
GQ��S���(� ��I����v8�sM>mk(��%�+Z@�n��A<�x�a���#
FC������Cq)��o�����7���w����y����3$~o���o'����l�um#54���z���=vvyo�a����TH� ?���|�{�=���l��������@��6����1����5���>TK�?�%��CTP����|��GG�3�,��Y���%���)�uR	��/�j�,^����hxo��k!���/s3��l���$��b��+}��{�*~).<=��U-���!*�����*�����aT�Zl���{q��<�[��#+�������_�-?W�CT~�z]t/��s������y�1k�>�Ue~�}T�_����C�xq~`�����U���S���DH���������?1aO
69�B� #�A�w������1���"����t�X�X���$��-!���b����*$c�mt��{	���y��}yX������bO��b�,�����x5�G���Y]q�_�d���BL|�y��V|An�t�/��X�Y��Z'MaQ��6
5�j5e����������QC5��X�_�M1���l�A�
� �z���a[zK��r�����j���c!���~���u;|�yl�K��jw!�yPu�]�c����$�!��[m���:*�5��p9Z-��G2|B@��xCD���(����#��/�����+���S�9��cZm�mH��)��n/�=��g����f�/m�����jC�����eM�Z�w�e��/7���a���&S�r�����&�?;��30�$��~,�3n~�j������*��wvv[�+���������p��[�yc�M����Ww$�m-�>�K__�	����N��u,���vE, ���)�dM;b5^p,���xn�����Bs3x����F��`���n<�&d�%�i�]��z�����v��k6) i^�v��I��#���]5lfk7�f��'
�L��y����a���7���y}�����L�8��YUO�}Ss���J�>b��������},"������\�[�.LRCn���ug)��'kk��&j�U�aG+cX{���e���X�.�Q{��H.����K���QH����Cj�
=�t����;�3
I�c���H���S���Nu�qFa �0��|��1w@>Y��%Y5:!�GN��!#�^�*��x�����y�K���^�f<��kz�4�����%�C�K����}���]�kXB�Y;�	��S�����#3c��yJ#`#�G�E�,�	��Hw �f�K�1>�o$k��`k6Y o0��Dw��&s����P#nX�u����y��t{}N/8(���a�s�'�F�Y��,�G���nX����	������n����`w�6_&k����0��!t�0.�M�����%?TVu�u���}��:�D�A�Uc4�:p��J�:��?���YE�dBS�!���1c�m���!�=�_f�K�L��c�-t��
�KN��5�3g����qz���!� ����?cnV� ���O����E�����9�����JI�G�f9<�$�4m��|&�����
�}�M.���?g��3������N�%��}���^2�{�J|���i�X�����7I2�`�!9[��<���<#���/_��3&�r��3���{��c�$�	4�B�@�!OK�<�'�&�p
1�a<��+H��-���R{�Qap��(�x�U����]x�6[����<r'rNy ���Ww��9r���%��r��Z,��C0�u���/y��i��Tx) W���
=F��1��r5�!qp��;�s��t
3p`������A����E��) e{����'������8|$e�gQ�oCM���F�:��O����;s�F�O���<*�k�9�����E��wTu�Se�v��~�e�������^�.��k�{T��9���������EM��:�����&���U2V�z��6u���+��_AH����E�}s��A������G}q,�O~�V����?!�4t��#VV�U��}�����x��y�V��t���,�v�-,"PC*��[��]�w����6J���$�1'[�)��k�d��1��b%6F��Q>���M����q�5���D�'r��q@z�'x����_�K#�-?��jF9_���^(nr���|6q����?|�]�O�����]V�L3�l���<����~h� �p�h�)��6���^n,bw�;K�E<�����A�4�h,a�/���a�)���S��:.K�9��<�V}�����a3���($�uv�8���=z2��a��I�QH"��3	9��������G�
��v�qFa�����?�c~)�nY��>	u|���R���z���s��U���[y�������}YJ���Y;$P�G�}w<g���U$�c��K4�+5`u���b���
����-Kep�m&Isr������U���>*��VT��-����E�<���q�1Va�Qa�r��s�0�T�.�����{���i��
���^�^*�;���)�2~����;�_����uj�60�����e�^��R�p��5���=):����'}\3���o����B�KS�X��}h��}�v���B�Rm:p�Lm��H�PI|<�Z
��}��QLda��c�VDb6��8q��5�,�5���11��"�����e6M�������s�XW���v6�bSA+�q�$�P�kS����kk4��&��@�L�@�������N����A���U#���D���c�^?�@	�NS�`>��8~�PZB������>?�^���f��a�n4=IR@��:�#-��d���h	������b<��yU'=$�����r!�'�rB*�*v��e���'6r���8
���`~)���`��
���7�-��� �@�!-$�����;����^*���!f�	��������<jyV�y(�#��B
6:
���g	��)�mX�~IpY�;�J�����C��lc�i�+y��a��=SHB���*rH����Ro�c��c~e���q$�Cn�f�7V/���������K~�/�f�u7+
 k6�8��"E�c��F!�K�����J+s2�����,-�{��/����Kg�y�����������1?1	��=�%M��<#9���m[��-�_���R�9�B�����N�i�D�=j����Syj� �7
�
����Q�.T��WSv�e�Q����;�3��;Mc�Gc��� 4����&�Z���v�������U���(���M}�Noy�r�f�Fi_�����U��U��0*P�r�`���.Ua�eU�����E����7��H�PO�I=u�I�/[��}l^��h�r����0x�m�d�������X0�?H����'��$kt��~�U��<%����\:���H�2�F���d���:�����-wDA����H�o�����'T��+�,z2U)��`�����D������i������j�#*S�}|���~�b�Jxr\��zS�7�P�;e,�+�A��KU7��q���
F�������xY������2B��,l�k�����!Z	����2?�Hq9F�kO����,lW������"	�'����W���)p�W����7�����p�;1��a3/�8�$�@�K�����	v��3��a�.�r8�$�Ch��"Z���W��i�	>?����������A��$��c�����s�K��a���A������i5L�
K7�Z%��v�(�3��N��"T7<�N�Z��V�����?�>������nK�@�k�D����_�y�&�u]lC`��K�����l(=�o�R�#T��[���)���������E�T��0n�9}+c�9�H�,;��.�$Y�Y�E��}�}3��
'��q��x�iLE�������(���q�Sg�O������>"�L?�h�w����:�-����XF�o���o�����9�M5Sd���7��}q}��������2z��������[�-v�������x���UTii�Z���O�d����~�+a��}����u����|���E��r�}/�����s�}^����' {���s^�0
�y*oy>Q�l�
7g_f��"�F�w�F�f���}i��z�K}:�fb��W�+���q	��F����9�6
��f�tN5���k5
�^�����ht'k�\�J9����k�[u���[�n��lDJ���2a�J��F-.w��L��S�N
�lU��D����F��^��kq��LX\�,�u�eF`M��z���M�E~m\���;���(n���W��+m��:t�57��p!��p)�l��Y�p��I*��Kf���R�m�i�	�o[!��i��>g�����i\�,��-32kN���9��9U���e
�5m��f���-��?'��_��6��Y�&7e��Zu��s���PRT��S�L��j��W�p*�)�f��@Q&U�"#��A���J��������V�:/���x����]*P#�Q�����6�M��$T�C�/2k��m
�%}���&�S��^I�O��N��691�M*�)��{������-�r�����R=��ViZ��p�6��Bfe�B��Kv3vZ�2���pu���c�o\5|�)����q|��:pI�A���SV(e!�ap..��o�Z�Bo��o���n��E�j��������[��U��]%oUb
��o�f�7e�����
<(�:���18����jXh����q��lX�(��+����&b��X:]���z��I
x[S���_]�9h1��pTg�����f}�7���
�������[s�{� �g�`���Q��l�U.m�p�N�>�4���M�?�9I��a(��X�V������X��x����������f���M���o�.�&�x-���������Ce`���	�:�.#����������7���	J�6�F��MFPe��ywy��*�R���pf�n��%&�f�3QH��s��i�Q��y��T��8O�w���'Zf��nx������lgd��"�U�h�h�3g��.���D������T����t�U��T��j�T�m����e�����m�)(�/����I1��b�FZ�{J��U��j�'�.{��h�E`��ex�Uf4���2��5��)fm�l/�F���l��g`�2(�'����S��1����i�EO7�BQ�`)gp<-p(�Bl/`p4�W"`���n��-	Q���J���*�lX��A�8Z,Pp� �i}����x|dv\p� i����-0�`��Y�������L�m�� � ��
EQ���E��EQ�C:2qQ8E�8�i��#�����P#�y����*��P#������r?:�
-
�"]�;w�����(XcO�����z�9�w�[�{\Y�D:b��v:h1�~*����~|I����0(�������K�m3JUe�.�3F����_�Cl��,����X+�u��A{B�:������V�W���	�Y����_�z�M�O�TtM��C{E��Us=p��f/�_=�Q_�i��?����e�)����w�s���7jU}��S������F���2l\-�����u�����{Yu�Wrn��i1���������_�$�P��
R
l�Vo\
�j�.��iRe�r�Lc[�Xe
T���[m'(T��T�.W�eZa�VW!�WJQI���$nl�z�R�j����\��i]i	����jGQIu����R����y��;�j]������n
�HWF�J��'1(�`��u
��S���>���v*��0V�4�d����u��&�	M*�u� &�����*dzK(*��,��v�_k��K_?���)NXI��iEj'���V%:�P�+�d-D�!����V<�/yUI����-����,��V��G���A����^m���
9���[���IO�"��$�
�R#�s�zV]B1o�y
wu�.��Dw�N���*����J����g������X��iEi������XMG�F�Z��SjIk\+�}hi�]��I��HR-}c��]�J-i�je��DK�
�TK;I��`��]������B���������]��zD�� � �:`c���hr���*���.��&�|�u@�J�_��Xo1�W�&���,0���Gt�uH�-���]q>Ctu���<����]���
�5f�c�$x;g�.^F���]]$�������f�1�@g8f���x3g��$��u��[E�o����t��3����f�[G�mk����!��}���v��4bL%ClU�����d��]<���C���[>f�vc<������.���
��FL�!\#�M�a���:���V%�mL�y��dRt	Fgf;��m'5�A�Aw�uH�AG������,��-#\kc'jsHt��-����#\%����1���,�f����u@��
o������,z��j�x��	�T�{�;l����[3�M��x�(�X�������bmjm&;kL|i9���zRX
b=)m�
���4�'&��t��x>���G~������ ��)��a���buV�)�*�&EI�WE*�IWx3kf
��YCS@��M�C��������������������d���s�s}��~b����r�?��D�B�k��h]������i(�����W������*��F��J�.y����kQK=^H[��GM����im�K-nU%*}7������������M�t�n��VU��}8u!]�E�)Z���t���������)����X�G�K���������2��k~���v��x�R3.��%d,�7Q���^PY��R�����v�M��L���nZ��W�%�����E�%��_6��E�Y����h���E%�*]����E�#dzy��A�.z��(�kB6s���![���������#���D��sjN!!���&���p�9Bh��n/jJ'��8��S��nk5A�1Y�I1��U�E���~�M��T1�sR����tPL*���J�)HV��)?��NA�='�XOp���k�]~�_/�v}���i�v������9�jD��.P��@&A��#c�Kv�w��q���(��P�2�.����m�=_���ov�H��MlS`?�������6�S~*����U�a��HMJ�o�`.]��o�������$]��������v�8��W����K4%�?M�-�NM�B�-dR�5X	4m�g�uG�3�{U]�}�rRg���6�Lg���)J;Z�*�Z���^��U��T�.XO�
�_r�������k���t����_M��Sv��e5�e3Lf���9%�����<\R�))����*��(�;�d���H� @��_TdI�����F�����<���8��$�����P���J(��ebT���VVc*:�R�7����$�^�I2�����\\��'4��%9(���b ��"�S,���f8�#!��!�w������~5W�E�V5��Vy�^�[������8_���^�����?���U�p��d?���!<6�z}8�W`m�v~;�6������%a��2X|�"A�F!;
P�!;x�"@l���`��������O��c��c5���\3x<���T��X{F���;(���a���S\��54�B�x���xx����)��/ra$n�������c�Cy>�a^(��b(d5PA�^��PD������
"���k���RA,�J(2���]f�!�k�����dF7��G-SY%��g�G�t�[�	�����&�k<�������I5�!����Q�-�?2$3�������U�h��+C�Q�AK��� �l�)Ph���f4H�n���0$�C�Q5��i��mo�(��A�����(��A�����(���-]I$^���n���t��<8�<��Bb�*4#�sU�������4cdt3�!���vS����[2?)�L[�J "�{K�!EWBQ�:����u�PzR2������/(�')���@;3Q?I��"@��leP�$�3�L)�Tk��`I�Y+6Q���J��d���Y+��A3� Yh�����������������s���Z�K�J�-��)/�D��d'��(�����h�l\�*����(��N�����P_	k�a�Ar�+�v�_x5��|
BX���*T�B�KQ6�4���	���K�����&Ay��h�`��O�0��P�*�o7u#~hN��}�Alp�|��@��?�����W#}37�Mj�uTt����mww�u�l�,L�Eo�#:�{�qs�<�����68��P�7����uE��Mv�x�
Onk��Xp�����K���bO�U�G�@�(���w���P\�����!���o����������vAL"[����z;KPq���<"
eK�dO�|$��(*�������fe���r?6�h/o�&$���g����b�`F�_*v�u�qPU�A�1�k���������bo���/�5���%�����t�����\S�:�=���
������=�������W��������H�iU������(�E�5��Z����Cg�����S���h""���b@�
��S��/��[���R�K���`i}9���b���^����E�Z���]��D��BQ.��Xt���
h�����>��v���l7
Y���x�u�t?��|�d�T��f��&1�aR�
#f6�|��%p��I�6���
����-Ks
X|#��C,��]"��}����
w;W���,�K����.G��1��M��W.�e�=��x�<���/yV_�i.X4�z�����|�U��N�pOR�����if�w��rB�	�"U��T�d�7���!?����?��>7%pU
��& � �5S��PTc'
��bQ~��RU\�f�����\�Z�����/����^��f�����)�}M�02��������*&��l|><Y�P��[��+Svz�V�4�4�����|�e�(�v-.��r�����?��`��j�7E)��V,�S������3X}]Z T�B���Q6��^��`�mh<�c\���&��y_pM@������a���s�)EXiDx�"�OBt���H�v��*���<�U�]x�����'!:��5�E����S�\�*�����2�����8�6�u��*p/�D��0�������^�w���������t?jRy�/Xw�>��[i5������H��'������t?h:`6�t���y���k���OT�t��@S�%���)A�1(��R�/kJ�Tr`QY���R\#�����g��S~Td�7W
���s�`���#��aVmw��/����G���C���7��y���-W��D�^Ei2Q�q�7�o�[e��9X�&Qk#�/:������9H�8:'���IX2��Q�r�=�u�0|��OT������(�Y�0�yl��5�=�kx�t��ktQS����$�5�Y_���V�$�
�Y_`
/�M��2���l�P�AZ��R���}�+��@
�p6��c��j����Xx/����l�k8L�]r���
g�I�1�Y_`
g�I�	ksI��T6�'k@�7#Pi�����5���-����1#������a��r���[�d�hP�
��gnU�
��	���b���*��k�p�A|�n�.L7\����@G^���B!�Tj�+p�EC<���2S���r�P�'�\���������/���``+^s�V�6���x��J��-����=��.�6�-k�����P�<g�?���w^��APz����^��c�oL������{�p$����JB���>v����k�L�m�t�mKz��+Q��V���1���j<M�K�����+����>��%������a�E���<{V�R��]���h52��h52b���F���F�q1��d��*���j\	��������b���.��^���!�����<2��{���*��	����3��[�[wR*�#���A)s��p����d�[F�4��,�����h(�6���W��6z�;f�0�J������Y97kJ����	��Rb��Qu�(���.��^�o3����;f�1�J�6�^
�Y{����E/Ue#�q��U��?�q�j3��@� L�q���Q���X,�������`�I��#�<����0x,�-����0x����Y
�^�JW�������`0P��f��A��V����A��U,�
7�+$5�
��:�Tf3���:XTf
3�h�z�*s��tC���`P�K�����@��V������y]��O�E��a�K�ZV���-;}�z|.?G����x�e��L��}[�k�m��}����~'U�oc�J��M�����~�o�(�M�p�_�AW*�/�t�����Z���^��b}/��
U�HX)w�Zva������i�0[M��U��T������qe{'�Q5��N��@�\K[15w��;��e�yh��z�0`3z.��VLM@�����=�Z�=+��fs���s�-���~��y��x�>W��)����	ZO�,��P�� }l���L'��m�%TXK�i�������IW�����T���>��c#\_���~�x�o}�'��F��w�Kw�#�����z���W���x�jl���&O79w�o��*�z,���c"���Wu��Sq���!�D��kTfO�<�f����������c��~�oRY��P�	X�H%[T
W�[�z8e�;�y��*s�Ik���F1�=n\%/l��_�j���V���
62F]�H���D�6�C��V��F+.��\��rvao�s�Q�9�7l������.�h�:�T�
��P��n���^�2v&��^��/�)������~��f�7��>�����A��s2�J�tP������3{(No�+m�''�����+�o�G��N�&����U�gR��
���E ���jA`�_rQ!?�2	nI���PQ!���2	+&��������w����������	_V��"���V
��/�A���$�
��26Q�A��+0���n��6����(}iE>�d�r���$	�B���]T9-��T8��S��[���{S�Tg�3����h�R73��[�Di-�EU���z-��'h�����4�2	*���r��^��y%Q3}:P[���=0Y"�V�+j��D���R�9��yA�V��D�)�]�����9����J��ye����,P4%:Q�sq+���S���g����*}m�tI�fC�&�k���'&Jw���j�J�)�*'�O�k���P�5����Y�y%TsU�Y��u��Z�M%U�/��,n5'�(!s�TD�����_��l�$�n(�&�Uf��"�L�N��>g�/�h�b���s�����vg�������E�F�)��?���a$����.�<"�������v;I&=�����j��:��x-Us]�Y��J�j������y/�3v��C���0T�����Q��oj�-���y���3U>����IR����eF���3]����`��lo��n��d\��mT�Yg4�U����8z���3�P�k%�l���{���l��%|����|j*nX�'���(�ij`cQ�Z���=@�ZPL��XQ
<��&`% �0�y�:����*�<K�0��X8�Kz8�\�s���t���5j��"VHQ�"bK��X��uf������c�������8�h3t)KbW��*��yA�`��#�&��.q�1%0�Q;t���~�
}Uy~���bD�H&���%�4.\'��y��cEWX���^�j����������7Z�����Km��������0~~~�"�o��xF�BU	�=�tm6|LE@><������������-���l���$�����M��#G\T������������{�_M��}��<\M@>@��A���)�����v]9h�*����$dT���V��h[�f
\�(M{L����W.�
J����wD��W4��CU������W���r #��9�!��4���*�N_�IX��{6��b�E��:LT:�VAt�bu���C��<zc!��������X��`PR�!>�ZO���|{��Teo�U&BpRe���6�k����y�N�����oD�H]�?([�VBpr����t-�FU}t�����1�RQ��P=NO��o�c|��p�����i�U<p�U��aU�F�J��e�jp�
���T���4�*;Q��r���p+B%�����TP����_\��x��)p�C!������T�J<��
	IP��V������Kv;��lR���@Mab��'N�����5"Vi��U��b5���M��dX;��+B�z�;@_X�����D��5�e`c��i{}�N�2?O�������J�����D������^<�VXY
�j��J���M�����������J�)�Nx��N��]Q�j+��f�@�v��!����s��F���x������J���x���)v��:��+��dZ����9�����l�J#k��!�h:m�<��~��ST2����U<��w���rL	���/�~��
�����v��v���{�+��������(�����?�1�n�o����v��>����[Q�.���b�5p�U��|���*��x��{��N������������������z.��Rm�}}�����X��@[��,����\���	v����=�Q��@@�2E8���e��Z���}�WV��,4�o�4<WS���P0��\?��D������/@��*�U�zf����
���.�(���F�hz]��~��5��4�$�AY�O����B�/E]�>�W<�1q �.(=�AW�O�@��b k�uC��/)���P�l�(J������N+@&����/���V�3L&��������*�&�U��AY�O���*�fb��[�y �0�����2����$S�Yj�!
�2N��HOY�d�5K�h9~�d"6K�h9��dz6���h9��d�6�N���7��m��Y�A'�b�w�}�P�����p�AK����L-9�y����1i�$�6W��B��H�i�� �S-?tn�,w���-Yn��DHX@�\c��d�V�g���wD�M���
���m�o����������i�	�(�/K���Ac�������v�kM���d=�X�q���!6k�8X�q��0e1.)�S�& �fXOC8e��8X1������u�q8���O�Z���J��������Z+��c����qZG��~��kQ�,P^���7�����gf�h�m1<#�T��,��K	<�3��4�v���H�p[����L����v����m����9��w/�b'�/Q�W�\r�S���H������`��r�C�B��_��9��/��)�
��v8 �f��}_��������O�J����� ��f����2AM���7-�2�0+�@��*�tme(���h���?�0�Cg���}��)��`������*����#��2���I3Q�������n��w���H�/m.��9i�/m���q�Y��K�������{u�_��������Bp�Ft�lD��Ftl�C7�s~����������ytx���K���]OV�2�@����������uY�Gw�z;v\?���fx7O]7�{��2s��ta�*h.p���v��-3�#����8�r[q(��Y���������������5e��H���[��HS-	�����P7����D?+�4�_��?�%q�V���#�aP:EF�������0D����U����H��*�J��$'�JK��69=G��(;P���e7XM���0�;����T,��<�SqU��:��\2��<��{I��(gu���Zy�-�P<��,�����i�Z��6��O���144��wi
+/���!�N�DCq�H4�&��*(\��m�%p��,����X�����9>	i�Livx}y��p���������>a�VG���(��D��x��v����:�����uT�v1�V��M
��n�AS�W����@[p}�xaW��q��({]�
.U\�:mM��eF�2Pv�2i+���*���(1�2�YUA�lT5P
�Z+�
�&2x�n�w{�����3`�)���:�n�h�+�����JX��������C��L�;��9)�e���n���9�)����}�Z`'���Lj:`��M,�����drK��Q)���6����I��I`[�6������_�q������>��CV��W:�X�	�p�i�E	;���,,�Yk���m47J4�k�m��Z7$�OVWt0��=m�I����V�f��'z�d�r�E��x�[2��T|��M�[������(��,��V�����v���7?p��,o�}�23tz'~��+�#��-tkA'Kt����!�=/��X?92
��������v��Z�|���ME1���(?��-����ETxL�����������V���,�f�l��u�P�!��[N���?�
�
�j M���a��
�(���1�Y�D(/�A�z6��_��^���x>�y�
o=��$����}Q�|��b����\. l�����]k{�5Wu�@=h�[\�c�K�Tt��������z������6�U����W���q'T�WD3�����PG�-0l���w��c�9��r3G�:��_5��v.M�		��v�jd?�u)�v��f]Q�;�������j{�D���tV�:_�|WWb1i��h�)S���r�E��b���(+�-/�n�{��y��R��V�|�Nou�?�Q��ec�[%�P�Q�+d�#R ;q���V�g�=*d|�
��7���0x���U�S�����h��{s�\�sq��DR[����q7[.��{} ���"^�K~����8��c�~�b�_�1��J�y7I������f���W*�<����3��/�����A!,���Qoe�T�����l��f ���r<�lwU�L��Ff��T��!�9�2N9���2G�4tG���v[����x�<��k'�3S��������o������"��������v�����p�S����h����>��5�nlO��/y�4D��=7=���W-�~^n��_iGl��������b;/�r�
��);Li��4�h�pT�F+F�����P5�����z�_�MgsM��M�����d]�����<rs�����:�0��4�]}��������	z�zP�K����@�
��Z���i�j@����q�\�:O�z�T?���9Lx�i�R�!'�����]�.������K$�G�{���^��*�&��
��b�U���a`=���5�
��L����,�aF�+��pAz;�P�TC�Bq��$�u�z��W�������a��h��;�s������m4�K{�@=��Ks�S��M9��h	������|������#���M�����u�
�"i�����%�l��V���JK��������V5>U������4����i0K����#����'�����
'��I��N]�H��=\O��sqtWB]��"���'�+k$�`7�5�<����m2:h�MY+����P�"y�V�����4
h��X�C��,��Su��5��� ��������E��������x��	LAd�
�$*��@�~�9���?W�8:��Rc��b���Q�e�	@�w�D<�������h^.�f�+�l��A�8z\���-j�L�e���AA���&"�u%�|�
��PCf���$������F����&M#�2QU�$�����<��kNj>.���0E��v�-�S����Lv����v!Vl�Q��(�M�US�����g�R��X��i�z��������F�2�(A�v�������*t��Q.��`%�k�Qr*=h�U"��Q�
=h�l"�[�Q5=h�\j"�)�i��0������?��i�����3i�&��P����:����9)r��	-w��<n5Y����#wM����r��t��/��tU�C�|�U#��I�:������MV��u�H��d�HQz�GXH�RgN�1��X��@b ��P]U������Y�+����WTUE��e�5�D|q@�,+�2��qB������GY%���?5���j�,s��y�~�h��J�<s�
 ~�`e����y�~@������
��Q��>X>����@�����+�s�h^�e����M*��F8�!8r�>�C7�<���&{��U��!1u�Q�+��g������w�����s��/z���)��i����>���O�OT�La#9N�Q�-?���M�����wN���@��u���@YOIhY1�!@	L���aFr�3f�d
��?6���X������t
h��
�-Yh�(����$0F��9*R��}^$&k`��Va[�{"7l�����Rm��vIN���F�j����j0��o���(��Zkl
*h�C�n���4]
�8��:���U��B�eEu ����4�N�5<�%3��r6�O��1�Tm�h�1+��h�}@rG@�9�� 
w�:�0QS��#Y	�pg��� �h�p���f�m%H�-�dBA����.S����|����B����]���y����&���q��U�5)�r;��`"���qt�*��	��F���2���M����-j�re�5�1���5m&��j�
��A�������*�C�[y�s�V�����
��6�����?����(�����4��K=$�*9T�S��
��!������LY����x.��'�s<��v����Q��I*~����JKrW4�v����j�}T/����'���[����j��W�
co�O�:���?�"!�z	k����t�
�J�K�TQ�p��k�w�@}���s��vz�C��:I����3~�UQ�*����^���u�0��F�qu!}��U@���{H]
=����v(W��	�q�3�!�����j����T,���Q�8I=LQ�Rh���e,����q.��u�j
| D�a�j��=
���v�V�.�9��v*�����a@���M9 ��28.�����4�Z�����YU%��	y�0m),��.&0XU�EXCor���m|��zU�n�)�$QU���%����5�z;�����-������GY3��7�`�@��Z�{�������6)�PW�6e��E�BC�0�)L=�-��fU�a�KN��:������/(_+Y{����r�[kn{���{�����"6�oJ�CU���M}u�Q.��,�8��q�3���6 ��2�P��s��~@�2?�Xqt�yS��ir.�k�Cj9-�jX�5JF�N���hR�8N�X�����5�����X��7�)�x�%�i*�2���!����J�+HD�.�8.��"�������Iv���*�CGZ��z?��3��t�*��e[v�l�c*�U�nZ���:�����/| �L A��5���tW��/�@"�LVV��[jr�>@�*��>�.O�ZG��[dj�C;�zgT7K�*��;l|��C�v����vy�������+fw���M��c�an����T�t��
�D�>���(^�������]���T��]��AL���[|��SnR��l���Q^g�T{�em������*����R�����Bl��{}�}dI��G_����,$�uv	rY"!���o����\�6�4�_���2�j."���Q����������nR�����!"�l�v������:��W�mph�;����Nii��-R�e_�Z����Vl����/n5V�l"8���SQ%IZ��L��z ���4�N���*�Rb�=(i�${��V�c��7��u)���������,~O�I$���O�
�7� 6K>q����7B��-�{���,Ui���I7�x��w/T�n����,��nf�W��J��X��d��+B��_��������$C�e� �*�^<t��y�
���C_�b����������)O��#������4�� ��'�n��y���k.�����*�iv��wa\����h�
����d��ZcU<���2��'�
Ve�q�%��:�����n��CF�n����T�m���
c/��=H�2�N�HTq>(����e��Td�XsV�CB������JOv.�b����������{6��Q�uY����@I��(2MHn������<M�8n!?Y��%���x�@8�b�������w���;:6,[�4hk�5-e<(o�E����q�e%z/=Q�
h����q/����vA�xv�	�t���s0�LQ�t���<�cUc%'/I�J�N��ro���F���.��k��dIz������H~/����A�/;te1�nk+�'FXN��v7�V�\E%�^�"v�=Y���LW�u
x>�Ke��n����}'��E�s�3	��aKs:gQ�!�+��.��o=>��:{
��b��I� SL�X/�8(^�`��<�H`����qq�-{>��v=�]�����D��<.����+~��H	G��'	M6��&|��P���A���_����P��;~�O�����fK�Xx�/q%M����rT���3����M�K+/�k�n.��^n�����k�����f$������@�����������S����U)h�;3kn_�P�l�������
�57q�f�lv{�)�L[3�-Nu�x����s7y�\P���~|�^SK����85��q�R��n��=����WZ������~�fZ������a��G�\��*p4���_�����|+`?<���.J�o�=\��}~��3�5?{����F*�NuME���Eil�u�Qo�~U��/-�AZ��R���(xk\��{r4��$$G�DG^�5s�'���.��E�����uX-0�Da�_0����(/�Pgl��s\3���|�Au�+���W&�:���R.n^�����f�x��^s]���+��2�`�	0�\���r5��w��iT�4��-C�j+d�	\���
*j�B�W	�iE.[�B	���w�]��</@�^����
����bl{�P�]T��E/*��b�A5NW�
����**o�`d��V��2��.����J��c��b;J!�pT�;4/��f���I�����U�W��������/]�Wt��I>�Dy8$ya/�[���T��}�I�.�q�-:6����
.O
����mw0@�Een0����tP[�V ��,�`7�j�D'�R����+S�C���c*�E`'��R�J�����~1/S�����Z{��qz).r�&��O��L'�����{�$����������d�c��#���3��j0��bM8�p&���>�Z��y'��M�����7~����7�Hs';Gc��V�	�[eTV8���p>�;e���A���P��Qy�|(#3�yP�0-|*]F�����;(#]Se�g�Ci�J��E��,����r�H�����D9D�]#�!��3�o��������_�y��������}_=O�}��L/~8V2�-]���L�����F�rP��^$���h�k�T�����F�qP��^$��{�h�V�o������H����x�L���u��L�=�)z��1_rs:���7����a�^�^���;r��������3*��=��G4�������Q���|D�V���3:��K�j������S���-��=����Y�g{��!���	�f��8��{���	����W�h;G&��KD��c��Y���x���t��G3�t���@P�~�h?�o�����E�U����h��v>��w$>ZD$�=�O&������V�F"�0�P��n]<W"�ew�ko��	 vaO2$����������' ��F���!�;N�vC�.8R�������u7x3!�������KS�b��~���	#nB�����_2����DpuV Zq�:�g;wj�K�r=##���|:S���S����\�zuVCZqK7����ux\�1�[��T6����mL��
��
������Iv-�/*��kh�8�gq^�>��1���S.TG@2��t�Y���������cS�������w�cc����Y����#c�N������b�a��������8^��#������c�����^�[��tp�����z����������	l��_8�3g�`���%���b}ru2�2��k���N�8�%�:������>�z��������/���/�h^4���/i�����/��]���on����o^4��Dz��;��pvX'^��<�����`"�����D\
����E�o���$����~�p��Tf���I���L�G�1�^Z�@���D!���7��pX�a�6��EH3��qMp���g{���Q6l���B���=�����)Xf�F�9��x��~��4�|	T�
U�������1]�5��F�f@���y���n��������x.������U�R����n�1+�����R!�n��L����25)g������f�����#h�����{4��p�b�Q��U��j��?D-�{L�,�!���V�8�(�J(�C4��	~}���d��1��9�<���b���	K�d���.�I����?�'_&�-����R���v����-��@��*�<+�*���V�
�{�����J�Uq}T#�/2�W�)]I�'����y���-w���/��axV������x*�Ks}������u��S����(�;g�S����#���Y����_��
d^r�-<}���oD�6?�����(��x+��R���<cuW�D���f���tH�
��0������c�;&V(lG��&���%8_8�p���Z$�����W��?<�d�szN����~ w���l���)n���������f����&_zh�G��^���-y/|��gB,�n���C;��.����4 ��tjM��'t���{�|!�hebm�BV��-���7P��P�
�!exQ�u���cQ�w����b��-�,:��D�2�G����=�DL�=����mR�0�5�A���L���LL��J����z����oYZV�4|(���M9�o19.�!����x��4��]��� 9Yy�����F����DD�,fp:�D�t�D��������!D�����o������n�X�P@orae{�j�W~U��L5�\��$�8�uz.����T�x�`�|�,���E�N*gof����Y�"����>p_�_��?���/y(��gs���V����F�����l�AR�bJL�AuM���?��~��������^`E�O�,7U�����5mu�U�St^��+h���{Z����������;D������������-U~f��ZD��_�FL���	���L'Dw�����K�^��MZ������U(���<��"���Y]�����]rx���7�Bb�|1Z����x	>5��>�/�����FY��W9�hY*"��,�
a����	P~9��6.��r��J����)���i9�3m��2��2��b2�X�bg�v:{H��K!��I����|��<���0�d���3a_y"�t������ J���)��0_,���]����[ �Q�`�`.o������3�w��Vf�k�
���f�@�_q��Z������ra�����5��]Xy���SJjX�^���=�+|���F.�>E�l}���`y�K�+�9�+�/?.��,\L�,g"T'b�����bp�.�N0,�a[����`.��eT1����4a����C�����^�X���U��v���kt�����XZ�*P��}�{��Y#����*������lp��Q��{9N�G<rD�
"�I��,�������<I �U��d��>��[�:�G:��S%�Qi�[�t�nE��b`!7��X�3'B�m�b��|4�Y�������(�Gc�Y�6���#���eE8r[�\�j���f(,;�
6C�a����w�!�pmfEx���c�^G���TI���%���������`Pb��m�B ��A��t3.��3�\0{LT/����w��d���R%(�)�W�����!�0����8��.����
��������9G��!����B>�����������(���/"
+�����1��i�tYA5S��T��m�a}FX�)������l�Y�����U��T��"V��_T�
��t������*yM�#���-z(���rJ/��rh^��]!��N9-ke���!S��+M�)�$�b�,�v�VX�=���F��v�����9������&62��V��k������D�Y���oevvZ�Gdm������
���[��Ivj���
��9A�n��U��t	�iE�CMK4:+h�u���V��6��E%l��E�-����ET�BoS�����xl�)�(lVk�_�U�,�d_Q��IC�Qc���g�d��'����i]R�	�>�6G�@�A�R��wr�5���aa�������n�>�l!����1o�RY�UDp:}%��\�.�Q���Ws��@�>��2�X���
�t������,`����j6�}d�|�Kt�Z��Sg�}4�R|x�=-�a�"�
���nccm�sp�������N����x�8O�
���,��*��a�}����ha���-�x.�?9���t��c%�����_����sq���}sA��&mT7��}^����kQ�������5-�J<S\�2�x��}P���Z��*u���Z�g��7��&��M��@���38{�{�O�)e�"��{"J6[#��/D5���K����CJ��Nh%,q�,d��X��0����a����[�@{f*qOO��zd�||�r���=�
�o=X}N�s�
��f7�f{��s��I�G��]%>[�/����_��>
/]#y���;�V���SQ�@E�T/���~�VR������v6H�2?A���~��,��=J��O�(�������������*�����p�R�������9�Fz�������WC�����q�=a�m�X�'�>����]u���^eL_<�:��+F�p3B�/�^������G&���9u}�����e�����n�����)n���yi������M2�� ��aO���=e��7���f���J��'�v:L��-,r]/��,.<'h���jW �k��e�>�V�� R�`~(�#e���}�L�b2i?	����wfkQ��X��OB�� hk��%���2
>[�S�W)p0]��fkD�~��E�0�������$@�\���h�B�%��7���gpA(���9���zX�\�H�L��BtT%��YE`Z�#�*�cr.��2�_^����T�+�K�p���dk�4Q�f|��C�n�Z��
�A�E$A�pZpI�[)�K��Q?����J�@G�[[%��r����r�D�p�p�U��q�E	RJ�G/�^u�5��8��	hH�RJ���ai��^	�Gf�(
p|���qP
@W%�4!#��qCo�x{tQcQ�p���B�I�����}���R�����"-����jG6Rp��M���1�������3����v�=�s�y�?>~a_��,�B���Q�
y��D%�+�+�O"��1��O�D'!#�Y�:�������b���=T�l����IZ~�eIz,��J����^��K��I�W14�/YR��~}~���-�B�0�����Wmz ��%�{g-����OLBw.�cg��\�\.�]3�J��!~/��>m��_�����^#�8:�%1rk�}�M(bp�OL2�����H�B��{�g�Z�=�������X��DbY���~�B��<w�]����\�[/�����K1�U��"3i��v�������6����
Aw����{�}h���������V�Nx~���^�����u.���7��vZK�r������^
�5{p��x�����_���:�ag!���$�5;[���nj�6bn�{�uE�uZ��t+�����f��%�7�T�r�"!�n��>����`�g����0��?Gf�&������L<-z{����\���
�KH��\�L��
�-��lbK��Z��L��Q�3>U���> ZON��)H���Y��[�%6��N�Nt�����i`J�8C��C�5D��f����`����_V/��W���F���.�+=p�S���,
pMc���3.N>$��7�#7=�������q&
��{�
�����{[��J��&O$��	���X���n��X�g<�:'w�
�*�I��ZX�j���$T<v=���$&�xz���O�*R��������r�R!9+i�u���W�����������x*U�������A/�x:�7kB<F|"D���=2�_��O�M�r�KC^��&_���\�� �d�D~�/y�3��
y��A���s������sg�4�D
�*[��=F�S�06x��8J��"��g��}
e���2��s��k� �K�R������C��v/��Rz�^�2?DiH�+�)H�H�����!���|�$p�/Y�9�����+�z����t/��	�� �j�hE���� ��8�����aoG�6'�K�}l�qN.�P1�n$lx����El��L��5f������1����>-��]E�Z��57��]���t>[���2n6IJN�y#�B�T�(}EH�t�z*�pd]le����Iq����/���R��g���.��b:�d��S3����xkd"�)���*Y��W��Lr����Qx��=����d�Fy�N�@��\^�ep-J�V<%m�}��T����W%2g=l@mq�0N���d��B*���C��OA�r�w'`��|����*{�����oIz��/�	����!�s#:����\�� K���O"t>��D���Bjp�}�/2�I�b=U����e����}MK�|�F����� ���*{>t�-Z>�������������r���3���0V�����c�
L����kR������2!�q�f=�
Y|��#�����YA�cdZ������%��	1���IAOdlBY
o@�A�cd�IL�����	��g��p�6 �|{&���O��y����{:��<����f="��_�a�J�G������>���s��]���c��
\��-���RW%i=A�u�'VW'����(�D�����^�����z��B�T�mxTaQ��t�,m4b�0
Q��fe�!.	��!
���m4�yv�0
�e�����Izz���[���-���*�\���?[ �mC�oM���0A@��`W}~�`���r��!����������8�&�Z����A�c�}���%��)�XG�������������?dXX�Jk�
Z�;-�5�D�e�r)�i1�
���Y,(Qa�4�`�4��V��,���V=�������I_��UP�UM^���:y�j�'=�3���J>��<���!�X��KV%r{��������xM�d���l����"n�C*�Zo�>��x_����.�C�j*���^$`�K�9�)s��w
��[��~����@�	nxDi_�[��{B$�1#����/��w��JQ%Vx?�p�"p�\����k���8\�?.�l���}|H�����Q���V
!�����>�@�g�x>
L4d8w���z���=��S��kN�\T9���"�G�Z���YQ<
��EE�Fx���!T���~����
�����������n���x�r��P)��4xTd��*k�q\�����T�F7�~�c��| �/+j��)��eA���l���$��J����9�EH��J��B�A2�r�h�����qt\��')�S�4�x�������pk�W�[�l>���7
I�V�	�M��@v.D���
UN,��	�l� kV�������B�����
�U>��2�0�OF�
���S��I!q����&����Fx���:8�[!�{�
��h�qQ�63�cv�sr�����l���>) 6bD%V�a�L����!Qi�|X#�*����IL*���H'�a�����F&�	a�����O�{R��������i�Z��e��h��76"��7�N6����AI�7���<H��N��]u<B��v��,������jVV�2=��
'��B�)	H��x���6,���N/Gt`���M�'�L��-6>6A0���+#��!8.(k���HQ{`�q�b]%�'�r�����ai��Z����TH��e,<��f->�e�,A���(-�#���[S��]�[�Y,���[�Q�����Tm7�����5�2^����<��v����lh��m���Y�fIAeb�}7����8��
G�L9X����l������K����J���#A�����
������n��a��w��b����7T#x�������MP �I�Lv��Xct�����y��/k�zD�_6����v.�����*�>jr���yb�#ne,�Q�Zc����q�b�F���C���1j�Mc��n�0n\���1r����E��Jf�x
S�m����re|������&�<"b���&
�L�h�!��K���{����mT�� ��w�O���u��
r��S�9����{���|�&��B�n�)�.���E���bs������h�y��R�7wu4�t�^��
�etu��k;(��,W�e�a�
��5�y��m��_��������(|��8�b������s�m]d��T���\D;Q��<Q�<��w���}��3��$k��d�d%Y[���?"�!�.Iv9!��Kga�r�_��@���� T���X*�G�7M
�c��������t,BVv����:s�����# ����}(`�TE`5k=c~g5�@o�H�Ao���Q?��Kq������hz�X������V�;�A�"�9Q@$�h����
�7J�F�h��;����{=�����9����_5[
�����I��`�v�J6b?���5#���9X���*n�\n��z[�u
"N��~�-h��z#�.���\�.q$�St !��k������^�4�����7����!\o�!��;%j!w]@b��-�V��:?Qr�����9�������:���Pi���VuC����Q$����V��[fUe�|�
���4f]�PW�R��	�c%�m����+x�Td��"W��Q
cuqiydq�]j�{T�|o�g��V�N)i�� ��}��e5��pfF5�������������&O��Q&�,������o*E�E���'U~���tn��F����AS�9�wZDia9�Q[f��sZU�H�h�3jZ:�����2.)��)[$$��H�IG�!$�e�I��������Jr3��%�$���5e�R�8yu�	�SR�i}�3M��r"�I�0q�������+�VU�a� �0W�?�	��B�Te�l����C+��x��{�2�������@(8-�������Xl�����s�����Y�����Ca��F�����p
U<��,����������^�����_��Xfr�����N+�k��������Nbr���aMwh���Ey�uS���1�H�����o��_��@��:�Y��p��4�+�84O0�O���r�����+n%��Ng�����e��f���m^���,P�\G��L�����A>�	�g�q8W���4�a`�tvsk�w����&��6���(�  �-,|qw���"��H|{_�
�$��8���k��kD�[Y���s'�E�k���6�i��F�����&t!�s:	�u:�j��h)\������`,��,�w�����=5Ep�8{{����^N >U�����G>��7^����X2�k�1������K�8{�����<V9��+����6'U�d���%A�s��pP��"Q�5!#���Q/l�uzy�`�'�1�*[���	A��${I�~���&b"qs����F�PY�\PI8���!����,���x���;n��"n��;�>��q;�cb��6���@�
��w� �j��5�JkR���J����?�������On�J������ �t���q
��X
����������� �����8��0�,�aEr�;Ii���t�1\VLG�1�V|)�o%n#�F�&bg�#��7�umD��}��a���YmD�������o�u_;��e0�2��Xw����EGt18���pw���7h�h���q�>��)�j]K�����t����x�H����iS���9�'�.� ��:eoGi!�!���85a.��OyY�I{��^W0�c�*	\�����\��oV0����<l�y|A����\���]��,��Tf�s~���7�}�3h9�5K�g��=&]�O�Xk�,��6����}Rf����s��r<����������������<9���u=�$�c�d8����=D(q� �X��i}:����)='�	�����i�F�,���UZ9+�d�Z�����U���
X�Nxk�.{
	�	H�A!2=X����G~�t����x+W�+K�$$��|��r����iIG?� oa*��E�q���������Y����H�?U��zIt��	��#��@���f�M+?�#|k�}a��{%�Z9��lI.�AV&��[y%GqA�
n`�R-`D�x�dt����'8�
O]��	�`����}MI���
~�d��8��(J����+M�
r��L������g��s^�%���?%���&_%��-���z������s����Z��?�n����?�J�YY�E�w�h�������'W|���le]�Z�;cr�su7vV�������^��0<�X#U�[\Ppjw�^]P��XPd!(��]z������%Yz|I>�Asz��G<����#���4�_]�S;�~E{���]���X�NQ��v���
4W���������q��r�*#��7y������+��6d%����wp���,<����y]7��&����D9�Y�M:�rN�	����c�3V=4�z��=4ea�L��l���q��g^�k�&2�E����(�Z�K~A�\*9��j����E�\H�����S�E2�X���g��D���w{�~|��n�7S�l��o*�
��'�X�������hz�W���l�����������4L �����W�P�����@�d���P�B�>�_�$�+���Q���_d�U8����*Y�;��0����ipwj}D�.�&�Q��=���a��:
�����~9����laqD#�b��\�����$=�����s����@)��S#6����dZU�M8)��)u}�.w�����^���ljba�7�&��[%���;�Q~rJ�[�j�]���������*������OS���[��u��)N����g���QR��|6�[:0��/+��9}�o��?PR�����w'����b�Y�D�����
�Se�A+p��-O(4��sV1jz(�(k��@5��V�l��&3�Eqv5�Y�����n���7�V298fW}IIV��K����
YR�f���9�*���~�O8]���-����W����N��SO3fM���e��=��5&fC�!�:���tL5�������c���e�6���B��E���G��
����&VN�.��S.~a���5y��"y��E����`�b��K�0-r��.S����AUz��Tf��7��Tv�(�
,G�n�E����a�nz�nW9C��5#�<���VY������%�`��Z�o�
��L�<gu�q[��7���c��hQ}i�)��~<�5���}-���[u_�#+�:Jr�W��0V��p]�����v�\k��R��5;��W:%�K�����;F�|�(~�Q��_zBp��!�:��Vgi�����t��^���ZP�5Q��h5xC�>����n��nde�b����~Q�[7xD��\�_t�����"��`���#���		W���<J5�;�bvV��+(�B��W��\�*�����
D�
�~`O)�dk?�Ov')0����6��������r�>4�E��^f'�����	�����w�M��w1�)���c�&�Ep|��2x�x9�S���^I!��:�G���n������.�pdR�<�*����i���C������E�~��/�c�A���<*��L�e�����q���p����b�����l*�[Ug�_����L���x3��AY_y;�MR8���){���6�9p Gk����	2��#U�<�E��"?�1���i�����0��wx�?��@%�?��
@�P��]q�c�\9���o���������$��[���o��o[�}�OpN����S�Q�����	��
�'(X1��.��������=VI��wix~f����)�	3]��	�el
�S� '�OMA�+�Qu�������-�W��y�"���T$��2z��e��,)?���)xqE��,w�+���i+j�������)vP�����3G4�zF~�g4��_�-��.���,��Bkk�],����eK�[��Y4����#��]����s����d�-fV�Aa��C��v�'B��j
�d�
��b���#�<<�Y1lR#7�D��"�V��$��CT����A:V6������v�e���OY��&G^x��Y�|+��X�@R�"���������:<��;+kc�?��{����[���Jn���Y|��W��1;��.�&�_?�w�5�2�N/1?�Z��_����g�v�|�����|� ��(\H[����Eu�D'����+W�;~���hB�m4�S��q��l\c��_	{�L"'5�"V�_j���]�u�dj��U���Y��C�����<M�Z���~����2�H��a8�i�?3�[��*���.{����lFx�����L��g��^�j�|�����w���?$����iO��{N�5�J)�#����i�6��\��u��4����Ums��N�9�����!���X���Q���]�L��>��n����^��*���x�m��1�R���g�)c�����y������������V���&X���z�/>��=d%]?�����X���T��W��x�q����~���)}����v��T�\bjE�&���-O	�N�_�������Y�������#6�:�����d�I����%N��_��T���L_��z.�U�����b��&Et��~��H����7�����?�/��Y^�����?w���Q��p�D�"�x����x��`*�AQ�O1�~����������������[�^Z�S&�Q�	r�q(�G����7��Q����8wQ���o������_0���RN�4����a���H�I��/���rBu���I������X���v>OS�la�����p��"��8�|��z�����_�G
V k��&�M�<�et���NU�ly����?�����r��Q��^���V��849.P_�<���'_��]1�OR_�{��"i�ll(	<S.���BIw��-���<b��sy���r�<���;�G�=z.�g�GdL����Gx���<j�G\� �����<b��sy��������qF�c;Gx���3Z���<�������?-�w��KN�C��n�#9�B�zD*����:_�(���_�R��ep�xF������B�4�Yar��u�������yp.����v�1Y��[�)�8X����"-�4/�}���8�64�8�����\��\0������0T/�S-}1�boG�D8������0\*g�H`�.�����_/���$Q���vA*+���H���a�*��J E��jB�3@��&�mw������v����O
F	g��DAp�3�����s�!��*�Q		���BVp�l_(�Z���;���I��i~��
55 R����F����H����p�Pr�d�#x�8=��V)&�!Y��#d�P�3����*�ztOt����*��SQ��c�Clr��<Z[���CW������J��8�~����sO�%u���b����nD��E�.Hd8B�l�;�1��_���7�Wh��>�ih��������-��H���tp�a�<����W0���-�Cb�����Y�q!��3����]_��G<Z0�����)�R�&����������5M��8���B!/Q��p�dHs�M�I@��rIT�kY�1��#��l��,��1=�J[�%e��������pg�.~����-�|����/�|�86-�������@X�p�Zl��	�H�>v=b
A;��������w�|�g����I���2+u��
���]�A��?*�X�dHa���(���n9�T�{ 8$��#�Z��a��cp�A�p#�=�p(���g?���� �%7j��7r�?w���L��{+A�kn��n��V�u���J�b`��{9�����j�r���������	�}bA��D+�@���l����J7^>�r
�T�L���<l�}�5�:wP����������K��n��J�{A;���nW���U��:����sJ��&A�0#�5�2n��Sm7�a*�T��m�p���)b�.�mL�"��m�V��u��8���y�����u��8.�y�����u��8/��y�����1O��a�������1s������>�������xu>�l���|3��&�����~����Jw�of��(���!�|����;�C���u�"!����JW��E�y �-u�8����C��6c�.v\�A��R:4(�7��T�lH��M ��m��,@{�S�=o�eSf��H�����/YM:�{��.�R������*�������[W��d\7]a�<��%��b�]��	��c'�>=%�WA}�W�02�B%PW�
l���%�y��,�U�I�W]4�lV����Y�T<��(�\�����mlI�eQ@{#1��1�q�>��s�
4jU�4�	�]b@�w}@#g�+�d��
x��1�q�>���?	t��rV��!Y�R|(P�U�-���2���mm�����w��8�!L��E��y�^���7k����E5z{e�Dyv���@3
.�
l�C� Z�j���B�hm���u��8�ydx�I�I�����i��V�Z��Xf��T^L|���9}�}��R#���h����v2�<���J�����jR����R��K���rp��j<t\��;f�������%B�i�S[Uv���N�;q�#�G��,�D�x�����
7�.CL���L��I�a2U���]I�LQ�f��5��3t1�&O�k~~K>_�Y�w|�zH6����\?�Z;Pm���|ii�@�h��F�<����*k��������X�e��4\�(/S�I��c��O�����1�����6@�H�i�rrC�=�"dxhK��'A��zk�{,��tL���!YY�qg��UW_0�
eTXZ�/����<�"���A"���A
�-U��$yFoG��%����������~��m��XV�%�7!���R�[�TI��[�_����SO#: &d�F����\Z.����p�=�r��H���O�����0�vn��z���+�Ih}�����\5�n70N�D�"K������+Pp�n	P����J��wzJ��~�+����9Y�M�mDQJs��50L6A
���^e�{����������Z2�y��`�[��z��ZoPF��+�&�u��
\�o��(�>��JDzV�&6pH>CNW�<���{���C�I���e�`���|�zf�Y�\,xQ|���j,s���]����0�����!qD��%������"�2�ln�{�M��%`D�Y.l�����B�aj����~��B���&��
��M�f[k�^f:5�021}/�W=h�+\���������@O��k�!�%�����P��N��+�3�/�Qn��7�o]m�6���b�y�r��f���
:}K����Y��������:�6��=^���PfQ��s^�������W���NT��'��'(�+��P���-g�4�^�g��U$���8Al�xz>R���j������z��+,x�T�'�X~i_�����G<Y;)"�z	��	95�2�@O��G�H8��%���g�$0N�d�������G����&M��%CI�x4�ED�C���":���Viw���r?�h���E�/?;C���Zv`�x)����(��x�h��C�+*��.�K.��e`������l����O����C��8������e�[������������x�UY�2J)��[\�2�Yl��2��.�v��
�f��r�q%>���W� ��M�����0��������f�`��h��	e1e����>��IGg�e"X�!
�{sH�O&�q!Xy�m#.���Md�����i%�-l|q�q|���>|���G�=�R''+�W����Z9�����V/���q���B��5��j��A;��|�g��n��lT�����V=������f�B�vuZ��j�:j����@���#��l����z����+;W{��_��h:VW��&�������yrE�K����g�����7��d������?�}������������L7��=���9.�Wy�qbD��������/�����hf73�v��@fBQP���(-~{z?w��4�
��\AV��+�'Z��8�#�b�TL��Wr~
qN��B���y�/Af[��2d��D���������l��2�ev��u����)��oRNK\��UoBT��W8��%H��Vq�#�����*#�S�TVZ���8���H�0hJc`�B��@S!��T�������_$���xYB�J'r�}����,nr\���o�T{��;�����l$�8`GJ�[>-��1I�j�%+�lp�S����\���x�Z�������B���>�V��=�&�KF��S�@���YCL�8k0������&f�i�A�������`�*
���,��y���L����vy�,G#A]�*
�	a�.�	��6v 6��`y(3B�(r��^r�	!�t.�{M��tYx���f���v�W>��:����Pk�����1l|���
��:���~����b��Qlc����������
�m�b�7\@,6|�q�z��).��
h�k"uf9"!c�
���^=	 n1��=���1"��_���|nj����dq@���N	�t�a&�na;�CF?�dgY���xjT��X�ScBj���L�&@����h.^��K�[�������4��~��������r`5���!�]	�@�i��8�Bb���W(v1�J��~y51��.��e"\����uf����3B��$\�V�i��VY�������>���py�c@+����3��%�sI�q�o��9�k�aL����5?%$FWN/�.��8y�����q�eN�N���DSA�k8x�ngy\��;�2N�1��)��Jf��g,�J}���B�����-
�3�~�*	J�s$��N"������;i�����@��zu0�mnk��Vb�����;e�6������]���|>{H>��v��X���	5�@+Z����jSZ����r|b!�%�o7���M�o���P~mo6��P��zG(�����+<?�A������HX�������}^nNQv����(m���v;T���e������Rz#��o��T*r-�~�(�m�
]������qv��	��hI�n�B����OY�@@x3*��"��s�!?�/�K^��s��!R}u�"8]J��0�S
�����7��/���Z�y+���\���. �������"��8I��&�
�E�%���S��g@P�����%�Q�eq�aQM@/*K�];�
�KB�����m/D��A~9����-&�oIq���f7EE�F�M��7V��[����iq�vVh9��V���]� �����bP�����9{���:��\X��{���w/S��^6S�[t����_n�",i	����V��1��8���y�],��!Q0�3�p���n�R�W��n����IV7v�HH���uci�M�Ih-h��>���g��Q�]�M�TA��PQ��a�[�GCd$vZ����j_�%�����U��^��p��_���U��kh�%�����A����<t1���A���e�%i�Aw���n����*e�)����:P���SiS�������@�K�w��:���#���VK���1�d����`�����b�����a��0]cL�5��\-KnE���5	#���7$�i�w;�;�����C�W�Vb�f��2��W��/~h�P�&:�F�M��gx�����xT���j@�4�=P��l�������������c-���(Y��G^:��"D',�y"La���{����\����s���
Z�'v_�H�������$�$�I��?�M*�[�>���$M~�e�[{"�W�*yP����U����+�U�=�mh$�\h@�%�BSf	Oa�5JC��i2�7S���V,��
^��g����<�"~�Q,����&��j�	����kQU�������|dV�`����l�l-V"��3����Z�����cm�}7�H';�r������sf���q�d����$���<��N;i���wl�����0]-gk�C��/i{b��������e���d�A�k����,��eVm�!��G�]��Z��/����i�����#&0�ob!�jqX�j�s�]S7��~����OM	O�SY������D�T���N?�+O~�@�`��F+M�xZ��h���)$����2X�����?�{�
�*��A�B�n8I�IR������_����+R�V/��s�2s�*s�=��g��)y��7���.a���KU�I�tR@(���W�Q40a������E�A]��u~F]
�������8%�^����2��$<���=�����h������S���H�����X{��o�2��Y:��PK��k���O�%`4���������A��)M(���z%�_W��j���w�����[fg����k)n�P�v���;)����O���u��g�t�\���/����yG���3NJa�r��D8B�����6��W��Q_�4:�q��������H�/�1g?Oh�\����mW�����M|���.�gN��+iw�*�fT������/s�.�q�~)._����GQ������6������l��H�G��1�Ik�/s�>�7��u���]��IF��:�����O;�/��^t�����D��wkL��hb�98��R�O�F�C����c;��u����=?�w�u�U�`�t����Z0��3�m��)���R���C�M����VH�����8��X[�F�����c��
�G���|�*�����S��_%P��S�~\�e�ka�5�UD@�U*�|���B��A���xSI�YA>������1��$������jG���1�d^��3#���"e{�SC�bg�������{�}��!�o�������60@�;����J��31���_�\�[��������R.�$?=��N� �V�|���4��S�J���</��&��)jI������jh��Y������;����Oc������X
S�::v<Y8���
�w��/� �|W������B�|�EE�������u�o����������4�G����:	C^0�Kj�j`t�
��OX{"����L7q���E;�XdC������~=�`���g@#`z�h��"�{����cy���t��+����= ��MJ��F��p;7��]����Q��o`���cP*|��}Gu����8b0��`O�I+�����0WT�T}A����m�����g&o7����s�I���3A�&-�[jx�W��E�ho�;��!�"��C�n ����HM�1B$��b=��2������g����n��6��dc�F���-��M�P�%��/���������L�\9���n�L�'�)a��qp�Q
��F��s�1#�a��������k�q���:����I����ex��Wz�wb����`;�/R���@���`�������J��:>��Av�g�����.�����(>�{|��n�>��a�W���6W����������*=,����Z�����|���F����������$v ��W�D
U�kw�%jP�	�����x��Q������=D���pp�O�����.
���~3�oX�3A��0A6�cfU�z��z��V�Fc�Q�y�'��;s�o�{2X�� a�dYg�M��x�I��9��_����F��F�������K{E���@��e:_����%�y7|����l��xE<\�z��������v ����Kr��������A2F=$��G������M,���^��O���n�*^��6�.�O ~��o4\��<~�4���cm���0�P����@��S|zF��Do�� ���|�I�����=bL;�d�I�{T&5�9fW4?_�>�k	�9�O�yE�)������;P���'1x�>%z�>^��J�8���x���z�I�W���.�ZD� �o�D�P�
`j�9I=R.razf�
0��������I����{�-:��F1H
�����t{}}��3��H:L��{?\p����6��V�54�-�&�#�t��������i���������k��P�jDO��Leh��T
�R�i%�6%3/��H~�����.�7�T�B��o���r,N:uq�T��7�5Q�	�*-��%��y��:�m��){Jog+C�O�/S,&����N���n�e�m�qT����T�u�	��lx.�K�����x%�����z��z>4�K�3�Z�Y�����@������g�:c������U�1�R�9�_Z.����E����o���h�=C�cQ��l����s�Z��0(�����sw�'@�G�t>O�0(��p��p�Z
�#\�:�aP���qc��,�Z3d��`�B+�[a\k&��f�s��"�5�[3�p� �k����L!�����?E-��f�=��S �o�&B�q��+����U�?�I���5�m���k�� ������#qF����%�X�1�R���,.���`�����H���+A��������]Hd�
�%�nVh��{��~�]^P�D���g��(��}��0�0�fYH�3�o^Q�'�n?L,v/���������`��+����A��>�^vE�������=��j?�9���~�#+�����=��0�0�f�H�j?a(t�abq�i��,.��X@��L���i'�$���8�1�~8X"�m?s��������Kq�f����	� ����N�J t�$�`�>}��x%��`L'������/���bY9X����D��������Q�����Vab��|RPurk9���*+�k�����s�}����{|K��ra�A~�����^��P�}��w��� �x��}PD�A����YG������
��\Vd!o�P���{�'��TO����@��H��w�E���������/�C��P���:���
�f(HLl�R,�_
������.u�������'U��C�����
.dmwi��w�1w1��x^WQU��-�38T�OQ;k��l�u�F����� ���#C+���:u��"�Y�E�3��3�������=l�.��<N������mh}Nl����S��8��j��7#�S�w�Kn�9���KD�\'�V��a��j��7����<4������-?�oQ;������.m���I�d�(����94������E���X��E7��j�#�jTvhl�������46����a����?�*84)*���a� v7S�Z��d��y�f�ztCn�8���r�`���:v�@
oGkxjKnt����=,��2��,P���z�S���8J�Kl�x��;��X����Y���u/��� @��������]{�8�xZ�r���G�tr�������h���� ����e{wt����\�S�=:VV�z�.�����i)54;K/o����O�<F�Z��j�8��J86�����N������+ 4{�U�fv�;+i4GlA�>�G�����C3:W�����u���(E���\�tGu���t�G�1(�������*�u+?9�B�*{�w��@���;���`egY�'�S�p��\�!����`*��|�����/���_08��$��Z9s"�GzQ�&��m���
�����e�"���L�h�ub��
�����&`���0)�N�b�n��q�2u��������2~�U��f��Sv��.�<�(�_��gH��
���,�p�[y
AR���h���>���k-���EDJ$k�l�Y���M#X7CZ�[IV!l�U���9������_��T��R%�B��-�DE��&b?Z�e��sVDYU�[�i	�8�#���"c�g��o�sV	O#=5���S��0��V^2�~������y?e��%S���G�����Y29��|��E��uv
����/O(���O�v=�a��S�e���]����sf�=5![�L�mD��5�~��w�c�� ��n�������OQ���G����!��NrT����LJ�-0Hr9�n�6||I/�b$�ryN��9n��/E��8�����))��q�jx<��������v���a��`[�.r�&9����/y=)���p3��h�C��kz����}z��^U";�T���&{.Q������<0�:����E��O���������J7�[]��,x/=D��������-��������E��^o�� J�OQ���X���AtG!�EG:Q����fk�``t,�F���w�T�
�����o�sJ�|����l��Z��8����f������Z�`��O�p�������G����\�e�A��U�IV�ou������q��})Lj��vp����"l�UgN�[M*���z,��(n��(�.�����^Q>=����~�f�e��X>,6��5�O�P���f���������R����U�����������R��m#����l^������z��/��z���2�N���q���-+�>�y}����9H���S��S�e��m~o�L��d�<��x����t*��_��V/m�����]��k~��PP��,��d~����KV����R���2���KN�x����U����[V��0��_=������������%kJ*�R�[�r����>�����������3�+�}�b����E��v��t������r=F��U���{�V�A�b�1
v�k�K]����o��/�Q�;��Tu��Wfgi�i����?��R������?��V�������3O73�r�~�	7��7k��4�.���2���^�e�#e�uDT������h�N�N��x\���r!���C��`�P�5�i�������<|(s��������E�&u���_�������k�k�v9�x�B<���R�=-��Z���o�VmK��L������=��j��S�$�mb��w��Vu�D�*}M���	�����w������:�v�s�f�ij���>��''����F�l�V�����V��z�Z�����;����O�uu.j�[�$<��6�B��%���;��6���[_��?5g���<�w�n��A�~�0��&��UnZpi�@� ynZ����L��q;�oF�MTI��4N�v[R1��.[?��Lb������4\�
��u�u�������5���V��R��i���[vc�Zs��c�8$���xIwSbv�>�U�D�<=yn�x�%�6��I�B���(����,92<Wt�b����L[ci��w��'��!�����h�+S�Z�Jd�,O�|x��/]��W��S>m���!����UK�p�v��na�L��{�d�:f{z�X��������]R?bk?=��p�������������u��PN���1�������Jf+e���I��������!m�E���M�K��z�^C�_�c�������b���A�6�8E�%�}���nTnO���u!N�*�s\��h@��_:G���}�U��g6s_�m�LH�CX�����*������q�K�T��Wn�q�LF���6u��,�gy�E�8�V>����/O*�1��Pb��3�����b9���24�8��d1�"a�kz��`����|�r�-V.�9=�������'=���n�)�u��9X��<[�\qz����xOz�)R,��g���XOz�-R,#NtC��r�����
����k�����V�S���������}:i%��'RL�l�v�i�v��`�P���~nj���r�AO����.����%����|�h�-2�Vx�9����f^�R�v{z�9yrr�d��VO��h�vh���F-�l$�%�%�������~������v:����#=��WAP(����{[�����#<�]��(3%rj9p.��d��>����~We&=�+�}k�f���^�E�
����%�����)���t�S$��Y�_o��Xe��O��!�q�>�V�����I�5?��J�x�3%j~���T����	��
.�������+&�v�A�u4����r���=�4L���/����>A���L��+��i����6/�}�!=[�(CxJE�%�O����up�PM��j�q��z����S.�����_�Z��+���sJ�/���k!4Q�]@���/Y���i���
�@�K�w������a������:�=����&la"=u����o����IP�
��IN7�50��"����k�;�
�'
|��]�s���V�����f������,,=�,zs�T�OU��h�2��NZ��"�������Z��E!�����~}h���._���Se�p�&����e��[T�5b�P��y���y�G�6�c]��m�X��6R��U?�=�^�0������������q���:/eq��HK���=������X���><�n��=� �	��X���d���['�YU*�i!�$s��d�x��%y���S�z`j�D
�R;�N�m��z����
�cSQe�(�{Vn���E��$G�N�`���yj�e���u��'�b]��9�>f�����B�;��� +�S.�DK�,�w��Ye��IU"�E#L��B`G�9.�I��b��a�*�Ir�~L���� ��	���
*bh�F�$s�P�M�=B7vT�d�a	fh�s����=BN��d
�I�h$"��4P!v�d�`	����^��:
T��4�:X�9�`��8��G�K�=�Z��9��O�<D-DX�x����cp6�Z1C�'�HP(G���p�2D
�4d�*bs�A;���
���� 3���&��<[��m`4���9��*cJ���|���[5d�n��P�P�G:iB���0����+����Xx.�9���/O�����L����������>i������}�{p��U�'�L�R�Q,Sgh�<��>S"���8���������G������c���"�t��.���{�]�<H^�iw��g�D*/y>gz�%�t�.f�������u��������W[�%*\��� ��~����Bo�&�e�}r��������E����|�=�����%��,��������YtO�'f����-f�@�g���y�:��Dyu�a�>=���.��nXZ����r~�wn�WT�����8e!v��y��c~I��CS���Ar.����
yoQ���.t2Ij-j1Y�2
�y�$�N����iq�m�����T��w&p%/�Y?�w�W���4���\�x��V�������x�'��Q���)0���`�;���cPH���q
=��`\:/S`
��=}1RT_e?���W�e�Z���qT1��^��E� ���\����L(�����X@��������S�}x1���r�����`�W�t��svy�_�W��G�5�:tEqV;�}�L1����Z����H��3�
lV�Uz����5t-�cn�Z2�(����@������
�_�jS�%�:�����7e��GI�Bi(��|Y��7�"
So����y3��&�][oY{����H�S�����8�/����ZX�^��	X�Zn�;`�;�6�_��9
��g��m@�
�Q
�5I�ho�3G���=Jm����4t�*�������\t���_d 
�$��jZlL�G�e����������������3���iUzym����I�"$%r��b����4�*��D�g�������o+���
��x��[��r489V�D!�R��a�����*Z�*2�c#U$�c��;P��h0�"C;p>�Bc�����?���!Q�=9�6�f$�p&8��r��J�������AJ7&q���p�G��|�0t*�K!���|��C�]\jaLv�O��2������n��	�:��K"O���t)��?Go)�F�CoR_2�Zg{�@	s��X��nfE�c�Ihr
����/R2���<����
������#�D�Z�����u�c"#��fyC�a�xj���*�xe��d-@7���.��r�����
�|w��|'�����nsW��z�����kQ�����m���p_�n�����E�<�2!'h���k�X�)��B�V��|(n�R�W�`JIbXP�������_
�f�b���Mg��q��	�^\p'�J6'������_4���&3�j�vcUf(Anl^���)�N������2���J���:���5��kZ���
�V��F��9�����L����<���)�"~M��rG�V�]��T;.���	/Q�OE�$M��r��/4����l��j^`������j�x��
��I�>C������-9L�CU��	�$�4����HM�6i������P�� <~!��Oc���~R��t���v
�*��E��{u������Y]�h	]@g�j)�'���a���pA������k>g0�djV�0J��^�U����T����L[Ap��#��A�|
�?G����������Nl:�B��q����.8���`H���*������.�b_RZ�{@�P�V84�ojl�;�(%��<��t|v'��vu��y�dCL��(F��K���g� ^�['�y��3Sb�a���\��[���
�zs7Z	��J��P���}�s���9A��/i��[��&���1\�<\R!�t���#�����O(����<�����=��\m[��*��o��^�"�������13l\�t��������
���~��j[V���G�b������������|�|����S%>[�/����_��<%�u�
X���B���
�"��k��[A��V��Fat.,���y�����0�:��������	�9���h������i��'�������-"�7{���C������)Y�,�u���5q~�\v�)���wj.Av���"g��^:"%C���/���:���_s��w��FS���$��dH:�:'��Z�"��Z,������{SN�A������o���x�06�E���X��;�#���&��xN���3:!���ux�W��D�)���D�q-�5�|R�G��!����N���G?�!��'����}<�Vl���:�2�kv9��Jx����kq�_*�����0�>��^�FV����x\"o�������&|qJ�"���j�v���f!��cZ��7'�zK�����=-�k��p��_�����Q���Za3��������S�.
��c�1�t��������-e��B�u�4�����"#$���P�jug�^TP�s{[6r�L78�NA���jx�f�v����#����C�Zp�RZ:�Z�����t�=��iID�{�k�cB��@�+{�>FG(#�~�4�I������}ug�(��@���w�����E��LM���-D?�����*EO	��h[ �$w0d����Hdj�{����!q���Z:!����Y�����Yq��8H��6�R��������wr��E�_��.\:��S��a����@?�??����K�#�2=�,Z����Z��aof/�u�j�|x|;�k� �����|��<����
xH���7=���K�deY��^s}�����e^��T��7>������I�4s"���%�������gH2]��_��������R'7���Q=&��Zx�1��}�=���L�^�[[���EY|�'b6k>�j��Ma�������?������a�	�y���Q���p~���2���(��JJ1+z|P���U(_]�(�d�P���=�~� ������7��^������Z}����ty9m��9�d��r��^J������x��>����R_M���}(�C�����_+��l*K$�Pw'}���Z>4�8�����T��v�?�V�k��~�������g�5`"*�� �����iL��}���B����i��];z}yL������sf��R�m��D����8�4�� T�R����Au!m���[��j�~HO'9�{�d�kZ�������kV����Um�F:����������]
4S�,��b�����z���5QW�k[�*�V�_o������������O��G�{�!~������J��9{P�f<������?��#O���xN��.���������_�����W��D��,>�E���V�5�_\��V�1�q!I�����B[����������]�0g�W])�Lcm��{���`�����}�O�E�J��!������~F����I�?�r���&/Y���C�?���]Zm�w�+u�u��v*�t�+B�$���Z��V/U���	��w��S�h�d���T>�
m�uV���uL5y�?���f��g(�����X&J6����{�*O���|feT�S�����"��y#��G]��*s���4>���S��|��c���C;6��y}O����p�J��ItT��05]���zV���{R�8p_�f{�YY
���f�cR}K����u.U##����E�oM���E"�,fG9�9�(�X(�c3<�q/b�e|TA��q�2
?�Bw�s��c������������rt!�b����;G�d�[����������|wR��"D��U�i�����!P�]���T�-�v��������@c���J�B�*�
�����K-�}�����}"���hW�*�?f��[�]�B����%��
B�o�1[��$��Tn�f_�����0��G�x�a��'���U���D�%������^?=�d��^e�d�7���h�6
�'&q���'%Mf�[D��
�w��C���~�9�U�����[O�3Z�
�t��(]M�Mz�2��>�
�d�����~��������5�F-z�)��F��3U{v�Z[�	��?���Gr���?������|?���]x000c����q}7��TU��)����]g��~���
2�Q����TeJ����`0������R#��u��
,$�8"��"��/j��p������v�hjy�T8Y�e}G�kZ�j��"1c�Y����
��7��p������MD�����6���H���l7��Hr��N'� ������%k<�����`x&�5)�JL�<��'�ax�6���QPOO�@�^�f����_�����(m��
{Kt�a�7
�&�b�&�:��Y`��+*k����=�bL��X�����7&6��������<����O����dKArJ�|\�"���L	�0�H6����J.W����1%(����
	�N��q�G&8��B'�fh����*�f��9���	���-8���_��pP{M������K����S�>��k`.oJ��!�����,�C��E�������`?�^��/*��������]N���s#��g��,���Bx4J�����v����0�Q�u��Z�{��&������UR\�L�+5D4�W��(RRc6���b�O�b�U��7�,�3����7nW�,�C���Ng�,�:���<x�8{L�r����$�S�h�-+�{e����-f~�!%"��)�%���� �I���F�ZT�}��U.����+��	&���[��&_��:5=��R~ �z8���Y�_���*�g�B��O���������{�=���yW��3GRU�[��S(&��V?1��{8,"6�1�@S�=e��t�v@S���V]<�]�N�������Q�����K����_��:na�����:BM`��xL2>�������r������"y�D���*Oh���z�P?r���X�F0Il�Bz���^�K������9?b)���E�`�L�.����v��S�4+�y_�L��QE���j���,���I�����Q�cRdt ��r��%y��0�Obj|���,��Q)�r�-�R'=�IX���,j����u)\���s1����4;�6*�gs�o�������6iO�a��]�eh_�����C'2��T�f'��<�N�$�sHE,y��9��\���� I��v6�BE.�H:�����.r��3��L��$�����?����|[0�����l\����rp���~������a��u����\F���Dh�`�N�;c����dJ2��?�o��ccJ��������Y!e-�N1��S9�5;���q!{�%\{���k,/��w&b�jF��4�F0j���^���rf��o}�t%Q��T*j���3v��c	����_4wF]�K�5��@"f&����bc��"9��������9	�����T�8���������[ �o�[�e��"3|���e\Pn�$G�	�
,x�%w��d��t�QzS�����{��S��&}��~j�@='�s`C���������Q���GB�~u6�i?�+%�����x��l^z?v�X=���2�%y��r�F�Pj���/q��<�H��;-Oia�Ik!�.db�e�:ph��;pN�������!"(3�(��j����+�*[���_�x��_�V�������~0A������K�g���]<��+���,Z��j�����~v~CH������ ���|O4�-�dF�x��v�>�����4��tP��-�� �#�c*��u��w�y����f�K�=j�jj��#�r��q�p�����J��sp���"���������zq*��q$&�<0#'g�YZ|2��p���M��<mkL���~o�9��&�H1��OyN��N�zI:upTf���<�������|�l7r���m��O���yl�h^��;�"�������;v�C@������v��u}��k~|�F���Q�j]�~l�E��y��?�� ��>��`��r�r?��*P���s�����T���C���	��T��|Pi���w!&�6��<���0�I��w���j���������_��@�
VBB�_E����H�ee���K�*T�%)����Z��o�?�I�F�V�},�������H��KR���"��Q��7�U�����ga"an0���������=�����p�].o�!-Z������� ��(���#~R���*�� ���9�2�?�E��A06N�b��{�x���*J��6H��V#�U�������G�>{��^q7-��0�QCf�M���^�)F�=��6.����&�����Z��p��Z�.][��,�N�]o��"^|g?gH�C��Z�P�����E�fH{�f�@�f���u]&�i�F,�w1:k����X��p�1��`���N�='���	��m7h}&���
�P��K�%o]���@������L�ro������+��>�d���q�h�<�
��7���w8���Q]�*�.!.���"T��(l��qfP&dC��f����C�s�a�w�be^���j�����
�3kr]��`-z�f;?X���8��"��60�\��~�<����9�CZ�������a��q\6�q5=����e��?b�.b��Z�{����-���w���\�F��_C&���Y��k�k2����1�kb��rj��	���z���"�]�`��t�F��w��{T����������lY�5�������~�t����:�]5�J�c8�w��c��� 
hz(�1kf���d,������

\?
-+�:�z���<����~�@-+_�l����
isp��l�@-���
����b����M�B�������b������x���|����;��8�V��y�m��)u��PW��A�*���	-��b�Y2���m:GP����I����#�K#��f���4��U}"���_.�Py#�C����U�H�r����V�H�0�zG��+?Xd�N}"����7�(�(�"������H�q��
�X�H�P�D���^Q����A����hqx���cFG���;�?��!�~��;
�d��;�?��!����	7t8������
�����'�?�����hqX��p���!:�7�?P��G�Wg?<�?����1��7c�u&�_�H�����H���BP����P}b�C4m@��Xxc�CT�o�@�#��S�?�?D������
���3F�/�?�������?cAE����Y���9�w���Xt��=c��f�����c~���%.�	��f�O���@�Q�������I�A��|L
��SUZ��-����~����K�]}��,r����J��V�j��zv7[�W2�M�a���d���Q�ql��6v
���~�������H���#d�)����&�-_K���)|��'A�5U���V>��G�Z��TC[vvxkd�;p�6�����)�����FF�ht���A���i�F��H�w �l}����mu`	����O��>�~'����5r�@c+���t��������#(^���9	u<��0�:���^��f��#�� �q9>�ct���yc���Y���``�G���jl� <�1��x'�������d �Y �.����^j<���b�s�!�"���X���a�����;���,�rNc1�3
PS}��~��f�63���0��s��p$��L>.�����Zc�����=kvh�P�������kh��z�Ax
�"G��S��8�O�,kqP��:��? �?B����1~/����C��W'�2$��	��_;tt,����2$@�
��WVt�@����wn�P�FG����rp����C��9�(9��1���\]��$���1Z�G�FrM��
�kiV{���N���
��)|��d�L����������? ~=�!Fr��9uH�z���#P����]^M�>d���)z�^'hM�4����� ��As�|��(��L�5�����w��}�kp�����c1t����qgd��g��>���W/�Se$���s���0^�������#�
��kg5Pws�n&�Sye�h�f�����Z�"�����x����?�����������~�.��W�<�!M��<_#
���������������;������|�
N�cUjqW��v������*G�X��k��a>���0�Q���E��@��_�?�<j{,4��N�����sP�cai�A��1/���`8���SzL9� ���p@�chD�������e����>?�UtN�$.�D|�P=%UR\�����M���<D��^��(m+*����Xp�e��gU\��\��@o[�(��30|~���1�'�t��}�������Y��[��5>��!�p���1�G>���5,��Y
YH�p�+a5����Z�w���#1����S�H#R|���f��-�J�������`�p
|�Vn��)N�����IY~�����PU��E���
4}���l���������,�F�2���*�K�.k�Bku�b���2x�������36��@St����/�	E����CjL]�.di�vM��oL>�������ox|r������H���>w0���{���I
Z
Ra9�D'��0�l;�����n�;���/�����z�.��h��N�P�w+��H�i3�|�bX����,��a�/w^Y�q��/[/\��Ub�T	K���q�X /�f���a��8�����:�Bx�#�|�a�U�zC���v6S�-�i�d�N���M6��p�YC/-�	 ��+�b�F~���G#>%���t+U���m�a�E��|cx�!����i�z7{�z`a$B���'��[�V����K�a�����Xy���I�����8d��8��\���D����t�V�M?��k"����*/�,�$Q�G-��r~����s���bu��\m7A���p��7�V������|B�6=��#���k�pH���G��)A�hY9E�=b�P�;��s\��.X{��E�y����x8��{��e�-����VOwFu��9������g�7��l���]Q�]9����B2�c2�Zp���g���K}� ��,Q��w����<56�~@u�O��Ls����mS���� �9��QC�����>p�W����������o�p���y�h����t�c��`Q��|��E>�,s�����,~*V7��f�[PH��k|d(�n�Q 6���U���-�`}29���Tw�l1p��}��^xL�"��/T������Un������L"I����2qN�ZHQ�5 2#���n��A}�q6�����Z"�v\h����)��A���
��!�����}	oF���-�C/��O�&G|sx��8K1�7d/�0�/��|!��B�����iq$�q%(�3�9��r��n�Y�"}M��LY�����c,��[$��J�p�T���%.�����(���Gzw�qpp����1��<�+�f���b";����q��p��uelX%8lT�QgO�c*��P[�P��$������u9��Ub�QT!��j*Q�j��'t�������4��i(����d�	EP\Aq�d��T����9�C��F���U�*��O1Ml�mf�	R3{h�����Dv;YD;�k)�K"LKG�UU�] �z�L[���9��=�{x�����:���3;.��j���I��Vr�I]X��P�1� ��8��*�����7�ecf��VA�8{��#�`�i?�4��r���&H�����gv/Y�R��,��C���%��#�������*S=	M�������������=<@P��@YQ���g|5u��$Ncs�9'ua�NC��tl$�L(��v��$C��������
*�/�%��O�������t�5��5���=,@4}�MD��i�#.	����D��l����A�T3�V�s�%�s��{�&��@��� GUHt���[�s5�8����v�1w(��D�q��� ���������i�.�U8#/�>�W�
N:�#��1��=�����f�p��4����02PF�t8����%��v�Q�����E�l|��3���9*�sF
�{V��������,��k
�u��& ���t����7���hrD�{�ND'QU��Ng��a9��<���H�g��}-��U<w��'��"��J8���O'������a������C�^��doM1@����|�����gB�M�]����
�p�	��9D��7�9>��g�L8p����w��1�-\���=�?b�L6S�H�)�
�7�����f�G�'��x��3{�T_��{b�#wO������,@4}Y��X�p�v����R�C�{z�:�?�V��'� ���@�'T�H�v��Q�=A�[��'���sn��i4�g�E/�$"�q�-�FW=��M3tY��y���>UEF���V�I|1�^	 F��4��������A,B7@;<�H�F������m�V���vu8~l���8���������!x�-9�����W��{��!l�����5�c��D�m���9	��U��_SKF�0akDl�T�0�Eg@I���l�_$���,������;�
!V��9
B�|J�F�	j����KC �4�����������xZ$�qk:�H�K��k�]�;C�����x$�A'8�)�Q;�i��F�?��oP��F������*.=MIA+7A�x|��2*��oi��d�&y)r��3{��7az�I�_��kZ�D�����k�s���Kv(�_<"�J����B�M	��3���qef�W�9:���H�H�Jy�A��,%.��QW��gbvR������7�^2�rD#���W+����Z~/P�"�N�Qc2+m��A�V��j
CX��"�( ��T@3�B�-���v�@P� ��"�F�T#G[P��r���%N�����vJc�E�9y��7����F����L_/���s�L�M����99V�4�B�s�����a����_>I���`���Syu �k������O�']`]gF�
��ma��
�8;E�<�1�+YR����� i���B):T�F���g�s��i������?2�O
r���xD����2AP�A�TU�����W<���
K[bw�,�K���e�KR����l�U��%���fc��
F����%�0�
��-.b<\D��U�#$����aT��w[����j��|�����~�����?��������H��U9�_�2}L�i�&��+��2�����|o�F������	�U||��&&C���1��b���ObQ����[�WLm�euMi�k���#^ ��[@�}��Q���	�������Vf���EM����)+�8/cG���$�R�u���7��l(���61�R>����&#�4������qQ^�����s��r�O���$/����vW�qUc��E��0�.Z���yq:���X��U���^�EL?v'W�@W<�W�-��[3T���f����<:H�v%��6yAMF��e���O�m�����8���Qc��I��\�w���E��
��2�����V@R�"�����E&{��+��*���m���z��� y�U�N�������V�y�VYy������x�sw�J^T��s5s���U�W4<#�$A��9)j��<-����'���"��7�@/g������z�3���a������L^�~Gi�[�j��.x��B:�
C.X=�#D�����?h�E���9p@�fT� m��"��a��+��G&n'Y�����%��T�� �^���r��ms�a����?��0J�0�5�����N�-LP��A��r�v�x/P��h�<[,�W8(9'i�\�nIa�%p��'}Us�-.�K'�Nx��]j�����h<H5���b�����Tb�e�����)��qn`��������V��x��V���"9�u7'D�����ni�[�1�3r5��<:O���vK�N�5�h�"�	�>�"X�t���2�(
�dl���[��������,�"9���DW���j_�_��������W��� {�b��5�&����X��sz�_�����\����y��-���K�HN!�!��������>�/�s]��%?E�3�!t�����?������=A�+��������~"wA��S���e���u`#h_vV}�� .pE�������;������ D4	y>HKJ������������������@�|�Bp9�Q��o�O��_{h����t`��(,�����L��{����)����r�3\��P����"?�U���������PD�Y��U�b$����+�>��C�8�*���-��|�2|[���?og��mF����	cT�5M~�Q�@F���#u��N ������G'����h6�>:����K�X��D^���H���%��r������GF0I�,k[��������F:`��f>�Tg�w��X�
��I��@3X[���j,Bh��"��X"��aMZ��D�R�6�
K���"��y�u���XZT� ���md�Rn�pi��R���1=D�}c}��c�Mh=]�������d$F�t���
�7
��@F�8��#u=A'�����������g4�Q�N��F�m��/m��`�|�P��
�$1d�����c{�S�0��\����~qu����d84�E�U_4w�W����*�n��yEb�a�aEb�a�!�@�``��i]7����"��:�.��Y�
5�[���d��j��\�~�]�(�NX/�1��������+>��|��p%Z:]�i$��J�X��x%�\���q�D��\�`C���/���x@,���r��!��I��B�#����a�����'��M��D��>�D|��$ZR��4�	���r�'�hZ�[R��4�	��h���d���I�(�]~Cd���Iv�m���5��n�Qy��}�Mgi���t�-8r���r��'0�y�+�(�nZ��Uxr�<����$���<6�d�Z}��?<����&gq���d
���{0���+���E�"n>�p����7�w6�o�cN�C�3�{h�Q�-O�o�rB��@�|�<2Ofn�bA��9�C�

2�^��qBff!��9���m��C1�
���2���b5''%������'pp���Op@�3���XP.\���u�Qr�Q�\������6�.�9D��@8�"�1���z���B&�2�h��)��U���$9yH*�S�����``�&����;��K��\�����z���fJN-5!�rn�*P�w
�m�IF<�4�
A�EP��@��a�s,����b�U�X-��E<G�KrZ���>��oA�--)����Q>���eAN,��������<u�a?��L#�������6�>�U�Wr�y:���q��C���/�oYh�������3�A�z������C�[N7z;#�y���[��AOE� �`��3� ��k.�:�0��H���e�G�1�~S�W
�4�sKr�y�_��ag+cM�Ex���s6�D�gIND�`���"!��Z�erVz�6�K?�lr��a���UM1}\�`��l���������a5�7qh��9��
����i-������pBF����p�����$d�3��\2j�ENO��!C��o��$g�����Zl1���������`�#�x��9�|c����b��
�.�K�E.e��L�����ko��5](X��/��k����(�</�_��#�~M��
e�	`���i������H�H.fd��C��Urb�R�E�g7�akl��)C�+�d	���,����,\�	�&����
&_��T<[�=���u�1�Q3�
}��#P��b�-1&��!����������o �%������\=	��5�'Q�"���I�$O�I������YX��)I�	�e�����J]�����Ey����J���k?����J�2�$J�����7{�`��l����t894��pp�����������`#|�S��:u�!����DCo���)�Y�+���T|[<r��)�\�7��FF�CD&}��n���e�	i�����t������Z�<�>*�+���nHO�i���a�}o�[g�u�G�.�c)�f��?�R��v�5g����SM���@yd���l3����4����v�5F�\��h-��w��������*%�k��n������������i��{��B�
�6�t-iY��i9g;r|�/��s�0���j�e!�����~������w�S�1��H��&��-]�V��Dc��������g�;�/n,�
K���:Or���c!*��
�9����I��I'����,M�{2'^:�m�����P������3+��)���� ����A��=���e����aj�:e����7�8�fx���
j���&���e~���1�����<���%2��|W~��v�l���e,a�1�S����������t��w��o�����j��a���%y�9#������B�^��P#g#�43�E�h%o|C�"��k~~#0#C��������OGgU+<�V��B���9�����~o���]�%;r�PM��3�:�7M'y�8�o�>������N���_s������a���45�]+�Cql�G������o�dZ0��%��d8��%#�`���!�1������S�%>��S�D`G��^��gAHNMCwf���e��i�E���������8���/Yz�$'������IN�m�6����<������_��#'�k�X���z�Nt�5nMW�h.�g�� �3�������*M��u2�8�����[��t���~�>�J�>)w��z��itp�>!f����>-�.Tw��lI_�|���V�G��j��+�����E�.=�����s�I[r��}�y���'��m��1mWF�&�]�w���'u���4����5/����i�]����>_�����*�1� t���V�H�J���(���9q������t
����w!i��o"uJ�D���BZ�u�����)�t��������J]�!R�@$���/��j*�������}=
� Dk�]��)T���@��l
�e#�&"y}��:��&��)MN�\�G_��zU~�(��C��<��1���mA���X����N��D?<�����*�uA-�R $Y�M Z���CtP�j�KDJNE�5������"��w�b���X���5�;�����D,�E������a|J�����Q����wMAO��m�_E(p��/&�Z&D:TE�D.�@�*�j�x8�^���L�����KZF�F��y���"�/�"��y���*T~�TeR�1�H�~;>��Bg��O�s�~����b1�?�7��,�/��������[�{����>��?�����7���B����"�����zp����^<��m��C�� ��]q�z6G�,�&Yt�e^xL?��J�i�	����������|������,.��o�\� ?W3��_�l��h8��T�����} 4@��\�f�k�*��l�K.<����H^S}���j�)��A?T��W:�_@Z0J����:��'����TV��L Z�5�s�C�������\�_�n��Qj4����D�&LU�/nW#�FI��H�����]�>���rz���x�3���V��[v|)�,��Q�Wb
{������Q��Y��8��s)���OnE!�w���K���pY%�x 7��_��{C���������A����li�^1@9J^���Q�if�Rn3uwMxE��!�ud��@F�U8
+��\�q�T�**c)�$��.����Z5:��5tt+����z�p+�����f����4K���V�g���u�w��n�TX��$�'����g�y��]4�e��|�k�m��M�ZF�_kE�F�:'����_���UF{�?�<At���N1�U?'���c����E��W+v�a
��vQ���Dw���K������LE���x�E�Z;��DG��:B[���p7N	?�;��P�Y\u�/?���J��p�r��Sx�gt���O��rQ� 	�M��{�*��c�/n�q{�>�3��U)v:
�J��������R��$�����H����{�K����*��L�b�I�0�C�Y����w5��
�8m���Y��"�n���x H��,��S���$�!>o�O��	����Q�daD��$��C��Py�g�:��!����9�~J�Kn�����%>5�k�Ro���.�L^>�����o3���K?j��Yf��B \��gV�N@�������v�����o�64d�j����C����_�9��KR�����gOg��������oI���~��$�)?��z������{�<��P�<�0=L^������h�cZ}M����+�������)���0nrgW��4��
�s��
l35�\��laT�n��	e^����0
hrJ;�:Y�8�6�H��i���i��&/LC��'J���7HF1��2=���Y&�|7]2b�0�]��Ci�*�i�*��hA��Dz�b���.���.JK�&M�FC0�mA$�����$����EP���M�(�u$���������<��T���u�4��9��*���}�6Q]�M�]����`���\�tu��D�-C��.���\�A
0-��(L��&��aR����;J��~�?
���*����X��X����D�G=q	��]���3��8�Ix�a��n\�Y����b�+��0$�x�����2qGP��2)eRNU2��.�
�(�/�+���)��_���t��������\���5�+�����0C��te��$�Cl����6\9(A)�cGJ�f�E�)���jawu�	��������, �)A)�z��G�&���Kt��J����2���dP��z/����x�P�%�+��a���Yi��Pc����E4#��W��8�3���.]�6����p����-#��sT$�<>���;��{�Bg	�/��E�S�����-z)��Y��s\x���SZ$:%������&sS����r_}�c3[Fh
4��fh�[��A[����\X�a<��|�0��G�s_N
\��&_�x�X��n��[Exi8f����"W���fkq�Z.�t���������^�s��8��X��@��e������"Wm���oD�2q����#C�L$��`������?�)*>�	$�����F�{�51�����Ay�Z�4y�S�b 
�B���v��4�Mni����h
�:�����^��� S��n��A��pHFP#�&�_��b��/����9��`.�(R�a�a��2�ea�n����pRA+�R����/�:�a7�S<%����	�|O	���,�!X���A�a	���c
6�R^TM��q����1�A�cVO-��$g)��XdU�]�~������=�������8Z�Q5Ag]����\�L1����:���I#`�����,����g��T��Ln{�r�	�w4?'�k�Z���!BRD����B.v���aRr-^/1�O����9%�/9�o��$�_�:����!R59��)|c7�z����o�<3��6���O���NS_���o��|��,���u�#���6�R/l8���PQ�h�Df�����Z+����`���iY���	�o�����=��8YXD?��e~N���qL���d$qX��s9��`��,�����oE7Tq���/��R ~�(���������!�C+�����pgq�5�E�F8�{�	^+8�I��K�����pI�K�
���?�<�Y��"���C~=��S��gg�	Xq,�@J���tP[����0}l����k��F�%@����/k���+������\��`_�d�0L���V���|��h��S������E�?$�@H��4��d<6���a��8B�D�R!�n���U���z+���DEr=�G]��4B���������5���kZ��[$�	%�w���n������z)���;F��6.7�'�7�������l�����9I�������_��C9��Bt�l��)!����I��5�ar�uh0����^��L�mz�0�1�u)V+���1[�Z������v�	�����k���1�D�8�%j����Y��B�� �8�#X���qZ��r����"9'q��z�,|P/{l��g+�5�B��W���98
 �u��&�g���i���q��5���}�g����hrP+=����' a~4�
� ��-�t�4�%we�(K�����Q�:����p���B��_�R&3�S���6�sm"�z�6b��k)�9�U�)�;�$L5�����Uh,���m�nQ�r����4������:�L�c����f� i��P����s6�{�����l
�1G���	�!����p?>��,P���bTz@/�}��*��G�����
M���q����<��6�'��g��K�9$�3w���w�/�����)�+�%���7�+�%�6c�-�����_.�5#�F��NL�U#vE�`N$���%]��(������bu����Q]�*���YUg�%�0���O����Q
Y�C�f�J�u�7(��M������Z|R��T�
P2�
���^���[^�;�0��Io�Ys��G`�LH��]~���G�o�E��B�g�/`
V�2;��F ��S���`R��!������$k��R��N�0^�����de����P��xp��E����im���6A�T���<Vye�G�"o��
	E�pp���W]HF�����B0!%�D>p���nE���Z5^�*��������B��_�z<?d���|Pm��))+�{��TYi��7�-�BT���-�5��a����������s���������$��:�pf�i��*�)����U�R%f�e����1Ty����u�n�uk���U|��h��S�D���N�C��;6Vwh�"���X��������Kr�]�����.�L?����l�>��������}-PK�e�v���c�
������"��E��c���(�7�Vo����n����o�d-���F
c��l�qz��U���5A�������v��{e������Q�=��n�� ���	�L!������1y	��<&������`�%L��G@���)�h��c��2z�^j4g)K�<3��"��
�@��~�����h!fX&C�1�~�G���a���fZ"C�1m�}2�
�o���Q�D��U����K�|SE��<{�����d9�;���*^je��z�rc`6��q���]��ti�\�DB9��^�E�dB�u~�����(�?���!���C��O����?���:I1����G^�pt�d
��f�J(Yg!~�'�+��9�������@r�7[0,)������8p�C����@����r��
�2��@�����5���%�=����"�hnOI��4KTv[�������|����L�O�����A?���~@rXh��!".z�(���!%��cCE%I�$]����z<��O
����S�V����
���F��|\'D��v���3��7�W�WTKcoc��A5_!�qS��kd��_'��P3sY�w!n�rd��j�N@�3WP�\o	+(lscl�U��p#�Z8�����k���)�&buwx� ���@B;��D~��7�.^�T�����3#�b��Q�*�.��npd"x���A�������+��b��B�1�'D;���������r�
�������h
����Y!�NCS�����S�	����yB��/�5�w�Y�K������YQ����oV�8�5�� ��t�[8����������c������9�6�{�>��7"��l4������g�����K��Q�_�`pm7��O��$=���m��q3�`��>���O�;���pt��Q���b�3��8*7��Tz��F���-=�0�W���$]�via�^9hGRq�i|J�->#@�I��s\<Wo�&n,����&�|�O��Cp��S~���Q�'{�O�(�\��u�W���U ��!��B���0�ZKB��P��\*=��i!����$o��qDR�{�w��#�:�b/���b;�-���][d�n�m���v�7*R�t2��
t�$����K/��9z��������xT1C�=����4zsUQ�e:������<T�z+��\Y�Kp�� +�>Kls��/D�Z.6���K���F7M����~���M�*c�.��������K�MJv��"���x��H��Rt����3���lA���D�P�)u���A�q%w�	O]�#��^�+����e����BM��f��&��M���������
�6'���
h�����+��Q���v��l������}�5K���
�����k��J^�F�����fP��<tF�)�bC=0����^�K�x�fG&(���z4Ld�}`��(����	��K�s�+�b�IR�I-=�	!:t�r��{pPry�co7��P�c��+70���#��q@�;���14�N\����Ab����Hb`��Hc��d�r�����Q�o��<^��B�	P���5,�I�1��P�?��G����F������`k����� ,T.#s�Qv���B.�H"C��4�HS*
�����fP���mU��� 9zu+eXu������������!���_og����[�����Hy��V����������\+{�&{Z�����D!���T��m�
�Y�z����M��d<����l5\y���I$p���c�B
�-�Yhn<ek��P���������zI"i�;��U N� �����~��\�k�n)��r�&3}���D�����s��W�W�W]U�0	�+	Yqj���BV����,f�������A��`*rp�%���;�����e2�>B|.7���#q�%��rkq�<�^B|.w6�c�������e6�^Bl.
��������[|��\$��),!����n��b��:8^.�L�R^���Sm�/��Pj�Z����a�8���4=c����e�����e8���H��G�3Ou8T��/q�b��?�k%���U[#-e\�<�d�_@�����}2F��M�L}�Nw��������p.��Y��~�����I��|Y�u���:� �ER�br���g��9���k�%?��)�}h���������X��/F�f_K�/���?�����@�����Zc|
�/��0�6_�@������"|]R|��������%�o>sd���)�dn�\���n]�	�%gZ��N4��F#I�v[�&�+�,����k�c�[��3N6y�������:m���*�l�[S��D��Hd$�����[��k#jh��
./g=#����[���6����B���#�G�����F��
���1�ha��Yt\pKn��^��=:�;�G��$���q�����������\q�/W����+'����~��W_�������Z�X
�A�:�����jWo���Nh�C5��<�Y~��m8�����6�^F!���(����b��v8$����!��R����Q����sR�
��kn�@����� bM}^}0����n�����w����yf�[z��|�'y>Gu���<�=>��O����?�i��2���d�f�����C6�� �����(�;`r\c�`�����Q�8f;������[|8����7&�i��F�����$zL��I�����y�������z�<�C
q��)Q������wE,�yUy
���:�i�[v*�z6�V�rZh�	������R��OL
y���8R-C��}:����Bs�-k�`�m?%k@�U�%�q��}���.G)�D`dLI�L*��8�Deu{z�l���TU�&�*/!�
]��~���N�S��Q���3��������u��7srw��������d����K��
(�o�c���\2�n&����Ju#�S3��f/�_2�r��mE�P�5������R���&��II�Jj�m(=vH��TH�E�>�8$���>SI_��y�9�X��h�s�
2�����z�pC37���D7�������l�������|�1�w�v(�H��?N4�����S�����3�[�P��Y��,��9�������s��S4An�D�=��"��[�c������o��x�Lk�4G�z��=t���n��c���*�D�����f�6zl�xTO�=h\>�2�I������B��uR�K��I��R���������;�+����x�F��Z��4��i����q_# x1�#�?@49X��f���vxJ�r����Q��(��5n|��s��,��!�������sR%u�A9�;�js��O�#����MI�v��
�v�I���P�qU�����v(��������UV��������[�%M��sv�� �8u�vY~����fk��L�<�����{���r�=`�������L�!���;}�I����_��� ��L&=T����5�uu�=����~��K�Z�'�PI��0&.Lu��V}�����G����1��N���c�@����$0�eT���Oy��U��R���=Pk�a��	�m��Ra1I�2s�g��v����Hx����+{Qj�oH
�E�#��\�����B�[�I�dO_��%��e������D��ud��4�2ry:>��9.��e!t$�6&MWw�����k����69������xQ7��3�y��#�FRq_�D	�}�8%�HB�	����/@�kz�R^���m�nMq�C�"nl �������9+���I	HsZ���/�{�HJ��P.Zv��D������0+��r(!��nr=�$\��P��eZ�n��������'��B��������)�v��,��c�K����d���leo</��!?���yT|��� @\^�I�(������6���(����_��cl0)�����������K��<��M0�^� �`��R�:t��X���5�'
8V���7"!��t-�!78�F��� |l�k�9�/W�u3�7i����/�Z�,�Fu.��~J���o.���C8����m���53��I�sX���h��m�v#!�������\�����BG4<��� �4������t�1��\�z���N���^?������j��v�^��;�^����Z��U�����``�xN�,�]#��X��)�sZ���|�P?q�O�aC��H<�a�D Exf�H����,���f��V�<������,r�����"yc%T�x[a����(�x�r>��o�L9�7^����
�+K����$��m��6t,��|�A��W[9Vv�;39a�`���i�0���������Ex;�Xt�
�9t��1���Psx})�����g�M��p��I�YNI&/IVE�Ob��c2�T���!rh�Y��b/�P���u�]�d�3��]"`Cto�u��.��4����u��h����R�+��a�h�/t��Y�����J ���qL��f��@� j�I�P(#	�%��y�����v�4*2OTml�{������"��5U�`K�%��ID��-M��v�v��"����aB�m��B;��c�!�����������~�;$���v�q�1(!M����.Lk	����4E|��YxJx�	�v�o�	1J��T�T�=�V����`����q�+r�hV�_^z�*>H	��l��E������V�����%3lghv
���2��T����K�Md@sS���<�~�H�Mc����_�9���fS�!W�2�i�29'����R��m����w|V����OdZ��O�����^y��y���.<z}d�p��k���[�9Dv�V��f�@��n���{���5/��b��~��sE�d����p��J��X�>=�g��0���Z�'����q[[V�;��������R�>�����k^��S~|���/���3�xvL&�uj�}5r{O������@'g��kL�SZo���~�AK�X�4:(����(��^^�P��)��4:.�|�d:�qFE������e����5:�����s�.MAq���h�b�.��(�� $��Cz���x'�n��!M�&��6�j���pD�a��xrGG�Fd�=(�nB�q.��h	��U\O�an��k��MR��1�t7`�1������eR��SU�Y�SN���D~s�EO��A����q�]�p��u;�-�A�� �?�s�J��*������tx|��7�zL�M?+OO�%���b��=��POV��'��IG}���O�Q�o
V����}�8
4�C��S-�$�*�:d��zY���1��n�,�\J��F�[a�����p�2LJ��P�7�'��w���fRU0#�%������j<������`�'pM�C��
��<����[{������
#;�����Lg[
�q|��Ok���Q���Q-�w�0�.������lF0����s����@�����8������>B���������@��K00X�k�L<���
62�=�E'��[i&���<7��n�XY��F��"y�3�9�g�f�*�������������5*?�����by�C,OD������,��.��C �O8v�mq�N�R�W�;uJ�kr>����!}b� A3<^�x	��#+�<X�$e|+ne�>�S��G��M��/����l��B����0#v}+�����.e
����l����!��a��f����gO�s���e�]:��X�������;�D�
�Y��
�T�^4A+S��9�,=BUh��(�����Fn�%�����2�
��n�)�������XF��P��� �@ ���wA���3�����B�S�1���d�����������w���i�<�����;�t������n���{�A��9��m>A��w���Dl;bT�/(S�Q��-�L���m�=��d�P��6����UE���:�a��Ub+g�"k`v�N����u`���nc^��?��w�������-}��F@S�qE
�Q�����9N�qq1H"��j����yX�`�:�?2NM�^���r25jOAnu('��j���F.)@����{Z��G�^t����|s�/{Y���$��X�@�9#�����dn�k��k���m��,[g�\�2��nV�T�(#�59N��ex�G~?��v!F�4H�8�'�GS��er,�����(X�2�T�������*}~N
UT&�U��d���'� �l.�POjRZ�������O�<g��,�����GC#qr1��rb����c]7���7S}`��ej8��e���VI&wp��8�Dz�
�FU���~X��~�3�l��`�D'��o����A^n�Q������9gB�v]x�]�������dB��X�9��R�.A��cs�cq_$G�8�����%� M���Y���P�������[��NP!�����{��_�7{�R�����m���V������wD�%Y�%q+;�	D��D=�V����8O�I���o����_i�����]��)~Y�M��z��t�����C�s����������������o��;0�$�������2��K7�RL{L�tl�.��%��t����/�[��oIt��B�B�����_����]�S	��W���R���.6���^o�}�P}��>������,���`I���j�7��M���1���W,*��q������(fw-�G���g�>=���
�;���[v4�}��x��c���1Ici�K�K�C����lH|�RI��F=��e���wRXl����/c����6��_�����-3���rys�4�qE�q�!��
M�������o�Q?�Vu��(���������'�c���[�!`���38=�q�0�{��������R(��4�����|��=����IX�k��^:��5��q��b��"3\����#�+�����0��������U�1�c�(�\��n�0��?�����|�r�V��7��1�[*]�P���w����t���yZ��>�������4J��+����R����u��y_8�n��h#����&�����T�[]������#)����44g<�&�e�#a���C����h<�UC@�	�ZY>h�T�t0�����5;������������>/7���V���� X#++e��kV�/=\���zo�������l<���0��P��U���3m����QSC&��vO�67��jU���	P~� �w��yE������)�K�zI�j��3FM!���P��Rt��;��q���������5R���
t���
Q�m2r�K`cJ�B��V������*���yPP:�7��A}%�K����G��w{3�/;���9H��t���3I��T�C������<wN�ga[y��F�h�_�h��������<;_���X�#D���/GRB��<�LC�>�aus?�ch]��$>��F�f�H��z�XG��!r��y��6���@�^����Lmh�R�{�� Qzv/]����'>���,6�i���5���2����������e����m��n��Y"��dG��|�Q-�6EC����L��K�������}a���~����j=����J�����I7���G1����N�hA�M�m�8�D�zITQ����(�x,GwB9���m����-��4^Q�r���88�_���i@\<�m���t��	=�'�1yz��zOs�a}�����iO��!<-���A<�����	�IY~N~�����E"���f�x��Fb����>�Bu2
����|�����[M�����WF]7w2*�d��>3�88%�����M��*�%r��*N3tRb+)E$DU�Xp:-+w�Yt�3���l��]������2�J���`,�y��Gd.k�������	�q��m������8�
.W;�^�����:����q��)���7p���������^p�n6J�|�4O=���s������\���-{	uh+O�E3�'s�u7�yATU� Y�������7���������i�}�"jqY��c��C��8�����`0�8��� <��J�
>�	p�b6�@����� ��Z�m_���vt��liR��`���k ���o%�3d/�9��t0��ri� ��Z���)9'�*����$P�P�j9C�a�IW���>��o#0�vo{E�i�0����<�S���@�=�zyd�*����o�l�����9)8��B��'}�j��WcG��6I����������U�L�,F���$,y���$���ERU���zw��IxXo��$Y�M��:����T=:RW����,�P}KO]	{���|�Pf��|�+GM��~�����84�3wb��3����UDA	A��-���&���&]&L��+�XT��| �:Y26���C�Y�8��2[�dm���F���%L�����#FD ��g��0����{H�qY��:���uZ���)�]�tt��}����G�1���o�4�S�S�V����03��p��]��UR��W���p)paR��3��4�,���")K5�������'�����������0t�)I5�kZ�����?[�����;(�h�,r�$f4v)�r��N�1�\R�U\�T�b�b�}��j�>�v��KD��y�]��X����2R��E�Rx����yq;'%���IhR�-s���� �>����:���������B���W���D�����|qrV||���i+4_��_k�����]������'���y���y�4F���q����N��"�I7;J/�3�;�9jw����E%�/��
���Z"�J��=���Z%�J��m���Z(�J�������,�#f�jF�q��<��W���)V�c0���n�(2,��/2����`3#����U���9��q����x>����H��S���]�F�y�����|O����F����)����kRH��,V��a���L�v��x�O�j���!QM��)����1�����[JKR����l`,o����I�P$��WR�����\b����T����lJ���MQ�C}vh�� ����E����Oe���Mrc�T�;��
�C�������7���o�����&�UR��B[��MhS�$�,#�9��=0�t��-�Q)������*�������{|������
�k���t%�]�2��=C��
��~����e'5A�?�_����&��k����m%Kc�3��%�Qv�<
GH��J3����%��A?��&-�VEA<Y���n��5�C���������x��-��$��)���>��_����L��
�����=���$�U*'���aJl:-��i���h����B�n��0����Q��e~;��y�@5R�O�<���8������l��vI'�CL����(
���mC���^y=�U��|�������op�fUzN\�Z����]��iR� �p12�������T�u*�*\���B��a�L����[��M�$1 {u�d��%�����d��	q�lE�r|��'�}5
,�!X��]Nz����c�9����!�N���	Q�He#9����>��s����I|������
�8���!}�d�b��FA���A��G�q��<+��
>"
�!9.�����^8~J����P}u�?k\v��z�6J��!>K>b���G~36:�����]����(2�P��� &�N��.�a�`�*���Y��b
�������nI&��f������%�se�����M�y�N���U�+L5�-�,IBoX���B�����e3����&������z��\�^���<\��O���=7G�O����������m�8�~*F��}#qR�Qr�;�e'U�K������~]�F��Y�	'-1�n�'��k���J����%�~��$ ��,k
�2�U��zrQ�y����T��Z�!����b0��!��$�h��Hn�t�1���[��&�li����b�����E�%,$^�w5X=�S������/z�)��
�`4���'��Q�A����
�`D��>���E�����0�wmOs�bfKy ��8I�
��{n[ol�8�	�8�����k��g�=6�?�H8�;�����:��b��y�I����f��z��x���e\7����^����vh�'QR�5�
�f���p	��N|Ucc`�$����6>�5>:�bsJ	�ris��<��0K�&��
�����\>�.
��!3�2����~���s��F��"}~���J8���t����o�Mr��a/��\�fk���.Vy���DFc��__�����e&�c�/��O>�:���9:��KR�3@X'���.A&b�(���9%�����/ivc�mhL]4zqi\pL�`�'(N�[j����sXGfaN9j�5��g���)Mq6��EfYNh�3�W���]9��)�F�M�\`�����hu�iYu
�1�W�����A*���:����Zhu�/y��nB%e���*oBD�d*�5�%�@�C�j��]�0�,��,��-=~Q�m�����1$C��
T����,�i�r�e�L�[���,��G�pW���+SsF�2������������h@�v	���t@��.�V�����/��������_[����{P���t�K��v�Z�"���,O�������[g3=�&E\������i�@�n�W��������d\s����&?t#���U�]�3��Swk�,����$@����\�b6��S�~��/���#�>^��l�������X�-�������C�}H�sH7_��E��C8�K�y�����f��i���dw����<:�OOI�dGu�P�5�j��_J\+���|�?��dA��
���/�l�v�L�@�f�\�"���s��O��vI�ME���I5��f��a�Z1���5\��E�[��SC���>4���v�J��9��SL��\{�\Uz�a|�"�Ue�h��*�?�h2�`w���l��PU���3�%�������P�wR��%3��S�����;2������!��K�os;
�5��xG��t�)���J���aV��9&}�
�h�b���H���	gd�� �4�������i���$��8WoB��<�0�A���pB�gt|�5ho������Q�uDkx�M�����qb�	������.������� co��(�0�����>!�3_��������i�1@�i�dX�k�1�����z�Xg�|w�����cE�]�]2*��4!�4*:=�N��2�pw�uCHz��Q�5�4Eu8@s6�K�G=2<�����=(s���;�'����|��I���C������RK+�%q�p��������6����F�c�E�:D��Y��Q����z!nq���Gi�P&GLrW�����2�����	�k��q<m�3ltD�������8N�_�
qP��Q\�P4�:nP�FmMi?�}�1|?���
�z�A6.���ce�t��C��{�O���kR�`�Z{�u����W��ct����6�^��I�E,�&��R�������R�27��|]�'l�P^e�C�_Ui<x�z5����O��s7	C�5�|�OQU$I$�l�k�f ;C4p�����0���h�	�,��M0��G�%�KG�I�xN:��-f���I
��$.�|<!�,K
O2]����"/D��S��3O�s?��(�3������nH��J����(������$n�H*���G�l3�#.�f$�F�@Lz,i
y�^y���~�H��F(��l�a����~��/�����.���a�7����
r�w~�B�:*��E��Bl��s���]�(����e�����HaQ���j��{En�X��E
��}��c�����Y�j�����w���x�
6a��<���o�������V`!�{�r��b�
��zr��#.�9 ���*�j���u^������L#%��
s��	�s^����q����Gqt}y+�I�}�R���y��y������E�M� r\�^p�\,f��s��\��H>�O����R���MpZ&�����"�=.�������[����5A�����@��A�U�}��{
�8�z*��<HHk�|��]�0�[��)Ak��e�e1���q%-D�(�o�Ms���M^�}+C�����+uwtn������b����M=z���N��c�=��Ug��gw}��o�rP~ yx8�����[���l�?b;=����h������'!���Z����Bh���|+_�p|?�C���_�%!�b����MJ.��35���~��	N����
�d�R?�s����C�p<����!��SF;oxuOi�R����P�BH����"W_e�T��.48�f��_�\v.�k/��\�W�i|J�ZS����2�=2�@�E\r��0��������C��W���]�\�J�KV#��_U�u����A�z�]�j��V�q�$���^PeTeW,N�6Kk<��@�F���_fP��������xl���=8`���$_���G�$�_fL|W��#����b�������������.������-LS��T�����&V��*�$�P�������4�'�>���xJe�(�&Z������e������x�[U�AI���
Q�a��v�@S��h���-����
�m]���WY\�����83����Y�Z?�59Ve$�W}m���[�	�c~����x��l�P7r�_=��,�a[�&�#W���:��b#����������2��?N��*7]s	]�����~��<?D�������t���A��<�$�X���Gz ��x/>�
�������`������aFeO�_��{<��1~�?�+�X7U���[�ELOM�*~<'�X�U����k�VU���R�s��&��@
�
c��=�b.��f �`C��e}x����z�H�R8�b�I����.�=��9��&�x
jo"@�����w���(�oJ|L�����x�z����~���
0[l����;��Wt�3���-J��J�������������c�^Mrs�������zN2]����3ja�(%Er�,q�����9���E�FNe�F�;�j�yg��Q�J���v� u��F-�aM��v�G��w������@.�s�b���v3%�E�?�����q��q�8��#�Z���,�Z&�)��<�t�A����������������7�����D��5)�>����O���tk�����f�1��]��(���r1�Y������3r�3�r�CO��E��!�A=�B5@Z)��Z�@j��F�F�:�-��[~+��z�M����A�K	�� L�q`V���k?���z��I	��0%����O(�z5�,^a�a������v����z�j�|�U��`k
�}�$K�����[�h\�)?�zV�9]����������b�1f\�������r?D��L��!t������&9m�h��U49!#o�U������0��K
t������9-zN�;�"'x���
�V�X�h��,�L�C�Y|���w��{���`�����n��Nq}��T�!
"�1..2\&>�sS��Aa'�"0�+&��9�Ql�g��������kJ{b'K."�P�7^��y��Tr������6���"�����.�����#}�D���n����a9�W�������u[�]q+�����R��.�7�,�lld�������o�;k��#G��p��T��+9�C���S����n,N)���M<*{���)6r��������H���'��@_����x>`,O|���g���������I��Cw��m%���&�xO��XL0��p���\U�cy6�9����)��d�)��\��$xO�w&��w��Z,;z���FS�����v}.�S��Uav�s�y+�2�i]�7��^���Q�������j@B�kH�eT�����a���\nD{z���S�G��8�Wy\N����p���#�K_%c*�l*����G�4;%�&�?����RB[���w��.Z|y����r����zIO
�m�#�|��u���r��������Z����f��:L�OTR����=��`I����=���{j}�I'Q���N/��2��_��CTT���o�����t���f��[���~�8��(����rd�o��r��hYJ`v�
z��d�-P����R}"�JU��/���Ji��.Z��#bBoPe"�U��K����OZ������y�a?�S�Y/I��V��S�|+�:))�m�"^b�(�H��,v����yF
x]��5'Yd���u[r��F�/Q�b�&qq����P5N'������^��N�PrDj��%j�� ����]6Z�;-��,s��f<��'�e) �.�_�ZlN������<��E;�m�0����U����R�,J�X+��^�2��	q^�	"���#B��P��1��6GH]��{I�
t3���{L{�a�����F
���gG8PZO��3KyM���ct���~j��YBU*��O�D<�z�����bY�������QE��H`f��N�u���V�u�.B|��0E._���=���f�
-�8�3�k^	V������A���7�V�%�U&��!����(?������3���#��#���p�t3�����;=S�s��t^�.�0p�[}���w����;�MVvl��
^�a�"9c�&�v�q����C���0�_Y�����$b.��z���(���\���P=��#�H�T�"��a���g�Z�U����
�v�gx�z��>��~.�����2��Z�2���p$W|���,i�~���V:4���<��(����-���7C�$��Bo�9�E���^>O��l����f}����U,W�h��s����]i.�7�J��x�����\�	)u�������d[�a ��^���,��i'�m6������eU�A8���H"PO��dI�P��UrA��������7{�+�`����<�/kV4����Y���=��"���r�I4������f���
���=tV����P��_��u�fOE�A�Z/]��Y����
�*�oc��S=�xY�V(���_{W��&�������$��ao��I���=L����|d8�K���w6c n������b�����_w�sy��f�I���Y��]�$M��L��w���Np�\.�M^�����
�7�?&��sa>yK���_�)x��	���=�S��A'6���/Y�`(]�l�OP��Il���P��=���ya�s���|���pSs�UO��\��i���r�L��Y��D�9B#V<0	�����C���7�A��E�����W�Y�<MQ�T�Y�'�H�Hw�#a��Dn���Ou�TQ���c2��.��x��!�|� ��{B�G��pK���MF��[3���-L_T��x9V!I�m�w����<)��"��
��L	�	�M:� w	�U��@��u"��U"��*�'Z��X�_d�w�)c�cj��K�>�[q��0�U���XZ�;�R��)���%�9k�fV3E�y.1� 23���c���q���==���:�,"�@;?�c����$�$!z-�q��M��NMxIUU��K������*�^�V��k��,����cuhfu���[)�)����Y��fo���wh{��\�}�U��2�"��7�������H=���%���/W��,��O��\[�\��\)�����!~`j�������������w���.5A�@8�}��jE�F�]�
Z-������s�%�.{:e�qJ �3q�'[�{t~�ITW8�V��2m#����i����u�����e�[��0�E8��0)��L,��v"����V��h����p��_z�t�Y.�p��s�7�;�m��9��xl�����&��?W+�"-SX�X5��V���Vvx���h�L��
���?P�u�|����� ��1���j�C���:/���HP�':����|n�������eej�����8�1��&����&p�y����������[Ztbe)�h���������g���p�XK��R��F6�8+��a�o����h��U�t�+��K�����+�m\-9:�5�Wx��
�_4�7a@��h1]N������\��r����7/�>
0010-Type-aliases-for-oid-lookups_v3.patchtext/x-patch; charset=US-ASCII; name=0010-Type-aliases-for-oid-lookups_v3.patchDownload
From f4891dd383c56b886297c954a062d0a0040bdbbf Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 16:52:12 +0700
Subject: [PATCH 10/10] Type aliases for oid lookups

Introduce dummy type aliases for OIDs referring to index access methods, operators, opfamilies, and types. Teach genbki.pl to do the necessary oid lookups, and to turn the aliases back into oids when writing DDL.
---
 src/backend/catalog/genbki.pl     | 140 +++++++++++++++++++++++++++++++++++---
 src/include/catalog/genbki.h      |  10 +++
 src/include/catalog/pg_amop.h     |  10 +--
 src/include/catalog/pg_amproc.h   |   6 +-
 src/include/catalog/pg_cast.h     |   4 +-
 src/include/catalog/pg_opclass.h  |   8 +--
 src/include/catalog/pg_operator.h |   6 +-
 src/include/catalog/pg_opfamily.h |   2 +-
 src/include/catalog/pg_range.h    |   4 +-
 9 files changed, 161 insertions(+), 29 deletions(-)

diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 973ffc2..9de95cb 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -114,6 +114,57 @@ my $catalog_data = Catalog::ParseData(@datfiles);
 # tables here. However, if we need default values for a catalog, we
 # need to wait until the full tuples have been built.
 
+# vars to hold lookups built later
+my %regprocoids;
+my @types;
+
+# index access method OID lookup
+my %regamoids;
+foreach my $row (@{ $catalog_data->{pg_am} })
+{
+	$regamoids{$row->{amname}} = $row->{oid};
+}
+
+# operator OID lookup
+my %regoperoids;
+foreach my $row (@{ $catalog_data->{pg_operator} })
+{
+	# There is no unique name, so we need to invent one that contains
+	# the relevant type names.
+	# Note: assumes that we're only interested in binary operators.
+	if (defined $row->{oprleft} and defined $row->{oprright})
+	{
+		my $key = "$row->{oprname}($row->{oprleft},$row->{oprright})";
+		$regoperoids{$key} = $row->{oid};
+	}
+}
+
+# opfamily OID lookup
+my %regopfoids;
+foreach my $row (@{ $catalog_data->{pg_opfamily} })
+{
+	# There is no unique name, so we need to combine access method
+	# and opfamily name.
+	$regopfoids{$row->{opfmethod} . '/' . $row->{opfname}} = $row->{oid};
+}
+
+# type OID lookup
+# Note: We can't just use the same type lookup that pg_attribute uses,
+# because pg_proc has type names and comes before pg_type in the input list.
+my %regtypeoids;
+foreach my $row (@{ $catalog_data->{pg_type} })
+{
+	$regtypeoids{$row->{typname}} = $row->{oid};
+}
+
+# We use OID aliases to indicate when to do OID lookups, so column names
+# have to be turned back into 'oid' before writing the CREATE command.
+my %RENAME_REGOID = (
+	regam => 'oid',
+	regoper => 'oid',
+	regopf => 'oid',
+	regtype => 'oid');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -122,8 +173,6 @@ print $bki "# PostgreSQL $major_version\n";
 # vars to hold data needed for schemapg.h
 my %schemapg_entries;
 my @tables_needing_macros;
-my %regprocoids;
-my @types;
 
 # Produce output, one catalog at a time.
 foreach my $catname (@{ $catalogs->{names} })
@@ -145,9 +194,12 @@ foreach my $catname (@{ $catalogs->{names} })
 	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
-		my $atttype = $column->{type};
 		push @attnames, $attname;
 
+		my $atttype = $column->{type};
+		$atttype = $RENAME_REGOID{$atttype}
+		  if exists $RENAME_REGOID{$atttype};
+
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -201,21 +253,49 @@ foreach my $catname (@{ $catalogs->{names} })
 				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
 				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
+				# Replace reg* columns' values with OIDs.
 				if ($atttype eq 'regproc')
 				{
 					my $procoid = $regprocoids{ $bki_values{$attname} };
+
+					# If we don't have a unique value to substitute,
+					# just do nothing (regprocin will complain).
 					$bki_values{$attname} = $procoid
 					  if defined($procoid) && $procoid ne 'MULTIPLE';
 				}
+				elsif ($atttype eq 'regam')
+				{
+					my $amoid = $regamoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $amoid
+					  if defined($amoid);
+				}
+				elsif ($atttype eq 'regopf')
+				{
+					my $opfoid = $regopfoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $opfoid
+					  if defined($opfoid);
+				}
+				elsif ($atttype eq 'regoper')
+				{
+					my $operoid = $regoperoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $operoid
+					  if defined($operoid);
+				}
+				elsif ($atttype eq 'regtype')
+				{
+					my $typeoid = $regtypeoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $typeoid
+					  if defined($typeoid);
+				}
 			}
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
 			if ($catname eq 'pg_proc')
 			{
+				# Save pg_proc oids for use in later regproc substitutions.
+				# We build this lookup after the forming the full tuple,
+				# since otherwise the script will break if the abbreviation
+				# for 'proname' is changed. This is fine since pg_proc
+				# comes first in the input list.
 				if (defined($regprocoids{ $bki_values{proname} }))
 				{
 					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
@@ -224,9 +304,51 @@ foreach my $catname (@{ $catalogs->{names} })
 				{
 					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 				}
+
+				# We can't do type lookups in a general way for pg_proc,
+				# so do special handling here.
+
+				# prorettype
+				# Note: We could handle this automatically by using the
+				# 'regtype' alias, but then we would have to teach
+				# emit_pgattr_row() to change it back to oid. Since we
+				# have to treat pg_proc differently anyway, just do the
+				# type lookup manually here.
+				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+				$bki_values{prorettype} = $rettypeoid
+				  if defined($rettypeoid);
+
+				# proargtypes
+				if ($bki_values{proargtypes})
+				{
+					my @argtypenames = split /\s+/, $bki_values{proargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proargtypes} = join(' ', @argtypeoids);
+				}
+
+				# proallargtypes
+				if ($bki_values{proallargtypes} ne '_null_')
+				{
+					$bki_values{proallargtypes} =~ s/[{}]//g;
+					my @argtypenames = split /,/, $bki_values{proallargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proallargtypes} =
+						'{' . join(',', @argtypeoids) . '}';
+				}
 			}
 
-			# Save pg_type info for pg_attribute processing below
+			# Save pg_type info for pg_attribute processing below.
+			# We need to build this lookup after the forming the full tuple.
 			if ($catname eq 'pg_type')
 			{
 				my %type = %bki_values;
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index c3ffa29..39e9b59 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -37,6 +37,16 @@
 /* Specifies an abbreviated label for a column name */
 #define BKI_ABBREV(abb)
 
+/* ----------------
+ *	Some columns of type Oid have human-readable entries that are
+ *	resolved when creating postgres.bki.
+ * ----------------
+ */
+#define regam Oid
+#define regoper Oid
+#define regopf Oid
+#define regtype Oid
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 5724e3f..3d9e9e7 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -56,13 +56,13 @@
 CATALOG(pg_amop,2602)
 {
 	/* the index opfamily this entry is for */
-	Oid			amopfamily BKI_ABBREV(opf);
+	regopf		amopfamily BKI_ABBREV(opf);
 
 	/* operator's left input data type */
-	Oid			amoplefttype BKI_ABBREV(lt);
+	regtype		amoplefttype BKI_ABBREV(lt);
 
 	/* operator's right input data type */
-	Oid			amoprighttype BKI_ABBREV(rt);
+	regtype		amoprighttype BKI_ABBREV(rt);
 
 	/* operator strategy number */
 	int16		amopstrategy BKI_ABBREV(str);
@@ -71,10 +71,10 @@ CATALOG(pg_amop,2602)
 	char		amoppurpose BKI_ABBREV(pur)  BKI_DEFAULT(s);
 
 	/* the operator's pg_operator OID */
-	Oid			amopopr BKI_ABBREV(oper);
+	regoper		amopopr BKI_ABBREV(oper);
 
 	/* the index access method this entry is for */
-	Oid			amopmethod BKI_ABBREV(am);
+	regam		amopmethod BKI_ABBREV(am);
 
 	/* ordering opfamily OID, or 0 if search op */
 	Oid			amopsortfamily BKI_DEFAULT(0);
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index afdfeb1..17ed0e2 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -45,13 +45,13 @@
 CATALOG(pg_amproc,2603)
 {
 	/* the index opfamily this entry is for */
-	Oid			amprocfamily BKI_ABBREV(opf);
+	regopf		amprocfamily BKI_ABBREV(opf);
 
 	/* procedure's left input data type */
-	Oid			amproclefttype BKI_ABBREV(lt);
+	regtype		amproclefttype BKI_ABBREV(lt);
 
 	/* procedure's right input data type */
-	Oid			amprocrighttype BKI_ABBREV(rt);
+	regtype		amprocrighttype BKI_ABBREV(rt);
 
 	/* support procedure index */
 	int16		amprocnum BKI_ABBREV(num);
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 93e7b56..fbe9949 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -32,8 +32,8 @@
 
 CATALOG(pg_cast,2605)
 {
-	Oid			castsource;		/* source datatype for cast */
-	Oid			casttarget;		/* destination datatype for cast */
+	regtype		castsource;		/* source datatype for cast */
+	regtype		casttarget;		/* destination datatype for cast */
 	Oid			castfunc;		/* cast function; 0 = binary coercible */
 	char		castcontext;	/* contexts in which cast can be used */
 	char		castmethod;		/* cast method */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index e0e4f62..472511c 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -50,7 +50,7 @@
 
 CATALOG(pg_opclass,2616)
 {
-	Oid			opcmethod;		/* index access method opclass is for */
+	regam		opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
 
 	/* namespace of this opclass */
@@ -59,14 +59,14 @@ CATALOG(pg_opclass,2616)
 	/* opclass owner */
 	Oid			opcowner BKI_DEFAULT(PGUID);
 
-	Oid			opcfamily;		/* containing operator family */
-	Oid			opcintype;		/* type of data indexed by opclass */
+	regopf		opcfamily;		/* containing operator family */
+	regtype		opcintype;		/* type of data indexed by opclass */
 
 	/* T if opclass is default for opcintype */
 	bool		opcdefault BKI_DEFAULT(t);
 
 	/* type of data in index, or InvalidOid */
-	Oid			opckeytype BKI_DEFAULT(0);
+	regtype		opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index fe6b660..8ca7621 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -50,13 +50,13 @@ CATALOG(pg_operator,2617)
 	bool		oprcanhash BKI_DEFAULT(f);
 
 	/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprleft;
+	regtype		oprleft BKI_DEFAULT(0);
 
 	/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprright;
+	regtype		oprright BKI_DEFAULT(0);
 
 	/* result datatype */
-	Oid			oprresult;
+	regtype		oprresult;
 
 	/* OID of commutator oper, or 0 if none */
 	Oid			oprcom BKI_DEFAULT(0);
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index b683770..2f410b4 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -30,7 +30,7 @@
 
 CATALOG(pg_opfamily,2753)
 {
-	Oid			opfmethod;		/* index access method opfamily is for */
+	regam		opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
 
 	/* namespace of this opfamily */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index fa57096..e0bf704 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -30,8 +30,8 @@
 
 CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 {
-	Oid			rngtypid;		/* OID of owning range type */
-	Oid			rngsubtype;		/* OID of range's element type (subtype) */
+	regtype		rngtypid;		/* OID of owning range type */
+	regtype		rngsubtype;		/* OID of range's element type (subtype) */
 	Oid			rngcollation;	/* collation for this range type, or 0 */
 	Oid			rngsubopc;		/* subtype's btree opclass */
 	regproc		rngcanonical;	/* canonicalize range, or 0 */
-- 
2.7.4

#5David Fetter
david@fetter.org
In reply to: John Naylor (#4)
Re: WIP: a way forward on bootstrap data

On Thu, Dec 14, 2017 at 05:59:12PM +0700, John Naylor wrote:

On 12/13/17, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:

On 12/13/17 04:06, John Naylor wrote:

There doesn't seem to be any interest in bootstrap data at the moment,
but rather than give up just yet, I've added a couple features to make
a data migration more compelling:

I took a brief look at your patches, and there appear to be a number of
good cleanups in there at least. But could you please send patches in
git format-patch format with commit messages, so we don't have to guess
what each patch does?

Thanks for taking a look and for pointing me to git format-patch.
That's much nicer than trying to keep emails straight. I've attached a
new patchset.

Thanks for your hard work on this. It'll really make developing this
part of the code a lot more pleasant.

Unfortunately, it no longer applies to master. Can we get a rebase?

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#6John Naylor
jcnaylor@gmail.com
In reply to: David Fetter (#5)
12 attachment(s)
Re: WIP: a way forward on bootstrap data

On 12/20/17, David Fetter <david@fetter.org> wrote:

Thanks for your hard work on this. It'll really make developing this
part of the code a lot more pleasant.

I hope so, thanks.

Unfortunately, it no longer applies to master. Can we get a rebase?

Hmm, it still applied for me, except when I forgot to gunzip the
larger patches. In any case, I've attached version 4 which contains
some recent improvements. It was rebased against master as of
6719b238e8f0ea. If it doesn't apply for you please let me know the
details.
--

New in this patch set:
-Remove code duplication and improve modularity in data parsing
-Update README at appropriate points
-Shift some hunks around to make patches more focused and readable
-Comment and commit message editing
-Patch 11 reduces indentation
-Patch 12 moves all the toast/index commands into the individual
catalog headers and simplifies some #includes (Note: I failed to shave
the yak of selinux, so the #include changes for contrib/sepgsql are
untested)

At this point, I think it's no longer a WIP, and will only make
further changes based on review or if I find a mistake.

Left for future projects:
-SQL generation for querying source bootstrap data
-Generating pg_type #defines

-John Naylor

Attachments:

v4-0001-Fix-typos-and-oversights-in-catalog-headers.patchtext/x-patch; charset=US-ASCII; name=v4-0001-Fix-typos-and-oversights-in-catalog-headers.patchDownload
From 68cb2d69c41e8553d61e6d43ee6e473f5b4f5a69 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 11:52:37 +0700
Subject: [PATCH v4 01/12] Fix typos and oversights in catalog headers

---
 src/backend/catalog/Catalog.pm             |  3 ++-
 src/backend/catalog/Makefile               |  2 +-
 src/backend/utils/Gen_fmgrtab.pl           |  6 ++++--
 src/include/catalog/pg_partitioned_table.h |  2 +-
 src/include/catalog/pg_sequence.h          | 10 ++++++++++
 src/include/catalog/pg_statistic.h         | 10 ++++------
 src/include/catalog/pg_subscription_rel.h  |  5 +----
 7 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 54f8353..0b260ec 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,7 +36,8 @@ sub Catalogs
 		'int64'         => 'int8',
 		'Oid'           => 'oid',
 		'NameData'      => 'name',
-		'TransactionId' => 'xid');
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
 
 	foreach my $input_file (@_)
 	{
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index fd33426..30ca509 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -45,7 +45,7 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
-	pg_subscription_rel.h toasting.h indexing.h \
+	pg_subscription_rel.h \
 	toasting.h indexing.h \
     )
 
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 26b428b..cd399c9 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -2,7 +2,8 @@
 #-------------------------------------------------------------------------
 #
 # Gen_fmgrtab.pl
-#    Perl script that generates fmgroids.h and fmgrtab.c from pg_proc.h
+#    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
+#    from pg_proc.h
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -281,7 +282,8 @@ sub usage
 	die <<EOM;
 Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
 
-Gen_fmgrtab.pl generates fmgroids.h and fmgrtab.c from pg_proc.h
+Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
+pg_proc.h
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 525e541..731147e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -10,7 +10,7 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.sh script reads this file and generates .bki
+ *	  the genbki.pl script reads this file and generates .bki
  *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index 8ae6b71..6de54bb 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -1,3 +1,13 @@
+/* -------------------------------------------------------------------------
+ *
+ * pg_sequence.h
+ *	  definition of the system "sequence" relation (pg_sequence)
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * -------------------------------------------------------------------------
+ */
 #ifndef PG_SEQUENCE_H
 #define PG_SEQUENCE_H
 
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 3713a56..43128f1 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -161,12 +161,10 @@ typedef FormData_pg_statistic *Form_pg_statistic;
 #define Anum_pg_statistic_stavalues5	26
 
 /*
- * Currently, five statistical slot "kinds" are defined by core PostgreSQL,
- * as documented below.  Additional "kinds" will probably appear in
- * future to help cope with non-scalar datatypes.  Also, custom data types
- * can define their own "kind" codes by mutual agreement between a custom
- * typanalyze routine and the selectivity estimation functions of the type's
- * operators.
+ * Several statistical slot "kinds" are defined by core PostgreSQL, as
+ * documented below.  Also, custom data types can define their own "kind"
+ * codes by mutual agreement between a custom typanalyze routine and the
+ * selectivity estimation functions of the type's operators.
  *
  * Code reading the pg_statistic relation should not assume that a particular
  * data "kind" will appear in any particular slot.  Instead, search the
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 991ca9d..5748297 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -23,15 +23,12 @@
  */
 #define SubscriptionRelRelationId			6102
 
-/* Workaround for genbki not knowing about XLogRecPtr */
-#define pg_lsn XLogRecPtr
-
 CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 {
 	Oid			srsubid;		/* Oid of subscription */
 	Oid			srrelid;		/* Oid of relation */
 	char		srsubstate;		/* state of the relation in subscription */
-	pg_lsn		srsublsn;		/* remote lsn of the state change used for
+	XLogRecPtr	srsublsn;		/* remote lsn of the state change used for
 								 * synchronization coordination */
 } FormData_pg_subscription_rel;
 
-- 
2.7.4

v4-0002-Cleanup-distprep-scripts.patchtext/x-patch; charset=US-ASCII; name=v4-0002-Cleanup-distprep-scripts.patchDownload
From 793a673fa7494b448775aac7122edec760143a38 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 11:52:37 +0700
Subject: [PATCH v4 02/12] Cleanup distprep scripts

Be more consistent style-wise, change a confusing variable name, fix
perltidy junk.
---
 src/backend/catalog/Catalog.pm   | 19 ++++++--------
 src/backend/catalog/genbki.pl    | 53 +++++++++++++++++++++-------------------
 src/backend/utils/Gen_fmgrtab.pl |  5 ++--
 3 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 0b260ec..80bd977 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -16,11 +16,6 @@ package Catalog;
 use strict;
 use warnings;
 
-require Exporter;
-our @ISA       = qw(Exporter);
-our @EXPORT    = ();
-our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
-
 # Call this function with an array of names of header files to parse.
 # Returns a nested data structure describing the data in the headers.
 sub Catalogs
@@ -163,7 +158,7 @@ sub Catalogs
 				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
 				$catalog{rowtype_oid} =
 				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 'True' : '';
+				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
 			elsif ($declaring_attributes)
@@ -176,7 +171,7 @@ sub Catalogs
 				}
 				else
 				{
-					my %row;
+					my %column;
 					my ($atttype, $attname, $attopt) = split /\s+/, $_;
 					die "parse error ($input_file)" unless $attname;
 					if (exists $RENAME_ATTTYPE{$atttype})
@@ -189,18 +184,18 @@ sub Catalogs
 						$atttype .= '[]';            # variable-length only
 					}
 
-					$row{'type'} = $atttype;
-					$row{'name'} = $attname;
+					$column{type} = $atttype;
+					$column{name} = $attname;
 
 					if (defined $attopt)
 					{
 						if ($attopt eq 'BKI_FORCE_NULL')
 						{
-							$row{'forcenull'} = 1;
+							$column{forcenull} = 1;
 						}
 						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 						{
-							$row{'forcenotnull'} = 1;
+							$column{forcenotnull} = 1;
 						}
 						else
 						{
@@ -208,7 +203,7 @@ sub Catalogs
 "unknown column option $attopt on column $attname";
 						}
 					}
-					push @{ $catalog{columns} }, \%row;
+					push @{ $catalog{columns} }, \%column;
 				}
 			}
 		}
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index e4a0b8b..2e00195 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 my @input_files;
-our @include_path;
+my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -105,7 +105,7 @@ print $bki "# PostgreSQL $major_version\n";
 my %schemapg_entries;
 my @tables_needing_macros;
 my %regprocoids;
-our @types;
+my @types;
 
 # produce output, one catalog at a time
 foreach my $catname (@{ $catalogs->{names} })
@@ -124,7 +124,8 @@ foreach my $catname (@{ $catalogs->{names} })
 	my $first = 1;
 
 	print $bki " (\n";
-	foreach my $column (@{ $catalog->{columns} })
+	my $schema = $catalog->{columns};
+	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
@@ -150,8 +151,9 @@ foreach my $catname (@{ $catalogs->{names} })
 	}
 	print $bki "\n )\n";
 
-   # open it, unless bootstrap case (create bootstrap does this automatically)
-	if ($catalog->{bootstrap} eq '')
+	# Open it, unless bootstrap case (create bootstrap does this
+	# automatically)
+	if (!$catalog->{bootstrap})
 	{
 		print $bki "open $catname\n";
 	}
@@ -169,21 +171,23 @@ foreach my $catname (@{ $catalogs->{names} })
 			  Catalog::SplitDataLine($row->{bki_values});
 
 			# Perform required substitutions on fields
-			foreach my $att (keys %bki_values)
+			foreach my $column (@$schema)
 			{
+				my $attname = $column->{name};
+				my $atttype = $column->{type};
 
 				# Substitute constant values we acquired above.
 				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$att} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$att} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
 				# Replace regproc columns' values with OIDs.
 				# If we don't have a unique value to substitute,
 				# just do nothing (regprocin will complain).
-				if ($bki_attr{$att}->{type} eq 'regproc')
+				if ($atttype eq 'regproc')
 				{
-					my $procoid = $regprocoids{ $bki_values{$att} };
-					$bki_values{$att} = $procoid
+					my $procoid = $regprocoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $procoid
 					  if defined($procoid) && $procoid ne 'MULTIPLE';
 				}
 			}
@@ -215,16 +219,17 @@ foreach my $catname (@{ $catalogs->{names} })
 			printf $bki "insert %s( %s )\n", $oid,
 			  join(' ', @bki_values{@attnames});
 
-		   # Write comments to postgres.description and postgres.shdescription
+			# Write comments to postgres.description and
+			# postgres.shdescription
 			if (defined $row->{descr})
 			{
-				printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
-				  $row->{descr};
+				printf $descr "%s\t%s\t0\t%s\n",
+				  $row->{oid}, $catname, $row->{descr};
 			}
 			if (defined $row->{shdescr})
 			{
-				printf $shdescr "%s\t%s\t%s\n", $row->{oid}, $catname,
-				  $row->{shdescr};
+				printf $shdescr "%s\t%s\t%s\n",
+				  $row->{oid}, $catname, $row->{shdescr};
 			}
 		}
 	}
@@ -240,11 +245,10 @@ foreach my $catname (@{ $catalogs->{names} })
 
 			# Currently, all bootstrapped relations also need schemapg.h
 			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if $table->{schema_macro} ne 'True';
+			next if !$table->{schema_macro};
 
 			$schemapg_entries{$table_name} = [];
 			push @tables_needing_macros, $table_name;
-			my $is_bootstrap = $table->{bootstrap};
 
 			# Generate entries for user attributes.
 			my $attnum       = 0;
@@ -259,7 +263,7 @@ foreach my $catname (@{ $catalogs->{names} })
 				$priornotnull &= ($row->{attnotnull} eq 't');
 
 				# If it's bootstrapped, put an entry in postgres.bki.
-				if ($is_bootstrap eq ' bootstrap')
+				if ($table->{bootstrap})
 				{
 					bki_insert($row, @attnames);
 				}
@@ -268,15 +272,14 @@ foreach my $catname (@{ $catalogs->{names} })
 				$row =
 				  emit_schemapg_row($row,
 					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
-				push @{ $schemapg_entries{$table_name} }, '{ '
-				  . join(
-					', ',             grep { defined $_ }
-					  map $row->{$_}, @attnames) . ' }';
+				push @{ $schemapg_entries{$table_name} },
+				  sprintf "{ %s }",
+				    join(', ', grep { defined $_ } @{$row}{@attnames});
 			}
 
 			# Generate entries for system attributes.
 			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($is_bootstrap eq ' bootstrap')
+			if ($table->{bootstrap})
 			{
 				$attnum = 0;
 				my @SYS_ATTRS = (
@@ -296,7 +299,7 @@ foreach my $catname (@{ $catalogs->{names} })
 
 					# some catalogs don't have oids
 					next
-					  if $table->{without_oids} eq ' without_oids'
+					  if $table->{without_oids}
 						  && $row->{attname} eq 'oid';
 
 					bki_insert($row, @attnames);
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index cd399c9..14c02f5 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -57,6 +57,8 @@ die "No include path; you must specify -I at least once.\n" if !@include_path;
 
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
+my $INTERNALlanguageId =
+	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
 # Read all the data from the include/catalog files.
 my $catalogs = Catalog::Catalogs($infile);
@@ -78,8 +80,7 @@ foreach my $row (@$data)
 	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
 
 	# Select out just the rows for internal-language procedures.
-	# Note assumption here that INTERNALlanguageId is 12.
-	next if $bki_values{prolang} ne '12';
+	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
 	  { oid    => $row->{oid},
-- 
2.7.4

v4-0003-Remove-hard-coded-schema-knowledge-about-pg_attri.patchtext/x-patch; charset=US-ASCII; name=v4-0003-Remove-hard-coded-schema-knowledge-about-pg_attri.patchDownload
From bf490f61d39549920f1af1a8eca9f813931b438a Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Tue, 19 Dec 2017 21:20:16 +0700
Subject: [PATCH v4 03/12] Remove hard-coded schema knowledge about
 pg_attribute from genbki.pl

Add the ability to label a column's default value in the catalog header,
and implement this for pg_attribute. Add a new function to Catalog.pm to
fill in a tuple with default values. It will complain loudly if it can't
find either a default or a given value, so change the signature of
emit_pgattr_row() so we can pass a partially built tuple to it.

Commit 8137f2c3232 labeled variable length columns for the C preprocessor.
Expose that label to genbki.pl so we can exclude those columns from schema
macros in a general fashion. Also, format schema macro entries according
to their types.

This means slightly less code maintenance, but more importantly it's a
proving ground for mechanisms used in later commits.
---
 src/backend/catalog/Catalog.pm     |  75 ++++++++++++++++--
 src/backend/catalog/genbki.pl      | 154 +++++++++++++++++++------------------
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_attribute.h |  22 +++---
 4 files changed, 164 insertions(+), 90 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 80bd977..a7a3fa0 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -39,6 +39,7 @@ sub Catalogs
 		my %catalog;
 		$catalog{columns} = [];
 		$catalog{data}    = [];
+		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -164,7 +165,14 @@ sub Catalogs
 			elsif ($declaring_attributes)
 			{
 				next if (/^{|^$/);
-				next if (/^#/);
+				if (/^#/)
+				{
+					if (/^#ifdef\s+CATALOG_VARLEN/)
+					{
+						$is_varlen = 1;
+					}
+					next;
+				}
 				if (/^}/)
 				{
 					undef $declaring_attributes;
@@ -172,8 +180,16 @@ sub Catalogs
 				else
 				{
 					my %column;
-					my ($atttype, $attname, $attopt) = split /\s+/, $_;
-					die "parse error ($input_file)" unless $attname;
+					if ($is_varlen)
+					{
+						$column{is_varlen} = 1;
+					}
+					my @attopts = split /\s+/, $_;
+					my $atttype = shift @attopts;
+					my $attname = shift @attopts;
+					die "parse error ($input_file)"
+					  unless ($attname and $atttype);
+
 					if (exists $RENAME_ATTTYPE{$atttype})
 					{
 						$atttype = $RENAME_ATTTYPE{$atttype};
@@ -181,13 +197,13 @@ sub Catalogs
 					if ($attname =~ /(.*)\[.*\]/)    # array attribute
 					{
 						$attname = $1;
-						$atttype .= '[]';            # variable-length only
+						$atttype .= '[]';
 					}
 
 					$column{type} = $atttype;
 					$column{name} = $attname;
 
-					if (defined $attopt)
+					foreach my $attopt (@attopts)
 					{
 						if ($attopt eq 'BKI_FORCE_NULL')
 						{
@@ -197,11 +213,20 @@ sub Catalogs
 						{
 							$column{forcenotnull} = 1;
 						}
+						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+						{
+							$column{default} = $1;
+						}
 						else
 						{
 							die
 "unknown column option $attopt on column $attname";
 						}
+
+						if ($column{forcenull} and $column{forcenotnull})
+						{
+							die "$attname is forced both null and not null";
+						}
 					}
 					push @{ $catalog{columns} }, \%column;
 				}
@@ -235,6 +260,46 @@ sub SplitDataLine
 	return @result;
 }
 
+# Fill in default values of a record using the given schema. It's the
+# caller's responsibility to specify other values beforehand.
+sub AddDefaultValues
+{
+	my ($row, $schema) = @_;
+	my @missing_fields;
+	my $msg;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if (defined $row->{$attname})
+		{
+			;
+		}
+		elsif (defined $column->{default})
+		{
+			$row->{$attname} = $column->{default};
+		}
+		else
+		{
+			# Failed to find a value.
+			push @missing_fields, $attname;
+		}
+	}
+
+	if (@missing_fields)
+	{
+		$msg = "Missing values for: " . join(', ', @missing_fields);
+		$msg .= "\nShowing other values for context:\n";
+		while(my($key, $value) = each %$row)
+		{
+			$msg .= "$key => $value, ";
+		}
+	}
+	return $msg;
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 2e00195..cf6de28 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -119,7 +119,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my %bki_attr;
 	my @attnames;
 	my $first = 1;
 
@@ -129,7 +128,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		$bki_attr{$attname} = $column;
 		push @attnames, $attname;
 
 		if (!$first)
@@ -257,24 +255,24 @@ foreach my $catname (@{ $catalogs->{names} })
 			foreach my $attr (@user_attrs)
 			{
 				$attnum++;
-				my $row = emit_pgattr_row($table_name, $attr, $priornotnull);
-				$row->{attnum}        = $attnum;
-				$row->{attstattarget} = '-1';
-				$priornotnull &= ($row->{attnotnull} eq 't');
+				my %row;
+				$row{attnum}   = $attnum;
+				$row{attrelid} = $table->{relation_oid};
+
+				emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
+				$priornotnull &= ($row{attnotnull} eq 't');
 
 				# If it's bootstrapped, put an entry in postgres.bki.
 				if ($table->{bootstrap})
 				{
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 
 				# Store schemapg entries for later.
-				$row =
-				  emit_schemapg_row($row,
-					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
+				emit_schemapg_row(\%row, $schema);
 				push @{ $schemapg_entries{$table_name} },
 				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @{$row}{@attnames});
+				    join(', ', grep { defined $_ } @row{@attnames});
 			}
 
 			# Generate entries for system attributes.
@@ -293,16 +291,19 @@ foreach my $catname (@{ $catalogs->{names} })
 				foreach my $attr (@SYS_ATTRS)
 				{
 					$attnum--;
-					my $row = emit_pgattr_row($table_name, $attr, 1);
-					$row->{attnum}        = $attnum;
-					$row->{attstattarget} = '0';
+					my %row;
+					$row{attnum}        = $attnum;
+					$row{attrelid}      = $table->{relation_oid};
+					$row{attstattarget} = '0';
+
+					emit_pgattr_row(\%row, $attr, 1, $schema);
 
 					# some catalogs don't have oids
 					next
 					  if $table->{without_oids}
-						  && $row->{attname} eq 'oid';
+						  && $row{attname} eq 'oid';
 
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 			}
 		}
@@ -379,19 +380,17 @@ exit 0;
 #################### Subroutines ########################
 
 
-# Given a system catalog name and a reference to a key-value pair corresponding
-# to the name and type of a column, generate a reference to a hash that
-# represents a pg_attribute entry.  We must also be told whether preceding
+# Given the schema of pg_attribute, generate an entry for it using information
+# about the attribute it describes.  Any value that is not handled here
+# must be supplied by the caller. We must also be told whether preceding
 # columns were all not-null.
 sub emit_pgattr_row
 {
-	my ($table_name, $attr, $priornotnull) = @_;
+	my ($row, $attr, $priornotnull, $pgattr_schema) = @_;
 	my $attname = $attr->{name};
 	my $atttype = $attr->{type};
-	my %row;
 
-	$row{attrelid} = $catalogs->{$table_name}->{relation_oid};
-	$row{attname}  = $attname;
+	$row->{attname} = $attname;
 
 	# Adjust type name for arrays: foo[] becomes _foo
 	# so we can look it up in pg_type
@@ -405,23 +404,23 @@ sub emit_pgattr_row
 	{
 		if (defined $type->{typname} && $type->{typname} eq $atttype)
 		{
-			$row{atttypid}   = $type->{oid};
-			$row{attlen}     = $type->{typlen};
-			$row{attbyval}   = $type->{typbyval};
-			$row{attstorage} = $type->{typstorage};
-			$row{attalign}   = $type->{typalign};
+			$row->{atttypid}   = $type->{oid};
+			$row->{attlen}     = $type->{typlen};
+			$row->{attbyval}   = $type->{typbyval};
+			$row->{attstorage} = $type->{typstorage};
+			$row->{attalign}   = $type->{typalign};
 
 			# set attndims if it's an array type
-			$row{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
-			$row{attcollation} = $type->{typcollation};
+			$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
+			$row->{attcollation} = $type->{typcollation};
 
 			if (defined $attr->{forcenotnull})
 			{
-				$row{attnotnull} = 't';
+				$row->{attnotnull} = 't';
 			}
 			elsif (defined $attr->{forcenull})
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			elsif ($priornotnull)
 			{
@@ -430,7 +429,7 @@ sub emit_pgattr_row
 				# fixed-width and prior columns are all NOT NULL ---
 				# compare DefineAttr in bootstrap.c. oidvector and
 				# int2vector are also treated as not-nullable.
-				$row{attnotnull} =
+				$row->{attnotnull} =
 				    $type->{typname} eq 'oidvector'   ? 't'
 				  : $type->{typname} eq 'int2vector'  ? 't'
 				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
@@ -439,25 +438,18 @@ sub emit_pgattr_row
 			}
 			else
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			last;
 		}
 	}
 
-	# Add in default values for pg_attribute
-	my %PGATTR_DEFAULTS = (
-		attcacheoff   => '-1',
-		atttypmod     => '-1',
-		atthasdef     => 'f',
-		attidentity   => '',
-		attisdropped  => 'f',
-		attislocal    => 't',
-		attinhcount   => '0',
-		attacl        => '_null_',
-		attoptions    => '_null_',
-		attfdwoptions => '_null_');
-	return { %PGATTR_DEFAULTS, %row };
+	my $error = Catalog::AddDefaultValues($row, $pgattr_schema);
+	if ($error)
+	{
+		print "Failed to form full tuple for pg_attribute\n";
+		die $error;
+	}
 }
 
 # Write a pg_attribute entry to postgres.bki
@@ -466,8 +458,7 @@ sub bki_insert
 	my $row        = shift;
 	my @attnames   = @_;
 	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', map { $_ eq '' ? '""' : $_ } map $row->{$_},
-	  @attnames;
+	my $bki_values = join ' ', @{$row}{@attnames};
 	printf $bki "insert %s( %s )\n", $oid, $bki_values;
 }
 
@@ -475,34 +466,49 @@ sub bki_insert
 # quite identical, to the corresponding values in postgres.bki.
 sub emit_schemapg_row
 {
-	my $row        = shift;
-	my @bool_attrs = @_;
+	my $row           = shift;
+	my $pgattr_schema = shift;
 
-	# Replace empty string by zero char constant
-	$row->{attidentity} ||= '\0';
-
-	# Supply appropriate quoting for these fields.
-	$row->{attname}     = q|{"| . $row->{attname} . q|"}|;
-	$row->{attstorage}  = q|'| . $row->{attstorage} . q|'|;
-	$row->{attalign}    = q|'| . $row->{attalign} . q|'|;
-	$row->{attidentity} = q|'| . $row->{attidentity} . q|'|;
-
-	# We don't emit initializers for the variable length fields at all.
-	# Only the fixed-size portions of the descriptors are ever used.
-	delete $row->{attacl};
-	delete $row->{attoptions};
-	delete $row->{attfdwoptions};
-
-	# Expand booleans from 'f'/'t' to 'false'/'true'.
-	# Some values might be other macros (eg FLOAT4PASSBYVAL), don't change.
-	foreach my $attr (@bool_attrs)
+	foreach my $column (@$pgattr_schema)
 	{
-		$row->{$attr} =
-		    $row->{$attr} eq 't' ? 'true'
-		  : $row->{$attr} eq 'f' ? 'false'
-		  :                        $row->{$attr};
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		# Supply appropriate quoting for these fields.
+		if ($atttype eq 'name')
+		{
+			$row->{$attname} = q|{"| . $row->{$attname} . q|"}|;
+		}
+		elsif ($atttype eq 'char')
+		{
+
+			# Replace empty string by zero char constant
+			if ($row->{$attname} eq q|""|)
+			{
+				$row->{$attname} = '\0';
+			}
+
+			$row->{$attname} = q|'| . $row->{$attname} . q|'|;
+		}
+
+		# Expand booleans from 'f'/'t' to 'false'/'true'.
+		# Some values might be other macros (eg FLOAT4PASSBYVAL),
+		# don't change.
+		elsif ($atttype eq 'bool')
+		{
+			$row->{$attname} =
+			    $row->{$attname} eq 't' ? 'true'
+			  : $row->{$attname} eq 'f' ? 'false'
+			  :                           $row->{$attname};
+		}
+
+		# We don't emit initializers for the variable length fields at all.
+		# Only the fixed-size portions of the descriptors are ever used.
+		if ($column->{is_varlen})
+		{
+			delete $row->{$attname};
+		}
 	}
-	return $row;
 }
 
 sub usage
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index a2cb313..71fc579 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -31,6 +31,9 @@
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
 
+/* Specifies a default value for a catalog field */
+#define BKI_DEFAULT(value)
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index bcf28e8..5436a90 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -54,7 +54,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * that no value has been explicitly set for this column, so ANALYZE
 	 * should use the default setting.
 	 */
-	int32		attstattarget;
+	int32		attstattarget BKI_DEFAULT(-1);
 
 	/*
 	 * attlen is a copy of the typlen field from pg_type for this attribute.
@@ -90,7 +90,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * descriptor, we may then update attcacheoff in the copies. This speeds
 	 * up the attribute walking process.
 	 */
-	int32		attcacheoff;
+	int32		attcacheoff BKI_DEFAULT(-1);
 
 	/*
 	 * atttypmod records type-specific data supplied at table creation time
@@ -98,7 +98,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * type-specific input and output functions as the third argument. The
 	 * value will generally be -1 for types that do not need typmod.
 	 */
-	int32		atttypmod;
+	int32		atttypmod BKI_DEFAULT(-1);
 
 	/*
 	 * attbyval is a copy of the typbyval field from pg_type for this
@@ -131,13 +131,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	bool		attnotnull;
 
 	/* Has DEFAULT value or not */
-	bool		atthasdef;
+	bool		atthasdef BKI_DEFAULT(f);
 
 	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
-	char		attidentity;
+	char		attidentity BKI_DEFAULT("");
 
 	/* Is dropped (ie, logically invisible) or not */
-	bool		attisdropped;
+	bool		attisdropped BKI_DEFAULT(f);
 
 	/*
 	 * This flag specifies whether this column has ever had a local
@@ -148,10 +148,10 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * not dropped by a parent's DROP COLUMN even if this causes the column's
 	 * attinhcount to become zero.
 	 */
-	bool		attislocal;
+	bool		attislocal BKI_DEFAULT(t);
 
 	/* Number of times inherited from direct parent relation(s) */
-	int32		attinhcount;
+	int32		attinhcount BKI_DEFAULT(0);
 
 	/* attribute's collation */
 	Oid			attcollation;
@@ -160,13 +160,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	/* NOTE: The following fields are not present in tuple descriptors. */
 
 	/* Column-level access permissions */
-	aclitem		attacl[1];
+	aclitem		attacl[1] BKI_DEFAULT(_null_);
 
 	/* Column-level options */
-	text		attoptions[1];
+	text		attoptions[1] BKI_DEFAULT(_null_);
 
 	/* Column-level FDW options */
-	text		attfdwoptions[1];
+	text		attfdwoptions[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_attribute;
 
-- 
2.7.4

v4-0004-Data-conversion-infrastructure.patchtext/x-patch; charset=US-ASCII; name=v4-0004-Data-conversion-infrastructure.patchDownload
From aca39f35911ce18a94e8df1a64451d09e7a45479 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 18 Dec 2017 12:38:23 +0700
Subject: [PATCH v4 04/12] Data conversion infrastructure

convert_header2dat.pl turns DATA()/(SH)DESCR() statements into
serialized Perl data structures in pg_*.dat files, preserving comments
along the way. This is a one-off script, but it is committed to the
repo in case third parties want to convert their own catalog data.

Remove data parsing from the original Catalogs() function and rename it
to ParseHeader() to reflect its new, limited role of extracting the
schema info from a single header. The new data files are handled one at
a time by the function ParseData().

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, strips out values that match
defaults or are otherwise computable, preserves comments and folds
consecutive blank lines. The meta-attributes oid and (sh)descr are on
their own line, if present.

Add the ability to label columns in the source data by an abbreviation
rather than the full name, in order to shorten the entries. Add default
values and abbreviations to a few catalog headers. More could be done
here, but this is enough for a first pass.

Compute pg_proc.pronargs and (if possible) pg_proc.prosrc, rather than
storing directly.
---
 src/backend/catalog/Catalog.pm            | 270 +++++++++++++---------
 src/include/catalog/convert_header2dat.pl | 370 ++++++++++++++++++++++++++++++
 src/include/catalog/genbki.h              |   3 +
 src/include/catalog/pg_aggregate.h        |  38 +--
 src/include/catalog/pg_amop.h             |  31 ++-
 src/include/catalog/pg_amproc.h           |  19 +-
 src/include/catalog/pg_authid.h           |  43 +++-
 src/include/catalog/pg_class.h            | 138 ++++++++---
 src/include/catalog/pg_opclass.h          |  17 +-
 src/include/catalog/pg_operator.h         |  56 +++--
 src/include/catalog/pg_opfamily.h         |   8 +-
 src/include/catalog/pg_proc.h             | 116 +++++++---
 src/include/catalog/pg_type.h             |  47 ++--
 src/include/catalog/rewrite_dat.pl        | 265 +++++++++++++++++++++
 14 files changed, 1156 insertions(+), 265 deletions(-)
 create mode 100644 src/include/catalog/convert_header2dat.pl
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index a7a3fa0..c1ea8c6 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,18 +33,15 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
+		my $declaring_attributes;
 		my %catalog;
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -63,9 +59,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -73,68 +66,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -142,16 +84,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -217,6 +156,10 @@ sub Catalogs
 						{
 							$column{default} = $1;
 						}
+						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
+						{
+							$column{abbrev} = $1;
+						}
 						else
 						{
 							die
@@ -232,32 +175,127 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
+	return \%catalog;
+}
+
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
+{
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	$input_file =~ /(\w+)\.dat$/;
+	my $catname = $1;
+	my $data = [];
+	my $prev_blank = 0;
+
+	# Scan the input file.
+	while (<$ifh>)
+	{
+		my $datum;
+
+		if (/^$/)
+		{
+			# Preserve non-consecutive blank lines.
+			# Newline gets added by caller.
+			next if $prev_blank;
+			$datum = '';
+			$prev_blank = 1;
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		if (/{/)
+		{
+			# Capture the hash ref
+			# NB: Assumes that the next hash ref can't start on the
+			# same line where the present one ended.
+			# Not foolproof, but we shouldn't need a full lexer,
+			# since we expect relatively well-behaved input.
+
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+
+				# Expand tuples.
+				# We must do the following operations in the order given.
+				resolve_column_abbrevs($datum, $schema);
+				if ($catname eq 'pg_proc')
+				{
+					compute_pg_proc_fields($datum);
+				}
+				my $error = AddDefaultValues($datum, $schema);
+				if ($error)
+				{
+					print "Failed to form full tuple for $catname\n";
+					die $error;
+				}
+			}
+			else
+			{
+				my $next_line = <$ifh>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+		# Capture comments that are on their own line.
+		elsif (/^\s*#\s*(.+)\s*/)
+		{
+			$datum = "# $1";
+		}
+		# Assume bracket is the only token in the line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		next if !defined $datum;
+
+		# Hash references are data, so always push.
+		# Other datums are non-data strings, so only push if we
+		# want formatting.
+		if ($preserve_formatting or ref $datum eq 'HASH')
+		{
+			push @$data, $datum;
+		}
 	}
-	return \%catalogs;
+	return $data;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Copy values from abbreviated keys to full keys.
+sub resolve_column_abbrevs
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and defined $row->{$abbrev})
+		{
+			$row->{$attname} = $row->{$abbrev};
+		}
+	}
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -300,6 +338,29 @@ sub AddDefaultValues
 	return $msg;
 }
 
+# Some pg_proc fields are computed as part of forming a full tuple.
+sub compute_pg_proc_fields
+{
+	my $row = shift;
+
+	# pronargs is computed by counting proargtypes.
+	if ($row->{proargtypes})
+	{
+		my @argtypes = split /\s+/, $row->{proargtypes};
+		$row->{pronargs} = scalar(@argtypes);
+	}
+	else
+	{
+		$row->{pronargs} = '0';
+	}
+
+	# If prosrc doesn't exist, it must be a copy of proname.
+	if (!exists $row->{prosrc})
+	{
+		$row->{prosrc} = $row->{proname}
+	}
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
@@ -313,7 +374,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -345,22 +405,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index 0000000..d61cdc8
--- /dev/null
+++ b/src/include/catalog/convert_header2dat.pl
@@ -0,0 +1,370 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# convert_header2dat.pl
+#    Perl script that reads BKI data from the catalog header files
+#    and writes them out as native perl data structures. Commments and
+#    white space are preserved. Some functions are loosely copied from
+#    src/backend/catalog/Catalog.pm, whose equivalents will be removed.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/convert_header2dat.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+# No $VARs - we add our own later.
+$Data::Dumper::Terse = 1;
+
+my @input_files;
+my $output_path = '';
+my $major_version;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.h$/)
+	{
+		die "Input files need to be header files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Read all the input header files into internal data structures
+# XXX This script is not robust against non-catalog headers. It's best
+# to pass it the same list found in backend/catalog/Makefile.
+my $catalogs = catalogs(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	# First, see if the header has any data. This is necessary
+	# not only because of catalogs with no data, but also because some
+	# values coming down the pike are comments or newlines.
+	my $found_one = 0;
+	foreach my $data (@{ $catalog->{data} })
+	{
+		if (ref $data eq 'HASH')
+		{
+			$found_one = 1;
+		}
+	}
+	next if !$found_one;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+		push @attnames, $attname;
+	}
+
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write out data file.
+	print $dat "# $catname.dat\n";
+
+	# Note: Put extra newlines after brackets because otherwise
+	# some catalogs have newlines and some don't, because of whitespace
+	# around DATA() comments.
+	print $dat "[\n\n";
+
+	foreach my $data (@{ $catalog->{data} })
+	{
+
+		# Either a newline or comment - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			# Split line into tokens without interpreting their meaning.
+			my %bki_values;
+			@bki_values{@attnames} = split_data_line($data->{bki_values});
+
+			# Flatten data hierarchy.
+			delete $data->{bki_values};
+			my %flat_data = (%$data, %bki_values);
+
+			# Strip double quotes for readability. Most will be put
+			# back in when writing postgres.bki
+			foreach (values %flat_data)
+			{
+				s/"//g;
+			}
+
+			print $dat Dumper(\%flat_data);
+			print $dat ",\n";
+		}
+	}
+	print $dat "\n]\n";
+}
+
+
+# This function is a heavily modified version of its former namesake
+# in Catalog.pm. There's probably some dead code here. It's not worth removing.
+sub catalogs
+{
+	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	$catalogs{names} = [];
+
+	# There are a few types which are given one name in the C source, but a
+	# different name at the SQL level.  These are enumerated here.
+	my %RENAME_ATTTYPE = (
+		'int16'         => 'int2',
+		'int32'         => 'int4',
+		'int64'         => 'int8',
+		'Oid'           => 'oid',
+		'NameData'      => 'name',
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
+
+	foreach my $input_file (@_)
+	{
+		my %catalog;
+		$catalog{columns} = [];
+		$catalog{data}    = [];
+		my $is_varlen     = 0;
+		my $saving_comments = 0;
+
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			# Determine that we're in the DATA section and should
+			# Start saving DATA comments.
+			if (/(\/|\s)\*\s+initial contents of pg_/)
+			{
+				$saving_comments = 1;
+			}
+
+			if ($saving_comments)
+			{
+				if ( m;^(/|\s+)\*\s+(.+); )
+				{
+					my $comment = $2;
+
+					# Ugly way to strip */ off the end
+					if ($comment =~ m;\*/$;)
+					{
+						$comment =~ s/.{2}$//;
+					}
+
+					# Turn C-style comment into Perl-style.
+
+					# Filter out comments we know we don't want.
+					if ($comment !~ /^-+$/
+						and $comment !~ /initial contents of pg/
+						and $comment !~ /PG_\w+_H/)
+					{
+						# Trim whitespace.
+						$comment =~ s/^\s+//;
+						$comment =~ s/\s+$//;
+						push @{ $catalog{data} }, "# $comment";
+					}
+				}
+				elsif (/^$/)
+				{
+					# Preserve blank lines
+					# Newline gets added by caller.
+					push @{ $catalog{data} }, '';
+				}
+			}
+			else
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+			}
+			# Remember input line number for later.
+			my $input_line_number = $.;
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+
+			# Push the data into the appropriate data structure.
+			if (
+				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			{
+				if ($2)
+				{
+					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+				}
+				else
+				{
+					push @{ $catalog{data} }, { bki_values => $3 };
+				}
+			}
+			elsif (/^DESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# this tests if most recent line is not a DATA() statement
+				if (ref $most_recent ne 'HASH')
+				{
+					die "DESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "DESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{descr} = $1;
+				}
+			}
+			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# this tests if most recent line is not a DATA() statement
+				if (ref $most_recent ne 'HASH')
+				{
+					die
+					  "SHDESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "SHDESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{shdescr} = $1;
+				}
+			}
+			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			{
+				$catname = $1;
+				$catalog{relation_oid} = $2;
+
+				# Store pg_* catalog names in the same order we receive them
+				push @{ $catalogs{names} }, $catname;
+
+				$declaring_attributes = 1;
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
+				next if (/^#/);
+				if (/^}/)
+				{
+					undef $declaring_attributes;
+				}
+				else
+				{
+					my %column;
+					if ($is_varlen)
+					{
+						$column{is_varlen} = 1;
+					}
+					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+					die "parse error ($input_file)" unless $attname;
+					if (exists $RENAME_ATTTYPE{$atttype})
+					{
+						$atttype = $RENAME_ATTTYPE{$atttype};
+					}
+					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					{
+						$attname = $1;
+						$atttype .= '[]';
+					}
+
+					$column{type} = $atttype;
+					$column{name} = $attname;
+
+					push @{ $catalog{columns} }, \%column;
+				}
+			}
+		}
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
+		close $ifh;
+	}
+	return \%catalogs;
+}
+
+# Split a DATA line into fields.
+# Call this on the bki_values element of a DATA item returned by catalogs();
+# it returns a list of field values.  We don't strip quoting from the fields.
+# Note: it should be safe to assign the result to a list of length equal to
+# the nominal number of catalog fields, because the number of fields were
+# checked in the original Catalog module.
+sub split_data_line
+{
+	my $bki_values = shift;
+
+	# This handling of quoted strings might look too simplistic, but it
+	# matches what bootscanner.l does: that has no provision for quote marks
+	# inside quoted strings, either.  If we don't have a quoted string, just
+	# snarf everything till next whitespace.  That will accept some things
+	# that bootscanner.l will see as erroneous tokens; but it seems wiser
+	# to do that and let bootscanner.l complain than to silently drop
+	# non-whitespace characters.
+	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+
+	return @result;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: convert_macro2dat.pl [options] header...
+
+Options:
+    -o               output path
+
+convert_macro2dat.pl generates data files from the same header files
+currently parsed by Catalag.pm.
+
+EOM
+}
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 71fc579..c3ffa29 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,6 +34,9 @@
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* Specifies an abbreviated label for a column name */
+#define BKI_ABBREV(abb)
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 13f1bce..f7be2c0 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -55,29 +55,29 @@
 CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 {
 	regproc		aggfnoid;
-	char		aggkind;
-	int16		aggnumdirectargs;
+	char		aggkind BKI_DEFAULT(n);
+	int16		aggnumdirectargs BKI_DEFAULT(0);
 	regproc		aggtransfn;
-	regproc		aggfinalfn;
-	regproc		aggcombinefn;
-	regproc		aggserialfn;
-	regproc		aggdeserialfn;
-	regproc		aggmtransfn;
-	regproc		aggminvtransfn;
-	regproc		aggmfinalfn;
-	bool		aggfinalextra;
-	bool		aggmfinalextra;
-	char		aggfinalmodify;
-	char		aggmfinalmodify;
-	Oid			aggsortop;
+	regproc		aggfinalfn BKI_DEFAULT(-);
+	regproc		aggcombinefn BKI_DEFAULT(-);
+	regproc		aggserialfn BKI_DEFAULT(-);
+	regproc		aggdeserialfn BKI_DEFAULT(-);
+	regproc		aggmtransfn BKI_DEFAULT(-);
+	regproc		aggminvtransfn BKI_DEFAULT(-);
+	regproc		aggmfinalfn BKI_DEFAULT(-);
+	bool		aggfinalextra BKI_DEFAULT(f);
+	bool		aggmfinalextra BKI_DEFAULT(f);
+	char		aggfinalmodify BKI_DEFAULT(r);
+	char		aggmfinalmodify BKI_DEFAULT(r);
+	Oid			aggsortop BKI_DEFAULT(0);
 	Oid			aggtranstype;
-	int32		aggtransspace;
-	Oid			aggmtranstype;
-	int32		aggmtransspace;
+	int32		aggtransspace BKI_DEFAULT(0);
+	Oid			aggmtranstype BKI_DEFAULT(0);
+	int32		aggmtransspace BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		agginitval;
-	text		aggminitval;
+	text		agginitval BKI_DEFAULT(_null_);
+	text		aggminitval BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_aggregate;
 
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index f850be4..89c97d8 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -55,14 +55,29 @@
 
 CATALOG(pg_amop,2602)
 {
-	Oid			amopfamily;		/* the index opfamily this entry is for */
-	Oid			amoplefttype;	/* operator's left input data type */
-	Oid			amoprighttype;	/* operator's right input data type */
-	int16		amopstrategy;	/* operator strategy number */
-	char		amoppurpose;	/* is operator for 's'earch or 'o'rdering? */
-	Oid			amopopr;		/* the operator's pg_operator OID */
-	Oid			amopmethod;		/* the index access method this entry is for */
-	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
+	/* the index opfamily this entry is for */
+	Oid			amopfamily BKI_ABBREV(opf);
+
+	/* operator's left input data type */
+	Oid			amoplefttype BKI_ABBREV(lt);
+
+	/* operator's right input data type */
+	Oid			amoprighttype BKI_ABBREV(rt);
+
+	/* operator strategy number */
+	int16		amopstrategy BKI_ABBREV(str);
+
+	/* is operator for 's'earch or 'o'rdering? */
+	char		amoppurpose BKI_ABBREV(pur) BKI_DEFAULT(s);
+
+	/* the operator's pg_operator OID */
+	Oid			amopopr BKI_ABBREV(oper);
+
+	/* the index access method this entry is for */
+	Oid			amopmethod BKI_ABBREV(am);
+
+	/* ordering opfamily OID, or 0 if search op */
+	Oid			amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 1c95846..93c246f 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -44,11 +44,20 @@
 
 CATALOG(pg_amproc,2603)
 {
-	Oid			amprocfamily;	/* the index opfamily this entry is for */
-	Oid			amproclefttype; /* procedure's left input data type */
-	Oid			amprocrighttype;	/* procedure's right input data type */
-	int16		amprocnum;		/* support procedure index */
-	regproc		amproc;			/* OID of the proc */
+	/* the index opfamily this entry is for */
+	Oid			amprocfamily BKI_ABBREV(opf);
+
+	/* procedure's left input data type */
+	Oid			amproclefttype BKI_ABBREV(lt);
+
+	/* procedure's right input data type */
+	Oid			amprocrighttype BKI_ABBREV(rt);
+
+	/* support procedure index */
+	int16		amprocnum BKI_ABBREV(num);
+
+	/* OID of the proc */
+	regproc		amproc;
 } FormData_pg_amproc;
 
 /* ----------------
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index 9b6b52c..c06e2cd3 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -44,20 +44,41 @@
 
 CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
 {
-	NameData	rolname;		/* name of role */
-	bool		rolsuper;		/* read this field via superuser() only! */
-	bool		rolinherit;		/* inherit privileges from other roles? */
-	bool		rolcreaterole;	/* allowed to create more roles? */
-	bool		rolcreatedb;	/* allowed to create databases? */
-	bool		rolcanlogin;	/* allowed to log in as session user? */
-	bool		rolreplication; /* role used for streaming replication */
-	bool		rolbypassrls;	/* bypasses row level security? */
-	int32		rolconnlimit;	/* max connections allowed (-1=no limit) */
+	/* name of role */
+	NameData	rolname;
+
+	/* read this field via superuser() only! */
+	bool		rolsuper BKI_DEFAULT(f);
+
+	/* inherit privileges from other roles? */
+	bool		rolinherit BKI_DEFAULT(t);
+
+	/* allowed to create more roles? */
+	bool		rolcreaterole BKI_DEFAULT(f);
+
+	/* allowed to create databases? */
+	bool		rolcreatedb BKI_DEFAULT(f);
+
+	/* allowed to log in as session user? */
+	bool		rolcanlogin BKI_DEFAULT(f);
+
+	/* role used for streaming replication */
+	bool		rolreplication BKI_DEFAULT(f);
+
+	/* bypasses row level security? */
+	bool		rolbypassrls BKI_DEFAULT(f);
+
+	/* max connections allowed (-1=no limit) */
+	int32		rolconnlimit BKI_DEFAULT(-1);
 
 	/* remaining fields may be null; use heap_getattr to read them! */
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		rolpassword;	/* password, if any */
-	timestamptz rolvaliduntil;	/* password expiration time, if any */
+
+	/* password, if any */
+	text		rolpassword BKI_DEFAULT(_null_);
+
+	/* password expiration time, if any */
+	timestamptz rolvaliduntil BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_authid;
 
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index b256657..f8ff6d2 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -31,55 +31,117 @@
 
 CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 {
-	NameData	relname;		/* class name */
-	Oid			relnamespace;	/* OID of namespace containing this class */
-	Oid			reltype;		/* OID of entry in pg_type for table's
-								 * implicit row type */
-	Oid			reloftype;		/* OID of entry in pg_type for underlying
-								 * composite type */
-	Oid			relowner;		/* class owner */
-	Oid			relam;			/* index access method; 0 if not an index */
-	Oid			relfilenode;	/* identifier of physical storage file */
+	/* class name */
+	NameData	relname;
+
+	/* OID of namespace containing this class */
+	Oid			relnamespace BKI_DEFAULT(PGNSP);
+
+	/* OID of entry in pg_type for table's implicit row type */
+	Oid			reltype;
+
+	/* OID of entry in pg_type for underlying composite type */
+	Oid			reloftype BKI_DEFAULT(0);
+
+	/* class owner */
+	Oid			relowner BKI_DEFAULT(PGUID);
+
+	/* index access method; 0 if not an index */
+	Oid			relam BKI_DEFAULT(0);
+
+	/* identifier of physical storage file */
+	Oid			relfilenode BKI_DEFAULT(0);
 
 	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
-	Oid			reltablespace;	/* identifier of table space for relation */
-	int32		relpages;		/* # of blocks (not always up-to-date) */
-	float4		reltuples;		/* # of tuples (not always up-to-date) */
-	int32		relallvisible;	/* # of all-visible blocks (not always
-								 * up-to-date) */
-	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
-	bool		relhasindex;	/* T if has (or has had) any indexes */
-	bool		relisshared;	/* T if shared across databases */
-	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
-	char		relkind;		/* see RELKIND_xxx constants below */
-	int16		relnatts;		/* number of user attributes */
+
+	/* identifier of table space for relation */
+	Oid			reltablespace BKI_DEFAULT(0);
+
+	/* # of blocks (not always up-to-date) */
+	int32		relpages BKI_DEFAULT(0);
+
+	/* # of tuples (not always up-to-date) */
+	float4		reltuples BKI_DEFAULT(0);
+
+	/* # of all-visible blocks (not always up-to-date) */
+	int32		relallvisible BKI_DEFAULT(0);
+
+	/* OID of toast table; 0 if none */
+	Oid			reltoastrelid BKI_DEFAULT(0);
+
+	/* T if has (or has had) any indexes */
+	bool		relhasindex BKI_DEFAULT(f);
+
+	/* T if shared across databases */
+	bool		relisshared BKI_DEFAULT(f);
+
+	/* see RELPERSISTENCE_xxx constants below */
+	char		relpersistence BKI_DEFAULT(p);
+
+	/* see RELKIND_xxx constants below */
+	char		relkind BKI_DEFAULT(r);
+
+	/* number of user attributes */
+	int16		relnatts;
 
 	/*
 	 * Class pg_attribute must contain exactly "relnatts" user attributes
 	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
 	 * contain entries with negative attnums for system attributes.
 	 */
-	int16		relchecks;		/* # of CHECK constraints for class */
-	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
-	bool		relhaspkey;		/* has (or has had) PRIMARY KEY index */
-	bool		relhasrules;	/* has (or has had) any rules */
-	bool		relhastriggers; /* has (or has had) any TRIGGERs */
-	bool		relhassubclass; /* has (or has had) derived classes */
-	bool		relrowsecurity; /* row security is enabled or not */
-	bool		relforcerowsecurity;	/* row security forced for owners or
-										 * not */
-	bool		relispopulated; /* matview currently holds query results */
-	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
-	bool		relispartition; /* is relation a partition? */
-	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
-	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
-								 * this is really a MultiXactId */
+
+	/* # of CHECK constraints for class */
+	int16		relchecks BKI_DEFAULT(0);
+
+	/* T if we generate OIDs for rows of rel */
+	bool		relhasoids;
+
+	/* has (or has had) PRIMARY KEY index */
+	bool		relhaspkey BKI_DEFAULT(f);
+
+	/* has (or has had) any rules */
+	bool		relhasrules BKI_DEFAULT(f);
+
+	/* has (or has had) any TRIGGERs */
+	bool		relhastriggers BKI_DEFAULT(f);
+
+	/* has (or has had) derived classes */
+	bool		relhassubclass BKI_DEFAULT(f);
+
+	/* row security is enabled or not */
+	bool		relrowsecurity BKI_DEFAULT(f);
+
+	/* row security forced for owners or not */
+	bool		relforcerowsecurity BKI_DEFAULT(f);
+
+	/* matview currently holds query results */
+	bool		relispopulated BKI_DEFAULT(t);
+
+	/* see REPLICA_IDENTITY_xxx constants  */
+	char		relreplident BKI_DEFAULT(n);
+
+	/* is relation a partition? */
+	bool		relispartition BKI_DEFAULT(f);
+
+	/* all Xids < this are frozen in this rel */
+	/* Note: "3" stands for FirstNormalTransactionId */
+	TransactionId relfrozenxid BKI_DEFAULT(3);
+
+	/* all multixacts in this rel are >= this. This is really a MultiXactId */
+	/* Note: "1" stands for FirstMultiXactId */
+	TransactionId relminmxid BKI_DEFAULT(1);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
-	aclitem		relacl[1];		/* access permissions */
-	text		reloptions[1];	/* access-method-specific options */
-	pg_node_tree relpartbound;	/* partition bound node tree */
+
+	/* access permissions */
+	aclitem		relacl[1] BKI_DEFAULT(_null_);
+
+	/* access-method-specific options */
+	text		reloptions[1] BKI_DEFAULT(_null_);
+
+	/* partition bound node tree */
+	pg_node_tree relpartbound BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_class;
 
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 28dbc74..7c31622 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -52,12 +52,21 @@ CATALOG(pg_opclass,2616)
 {
 	Oid			opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
-	Oid			opcnamespace;	/* namespace of this opclass */
-	Oid			opcowner;		/* opclass owner */
+
+	/* namespace of this opclass */
+	Oid			opcnamespace BKI_DEFAULT(PGNSP);
+
+	/* opclass owner */
+	Oid			opcowner BKI_DEFAULT(PGUID);
+
 	Oid			opcfamily;		/* containing operator family */
 	Oid			opcintype;		/* type of data indexed by opclass */
-	bool		opcdefault;		/* T if opclass is default for opcintype */
-	Oid			opckeytype;		/* type of data in index, or InvalidOid */
+
+	/* T if opclass is default for opcintype */
+	bool		opcdefault BKI_DEFAULT(t);
+
+	/* type of data in index, or InvalidOid */
+	Oid			opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index ff9b470..c94186a 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -33,20 +33,48 @@
 
 CATALOG(pg_operator,2617)
 {
-	NameData	oprname;		/* name of operator */
-	Oid			oprnamespace;	/* OID of namespace containing this oper */
-	Oid			oprowner;		/* operator owner */
-	char		oprkind;		/* 'l', 'r', or 'b' */
-	bool		oprcanmerge;	/* can be used in merge join? */
-	bool		oprcanhash;		/* can be used in hash join? */
-	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprresult;		/* result datatype */
-	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
-	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
-	regproc		oprcode;		/* OID of underlying function */
-	regproc		oprrest;		/* OID of restriction estimator, or 0 */
-	regproc		oprjoin;		/* OID of join estimator, or 0 */
+
+	/* name of operator */
+	NameData	oprname;
+
+	/* OID of namespace containing this oper */
+	Oid			oprnamespace BKI_DEFAULT(PGNSP);
+
+	/* operator owner */
+	Oid			oprowner BKI_DEFAULT(PGUID);
+
+	/* 'l', 'r', or 'b' */
+	char		oprkind BKI_DEFAULT(b);
+
+	/* can be used in merge join? */
+	bool		oprcanmerge BKI_DEFAULT(f);
+
+	/* can be used in hash join? */
+	bool		oprcanhash BKI_DEFAULT(f);
+
+	/* left arg type, or 0 if 'l' oprkind */
+	Oid			oprleft;
+
+	/* right arg type, or 0 if 'r' oprkind */
+	Oid			oprright;
+
+	/* result datatype */
+	Oid			oprresult;
+
+	/* OID of commutator oper, or 0 if none */
+	Oid			oprcom BKI_DEFAULT(0);
+
+	/* OID of negator oper, or 0 if none */
+	Oid			oprnegate BKI_DEFAULT(0);
+
+	/* OID of underlying function */
+	regproc		oprcode;
+
+	/* OID of restriction estimator, or 0 */
+	regproc		oprrest BKI_DEFAULT(-);
+
+	/* OID of join estimator, or 0 */
+	regproc		oprjoin BKI_DEFAULT(-);
 } FormData_pg_operator;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 0d0ba7c..39bb8cd 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -32,8 +32,12 @@ CATALOG(pg_opfamily,2753)
 {
 	Oid			opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
-	Oid			opfnamespace;	/* namespace of this opfamily */
-	Oid			opfowner;		/* opfamily owner */
+
+	/* namespace of this opfamily */
+	Oid			opfnamespace BKI_DEFAULT(PGNSP);
+
+	/* opfamily owner */
+	Oid			opfowner BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
 /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index c969375..4b2cf32 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -35,43 +35,99 @@
 
 CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 {
-	NameData	proname;		/* procedure name */
-	Oid			pronamespace;	/* OID of namespace containing this proc */
-	Oid			proowner;		/* procedure owner */
-	Oid			prolang;		/* OID of pg_language entry */
-	float4		procost;		/* estimated execution cost */
-	float4		prorows;		/* estimated # of rows out (if proretset) */
-	Oid			provariadic;	/* element type of variadic array, or 0 */
-	regproc		protransform;	/* transforms calls to it during planning */
-	bool		proisagg;		/* is it an aggregate? */
-	bool		proiswindow;	/* is it a window function? */
-	bool		prosecdef;		/* security definer */
-	bool		proleakproof;	/* is it a leak-proof function? */
-	bool		proisstrict;	/* strict with respect to NULLs? */
-	bool		proretset;		/* returns a set? */
-	char		provolatile;	/* see PROVOLATILE_ categories below */
-	char		proparallel;	/* see PROPARALLEL_ categories below */
-	int16		pronargs;		/* number of arguments */
-	int16		pronargdefaults;	/* number of arguments with defaults */
-	Oid			prorettype;		/* OID of result type */
+	/* procedure name */
+	NameData	proname BKI_ABBREV(n);
+
+	/* OID of namespace containing this proc */
+	Oid			pronamespace BKI_DEFAULT(PGNSP);
+
+	/* procedure owner */
+	Oid			proowner BKI_DEFAULT(PGUID);
+
+	/* OID of pg_language entry */
+	Oid			prolang BKI_DEFAULT(12);
+
+	/* estimated execution cost */
+	float4		procost BKI_DEFAULT(1);
+
+	/* estimated # of rows out (if proretset) */
+	float4		prorows BKI_DEFAULT(0);
+
+	/* element type of variadic array, or 0 */
+	Oid			provariadic BKI_DEFAULT(0);
+
+	/* transforms calls to it during planning */
+	regproc		protransform BKI_DEFAULT(0);
+
+	/* is it an aggregate? */
+	bool		proisagg BKI_DEFAULT(f);
+
+	/* is it a window function? */
+	bool		proiswindow BKI_DEFAULT(f);
+
+	/* security definer */
+	bool		prosecdef BKI_DEFAULT(f);
+
+	/* is it a leak-proof function? */
+	bool		proleakproof BKI_ABBREV(lp) BKI_DEFAULT(f);
+
+	/* strict with respect to NULLs? */
+	bool		proisstrict BKI_DEFAULT(t);
+
+	/* returns a set? */
+	bool		proretset BKI_DEFAULT(f);
+
+	/* see PROVOLATILE_ categories below */
+	char		provolatile BKI_ABBREV(v) BKI_DEFAULT(i);
+
+	/* see PROPARALLEL_ categories below */
+	char		proparallel BKI_ABBREV(p) BKI_DEFAULT(u);
+
+	/* number of arguments */
+	int16		pronargs;
+
+	/* number of arguments with defaults */
+	int16		pronargdefaults BKI_DEFAULT(0);
+
+	/* OID of result type */
+	Oid			prorettype BKI_ABBREV(rt);
 
 	/*
 	 * variable-length fields start here, but we allow direct access to
 	 * proargtypes
 	 */
-	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
+
+	/* parameter types (excludes OUT params) */
+	oidvector	proargtypes BKI_ABBREV(at);
 
 #ifdef CATALOG_VARLEN
-	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
-	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
-	text		proargnames[1]; /* parameter names (NULL if no names) */
-	pg_node_tree proargdefaults;	/* list of expression trees for argument
-									 * defaults (NULL if none) */
-	Oid			protrftypes[1]; /* types for which to apply transforms */
-	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
-	text		probin;			/* secondary procedure info (can be NULL) */
-	text		proconfig[1];	/* procedure-local GUC settings */
-	aclitem		proacl[1];		/* access permissions */
+
+	/* all param types (NULL if IN only) */
+	Oid			proallargtypes[1] BKI_DEFAULT(_null_);
+
+	/* parameter modes (NULL if IN only) */
+	char		proargmodes[1] BKI_DEFAULT(_null_);
+
+	/* parameter names (NULL if no names) */
+	text		proargnames[1] BKI_DEFAULT(_null_);
+
+	/* list of expression trees for argument defaults (NULL if none) */
+	pg_node_tree proargdefaults BKI_DEFAULT(_null_);
+
+	/* types for which to apply transforms */
+	Oid			protrftypes[1] BKI_DEFAULT(_null_);
+
+	/* procedure source text */
+	text		prosrc BKI_ABBREV(s) BKI_FORCE_NOT_NULL;
+
+	/* secondary procedure info (can be NULL) */
+	text		probin BKI_DEFAULT(_null_);
+
+	/* procedure-local GUC settings */
+	text		proconfig[1] BKI_DEFAULT(_null_);
+
+	/* access permissions */
+	aclitem		proacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_proc;
 
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index e355144..1039c1b 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -37,8 +37,12 @@
 CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 {
 	NameData	typname;		/* type name */
-	Oid			typnamespace;	/* OID of namespace containing this type */
-	Oid			typowner;		/* type owner */
+
+	/* OID of namespace containing this type */
+	Oid			typnamespace BKI_DEFAULT(PGNSP);
+
+	/* type owner */
+	Oid			typowner BKI_DEFAULT(PGUID);
 
 	/*
 	 * For a fixed-size type, typlen is the number of bytes we use to
@@ -66,7 +70,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
 	 */
-	char		typtype;
+	char		typtype BKI_DEFAULT(b);
 
 	/*
 	 * typcategory and typispreferred help the parser distinguish preferred
@@ -76,17 +80,20 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 */
 	char		typcategory;	/* arbitrary type classification */
 
-	bool		typispreferred; /* is type "preferred" within its category? */
+	/* is type "preferred" within its category? */
+	bool		typispreferred BKI_DEFAULT(f);
 
 	/*
 	 * If typisdefined is false, the entry is only a placeholder (forward
 	 * reference).  We know the type name, but not yet anything else about it.
 	 */
-	bool		typisdefined;
+	bool		typisdefined BKI_DEFAULT(t);
 
-	char		typdelim;		/* delimiter for arrays of this type */
+	/* delimiter for arrays of this type */
+	char		typdelim BKI_DEFAULT(\054);
 
-	Oid			typrelid;		/* 0 if not a composite type */
+	/* 0 if not a composite type */
+	Oid			typrelid BKI_DEFAULT(0);
 
 	/*
 	 * If typelem is not 0 then it identifies another row in pg_type. The
@@ -99,7 +106,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * typelem != 0 and typlen == -1.
 	 */
-	Oid			typelem;
+	Oid			typelem BKI_DEFAULT(0);
 
 	/*
 	 * If there is a "true" array type having this type as element type,
@@ -118,13 +125,13 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	/*
 	 * I/O functions for optional type modifiers.
 	 */
-	regproc		typmodin;
-	regproc		typmodout;
+	regproc		typmodin BKI_DEFAULT(-);
+	regproc		typmodout BKI_DEFAULT(-);
 
 	/*
 	 * Custom ANALYZE procedure for the datatype (0 selects the default).
 	 */
-	regproc		typanalyze;
+	regproc		typanalyze BKI_DEFAULT(-);
 
 	/* ----------------
 	 * typalign is the alignment required when storing a value of this
@@ -162,7 +169,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * 'm' MAIN		  like 'x' but try to keep in main tuple
 	 * ----------------
 	 */
-	char		typstorage;
+	char		typstorage BKI_DEFAULT(p);
 
 	/*
 	 * This flag represents a "NOT NULL" constraint against this datatype.
@@ -172,32 +179,32 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * Used primarily for domain types.
 	 */
-	bool		typnotnull;
+	bool		typnotnull BKI_DEFAULT(f);
 
 	/*
 	 * Domains use typbasetype to show the base (or domain) type that the
 	 * domain is based on.  Zero if the type is not a domain.
 	 */
-	Oid			typbasetype;
+	Oid			typbasetype BKI_DEFAULT(0);
 
 	/*
 	 * Domains use typtypmod to record the typmod to be applied to their base
 	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
 	 * domain.
 	 */
-	int32		typtypmod;
+	int32		typtypmod BKI_DEFAULT(-1);
 
 	/*
 	 * typndims is the declared number of dimensions for an array domain type
 	 * (i.e., typbasetype is an array type).  Otherwise zero.
 	 */
-	int32		typndims;
+	int32		typndims BKI_DEFAULT(0);
 
 	/*
 	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
 	 * collatable base types, possibly other OID for domains
 	 */
-	Oid			typcollation;
+	Oid			typcollation BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 
@@ -206,7 +213,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * a default expression for the type.  Currently this is only used for
 	 * domains.
 	 */
-	pg_node_tree typdefaultbin;
+	pg_node_tree typdefaultbin BKI_DEFAULT(_null_);
 
 	/*
 	 * typdefault is NULL if the type has no associated default value. If
@@ -216,12 +223,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * external representation of the type's default value, which may be fed
 	 * to the type's input converter to produce a constant.
 	 */
-	text		typdefault;
+	text		typdefault BKI_DEFAULT(_null_);
 
 	/*
 	 * Access permissions
 	 */
-	aclitem		typacl[1];
+	aclitem		typacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_type;
 
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..79f3b83
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,265 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata fields are on their own line
+#    -Fields are in the same order they would be in the catalog table
+#    -Default values and computed values for the catalog are left out.
+#    -Column abbreviations are used if available.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+my $expand_tuples = 0;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	elsif ($arg eq '--expand')
+	{
+		$expand_tuples = 1;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @metafields = ('oid', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname;
+
+		# Use abbreviations where available, unless we're writing
+		# full tuples.
+		if (exists $column->{abbrev} and !$expand_tuples)
+		{
+			$attname = $column->{abbrev};
+		}
+		else
+		{
+			$attname = $column->{name};
+		}
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Back up old data file rather than overwrite it.
+	# We don't assume the input path and output path are the same,
+	# but they can be.
+	my $newdatfile = "$output_path$catname.dat";
+	if (-e $newdatfile)
+	{
+		rename($newdatfile, $newdatfile . '.bak')
+		  or die "rename: $newdatfile: $!";
+	}
+	open my $dat, '>', $newdatfile
+	  or die "can't open $newdatfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			if (!$expand_tuples)
+			{
+				# Write out tuples in a compact representation.
+				# We must do the following operations in the order given.
+				strip_default_values(\%values, $schema, $catname);
+				if ($catname eq 'pg_proc')
+				{
+					delete $values{pronargs};
+					if ($values{prosrc} eq $values{proname})
+					{
+						delete $values{prosrc};
+					}
+				}
+				add_column_abbrevs(\%values, $schema);
+			}
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @metafields);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+sub strip_default_values
+{
+	my ($row, $schema, $catname) = @_;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		die "No value for $catname.$attname\n"
+		  if ! defined $row->{$attname};
+
+		# Delete values that match defaults.
+		if (defined $column->{default}
+			and ($row->{$attname} eq $column->{default}))
+		{
+			delete $row->{$attname};
+		}
+	}
+}
+
+sub add_column_abbrevs
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and exists $row->{$attname})
+		{
+			$row->{$abbrev} = $row->{$attname};
+		}
+	}
+}
+
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+    --expand         write out full tuples
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v4-0005-Mechanical-data-conversion.patch.tar.gzapplication/x-gzip; name=v4-0005-Mechanical-data-conversion.patch.tar.gzDownload
���;Z��}�#��'��^�������f�'�^�d����G�Z���gn��,2������~�x����$��@"dUk|��3�Jf���@�mv�X,��jV�~���7���oV��ms<m���C���C�DE�E��2���],�E�$E�iE)�[F�D<L�C�i����SW)n�S��~_���.����?�����U]-�����uz�W��N��IqW���(�"����*��v}��Xi����Q"��B��*�?DE����1���W��__��������}���u��*�/���(���6+���J�_%���<�|Q./���s��~��w_���?Fo�h������ZI-��Z����S$��=4��9=n�������ut:�^o�����y��m��������<4��9&��aE��nN�M{w3�|3�~��l��n������l�/��o�W�^���������J$(yw�t��3�|%��������T7+�)�m�}t�����Y��z+mo���_��9Ew�k����v��t^F'�X�B2���D�<D���XoO����|�~�D#@#����96��?qE'�v���BtZ�����#�7��Y�zqss�������7�����H��H���QWY��������?��TS���#��RX���&>;�����,��h����a�	%� oU�:D^R%�D3�m}:i��S���m�I���uOQ&���>]��M�����?�����V���9�U��N|�`H�)�?j-tT%,.�dP�IEhw�n��������������j[���&?)���RH���w�h��L� ���e�|9��Ih��ns�IoRG.��������wj��O��U�����>���a@j��ph�����`$O���"9��7k1u-�4�6{A���O?��E�V�k�]�n��"�X�������t����N_]l��Wg�����j8}�N�U����jC]������9u��jR����S��t�����V^���G�u�R��^�����g������:~�+���}�b����nn�7]T�fy����^��w��V�y�������4[�z��VY�-�[�^7o_�����s����f�r}�����_�������?��\�P�����F���}�YG���������/��N(��n�?�����x�M�Z=����6�z;���5������~��
o�v�o ��xxG�ys���2<��4��n����//�lD�6���w��_�����0Rq�~K�Xy�����RI#�������LL
&���?�@2,��������:zW�
���?l����X\���*�]H��
]��]�<m�!x����}������a�"������IP���
��h.�1���I�W� �0�'�������OZ2��F��dU+Ih��P��@e���� �Ds�OX��w��~���	�R(��-��I\������wVtj���~y�m;�[}�J�������0N�7�&=�w��aTc���'�����2������E��}����x�	��D������|)��V�u0��T�VbS+����Oo�F��v����w��%-��@2�b]l9M6���QL�_^�Y�����?� ?�0����DW��'��wW���D�b��m��}s4Y:��S{���0�h��Z&���V6�xfh<Ob����8�v$��'��d�F�DL��Ws��G��"��6�Lbf,��u��J@BJ�l���2�u�w��2�)0ub���)^a�?1�N�I��k���G?+�_�����b��6�)
��*�4�R`}	1?�&��,4�T*��T�8)Lc!!�����$�_���Z�}B�?����wK7�wJ�EA����
�����U(�[�d��@Oe��^{n��0��h��&J�:B���y�Mu	�Y�UEA 4�n>%����0S@��vC��T�F���	:����0A�]3[%�-$eI��d���=����9}���`<�%9T&���8w'�����Hs�d4B�������\�.���A�����{���G�
U
���QK������AO��iWo�fV�Ysa�������VB6�|fj����>lJ/���c���NlJ���u�q��j�&���C��z���%eovdSb4���������e�����}�+�u��N���YR
'�������:A�]wh
�������q�W-T�7t��v��.mF�C��N�~��ZZ�NmF���j�
�%���{���f����a��3%��6�-��\���AK����&Z��B���w������������z	��i _��[���po�a3��t/�.�KL8��@F�u��
���"{c��%�z79��_�a[.�����SZ��N����\���\Bg'vJ3�WtG�\�h���}�w�h1l�n��7�����5�	��Q��Fy���t~�n5-.
��H������T�&Y{:����yh���b��������8e�{"���>�m����q��� X�&�1WF��g���.�a��%��U�t2�F;7��GD�e ��N��Y��[@�=����L���|�	�<I6WIm��r������'SAo�V�3O���$VX@���N����g�����O�np��m�����4�QP1�I��*��g��)"���)�<��XP!�<���ND���LO0�?��1N��z�j~=ld���0�w���?6���a������9?��?A����q�l��N(3s~Le���s��KD!K�g�H�<d�����-�S���������!O%�r&�+����l�9d�#���4\��������)����q
����������M����E�D�nb]���?
����9����������@�	�^����O������=��E{i8��4��\��O�o]XR'w]g�������?�������Y�%u��e�fj	�m��yL!O3����5|?��y����!��%� �gX��\g��%� �gX��\����y����c��k�g�6x����B�6\������"�D���������aC~9�=�L���(��6��PrRO����c���������+���'���S�_N
��\��O������n�6����t��'�����G�"��N�G�wSR��c�q(7����}���C�9P�%�?+�j��a����X��OH��%c�nq������u�'�5�G��^n�v����z������n�����E��������#}:���M����
~���v����RM�>xLW�����s����G{��w��c���!OD��1�P������m�����H��
1����\���0��?��ZC���5��9��m�P���Cf��P�$�
�H#��ST��2�P�x0����-#��c��.4����P��06A���fA����$�w[����eD��j��������J�w��
6��7
�4��7�S<U__�*�4��g�[�1A�f��r6�-
�b�4�+�0�a��
Q�������t�)�h�M�p��kj��8�|�
��&��?�Z\�-�K���4�7X��F��=d���h[y��n15Ia���N��'$%a�Ln/�zuC{\7�f}sj��k~�ph��������C��\����~x��w��QS�O����M���m�-}���\w����y���VoS���k�����U�%��+���"�sq+&��AL?{�G`�R��9�>��������l��x:K��L>��5���4�n��Q+��y� ��x�GwF�}��(49O����o>.�Kho���������G����v��O��
�������ug��u����.I�E�r��u��e-�kYw�}��]�r}�nN��������fIj���9��]�=��_����z'og^�o���=�y����W���37g�QV�Z������|�*��-+���o������`�]���nR����o�e��'��s{��m���n��$��1��4���o�����(/�	��7����l�v$�@>�"�?f������x�<g��6�j���������e�Cw|�|���8F�����p���Z���|��I���9�
�wX��wz��������/6Z���wkq�d�B��nV(f������d�������hulO���K/c6������L�F�e���N��N�Ff�`�vs���
.L���[��(��3h
@��{a��-��(e�&tj��1�t��	Lh:�nB�T�	L���a�&4v����6h����	��QL8c���90��Pj<�8eB��&�l�R�_�4� u���eF�Y9�c�&����H�9%�Gp��I\L����4��0S�IL�����&�\��F�q�US�Sm�h:��������ja4��%���K�d>M��y)�&�j�Q[4�/Y��5F&#B��`:y0&L}���	������������W��JC��Pa�x���,LMpEl�\X��N�m�faf:�6#���uLJ���(�%��P�4T�w���H=T�\R-�E��D�V��cbf��i�1As:-<1��6+a5�������� O���XLxB�X����l�������f#X����lS{e����������YU`�W2��B��-X{������l�������<T]��U=U0����A�p}an����!�4��q�8�Nj"O�����������8c�8������M��C���}i�C��f�&J#�>6KJ�'�&Zt�5G�c���M���M�J���=���c�^����G�e��w�����ozH��N'R���A���9��h�2�>
-2�;���QY��K���oZh�M�Y���
�������f�Y����Y0u��c��Q�{K�:�kK�}T�m����0���+�.8��	g]q0��������Tud��C���o�Mw�hpq�;������f��������
>np�c�A"B����n���x�O�#3�6��`�szt�0u�--�3tNM����U��k(���{��T.���k1�\P}����<P}��b�����/9�^%���F!�P��h���M��f�	CkIk��CkI���Ck�t����Z&b>.0�d��`|{���O�X[��v�������y��&�_�:n
p-37����qs�KYb�l����W����l\ ]�������g6.���Eb���3e��vP#��]�&\6np]�n
p]�:��\�5��\~��m�����g���U���������j	��q�h%�>�`����0[�j������	�
��N������>��\j����������S��7�N�k7�N�x7�N�8���9�����5����.���7MZ��i�N�klIZ��k\����Tj������[l�T��[l9����������8�����Eo�,�He�j�dL���v`��`�������kL���m;2l`�J��"�~"2��S���BI�������6>p�����I����8��S�p�����\	�Q�h�Amr���-Y����]���a�����5[�
<&r�q��^���IT1�C
���-�����M�U�<��Ze����U�<����X��L�8�y��T&��R�ij�pa�&v�k��)��V;6l`��]6l`����M��=�d�*M�*M11 �<,��i�`��iI�g�����n������Y��p2����O������[�8�����`��.p�-I+m��[���H���N�5���������a�iF�4b��m�s0�������M��*M	G�/����S��`��a\0�l�*6.y�-��V�
�m}D���Dk,�3g0T����������	[�t��`�a9>08iK�K��6�C�����7N��Ij9���Y�9r&�K�&�dc�AB(��'�a��Q���5�$�$Ml#�
D�X���������F&�`(��v�|�"wK%��\�����si;��EMtTk��P��I�r�@�tT����:�tB����Q�$I��\(��CN��lqQ��N�1.6*����.j��j9�Ey���kg��3�A5��0�u*��5�Q-:�EMuTk��P3��<�\G���
�� !��
O�R=�?�e������qA�%���fI�H��f�Nd��\2�I5���H���$�Rm03������Y+��	�L�|`}ziY�:g�b������'H��]}OL�i�'Z��E���	�>�M�-�u����u���h��2�B	&�\-A4�e�3�F+Y#��V���FkiYX���h%M�U���7����I�8bi������)�����i�:��b����{��sl�R��z�I=#����p��_R��6Rec�wZ_��t����s���W)��R�G���N�qK�,�&����"n��
4�N��`?9�����ag6&[���k������DzJ�����:d��{c��6��C&����i�P���?�"��]0����225P��t�8&�L��<3m[W�]r�2���1C��h~��d+l&N��g��������:W�
���KeM-{TI4���,M�j	A�����d#�b!��v���(y��������F��*D[ja�3+���Y�����������Y�-ej&���H����s���F;�p,��[�����V�[����D��(L�������}�4�m���W���+rs�����
MhM(c�_g������5R��p7>�)��$��'��Zb5��� cC�*%|%T������h��T�a��W,�f��-N�v�K,�Ve5>��\��St�0�9~�)�����Q6��	7�
���#����	+����K����)��'S�	y�qQ5�U�8T�CP3��|T���A-t��<���Z��Z���<�K��h��!���V��I�bpv��i�����jV�p�@tU�Eop)z/&���E%2�u�.T]�&Z�	�c���N�3UO0XL�=>�v�P�a5����c�O������G�7zY�!��=vw�n�.����4��T����=����4X-Q�
��B����EE���>==��N���v�y��~fbK�*�\�C����:W�P5K�-����{�uV����Be��y��[�N�<T�-X'J��-TV���
���yV������y3
1�-��b�[P2�L�&P�,S����6���J���He��J��m�����a��y������c�����V��'�-~��`�[x�%���&l`���l��d3���k��L\0�b��f��j���������z���B��e[�t-)35���%���!P�*9��l�)@NfC���do\3���#
-�������Be����a�X�X������N��40>p(���w����	}��A���<���$���Nu{*-�-��/������N�E3��)�>��+������D�~��2������h�=������������Q���Pa����/��Mei�f��M�X���Nl'4��`4XR���h(m��
FCi2��h�EZ�'�'�+��,[o��<�E��G���RMI�TI��2�X*8'�vv�
�`��,6p�-*�����~?���z
����Cc���1� ���l�:C���T8��l;����;x:��\��%�p��7S�I�g���DC\F��2��~��M?$��X���;��"V<5��L����qu�r&X�j��M� \�.�3�1�"�Oc/XO~4kI�DZ��u����0�u�����aC��J����l^5H8��E�Q'��xcf�R�"sP'��x��c\��������J�`��0�Qs��f�e��O���T������/C���F<�f%��{����*�|`p��v��f%��_�M&�f�5���������V	������1���?n�Xh���������PwD��s��:��������o�L�<��ur ��B9yb��<�TD�X+"O,��'V�����@������{9@qm/�.e�:>A���5���5��5���5��5���5��5����8F�;u�"x� E��I
�^��b�o�z8���mq����%9T����<�TE���Do����?��_X"�l\x��e3���\K�����e:�:$zM�t.m(t�����aM��g/����X�7�Iw��;5���'�v�����a��;xbx���w�y����Gx�y��3�o�$V��a��O���Wy��w����(�����,�+"�BMj5j
P�YP�l�����Z��Ez���~�Q���*�i�t�9�z�[<����<�z�\5�z�\���d�#��Z��U��`�lQ�u�����gL��1(�� �"������Z��[A���,P=H[������:��$���@��Hl�#�1�W�?�� �@���1����@����kP�f��j�>��`�=&�`�<j�@�a��C)V�b�
��-���~9G�6�L����fRM��N�<�z6������i*�����W�)�	Z?�g*�j]��P��+�����v?�����_���.��TV�<���J�T5�j��R&L`��fi�n��aX?7�7����M���I*O�)5�R�<����/|�4��
������b�����f�L��V�,���*7�g���T��^Y��X��Zr��
[0\�9�2���iN�5gl��v����f5l�j��K-��Dh�Sj�Hs@u���6,P]lt��:������j����K��8�z�@����
������f�T��8�9@�]�I�i�?�����3��R���_zb��	�D���	�E���	�F�'���������5G� ��c�q�����8Hj�xb$6sD1v�[lR 7�b���f_�3q���Q@&.��}9��r�/^&p�����������G������o30auY���8����
a�84����4�.F����>���B��#������e
V_��;�!��)@C��P�6d�L�7�������h
{1au!�w���@��"�eN�!5��]�}(�pA�c����l3�����}4�ps�K�$(�Jk*^(��+�l����\[�pqS�kS=.npmkM.np�#12�h����p#�}��pa�}v����O�	�����[l.�R������i���$c�H�_��Ay���� �J������� `� l(l\��K�{�2;�^u0a�TB�N�`��(.r���A6r
��������=Q���d[@v�D�6�C��
������y��=����
� ;v��"���=����t �"by	v/�O��^^o||��g	"�j�L���{x\� ��p��)@���r�3�l���"����hF���<I��\dP���(�ENr�n��@���A�{8kJ7��&��).28M��"�"�����E��}w���d�f��<hc�u�[?O!����E���\8G��.2p��kf��y0�B$85�Y����4��7��B$85�����B����}��F�/P��@����2��}��Ft�+�'S9���@���<8�$X9���@��T62�`�6Rt�)+�I��"O����E�#u��<F+x2Y�H���q�8��ENrPo���@�:��!vc��
d�.�<�y|[oA����+�����q��#�"�22(��@��\.2+#����J/�p�����v�Bmw����=��GN�}�r�ABzn�\� ��-9�������5�<G�/Z����`#'�0�"��m�"g��C�E�2�d����������^���K�������Y�F���p628�h��e#g�*W628�H'�_+`<���fl�Z�AK���r4K�.�U��"����/��`�������X���s���#<�P����e�9��W1K{���d���"��*P6r��e#�����n���F��^�d
z���l�>�"�#)�����m��G�(��<Q`9y���+�C��@�c��,26�D��������G��5��
��5$�
���v��=���U���D��2�E�@C��r���9������d���E^��#uz�m��Qrw���������!�����S���N�}��`�e��`�e��`�e��`�e��`�*lb?��<��M�=����I���V��v�2�}���C���h�vQ�
���a�!j��q�����(������iT��Q��	\�����_^�7ww�����������uo����U�������������^��.����b����6�&���&��"�^l���}����Uy�(^���D�������������j��/����E�y�2����/eW��|���uSj�K�:��Tk�w+= �s<�f'QVN��)�Xc#$�� `�8&�):���bH^���lI�&0��K@w�	��a=\U�<�B	_�!LX���	�3��,2����K��l0�a�b��v;
�%i��}
��#F�Feu��Y������Ii&i�g�)�&�,O,��v>Mz&���s�3"/��g���I�&UC�`��R�8�Q���p��Q>�O�/�t�C�F�@bCa�=���Y��Rt�8�c�Z�A/�c"�������f���)��'��{�RP)����h�ea��1k�����=�4=�l�-x4U��G&�&�&�������M�-P#:dv�y�"�A�Z|�����AbC!w2'��R�eX��8d|��.P=�������������iK�4/��
\�v���(r�pw3�RY�j�q�����*�g�� lu75�/��qv��
bi���92��8��J����J:0.�KdJ��l�c�'q�4�����M��E��\f�h�64�Z�`����)��j��WU5M���c�.�E�BM,�
��I�X����%v���V���x7�-��v@Cb��H%��n�>ji��$��-�	�$Ww��Z�]�t8�yV
\��d���i�p����\������.���P#fi�������?AF#-�TC�5����@F6].����)5)"�a���<]f�`�p��������`������J�*��
fD�����2"��t93���cA��g�g���ku>�������"��@PF.iyPH�T�D���n��� 7v��Ho����1Q�m
J�����:0#7Y����R�$! �>�3���3�Q�
usZ�K�H8�A�I���T�d�%�6�A!=��R�-f!��|, $C����j��T�r����E�jVu��+u��BR#�>����L �G���D�A�L�hh�-����Le�f
�	T���w&S�O.�Wx!�P]x��K�s�0mDL"S#BN;����8����<nz��3���{�h�#�l�?�@�~���<y6;��$�\�����Iu1���Ss3M�E�b��C4M<(U�
�
��T��XT�A7���	d��HQ�]`l��\`�
<�&�t*r�����Y���vO�[����h����X�^v�UA��!N�T+���Q�sl(����i����N4��p�����z���[`i��0m8�i�nF8F;q�
�V\c����v�=^���P�QLg��.�0���^.V
�.����]8|��*^�p�J���o\�
h�,y���Dv�R�2U�P��I�r�`c1�����	6C'�X�X�)�L������k����=+EXx-��������#kN9�������R�R�L*�v��wT��x:��B:���X<��a�t����	�	4?��Z��m�;���R��|�����Z��p-G�b���V ���
{���l��U �����,�L�hHCp���i��hH�x#�
��>��X��s;p����L+�1���P�u��BEXK>�BE��s%h��6Os��p��r��s������"�2�{ol,(������s����k&yXYY�k�#�2S���,�K�b����%cF�h�-
v�P��:D]�2�.vh�i�����|4����]gj���a�����TM�t��U.����i�q>�iF�e��A�fx��������@+=��}{0,*B�E�B���|4,*�E�BX^����p�L=����e���	N�u@C")���GC"��gh�-�J�z�j����+�%J���l,��%��`b��/�E-��B&[��������������+�X��ace�0�L�a3_\��}B�{L,���gcc��'&&�{bZab��^M�egK$���B��N��uj�p�P���?&�q|L:�N0�7��ND`c%�6V����ace�6V���-�����o�j[�N���������uIjf�\J��!�#v���B��oJ9�,$8��g���o��w��@�9���Ft�q�x�A�u��q�z.�(��)��}��8H�n� ����d�6yG�}s���G�R������5�5��{
��K�/YH��d!���4��s���u�[?M����ij}��OS��n�4u����&fi�~�����4��<#��)�!9FO���{����Q*R��2!��S��2!��S��3!��S��3!��<n�,{Oq+f�{����S&$w�bV�r����gB
������Q��Oa����O,K�^���7���in�%��8H��� �:��dw�[xu�V��[��^�p�x�o��A��Z�z������8H�^� �z��d���m[�[��`�CUV��<���}��b���^��u�1�)���c�i��f����cF,�3by��+��G�+��G���z��'y�,�W��/������C�yX����l���!H� ���<,^���=��W�z}���<��
��<,^��x=��b����jML��]��X�.�bq�����h��U@���^����i k���������%��%hL
�8,���iDa6L�8Y��_(��)���4
���]�<�?\�����W]����?���}�9��h��E���wM�n�=�����O�:"����[?��X.�c�h��]�]�����_/��=u����O����V%�_;�����Bw\4^�����O�M�*s���Ze��V��o���6Y<������r�7-��t4�.�gu<N�9T�c���G�M�yh�R+�~�ph��j��7�9�[�H�@�����P ��s.��{n
������5���D�~�Sh��:R��t����a
-��x3��<����!W+�:�6,=�h�������9��L�\m��|�AE�h<���T��f���
�����p��A7�h<����t������m}�����mT��Dk�y�f��z����M6��7���q�:���;�7�n.ots�x���f���G��R�Wp����������SH.+����M�}8��MZ�W��s9�m��s�x�|./��E�E����b����pPy*\#�jO������������8�6��!�7�h�a�Ec
���=��Q�?�i|<,���a��7����7��	�C�r�������zsw����~}:�^��^7�WuWo���b�����f�j]w������]t��6��]7Q�XY�b�_7�����W��I'U����&z�n���?n�*���Y-|�et�x��>�_&q���RI�7>��a��C=�qU���/����t��$V2�mt�D����W�:�m��n}{]�H��Ss�V�f��^���V�51mV�v�A��5�S��Q������V�!���^>�>Y7w�}�>�n���U�V�z<6���� ^m����xo�[���~��W�V|/)�W�]<�Q��G�1y�����������RDC����y7<X�Z��u���\}V�E�R�g����������t:nO�����d������
q�Z����x?#�T����~sj�N����2�|���YI~&�~s=���o�@��Y� D ?�������z�c�_�
6����P;��hu|�T��e�]��aV%�qvy�<��m��WBU7b���7OF�������c�k�u���`��|��.F����]����r
�B�D{��;��Y����}���C���mV>j��z�A���v7BW{�F��E�x�5�������Nj��z��)�����������D���YI�&�.��B����u���.���O�����^F���J���&(�C�=��f������~@�_�����@��,�u���}�x|v���x��>�����s��z|�k�-������fR�LV-�ofXGi��b���Mh;����	��	����[�	�v�����f��q:3D�%}���Az0��2s;=����Y��Q��~K����mi_rbfv=H�P}#��� �,�CKW�IE(rj�:H�n�A����!,��	�!U!p�
t��	N<�&��
��B��h����h�4?O! �.�(f��,G��%�b�{��B��F��D*�e05E�_8+�K�)J��IDu%@m�)|�!���.Z�����\~%�Q���m��J�O�m��k�}_�I�k�b��n�GiKdQxL[� ��3�<��s;�����2����������\1��]���Kc�m�}:D-���~�.�]�������M���O�Q�������K����5�����J�"��7)�'�$�c���(�~��l���Ct'6��A�xSo7N&��j{j�z�vF)�&��	��!�p/�����b�W��QC��x������W��GA���#-�f%���kC�h�x�"����c�x�������Bt�/e,C�$����D�e��^�����Q���&H�����]�~#Z��������$����W}�N2��po������me`2��&#('v�
�8����NF�����ej����55B
m<��{���(��0#LN�ds�X�b�Tq�D���yU~�<�*S����T#�"�����O*j`>7�28	n�hx-=�}6=� �[z�'Y��q��gqh��k��R�'�l����4�M�4�b��$����+�������3
��r���j�>���f�>��H+v>��O�7O�����R�g��(6��3)��w����\�)���R�g��(���S�e:�L�@>�bS�<�bS-=�b?���@�
-=�b���������y*��-=�b?���D���fWl������Y������bx[�p�����������i�+������WCK�1e�jn3�@>�bcn�J�qKO���%�'Ql��@����wGy��$����J���!���qZ�r�'���-�t��(��h�������<�*\R�'�Y��.R�P�TE��$CCHh�\�����G4Cu��Z��Cu\L!��e}*,��$`�(<IC�X��!���D�-]C�
=�	7$T����[J��J`�mD�L�%S����	���7�v�����<���G��nh�Q��x�m��|��\��m
�����7�n�_uv����{i�L��<�1�tI7���?�������J3��K2*qf�.!���K~{��=�1�$��
�p��'eLM�)2--=�T��u� �z8p#��p�?.���L�P�6<�U�<lmj������}���gS
m
�Af���JF;F��q�HCWdS���z���a3�C��mj(�
<���N�K�,.�)��]���'��'�
m�*����-b$�ih�L�E�j`�����6E��,X\�����ch����c{:�����i�No�{�^��$�bF�Z����./@��
�����>I(/R��oZ��Z��h�����I�������8����W��lAi��O�����,��%4O�Ms��l	'�3J#�[�z/pJ [*q�#��%�O�<G��,��vJ2�5v�=�%b�#��P�h9jyI��(9e�W��{���O9�����W_G����t��O�����%�!���%�+���������o�����fNL����O��tm�*�2���L��������U���9T��URo1������E��k+}��}If�EY2\00��P<�R\��p\�p�����p���-aXT�f��,*d�����w�������u?�f/t�9E}	
Y,�/�QGw���h���$�H��o��,�y�<�o7�Qb�w�#����D$���r�CY���jY������T�MDQ_G�����
z�����g���7{Yv������M����G��t�S�19��v��s�T�~�]h<���z�(x��
{�Ng����}��c����T�=�M�R?v�N���Sae�����RZ�
�E��$:y�
�8���O�����H��mD;��v�WQ=uM��\��K���q�3�(C�x�u~�v��9��dY��b^�����8� ��nv�e
��W�����h��}j��}�zw��[�z� �U�T1*Y�i��IZ���j�������j����R��|�����x2]��%��a�<����W7]��I��������s���p�ED�E�.�)I���N�!��P�2�-�F�m��sva���e��InWP{��c�w����Y��i�J��B�m���8�V����E0�z��p�4*>	K�����J�qK���i���!�����S�i �s��v�d����2������+�������4���Q(Wd\^�����~��a�������M,���/�*��R�_�v��0�F@���X���|U�C�N����a#�nN�y�(�e�������~CP��9F_��W����++��r�,A�����3.=e��U{�WW�R/��E���u���?5���o����X�
��I�/�����=����z��i�����Ki��~��M^�%� �?=n����3��w��&����4��+�R~����B{7(<�Z��<�'h��F4�$�0���c���a;I������9����	��+}$��JN���*l#E�����\7w��Rtj��e'Rz��A�f��{�>D���]-\�����x��gb���7B���{Y�=��G��Dz���
;�[�R�����+�J�ye�~�Y��� ��'
��D�����x���/�:	{��N���w�����������S�����!(_��5vM���^����_�r0��v��yT_c�����������Q�d�����4�J��+9F��i5\b%�t����!���]��^�{|G�8����'��~����������5Y��������S1��
��M�����u���7��t b>?��������|�Fv�8B�k1���f�>�����\~=+6_#�v�0�9�����?&���x^N�&���OMs��Y�����k����u���V�
e�������������2T���5�C���~K��(�A��������:Rw��Z��&��}������^U�����|��?���~7�v����������t�F�����W���^}(��
�����x��^�������G�<<;6�����.JE:R��z�����?��}R�b���*q�������k� �J4Kq���N�G`\�G��?����P<��@<������>l��c�?k���w�`��{y��Dx��sh�����T����R}N� �n��������~���G��dq�i�}���ps�W���K���2��w�	iz�i��F^�w�t�2��F���^���{`�� Me4��V��d�?������Z��E��MNi�r�5|lN������z��W����qR4t����$����o�"��}��c��4�m��1H�.�D�4I����A�%�W��K�j���j�&�*����������7�6�e���z�9E�_N=�o�1zr]�
�g�5G�>\o�/����P�4|D}���
-�"����~�_"������$������W�p:��(W��������9��N�/wb&X��}M�LLj���"���
�x�?����D�IR�&���\$n����Mg����c.n�n
�.��y�\``�����Ih��S��jy��\ad��&^b���f��3,�v��a�e�ub�k�������0�V������XF�d�TF�H(�<(�dks5).W6�����FKi�������������.|�N|�)>���j�,�V�82�4O���.d�y�{�m,/����t��]�e�������axzI��3�KL�1�A���8�R��)1�36�aFp�6DS�lW������?,��(�S=�N�i���]���L���J����M�3��nZ�iJ�caI�7�c�^�?��Q,zd�>z��l7]��K����%|r�4 �EX������ov��ua�ms������f_%���ut������t���b�>_a�?<v�/����L�:
��.t�l=�n��_���X���C7l���V>;����r��[�%��}r��AL+C��RP�\�����' �[����~�R�k�u���I:E�����H���+�j��t�X!�3���u��sue�5b���&as�Y�?���fej�ZG���i���2I�]r/�x���m�v��3,A��f%����M��y+8�6fpH��Y	�A"'K�wJd���f'F'm)cS��V�S%��d�:�y�����S��k
>	\*�Q�=�)d*~QQ>Z��u����w��'�BW�l:�2�/X""
P���
D���������6��m}4��6�j��K>�1�cM�e�%Kk�c�B��b
�+�AT�b���;���{5����L�x�V����QCx���]�o���h
[yK=7�l
�'IB_��1��.�Hd�;�S�������xo�MB���k3,;`�e�v�4���m#�=2ac�[���x1��'!�
f����*�N$��E����]��������
�t<C��U�����������@:���i�|���0u	�=��;�cXU�9uu����0	��74T�om�9��U��yu(g�m/)����U/F89�I�`�y�9||4Y��H��9{V�B&,�2���7�mP�$���&���46��)lHw��w�~F��cES�DL #�w���1����g�����c�������i��c�F�r��:Nyl��<���/
��>�/��g���G���)��$��i����&��n2B�n���	�OP�vC'�3b��	�4o�TH�8��y��o��w����+����hA������I���1b3�=z�c�`���O�2�}�R4a�&�	�]�M�������Q,�k���1�5Q�7���h�+��~��9��n�������%����4��8����BM�lQ�'��2���F��t�D��1M)_D����t��J����
Ku��~��M��J���i���L����6
��n3so35�;����M�I�Y(�0��6����
k��h�K���6I��p���9��M�jH�C�7~M�Z��!q�h������t�D�5s�mD����t�t��h�?v��0�
�)7�ac����i!�"�]+c"
i����g��.0�+���J������v����1.9���u<	s�IfUr��0��)�C���(OO����"�5e0�v�����y;n���'��+�y�f6�
��iyi<qE���B�V����JG�e�V85�66�Bt�P�6k<�B4;n�O�\�s,��[���9Kk��	����)\�jfH��Ek>��b�} v�kp�&Y���m��R�z�ZxCX�m��m�a�i���XB-:�1^Z*2��2:�������k�*��i��{��� ��K��Vf��_���_��)��
����
�v����te��e��n�+�6���H=_����l�
q
���i�����N�� D;���W��o������h��v��>9�����%4!KG�� Fm-�n���3��n���A����C�/��9��>W44"GR'���A|2d��+/i�2��G���q��!OY0K*��:�Qt�q�Af������������"C�������W�����w?�8�g��A}�m������qs��T��O������G������}s�P�^�Y_W�U���X��/�f;<�s�����?�s��Th��#
����y�*_c���o_{�����R�l+/C���	��al�
-`l��N�ZVB�0w�_,������h�h�r&�U����=�����{����<�m���<��1[�cpuu\cicb61�t��/��7����k(\��{#��:�*��?�5N��_��<13��aKh�d�|�q�/�B��S?.�0\f�3�S}u�J�xOm�<��tC'��^e^����3���48�5&��z1x�
������,��f����8�W�����.��T�
�CeW��B�BC�1�t�O�{2�������3���qIY ��2>n"�^Glg���u����>�]�>\��/�'p�l��f,���-�(S�l�"6��Q�e�l�\����<��	���Q��S�6G���e�]�<�����������t�YM���f��a�v���|��E}lw�_�
>��,'���KC��@�9���pl0�w�v������^9`P;�������������U�=;��,�!���)1�5r@�24��u�����:0���� S<�
���\�,H+�F�/��t��^Cm��=��kq�����I*�^��
!)Wv*}����������7���#dn�#�K��>�7
E��8��_�^�2����o$���n��X*�H�����H��Bb_,�h����G:O�O���2�'<-`���@����5���������:�+8#vr������s]a��j�W9IE�l>Oxl�{����r������n���SG���O�b��J[�l���6?<Y�����5���b]�g^��f>���uCU�����Tw2�~�a	_���������q�����>��s�1p4�~lb���DPm���,�a��[���Z�l68����d��/"��;�~��)�{��<�_�M��,���/w3�����i^��gh���lN�W�'@b���l�h��9�|�������B�����M�f0Ly~�~�o�V��x����'����3���)�@T��7S��������6TL��lP���M4L�Q�����T�<U�;�a &/����w�h�&�\�F����R�����D�whO����|�_L�W����9n��)����������U9��@"��$�������
����/f�ef>��yCv��w
�[���2����^���3wi0(�c��ScK}��	c�e�tvJW�8
�GQ���k�������`��gG����D��A ,����\�]-]}��������F~R8�\&��~}4a�Q�Y�4��
�{��}�yV!SOW�Zl�[�:���23%d�y�qd�lp*��9��1p�w<����pvt��e����V��ur�Q�4�x�������tr�G���(�W����7�Dj�yF��Fkt�'v�����(������@z0Jdc�9�M�0�/�	���FE����;EY���?�{Q3������(6��/��r�1�_�������"�P���hr�+k����~��~���!|������0D�����!n�m�����Z5�2 ���[rdb�4��m��s�"�c�D��hDX��N���S�O�s�
�lS}�
u�9��f���78��9�A�� ������=����
�R�L����K�����L���9t���6@(�,�DZ�/��=(e+H7}h��3;�9l�������$)T"�$�b���l�9u�~%�e��kj���s*(�N�Ni�3
�V}�
���p��2K8��
�����g1�,fp�A��zy�/�3�������u�:!�o������t3�0a�I�)y';��sriHt�`�R��XCS;��|Co�_��s0��`"su�|���g���/^r�Z&���-]c��'�P�0�sE��~������v�?8M����dB�	�?��E��uU
�LD�G��k��$�7���+���m��������z�S��#����{=�x�?�>e�B�(��(O�t�$0O7��'����yR"����Y`��<5���
wp�J����������I��G�@�fz���dP�B?aaF��sz���d���#O���(�w��[U��&^{_��.���& ��'A��
9"�y�����`FM���;�-�g`�K�5GR��9W��L�h�Ll��Txl�Zf>��"������R���\�g�1q�TQL<�B
dP<�}	�t>&�
����L�=V���YB�T3�5�[��}AQ����^5U>�w#��S��K'�=(����)���(���8��C����I�a��)��D������mw�W��`���
�"���?�BPQ��\C�Q��\#C���Xc
X�A��Hbj.AR���?�K������7p��H�h
��xe^`l���VzsGx���F��WZ�wo��V����C;EH-o^��U=�����A�Y&�Y�g����,�������n�G9z�UV���AJ��Vr��"r[���x�h�u����|/`�h�.�:{��f�`�pj���:��	���h�p�y��:�37}Y.)�����;�u.�9Tn���k�_���gA�g�K���g}��Ds�8������x�i�A9P|���NE83i_u��\2���w�B��B^��W%QzW���6�{*����]3`�~����j�=I/1��}��=�.
W)L<��29��-���(I���q��+����"���5s_���(QG�l��9%�G<1���+(+�N�c&,����x�k�x)����"��U��c���E;c�B:�	S�DU�J�P�4w��&��b���������"
p��tS�];g�4�{��q��;m)���e�Bm���O�}Q��Yi�%bom����K�]����yYn��bn;�1<�E_�sW�4RE����D��������
��^�=jE�w��`Q�S�&:�-�T}�4��O9b��
Z=��z2�V���8>������Z'S�N�k(O�
�$@BP�A�[bY����;3��&�)�z�
��~~�N]��/�	�$���H�}�b,m�m0�" ���/�����.�u&#���1�*B����s^S��)#��O|8�_�������_��H��x�������L��~���E��pg����.(EsU�]m��9kR�j���m#���C���O�p�����c`oFkrL���'�8����d�uF�����6��eb��`t�*��,S6jv�L�\�J��
z�m�\�;�g����2�/}z-b���<�^��N�E�h�
�=�(�l�gX��&�z-��A��D��i�n1M0���&�p�������0M�~:�#�3��Z������Up���b�*�J��J�����SP�-��9�Fc��]CS]N�'w8?�H�<:p7�g����z�J,�2X:����������������Q����3��f�X���]���sA�����c<�"6Sls����s���f�����'k�MB�f%o3Z��`y]��'������=��
�4��z�IL��V�dsF�J��Z"O���&�NQ����3xy\���Stl���Q�� �9m���hU���S���������a	�a������lBP��G���s>�`\���w�
��
������fcU���l���������L�NU�4��
��}7���'��?�p�_��O��w�9�2_�L��j�p��m���9�U�_��d��_��#2�����&Juq�z�8�W�3m�������9�?~��:��s;��S������D�"�m���LBur�&�=t��gx�E��$*c����cA�=,��CiX�
/C�v�g���]b�F��q�����X��3�=�sVs�<�}~?��@:9>p<�b�|�`6+��q|�@gR����`68����d������\�W�=�#.:�5p7�A�=#��9��&���
'|��*��d0���,�s�=�&�ct�vdzN�f����Dd� ��W�S����z;�%@q���jL���P�=���C�A��!N�Q������w�\�a�dT��
Qo����DG�
p
*Ho��R� �w
RN�P��:�U��N����O�5���)�V~Fp�)��oPe���>���=K�.Jq`��w]Qn��6����9�d	��������U<����K%�N��hs8�C��0n��fs��C��*��9��d�*��� lN�x�7�T2(����3�{tQ��is�{��9%8X���H\-:�N�S�V���X�na,s$~���$����J���� u�|��X�fwJ�*����� u9C������;�m��Sso&�m�#L)����Tt��n?Rub�w[=�U�����yA����N}��>���	K�?mky���c�
��Q���^4��k����=F�M�k��fu��Utu��>E���"/�^�c����S�����3������}(Q��x��]V�t��p�s�W#O������<�]���j�Q����Ga�m ��K�5L�\��D����U�[�&��F�f��z.~�4�fR!QAE	���Y#����6dG�����2��
�<<PB�
��U�P�tP���)�%�B�6I!���������D�}9�k�Y��{�I��{�������b�#o/�X��u��\�~#�0��\,�vJpi�S���������CJ��T�/����[��'����Whg������J�]�\��Lclm��
�����
4:�����i������ey��]j����t������vz��DP.
���]voF`,mdW#-�!���!u��-�3�Ry��,���x��4�@�lB{SJz��7��h	�b�w����nt����&�������MD#��d�SCE2����T�����x���.�Atj�w����R������A�����8�B������m�
���n�wb��������p]����?Y�F��2�������=�����_��Z����Fp�a��s2��:+c ����\��_F��&�����w]S{��gl,����5�<��F~�)O@G�A,��hd\��<����DJL��,j'�t�x4R�:�F"�P-�$�������V"��=�H"�U-�����1�5F�XK���=�c�/�y��u{q��!��xh����b`+���n��r����K�$Th�b��T`R�IOV~��,��c>����`O������'�e%��.����V�`���e�j�;2n)������
����\���%oqVre�d���*Y}ys�����x��|��U<�Z��i|�"vB��ebW�<+Co�q��Ea���\������8�Hd_���
��[��!���2$����b� w&O�F��ij|/"���,Y��s����.I)��,,C�Z�	��:/�����������iv	��N��/o��X������)v	��.S�/s���9\��^�`�8��r���%�m�s:���[����a<�,��h�l��r1��_����D����g;<�Ko��"<���D��=78�t���=��4mVG����T��p�t���"Au8*L �S��pL�G8��4��P�W)���D�pe�/�gMP�w0��>�_5K���."WkLcP{9�KT����&�#:� ��V��PD��Jg%�>�\pg���"�����U�u��%-p����{>u�"p4N*�rL)\��!�x=�|rL��;7��L���4�Y���#��8�H�#���ET���v���MMo ��=�������^�<������������kvvO,^�(�#�;sTJ�^m�K�/iZ��$�f'wz�TA',���=L����V|z�}�\����r����d�B
���B���_�-���Uu���dV-���`��"��`�
'}�O�v��OI��R���Vu�SR���T��L�T�S�����;U��J�Q����HW����C���d���K00��Yh��^�IAJ����������[
��S:a����jy���r\�������H���Z����,��C�J
,����.���`G��}��-�96�]
3@���U�0����~��,f����kw@��7M?.����0���H�q���S��ztz=i]�$)Kd������(�'B��s�C7��Y�)�
�
�[w�
}!,��:����sZ�2d�.�_�c'��Z���f��a�.�m�ow�=����L�B8��!�h�(��{)2Yr�M�xQ��->�{SY��a���$�Q�KP���}�_�������E�J�n3A8X5�2� ��lJ����Dg�z�B�@p|�m��� 5~������)�t������Z�-���s8���y�o�����%��\�8!,���9�v�	����s����W7��S!t�p`|����oa;6����8� Zb���=�[����I������,���,�����z,�fg�Xb�f3��Kl�T�
��.��1:K"9�vc���8�z3H%b���3<���>@��]_��&�!NW��:��������5�/������n����]ov�QL�'��:���9��8�z3N��bT-n`|�U��~2X�<�b��o�Q:��l���@'�5��[�p=�x��\��,[�<��!��H,�4�8�-������XS�h����|�<{���<�ab��@0<�=��y��!����?�3X��N�����4R�����<��l����H>" (�>#�L�N���a�`f�c )DAA�o^m������U���x�)�&��"nV��=t�����R�"*1>2��K�=�5��u�p��^����.��EW�����If�c���p�b�;y��m2��@o�	�7F���=�gPe&� ��������:�����e���+y:1�g��za���A��x�������9��<x�%�g�*��|�zi�g�� ���gPe��A��rHy�$�����A���Ky�������A:�g��5��{�B��3H��|�<�����g�����]�P�~<�
x���t�w����+�cp��|Z���zL�8���������%�n~�� ��OMbO��@�q+�7'�0�B��'���|��]�$F�k�5��F���G�`S2\��\��e��lb;�����N�� ��
��2�{D�p
=��tN�8����T�g����?�4�c�;�
�zXM%��	��UBY���>�vy�����Q!�J�{bm�#�n����Z�'��}yn�	���,Cg���"���=�.,�Cz%�\{b^]^��v!�f�%�`3�D���T�!�7������9������1�#}���8�pm����eOJ�eR�c�0���l���I�gR�q���I�woB%��)��Q�1T�&s$y0OD/R���1?_#[:��\�����\��Jg��	��L�hSG��������u�Y��U���&t������b)�_2����0ARG�������N$�]&����|���,
��X�20R��r�.x2�i	a����^�������%�Kj&G����9��t�i��sjG������4p�f��������9'��v^B��&p��re~��D;z�o��8�����"�|��������s��B�Nm�$�HI����FH�nC���Y�{y?�p����O�u�u��y��<Z���z����Y�GA���wr����O�^g����f�\QA-u&w��&�KI�zr%w=�������m)�P��(A}a���d�]6T
<�!*����q��r�y��^H\��{�e�z���+���f�I]���@�o�&�T�9u_���W7W�|�5�:��Y0����@{�.�E-f>q2�7��!7	)� ����	Vg��:���o8EK�D�
�����Kj����"'��][2�������5|��(d��>\3����q��"��e�'��u}�����
j��u�(�����}s�`D_:�7��������������j���J��`+�9�����%T>3;_�������0��X�Y�A�/�2(g�����L���A���Z�q���ser1��g�IwbN���`��f��(�mdI6�{��gA������t<����������'�:�e���2����f����Wxqu #c;!�V|�oa���/�!i��o��A����@�DK4A���$��!	���-�y���� =�A�b�9u�~�����kjw��sh�Ce9J~��;P��f�<�n��J�_OX�O��.�@����MLd��q����i����l��a�nu��]��^�Gu�$���K1���L=J����
��=*uSZ��C)�)`u��M�RA���Rx%�L���S �s�_Z$���{>!�!�;������2{j�I�>A���Q�'aG����)]������C}���[���W��	��'��4�Qw.�b��z�����7�
�#BE������7?�����������)�bu%��6+���>��Vy `:�)\�T�G�v�z�Cw#�.�e8
�7�/F���Me3h�6N��O���V+a,��6�����f%���&bn	b�����1���i��(
��P��(�EyEa�{j{:w2�G�H/�aT$=�'�����;u��&b(5�Pd��s��Y�C*�m�mO��
J���W��~C�%<�XjDlR�&IUw��K���6B��Uc3��%j���*�	����&��1P��q��`�����bZ�xv�D�������(���aK��r�������{L]�/s�!@*?����Ss��M$�%
��T���f�W0�%c�k��������a�]�`�@��C�����L��`@)��w��S��^���6��������)q�@��c��tK,!*���Z�����xg���
\g���F&��S7����k������AYr@y4��7p\��4�`����f�6m|y3�=�8�7�M�w������'�;�M�F�����`��)��M$���Dc�Lw��y
'��P*�W����c��gO�D��������c�������K��+bC��%������������$���������S�}84���S*�Ta��hBR	U""A%"v��^���L�C�sH��'h��a�g����g���M�V�����&s���g��aHPA���$M��A��K��'(������H���@�sN�HP�������1���n�w�S#!���s;�~�*~]�S�38b�?�W��t5����"�
�hIR�%t'�	j�h.��d���n�g��]�4��#���T�j��#�#�U�l���N���Y�#��7f1t:��3>�c[�<�@�x����������N�������"��=�������U���~�(���f���g����:����A�>�����7��L�yFX(bNNzd��L�L�DM�i� I�L�����7����~F�>��+�S����E_#�o7u�������5%��@�m}9�R��.H�qR�s�	:��o�w�����48�������Z������������d,��Y���T�xdq����02g)��6U]�4��=�Rz�42c)��/��DG������^�=���7�T�7�p>[-�%�&�9	�+�a��dv�Jl��-#���B���#W�/s��-�q������]�;�������z<�Hm�>��l=��=��:�*���)(��W���������$��C�K�'"������4k���{�5m$Z_fKb	/YM�
N�-�nQa����\�r���Zq�2��$\��BX�z���^�O,bhg�����t���c�����'v�����M�;����������in�M�&"��:�[�L��&1^fd�#��ovh�=1����������\���<n��6I3j(�����j�6��t��v�7Ts�;��m_����jp����2CS�����z�N"M���|��|��=�h��?v���5��T-��)���NQ`Ulm^���ji�����.U�fv���������V��f����K"���/_�^��T��3�4����`��k�7?�����~)�_{����E���f����j�s��)��
&KT������3&��z��+�w�ye�E�i���B�#��yw�-<���3s�/��8.�����q��g��}i�DHb~�;T��r���x�����	O��5���~J"��/��8��@I���g�[��r���	�����WL&���K�#�UI��������=�G�?�E�l�fKZ
�
�y�"�b���:vk�6b�~T3�\����������!F1�'(�����l��%K���3�u�>��c����5Uqe*�}Z\�.t�tqe�1@��� �������.�L����fB�	*F��K
<�d�-�ZP�)o�mB+]l��Q&��c��i�%�����Y ,e���>&����dP��
�@f"�4FA���W4_M!�.������E;��^����Nw8���"d����4q��^Hm�u�1�j���]{/$��>�����)Na,�2N���#��s^&N�;Zx�m"c��MlsFQ&f�t���1 r��\	J����[��u��'��3')a�@���<2R�G~(:���e�n����(v^���m��<d���-+E7�-�,/W�3U$��ra�)F�l�B�
[�����/�Xw��0��2q�m�9���uP���cX�
��'�kZ������mF�Y���-!��H����p�N#�,�i���i$�i��+n6�����ly��F���
)����d��~c���~c�{���m9��j[���[�y�w�f1��U��JV�#tR5����s����}0��s	�YD�
�d����eAP�\�����N!��5e~8�L�b"�&A��B�5��hIX�\Q�\	2���k�$��LpYI�JL��'(�Rv����J��s�&&:)�y���M����>��h"���<O�$X�����I3������	�\3�O�<S:j3�j���c��Q3�������kj�XWz�E3������k1��5sl(@���g
M��b�f���f��Cf�b���2z��$��C]&$1}�ls�0�7� �P�h�=�\&)���BH��� d�u�u��t"�������d�y�4�:���`	O55A:{��E�3h��zgKN�������3y#�nK
����t��3�$��-9A�:r�	j�u�9Azap��n�7b�������z�.�����J`7Aq��}\��*�zBOPz���3y�"	��O��t&��N�������5�:����{zap��V:�b�����	��'j��A�k��O��tM���z��sK�AR�u����H��g��R��|���/�_���UJ�R,���L��^�F�3��xU��C��!J����Ro(��
bs�;��`A�>}O�p�Q��k���D������8����!��C�=�q
4�'qY���[\�
��5n��I���'r��w����/�mB��u.qh�GAHB��I� Lh~L�<����=
��B�xhl�E��j�b��>��@�IDn�a�����6r��S_OLri�"�5�����ys�E�������/=������B����
�G9FG������X
�A����L�`���
�&:!�R�����c�DL|��B��&�z6#�B-�%�c�����������������Y
]{�`5,������~�&FF5,}	)Q�����CAnr������4o�1�<���>���R�*K
H��\����9���~}��z��{���cU"����SV��/i�7�I��{�l��>�s`q���aI���B��)C�0lB[��!�3�pI[�y������I�������x;uk���-
!0�-��n5��1��b,��2V�yM����%4a
-�z����
�:�q*���I����CMr�g����$�m�/h�����E�+��`Vh1��4��PjL�k��P�d3���N�<�(;"}��g�C]5���'�f(Hk���x�|6:H�����g�<����b��Ip�Y��aL�[�Lra��8���:�+8�/��Z2Pl��?�������.hb3�������m���p������&v�r"��:���.�gX 8q &g"|j��9?�ck�9���UbW	!v��o��@ ��m�jOl�%��!:�E���y=���VT�v-@D��)w]�Q���Wij���B��Q;8*xp�������n��*R��0K����5T����a�n�����>G�/��]"8�D�=H�#�g�y]�����&y���(@e|�s8�������VK���93��1�?G����%*~A+PK��_�R����A����@�bS+����;�z����/�Z�PP���� ����������N:Q���&�{�jO�oo�jO�JK���(:a������;B��oj��B�X[����E�}~;P�����*
����M���py����������.����S�
������O�g}X2���H��|��7������|tv�,�[��Ng�%�x;TO�����g��F�ob��P�Be�G=�p��b~c&�.�.k�����V������U��q���-��'�9=����8���K����{"9+���5�v����=�����������#��+��sl,��8�H�Fa��\��o�`�����k���:��r�=���RzJ
l���r�����}��,����~e���������K��
�`�6�z�7l&O��y�����;{�
O N��c�v�v������
y��*����V��P_����y�%c7������x�i�	.����=��_���/�p)ft���a�'���+�(��;wVq�zlnnY�:F}2k�CV�C�O�2�������)���p���:�3�>=�E��)�=��w��*��6H��#J1�����CGDQ1���J�g�_�
\7V��J/
_f����q�kK��J�*�����'��,��#��T!q:IP6�%��-�v��A+���A�KU<�>qv+M�"=���V�9�Z{����QV���tq�4��3<2�t��#��>��Y���[���e�I���*�����#;	3#���I5(��D���yA�����:1r��u�A3������t=�J�.X�/P&���������x������������bE)��|,evZ*���J/��������V��������������}�xu��9��K����@�Y��Dt_�ma@�����yc��1�����)�1���<)�@*^9k3�����y}�t��������Z�}�x������'E���2�i\��+������o��������&�{�P��n����4X
����B�P��BB�:r���q[0���w��������seD�#o2� �v�^t�z	�2���5;r�ZG�^��b� d���D�%�6�Uy��������+���y���#�n��h��6bw�:P�K[qV��r�`���Y��m�T$������/@���l,^+�Z����J��c�
����4
r�VZ[��s���P��7�kWu!����x��,6�\e�7^o%g�o�YCpf^��8���YC������r�j��*6/V.������wZ����|`��]��I��u/��0u����=3��=��Ga\����� �%>�{������1���q)��@B�eC�DH�b&���x�%�N'{�h �]1�(�yE�HMx��Q�����BR��:��K'<��(�Tv������.����7G���<j��3}#u|���B-.e[��;�yz|��X����".��y�&_"#���!�iJ������|��X�����T
��6�h,��K��������W�����|��X��������
�����TQ��^R\����M������5��
Xyq��������vD�}�j%.���er�:--$f�m������?;A�	��r�C5���+.+;I��%��H&.��B���k5oQ�/u���0�'����[Rv�b��%e��8�6@w��E`C#����-�Wi�H���b�G8"m���QH���b4��#[y���Q��hN�~�������|���T�B��O$$f�� �^��Kt2�:-�:����;=�x���j���_�E,B��A�Me9{f��D&����[��P=�p�����K#I����/��@��qo`4�M'�g���;���P����7~�����5$D�~���m���~-	'���0����������9�[�*��~�U������=�l:1��k���Y������~e����c#�|EC/^z4����9L���z���y����2RN.���������Db��?�IU;�����E�3$&�#�F��xE#������^
=Bc-��!(-Og����wf�(t1cU-����������
��j��|����N���wwm��k)c����y���<������W�A^�<����_�@�����`�����|�������=�������^
���o��$�k15�Y����m���Y�'T���	�r������J-�
%5����=�Ap���c�2h�P���"|)&���K9��{�������T��,��z������ �������g&����%h�2-��[��s��Df�=������ko�������/�[��P�t2������lZ��-�����s�N�5=��+T
X"7����>��}��Y0�wo���s����]�����S����<+[f&�I���'�$g_yu�����SF���6/�e�Z~�����U�w�����S��9}��n�}B��`=�L�V�����|{�����?�J�Y�:�/E]��wZ~�bk{�Y��+���+���[
n=���Y
�n_���� �z����jhV�n��.�~Z2-=������Y=���Ya���=34\�
�$Hcp���v���	���$H7	��d~��%"��	*7 ED�^<vW��uU��L�Z$��L'3�V��ZM��J*����M�'���i8�����PD��D����~���t�:�k�b�3�!�I�9*���-e���;�>�%�
�d:�I�`D��?dEv���t`�c{�l�]��KE�5�R��9Y��^r����u�(����A����K��-�Dd"�;Q����(u��������(�,�e�U��"DC�)�MJ6��r�l������i��`o�����Z��"����1c�U}��t�k�%�\��p���_�c&n������b�G������%{�*��k�W���[�u{8���L$i���`����guV����}0�U�L�A���
���!�����	����GQ|����1�����_�%��_���}���#r] �Q7�����:HZIsNs�����Iq:�U��8=���-��H<�qGL�Y-JX�t�
b���qg���6���m���k�1�>-��w_��/x�����c��OX������l��@���u�����1O2�5�%�s���}�<��������U;�	�TG���3��
b�|�\��fKv�f����O+�;g%Ar�'��a�zb������dX���"��rf��<]A�NN7mk�E���qw�����������7���3S���#{m�N�e7(��v1_B�V6@�����3�l5��67�E����z}R�5�j���L���J���5Jy��/��\/�]���J$�Juv��bzP�o���|���B�(_��+f���K����laQY)�jN��V��e�b��7�Z�/�,@t������b����|��B��
���(���]A��&-
.K#�!d��^��R�eUl��%�W�x������1��V2����$�'�)�C&6���C��=�<�{���d��k��"�8�'[S{������(�`�c���
����m$���7�z�����~f��~���=��M}�</����}�F`ZT�_]m���Ni�����^r�>/2��y`|F��/���}�6��|�Y���c����_{������������~jI��/���W�S�UF�_t�?��>��j��-Ow$�����U��Kh}?t@z��j��8��-1�f�@�2(��-��D����~k�}U4@d	p9>�5
a�
&�����6Ki�����P3��z����C� ;;.8��y�6��*%���l
�ec�Y����i@,��vd{��'a����]S��c9���4��l3�p�N[ND�hE��(V(�C����I'��P1���n�k8I4(����B�0�,�
���r�,�ry=s�nd�Al�@K����p����=���`_t��h��a�	�:}��\��q�;b�0Z(K$~��A������[y��|1 hF)�������Lv�XVl��bX.�F�e�}Zk�`���yC��0�B�1�9b+N�A�4�;s��e���U���@$����5|��Ag<��~mi����6<|�h�/2���{1��0t�Rg��V
L
��vOb1T��r�i�v���L>c9Z�c������I��a�+���0@��'H90B_��X46�h��`mJ��-�{��C����%^h�a�C����2���
�0`�t*�!rY��*Y�����KI����@!{�_f�v3�e��v��IBI���l#���5	a���r��!��ct.���n|�2F?]S^�T���f�"�wf�B�`t����v����HK=b���|&�I��g� �S�!|� �V��.�]�>������/#���O�`dC`b�����B�'#9�	��L�����@�������e����x�
��h�@���N�G��<7B��]�=1�����my#��X��N
`������O#k�c�;u7�f�=���l��4s����%U�F���l'��A3��v'?�1%�3�;I2b���%6�!a=���#����T�� ��3k�6�F�v��DdO)e[��K�6����_f��=+��0�v�}��Y��|���Z���Z���I��������m}mx.31�g���(<+���iy*�z�q��{��ky���B� ����O<A�����{�����~����q���U�c!~=�6<��H����&����S~�E�qh+�������^'��I�KV/�bzL����$�rD���vi
+q���^�K�'����"�i��kvB�w-�/���HX���<���:�����.��N�������:NX�V�Dv���������GVD�G�������/�o�6�����X�de�������<aD���EV��{L�g^�}���/�{�	O|�Z_�����IS���"r��r��2XQ�H��y��e�Z�U=U���u4*f����Cu��L�`l�nc�O����y���N���^�����+��������a�$�����4���8q����E�����hz�?��cM��'�X�����k�y���>e����u_4����K��=��6������y_E�A���O�����y�p�z1��~_�	��!��S�3���yNV��o�������w�N�t����}��U]�����,��7O�������a<������_�����"}x�e�M��(M.��E��W�o���W����P���c���u�
��O����������Lu���eZ`z��������e�&�D ������<�P��[NY��K�#O����~-B�^w�M��}��Y6N?���.�.��e�����,b���M%�X!�����gVa<�|\�S�\X�Y-���{������sR�~�[���gUL��7.�O_S��$��E=�w��F��l�P�ng�0���O5\�f�AG
����`zg��/��	����q�XN���	��|
��	��
�q��#����m@3,
��O�Z1�����)`yI�a;0��5���(��9�V�v8��q<s\;�Q<�Yk�u��>���4&����8�;"RU�-�� =[�L1�~��h����axj-$�[PLO<;]�������
����m���4#p7�������F��'
��������h����G-�����>������Q!��N,W;��j�.Z�vFu4xU�L���&��jh�b����4�D��B��c{��<l��b���3�@L�gd��+7����V]~���0�6����N���a{����a:�;��������W�(��n|��1\���yx=�����xX	�����Q{?�A��A�=���
�G"C��y��P}�M3Q�q�0s��M���[���O��-=��<>��T#�pL���xl�����nO��s��3(*)��	�����'�m,�C=������S�n?�!�.��@����:��?R�0�����O����"+�T7���!��SVLY�7>�h��n���@�?UM�Pg���k��]���5-3����_^�wA#y�1�]�w�c�;����t*�x8-O��9q��7I�������~	�����iAd����@����#�r�N^7�53����F��2u./(��������?��gqURg���t�@3�g�3��x��M��'��;�	�����n��ru�Bk�h�<��H����6���
�j��������iT;��f[�N��Fs�h�i.g�G�`��������`<���a�\�'��/�k2�n�"k
���m��:��0�V��~X���b.l���0�9�6�s�r����^�����P�^��8�}�i��[�v�BWN������HX�����h
�Z��]���nh4��M�E8���G�.+���*��n�ftE��C_�7��2����8)niE�=h���_��8��l�,0�6�2�; ?0^8��4;����&�'>j���^������c�������	�	�0y6�����N_��@��J&�C�b6_�a�n����C(�i��G)�0��]��yx!���N��b@��g�0��@��)��*�;;(�oc%����a]���Kce��������BS�W���Y�z�EGn��K�n���2�X{�}�V�����|-H�>^.�{/�N��K5���/p�n}����:]�h@c(�(-~9u�R�p��������6H�@���@I������$�;?�����=:����Cs�\���\�r�4W�^�m&�7I;4?�H��C��'"��2�3$p�6 y��w���yEs�Q������uT�4����q��yE�&�+�+Zyu/�+Zz�	�W<���/�+�[��5�s���!9��������<�Q�4_x�X._h^f.�1{��"����n*<�����%hd��y-�`S�F�l��*(��<���"�S�p����6*8�'�L7Lc���&=�>�H�iQW�e6 �$��}h�������,�=::����C�ep��K2�%�2�@.�lR{�����PV���c5��"����z7���BNx�~���F���1a��#������\��c"�
9�p�	�CN�1�C��Y���x�n&��!$��U:6�7
����1��(���b<z��������\���g8c��Ns�7�J���1�Cz<�B��q� ��n� V\c��.��Par���]�^7g������FN%m-M�����i`3���x+'�Nt�g�z5������T=Hm>�<�V��
�G���hU�
^��t��nO��Q=p���T�o����PZ�3���l����Q�`�q�!��w<;��v��%u�I����5_b�|6#@���/1j>9���x
�
��:�}e��k4����/��[�m)Y�%�����gSf�(��%�=����u�l�k)�T$!��,B!0
�8�[M���;f���{�����4���%-"�SF	��[�:�7��|���� ����J>OE��A�V.�O5�DO�ea8���(&��B�EX)=���L�k�<[SU�<E��/�����B��:��-I���:o�
���GE5�F1k���$�7����m��A[�0aTH&�_��3 |�	���R�N���)�X�m��5"���T��n��4Y����Ny�����5�>������Z�����=��$��T��`:2�YIbb�6���r|O�N�Z�q��T���9J�x$����
6`��'}�����8h&r����7�'��&M����O��c����4���R�����y�<�	z/���	�XNmg9&�3���F6#���_M��t_�E	d'/-��@v�I�"�(�Wi���y��P��c#$�����!;�

��@v4����!;�

�O��Fk�~;=�� ����:e:������<Z����ky(h��E��*E�m����>��;�
�^�8Ihx��G�~��Q�|�W������M�b�����,��[�{7�� �IA0MJ����kF�Xg2_���3V�C���4�����>
���4N`��R���<�2cG�~��X����b|�o��E��x�������LZ�������h��eh�t��R��A�/���+��%��
[��
 �t��]�h���l��
��N�7���
_T��P���������
q����������:I_�&�<���WL�������q����q���q%�]�����8.���=1�����k��BLL:�q�&n����8�v��=�j�Pv��
��zm�jQ��Gpb�
���P$2����$2���:d4��-���� Sk�U��_H�v%�k��������������p^q]fhd��cq]ghdp�|w=��Z���������e����d����}�����T��?$������o����G�!�R�!pg�wT���E��@O:Yt!����`��$��&rN�Pp	�S���q�
�sr��������.�]@��]�;W�F�w�D#����cV�%�]i@���!�z�;r+jq��c�4^W���:�(��@-��>��k%���23���j�"q(W��6��<�w��B�8�p������!���g�\���wqi��Zl�gjw�}[�wW�b�1p��x�c��U���i��+���i��A���?84��9����{� \�3gj}�w�m ��2&J.������n�J&�b��#^G
p3z��qTIr��$U�w��q����;i�4Oz��33���a��lj������eR����)�I��H�����/��C ����OZ�(V�2"��`%�l�cU\�%���ic!�g;T���?�]P����
F�� 8��L
����(5p�����@�$�e$�s�0���t�b�������I&�A����(�r�MxI���N�y��z�{�pYI���[���l&8�Wm8�7U�������d������a%�bP�mmd���C�F���eK�7��l��l�z}�0����o['����B:�=F��]�^�.Bp��;w	m�Os"�`3!�}9I����Tr���[#�p����m7n�����Y�n<\-D�O�;���B������ �wcA����N�x�ZT����W�@�d����mmug,&e����V6Nf�l���<����f@�������5d��h5H��0q�n~�6$I��0q[���N�lFK��a��>�"Z�>���)+��M�e�f��9O`(
��R8���unh�-F#��4<PT�Q�����4��/9U�iD
�5&�H�8������J�)�w�'x�<@'���)�r@%UgO9Nt����B@^���/ �t(��,tC<���a=����/�/�O��_H�M���G��lo�u[�g���/��������� �At��/����N���Rw�4����r�����/�zy�W��E[�P��F��;�}6��9�+]-)��W�T���'i�V�](��bQ���jy��%n�:]g("�����|��B�f?$����>y����������N'���.����[$Ah	n+?����n)�5?�oGBl-������tc�w'���o�����k=�"���F�)]P�qY!�������M�S����[![��'/(�U�v�W�����
�z������.~�������f;���Co-�(�@2������(�(+���i��%$����E�����&S�����q<�P=��zj0B�,�iY��1=�&�$!j����C��#	�9�X���ID�`c�d������8t��&�al�������mp��u�O�1Qd}�(�����xK:�lQ��k�6l���������K����=Tv2�3k��gu��h���c�$��b��FV
���ux�]Z�:��r���������V?��S��{����}�q������eU���*�Ae���/%t���>[�7OS�}L\Rk��	J��y�����\����6����k`��p`+�B�:�����
��3,Mh����uZ ���X(X-A
k����4�0��-�I
k(�4���N�[��Vp������V�dC�o1���6���6Fc������c�"���B4*���uhT4K��P�.�C������� �D�$��(�5����4�����B9�����M���m����gqa����������N��t�"�,�72Q0�y>�ka[-����F�[o=��3����E�
�Q���D;C��0������d��Y���.���f0{��c�T��HMb�O��s'R��	P���!����M�
��!��R=U`#P���k�]������y";�����_���N{PF������zlC��;�����#H���r>#G�H!c:Y��=��D+to�;������QN����6U������RI����)�j����U��~4�H/�H����z������-�t�lN�u4�M����4�K�
�C,�����H5O���x��+��d^�����]���i�T	vz������D2Vc��7�c|�P�e>�c�-��p8���7L$��m��A<?���N��F�{b�.�e�"��g=��@/��)�������_�Z���C�����*��bO�N(�����y���'�4���(��20�FO�NR�*p�h��������sy5����G����h���%�������#�1�{�C�r(��0����n�i��'N��uE�I'Z��x�ZWD����F�����y��$`�'TdZ�0I�H:�-�����R:G�j.1����2H��
���p�lJb��A���az1��b5:TBM��AM��C�p����]RPac@�B�@��/��I�5
WY$���Y$U��YEwH2iY���}��M��<�Y[=^��,�/$�["oD�7/P�;�l�
L[+����q����(��K���4�RKt��og����S��r#�q��;���$�X��*��}����k���a�_�iEB6F3 h^/3M��\�>�g'�D[�~V�lI4�B��HZ��>�eZ�<��H��[��!��`t�5�~�V�����"��W�m�u����p�
���^phs-�Aj���5�����?��u�e-	i��
�m���wa�"�}��"?�mv��y��p������bCqh��
�
g�f�D[x0�bD���Z�4�	h�������#<Qy/G��&nUF�����LD��`�O��+�C�>z����������nLx@��	����G�X�%�[i;��q*�j�:���X��};�7P��$	��,�{�`����e#28�������!���Sy���j���BE)�,���"�-�K+�:>�Pa���e��E2�3�
�q6S�3�Vo���*�����O��u~a>d�L���������d��>4=�M����I6���%C\@1F)c����a`teu���9�#$�`�����"�q�
��qp��kC�
��(�_���
��8]i��x%^�^�����_p�l��4��1�������� JI��������=O��T�Q���������=�7��X�6�#��/Ez�b��/�b!�$�L�i]���_<<t7��+���-�9�j8����	��;.L���e�`L�������^e�������ve�Q�6��t=��n`��3:���w;ai1����k���O��|��:_������Z��!�1�=�=';����y��-,#�\2����dRxz/�����>��+-�~&��o��8�4@�� �Q|�4L�����'�������.y�<�����L�V#j�����y���>j/������A���{�VU�I�q!����<��'BDbs���z����\'������l�=���������H:����1����7�^u�W6����m��8�W�7�r�6L���p�	?y/�H����cV���f8cV��+cy�1�/��PU�P`���&u/���,��8�	�B��n����<�pr3I)�XK$k4*�k��&�hJ���r�z�e�^o�d����(�J`G$��J�6]'vF�U[W$v
l�B������/2~�	�H�d�"U��Z�M��~���'3�&�a���1A�K�|E���f�XQE�V���8H��_��`|j�>�J�}�d�!�"7�&�!���L���u��\K�Z�^��E���(��1��F�����4�0B��6�F:V����(��fL�7��Q�`
\D����i��a��(�q�8�u���
�88��
��]���^����{��'�Q/����-�B����O���[�v=�v������R�<��^_d���;,l���P!�>����VT]�Z��t%����.�L"-�v�4���H��|H�<�EbH\; ��gH\���Ad��B\��E��l"�g��P�[������X'�m+p��\�_T���!t�>�]�����Kt�!�]�_�(4���������P�B��^��"�/2�kw/0-OR85���]���pZ��b{5��7����\@��:�i4~yr����K�"�S�x�Z�g�=5;4�9�<+y�k%Q"&t��AWo�JYxb�>]��02���B�z��ga���1����#��������������D+�+	s~����d:.���s�&*q1���������A��su��Fe��C��
�y�8��d�v ��\�m>�R��DS���P{���7����oz��)���r�Dt��qu�8Je(�������lro��
ep���qT�L�q/��|4}�q$�~C|�7�
mQ~��MP���W�������E%�`���O��i��e����:o����)��q�5�-�C�#=�&���/��I�����8����s����<,��q7���)�5�D�8~kO)CP���c�?$��LcP|�(�i��`P�����@��=��1��@���p��Gx���uc�#��<�
�x��W����y�t�X�
�F�-n�`�m�t/k�����Q54a�l9�D�gU{q�W�D��G�-5��}3E*�tz#�6�����������2r*+ZN&�
&=�y�i�Wj���qp�-;�z��"���Ax ��I�X��5G�LN.WZ��u�/��������!�'�N!��6�NG�JQP�	�� E��
R\��h�p)
.�pt"n��A4=���K����"k3�]�����g�����h%���;��f���������5W3c����N�-��V�� >B�"DLx1"�Hgr�+D/F�3Ys�F��H���T����I5B*���f�������������V�I�"���tV\1��"P�)�g��`�\�����#���?�F%�^:���dG}�5���HD��S�>T%��vc����o'���p�fri�}A7��J��Z�-7�����Q�N^qk�"J��p1����i�� 2�Xd��	p�1�z7$���\<�NH�=Vu��l@:�<
(�.�K��e�������������'x��"��iI�-��9c���S�+�Z(	�Qu���l!������^�m����wvF!a��&35Y����A~��0��p	�������#@��`E������z�=�y��=�n�2����%�d�R8*��lJ�/.p�4=��9����q����_��'Hub���QFS�O���)��Y�a�����N�xF�j��P���.
�������U��=���9}~������������T�e�[R6�V!��44����j���I��CEYyhN�O���	�{����-!Q����S�$ �DL��wt�����0�D@��J��,��+8O�}z��j/%������'d��QB�����T��]���><�����\�2�����S�r��RT�N�����j��q�m��������U���{�����W����_�Gd�+c���rmU����W�:��C���Wys������
(��IWR�;����{�iV��I���w��1�\S�h4�� ��{��!�jHT����D��n	-���������P����Y�1���(���w���&��S�=�c��M�P����}�
�>�>'0�"C�V�@�
�A��f]]r��Q�@C$?�z�u$
�g�4A��"k���O��x� ��jL�x&7jj�S
�V����^s��P�^D�x������r�aQS���G��5o:�a]���@�Lu�!���c��xMd�i�����I����`��?���o�����@[<c�I�5������IGn�
����d�7I�{!\�E ������[�t���T�z�������A�m������v\+������Ee+%���`�S���Lz;f��1����j����>z�����	1�cgi���u�j�wz-�#�:z�������F��^h��/u���J�����z���b��,)n��������KA,+�����\���h�X,�v{Y�|�!�Y�d��m����KNd�6��1������X'�Z/�������>�!=��Ob�����P@c���-MPg�tO���WP��N_����S���bN����i���>.�&:���������I�P�=�v�.���m����\SQW�z2&�f)������E�TO��4�-�M7#���@v-iJZd��d�,=��l�%�V#?P��N��
��o��O/�T�Gq�r�Fa�:�L��q�cY0�0�E�R ���+�Un�}���7����&Ow��������,J6+���Q�����,9N�}���������H%5{yA9<dC��-���j��yHx�5D�%�]�
-<�����������_�u�k5,�-����Tf������a3������eg
����Yq��#7�-�lH�-7��(%����u|!�5�0L���V�������+���hvTE��)/���hl�N������yG�d0��b��4�A�mUwD�����h��}���+�#��{�����X]���np����)}j�%�"��_��U�>*~N�0��������G��������X���]	y
�S��6�b�7+�.9�c]i)S��[���u�wR��;�M����|�S�W�'<����OI�������^FJ��x}����3�����;����8����S�b���V�#T�R�(�L���mZ�T���G�Zf�P=��j�d���a�2����x]�����������p���������c�[�����������+��	���u���:�sb>�S� v�0���g,-9�Q�w�^G�R�<{��1@~��%[�m��T��������5y��P�5fF]*�Wi�61����@uy�Y"�mLqd�T�f������M4���}�67���nbSX�T��0BN��}&J11�"k-�)M%a�<e)�����U\�?'Z��B ��x�����A}����#��C.=76�2��<��;���������v���&���1-�s�8��|����"KU�PKB���6-�T<��u}I�����jzcd3� ��i"��b�*l�=����1������ls9���a�$E�4�����E`�7;�LEZc��As����������O��_��z'���8>S-/���-�ge��'�����m��yA4/����~�����)�=*`���(n��~07��h��y�����P��!��ig�\���Y�_�\
��g-���2��I0<�����=6�l���1����X�����~M��_��Y����N9ex��;|�����{��y(���������V��U#�!-�
� ?a�+2�bZ>k����v'l�j�����D�y�2F2BFnb��C���}d���Y=d-j}Qu>�^�hQ��FT=��6���,��}
�4��z~�F������6���+�!	t@JU�'p-������>�H/�����Y��[0�J�eT���e{\qrO�.1r��_��.�x>:|~���UEs[eyQ5}4n��UP���dK7���(�Q���M�^�2��l��5l�=�����K�mb�bT�_�qX-Fc%p�aX-�C�%�i1M���`7�p���~��1
�c	,����E?�al��f��d*h�Z��/
-V�����X�._cP$��R������99�76
F�����p�KF��B�/��,4P'��_���r�>���+[0�Q�w,�?�k<��Cl�J��&6���y1���G%�������������9t^��G�����>�'��i��B�T]T�0��:u�?�K��L�9��:)Co9:��wOl_Lp�o�F0��N��8�@�D����VI�j� ��#'��oP��U����1�V�MBN�#���2�!Z:ZD�l�B�d�C��t@��.�d�B����C^�]���u��CO�����^�*��>�f�(��7�u�
h1��G&��`�n`���W��&G��[�:���eY}xa�?W�B+':64G�)N����C�p�1G	�����&������6���XT�w��xJP&�r���.��p!
���&�^^dl�*��O�$�OV��X���4oxu�KV�m��%�/6������e���.�����jB���W���,����[�pX�k��L��)���k7k8���,����[xP�l�T�]��o��s*��(��f3���\�P2D���kX4�W���I�]����������)�&��p;! w|t�,���,"��U�1�������O�|�=���Wik�������7a@���]����&��+�����z�59@=]��E�����qE��s��OE{�$��d�E�����������|�h`�A��|x�~X�����W`���0>I���F��@^%H7���7�
�IlP�m�~�LD�%X��z���=��j.#KY���u� ���%)�r����v��������@@>bT�����=!U���������4����]�dL]{E������+��������Z��v�CP_�H�=�"2�H�0Mu�+��Zs�U�&�F�$	�`S�������o0�#���`�;n��'���T���*����JO���
A����R��VU�P����BN|�����x����w��������������R
rgq��<����a�����v'
N��r#^x/������b?�51�`8���1o<��]�{�%�c?���w�f#��0r�*���~E���y�����Y�l�/x����k����j�yjx���;����~dJ�}������������>
�����9��P��������64�;}�Cp.z�s~�S�������{�IUK�p5,�����k�p:��M�'yO`����4${�2�9Md��_��lav'�y� 4������s:
�g<$���n�Q�&��Lp���9�]�9�Z2���J���.��;�6�1E:X
�.��'op����rMP�I�ve�9�l�����eF�32
^���V%�y������o��r�;H�������9��������1��q�9�?V�Zb�~�J*F�%(����_|J���N�[�8 J��Bv�	�C�����!��`�Z�HlIqo/�9Y1���\0�8�m�	���1��TI2�#�H*�x�;,�a�X2FK�@E\�e$0&@!n9�pJ>"�=�����|�wz�K����JV��k:��pZr�.u����M�e�.)��F�h�	��q�����>9���eW���g�������^5��W7g3 �{���0�. �a��.���B���y��>c��\e���erO��u�����L��N_Y�X�o(z�1�"�v�h~u����H'W���C�x�Qc3o��9����}MH�jA�ZU�������LH�~�GE�E�\��i��������4�h��n�>R����"����M������`�w���J��-���n��UW
O\����ob<+5-��U��i2�`�${�"S#�q1�><��q]�Q�w�\�x\7[Q	��6}}P��G�*
��D����^�7�������Q�6Q��8(6Wn��| ��?���m��K���c����q(�{�x��:��q����P���@���9��^<yi�?�������"N���_��j�[eq.��)6������t�v-����>����KV_������!e�U��CDx���w^����������]
h�>���5�:H�h����������liW������������wkw5�m�j���q��iZ��=/�
g����lW�F�Qz��/��q�z���ph'�m@� B`������D��?�vq@*���?E���B������A��*�n�4��p;�q���S��.i�x��?�jJ��j�~�^����T^�*xE��m�D�5�����V#��[wi{��t�$���-5�Cuq����&;�]�|h���A��c����r��<����*>�44^J97I�1TI����I�U���s���zwY����9y���K��;~���u�<f��Nw�q��������>�|��<������%P$����K~���8qQI]�)j�g��G�Uto� �}�9���j��/3g	� H}�9K�=�����C��[����+�������l3�<�vx�c{��#���%r��%�hQ���.�V�!�.�V�[�]8u�r�*kU��5���qx�47����g��,{�v:,X%-)��y@�+�/����W�:}��8��C0������������[Lb���ikZ,�K��}c@e�����h�=��%Y�}kv=�����81p���3R�<1$;�m>��-��I�R�������-B�4�57���Re^BRE^�z>,U�����
m����=�� }2�c�����������SN��zhrf��u���)��1���������kNN�zhp�Ug)?��4��/��^(W���I|����9S���� ��:���-b�2��)�64��9��/1qj����M�����o��15��s?�C���#9�<\6�kp��O&�n+����}�����Gv�.�m��aG����}�����-#�_h��G�*��Ts���t�L����'��R:�'h���[5��r���*x�Fp���
���20>���z+G�z4E��}�����:tSS��6gHN>Rt�I�{n���)�5y���	o�[���U���WkN6I���E��b�u8�!`'CGa�u8����y%F���	~�z(�U\=����$������pp�3X��7�������kE�6}o��l�Mz���|S�M����123���������DL%:�4��Op::�$���[�������C
��1��8=_��uu��1�t���x	�s���x{��v��v�o���v�>�7�����,+��<c�^_)��wP���k�"2]%��x��<��qL0���{$ ���
�p=��vMGr�I`�i(��%��EG�:e;��D�+�����"�Z��
�u�Z��=���F�JoMo�������������As��$:����Ib�����B� ��p=����;D{�OL��J*��.o5��r�������P�4H�.='��=p���&0�r3�<5QqJ��JGT,��������{��
@��"gY�I	F�_��G��*kD����	��<>J
#�s4�,(5���P��0�f�&��o����o�|��_KY�0|����"&�d-��5��q!�q�e
oFL�oQ�aN��}������A����t?k��D��jI�����H�q��ys�N��IdH�6�y���R|�!���wC���y%�Q�$IwO^^��H�L��������Cp���������4Hlg���"��x���U���?_���{�~`J�7U������H�3����k��=�nxu���|=��G�j4��M�H������84���������3V���Hb����q�����"�5�#W������Od:"�7r�� ��^R%��k�M�1���Z?�!�eUb�G�98�n���{����B`�|D�-vK�d�A��8VW���7yk�=I����@������|����P�K�E��}�%U5_;�M�����#�@T�e�S�H�ZE��*�U��c��!�i�q���H_@�#1�(+D�=r�����H�e{dP���Z���/0�PC�O�2n �������������t��{lH�����S��o��F�t9%(+�����!����#����6�<�����!���h��7W��LV?(��GW��Lw����B-��|��]��w�������{?k�Y�>�>v�bMC7mQ��������
�NyZ
&�����2VI��MbqJQ�c&�����V���%`5{�h3V7����H
�4�Q@����5�M�i/d���J=�tU���H�d�4��_8���G�b�9�l�
^�"	�e�O��S�>�0{x���#w_Q�n��\������E�/���u�p�����������X��H��I/]����*(����<��t0y��k�[�
9T7�2e��Q�fX�
Gj���P�%��w*T�]#5?��,c����i��E�'Pv��_a8�6����F��z4���_z|�i���q<J�e��?k���r��G1�d�1s����`(�h�KZ%1��Ik�Tz��:�$���p�m7wbw_b*�~��$pc�m����/ym�6��^y�����>y�oQ����>yoNg^�������~��3��/�����S��1�	��^��?<����\����(C�.x������W�8���X�2����	p�\0�x8�:���M�������������@e���)B�z���^_�So`0MG�2�����B�&��MDyMR�QT7\���+.����<��t
�
�����T��A�������g�^������I����,�l��_���}��Pu�9�x<=Z+bfn������a��"�D��"��@9��������5���{�p����+�//��B�y�$�J�m���qm��O�Kz���q��}��M@�h��:n���p>���f��o���h�:���G�8
���|u�P�y�/�P�n�/c>�����g���4�>���m9q&�&Q��'�w��(��(�U�"�M��x������l�e���V=��P��{�[��Q����=��e�g��C���0��ak�sVV��bm��b���x�Iy�s����t���.Z��+��c����X��o���/�d��0{��1Fh� �BL]����O,h������Rj�����J����e�e�����������j�
H��\�n�W!wO2Q���.208k�u�=,�JUK��6q�1Q����#�=
������V�6�+2���v�K'*�P���$�g[������d�J15�y���&=s�	6�^���6�����'�W��!>���fO������o�h�n�K��nUe��c�G%rO5����{��������?VN�6�2�����v��=�X�������pL>��X����A�Y�T�H?)�3��s�o���|��� ������Ua"^�c������$�L��c������_��&�$Y��(���Mu��`�������L�����{aC�L�H�<�����������D���B��f ���3�
�
��=��uiN	6M�Au"�t����/f����$R����?��PN��H1��
��q���)u,��hm`�"���0Gx�{�*s\=�#��t�C�>+I�0f���V�C�84?Q�"5'{��|�=�qm�H���A]oG�"�ET~�>�>�K�6�E���f[O����C�-p�����+7Jf���$�x: �B��4������Gt���>3sT�������9������BW��E���?!��6Y}�������'�PG�0f��}qoDX��px�0K>���?9[��
/�
����g�/�J�w_Z�����|�=M0��eo-n\��cA��Hy&�iN�'��'��s���xEK3'�[K��	Z�Zb=�cPW���V	�����2������`,���:�'z{���%~������R\����aU�BoMA�kj~1�[���Dp����w?�����W�\���0��_�L�����N3���_�=?����hy`Wf���h��K����o��FE*�{�0�f���������?��?��hfn?�s�c��;/�������:(T~�CBw���U�#c@�����W������/��o�AhN���W6�d�g�������2��;BT��{_w�.k��8�j'�k&]K����9��	�����h;?��~����0�A��W������6�-C��$[ ����c�����/�������������o�����w��n�=��h�$;JUw�9o�f&���K�������"����N����c��!o���T�����s�Pw���,�%���
�~^����!�������~�������7�ar���u�|�v�����%�wmN�������Uv��i�Z���93`�fqgn�g= ��I0s��o����7���������'(p��~EA�
�1y���NU��(��r��;�?��I�
����m
���7o����oo����g�y������x&���}����c�aX�4�)�ASb-��x_�Yd�Sd_����o�/������
�P��S���b!K��B������v,-o�����{�������'�
�B;�������-��TK}�������b��5��(�7(�1�P6<-o'�4�N_�������?�Vg���Z�sk�q���l�����������
��*�T������n���W��
��(�12��k������t�������k�L��$I0%�l"��EiOPrL�AP����x�)��������Z	���X���I�n�t$���$�<�n0 �������{��H����Y������w�A{��O�C D�����`l5M�-m������43]����i2�&�����#X�I0 ���1�o���0�T<�Z���WJ�D��#@�&��
V�f���3)����C�.���>�S�V��pxjR.G �`|�����������VK�������^`��5=w^�������	DX����!��Fp�0����F0��QUBd,#���%��H���;uW%��x�@~�,���
�Xe���u����h#)e^���)�%�D��^�C�����b�N*�{c��kr��/��������Oya��Da(Ci2������f����t��)�0b��c��A9���-�'M�J�K>db���f�����f_�1M�f�i6z�V+��p�{N���T�������7�4����d�I0�!j�lA���*!$'��~�����/��W�1���=���:�eh�r'�����X�H$�hV����$�P�9�89or�S�N[-t@B�����!����BoI�U��Q�N�y-�K������PC/��d3iv-h�c8�i4�B��0"��O�Bw ?&�z��E��>�L* ��Q���5�kW8��
0��H���(�����K�]�����	u��Tl2[�*R�?�[��e�PJ%q,4o�AR��/�c=X-85{���Zpj%��f��1
��		�V�W�7Xh��F�j)���t.��Z����x�5?�h]KH�$a�=�ASR�'�vX[
_cn�3����!��\z(�5pC0�+�lO���yil~ykv�������Z���7�H�[��MX�{�b$��L�h�Jt�
[?��������nc����v�
w��L�c�������;	E2�s���IqP���������9�/"f4E�h��J��v�_������A����B�%�W�zGA��/h�p���_�,s���� ^���zz�<��k��vo���\vP=Q���^LJq�����p:��rOCN�����a��yw;R��3:7F���J�s�"��l�:CzwWg�s����7�"}�cT�ZT�A�L�>�6�X������Z��!�LN���
��q�����g�����y�7<�����S��::�-2�2N1�%q`FY��cfD������M/�W����O���X�����������H;������g@�%lp1����L�x�"1�&�b��r2����f��j3T(�����d�D��T��(�!wu�����T?>X3�>�������;�X���p������)����������	��$��I�/
1$�^}|N+2�Bg#���F��0,��gu��1���M��s������;LM�Ay�|~���}05���60������_]R�~�krQkZG����_^4������5h��7����P����T�����'xL&[�����)�-h��K�������I�i��I����Jb�E�9�������GA�t����p�;+4��h�x��p�\P7��A�ilY�\U�\6�XIt�~x�z�B��'�I�s^�<o��%���@�L��vd��\&'c��SLH�,M��#��x�[`���ldM�Ue�}o|}x���|�X\y,�8���LJ��� �Y�@&g��_���1���[���T�:b�+U����������3�������(dIx1�[G��R���m
��������8J�0G�4��L�b���.v�v���h�M���6q�����u�	�{G��H_4E��U�zu���^;��x��5�5�H2��}N'�EW�t�������XU��Ul���T'�-���p���zB����;�/���U���(���=������R��>�Af��E�G��_��KV��(�
�Q��^R��S!�_�q�����yl����������w�F��YF��.Tk�m����!��,UU�E�D��0C
 �[��U]�&J����M�J�q�}��u�|8A`h������wZ�C�?j�j��M`�Q����$	"*����^F��%6���YI3�MS�1��B�^^�/]�~��+�U�cY��ir�����wo��M���z|�1^S��6���w�7��XS�=���)*v�9Q����f�����YV���%��JT(:�����"�V]���2.�������'7��9�jf���D����H��f[��;r��� ��k����7T�4���w�.HE�?��D��0���V���ITWW�h�u�_^�����1�w�n����1+�%+�e~���di�X��TD)�k�lP����`X�o�[N]�i}C�Zo���o����o`j�������e�rs^��g��������t-���/>E���g��A�4�
�����l��&�w�	�-�"���E�I>Ti���)H�*�zH�
�A>Lo�>	�����,q��������v���(T���5jD���c[���)'�O�QA��t-��N_�����c��ds��P��7�(�|a�T����0���'��a%MV��i��x�2m�uZ��}U��sy���G��ET�%-����0�+��$�V����G��P1��,�xA	�p��	|'{*�(�r�,�����N�M�9�!v�a�h����6�P�����/�V0��`���<���&?�������u~
�OlS|fc��?������I�k��)�~C�������	Rq�/�����m1������AO�v{�?�<��"|���f�C|����/��+�W>���Q�bfq����|IDC3�zF����*#��:nht�3+	5j�d(��v+1 �l�R�	�-PJ�Y�� >�P�����������H��I1�TH�}�9N��DE4y�3_�>�Hw=��0^<�_��'�Q�e����>z�y�Vu����AB�R�������S�e!n\���<�'e�����E`�	���L+@�!t��$�A4�X��|����&pT���c-���=yUIE3���E��}��Y�cm���)}DSo(j#��I��Z7�:�a��u9�����`,dL��\�yy�}m������}�F0�n� ��Rzr��w����M��6��G�b�1����R;�������Z����=,��J���d#C]��k��M��/�������-q�&BF����R�O�J�����JQ:����s|���-���P;�Y
)��]�b~x��e7�ge�a%Y��
`%1���X��\3�����������8��F�����)
��Z�AI#���H;�X��0_��/�F��M��'[�+���1A���-���|d$�I�I��T�m6	�p-�9%�m�U9��_?]�V/��:��.�������O��~�	����������M������y\x�������Bx������c�27�mc��{2/���7�[h6��)����x��&�+�^�t����x�D��������3*��nIU"���i�K�{��5���q�R�>*	x@c`;�.��f�4?w�(���H�������yzb�WG)Z�%=���~"+~�����d�r������m���]ak^9=�����-B�w�����h�9���cz�W���5���UsV��%>�2�*+�3�����H
Lh�Op!��l�'��h2��w�-T�J������(�7[��afW������~�ul"a����B��RQ�����N�?Z����#��W����	�'/��s%�3N��O�_{��$>h�����f�	�j<Gk��j���������{#bxj^=0;��]�d��Z�S�{o9�rts,�w��!<�T�U��7��@�T>S�&��[g�H"��x�#S�<[�Z�����!���{|T�$�8�i������l��z���X�9�M��wT�K��t�����X�m�7��|M�h�z#B��&`�>��yH�����q������vDU�U������g����{f�7f�]%�HtQ�����w��/�@�ERuz&��\u�D�| �H��bE���v~��f���("�,��ac�ap���y�>�yN0�������#�a��c����^�������L����3�&\��Q��}�,���[��|v&���c�����/���7�k��'Y�E���6��
�����V1�mnCp0���>���)4��u��h�Wa�"�^$dE�0�����~U,�-�I����J������R��P�]�C!��������%��vc�z��3�=��t�P�!.�X�~g�c@�W���@����������0�����B�f=u������y���
�����q��c�G|�����BVJ�1
��l�J�ll����d�����@��&u�������{;���$�7��j���-�<�	�����SAa��Tzl=���B��XUt�N�����^��Q��Q�W��K����u)E��C]���\�jf7�e-�E��]_B~�%V�w���U]����	�����ry`F��AB�*����
��e��������W�Y��B��G5X��E�P���L��jx_�cPTkK��{�G_��G6s�h[�N�cS��a���9��3^�)�YM Y$�s98��A�=�*A�w�L�1Q^�`	*� 1�jf	&`d�;��-���W�������������u�`����/\Lh�#Ad�����
!c,B�j�?���[�]vy�q���kw��u7�;�����@@L�F��=��v�
*���[�lv��>t�t�����%]<�4o�D�L����`SM22�� �:���!'|_$����
Qh��t/5\�/8���W�{�&n�tw=����r6�;�<�c;^�����=���Z�r���h�G����K�f�M���0!g�
W6]��a���8&7���E�*;k��XL9��gt�{"D<���u��>�;�[����U��<�$��m�XT�cJ��Kc�>������Z��X-�owz��bO����kq��7�{�;*���Et�_�RYN�d�3��$�f���g�E�����9
������Z�O1�,�!N�=������
��?��w�y�^8�y�<eI~,N���^����g;\�f�!�������W��W�S��39sh(��J������k�%HF�p����V{U����������oYW����O;������x|�(Xr�4��m���$���f�J�������4���f��������9�����lVhx+.�}7]��B6;�Y7]P4+�v��tA��^j�M�f��8#hg`�Vg��f����HS�K�l��Sk{ix�9�m��������q��.���4$�����?P�f�^,�-+��`�^#k���h���c������Rk�-�G�Z%E�-�!Q��*)Z�5~��"�������J��f�<y�����
�[4%M*)Z�%�*)�I����YA%E���~)M*)�m�������p4P��\+E;z��_I��h�0nV����exKR�f�-9���K\�	u���z�[��q�oT��z������s�%��#�qzW���7���zt0@t����D<Q��}�������C	Hk�����`4��Y��Z����7��!>3���AI0Q��T����bNQFQ"PA���e	i����/�����D?7�M��
��r������{�~ �OQ��O�f���f�Pc2�jjaL%F��yLRLV$�
�G�O-
�����h�Y,���IA����C�"����`klE 
9 {X��i���~U�P�{k��)[�m*B�i��)��:�_g�m�@[A��dT�Qs��a�
'Ma�Y&�H�#d���!L)��i������2R�HK%��d���YC�Yf-eJ��#i{�(k�\��cl?��G��j�1�T�{�������/�i�g5����d?y)e���������!���y�8�DC�$���8�zN"5�y��[Y���:������,���#��@����i�WW�B��!S����L":�P����w�H|�����BT���9�q���Z��i���}�YI
1����,B��9�OiU�����T�A�������I'[�N����>�^v�����Y�`�,���F[����J����Z
F��z�6txJn��$?�I���z���^�����Nd����I1��,�&�Hm�4�	����:*�m^S�:�A3��o�2�c�W�	��A>n��6%H^��ztf.�K�r ����|�p/7\}�eIE,Z|jb���
{����y�1��X�^��)����BLO��&"\�#�D�e�����&����oP-���{j���)�3���)�v���%���sp�w6F$����g.x$j���p��b��#3
VB)9���8?KQ���Ak��y�����`^�SD���'
���CV�tfM��=5�-�8�*����1&�]�z���%S�����q~�3�9>��WV��������@^��;��y
F�N�RmD����bFxqN�j<�f���P�K��T����P�7�C,76�S��k#�#k�h3��io��s@�������F�s@��d�Zi���@+��c�����H���������r�n��S�4w����V��#|���[��	��X�4����{��Vp�*>����%)q��_E�|7��2�f��t�����]4o�?`g�����~K���X�b�~V'+���[�@X��-=-��J����UR�U���v��#
�-�����\��i%�D4�=�}�C@����=�������1'mq�Rh(>����KQ����w(0�5�J�u?_����B�������������T����[�T���S�79�R{������Y�C5����<�k�����1����+=��+q�N]�0y����v��,����q�ET���W�}e���e|]�|�O��Y�6��-�g��	�?����,��^����;e����^����h)GAf����,�J�������t��*T0H�*_��)��%?=e��B��o���s�5�����X��G�i��7�m��yZ����{"�cB$Y���?cU�q�p�����D��i����t��W��2f~�?�����4��D����:S���t�}�V���	���F�������dr,�*>�d�+'�[��A��f`��L���,"�mMg0�#/V;�������7���4��LB�$�������y�����1���-5�.4n#qy����9�qMN��VS��O��}���sBt:!m
��s��t�oL�V�[������g����w�Zx��z���`\�~��%=^:�N��_O	a0���<	<MF`?3�I��{u��N<}Lg�^���)���Xmf�M���q������6�~�4
�J��k��V/*�2A��z���f��b��&O�P��.l�`���c
�{T�(�e� 4.48m6Z�lNv��4��(�v�6��8�58$N�VK}0V*�Nk�fEG{pZ�l��/�,���	'L��Q��$`j[�o��l!�97����2�]��q���F=�w��q[d3�r ���p��
���w[��&k�4 3�r ���?��n�M��Vc��n�f8�,��K���3�Yd�z��B���&kz��T7��Q���y�R4|z|���~w-��
x��$�j�v���
��$���|���2�������%�tz�������gO��'�W[Yk�
p8�b�5�C�����)D���XO�
�8��P;���-^K>��9�v��'2�p���2�����@E���q~`��:��\�� &~Ja��xy������'��j�VSg`,N���W��!���+�s�k�eiE��f��z�_���S3J����!4x��Y�(�l�d2�`�Wc�wO��x�����?f�d�m�~T���������`�����8>��z���so4�t�7�������9����Tk@�9y��?~�iN�=�i�<U�5��L5B)��{�� �[��2v�%��p���T�Ltt��F����.Ag�D����=���d�47)6��M��8a�����)-��!r$	��D����3������(����&���B�Lk�B�����(���[����FZ���L��Em���i�Lp_��B!���E���D0��o]m��XOx}��&=��H�I�������f"��g�HV'��an:97�]{�Vomp;I4k.*i���i��{J�{��'��9}`:n?��D�z�M)�� -W�c��8T{��!mE���2%����yj�3��\��:���59�)&:� �P���8������J��YAC�c1�Js���!
���S�m
������6��_@Z������|9q|1�?
�������R�h������H��.�8�7�#!��� ;��\���(9����1���� ��u7�pKuj��:��1��!Y=I�t�)��qVP�L���Z={��y	�{z8�tG������7j}�������~�Kq���>�����}M~�<��	�2�
�r�����c���%�mZ8�A�]3@<<0��,�MX��lA�U�t����b��cv��a���E��v��j-�c��~���{���]�"�L�����E{�d���\���kh�FQ���bA������|�{���"�j������L�
``�k�	b��Q��.i
w*��j/����`��z�qvOX��� �
�W����7VO��������v�TV�4����yU>p�C2,����; `�����q%#7��U��\A��SQ4�n&iv/5�T�L�,_��5�RL��Jj��(��Y_nv����S�9U��Kk�9��g��e�������j f#�#����N�D�m���Vv	����U;V0�(�p��s��$?�2$�Q�`�CQ�*F�,+/���P���Z�G�O%���29�����/J<��V���Q���b�]#�'�P{%�-�f��R��7�w(�����hO�]��N�Q��COB_;�4�����$���H�K��i(}�B����k����%��P��J�/)k��� ����f����^���g-�����B����a�����R�A`�>_Dw���������o��Fz����
�,����@��DP��o�@IpJ�W�9H���i:$�m�YvJs��������������|�������H����� }��P"8t(�C#��
$B���%�nqM�8�W>��j����#��7>;���M.1n�b���KW|�� k����9�'&��m���t+����2S'7�����)c2�����,��I+ �d�|h����o����,����@���PFu��������@��"���U����1X�7��8(�U�^*���w(��Lo���8�Cn���O_C��n�z�X���b��������U����E��,&�sb#�Dx����&'����A>����[f��x
��{����Pu&H���TWo��0�b|y������2��gL�d��O���+���y����A�^��F���0-p��V��������Qc�sv}.P^��=2#�� �iP�#U��T
�����r(���1;hM�l2|pd��J�
�����%�>
�[���H������mH�B]S�<�|_�l���x��,�Dk�s��F�(�K��@{���.e�d�QK�nQ��n�2�����w��� (O^���>�m������\��6##TGb���DPd�o_.dQ��}cp(��������&������B�S��G���DUb�����\��}F��BOb6f>��:����f#�`�P>�39hJgB���_����k�W��O-��|�|���	!+xg���d�\�Y�l�4P0+1�z�@�v;��6{J*�����}��l4no�#��V�]�r��HD,-��(v�����4:��D0��;Os1�C`Oi����~���Fu7�yY���B�����C�{��2�b��T����AP�MI�6
/�m#^��l^���������r�C���Q�?�-���f��������#�a�~J�v��a}2����E^_*��Kb�>$;�`��AOgd�	W�Dl,(T��7G��L2��6�b"�<�U��9O� H%,��JygA?�)p�	�'��;�~�����zo�p��UG�p�]�'�
RW:W!B�����������%����v[]�M��'t�n��h)����ox�}q_x0mA_�9yUm]'rqh?�����@��5"Fv���k�z��/�kJ05���1|B����4YbZ#)n�7����%�G��`
�Y�����m���9t�����-�!����X�����o���a������[�Y%5K�j<���x�Y�stx����BrV��+h��8�������,X��k���?�e*�>�@�������n��"i~2��������+�>��@C�]s*���a�o��^�D�[f6�aA�����&��F,^"�2Y.���R�K�zC�Vs������l����mAXRB]�������H�tA�)��1Y���dq�_��I~�Bp`q(��~�N��O�Hi����y��z��r%L�e�7^?9�H�5����
�i	����B������t���V!�+F32���*�1/��i�����a1�)��\�|&|��o��^y�+�/Y���_��A7v���f7�Pfo#v5oA�@{������B�my�'�5��,�{}��	q�Of��V�Q�@H�����z���J,SG	�������WU�� ���<�OVm�%��c��B%��6��FGzv����=����������T^*e�r���+|P��.������'�����E�4��+�	����i����w�ts-+vf�����[r���)u�b����o/Iz��X���9(�P�e�b����U�t�7/!U��(o����k����{,iU0}������WU�A�xD+x4���H��6��|�Q������1_��oH�9L�-�#��\���H����<q0����qv�:+
��%��(�!$
��O�Q�l1������:f�b�sZ~��6j^��e�h��i����(��0���FC.�lB���$��e�Xs]|������6�AVeY !`��;� �U���n�����r��a�%>DeE'��TN��p#=�5����!���~��y)9����C����N�|z�_�
��Cp$�LFd��� �G��@
e��
�t�F�<R�&�O[w���xI�1��1�&�@�Rl&]�7v�}5n��OzFq�>� vv������l(�O����+���
?�����gp�N-�B&���f�����"��2������zO�R���5F��Q<��bkB��KE��/��`i�\rN�����8l�cn/\�^`��N���q��XT�s���� �g!���O�������u����uW��!���kbH� ��?b C��k��>�(��HK���=��4{�F��Y��������qr��`�Q4��m����!�	�����T-���Y��*b�?�N���Rc����;�����^HE.�=���rX��E��e�0��v���p��Z�,s�=?/H�����F����X��6������R�0���+�7V��=��S����k�����$���?(.���u�q,���P���g'K�g(���k��_�Q�.}K��k�Bf"�`�IyMsz�D�$���Y`��$�Mp�I�J�1Y\�����M�`JV���0�e�y���2$~��|��MqF���@pA�6/e1	�0|}D��M
n�r]�0J^!�X��,h�T�m����|H2��u;^���ol�tG�>b^y��%$ezj�=��u|M!%�Z�
�GpH	��S���ch�cZoq�S��/�!��p�9H�gtSUT/���3A���r/\M�G�����:D���T����F�#Q��=9���p��1��V_F�K�=�����Na	��|%��{r*� /�
�<�qz��B��/<�V1AShP.R���D���;��=���Wt����a�a�x�����_g�T!�'�k��#o<�BE�!��F���b��xkpz6�Y5�J�Rp`D?�/4�Z��r����B!�G�J��b��#�^���8���($�@g���:��_�M#B�c���( #!��l+B��=��0�;��o8���0�%l2��/�9��������1DJK���Ae�s�q� �O�{7�}]
�5�1��a�tI���*�v'n����'��]����
 d���qXz K����e��I
4�9$�A����uL��3�s�o#�-�r����mi�Lkn���p&�����k�b��rW?7����r���L����;�r5@�����fA�{X
���e_�o�~�#5����*�)Y�G����n?tq���9YPO~O�SZ
���������@ ��+����#���v��lU��%+�	�OvB�-P���a�a���/������������!���l��3P-X���!���LMBe�ag!�Ak	n�+.���B�2,�����8�����o
�52��L&z���4�_�YSj%�7��~�s����n�]eIr��;��Uix����5:�-�2��L��hP��x2z2>aWJ-�a W��~>6w�>&��xa#f����/�V@?u�>���'�k�~���������0��=���.�N��T�����:?s8���{J�E����h��!i@�?�R�v��������L�p\��x-�	�/I�t���T�w���}0a�b�	���x�2�/��N����	�q�d�Iv'������(�G�
����uF@t��.	jL�9��~���[E�B����-����������.��=�$z�_IN��-Ak7���"�����zfr���n�l&>�U���:CS@�Y��|�%I JHat�GISj`���v�F?y�=�s��o���V�����xo��3��0���|c}��O�S'�$���%������BB�������!v��C���|���=��wfQ�����G�����H@�e�������H���k��^	�������w��8.��5�6��I��qf~%V�@pM�$����.�&4����?li�yo�l����?%	��j���h�������o��?�?D�; ���i6�G�������f���\�������!tHu����A���$���Sh��!\���;���H�EC�X�������O?�	�-fY������2�,fX��>���c����8c�]�t7�(e�����V�p�T�����L���iw{+�� x�pkv����<y����7��u�P�������4������7�6�K���.
3n��t
����`m�]�N�<r]*@1���`�_�
��j��u�$�c��Bn�q]:	��u�PVE�_�N�=e]*�gD�?��S����%p�E�:&�K�3�a]:E�G�K�S���t
�'�K����t1�������f���i�G�K��,]����\��-�V��t
���H-L�yE:��SV�zbZ�N��&�H-���t
���H-��_�N��"��w,�d�s�,/r�V�a~$���p	���'a@�>'�*
2��Ii84�rI���5�}�
��5�wv��7^pKn��[�P8]�Q��&1
���Qy+n�6��Y���1:�>V?�!	���@��M2Y���<�v�S����4��g2������� 8�l����w����Z4L��!�~��6S�"���#v�������#6�y�"���X�������1���������Y��-B��"��5�[a��Pic���L{;����V6�}���[a���ia|��n�W�scE�����.�����1������:�$_��f�G8U��1[v�9��_�t��l\��!P,���d�}!P�� ��4$dH{7�.\~��h5v��<�k����3���<�Nc�P�������qY�n��1�������������LX�*�MZ4w�f��E.�XN��N��J�j���Q*�������r'���bi��g��/L�(��b��8���E���!��h��z��N�[�%��x��N���:�J�;,��t����e���`vY`����u�EL��`v��EP�k�����=Pt�9����CQ_��Pn-A��I�e4��.���"
�>(��7����6>�����'4+
YOC	���������O�g���������D\�:��I7���M�6e�)��������LN�@�!����bJ�F��)	����s/B���qI������	cVO�����n*�Q����w���������,������)=�	_}��/��B/f,n�,���sc#>?��UD��K�G��S���@��7���_xd�����A��������+=&��a�v=|E�����c���'��>��($!�[a����t+�w1ux��ta�]�y�[\
���F]��������YmW�6�� 6m�6���\��M;oP2��~K�}>�bB���C�uzdJ+y���� ��UP��������?x�{����'�0�@;������
��c�?�X���Z6
]��N��Y�t-����pC({lR,�k�R�M�+�T/��Y,�'��:�I��V��z����mz[zXU���PIo�Uo+���3'}KNJY�Io�3mVr[�rR������%N���7���n�\zH�o����G+�d>R��������������r��^&i_O��G��&*�����M���{m�n7�����
�AFm�#]���I��w�F\���+�N�������9?E�}�@����w['��}c���!��Z�:���(��eg��^#�����Y�^�tm�t�mzr'
Q����C;(�]���czj���L-T��`���V!B�w��U���Z�[�B�����Le�:+��Z��5q��*$:R�����s�6��m-���_�Q�kV�Z#f��i���L��{������bf�:����&UZ��-X�M�
M3k��3I�rw���u2dr�����W@�����9���������P�k����}��8�vD�����KE3��XU����R
��?�`hg\�����I�7�3!�d�p�I���/����}����������������[�>�Y�)9�o�1Q����������zo��WQ�e�5����6�^�&o��J��K���;�DZ����-E�k���x��"��X��T
�4���zP���Y[TO���c;xB6Sy�P,$����A�������p���I��l&MnPk�v�HB�3�"I>*��1:��,��D��4� �I�O#hf�&
��vii	�T=N8��!��lI��b!��mM.T��n�w�b"i�����
�L���HB�3�"I>*��1�v��Y���5iAJ�&�Br&hf�&
�����z�plB�n
!��DP�fr��%����o>���������iM�i����d%�DpJ�1�3�x:�x�HP�%�4];S@C��A�F*�r���<Fv�! K��B0J1Q��4j8Y�����|����z6s�5�1Y��4B,HC�4�2IVj��1�M��L�j�P�T&-���e�fj�Tt�������=VX��!�6��$�!B���l���d��2I�,&�����F���P�h��=H}Q��|�6m�jSIX`2�#Y�Ef��l���<F	�&����	s}m��yz(L/a����d����G�ok�U\���3��mM�����Q�o�>!<���]x���[��iM�i�DC
��D��
A)A��1V����g!|a.�6��H���Y�/�:0q�l�Gzj#���`�-"0��@L�Xv����"�nmO1J�5�b�e8���4���I��(������7+��E�/�yT�H,@dM�����~���������o��p�� |f�8��k�A/=?����D-w|�A��s��H����=hE��]9h��c1���0#���c"f�r>6�j6�"s;�s��<�%" FY���-�Y�X�H�4[G��:cU\E�X�L=��I������LNp�r3%4�M�F�O�K|�X��cqm3	��Ev��Q��d�^�C�)6)�~��:��SZ}�X��^�1d����o�������A�����f�Y+4X�X�����W{x<,,�y�F��y�wG!���ke�J��'�<�y�
v����5Ni��K�?���(iN�W��6UGK��X�8g)9��Q[��{I��*��c���'$f������Z-��|���
�~�IR<X��?v���D,�/\�q����&<�q
WX0�#�&�98�������
"�Wh����Y)�O-��v�R����yZ�`�:�I���Ph�l���@L(�ks�~\\"@�����$�X+�SDd|R��;�P���G��4�������o�0H\��~�sNT?�1������o���{*��y��9��C����B7ln�C_���E?�iHi����� t	8���A�{PO����S2��F�T;�U��}��+m�h��p�������~Gy��Y*}������pM|{9v'�����d0Xr�5�@�_���pc��v+��L��������Z3��Y�=����p��X�d�c��Z�4JWQr*o�|M�s�|��n������pW2?3���c����#��)�:�����75x�x�T��-p���^���-�F�3��&|�:pV#�������s�����FB�h��re�u��D?�������U�
W�I�����iK�4���~T$�dn��I�� ,��v��=[H;�9��[�i��'3G��K���FM��R���7*Xj��]Bw"oe$O+��S[��tQ�Rk��[��=q#���)Xj�a��-Ir��@���X[�������`�H���taK��yzC^]��Q����[w��x�l��������"��(8
on��i�8u��A�+����
�E��8vFi��:��N�;�o
V��Y���}����$Oh8��nZ�.�N|-mt���1�&�|-yR�v4b�`Wz��E^�2L���@���
�lV��l��,��5�/��kZ��
�����?�������4-a��[��,��
{�����@h�JK2�-�����?����l	�z���:	!k��|>�o��8������������`�.C`��,���<A�����5(}W+���D��!���!��)�����U���0X0����I��s9��(#.x�8������Z���%[Nfiy��ZN~������yn������H-�3���(�v|���=�9�����7�$�zY���|
C���,������,������Z��s�����\�l�:=W/�I�mB��z������mz5RH���n7����-o���bOmy��|���P��tn�����-���:�w�����K�g�o\�O���D�U�R�^�{�%Dz�5vz/�R��yF��+e/3r,�U��s���ob���6�G�u�{�����y��������MV�xE�.��N���@i�g�J1��v_4])���>������3����`t�p]�d7������3w��:��*��3w��Df�J7��������<������$?}[&�$}N��}\��_�w�Y�	�����6�2����(���A��y���wmN��������j:t�9	�6n����D��'i����7�qc-v��u`Dm���V�1�j7�����5����'B�V�����J;�A�������
��	�~o�����_��@hZ~�3���T��
�bu��� HoarL���RH������H����{�%/^r�vK3
�1��o#�rXv���C�S���\;l�sV:/��[�+�����60}����bu|����(f�_��Dh/�����+d�����U�S��Y������|L
�S�����A�������c�kG�� �J������v���m�o1����
zZ��r-��*w3�f���H������~�Kk�K������2�#�(�%���[����z��y�u��������S[����jdn�#����Fo.����r>F|��vD�j0�c������X�oIh0'��v\-1#��Z;���J�k#nSu3h�
��Y���qXlU��ZW[k���b��B�����B~�-�!��H_��_B��k����A�P

F]��jM��X��h���b�5DW^�@n{��Y{mL�v�4���iDC���Kt���RJS�QE�X�R��<a�:���`��EW;QMDh��&���bG�\+��Z������j�*�s��zR�E�On[�,.
$X.6��g�K*��a�����u5��XE�Vk^�~�bs�m���r�`�E�86��[�em��[cR0X�L��8Ao
F)�G��V;�kzY�9V.^v��y��]v 3�V;�)��24+�v���4;���iG0V��r���_��N,)���� ��?�i`��lh���+*�K�y��@w(BI�j��$D�G��dE����Ft����&���0�����A������Z��#�V�L�#KJ-���X��&�j��aN[���bmkG9��� 7��P;�i�v��/�~(^5��S��B;4n�Q�P;�oE��n���+��rd���Y�����9Dj)m�
9��'i9��1Sc������,M�V~�6db�+�����4�<,���=��������N�|h�����m6�C,R���BTR���f��S4��z����U�K�����3��J[��Yg6��qm^ �r���F6����t����O�u)w��C:�/������V�34�:��3V��V@�y�����'0�%4�#T���a6�]V�u78g����9M^��~�����)�D��~������7�����*���I�Hso��,Q6�9����<JLY)�trt��BZ������d���,Dj�����Lq�
���K�
��i����o�1�����Ju���d�p���n�<D���z@	�:B�J�����R6{��Y����!���I��H^����\�E{r"~��mI�iRJX2��mH������kK����Sr��D��$?'�F�\�������k��������4e)AG( �;]j.�]����$��+Q�
�-��xaXV�"|��U� c�����;Z����,.������������V���o����J��<V,���o����Vn��/j�%���|['%-sQ-���U?fC��B�Y���;���(��d�}e�m�?��z���/��K��l���!���
~"�)���+H�
LFx)��-/��8�X�e���SA�s|8��s��D
������=T��l��Y�i�e%������xz"��o���Y
{�:�T�i��j����N��Y�]6���+���'����0��Wo��Ryq�������X��,�������8���"���'M��C|�B�v��G���u!�����c����h��M[�{	��9�=�bS�IxcP���Q0��
����l[�>�1]��5�R�~�'����$_�KE�oD����G��7W";Ac�"�����j(2���rNrv�hH�j)l���n>�� <dk,�W������	�%�[��DIJv?;J�d((���a�l��?FYHa	B��gG�Nr`���;�������DU����|�R�� e��P�w���,��VINE["�k��.d�m�7w�C[�������'d���er&OW���wZ��<�����N�mPP�V���@����.��:����('v�{3N�G��x�*���=z�n* bN��*@=�Ed���euy7f�����Z����ml�Dy�7��3���@z<�'��F��vc��,:���7���o�������������T��;�S���A�q`�7�;����C�x����@m�R�s���q������	�,Q�����Z��~I+��T'��UXZ_X[5�Q*�+)�������T����f�/�+kC��w����*�+�fV�rk�{{�p�pw$Z�Z������8��pW*���N��X����b,����o�f�c8���2T�K��������2�����k����a�)��q�\r��l�-�rb��1���p�5�������	�_!��z����3���NP3�#K�D��y3�G�8�F8G\�X[����f)b��CN*��/�
" �#���wDD�r�PA�-�j(���a�M����U���������"���'z�F��������#K�v�.�I�4:�K� ���V�Q�"��o�L9����.����N�����9/3��<�a�F�����A����]2����T7��N����*n,w�D���=c?���,\�3x,���X��wg	W��eq��<��*|�
�'/�CQ�O�����L��CYC���F���������kt t��tx�<�������Do'��������mn�6'��M����%�k;�����8�j4D�$]��^jtZ�!Gzs�����*�����0T4k��k��,�4"�����'��L�\r����<�2}�i���U�b�9"�5�,��!4z$��1vK�8S��#s�_H��c���Ku�RE!"�k�����{�j����:\�uX�W<�=GacxT}n����Y��z��:�����D���qP�f�;��]G��A�;S�^-�#).C��i=���e=>%��2R�+�����z��5Xn�.p"?���5����$�(��Vs����v�����<zS���?�%�r��yh��"�C��Vs�n���v��jS�tWc4�����v�D�s*
�
l {�z�$��Q�����,�!�y�CE�u�i��V�B����Wvp9���-!����jHN��97����j ���.����V1(�)��U�&�uu����DX�4����L�:*��05;�i��#��M��b�DN�C���������+u 8z8\���v,�om��S�4?f�JXR�WK�-��JT����t�p���9u���MC3��$�4$���^[Y�xer��#��������K^i�������(�<hG����E�;$����7������K!K�8p�0�LB����$<\a0��d����0���
;���]p���VlH�Y�A�����!���>���
)������&L���`K�Flu���=q��^�Q%��F����t��*��d���{��&��*|���h��Q�
��� �8���d�HH�}���P{����y"�=|b�s�:���T�#�6�j@���0��&BGg8���G@����������_m�3�\���]����%��Z/������C���0�+��f;L=C}m�e<�����`6z������{4V����^����)�N�c)�g�N��"t9L�B���{��0��C)>��p��t�}j�������#��>o��9��SL����4�8!������Up�V���f��M0�C���M���%�.�u:� 4`��gL1
��fL���:�[���!�h��A7�Er=����/Q���q
d��R����f������SqV��~\X@���h�^��7��^��k�
y���j�6b��"��E=�:�a���5����pz��y`�Du��	�F����j��(��K�T(x)�C}��=�����������9��J�����9��y���1�k;bp��%���H�F"����7Y����BY��K��IM�mq,�y�H�V�oD����^&
q��Kr�UzW5����o��>��hE�WR�P��QE�8��ApTC-�����B1;CH/�����fm��4?[��'IZ�H�P���~�&��S����������$����Y���btr��1:@�<%�sTR��G�L���sf{�F���3�(��(7Q�SdG���
4�!��(��HYJ�j*�;��N![ �_�%�������� ��e�K�a'	^������xt=�\����ByZ%�[��:��V�"����7����Z-�_��/�����
���o�����Oo�B���c�T��p���Sv��������6�����
e-A��VJ;r���<X
���I�bV�w=hZwR�H~�� E��C��
�����d��|���"x"bO 6CI$�	�������-�-���d�Sv� ����?��S���,���w������@5aM�E��*O�2��VD2%���r��]$�j#;��d1���e�,,L����S^H
����s=3S����Y���k3���k���k'b"��X�/��(Tk���6��;���W�1
95hE�'�D�i�-��#��S�Dk��b������Z�S����HQB1�WBQ�M�������l-��)�o/����4����p
�2�8�f~7�����-�K�.����
�0@=�V(3�
�"��5��������"���ivj����F����XI��W"�,���i|J���j�Ro����YZR����\o�L��)MJ'��(/�+=C�C������*�[��4����[����������|a��b��4�*�f+e���4`���x*�@F���Vu���`���O)��=��A��?lCzF4lI�1�a]�R�?#���a1��L�c<(�������k��t�+M�SS
�O-���C�P4���ef@�j����_�2���iVA�C����\������'!���������5�I�(W�#��1VA����Q�3c2��� �R���hkL��[�}d��6Vlm�6f��������-����E�z9�MXYW��9���?D��;�E�8���m:k�)r^�@k>1�$l��+��O���������@�����k�:������TAC����v! �%�B��GQr��h�^HbCp���?��<�w��Y�NI|����2i�nu������tLn|P�Il�������(O�;��ZV��$���������&f3p==:Q�Q��V����D\����D�wk
F�<�2H�*�����[���B��Q�!�'�2`���p�N�w �u}{��O[H
���Hg���O��czI���YG���<��L��|5m����b�[m'�����Rk4��4���o�S4���Nfjz+5��8S�;���\�C���x����gB-�4YRU���q��Lk��R��+�m��P��/�x`i����'������81a�KY�\�h�f�`U�
o.qu�Zg��!	b���Z�%&!�Z����B_��*!V�����G��PXS�����p�o�������WH{�q�Ac��Ek�xJ�b��H����H��I7X����EZ�'a�!-^S|,������Vk�P$q`g<��ec�p�B�N?[4�Y��m�f�������Wz#;h��Rj��0��WH�Nt�K�
�a=!-����U�,MVq#��3����9	�]mu]�th��)�|y�rza=�CQ(�kaLIS��������R��ZJ�YLH��VR{�Y��/��Do ���?��&�vgc�4���Q48�;�b�b��V�[[2 ���,!-,�����K!1���<�5l�nB4N�!�vZ�>�kz%V�#!��e����]�.4y�����l�l���i�
<��8�=�eU��!��S����N_Q@��p������h�����s���%Ir){)�s�L~�������^Q���D�j��ic���Q]d������{~���l��/����b��_��
H�"��
����)DoN"��p���-AE�k�����*����������v�]v��sr��R��n�G���UM��r��5�����q������bo�+������J�luE��*%�1I`m�m^#��QZn:��?F�AEi�������{��!`�oD��.w����F����N�,'�Jz
���m�]vM�!����L��m�bi�n�_�mZ,W4m��6��H���_u]�,��>�^w��%S��y�Y��\y����Gc�+Q���2������[�\)����5���������,SI�x8/Iz���������'���!O��C��"��
i�F(b��c bs�����F�7��g��27����U��"^'<%P#�!��3b�Y�6����e
�� 8����pp�7��W�.����v�*�yn�"/�{�'��hp����3:
!�!���VZ.7�����NK���w���j��������6�Y����/r�;��J�i�.����g"����!`�:���Gw���F&�BO���zTUd�G^>^^��%�����l$ h|c�5��840��z#3��=[{��f���#~��os���v��Y7#���Bu�`�d`$}���~��W�-�F
ru���V��j�m�l
=���}i���h$�)/h���d���Q���������$��_�������R(����N�k�_�����[(����xP ����C���T�g�r�������i�B7����Hr7�R8a�*�GP���4���Z�����lT1=�<�U�
.�b&��e���6��;���m�d�yJ_��lUF�x�3k��������w��a-�!�p&��Cn#9r��p�P��4*7��s��v�-�'"~�[�`8Wp4�?�KC9���2�,�s�~�%f��r�lMYZ����'"�����0(\K@����/V��b��
�&m���&�X�V�ee��I�����-��UtY��mr�xxsf
.7zm[V��{�������4���X���M���U����+U���a�Aa-~&�����r�3��-���b�l]�C�P�l��>����dt������^4^]����Zu���M��C�r�)�
>�� �we;!���#c3���O���Y
�~���������u���Dq	��{O�
x/e
Y�Z��95��h*����ER�;K4����69NJ���}j�@g2�#�/1-B%$���w����
�{WF�����~����_��=H�X��KAk~���-������F�6����p�R�<u������BaJH
��h!h��6}Nk���=��p�CC����;����1y�x�k���oN��z�B��G{��D��~�f�_XoD*hs�����65xz�8���L�xV�>�[�KE�����2I9�64sA@�8����/EyZ��������o�MPJf(�?�y&���f�8�eif v>k'�B��~���GR��Cl0���m�S��i�K]?!F_t�f��@����_K>N�h�����yg�stDW#n�?�T
>�����(�3��A@�G�����b����_>@�/p��8	�7���[�-j>MFS�)sKm�>E��X2:"B���%�YWJlJ�Ss�'):��'DVr��G��:��v���4���k��7������.@]0��,�� S�8�����v2V1J��i�]�u�+J
���J��e��"]�),b�d��^}>����4������*�VV'pzTY>�5��Z��B��rZ��Pb��z,�`�t��X`Na����N.I|�R|OAE��	���>3���@���TD8����kZ��������[�R�
*����x�'!w���c���p�������,���6N�0u����0��zJ.��S����u�6c��if2�=��
��L�R����hf"�6��$U|/��$2�6�����P��m���v��C�'������{r��k�:QqC#k���0�e|���<��?=/Q6
���"LY��b�~	M���0I�A��	�GZ��^�
����vp�a����Z����:�p��j���Q7�8�F���p������p��N����[,&���m�+n��S��n%h�g�u�U}"k
�0G�O
��,��VR�!_����pS����#�V�dO����&�v:�I�nY����(4���,��o�I��ThS���������z^�=4R��6��5l�I�xl4i blU
C����M�Q����O	�����}8���~}��\�U%�I����\U�B.�yXk�V��Va`�h�3�f�����. �����N�8����+����i���H�����
b�m_�lLW�>�p���0��Fv����Lr����=��)=�K)y8j&Z���xt��i����ucL"�u������:]W�YD�g�/m���/e%�4$�M��ua������b��E����fm�&	��u�9i+'$�	��u�����	J(���NX--m)��_����&%Eb*.��
)�'f�+�%��p+�'Gn�2VY��3�y��Y�VR�Z����$���4��1M�J��x9���=��5���;��TQ� xA�g��3/���5��S����)=�o����b��2�.�Dr�o-*NK�����&��F�m�����
���6|�b��PYP�� ���'��n���j�([��6�9��"�/8I���������$�	��88�R�Z������#B�xj�)��0����bU���������,7�(�V��Br���B�%�z��4c�x-o�!��z'U�>�^#�x�
N����U��9pl���T��F`@a�8��9m ��E�;+�~>X�|>���0WS��X�g�������`�'K|�$��t��E�)���8
��yA����X�����`�80w!l��_�@�evd,���sN5�a��sW�F���������|������AgMG�a����xL]lq�T[yY��GT�FUx�[��`,�,��5+c����y}�tFU�V[����_�86n$W2�����<���>6��z ��|V��"��^n�"3����Rn�"�����p
�kA8������e��8�>}��&y��C}}<��U�O�$7�������kC�0�YzZg��0h������k9z�\#C�5�9�g^l�m"
#C�m8�&4�A��}..s�u(�WU�U-���L��&�.������f��X���JZyqq�:�lsr����^���|�R�(����d!K8rVU��a�a
",�0��'�6<4QU��������V_�������4]i��F
k��K�_���A��`F2X"^�����E<�F�]���Qzz�{������y@%�E�d�"�*�S&���XZ�z�������=/�~����P��r(�N�����Y)���"R��p�.���O�'�{T���������_����7�$�GU��KQ+�w����v�/����X�������Kr��N�������/���cs�KA
�^q�j��G���}�;��������@�xU���(}���J���v��P,g�i�o����@��� �Cm��4c�D�����!K������m�j�m�e0w+o%6��4�L��3dr�F���@ae
A��ml��������*=d���K������y[z� �������)�[�w���(2��S����fnP=�	��c
w8�$�g�N����,�x�������@���DI���h���Z���;]�k�Es�N���8��-�qR��&�.�v�Y��6�K�N���wx�Cw����b�Bu�>8E#I��F�v'�%i�K���$�b�������]LG����ij�wR�&}�qE�r�]����~3N�q�
jrr��Bp
��x�s�f1L:I�w��u�D�G��g���zoG�h\�5{��L�4m�)y��Y='%�����x[���R��5-Y0,�}O��������4x�b����-��-)�d1�(��8�5P�������~�����1{�0;��)������N�������<�`v�T��VS�$�����{yL5�*�i�c�l?e�Yb\Z���!�(?%&�Doa���F�OvK�yf����Y. ��������_��\���������;U/L�B�~" �)���!�8J*:����=���]nzi�hu��[���$�P4�A2���yH�a!G-�F?����dA~Ph[���!�ZBy"rO�Gb� #�m�S��dU��Vi�CGX>O��e��s����J�v}�_Ye���� ��#�	-T�by��eq��%��,Qa��-��5%�L\R/�D��8J	�����sSh�K:�#b��dd;�?�	���d���"���xz���6t���b>���=���0Y��-��W��TdY���y�fT	hM�&�>���P|�R��Z!�1�Uk�T��Z��B�2����j������x.�6*�(�X����M�Z�(���h"@D�V;w�si�2	���>����F���7#cN�0�.��6��|�8�]�2@�r_�t	sS�Mg0'Y�D'��f�����nF�>�	�����%��������B���'z���;|o2
��,{S���.����������R�B�5�� ��
]z����H+�����{����J�=����H�cv�����%��u��W��kq
����O����+�
����qv�+Kv��eB!g��]���1��weX�h�/��f-6[�A�C��w��~N��.��7���gy�������f�n{�-wD0�'d��[��B�A�@��J	�v0�/7��-
4��
�f	���(_+���T���m��0�J�<M�l�l	E�����9e]U�cQ��^n�����U�8�X7�����O�Nh>��$<y&�G�c��5)q��GHF�-�P)s!���X�k��-�?M�Bn��r3�m�q�;D���eu��M��{�n�6wo�
"������A��3r���)%+\���tRR��
w[W��^}h9YZ�9WE�P��a�����������|t�[x�{a��=y��F������h�;W;�n�^m�Q��p���� ��Y��j�IB�-UY�>�S� �~Q������
b.��s�����
0�1��<=BZ���rV�\3?����}�&��$	5�x0�%��
�?4����0�G��-��sVXV������!��1��)}zJ�$?�t�/�Ko�����-��X�h/�f��q�#�%:�����N���@!��!Y��K�B�l��P����zb�e�������:�3_o��r�u9�/N�t�C7X�W�'�����r���`
���F����Y��>XnF���������	�G+\��*��-$�H�B8��.��{�[l$:�q���Q����|��1���Z6��������B��5j���8W����yqbd�> ]�)��n�R��p����n�6f
���Hgf�F���4�<t�9tl�������h�D���-�k���g�=p���A���(~����E~v> �V���\\���,N��|X5�h���	�����#!�w�(�Ur�2��4x(wQP�72�X[�*Oq��+����7AH5�O��tc�JM���F��UG�:T��sS�Q�B�{h��q�gX.��_�n��EV1��K�|�`�V��
H���6C'���7�������7��Pv���<�� ������eBV?�I���4��z�����`�I�,H������R�"�h	G(]?	�!�j�h5�4�i']����,�O���v(�$~r��r����/�����e=���e&%��g���vF\e|J_�X�R|6��m�=���l�����G��|[#��Xf+n
l>�H\��W�\lY4�O�w����Te'���a�9T��r���p����yv�7��o�+g��W�h&�'����4U�	 ���h�'�������@3;2���:$� �>�l/?+j>�N���*/�n���������Q�x4x<b�c������j��T��*|{'>�����6����
8h��Ez�&���������E�\�d��m�?�U��	GmNeq�3!z�S�\j�
����l���:�pOX�u��*��]��JpPW�V1.�PDN�����m��?�? z��������o��a"�0,NqMx=��L��C,�i9��@!+�4����%q�*HWA�I4,z���%Rho �w�#����k�9����F����:�;1~:�9�.�XK�h`N��
��|i��
I&�H���#$��������8�&�fc�@�����P���{�����.�����3��F/��<�D��(�1��`)���&��1�v�-&�Y�%��l�����4�y�A�A�3u Q!��#iVYmv|����I�/w2I���)94+�������	���Gd���m=�|���R���#��Cy�d_8=:����~��<������{��R4M>��������Ip����
��b���Kz��Y'Q�j����'U���G��^���x7�:"�	�Q�W1*�F Qv`]�Ou?��C�B��I���R(I�:l^[�<d��c�����%���iM��O'��J���_�:�4����	��e��1=���X�,�2�4�E�RBv�\+c�N��M"��A`[q��@yN:�(�a���Y�1���trY���4��<�~�����I�pH[�����Ax������������n�9��\"�������U���u����IN��#U�Y"��<%er�������v��fn���
����Q�#�	Lw�)
���E�{V���.ym�]�k�����5-��	4��U�A�2=�Y����6���K�>��
���7��aJ~J I#K�F��I9�������r��(=����&�1�������`�B-@�����RQv�ep�� b������e�0�8�����>���f
x�.K��Y����������`��p�������,n���1Y8i��2?�S�x���MD��$�Y-}��H��p�	J��������K�m����6�y���ZC6;��P5�:�����w�FP���g�]|�g7�N��x�1��~����
^;���q[L<�LN��m�'8�:�k���q��[A��� �����	�F4�.Y[���u�/��]|�%����q��� ?��H�o�_���:��oi�+��ir�
9�
���,�����`=�G����`~]@PK�J��W(��>kD�n����*���#����"d�
����
����cN{w��'�?�t!A�\��9���e|JZ7��Bc����),��9dN���|C�f9=�}��J.�����a99�����h�Y�m�V��yN`�y�]���h�z`�y���)y�Y8�,�C��mD&��:$���)����4��$P�Y9�v��>Qu{�������~�j�b���b��1\mK��)an�>W.X�b��I�o���7�!��R���Fao
�z�S������c"��dW����������c�cO)�|L�����x�����1�����n'et
rK!�1��<\07Dx�Fu��@)z����%�����"p�qJ�r�o]V�����t7j��Mb��l�M_�����2�$qy*^`��!���o��[�FAJ�b�13�L~#6�j�a�2�~JF`x'��?p�S�������4�+��!����!�P��R����]�[f
��*�w��8�W��
WyE�����]4?qQ�zhYg
�Q��� >=���l���-�r@�8��������i��
�S�(N�2��xJ���]89��_L�������(����T`U���,b�.P:^mqg�������g6v�2�32�<Ygb�3+���2�p���{��)@��C�
���v������3`p4�V��
 �a��U��R����p�EU�� �JO�I�5��|��Q��{�$��t�����@:$���K������S���gGm9(>Yf�$�����2���g��e9���(�����14�C��ZP&�m(b/9`��&�~?P�i��t��Jn��.�G�'�o�
�>���3�1�7h��<�;3m6*a���;����b��,��D�����8�5�����,s�������*'w3O�,h!������m��:8�H�,��8[���ss���=���.�b��YF�������"����������#Y�70;���
�s��~"����&������vD�y�, ���z8(Kh��,��Foe�
?x�gYt����xp�����@(����[r�4��DL�A���?F�C�{chO���/�������A�"8����V��-�=~�Y��s�Q�^�V���Z���y�*J��	��V�"�����j�A�&�[<E��M��)��k�!b5����|���^/�|���Bf�8����Cuz��WIt ���J"��+��%s��>w������}��Mm�%�2���4^~,��5��',N}����I`G�\q~Nc�#�@U%zdg����?��Q�A�_u��S�`"%?���Y��F���Wz��k�����@���95ao5�f����3��fX�������q����#����'s����k�e���l��^��@�^2�����%��9�P[�^����b!�.�y'b ���xk���^�[��!�-�&������x�04���V>���@�q�n�=����~�����8D��A���`:h��	Q�N��T)B23����������r���+b��`�i����/�����V>vu�����"��9�U �)`����`�JR%4pu���]��lE�#h�.�[�yiEu��2��W���������?��C�
�"��Y��0��m��k|v�;���Dq��.��47����/0?~q�e%��%��V�tIK����������ow�.�35|�����\�$��a����O��N��U�IF,R�'-�+�� ��y/i�yyQ�u8n�^����%~[��G��E�����c�	��mF;��F+. >���$�x���l#(U��do�Sy��xS�8VD�D����_���;�����7d��%l��dN'k,� �>���s�*h���NmA ��nX�uC�D|��DpR�
�t�_���U������(�*���o.������bbm�����:�X��t�N�IJYxI�SRR���P(������mU�m��}��A�m��}s�;��G~A��0S���v�����%��7�,��a����������������~��_�������r��~�Z����	*���2o�����]ms�8���7��U{Uq�d�I�z����d�I�6������^�\�D��P���;��)�x A4�X�IM�$h 4�Fw��W����,[�I4�UV��$�����,�8sE��,����|�H��#�V*&�\�����,,>��r�D��c���7n�3�#Ry�}�|O�]�9�)������?������<�A"+��y����P�O���������g�y�����C��|��I���D�z#�V����t�K�ED�������{�;�EN�z���ZV�*����~��l��p?��N����oc2B�9�
w����+Q�O�$������"�F���a�{��y���������f���e>�����l�Ng�d��T:����2�J��dv��l���B��n	����l^�/j��B�-���KA���r
!�}aD;c�����U���7q�~��h��*����D���`�f�T����	S��[f�oqR-�g���V,��������^����Zn��r{������������j�m��m�q���m�q���m���f�u���d�a��_o���JV[�`��z������Q��U��j����T<*����;���!J>d���!���+�Y�,?'�t����
IQ�k$D�U*��V�_Wj%YN7NB]|��(4�����f�-���Ip���U:1N`��>���]�������|gm�f�����T�F�W�B�O����������E���5-�����Ht��&%��F�%���`��-xg��V+Z��p�
Ng;�����Q�j`�m����Z_�E��
D���{���_���
�
U��5kOd�q�/���%}�a3 ���/(��/~a�$G�^���2����7�:;|����%���5�����'�Y���M}�"����Y����RB���(�����WGb���p���e
���?�����N��h���{����� ��������%[�t� ���D�;�d�0��(H�d���bA���$
�������	��G����UV�-�����t��4���_\?�+���O������<�%��Ojd�$9]�-O&���}���:��h����c��?�8���*�������(c��u�,��*k�3��������� ����u�Iz��^�2��`��`�*8��n���r��]Rh�&��Z��)��`�#hA`��$(��F�����Kr,���A�U�wq_w,E������sS���/�)���eU0;�@���t\
j�C�� ��!��y��s���n��d��)�F��Tq!RV��xuT�m
CL� �b[�Q=���c����bGO��+���LGF8/W��x���W/�_�}}a�9� b=�sS�[���Q1�4����V{���!��h��Ks��
%��P�M�
����o���^���z����x�����2RA�z�P1D�����P1Bg
�Q�����C'2��8�vo;N���g��2<X������L�x!�dj�U���Y�5�)wU������@<m��p~Q[b��BL$�4&�F��� b	�C�������H����Q.��v��8��2����x�LH�0F=[tT��4����Gf��ie:�Q[BaXGA6�����8$���d�����BJ�/��B$�`�}�]�+��:x�'@��!lD�Q���$F�������������p�*>���]�X-�^�8udE�{C��������`e�UV@e��L�*�G�����8
Q��ZD��W�����U��N�j'���@�!(9m���]	�.3#T�}��G�������a�wp�w��P{eO�oW��E���U@��t����5p�#	gbg��X�S����5k
�UnQA���3H�%�*����%��rD����x�
��2���;���P:3�z�0���.^~/�����y���NC6^n��&��=�����\����
��ogu]�=J�_�i�����0�O���P��W�7���&���9@����!C����)�0�����R���\dm|4�F��3���������a����d���0���|z�;n����t�~����e���HS��m�/�xp
@���f����vk��Oo��r-�v��i�%k�A�X�ZD*nX<7
�\������W	P�� $��E�G�_�?Z6B�XZC�����r{��
�j���u�DM1�������8=����7��;�����m��B�H+5�
�uSD��W��<�7���S��0�Plq0�����0�E�������sI7�\�0�\����w
�(p.��]��#\����R��R	#�Til�RR����������������;{u������_�����o.��_\���>
yMK\�i����u��Y��0NJ��aN*5���x{���2^UY�������^i�������zpI�-�5������:iHR�>*���:�����r�Y��e=�����)e}^�WU�~-��<H_;"���gGw��9r�(��Tpt���oj
���s�����)���0WrbFN�pi�$4`��e�j���e�A�"VO��q�
X���EK��Sw+^���/��31������`vbu��;o�	���C��s����������k���$�7�`�wV�%�k�os����iD�`����
�y���aJ�'�;�([�W=Q�ZXE�s�]oc1Q�%.�����!���S�@�|W�J����*��p>��Q��h(����E�3 ���&� �D�v���#�>�fG���9C=�#��Yn�u�A]�����wL��K<5O����x���y�4W�Dh��]�z;�\y�}��L� �i$0
�������EL����m�j"��]sw5��z�R|�	R��&H&H7y�U!��l��$Z�AG����Td���#������8�+o)Y�sT������V���`��U6�d��`a hH�%�*�H�I�cU�Q)AcJC��0c
5��`��c&����3I���������#������CJ�r^�R�>��d���4����B�I��	�����q���t��o�e��u���$" i`��b�z<pMj�$L'Q@�)���z�O�U�TQ�����~�#=DR�#��G8�N`�H	C�m��
t��}T�*��{Z$q�����dE)���v����d�K���R*<5�t�	��CE���������xi\n����H;�#+���k�C��7����������?8�t�~�C�0B4��.�=
_�<B� A�"@� Ymg��
��e��2\����sK�Aei����PG�;p6��:���{���>�����@�)/��KYhG�3U���>'�G�Z���G����b�8��Y����=+��h���x
�����]�����"4��h~�"n\��
�t�i���m�E�H����Or,:�y�PPm��PzJh��Ow���+���:\M�O5��;��^Rp����p��vk	���#U���r����=
��`����o����C�$����^+pu�!�m6D� |/��
�i����(��
�"�?���!��B5����35�\��k��
�:8%�EJ������a]��������.��[�	�����3u3^�v�<���0�R��UQTR����B.��j{���_���������z"���3����T�v�6���#	bs�(��5���vC�7�]t�C������=2�X��uM=�u����b����!����=��XB�N)�����>	5;=�C'�?���k:�@������d�d2tX���M!�#If	:W<F��vpfd���|t�c� ��f�����OG>�����~��a�*�vn������u�����,pV��}��
����{p����T������8(��
��j(�{$�,�i�M%5��q�Et����N�����?)�����~��'H:��"#c��������#?�x�dB-��i�g���hX�a���-�#
��O��QT���P� �����X��)�1}�T-N��sC����)�ko��\i�9�|�e�`�$����i���1��$_�����9���U�F��C-4��FR��C�9�����&��U����������u�@� %��uK=!,x�!2r������`��50Z�TG��.3cj�1���Rel3F7����1 �Wv��	gA4�-���;�n��R�<
��.m�Z�[�Vl��-\�i��r��A}xhVW��i��*�����$l���A;���V��K�������$���@wh�������7kVa��f�����������n�u��������ly�����'������Vq�g�l��aH�aW|m�&��P�_*+i�pYI�!���&� gN�`���&�I~���v��]����j���E�:�"�4l%>���~
����2N�Bo�gP7��"�r�����{��m�~>��'j���n�l����-v������G7���T1mO��a��@)|���@9��I���x0oLo�I��fw
]��Mc����^p�KP16��0�Cck�������|�����5CKcj1]O��wD�m�|�Wm���7�.��0�����5{��M���������z��T�����#X��D�4���;�B~�t�n_MK"����T�'V���Q����p�G�;���������3x�����gS���:��}4�	NjA�Z�Z�0-����QK��e�1O��*���9Z&iNO���l�3Q�	������j���gk�1�j���������}��fw��p�jl����#���3�u��[�U����%�>I3�T�0����j�s��1��\=�m	\�R�G����L�emj#D8D�����6H����V �R�V�0����f���p�;<^���� �o6��k�M��|.���p�	N��p�=(}(99`�kO�6�D��d���!��(�p�NGF8���*���`�#aL�c8�b��h�X�1�� ��?��T����N�F�$� *+`�J��RB�y������b��������������nM���zc��]���]�m��A�+���cv`9��f�0���f�I]��03,N�:���A����f�
��R��p�����s����UL��0t�H��M�#y9D�S���aMV�`��>��	�#~�xg9���X}��S��2��y\��[����>m�7py���}��V�/�;�D�K@XR{i���{��d0�������NDF�g'(C��_�q�����E�=�\�=������������	d�/I�/��/I�<{���F����W�NO���S��������5��|#����3T-������s �][��>��}��b`?N���)V1>�A�h_��B�f�|�r����PAjfb��aTv`0�r�����#*�Yb�7Z��XM�	5&QR�'Ur`��iJ'�5���nM���	��{�=@�h�j�[���}T"T�ArZG�[�
}�`�@sA8���?B�B���
Qtm}�;�1���HA��_�$+ k/C�����w:����(cC�+���0�� a7�dZl<~����q�����e#�c�,���m�b�fMn���QOs�Pz�QJ��+U���T�V��L'>_�:��n`��C>�M����}wx�d��� �(�@�f�q^<������T?YQocA��NB�N���������P�,G�v�F���(�l#2������g|���A���v��F4�lX�5g<����7��e����{�S�L��[}�d�=z��3���17se��1��P�_B��]Q����A��
j�LJW�m*~T.�����mA���]Q���q������1]���3|L>����h��a��]Q��������6�c5M�sq��g�%���g�g��]�#3YeN�&!m�g�a������d�Y,N���[�#V%����*���1�,�Yu�ls�D�E�u�1C�O�E�f����*��^j�O��H�>�2I�oYE����p�d�%E�����K��>c��`��(n����q������E��;2��f����t�}#����0'B��QD7�Y8���~�5Fc`��Q��q���2~N����'����O^v�8�Az��2��cjz4���U�ZK?����ei0_E~���g���E�3E6&����b	V�e��=O�$��CP���D9������~Z������;Q�v� ��
f7�9�U�d��a+���d��
��z~l�m�:���]b������
�����4J��(hxqT�>
Zs26����i��#�e#1�s
�����7���-���6$����}�[Ij��m��|b:�����#�Z��u?7���ts����+P�a��i`G)�>��_�����o.��_\���q�(z6&[�M�������7�����������2��C]��KJ{S�l����km��;��WP�������S����7��?��Kr[B���9�7^-��L��L�L���
3������4����\%�5n�P w���_u��N���i�.
�����@�?��e��{�r�����^�x���%��x7��$M2��s����;EF�$�_$��6�H����G/��dpKf�b�!C�	+n){N�����c�;�dp��������~����������pV~�
v4-0006-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v4-0006-Hand-edits-of-data-files.patchDownload
From 2319abee3ff37c2c35ff351408a7e681d71629fd Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Thu, 14 Dec 2017 14:15:21 +0700
Subject: [PATCH v4 06/12] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    | 12 +++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 11 +-----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 44 +++++-----------------
 12 files changed, 145 insertions(+), 89 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index bec8094..3d1a8b9 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -9,48 +9,56 @@
 { opf => '1976', lt => '21', rt => '21', str => '3', oper => '94', am => '403' },
 { opf => '1976', lt => '21', rt => '21', str => '4', oper => '524', am => '403' },
 { opf => '1976', lt => '21', rt => '21', str => '5', oper => '520', am => '403' },
+
 # crosstype operators int24
 { opf => '1976', lt => '21', rt => '23', str => '1', oper => '534', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '2', oper => '540', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '3', oper => '532', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '4', oper => '542', am => '403' },
 { opf => '1976', lt => '21', rt => '23', str => '5', oper => '536', am => '403' },
+
 # crosstype operators int28
 { opf => '1976', lt => '21', rt => '20', str => '1', oper => '1864', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '2', oper => '1866', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '3', oper => '1862', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '4', oper => '1867', am => '403' },
 { opf => '1976', lt => '21', rt => '20', str => '5', oper => '1865', am => '403' },
+
 # default operators int4
 { opf => '1976', lt => '23', rt => '23', str => '1', oper => '97', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '2', oper => '523', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '3', oper => '96', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '4', oper => '525', am => '403' },
 { opf => '1976', lt => '23', rt => '23', str => '5', oper => '521', am => '403' },
+
 # crosstype operators int42
 { opf => '1976', lt => '23', rt => '21', str => '1', oper => '535', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '2', oper => '541', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '3', oper => '533', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '4', oper => '543', am => '403' },
 { opf => '1976', lt => '23', rt => '21', str => '5', oper => '537', am => '403' },
+
 # crosstype operators int48
 { opf => '1976', lt => '23', rt => '20', str => '1', oper => '37', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '2', oper => '80', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '3', oper => '15', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '4', oper => '82', am => '403' },
 { opf => '1976', lt => '23', rt => '20', str => '5', oper => '76', am => '403' },
+
 # default operators int8
 { opf => '1976', lt => '20', rt => '20', str => '1', oper => '412', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '2', oper => '414', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '3', oper => '410', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '4', oper => '415', am => '403' },
 { opf => '1976', lt => '20', rt => '20', str => '5', oper => '413', am => '403' },
+
 # crosstype operators int82
 { opf => '1976', lt => '20', rt => '21', str => '1', oper => '1870', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '2', oper => '1872', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '3', oper => '1868', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '4', oper => '1873', am => '403' },
 { opf => '1976', lt => '20', rt => '21', str => '5', oper => '1871', am => '403' },
+
 # crosstype operators int84
 { opf => '1976', lt => '20', rt => '23', str => '1', oper => '418', am => '403' },
 { opf => '1976', lt => '20', rt => '23', str => '2', oper => '420', am => '403' },
@@ -90,18 +98,21 @@
 { opf => '1970', lt => '700', rt => '700', str => '3', oper => '620', am => '403' },
 { opf => '1970', lt => '700', rt => '700', str => '4', oper => '625', am => '403' },
 { opf => '1970', lt => '700', rt => '700', str => '5', oper => '623', am => '403' },
+
 # crosstype operators float48
 { opf => '1970', lt => '700', rt => '701', str => '1', oper => '1122', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '2', oper => '1124', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '3', oper => '1120', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '4', oper => '1125', am => '403' },
 { opf => '1970', lt => '700', rt => '701', str => '5', oper => '1123', am => '403' },
+
 # default operators float8
 { opf => '1970', lt => '701', rt => '701', str => '1', oper => '672', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '2', oper => '673', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '3', oper => '670', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '4', oper => '675', am => '403' },
 { opf => '1970', lt => '701', rt => '701', str => '5', oper => '674', am => '403' },
+
 # crosstype operators float84
 { opf => '1970', lt => '701', rt => '700', str => '1', oper => '1132', am => '403' },
 { opf => '1970', lt => '701', rt => '700', str => '2', oper => '1134', am => '403' },
@@ -165,48 +176,56 @@
 { opf => '434', lt => '1082', rt => '1082', str => '3', oper => '1093', am => '403' },
 { opf => '434', lt => '1082', rt => '1082', str => '4', oper => '1098', am => '403' },
 { opf => '434', lt => '1082', rt => '1082', str => '5', oper => '1097', am => '403' },
+
 # crosstype operators vs timestamp
 { opf => '434', lt => '1082', rt => '1114', str => '1', oper => '2345', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '2', oper => '2346', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '3', oper => '2347', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '4', oper => '2348', am => '403' },
 { opf => '434', lt => '1082', rt => '1114', str => '5', oper => '2349', am => '403' },
+
 # crosstype operators vs timestamptz
 { opf => '434', lt => '1082', rt => '1184', str => '1', oper => '2358', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '2', oper => '2359', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '3', oper => '2360', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '4', oper => '2361', am => '403' },
 { opf => '434', lt => '1082', rt => '1184', str => '5', oper => '2362', am => '403' },
+
 # default operators timestamp
 { opf => '434', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '3', oper => '2060', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '4', oper => '2065', am => '403' },
 { opf => '434', lt => '1114', rt => '1114', str => '5', oper => '2064', am => '403' },
+
 # crosstype operators vs date
 { opf => '434', lt => '1114', rt => '1082', str => '1', oper => '2371', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '2', oper => '2372', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '3', oper => '2373', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '4', oper => '2374', am => '403' },
 { opf => '434', lt => '1114', rt => '1082', str => '5', oper => '2375', am => '403' },
+
 # crosstype operators vs timestamptz
 { opf => '434', lt => '1114', rt => '1184', str => '1', oper => '2534', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '2', oper => '2535', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '3', oper => '2536', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '4', oper => '2537', am => '403' },
 { opf => '434', lt => '1114', rt => '1184', str => '5', oper => '2538', am => '403' },
+
 # default operators timestamptz
 { opf => '434', lt => '1184', rt => '1184', str => '1', oper => '1322', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '2', oper => '1323', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '3', oper => '1320', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '4', oper => '1325', am => '403' },
 { opf => '434', lt => '1184', rt => '1184', str => '5', oper => '1324', am => '403' },
+
 # crosstype operators vs date
 { opf => '434', lt => '1184', rt => '1082', str => '1', oper => '2384', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '2', oper => '2385', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '3', oper => '2386', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '4', oper => '2387', am => '403' },
 { opf => '434', lt => '1184', rt => '1082', str => '5', oper => '2388', am => '403' },
+
 # crosstype operators vs timestamp
 { opf => '434', lt => '1184', rt => '1114', str => '1', oper => '2540', am => '403' },
 { opf => '434', lt => '1184', rt => '1114', str => '2', oper => '2541', am => '403' },
@@ -378,17 +397,22 @@
 
 # bpchar_ops
 { opf => '427', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+
 # char_ops
 { opf => '431', lt => '18', rt => '18', str => '1', oper => '92', am => '405' },
+
 # date_ops
 { opf => '435', lt => '1082', rt => '1082', str => '1', oper => '1093', am => '405' },
+
 # float_ops
 { opf => '1971', lt => '700', rt => '700', str => '1', oper => '620', am => '405' },
 { opf => '1971', lt => '701', rt => '701', str => '1', oper => '670', am => '405' },
 { opf => '1971', lt => '700', rt => '701', str => '1', oper => '1120', am => '405' },
 { opf => '1971', lt => '701', rt => '700', str => '1', oper => '1130', am => '405' },
+
 # network_ops
 { opf => '1975', lt => '869', rt => '869', str => '1', oper => '1201', am => '405' },
+
 # integer_ops
 { opf => '1977', lt => '21', rt => '21', str => '1', oper => '94', am => '405' },
 { opf => '1977', lt => '23', rt => '23', str => '1', oper => '96', am => '405' },
@@ -399,52 +423,76 @@
 { opf => '1977', lt => '23', rt => '20', str => '1', oper => '15', am => '405' },
 { opf => '1977', lt => '20', rt => '21', str => '1', oper => '1868', am => '405' },
 { opf => '1977', lt => '20', rt => '23', str => '1', oper => '416', am => '405' },
+
 # interval_ops
 { opf => '1983', lt => '1186', rt => '1186', str => '1', oper => '1330', am => '405' },
+
 # macaddr_ops
 { opf => '1985', lt => '829', rt => '829', str => '1', oper => '1220', am => '405' },
+
 # macaddr8_ops
 { opf => '3372', lt => '774', rt => '774', str => '1', oper => '3362', am => '405' },
+
 # name_ops
 { opf => '1987', lt => '19', rt => '19', str => '1', oper => '93', am => '405' },
+
 # oid_ops
 { opf => '1990', lt => '26', rt => '26', str => '1', oper => '607', am => '405' },
+
 # oidvector_ops
 { opf => '1992', lt => '30', rt => '30', str => '1', oper => '649', am => '405' },
+
 # text_ops
 { opf => '1995', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+
 # time_ops
 { opf => '1997', lt => '1083', rt => '1083', str => '1', oper => '1108', am => '405' },
+
 # timestamptz_ops
 { opf => '1999', lt => '1184', rt => '1184', str => '1', oper => '1320', am => '405' },
+
 # timetz_ops
 { opf => '2001', lt => '1266', rt => '1266', str => '1', oper => '1550', am => '405' },
+
 # timestamp_ops
 { opf => '2040', lt => '1114', rt => '1114', str => '1', oper => '2060', am => '405' },
+
 # bool_ops
 { opf => '2222', lt => '16', rt => '16', str => '1', oper => '91', am => '405' },
+
 # bytea_ops
 { opf => '2223', lt => '17', rt => '17', str => '1', oper => '1955', am => '405' },
+
 # xid_ops
 { opf => '2225', lt => '28', rt => '28', str => '1', oper => '352', am => '405' },
+
 # cid_ops
 { opf => '2226', lt => '29', rt => '29', str => '1', oper => '385', am => '405' },
+
 # abstime_ops
 { opf => '2227', lt => '702', rt => '702', str => '1', oper => '560', am => '405' },
+
 # reltime_ops
 { opf => '2228', lt => '703', rt => '703', str => '1', oper => '566', am => '405' },
+
 # text_pattern_ops
 { opf => '2229', lt => '25', rt => '25', str => '1', oper => '98', am => '405' },
+
 # bpchar_pattern_ops
 { opf => '2231', lt => '1042', rt => '1042', str => '1', oper => '1054', am => '405' },
+
 # aclitem_ops
 { opf => '2235', lt => '1033', rt => '1033', str => '1', oper => '974', am => '405' },
+
 # uuid_ops
 { opf => '2969', lt => '2950', rt => '2950', str => '1', oper => '2972', am => '405' },
+
 # pg_lsn_ops
 { opf => '3254', lt => '3220', rt => '3220', str => '1', oper => '3222', am => '405' },
+
 # numeric_ops
 { opf => '1998', lt => '1700', rt => '1700', str => '1', oper => '1752', am => '405' },
+
 # array_ops
 { opf => '627', lt => '2277', rt => '2277', str => '1', oper => '1070', am => '405' },
 
@@ -674,24 +722,28 @@
 { opf => '3794', lt => '869', rt => '869', str => '27', oper => '934', am => '4000' },
 
 # BRIN opclasses
+
 # minmax bytea
 { opf => '4064', lt => '17', rt => '17', str => '1', oper => '1957', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '2', oper => '1958', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '3', oper => '1955', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '4', oper => '1960', am => '3580' },
 { opf => '4064', lt => '17', rt => '17', str => '5', oper => '1959', am => '3580' },
+
 # minmax "char"
 { opf => '4062', lt => '18', rt => '18', str => '1', oper => '631', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '2', oper => '632', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '3', oper => '92', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '4', oper => '634', am => '3580' },
 { opf => '4062', lt => '18', rt => '18', str => '5', oper => '633', am => '3580' },
+
 # minmax name
 { opf => '4065', lt => '19', rt => '19', str => '1', oper => '660', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '2', oper => '661', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '3', oper => '93', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '4', oper => '663', am => '3580' },
 { opf => '4065', lt => '19', rt => '19', str => '5', oper => '662', am => '3580' },
+
 # minmax integer
 { opf => '4054', lt => '20', rt => '20', str => '1', oper => '412', am => '3580' },
 { opf => '4054', lt => '20', rt => '20', str => '2', oper => '414', am => '3580' },
@@ -745,18 +797,21 @@
 { opf => '4056', lt => '25', rt => '25', str => '3', oper => '98', am => '3580' },
 { opf => '4056', lt => '25', rt => '25', str => '4', oper => '667', am => '3580' },
 { opf => '4056', lt => '25', rt => '25', str => '5', oper => '666', am => '3580' },
+
 # minmax oid
 { opf => '4068', lt => '26', rt => '26', str => '1', oper => '609', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '2', oper => '611', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '3', oper => '607', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '4', oper => '612', am => '3580' },
 { opf => '4068', lt => '26', rt => '26', str => '5', oper => '610', am => '3580' },
+
 # minmax tid
 { opf => '4069', lt => '27', rt => '27', str => '1', oper => '2799', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '2', oper => '2801', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '3', oper => '387', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '4', oper => '2802', am => '3580' },
 { opf => '4069', lt => '27', rt => '27', str => '5', oper => '2800', am => '3580' },
+
 # minmax float (float4, float8)
 { opf => '4070', lt => '700', rt => '700', str => '1', oper => '622', am => '3580' },
 { opf => '4070', lt => '700', rt => '700', str => '2', oper => '624', am => '3580' },
@@ -785,30 +840,35 @@
 { opf => '4072', lt => '702', rt => '702', str => '3', oper => '560', am => '3580' },
 { opf => '4072', lt => '702', rt => '702', str => '4', oper => '565', am => '3580' },
 { opf => '4072', lt => '702', rt => '702', str => '5', oper => '563', am => '3580' },
+
 # minmax reltime
 { opf => '4073', lt => '703', rt => '703', str => '1', oper => '568', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '2', oper => '570', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '3', oper => '566', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '4', oper => '571', am => '3580' },
 { opf => '4073', lt => '703', rt => '703', str => '5', oper => '569', am => '3580' },
+
 # minmax macaddr
 { opf => '4074', lt => '829', rt => '829', str => '1', oper => '1222', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '2', oper => '1223', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '3', oper => '1220', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '4', oper => '1225', am => '3580' },
 { opf => '4074', lt => '829', rt => '829', str => '5', oper => '1224', am => '3580' },
+
 # minmax macaddr8
 { opf => '4109', lt => '774', rt => '774', str => '1', oper => '3364', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '2', oper => '3365', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '3', oper => '3362', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '4', oper => '3367', am => '3580' },
 { opf => '4109', lt => '774', rt => '774', str => '5', oper => '3366', am => '3580' },
+
 # minmax inet
 { opf => '4075', lt => '869', rt => '869', str => '1', oper => '1203', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '2', oper => '1204', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '3', oper => '1201', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '4', oper => '1206', am => '3580' },
 { opf => '4075', lt => '869', rt => '869', str => '5', oper => '1205', am => '3580' },
+
 # inclusion inet
 { opf => '4102', lt => '869', rt => '869', str => '3', oper => '3552', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '7', oper => '934', am => '3580' },
@@ -816,18 +876,21 @@
 { opf => '4102', lt => '869', rt => '869', str => '18', oper => '1201', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '24', oper => '933', am => '3580' },
 { opf => '4102', lt => '869', rt => '869', str => '26', oper => '931', am => '3580' },
+
 # minmax character
 { opf => '4076', lt => '1042', rt => '1042', str => '1', oper => '1058', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '2', oper => '1059', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '3', oper => '1054', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '4', oper => '1061', am => '3580' },
 { opf => '4076', lt => '1042', rt => '1042', str => '5', oper => '1060', am => '3580' },
+
 # minmax time without time zone
 { opf => '4077', lt => '1083', rt => '1083', str => '1', oper => '1110', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '2', oper => '1111', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '3', oper => '1108', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '4', oper => '1113', am => '3580' },
 { opf => '4077', lt => '1083', rt => '1083', str => '5', oper => '1112', am => '3580' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { opf => '4059', lt => '1114', rt => '1114', str => '1', oper => '2062', am => '3580' },
 { opf => '4059', lt => '1114', rt => '1114', str => '2', oper => '2063', am => '3580' },
@@ -881,36 +944,42 @@
 { opf => '4078', lt => '1186', rt => '1186', str => '3', oper => '1330', am => '3580' },
 { opf => '4078', lt => '1186', rt => '1186', str => '4', oper => '1335', am => '3580' },
 { opf => '4078', lt => '1186', rt => '1186', str => '5', oper => '1334', am => '3580' },
+
 # minmax time with time zone
 { opf => '4058', lt => '1266', rt => '1266', str => '1', oper => '1552', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '2', oper => '1553', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '3', oper => '1550', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '4', oper => '1555', am => '3580' },
 { opf => '4058', lt => '1266', rt => '1266', str => '5', oper => '1554', am => '3580' },
+
 # minmax bit
 { opf => '4079', lt => '1560', rt => '1560', str => '1', oper => '1786', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '2', oper => '1788', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '3', oper => '1784', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '4', oper => '1789', am => '3580' },
 { opf => '4079', lt => '1560', rt => '1560', str => '5', oper => '1787', am => '3580' },
+
 # minmax bit varying
 { opf => '4080', lt => '1562', rt => '1562', str => '1', oper => '1806', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '2', oper => '1808', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '3', oper => '1804', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '4', oper => '1809', am => '3580' },
 { opf => '4080', lt => '1562', rt => '1562', str => '5', oper => '1807', am => '3580' },
+
 # minmax numeric
 { opf => '4055', lt => '1700', rt => '1700', str => '1', oper => '1754', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '2', oper => '1755', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '3', oper => '1752', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '4', oper => '1757', am => '3580' },
 { opf => '4055', lt => '1700', rt => '1700', str => '5', oper => '1756', am => '3580' },
+
 # minmax uuid
 { opf => '4081', lt => '2950', rt => '2950', str => '1', oper => '2974', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '2', oper => '2976', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '3', oper => '2972', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '4', oper => '2977', am => '3580' },
 { opf => '4081', lt => '2950', rt => '2950', str => '5', oper => '2975', am => '3580' },
+
 # inclusion range types
 { opf => '4103', lt => '3831', rt => '3831', str => '1', oper => '3893', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '2', oper => '3895', am => '3580' },
@@ -926,12 +995,14 @@
 { opf => '4103', lt => '3831', rt => '3831', str => '21', oper => '3885', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '22', oper => '3887', am => '3580' },
 { opf => '4103', lt => '3831', rt => '3831', str => '23', oper => '3886', am => '3580' },
+
 # minmax pg_lsn
 { opf => '4082', lt => '3220', rt => '3220', str => '1', oper => '3224', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '2', oper => '3226', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '3', oper => '3222', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '4', oper => '3227', am => '3580' },
 { opf => '4082', lt => '3220', rt => '3220', str => '5', oper => '3225', am => '3580' },
+
 # inclusion box
 { opf => '4104', lt => '603', rt => '603', str => '1', oper => '493', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '2', oper => '494', am => '3580' },
@@ -945,6 +1016,7 @@
 { opf => '4104', lt => '603', rt => '603', str => '10', oper => '2570', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '11', oper => '2573', am => '3580' },
 { opf => '4104', lt => '603', rt => '603', str => '12', oper => '2572', am => '3580' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { opf => '4104', lt => '603', rt => '600', str => '7', oper => '433', am => '3580' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index a165e06..6c25ebf 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -260,21 +260,25 @@
 { opf => '5000', lt => '603', rt => '603', num => '5', amproc => '5016' },
 
 # BRIN opclasses
+
 # minmax bytea
 { opf => '4064', lt => '17', rt => '17', num => '1', amproc => '3383' },
 { opf => '4064', lt => '17', rt => '17', num => '2', amproc => '3384' },
 { opf => '4064', lt => '17', rt => '17', num => '3', amproc => '3385' },
 { opf => '4064', lt => '17', rt => '17', num => '4', amproc => '3386' },
+
 # minmax "char"
 { opf => '4062', lt => '18', rt => '18', num => '1', amproc => '3383' },
 { opf => '4062', lt => '18', rt => '18', num => '2', amproc => '3384' },
 { opf => '4062', lt => '18', rt => '18', num => '3', amproc => '3385' },
 { opf => '4062', lt => '18', rt => '18', num => '4', amproc => '3386' },
+
 # minmax name
 { opf => '4065', lt => '19', rt => '19', num => '1', amproc => '3383' },
 { opf => '4065', lt => '19', rt => '19', num => '2', amproc => '3384' },
 { opf => '4065', lt => '19', rt => '19', num => '3', amproc => '3385' },
 { opf => '4065', lt => '19', rt => '19', num => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { opf => '4054', lt => '20', rt => '20', num => '1', amproc => '3383' },
 { opf => '4054', lt => '20', rt => '20', num => '2', amproc => '3384' },
@@ -320,16 +324,19 @@
 { opf => '4056', lt => '25', rt => '25', num => '2', amproc => '3384' },
 { opf => '4056', lt => '25', rt => '25', num => '3', amproc => '3385' },
 { opf => '4056', lt => '25', rt => '25', num => '4', amproc => '3386' },
+
 # minmax oid
 { opf => '4068', lt => '26', rt => '26', num => '1', amproc => '3383' },
 { opf => '4068', lt => '26', rt => '26', num => '2', amproc => '3384' },
 { opf => '4068', lt => '26', rt => '26', num => '3', amproc => '3385' },
 { opf => '4068', lt => '26', rt => '26', num => '4', amproc => '3386' },
+
 # minmax tid
 { opf => '4069', lt => '27', rt => '27', num => '1', amproc => '3383' },
 { opf => '4069', lt => '27', rt => '27', num => '2', amproc => '3384' },
 { opf => '4069', lt => '27', rt => '27', num => '3', amproc => '3385' },
 { opf => '4069', lt => '27', rt => '27', num => '4', amproc => '3386' },
+
 # minmax float
 { opf => '4070', lt => '700', rt => '700', num => '1', amproc => '3383' },
 { opf => '4070', lt => '700', rt => '700', num => '2', amproc => '3384' },
@@ -356,26 +363,31 @@
 { opf => '4072', lt => '702', rt => '702', num => '2', amproc => '3384' },
 { opf => '4072', lt => '702', rt => '702', num => '3', amproc => '3385' },
 { opf => '4072', lt => '702', rt => '702', num => '4', amproc => '3386' },
+
 # minmax reltime
 { opf => '4073', lt => '703', rt => '703', num => '1', amproc => '3383' },
 { opf => '4073', lt => '703', rt => '703', num => '2', amproc => '3384' },
 { opf => '4073', lt => '703', rt => '703', num => '3', amproc => '3385' },
 { opf => '4073', lt => '703', rt => '703', num => '4', amproc => '3386' },
+
 # minmax macaddr
 { opf => '4074', lt => '829', rt => '829', num => '1', amproc => '3383' },
 { opf => '4074', lt => '829', rt => '829', num => '2', amproc => '3384' },
 { opf => '4074', lt => '829', rt => '829', num => '3', amproc => '3385' },
 { opf => '4074', lt => '829', rt => '829', num => '4', amproc => '3386' },
+
 # minmax macaddr8
 { opf => '4109', lt => '774', rt => '774', num => '1', amproc => '3383' },
 { opf => '4109', lt => '774', rt => '774', num => '2', amproc => '3384' },
 { opf => '4109', lt => '774', rt => '774', num => '3', amproc => '3385' },
 { opf => '4109', lt => '774', rt => '774', num => '4', amproc => '3386' },
+
 # minmax inet
 { opf => '4075', lt => '869', rt => '869', num => '1', amproc => '3383' },
 { opf => '4075', lt => '869', rt => '869', num => '2', amproc => '3384' },
 { opf => '4075', lt => '869', rt => '869', num => '3', amproc => '3385' },
 { opf => '4075', lt => '869', rt => '869', num => '4', amproc => '3386' },
+
 # inclusion inet
 { opf => '4102', lt => '869', rt => '869', num => '1', amproc => '4105' },
 { opf => '4102', lt => '869', rt => '869', num => '2', amproc => '4106' },
@@ -384,16 +396,19 @@
 { opf => '4102', lt => '869', rt => '869', num => '11', amproc => '4063' },
 { opf => '4102', lt => '869', rt => '869', num => '12', amproc => '4071' },
 { opf => '4102', lt => '869', rt => '869', num => '13', amproc => '930' },
+
 # minmax character
 { opf => '4076', lt => '1042', rt => '1042', num => '1', amproc => '3383' },
 { opf => '4076', lt => '1042', rt => '1042', num => '2', amproc => '3384' },
 { opf => '4076', lt => '1042', rt => '1042', num => '3', amproc => '3385' },
 { opf => '4076', lt => '1042', rt => '1042', num => '4', amproc => '3386' },
+
 # minmax time without time zone
 { opf => '4077', lt => '1083', rt => '1083', num => '1', amproc => '3383' },
 { opf => '4077', lt => '1083', rt => '1083', num => '2', amproc => '3384' },
 { opf => '4077', lt => '1083', rt => '1083', num => '3', amproc => '3385' },
 { opf => '4077', lt => '1083', rt => '1083', num => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { opf => '4059', lt => '1114', rt => '1114', num => '1', amproc => '3383' },
 { opf => '4059', lt => '1114', rt => '1114', num => '2', amproc => '3384' },
@@ -439,31 +454,37 @@
 { opf => '4078', lt => '1186', rt => '1186', num => '2', amproc => '3384' },
 { opf => '4078', lt => '1186', rt => '1186', num => '3', amproc => '3385' },
 { opf => '4078', lt => '1186', rt => '1186', num => '4', amproc => '3386' },
+
 # minmax time with time zone
 { opf => '4058', lt => '1266', rt => '1266', num => '1', amproc => '3383' },
 { opf => '4058', lt => '1266', rt => '1266', num => '2', amproc => '3384' },
 { opf => '4058', lt => '1266', rt => '1266', num => '3', amproc => '3385' },
 { opf => '4058', lt => '1266', rt => '1266', num => '4', amproc => '3386' },
+
 # minmax bit
 { opf => '4079', lt => '1560', rt => '1560', num => '1', amproc => '3383' },
 { opf => '4079', lt => '1560', rt => '1560', num => '2', amproc => '3384' },
 { opf => '4079', lt => '1560', rt => '1560', num => '3', amproc => '3385' },
 { opf => '4079', lt => '1560', rt => '1560', num => '4', amproc => '3386' },
+
 # minmax bit varying
 { opf => '4080', lt => '1562', rt => '1562', num => '1', amproc => '3383' },
 { opf => '4080', lt => '1562', rt => '1562', num => '2', amproc => '3384' },
 { opf => '4080', lt => '1562', rt => '1562', num => '3', amproc => '3385' },
 { opf => '4080', lt => '1562', rt => '1562', num => '4', amproc => '3386' },
+
 # minmax numeric
 { opf => '4055', lt => '1700', rt => '1700', num => '1', amproc => '3383' },
 { opf => '4055', lt => '1700', rt => '1700', num => '2', amproc => '3384' },
 { opf => '4055', lt => '1700', rt => '1700', num => '3', amproc => '3385' },
 { opf => '4055', lt => '1700', rt => '1700', num => '4', amproc => '3386' },
+
 # minmax uuid
 { opf => '4081', lt => '2950', rt => '2950', num => '1', amproc => '3383' },
 { opf => '4081', lt => '2950', rt => '2950', num => '2', amproc => '3384' },
 { opf => '4081', lt => '2950', rt => '2950', num => '3', amproc => '3385' },
 { opf => '4081', lt => '2950', rt => '2950', num => '4', amproc => '3386' },
+
 # inclusion range types
 { opf => '4103', lt => '3831', rt => '3831', num => '1', amproc => '4105' },
 { opf => '4103', lt => '3831', rt => '3831', num => '2', amproc => '4106' },
@@ -472,11 +493,13 @@
 { opf => '4103', lt => '3831', rt => '3831', num => '11', amproc => '4057' },
 { opf => '4103', lt => '3831', rt => '3831', num => '13', amproc => '3859' },
 { opf => '4103', lt => '3831', rt => '3831', num => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { opf => '4082', lt => '3220', rt => '3220', num => '1', amproc => '3383' },
 { opf => '4082', lt => '3220', rt => '3220', num => '2', amproc => '3384' },
 { opf => '4082', lt => '3220', rt => '3220', num => '3', amproc => '3385' },
 { opf => '4082', lt => '3220', rt => '3220', num => '4', amproc => '3386' },
+
 # inclusion box
 { opf => '4104', lt => '603', rt => '603', num => '1', amproc => '4105' },
 { opf => '4104', lt => '603', rt => '603', num => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index 927128e..315b0d0 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -1,12 +1,14 @@
 # pg_authid.dat
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# The C code typically refers to these roles using the #define symbols
+# in pg_authid.h, so be sure to keep those in sync with the data here.
+
+# The uppercase quantities will be replaced at initdb time with user choices.
+# so we must double-quote them.
 { oid => '10',
-  rolname => 'POSTGRES', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't' },
+
 { oid => '3373',
   rolname => 'pg_monitor' },
 { oid => '3374',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index a1fe83d..add77ad 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -54,6 +54,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -193,6 +194,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -227,6 +229,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -241,6 +244,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -248,6 +252,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -256,6 +261,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index af762e8..d574ba8 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -1,12 +1,10 @@
 # pg_class.dat
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
-# Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
-# similarly, "1" in relminmxid stands for FirstMultiXactId
 { oid => '1247',
   relname => 'pg_type', reltype => '71', relnatts => '30', relhasoids => 't' },
 { oid => '1249',
@@ -16,11 +14,4 @@
 { oid => '1259',
   relname => 'pg_class', reltype => '83', relnatts => '33', relhasoids => 't' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bc4d41f..dfa1553 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -1,7 +1,10 @@
 # pg_database.dat
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 646fd30..3281eea 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -8,6 +8,4 @@
 { oid => '2200', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index b0f2e8c..8e4569e 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -44,12 +44,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcfamily => '1985', opcintype => '829' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcfamily => '3371', opcintype => '774' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcfamily => '3372', opcintype => '774' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcfamily => '1986', opcintype => '19', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcfamily => '1987', opcintype => '19' },
 { oid => '3125',
   opcmethod => '403', opcname => 'numeric_ops', opcfamily => '1988', opcintype => '1700' },
@@ -124,7 +126,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcfamily => '4064', opcintype => '17', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcfamily => '4062', opcintype => '18', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcfamily => '4065', opcintype => '19', opckeytype => '19' },
@@ -152,12 +156,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcfamily => '4079', opcintype => '1560', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcfamily => '4080', opcintype => '1562', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcfamily => '4055', opcintype => '1700', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcfamily => '4081', opcintype => '2950', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcfamily => '4103', opcintype => '3831', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcfamily => '4082', opcintype => '3220', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcfamily => '4104', opcintype => '603', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index 1437225..898e2ae 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -1,7 +1,7 @@
 # pg_operator.dat
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.h is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1581,6 +1581,7 @@
   oprname => '&&', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_and' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => 'tsquery_or' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcode => '5003' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index ed5db1e..2aeb6e2 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -1,14 +1,16 @@
 # pg_proc.dat
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -17,7 +19,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier
 
 # OIDS 1 - 99
 
@@ -1774,6 +1776,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   n => 'obj_description', prolang => '14', procost => '100', v => 's', p => 's', rt => '25', at => '26', s => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   n => 'oidvectortypes', v => 's', p => 's', rt => '25', at => '30' },
 
@@ -1934,11 +1937,11 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   n => 'pclose', p => 's', rt => '602', at => '602', s => 'path_close' },
 { oid => '1434', descr => 'open path',
   n => 'popen', p => 's', rt => '602', at => '602', s => 'path_open' },
+
 { oid => '1435',
   n => 'path_add', p => 's', rt => '602', at => '602 602' },
 { oid => '1436',
@@ -2730,6 +2733,7 @@
   n => 'interval_hash_extended', p => 's', rt => '20', at => '1186 20' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   n => 'numeric_in', p => 's', rt => '1700', at => '2275 26 23' },
 { oid => '1702', descr => 'I/O',
@@ -4753,6 +4757,7 @@
   n => 'bool_anytrue', p => 's', rt => '16', at => '2281' },
 { oid => '2517', descr => 'boolean-and aggregate',
   n => 'bool_and', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   n => 'bool_or', proisagg => 't', proisstrict => 'f', p => 's', rt => '16', at => '16', s => 'aggregate_dummy' },
@@ -4802,6 +4807,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   n => 'pg_postmaster_start_time', v => 's', p => 's', rt => '1184', at => '' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   n => 'pg_conf_load_time', v => 's', p => 'r', rt => '1184', at => '' },
@@ -5658,6 +5664,7 @@
   n => 'jsonb_pretty', p => 's', rt => '25', at => '3802' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   n => 'jsonb_insert', p => 's', rt => '3802', at => '3802 1009 3802 16' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   n => 'txid_snapshot_in', p => 's', rt => '2970', at => '2275' },
@@ -6069,37 +6076,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   n => 'pg_replication_origin_create', v => 'v', rt => '26', at => '25' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   n => 'pg_replication_origin_drop', v => 'v', rt => '2278', at => '25' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   n => 'pg_replication_origin_oid', v => 's', p => 's', rt => '26', at => '25' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   n => 'pg_replication_origin_session_setup', v => 'v', rt => '2278', at => '25' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   n => 'pg_replication_origin_session_reset', v => 'v', rt => '2278', at => '' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   n => 'pg_replication_origin_session_is_setup', v => 'v', p => 'r', rt => '16', at => '' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   n => 'pg_replication_origin_session_progress', v => 'v', rt => '3220', at => '16' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   n => 'pg_replication_origin_xact_setup', v => 'v', p => 'r', rt => '2278', at => '3220 1184' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   n => 'pg_replication_origin_xact_reset', v => 'v', p => 'r', rt => '2278', at => '' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   n => 'pg_replication_origin_advance', v => 'v', rt => '2278', at => '25 3220' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   n => 'pg_replication_origin_progress', v => 'v', rt => '3220', at => '25 16' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   n => 'pg_show_replication_origin_status', prorows => '100', proisstrict => 'f', proretset => 't', v => 'v', p => 'r', rt => '2249', at => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}' },
 
@@ -6122,20 +6118,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   n => 'pg_control_system', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   n => 'pg_control_checkpoint', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   n => 'pg_control_recovery', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   n => 'pg_control_init', v => 'v', p => 's', rt => '2249', at => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   n => 'pg_import_system_collations', procost => '100', v => 'v', p => 'r', rt => '23', at => '4089' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   n => 'pg_collation_actual_version', procost => '100', v => 'v', p => 's', rt => '25', at => '26' },
 
@@ -6149,19 +6141,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   n => 'satisfies_hash_partition', provariadic => '2276', proisstrict => 'f', p => 's', rt => '16', at => '26 23 23 2276', proargmodes => '{i,i,i,v}' },
 
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 063b975..cd9a78b 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -8,6 +8,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 65a60bd..a94010d 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -7,48 +7,35 @@
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', typispreferred => 't', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' },
-
 { oid => '17', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' },
-
 { oid => '18', descr => 'single character',
   typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
-
 { oid => '19', descr => '63-byte type for storing system identifiers',
   typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', typcategory => 'S', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typalign => 'c' },
-
 { oid => '20', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' },
-
 { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
-
 { oid => '22', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' },
-
 { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
-
 { oid => '24', descr => 'registered procedure',
   typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
-
 { oid => '25', descr => 'variable-length string, no limit specified',
   typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', typispreferred => 't', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', typispreferred => 't', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' },
-
 { oid => '27', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
-
 { oid => '28', descr => 'transaction id',
   typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
-
 { oid => '29', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
-
 { oid => '30', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' },
 
@@ -65,6 +52,7 @@
   typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => '1259', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 
 # OIDS 100 - 199
+
 { oid => '114',
   typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typalign => 'i', typstorage => 'x' },
 { oid => '142', descr => 'XML content',
@@ -73,16 +61,12 @@
   typname => '_xml', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '199',
   typname => '_json', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
-
 { oid => '194', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '3361', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '3402', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', typcategory => 'S', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', typcollation => '100' },
-
 { oid => '32', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' },
 
@@ -98,6 +82,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' },
 { oid => '601', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -108,7 +93,6 @@
   typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', typdelim => '\073', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typalign => 'd' },
 { oid => '604', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typalign => 'd', typstorage => 'x' },
-
 { oid => '628', descr => 'geometric line',
   typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' },
 { oid => '629',
@@ -128,7 +112,6 @@
   typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typalign => 'i' },
 { oid => '705',
   typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
-
 { oid => '718', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' },
 { oid => '719',
@@ -151,6 +134,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '1001',
@@ -231,6 +215,7 @@
   typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typalign => 'd' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', descr => 'date and time',
   typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'D', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typalign => 'd' },
 { oid => '1115',
@@ -249,6 +234,7 @@
   typname => '_interval', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '1266', descr => 'time of day with time zone',
@@ -257,6 +243,7 @@
   typname => '_timetz', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', descr => 'fixed-length bit string',
   typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typalign => 'i', typstorage => 'x' },
 { oid => '1561',
@@ -269,37 +256,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typalign => 'i', typstorage => 'm' },
-
 { oid => '1790', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', typstorage => 'x' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
-
 { oid => '2202', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typalign => 'i' },
-
 { oid => '2203', descr => 'registered operator',
   typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
-
 { oid => '2204', descr => 'registered operator (with args)',
   typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typalign => 'i' },
-
 { oid => '2205', descr => 'registered class',
   typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
-
 { oid => '2206', descr => 'registered type',
   typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
-
 { oid => '4096', descr => 'registered role',
   typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
-
 { oid => '4089', descr => 'registered namespace',
   typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typalign => 'i' },
-
 { oid => '2207',
   typname => '_regprocedure', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '2208',
@@ -338,7 +318,6 @@
   typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' },
 { oid => '3769', descr => 'registered text search dictionary',
   typname => 'regdictionary', typlen => '4', typbyval => 't', typcategory => 'N', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typalign => 'i' },
-
 { oid => '3643',
   typname => '_tsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' },
 { oid => '3644',
@@ -395,6 +374,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249',
   typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 { oid => '2287',
@@ -432,8 +412,4 @@
 { oid => '3831',
   typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v4-0007-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v4-0007-Update-catalog-scripts-to-read-data-files.patchDownload
From 6ca50a54b9a03f7b6c53d1cc369d3bddbc58c54b Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 18 Dec 2017 13:11:16 +0700
Subject: [PATCH v4 07/12] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/catalog/Makefile       |  11 ++-
 src/backend/catalog/README         |  82 +++++++++++++++++++----
 src/backend/catalog/genbki.pl      | 133 ++++++++++++++++++++++++++++---------
 src/backend/utils/Gen_fmgrtab.pl   |  32 ++++-----
 src/backend/utils/Makefile         |   2 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 8 files changed, 207 insertions(+), 70 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..d1ba320 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,73 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data literals that are simply eval'd to
+produce in-memory data structures.  As such, the code reading them doesn't
+care about ordering and layout, but in order to maintain a standard
+appearance, src/include/catalog/rewrite_dat.pl should be run before
+committing data changes.  Each file contains an array of hash references,
+which represent the data entries.  The best examples are the existing
+data files, but an altered subset of pg_database.dat will demonstrate
+the key features:
+
+[
+# a comment
+{ oid => '1',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The fields oid, descr, and shdescr are on their own line within the
+hash.  (This is done automatically during rewriting so don't worry about
+their placement during development.)
+
+- Some techniques are used to keep the data representation compact.
+These are automatically enforced by rewrite_dat.pl, but you should be
+aware of them.  pg_proc.dat uses all three of them in an attempt to keep
+the file manageable:
+1. If the .h file specifies a default value for a column, and a data entry
+has that same value, it will be ommitted from the data file.
+2. Likewise, some values could be computed from other values, so are also
+left out.
+3. If the .h file specifies a column abbeviation, then it will be used as
+the hash key in the data entry.
+
+- If you want to change a default value or abbreviation, you must
+1. rewrite the data files into the expanded representation via
+"perl -I ../../backend/catalog rewrite_dat.pl pg_foo.dat --expand".
+2. change the relevant .h file to use the new default/abbreviation.
+3. run rewrite_dat.pl without the expand parameter to write out the new
+compact representation.  The first step can be skipped if you are adding
+a new default/abbreviation.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -49,19 +98,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +154,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index cf6de28..00fc35d 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,11 +143,11 @@ my %regprocoids;
 my @types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
@@ -156,17 +191,13 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	if (defined $catalog_data{$catname})
 	{
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
+		# Ordinary catalog with a data file
+		foreach my $row (@{ $catalog_data{$catname} })
 		{
-
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
+			my %bki_values = %$row;
 
 			# Perform required substitutions on fields
 			foreach my $column (@$schema)
@@ -200,7 +231,7 @@ foreach my $catname (@{ $catalogs->{names} })
 				}
 				else
 				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
+					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 				}
 			}
 
@@ -208,38 +239,38 @@ foreach my $catname (@{ $catalogs->{names} })
 			if ($catname eq 'pg_type')
 			{
 				my %type = %bki_values;
-				$type{oid} = $row->{oid};
 				push @types, \%type;
 			}
 
+			# Add quotes where necessary.
+			quote_bki_values(\%bki_values, $schema);
+
 			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
+			bki_insert(\%bki_values, @attnames);
 
 			# Write comments to postgres.description and
 			# postgres.shdescription
-			if (defined $row->{descr})
+			if (defined $bki_values{descr})
 			{
 				printf $descr "%s\t%s\t0\t%s\n",
-				  $row->{oid}, $catname, $row->{descr};
+				  $bki_values{oid}, $catname, $bki_values{descr};
 			}
-			if (defined $row->{shdescr})
+			if (defined $bki_values{shdescr})
 			{
 				printf $shdescr "%s\t%s\t%s\n",
-				  $row->{oid}, $catname, $row->{shdescr};
+				  $bki_values{oid}, $catname, $bki_values{shdescr};
 			}
 		}
 	}
 	if ($catname eq 'pg_attribute')
 	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
+		# For pg_attribute.h, we generate data entries ourselves.
 		# NB: pg_type.h must come before pg_attribute.h in the input list
 		# of catalog names, since we use info from pg_type.h here.
-		foreach my $table_name (@{ $catalogs->{names} })
+		foreach my $table_name (@catnames)
 		{
-			my $table = $catalogs->{$table_name};
+			my $table = $catalogs{$table_name};
 
 			# Currently, all bootstrapped relations also need schemapg.h
 			# entries, so skip if the relation isn't to be in schemapg.h.
@@ -316,12 +347,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -379,6 +410,46 @@ exit 0;
 
 #################### Subroutines ########################
 
+# Supply quoting for a normal bki row.
+# This allows us to keep most double quotes
+# out of the catalog data files for readability.
+sub quote_bki_values
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if
+		(
+			length($row->{$attname}) == 0  # Empty string
+			or $row->{$attname} =~ /\s/    # Whitespace
+
+			# Quote strings that have special characters
+			# except for certain cases. See bootscanner.l
+			or (    $row->{$attname} =~ /\W/
+				and $row->{$attname} !~ /^\\\d{3}$/  # octal
+				and $row->{$attname} !~ /^-\d*$/)    # '-' or '-1'
+
+			# XXX Not needed, but keeps the .bki diff down to a reasonable
+			# size during review
+			or $attname eq 'oprname'    # Operator names
+			or $atttype eq 'oidvector'  # Arrays etc.
+			or $atttype eq 'int2vector'
+			or $atttype =~ /\[\]$/
+		)
+		{
+			if ($row->{$attname} ne '_null_' and $row->{$attname} !~ /^"([^"])*"$/)
+			{
+				$row->{$attname} = q|"| . $row->{$attname} . q|"|;
+			}
+		}
+	}
+}
+
 
 # Given the schema of pg_attribute, generate an entry for it using information
 # about the attribute it describes.  Any value that is not handled here
@@ -452,7 +523,7 @@ sub emit_pgattr_row
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki
 sub bki_insert
 {
 	my $row        = shift;
@@ -522,8 +593,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 14c02f5..f30a9e7 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.h and pg_proc.dat
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -55,35 +55,35 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 die "No input files.\n"                                     if !$infile;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# We pass the pg_proc.h path as an argument and then look for a matching
+# data file.
+$infile =~ /(.+)\.h$/
+  or die "Input file needs to be a header file.\n";
+my $datfile = "$1.dat";
+die "No data file\n"
+  if ! -e $datfile;
+
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
+# Read all the files into internal data structures.
+my $catalog = Catalog::ParseHeader($infile);
+my $data    = Catalog::ParseData($datfile, $catalog->{columns}, 0);
 
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
 foreach my $row (@$data)
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -284,7 +284,7 @@ sub usage
 Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.h and pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..8ccfc3b 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,7 +24,7 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h $(top_srcdir)/src/include/catalog/pg_proc.dat
 	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
-- 
2.7.4

v4-0008-Remove-data-from-catalog-headers.patch.tar.gzapplication/x-gzip; name=v4-0008-Remove-data-from-catalog-headers.patch.tar.gzDownload
���;Z���{�H� ��������KRH<�gz��R�|��=����������.�T��}���_Dd&�	��\��g[")0"#22"2��>;���:~�^o������_�������^_�����On�������(�,�����=���8K���IQ��SFq�$Y�_��n��������������>�Q����O��QYe=��<)�b���i.��\���rQ����Zdm�D?n7���&J�����O�Bs>�b~�� ��U�i��E�����>����Y�O��?<��9�����n��$��o�
e%��X��,��e������]~��o��=�!z�Eq�m��?���4B-���FBK=z�������p�F�?={�����,��O�={���M���!����m��#������a���50��������G�~��v�Y�o�����o/������U4����RE�XW�e�q���bjE��<o./w�%p�#bR�N�k�D1�����FI\�h������6�j��c�e{1D%������ �(*��������z���j
E@\-M�Uw!.���(��%�q���f�I�u\l�����n��I<���a��6:����W@|�$��.D4�y�4c@;.�����=����bd~VA������Y�U���7���n�Y���nu3lb��>������_��=8�s����v���g��xh7�f��v��.7���v��
����ow�V��JDP�u;����->��x��V��E�e����7�������:�n6�����8��c��.�-��#w���>��`k�Vt�f�\���fap�8�7F/�]���9lw#�$%�x����7��j�i,�$u����Vh��R�=��n����f=��ID���VD�3r���n���b�?��G<��k���w��C%�B��]{�Q��7[q��&�k?���h�Y�_�|�����<�R��a�0�\7E��^{�$�[+!:�B����TVG=Q0�C�������!�_77�p�����j1
��>�7���B4y�������`UX��~��D����Os����g��zt����#F�TG+P�hq��b	���E�
�������(N�*Z���?;�������":>�\��[�n�����]\4i}r�(����@3.�����}��7>�ct�������|E���/��Y#����v�2��X"���Y��7���={�n0>���+E��.h\��/_?2�c����{q����g���>}C�d�������Y���G�x
����oi|Mcr��p�[@m����=�`�~��N��'gW����cD��%��w���^nVo	O0z�����v�^RQ�#1�n8�����Vc��kj��<J�[��L����������?����/O_=��[�������=�.���WK�s�0�[5k����f����NP4��b=;mZ����x�B����u�jv�����~�6���a:�T�?������k�/��w,'�l��������n��
8M� |��:'<�
:�������>?}���2�5]e
�lX=�0����jV��\$Y�T~�U���DB6�q#�x�]-�g���f�~�~�}����qT���(z���$�wX-��=�Q��oIS��s"=�������s�������fEC���&*8��>����1�y�"���tvrB�m�8��>�������O����x���OO0�?�Z��5aT��_���?�� ��f����	��(�m������$+j������u(I����W� ��G�W��N�a3C��:��?��?E_��s����p�N���j�W�n�T��b���|)i@���u�]o����H���=��/���F�+�Nd]l�������h����I���C%t�����*����X{��^a�>����_��?��������^��#�j��	���������g�����{ �>b
t�/��cPy  �����=�>��x�=��1�g�(F�����Y,n�g���54���f����g����?���1�Zg�3�tOE���6���.��h��Y�V�,������z}�����k��ej�$�}����G�
0�?�a���U \�����o|����|7��JV�;�������UF����i*Of3�/�������TQ�1����T��hK�VQ�!D_2���z���y�_����	mp���rNSp<�R&�:��{f�_��B�g�{���#C�_V
U��?��*�)�&U9����hA�fy$?p�5<��������^��z{�Y}n���������aa����z�!�N.��S�#
�C��vu��Y�;��a-��'^8�c����2&���`I�X��t5�t2�4�v���\m����A��WF&j�/�B�`�{Q�lz6�(�]��4d	|G1��BX�<���_���4'�r�����F������E�������CM'�-����$��BH�)�x�&���|:$���J�4��^�E�o�"A��$���������\���P'��Tq���jB��fS�V��S�
�i:�&w��%�\#�=qQ����.�J�P�����P��8����l
���z������#'�<��%��y�i�U�h�1�k=M�����Cs}�V���J;��/�h�:m]���vy��W��Wz���D������f,�}k0m�����@��'N��5��@��Z��j�����e^�������Snv���FW{�v%��,���7������id�Gn�F���U�R�������l#� ����']��'.�,�����������g]��gN�v���v��q��1�c]wX����Z���'�0.���n�*�����L��X7NHG4�0���@�e2��I��^
�C9�L�t�Tb9�G0�N�X�sc�U�2�����������U}@�UV{�	������N��=�t���.���nDWy�	���!]�t!����wP�N��t��U6=u�u���.c��NP��q]����S;��w1�Z}�CW`�N
����tMS���lj`�Z`��{6x�����]��vZ��G��.���jp�<sS����]%�;���}"�PO
��>����=�x��/�<]������x����`��~�b�Y�7�OJ�w�&������U!��C������MM]�L%;���u�uwQ�:�M����j]&��.�4����������H]��+6�b�hU��s���2�V?2�2�$�=�u���F���x���)�l�M��}�����:��"5K�����f�����XwU�b����{:�{-��bR[��9l��I�J�E��G:bwY"A�=De&?Td��!�/��8����"K�~��������^���=���-�=@��S������~�6���,oto[����d�������]t���P`���l���n���94i���o%�;~�G�[I?����$���A�V��c�_�I$�;��UX�EQ� ~kX.���]�YR���]�J����4w;%E��[R��oT��g�_�kz���V��i�/:��������v����P�������Le��\���I�}����9�����g�����c�2����g	���T0���	A��������~�J����	k��6�������@�[Kro���n���kI}�������$��~��������u8v���7�u�
�����#����w��2�c���S�k��a"��;��7y�JY�O��MZ=U4\����&���-��9���=���+=��B\\�(@*m����O�~I�� )��,�,5�/?��,�0�>��,e,��_���UZoo�_��"�'�c�ho�[�����_��X�BX}�/����/����3j8uz��v�6�c�w���o�
]].�3�������,��3�TT��H�s�>�n�~�l5�c���.b�\��X�v7�h�������P=���W�o����j���K<Jch���!=������\A�i;��~[u�U7�o�[>'S���k�������?e���Z��[�IT�>	�V��_�)�Se?�Z��[�iTx�J�WF�����	`S��J���?���������j���^l7���v�$3�	�����2q,�o�����k���|���c���Xr��q��G���b�4�S����s�CtH�a� 	���v���&
�����MB�:�����
���pp5�������X,)9K���J����{�fHX�#:"�B�|�&wo,znFZ�<�G���a��]����B�"��A ������-�]�<��
��>�lW��n�C����t��Y���\Si����j��/W��|�I�������T��e��!��_#6.��F1���l��3RMk����a���C5K��Y4nJ$U���m�r�`����vf���V1��l�bve�����K���N��S
q>���x�c?0�"�8hbx0R?��L��o��?}������g��ij��;����}��8M.���������	K2z��.z��M��������������=���g��~�)Zn�~4"?c�<O�L������p|b�3���n��L���}�����W�W��z�����+�i�U�M^b��2�^+)L�?�������x#2�����*����>6�E��G���j�$<k�Rl]s��kS��>Y�j��_|�+��|4?����+3��[	�@�����{���V2�~w��������X6�l&�#��f5������/�����'�������l��fr�W������xw&�A�&ri�����m��|��U�W�je#��
U�����9���7j
�tU�WDu��:��Y���v�sD7��O�{����.�y�W�`6nS������nSs�k�^t	U���e�W��4�v	T��S �t��l������h�^y���L3�G�v<�d�3}�[�{���Q�Kon�������t�����h6�����7n��-�����,�9PV3P���"y���x$<K`��3��$���|�]@lu���4�����Q�Y`�9A�*4��m�{l��2�	!ga��BB3*;Lf��!�&1�"P�[1�!���&�I^�3��g��9���6�p���PPf�:`�A�Q��u����Es�H��!sy&=C�����%���(�d&|C
�����(�4
��$�8�"��2iU��0ieb
�����Y��bY�,	p��@�8�XJ K�1�"����biIU4m,���+����
���d���5��,L.�K����P��1K��	�(�I%Xh�\%jzYmWK-�V���?(�"�]�hB�8�����2:����@����'0��Ci�+��@Y���5����!
�����3^�Cx�������}��p*E�@����;�"s�(��"s6�MJ�9N�&���6�@�Rd�C���q���f����$(�@B�'QyF*<	��tTx�'�R�I`iH��%b�f�"E��D�1I�PD/�KE�3I�XDO���b��P�N(E"���IQ�#E����H�I�(C�t)�,TOl}o_��%������3�U��x�U���g��"p=������L{v�����!���Q�{8�B������EQ���h:��Z7�^���H0���P�
g�)�d)�;"��i���7`2��i�
4�H�:T�2\:{�{�����@s!��������`.w��Cs!�:`�{�e$�8K�he�t����r�:�q���aN[�1r�;��oGs���"K�����1�W�S�b�8�cH�B�(��1�T�s^v�C3�S�c� ��)����]r:|������3���
�qx��T�����'&����,���Q������J�i�k�|����5�7��V�r�CnU.�4��V��qZ"���>��GBI��1!�%�)��b0��2�F�1%�9��'J��w��*)#�[`p9}����i}.#�o`p��h]
D��)P�tK��c�
��`�/�#�~��0r���)���P�������Q��5�59�����^bp�)]=��kN9\���uq�K���Q�#���+�+g~��ad���:��cT���O�����{��F�BT�x#��*E<���"���!�����
��J��*�������4��t��������w.v���,�i�{���U��9�BUT��<UQ���Lk����M��U*&^P#���%�(�q��l>M@�8��|��s����q�X+��iPh
#[�����k�~��r�#�Q�0B�8�c&`��s��!�no�s'�jY��j���
w����
���)�
w��I�
���%��f�,�;�t�h���_�M��"�R������8�[.*B��RQr� ��"�����~Q(����)Gp�<@`�!�B��_��#����� VE)I�EM�\Qb�:���%v���\Q\K��(�{e[E���.��|Av���G�h V�&���()Gq����8��Hu�����u���8gL���u�b��~�$��&�z`�G����B�(�$����������y=s/���Z{���E,^H��xt����rN��\+�q��+E����1�N�Q�@(���].�����T�`���fG()Gqg#�Qf9B�8�k��%�(��`�`�Ms��ecQ��k-0�p�����@���K'�A��C���C4p>>�71W\�)G�.)K�:3@��I���(r�e
P���
sm���n�O�!@��e�/m�un���S�wWS��%���k���UR��	��n�k��a#���V1��6���0tx�h���0�����Kux�l[��h�����p��;�����
���R���x�w�t-:<#xw%Ux�}���8��	����"v�0�E������'�4��/<�&e����6�1��S�Z�|��t-����v���HK�0����\<0mo�F�1�b��T�
y�����b�#��fu�\�|K��g��M��g.}K���!�!F�i8$4��9�QBb����{�j
���������J�\wJG�<������!���1�;����[�@27������5i�����������0R�����q��
02����#�F���C��]����x:��^�\�qw��p���F������6���/�
J���������\�+r�T;xukf|��5�OC�a)���VI^k�T>�Je('(�eP�����fN�	�?8V@+gk����RL����|i���(�;��a5��g(����&Edh6G��b������U{)�x��RFe)��2���CU�;�\�{�vv�L[�U1���T��S)�r��\���j�E�]�flm������W���Q���WC��}���j����-�u,C!i'�5,S!����,�W��m.�r(O��\�P�-��z�n+���C���?Z�*�Uh�
�Pd>�����a�7���������H��8�G�S���"����0i�����S��[�
�bx�?
 �rY�W���^
/�u9,EF��"���3������&���8���#�'�8�Z�q�bXJ7x6�Q���G���(��M���3�5NZS���	��1��:<���qL(<��`�O� �����9���/��/	�
�����>�)�P�p�G.���r)�9��\�j�1hXXh�#��F���"�l!HRTy`_1�����y���!i����47;4aX~L9Tm����'�v��m�'�t(��������i�y�&CJ����U�Pt;z�'��������G����k����JF���*��P��mUn7��������*<���m�*<����VTx���^B��n��#Txr[��-���m�7�t[��C�n+\��m�7�t[���n+T��LY*����n��n�v���4A+�Y]�n��r�4U��#q{t!��J�"���u*B�Yr���Prw��Gp����
�c9Z��4�J���a�QZ�6
����5a����b���
s���%�Y>����}�Sh�b��r�d
�8��L��*�`���k�������gz�qH��V2B�I���	p��8��%�Tk�#��S1��R2M�l�I6�>2����G0�4�gn�.��>tm�����FC�Q�F(�0���(9G1n��(�f�|�\)3�a���2_�
*�6i���y�����o����ZXA�T��H���:D�|�R*�Px��.c���/�6@�m_��M��G<%����,�H�����(�Q[��0fW�3Q��%�@�����U�6����FC�Q\{��(Gq5�%�(�Mm�!z��L�I���W`R
t6��K�5�3B�v��#.m�,��K�5�5B)8�#������P*���qU�4�P�s�
B�mYI�0�L����fy�����$7M�P.g#/C1� 'b�)���`9����r���#���s�,���,����*�b�,���,��r�GeT`��j���z������]&� ����i�>���Rj�'�	��������`���l0������f�����k����e,u����'�PGq�F(Gq�#���7��N�+�l(�H�m��!"��Wh���<W8��@����Hbp&�U���$�Z�����7���U��_�����NY��C'���p��iN<M����	8]�4���&�t��.�
��P�1�����c�2s@�a�G=�I�����cd��"�������c���(8F�QrW�;��8F�!Wg�1��!F�t�����p��c�3����QZ{x��<�)�?g��5�P�I�ib |��C�Oc�ej�	�w��4������<�����O�pX�xR:����Sx�pJ7������t��2���Tze	E��%�W�P�N_B:�	E�4&A�L(���Px�4��Rk����3��7�u����Iq��js�|�]�^��f�	�^�Y��F��%K��"�����$R>)HE<)���R/������Y:�
%[�gO�!� �)��D�\O��$�lR.��U4�s�,h8������(HR0�W�
��]�L1I
�6A/���(�!�����M��ZSEJ%��5U$&�|��"e�g�*R.�|2���[�j�p�T"�K/����G�$�)u�%�O�{$�kD8{���4\z���b��6�R�C'kDJz��+��1��4H�^�dM0F&�LA�%R���;�UX�H�(��fMT�@�b�#I�(|���$��o��(ro��"Iu��E�E���U$��$�,��X/�,�3� ��z)��`��(����"H�$S{��d�#u�0�R�����C6�������a6	�����c�"����w
xCX8V�	�1�h�2�C)�J��.����3�UT��ux�g�3��� ua�P4�`���9���I���K��|U$)��~+HLR��$)o�"I���YEgl�1���Th��(m������$D��S��2I�+)�Hv��i��	��H\���QZ�����d6
�^�HR�����$�,�HR��=��$��;�H�X%� �n��LD7VI&��$��U�0A$�F�-@�� ����$�v�HR�HAE���v�=R�����$M�;�T��ix��*�4�2\]LR��vR]�8-k�������������$�6o��"���;��"����H2h���'���a����~|���P��x��� u���*��w"CE��c�Y����f��@&?@�L�WAJ%���$&��2U�2���)�HC���t?]�@8�)d^,��ECJ%��k
�I$OKhH�D�?R.���/�~�u'��z��{�@A��{=��$u��HRwb�=*HRw�a�Qr���v��n��I �0����Q�Jn�����*�4�RR
U�J3I���:V!���z����fq������������U�.@�x�aI9���y�vt�y�Z���h�5
�����p��=�?���X��Q�����<^zG�<a�����d��]���8s4���'o
�����>����u�<p�y�%��
c�����J<�l���$�w�I��$�w>F��%�w��������ht�T�M���s��M���y��M�_.������%`�]�K%�DzL�y��u�L�y'�t�\�yg��h���\�]J��.�?���I��]��I�������K�/1�x����&�I;�&�E�/x��$<iG��(�������yC����7�I��]��=�����8^��~�
�/���V�����*��T�����I�Ta���jE~��f��I��_�������\�x���W�t<�w�	���]7	/�xS���������I�	���]#g�l�y'��s��sNR���YO
�?���I��'hu<)0���'6
Pc��#�����X�wD<�K%�W�t<&�����e��j:^.�����,�*����-XR�u��T�y�Z:�x�����I<�xZ��%�����z��>�6�F�U1/���K���=<���;8��m=�y�����]3���=�`e�(��h�D�!�f]$�{�3xR�����I��[��'���/z�'�+�Oqb�L�b�."5W&���w|8�K%�W!u<&�|��e�'�^.��3�t�/�{E����A�9o^�FW#�T"z���b�����b&)zj��KD�\�����~i�XID�Do���#�x���b���]` JV}����tt�'J5�*������F"#�N��^���5������E�2���x�����I<����2���3:^.��~f��h�/��@hDGB=
�
�Ft,t�\�m�qb���~/�
�FtDtV!����
�FtTtV%����
����7�a%���"�D�}��:���:]P�m�����G���-���}m����=�0U��S�n�t��]�?��C{�&,j6KL����o����Q�O�f���������O|���,�����/!Zn�����--�o��Yo/��\������h��x��I��"������by��L-Pd����c?�G�|�M�?�1:N��*��^���GQ����0�����;JE��6�l7��W'7�h���n��m�{�j��Z���W�C����^m����z�������������q�'��!�3������:��.o����b��@j��j���;�u9~�X��$��:�����;H���e{�	���w"�~������+�?�L���
��f��4���xD��V��a����6�n����B��	�������Rs
/Tc���?�����X^�����&9H���6�`8#�p;���Hn������C�I�g>(,�#
��mE���@�ZE]�I��,�$N�Y|
$��MYf��
YqHK�qHe�6��<�������2s�q�L�g����L�&��)��g��Y�UR-�K	o2@RfZ�.)fV�1iT
�y�x�P�J�rc;����*�*�l+Q�s�6�!���yq���:�A!w`nn0�y��&�`�2����Xn�|
����$���"0��N����*sV ��l�5_a\j�S�q��ECh����'���J:�]&U�}��pna�"�/��
�"���^���������,5{
��d��S,����"-�]S�OqU��P|2y+,
�@!�6OQ�����@WlM1�����XzF���IQ�zp�v�F	.��~�V���B���7SC��F����,��m��1����FcNK�9%?I�����_��M��#3�!(�;��rRnVM��6(��Te��.���{������K����$1Z�!:����!�7<2j�!�3+
��2������^E\O��B��Lb��
!��6��~/gf	��4�2K�6��33��C@(15:'~��:�)�Q��%��P����pXg[��_��n�2 ��A��F����8�oi����=�����d���ii\
�����Ak7_"��la��&Lv]�,0K,���fLV�b[�V�z�ef��(������Yn�M
������y�Aa-a���g�^E�B�*3�p�vR�b�z�9�e���FW�e�!Y=K��5\����F~�q�����o����FP*�������:u��_�i�C4(k'2��33����9�/��8,
��H���^Te�}��=���p����>���p��j�kPd�f������ej
Y��2��u�����G����,�@�/
�Ga�T����}��	�z0s�=�*���!���4����&����CP*�<�7�g��&3��Tj���t����H�,�����-�: i��7�)	%������h��t����XAW_���fC^%����ht��M���]m���j��:W�xFL��o�tTF�R����nHG��K!��o��u�mmkB��Ax`�Q�v�!��Ax`��~k�C<�m����:����1���f,>�`�F�)��=�����'���y�5���cZ h�J5����@X8lEa�f	AQX���h���5E	�G��+������XU�y_��F?b��@�(ps�Y�K��i��6��z��h6�!�%r�s4��X �Y�t�-��`�����]b�g���}��>�c��K
a������+S�������CP4YK�
A���pCP�6����[�7��2���#S���!(CP��4CP�|��@P�&���'���$�����Z�g���T+�������v��9����YXf^4�����3�~�]���xd�����#�-k}�Xz<
0E@�I��-���!��_���5w��{���Eg5@��o^6b|�{b�{�\E��\�����2f�:��X�O��Xlop��2�}jf1P�5�5�z{Z�'w��e����436\�W���j��t�)n���p��
7��P���o_HJ:#�J�m����EU@F�ET3�	����]n�@7�
��q������Q�a��m����f[��-.�~H��5�Wc�0�D��1	��.*��.*��.*�V+`�c�c�c�#�����Byd��I�$�PI&��LB%��jd��I�F&����v��Ihk'���B�d�\�P.��K+`Hk���f���B[��Z
�j5�d5�����.��W��+�n�@KG�HKNq-���*���Utw�
��kG�p:F�z�0�����Z�p��y�sw��2t ���������Y������>��s���l����	'8N�s���H&hEb�����TF:�-�z���z���z��u'����6~xj���k���k��Zj����>�m���B�u�B�u�B�u���R9�=3������U�!��CX�H�������h���:��%tXwK���*%(����k������y>l��yRl� ��y�������#X��ZN�M�I���f�s��:�[#tX�F����kR�`�P:�]��J���J���J���J�7�/n���.OO����C}������T[M����o5��*�_J�/��K����o�_�=���&H�� �j���	\M��j�W4������&hD5E#0����q�����K�`5��
�7P#z�P~�,��
�7��zX�p�����t����a�]���2uX_��OU��h��itXw������a-5r����3���i��&:��MtXG
|y.�8����k2�u�d��������?�G�f�nd��(��Q:�����x�aF�<
���B�u7�k��k�m43���5�a��@�=�a���������e��/�&�1l��S������_�h���
��:�]+������������
:�[tX�6�Em(����~wF��[�����&dW;v����^M���j��,/������4n���j]!�kfK��F��k��k�k�Z���Z�^ �y����ON�	�X$M�f�b��!'k�D��>����II�
������RU���G����)�$>BQ3��|�Q�k��YF� �oP�4N����>��������|�=`����c\�!���M���Hh��=�H�������y��;MI����g''�<��C�5�%�
J��fS:����U����>EA�"��h�����M����`�B��AP�����a}��F�\��(-A�������P?K�����������?lw��,�]p���jy�9���$�S�S*���p���Qw�f�F�m��f��Z������u��~�\���*��_LT�Z���j��������E��k/��D�-����%-l.I9d���������J�o���-t��s��,fE^mp�SLB��5����uUc��/����??��y������w�����8��7����x�`�c��������}�������������/��Q+1V2$�p�anw�� q��w���OO����������?�~�����&!`b� �ftMp�o����d��>��������N��^�z��g���>���?{z��(X(��2<�/���������6�<���������<�z�&�Y����r������g���������<����;}�=(����4����/�Q��\]�^t`IY�e�W��r�A��(��{	�I}����s��\Ur�IE��w-Kw]L�l0�c�u9�P��B����))wsM��1+7�u"����w\�d����l���h��v��!�o��v�=@/
&��
�ln���(e���������~��������jAF�4�O@d�>C?C��K�Y������}�]���Y�`�X��?���t�+�4Z�v���J�C!��C!�Z�ALu����f��:�>\�f�ryYT��}��R.'J�A�=��x���>�c
���L��e��"�3�bMzc�����*�LV%V�dF���<s��|`� |��N��f����^'���Ub�	��	��%����4�W�I~��#v�������"�T j��	$��	��������)k������n �(N�:��L%R�	��taq��%R�	�p	�l�-��\fS(�����V�n���L����
D����:���^������s��8���m7t��:��vkZe�	�����5�~���!�>{�����Wz���sZ`?Cw�b�=��tS�?W]���Q�zu��e�������o���x�a�����@�Q,pH��8��w������@
o�i�����C����cT%���U�Hel(GeT�X�x���A|j�8�Ctx���)�
?50jF���>��K�H�=�}t}�?D8���q���$fN����n��5w|NRV����*���������&M0C����
�1��u��������u{�,H���l�<�C0�+��y���
u�{G���'�������q�(B�?7���`*[�Sp��4�R27���KL�x+��+�������Y�����J������rKPs�0�!�%�Oy����r��W� �`���g��sR�����J��_R�(}�(�yE��W�I��}������������y`��5#�����A�[� �����"V2��!@H�� O�91w�CrW_T�2���������)O��4���a��O@����dqo�m\g��������"H*�#HN�-�P���@^=����lV���G����a��_�����;�p�P���y��i;+�sMs1L��i��:�!sw3�E��1?����������b��:#�a/�S���I��4��Q5�-����
��ij?�qb5�t5�r�*J0a|4q�����Z��[g=RQ��L{���f�l����E��%[b�xs-N��-�8�>�����I�Am;Kb�`��'�3qaum�+��a"��h�s�lo����,p��!�����)�22EN�{yT������nK�4��sb��8]a�)�����"��tA1y}L�0���h��W��LJ���l:����8���G�.	��g����)&��@����Tn�L1�������$�U�
���v�
�e�O���|����	E��0{'M'��V�vOL�G��l-����9?�m��ci2b�o�=E&�#G2Zy�jk1�R�1�r� "�����<o���A]�4��"��rp�|�����(�f�RK�@�b hy�,�N���2GI�W%g����W����g��%e��,��H��ZT������U���.�<e��$��*;�(��e�U��>�0�F��{�	�wP�<U���lFI>.�C������Ow�xVy���{��'e���ED���! ��.�vO��+9������<t1�t���<���(Mp�w+Z�N
�k�J�� �%�4�X���������������;��
��%Zv������~��0��������]���y������=C���I���pa�eg�\�j������E�z�a�o����f�o�y�v����� �;����y�:�+PZ���w$opg]�7����Tl���7�[��w�@U��{(lM�7�h�m7������8�5��-nZ�?�����V������~����]�A���X%����l7����7���F+ t�
����v)d���v�M?��n������'Gq��+���m�$r���%x�UUwQ��<}����oU��+�
���5�r[N�'�FK0���|���# /�o~�	-������5�#���|!�ABrB	!�ABJ}BJ]Bz�n.W�r0��s��]��
��	K�|E��*�.u�e����}2��v�.��n�4����k����.��%�����N'�Qb4����u�r�~K����tN7�tae��3JC�w�>{��l��\�f����������X�''u�,M�iOY�{���t�H"}���I��(E���� ��?\B����s�no�������a���,��i�.��?���������x,[@��`�������<l^���W����IW�<�%4�F��]��g�
/_?�T��Y��7�0`c��{����v�{f����������%�&���|\A��]�^oP7K���i��^���v�f�Po�b�{�AY��:�'T$�)��a)?������K���4�S�2�F��������a8�7��0���$�D;�8��)���1�SQ?���[8������O?����Z������~�T���������I�T>��h�3�&��!��a��b�e���p�0/������x��9�?={��>�j�v[��r�i ���A�L��{����V��o�G,��N�}�v�]�����D�/�E�hNN�8m/����j1��O$g�R�v}�l���#�����xKbk?(�������?����w��N���Uw�eQ�����0��������%{��m�V�3�f�3;��@�/{��%��s�<�&v0�����L�dA�<{L�^��jvK:j�����l��������?�X�/w�.V��}7d	Hc�+L��o������O��)��Z~e�x����8C��/_|b�j�U�[�`����)P�1��������J..�$,5�V��3*���*�����8�q�7�n#trU��|f���K�8_m�S���VE��n�Q������#<�~�k�x��I9K��g�e�!2R��J�f�
�i�x>���g�6�fg��O����x�
!.�
St����a�,��*�l�b�F,J9>��!�f���0C���jYj�|��*���*�3�U�/�#�>06���%��K2��I����W9}�;���-������}Y��/���$��E�.�LF)�i0
�$sQ��K���9J^�]�io*���P�W��'z�i�,1Lx���b��:h������{��r��z�����G�_����1���?��>�)Cp��DIQ0u������\O����I��Zlz&����^�]bI��������	68��2���4�!�����Z�Jv7q��Y�E�
s�����,<����@G�c;���Lg�V*�Gg��~�)Zn�~4"?G�7cx����q���Sv��p|b�3�'/q�a�|������mt����������,�3j�<v��U�5;_�cr:����CWy�����4U>d��p,�h�]RZ[~�G�����6m��1��kt�LN��yU6���vQei���}�*��
3
�Kd�?�0S��M�Mf�K�����|2�0�C�.�=�p�Yc6�Q�dhgdc`��e�8ps�G���)���]��7m��$��������~O*O����b�R�4���l�"&�rq7��h9���j�l�jyrr��7u��U��1U5-��X_�g�a
�������� +��WR��M�2T
� �~����6'o��Z��~	���R�A��P/v,�(M��p�ScG�}{�y;������T:w��T
�vX�w��?���*E)9�������n<��o�h�y��S�R�������-���X|��@7��^����b��m���fyK[�y�O�cwc��'0���S)�{�d-\Y�GQ���{����=��|�(�pn��k����YF�u#����q|������,L��r��{�u�f���ON���.�e�o%8����60H�^�+i���r��7v�y�#���S:�.�����~�;lwP%���[7��n�PWR�O�����.�#��=P>?�V����i�:��KY_�E��eV6�{)�E�Mv<)\"��}F�3A]}Ky
���t��e���H��2�.
���(��tDA��>��e����2�2^'S���G&o+��Or����7\���3�Bw�Cw���(�����W���q�����U�?�^_��5�kj.�8]�''��)udM���e��l������_��~=�)E�ow���_B�KT�z9����B;/��������������k�;�~���64��(�U�����=9aY�,�v�����tF�Ae$��y���wi��S�y�/����de`$/�pj���I�/��0�p����z���f���`Y[�P��J�(E7Q/:�/��S
�I0X�{�.E�����!T�_���f�0N��`��o�m��H��C��/^�p������I��@cy,���3������\.�6�����X���3�kA!��~Y
�_�Z��H\A�/���h�7�����(��x�����y�F���������.+9���LL��������f���K�������@�'��@���nDO�y�h�Z{��]7�����-��~��-����db|�����������_�����"�(� <l�,�:�P.�Z�X����g�H���M��[����s4���i�e�emur��b��[���ts
���@���������lQ��i�'��@~���E���ttP����tlP3��`=��e"�M�~<���X0nFN��0���.��[���/^���}���d�����:�l�xL��K�Y�O����y,�����g*u�e�I����<��$��D����<���L@T��e����W������M��V/[����I�kR���(''8-Z�����R*��yP���������C�3��
����.��XV���y�-����Rbh��8;)c_:��P+���@�K� �IS����h�,	��P�qj�
8IUT�/���
h���A@��B�I�i�G�����|���~�X��h`��D��s�]9�c��n�`�M�B�SX�3�|#E;��1�%:����wo�>;
����{�6���*�F�������y�^?}w����w
��6�O�����j���Ll�!-�~���^�x�PM�����nz����f{�M]���.o��"MON���.��$}!N���I1�V���z�/�*�W����8��s��B�]�x`pT�|����^
���'~��N�/Q����wx������]K�/	�s�����������f�R�5%���hw�f�_����|�{�+�������n�K�'������y�c(����v
F>�e1��D�s�~��%��r�8���!�&����O&lV��z����;����
�����2.�";��������1)��7x��]�uU��^z��:^.a��;����1�6D�.���,� #�������?��^�([�s2�bY��t��X�+��}q�d������������������<AT������pr�t�p�}����dW���z' &���Hr��E������Uc!1;�����)& xp��KHv���\Vv�,�c������]l���.k�8x_��i�*���4/^������,�e��S���Y�z3+���b6f���hQ�R/���Y��Q������A�3��.����}�F#�%��n���r>����f��>��2���I���{�{�����9���7��|�����0��&���pj�:�.~�������x&C6��|a8���Xx�i��A��\A��^�����)c���[�x`���=�7<G,^(����*0��q?�%�S�,�9-D08�[k|vb�$Z<j����}s�;�������`	k6"g'%������"��vW�������S��vO7jv�j�o���Fd���%&�+��������r�`Tc��
��x:��Gx��O��({�r3�=�������V��u�Z�C��3
��k����q�������hvw5�����H=�vgqZ�xwr�v=}u�Kz���%�w�Y�V�{8��xa����2��.FAue������ji���*��Dv����	����b����������@�����������������2�P�]��l���V�x��n��
=���������}t�x��E�����;��6��mnz�e
���9<����:ck�m�4\Tq���:d��M/EL8X��B����4���]���![�GR�����3���3sO����sO)}� �tSP����"���������L�������,��l�����N��[�7����,�k�K�y�AJdA�L4��fpB�Y������Q�����N��-f�58^�D�pl,���6�~�~�������bm�}�����>Ki����]����.h��j����9�+*������������~c��Ish<�����?��}:�o�jB��r�T�����n��8��Ya�DIw\�yW+����YF���Z�����n��I^��%XCeQ
kt��( ux0�7k��!��X�3������;:^=���vt����nq~9F��8���m���T��b�����~v��5_ker�d��bFdF
�	���L��^t�f�Q����2������n�oW����W��L����C���}(�{4��6�����y!�W���:�����"�Q	/�ZP��%�Hg������]r��h�	^lE�d���<�QO`v"���W�"�8��|E`4�;c*���UD1#�0���K.iV3�b�+��

R�V�E2�f��X+�Wg9��������18
J#9p�W[A2Xv�"3����
�3���p��O���� ����|J_���:u�����:��=?�u��O��8WAbt���Y��Oov}v;\1�j�f+���]�YGr���\����0CQ|���E��+���U.9���H�n���/��!OX���7���:�U�;P��V�����S�����7kg%V5�#���t���9��p�F�
�l5��b��n�EoV�E���8����lE���C�i7�7�p$u��~�1����X�����.��tch|���Z7��6����g6|������&����{����8���99�h�y�w�m��J�������s�r���C����`i�GIYQ
��(������NR�����v���������/�J��*V�3�*��=x��.6^+&�B+�i1�+�B��M���
��Qi������&(�����Do�v�����{p%"A+�>�]�x�.�)w+��V\�nW���
�-����5���xS�E��+}q�D�I�u�b�����V��)��p7��>F��&��x�
U`���gI1�!-�n��oP�}��WlF��;�sd��-7�FWm����]D*�r�=P�
'�1SDuS-�������,��>�}6xo����&��vO��76�%����!D�R��T�_�_������BE���_��g��
�ne�[E�S���������x�v����\*�\Qe��b�&���Z��^��fRR3��b�f��+�������i�U>�b`�Av��w��6�����k�D�#gu�tNgu�g��i�����xv�Z�I�0#�RD��K�����GV���������|6C�Sw[U�m�F�1���>�H���j�r,*2F����e�n2�$�NjtZ������J��rR�iF��+��7*`T]`!��GO������ff��y3.�~y�pWah���oz�J3s�[R9����(��4&��*�3@H�2[!��������f����i%�>a�x��UadE�3���$�l�4|��8z�c��F��|�HF�@���1q#�����!����A�3���"�`���_�wdyJ�������s�|� ���Z�����9(^E2�xF�
Nm��4Y��k��z"hDr�E�3��xIw&�p�T�{�*����'
$!��y��~���E�����J��������fLmM��TL����X�o�{�m��R���\��'�b����Vzm�?D��2\�	'�l}�~�Aq&v��[�$?�<P���_iY�6����VO+.�{�� ��h;��X=�p��"V�d�aG2T�3<W�r�QP�!>'��\�%�bA�|�=Kbw�ws1�&F�g�'�	&����K�&����d<S�=X��2��`��3=j�Xi�bfN���L^�y���~)��y�����[H�BN���>��d|��n=#��d����3��E�@R�Y�*x�c�Wz���1�z���:��]���9�Wf�{���u��������,T)��E�9���^�����n\��&^x|�8m���o���rL�����F��#�?:�V�H3���������F����}��U|�yN��zDl�^�a����X�2��
����
�_����+h���gS+���o/�L�q�?Ocb���Mb���}��|L����-�����VV��Gv���i���4�B�����lDY������
��'���z��m6����<�������������u1$y:���w�����,�����C����47�%�A���RI+y�s{�
.�3�*��gx��.C,g8\�����1���1\=���K���\l%�xxQ����F9`�������z-���[�bZ��-:������E.�3lA�N=����_�^���/�E+;�k�G�&#����4n|L8'�u&�l�����p����	��v������>r����BBl��c�� <�����K�	�f:?�7�������x��4��a�����&�X���d�b��	|���$��i���	lxL������E�]���-l7�7so�D����j��1YG�,�o�N}������c��!H��2�����h���,�-��=Dx���������[9"��;�������#��c��'�9����P������x
��	��@y"����� @�V�\aF�E;^��_������M\�I�Yz��A$n��*�{�0Oj�n+JR����r��g1��n1OJS���N�^'��2���(��� ��e���2�m�3�y�<��;pr����,�d�5�^&)*)���3�S��;E*��T�s�R��_�Px��.�/���[�~N5]���{�L�4*7
��{�hx�����>����Md\��I<�Y�?CH���������}7��
�5�����Ez������|r?"7{�,g�j��gf��c=����3�=�JY�r7}��7��Cn�Y������g�J�d��B�0���C�v���I�H`c����|EB��?�,����#-���9z�����A���p#�,��6��RIH�9|��>c��C&&�������9��r���i����!^��tC�;E9Y��r��;�C�yB)Q%:�C,�s[���]Un��j����y��	t��<���H ��@`]cL���U�Z��]KL�`��`�6W�������Y�Dr7C�y"��&C����[��i��J��2���!y^{I~2�"v������~�I$���'8.���jB����'E�\��H���$���q���`��d��c��}Qg$'��4>G�T�gDtv2����g
M��c9C�[F"��������B�$����G�1�4W�D�~P��=��0c�2�L<�y�����H��R��<J�b��NL��r�L�Q���:L�[��P��T�����*J�6����;���xu��6&�!Z7qh��4j�q����!��[�b��=�u�G����x�����Vrg�O���5����T�n���x�*�h��m�m����N��B�]k�/����Q<�kQ�������n�������B�(u)���n�0�� �Q  -���6��R��B�c�J8�����/�BQ�e�{7�S���[5�i6'�*��Q!���Jf��\lO�kCW���3Q!�CF��&����sy�Ji����$n���V�t�/�|����0���������o�}����y����wP
����fJ���vN��)u��R�~���J�=���h!���m7����K��h�����{���@j17�Z�����T��q�	�N��S2�>4�����E$�,��9�_!Q�u^���������X�a�sh=yU��#��YZ���X�U��W��"�-���*��}�#�E�9��Mb�M������A��s
�	���u���z	������/��\�HB��~�S��X�j#����"#nx����d��3�����'������
(L��[�L<�~�6�~*�T�u/����Y��R���d����L�"U��M+���C�J�R�]���i����������-��`���dDr����H����I^��I��{��:1�r�ZVA�MG�5�t7R5�M�m3��T���[��%�'�I=��t�	Q�T�������i�� ���I�\h0aF�	&�3I=i?uFrb\H�st&���:;�F��3u&b��=�,��$~�W�S�2h���	'N5�iGt�e�w�!5�yv�+d�1�9���mEa$!���6��������g�����i��{��]g1������G������&v������#�-��I�w�\���(Z4��x�n� ?���������oO���t������f��9J�����J@}�Jl�H�w��e�	����M`]��&Niw;�Q�)mD���M7~k��������*m�I_�_A���pEd��y���;���OJ�<c��1.�z3�bg���w�+����������#&�������{����FF���
�
	�A<|�X�����6Z�[��?�j�������������F�IF|'��g�g"'F8���/}C��n$��(�P�>�.��;TS�&D�S��W.}C5�4�A)�j�O|�'*FK}	����"����S���0�%(��Rb�s���Sz�r*#���|6�+\�������W�2��{���i���u��N������s���E�Q��$[T�C#��x���T*o�0�L-ODT��k�mc�NA���jbW��QD=���ZE�fp���6�W���s�uV��

Elbp���+����w0(��2wi��{�jX�;�J��m%��Tig+�NU��V]��p�J��"���d�7K��meX���R��Cc�c�z��f+U���d�]�l�J�+y=R��]�c+����V���@��jB�DJ��f�)c�2U*��	�r�P��V��\�Ch����>�:hiN��
��}{y�2��2%X���>��4�f��Y15��b2��i�R�����?D`����.m�v�=������P~���b����j{�����6��^�W�Z1�)[���> t�mo9�(����}�D��~mkM��D9�-.�����Y=���	+�z\��c���M��!s:H��~r"�G�������.����W=��mI/�d�=�fgR���	�^W��_;m�.�N���<*gc���@�tOx+����P{T��h���t8'�m
{"���P��d5�xR�'�mY��e�h��D���:>������$�C�"d>�s�?@b�RTw���P�3Q�D�X���%��-`EJ��p�,##�IN��'�{w������x��'u]��S[:���]�*n����Mj����dPs��f
]��<;=����S�y���Ize�4��!G������r��6�����8wi1P}�V�����ct���zNyVExb����6UZ%�2&x����:��x<����UW�1W	����������a�CW�rPk��K�,�g8z�4�j�qKY����f���4������vq�
[u��Mf��9Od�'���\��s����7Y��?{�����v,���NWG:�F�� <;i��� �H;tx>��c���$��<�����#�����J��������Y���4���{��ae��he&S���w���">@"@fz������Y� ��wU�������J���q���q�n�������
���K#��������[l>3�q��|�O�_z ��`=��(�]���93u���1y�t��
u�%_V����m���������>�a
e�x
�6���Vtg_�g��)�&�?zv��|X2�Bk��-W��7��?Q����%.X�5 ����6�������.��h�,���7��E1�T����O�KD���O�Z�^��b�����D~Gtj�%�!�d8�@x��!��j�WH���cx6g6gq���WS�B-�>'���V>�j�S�E9db�����W1-�!�e�N��
�h��9n��
tN��rj���dP*�q��W��
���O�H�W�g�-2-C�N�W���B������4hF���j��EqH��)�j�0���iN'X=���y�E�m���^2n>�H�x$9�c.��q�����e����hv�6�!��`>Q�������a@�p��Eq��>�	'�)�yT�%�+}f����t:�������08�)�"6v��I�1-�3C��[��#I0p�)�������:�f���I.�M\�W~����~�#R~8���p����<�[���>B�	���x��������{�/~��W]����x"�a��r'�]���I�U=M~ H���_.�������
���(X���v�}}�\�49�K�\�35�1�$~���{�8�2c\�,mo~��L�� u������I�#���y�U�>���#��1:+{W[�?$
l��5H��,��O���/�m�,n?���1���:Cw^�]���	\��Sz�6��+��-�' ����3 9b:j�!��@r��(�����^�d�"Zv����t�$�&GD�2gql1y.%�l��\�?���50��2�x���`4/�?8)�4��9!�C&�:����/�m���D��.&�!�&�x�Z�<�i,���XC}���`�':v:�����*q�����DPN������3!��(��p���'$���������+����_e���g��6LT�Y�W����1Y����������Cp%��+3��C/�]���H�}����a���q��_2��P��<�����A��=�`c��_t���A#�zH2��Hn2M���9�@Q�lpDK����h$�@�@�`ns����3A�>S���WP�J���(���P��������8K
!��	������
��G�c�(����4����g�"�O��6��s��U�������u?���/��|�p1���@BD�@n��|~�?����V�����1��jc�bY�r��]�2=����y*	�>���?����o�5�����\�P����<2aI@�d����#����MX9pd6u��G"��t�R����A ���	+����I0�M(�{�Y,N�:�r�Q9����V��:���#�	2z���aFI���P"�[3B�rmZr��=X��A��<���pH���a�P�X�$�����&\v	��T^��h��ZP��[%duN�3�C�X�KF�d]8u�<���#x)���3ZbVDv����*/�,T^0��|5yA;6E>h�^�q����+�8�|a��U������U^Kr�����'T����|T+T?��,�N��a�
���pB����8��EU^8��Z8����*/�Ry-,1��2����T^Q��*�����J��/��[����p����QV��O���������_���vf��l���3|V?�|@�{���cj�G{��<0<�7��(j��cHO�;HS����$��	l�Vw�0�|\xl�5�|L���xR_]x�	�9�q����qCzc�����w�R|���]R���@�?�������|A1�I����p0@o1�M�\9��zh#�d�f����6��C���?��=4�������>pC��+��#FN��q4�����0�l�����Y��w��Qz����;��Q�s�7�a=�u�j�Y���C�'t�����ad`,F(k��6cw�u�{����!o8^u��RY�?��g�Nd�Yo8Q���G:���p�MEq���0�e�#��[X�a0�� 7:���,�D��>���0���7K���[`K�'�~���+H(D����
��Vm��#a0�J��l���
Wt��i-Nj9)u��W���pZ����AQ_@�����
�[��E�[8���hb�����f'5[U��(TK��pZ�����t�PqF&1Lt����q��m4S�3b�*4�?��:=�IrNj�d��)�9LST�1�e����������w
`P�S�^��a��3�����F���������re&����V�h�����/��
��;3�p
��5�r[��Ux7�r���C���D8bA����Y�B�� �!�
��'j!��c�
�_?�:��GAj��s?3��Q��*�T
`�|�9$��d.@�h%?^i������q���`�/��i�X
p|I���u�a��({ca�f4L��
H��(��0�N�Y�'qh���8��dI��8ZK�$�!~K���LJ�L�<�H�&E(")�iD��A��H�:=x��vW>](����c����9@���(pD.�3��?����N���36l<��_;���#�X~�[�������sv���@�<�f5�fn�^?w&���~�q.�">�P������3+�aVY$\��B�dCt��hd�b�Kj�L3�c�W�N���.��1G�����(MN��\�����k)��&2��ij�(�4'���ij�v�4G���t��~�����B�#l�&<��{!*���o�Rj�<xf
`F9�`�Fj��A.4?0�>n\��/��;���{���`fNg�ib�9��<�u�y�zg�Y>I=���x5���q�x�D��7CN����e�x0�����S�*������� 
��+�oz�S�d�q%b�<��cx*S6{
����i�kM�cq������3I\d~���d��,O��_��m���U3M=q���C��79�&9n�j�+3I=[�-I��GP��HN�1�L��L�>�$9+�G�O�X~���n���eT������vj1]�L1������<	3�����5��|���?]b��Ml�\�����
�d}:������%32'��Sk����=lwxQ6E�;L��1�v����X����@�
07LQ����y`b�abn������sj�������8��9n+� .���@:0*���x8D�/�1����5�y� ���E�=��u����`#��ui��((*�t�sN|h����tr��F�L{�%��c[e~��a$��t�����$q��$1En3aO�5{L���N1��~��C�Qn����L�L�O��Y BY��6�h�i��#�X�%8���4f����G�p�B�H���
�|�.��y��9���O�E�o�MK�v���e
�q��U��[�,R/R$z`�HQw���m�v,3�!����f�����'����s&��{d��"(��{�Dr��9[$�����3g�c{�������s&��zl��'���L���q�d�(�sv�����8M�q���k����J������������1#�.�Y��t��������M���f�"�r������$=�
&��;�#���%=�)7���((�pC&�;��BBZ�1�r���	�Bs+�������4����x�)5z���j��}u.!��t"�����R�HR]r��e"�~g&�V��d��\�wv���SO?ec
*s%QPPi��������l��
�_��~V�v���*��.UQ�#m,������W�����r%JoG���
�iY-���R81bj��LM���cLM	p�D�\�T(2����������B�|�����,5��_�����������w��5��/����*�j�U��Qq�����c���������6r�*`*���>�0��ZM����$�����	��v�*Q�5�V)�;P�&&�����"��&�j�8`M���U�
�&�q��������Ja����g��G�o{�=��M���_~��t�a��D����C0�L6��@[�D,B��a����YN"�������4"�?I��g��8�Dt��D�P'��'%����0����8��?�`�^�v��s����!9�l��o����~�J��A"���v;�	_f����H��;AF'�f<0R��.g����0Hh4���!{8�H�c��I@I�"���%���5
�i�#�����Jx~�A�&iIz
-���^�-���~K�a�_���$E�JK�3��_�y����>�J���a5��c����Ib��A0qh�pLuc��#	�	y�y�����yTty'�J�lB�mR���F����n%AJ���1r���)R�x��p55����b�����������~�{�Z��??{~�Z���������T�3$��"0�p�C]��u_������i<~���^g�":g���gp=�!"���oZ�x�����
����4�8���I�s��k���@E�����5�'��zxb���(	K��f��q��]f�Q�a�x"��M��(`�L
�IE�Ca�>{�N���'Y�Y'x�'�M�e�s���������������
�`'��q�Vea��x��2�d���
���w�K��+v��4���v��'p�[��f���^���er��R��4����"��H�:�r ���"�,���XZsO8vu���q�uMzyY��P8 �[� �������8�l �����9��z.$�y8���
jF��6L���~��v�5�y���J�������#'�tG�
Umz�������MT�<��L<��'�����3f��j��<���C#�)�t7��}]��e�b��Lk$����GYV"��S��le��
����8@����x�N~����9s�s�!*9�e�$<e(�a����#f��i����&m���#���B��2Z�S���%-�l5e1�p��L�X�h�V�FCK���Lna7d�I���(C	��,[^&������[�9[���nI�0L�o�����!X��XY���g2fU0�,Xf*��=���.0?,;M9�9�)/:7,Hf�a�1$�a�y�����q����B7��	V��Ax��(����d�H(��@���|���Y0of���i����\`b���Au�1�Nx�y������!�a�!,=-�`|Zh0R�����H�k��`��@��nR�Z��{���?� �N���6�5����:�X�r��fX~���Ih��6�
�FW�����H:�f3Wj���t���K�����f)�b&W%E�<���a��jt`��?� �\f��L��/I�
�,��@�=0y����4���\f���Oj������9Hq��LF�J���>�3��T�r�����e�����O
L�_�w����W��@�������s�������\��������z=���q��,�M^u��NP	���n;jKP���v��
V�\��4���F)0�j�������?�)�������|U��S����KYL����P������w�� �H��s�[y����Z4aNs�~+�N#N+
��}$+$��~+�������Vb��N'����_K)B�X����Eb�3���!�q��V�J���u�	T�/�,[�����ES� ��r�5������{�
��L��g�1��G��U�^CmR��d����`���?�>�
js���������}����������u0D��UO[�U��y��PN��487P�����^V��4������qw�.�ai�n�n��LTSAd<���U�BO�n������zL"C5�*�1�S����v	R����5��<�~��Z���������[��my��}�?���(����i���Yy&�O��+����n�|X�L����_�{�aQ��7�?��kJ�x�Pn�
B�	=�)FY�0�j��|Ue�&;-BhmT3�0.cC<�?R��2��6#)H�FR��Qu�d<��x�"KQ�d7U< �4����.�Yc���>�y�*4(��5/����F��d�2YG����x�v
~=��F�R��Q�i���nH.7F����>&��Q.0�}LKS���`,ac&Gc�9f(k��M����1_��1���s_>KO�hl�<��>Gx�!����0v����`osX]j���Kf1�2%�m|z�������sLM;
�`fM��]�j��� OC���M<��}�%����P������d���C���Q����{������������{���?���8a��k]
0Q�����_�ew��7������r���[���|��a�|=l)*P����O=t�0O�����}]>KO�t�w�/�>�OGZ���v��5BV��������I��z8���:8?�EF/��������i�E����Bu���W����E�B����?��q��8���Q�v����y�wf��-���~���d��B�s���06�lk�8�O����z�Y��(�6i{�����%��NZ����y[�M��:DH.���s�M-�:;��������C���r��������BES���.�!�ZT5h�h�I�L������Y[op�hz�����>:�-u`�M��:D���Uv������V�c�w���@�L��:�Bg���IO,�4���8:����[y�"�/O������\�U(��K����P�7�qlr�R����@�����u����a�F�>4������8/��H4C����_��ibG��F6d�H|����,��x�08�b�b��P���4��|����;�{��N����r*a�=�jW���'R#���w2P����(��\y���9��A��4����S[~��m��_SA��vw@��f�p�Z����"�@D�c&��w^hy�AO�!�5���1����I'��������b�1(�
e�
Q��}&Jf��l�B��u�����<����N&(��t*>Uy#?3�zxA��|�$�q��)��M���1�G�[��o�������@��W�3��u�
���lb��o����/��N ���L���g�F�w����<P'�����@��=^�'0K+�R{�����~x��	��x)�U5/tn2^�j
��i����_+8��i��<�.��8|��m"��&��p�+r�P�v��!Y	�o�����7	_?~l��y�rSK>��}�->���	�[��i�/<��
����C�4Z�%�Q`l���2@��-�'���0�����5�v�1�����~��iD����q�bz'f��VH���tHA�Md���Y��Y�,V���)SU�GuI%�i�6��w?���0R��F&�������M�|$�K�B�B�&6�-�b=PH�E���"	#E�riF����[�q5��#�*���!6�c��"����f���U�H����R21e���l*�<p�����w(��
](���>�U�](O�C�/gm��(��TQ���p��|�q�m�SF>q�q{�z���g�y:��<��S>@U���#�/���i���C��	��������]�1|�H}I?�<�h���G�8�2���0�cu��er��<�HS�E$D��Y& �M���zw>LN�P��5M�����aO�P�_?��*�kF]�!�������pM��K?��T�_�
�*�k�$��D"Y��eLL�.��r�EE� ��T]LBLRB��lb$���4TZBuj ����h�py���gp�'�38f���B�)�����m���N�:'<��"B�8{;�s��H}�����R��
q,<sc���<s�X�88|��-�m,����m�
E��Yj1��k��pq��h�v��������c+��e��I������+7l�.:�d�)s��������+kJ|s�����J�5G�JPf
��������WD ��1��B�����V�Q����r|:�euT��7:$��0�����������
��PV���i3��r��H~��������]�����qH�VFh��T:	*n�����w7%o>�������UT�����	 6
�-�d�*4x[uN�.�������<}\vI'����d��&�G:f���ik���N�=�)���_`�H����"���q��#��l{�"OC����MxJ���S������/���k��#�'��1�L�@�G��o{����W���������t|9����xe��z@����o?����Rm�x��������8
����L`f�����\c����DrvrF����n8� �3"e�qC���7��g��E�"�gKo��� ���c�y!�����>�Z��D�+}$a�v_<e�[e���g�Q���
���^{��\��bm��:v�p�|�x~��������,=f���pF#�����fZ��B����C��<�%�%O�}����|��5/f�_g�O�mtP�M�Z�vC��o7��s>BI��\�J���QJ���[.*�Y
)���<� g��]��8�]�rQ��|/�"oR�7���|3�������l���SU�E�]��=��-��d��N��3O��T�Y���8�N�|1�a5����C��j_<�S�ZA3)D_L�_������� rD�a5�����������#lCYr���I��Y�����
ha[��l�Za
����n�)��4���-�(�����j�-��Z����H�M\jfp@
�<B�Nb��� �m);�C$����&�l���C>��D�gS����~�g��_|������~�����qD��*`�=��o�����_	��u2�S����?�s5q6���o�����-��9��L�l=B�zo\M�>b���f����[	�*JC�-&R�l� 8�|b�� 'S������]�o��c ���x�����a�be���6z��C����a&V���
�:���� L�������I�S�KW���0
�'N�r^u���/��:0�k����G
�c����Z6A����'�:������Hum;�C�xe��N��l����'�����2������@HV����KWh��t1�;QQ�gVbn�G�Y���~B�
�.|��'JR�������8I�q��s�a�������^j�Y����t����Y��8��z
�f��3�����D��^H�����<�����6_���%���������������G���A�ks&�����#�����a]?���u�T��~�������)�?e&/*gCv}�� �5?s���g�g�Y�"l���6r�������6�[�h��F��8P��tL�
*I�ao�����0@���]K��T����=�������8���|8$]B:"�����t��?!��XL5���f���t���yI��	��4�B� ��+�I�h7�����I��	a^=�&V��������#��z���U21�X-A9M�G��5�}��V~�Os���/A������>���}������TA��|�
u$^�Q,�/�t��L��=D�����}���i$1B���}������x�dn�i%S'-Tq3�����-?u)D��fb5�!�L*�^���C��-�L��1z�(m6`]>N��gl����7���Q ��4�rF$F "q��)K{�&�1aRo���w�o���Y�?+=��Ol�:�Y��Q�<��1��.�e>��b$'(��8t�1l��x���qT�S���He���w�d�'�O��L?��>�#���Oo����o�]�\l�V�{���b����������]���l\������Z$�����{�~�'�a[~`����l�}��1��4]3I�����6�~��_����o����W��K�������~�M�cO�'������A��p\{.�?To�������c��46G��/q���l���7�a��:@�G�������g�����f�����?�=����������+�9
����#u����B4������^�����d���2���)x$����|��;���I��|����}�6����N�Xl��p���=���C��4����B<T��R�dA���������4���"+z�V��C�x�T��]������f�?Um����%�
b-cr�B]��cu�v�
#���w�U����o�Z���o��]��/�y
�`/0�8Q/�JX�������o{/<ye�+A��|�i�pAM�)X��l��}�>��&b
}����=�W�7�kK����-Q?��)H�����T|�[*F��}}�a���~���������s����0F�?�V�C�Ma�2���������	P&2?��L�����|��c����$}�`[��i�������
u���j���M���0�1@m������by��]�����NM�/��m���:�����on�,[�����6�Qr�Li�����v���$}|�6���/n�k�Dt�u���F��8�s5
����H�{M����j�k����������~��f���i~�pC5IH�k���a�7�Y�Y{���V��[ZQfM}�2�������2#��F����u%�U�Y1u�}{����������/4R�y�8�()a��
:����:������x�a�Z�����w��@b�3�X-�#��P�����
x�$���0Q&1�a��"��� P����Q�6S~j�o��s�
jHG�l$.T��5V�\lv������'�g�$���c�����'��b,�d��j}��X�db"L ��x`��}�'���	�
��$5�X�#�H��4�4�M�@�><7���j��IsB�r?���I��C�\�z�,l0��_��&_�fb�|�LY��g�Ru���f�e��]5�e��c���k�f�4�k���?�������������w�7�R���n��b-�P�grK5A�-9=�-�vK�_1�����
�l�<��a_| @�z��Bn`��H�+�@��[� S/�-B.�����/I|�f�l$�7�Z�#h���p`�%H��;����pi�Zy{<.%K U} ma�+B�
iT�_�:R��Q_����+2�pG�tA����\��fz�J���>��T��.K
le��A�.��:�L
nq�@F^��n��!��fl�p�3-A�!��nRU�����!��E�U���Yf<|���������0*��K��+�i��QZ�y��������C`�u��C
������&}�^���������u�1�F���9O�e�?n��	��c�v#G�����$���Z��A25H@�I����~���L�%�T��������{W=������t��b�c�1?��I�.{_�O�O�������'lK�]�?���k���gW�>i��;��l�����}����mu�\��[��m�����l4������K{7��|�������{��<�2c�|;$1�� 0x�4e�-��a�W���//����������C�7������"0��8���] �	Hh�	�@M�?}�����W_|��`L������/��1�<���7�S�M7����o_��a���e����9X{��&4������]/�������i�|bV##���~���g&m�tI<��o=��{_||�D�����5��=2�?x�c�:��������G������2��=��Q�D�l��3�~�X_�=�Ef�8��������������c�{_~~H�_�o��}�_j����U�1bI�*1.�lpi�=���B������zf�0������.^����U]d�����������G��g���k�y��r�s���K��������A~?T��������&�o����W1+c��+�)z���,�����IPy��-��d�K������;H�F��yW|����W}��xl"���a���o������M�/�u��o�^��
"Z~~�x�����P�3���#�w�V|���S�f�hr��T�r�h�I�p�{�9�S����|�^>����!!��M����
��z_�lT��c<�A�2��?�P��������b�:��W�S}��Y��MD����$�5o�����^�~���O���U�)��O�3��8`�a���=�������� z������k-2L��[��;�������0�B�6��l����u�������}u.?���d���:����i[�/����
���r,��Q^�E�>�������A��RLa���<�����W�=1u��[�5N��+����������W�~���Z}���k/������Wo����
�=.Y���?����3��O�O� ����_Hb�wz4	�^�%��j�7�HEH�O��-��ypy��BpnJ.����R�M��M���/�sl�f�"�y�
%Vw�f�`g��������6'�i�K�������-3d�{� ��'�i��K���
|k�sE��M���LEL��3���
�v�t@�=[�����&�h��C	�}(��`g��+`f����~u;K�A���<���� �s[��L)�&���k��������D�P��+�!�i�m�y��6��z*I����NgG�������E����4�
�T�uW/�`g�n�\���d)�Nb�\@�ru���i��I;>����#�0[��/��������r����M����f�\Cu�\�v#����?�G6��A��y��hWs9\�P��u"��v6�� ����!^�F��K%��{�{&������������|y��
/��;dx�<"q��{�32<�7��G8g ��$<��K�G����v���=���,�D�s�	Yz�pw��g����������.���4"�0\It�wct��ra�������bTp�J���+�at�>t��H|;���\x�Y�
�=���I�K�m��1E�G5��~3oy�=S�����T��rOv��h[��
Z�� 3Y�X�����e�G����h��f��>1�!zx�&��|.?0�i��f*Z���r��N�A����Dq
���<i���<�N'y:���Sk��|��o��2
���=�|1�ex3�wS�N�A���$T��k�<8�1�/ly]�������!c��(WJ+!@+d"��Lw������T~�?������T���5K<�����nwkp�+�5fR�(��=R�l����t>?�����R�i�b b�Tn��; ������A���7)�O�[p7Qk����j����df�?;�e�m&��P�&]��'^�x�����U&:�0����5��L���G���G��|*�!s��@����,wf�0��_���(��h�,���^<c���z�$'�m�K>�fD���/���20�9I1NkQx�2��a���v����2)xp��N�����z��,y�������p�����L��3A<�u��'��(�����J�0�	�!���|!<���B�	;�P��H"����N��$A��x�E������=\#]Q���9;.��WfW7���ynPV��	���
9�h>=V�1���8c<w��.�w���h4a{
�����!5&�����X�����*I���� ��H�f����%���Y��u��& �=��.���g'Sbx�Yp���;C�vK��20�a<���|I��Hd�@��!_�S9Ae�P*4wZPd�����I�3�k�xgW-ll�9���A���jY�r������H��vHs���L�r0��|��K�V�w��x�p��gy|��G��[�N�aE0P8%"���+����n@�g���<���S"����PN�4n��xa.����x�>�����|e=�9"�T�����
'�1��fSB�d����2D�|�) s�d����7m���>y� ���Z���k�6����=��4��|�����y
����s�3SHu�gDh�/�a��+
�y-�a�+<R	��]�i���v�|�]��:�Oeuq�G'�Q;W�q�\��bp������{��nDc���mjP��4,��^����z9V�}�����1"D|j�p�G^��������w��z��o�
�s�G��������Kr��.��Z:"� :[CY!�SkG��/$����'*�W��F���+Qfs���&?2>�|p������V*8<
���G������������&<<p�G�_���{��j�&i3�!?2�f�x�����i��������/m��s
��t�� 3N^"�#l�W�&C��6��+� C:B���"�f����J
��#[�dx�<�c��5Z�m�Q�eJ��;��}E���=;���1����n��P�5��q���y�\3�$^`�\�3����7�z|@G��3������B�K�0*G�nS������@������@�)���8��`F���t���t���/�"�; uAt�R���d*��y��>^<W�v�)bf���cc���
���,%z"�$^����i�����,�U�q@�>�g6O{�ms3����O��&5~��o��A�O�E��#d������H^x�����,�@�����H*s�!�D�*g_��R�(2� 
d��.d��D��(�4y�9�����#L�J�i�1}������0/���f���i�3`���i��^�D�i�x<�!�B��5��f��H4~VP����R�VL�%Ml�
[<��t�!�������������-�=�#���4�A��aNT&��.)�������W�?.�|R��Ql����"s�o(q���,c�oV�l�}c'SEf�f����#�,Q?(J����&��}��l�������7N(����k]�`���8��	��M�b����A!l����!#$�7A�w���7�tS�&�T�?|�l�f����5A���l2�Y���2G��ir.j����j�9q������<c��r����A#C����n0��x��Q��'���PZ�5d�6'��oO���%[�$��4�G+>v��CY@|�%�������������9�4�9��q%_O���%��������i��C��w��j����l�wW�������Okzy~N������9���3=q

?��Xj�)��L�����'zAB"hF���1��v�xsl@������c���qD61�
7�������(X���r=;�=\��X��?-��������q�]���?��g�=]�����\;�qCn{�\�#�z^X��v���~EB����T\'�j�t�h���^�*����G`����ny��=���	��s����������?a�obW���E�je����K�/��v�j�SR�)2�R9(��
�]�����;���54t���+�������JN��9� �����ICgh,#����{�G3|X�~@:4k�[@K�l'��_�oqC���ek'�f�R\�4:�z>m��OB��v^]:�y��j'_����#��F�8,���O�i|*]�Y�|��L��a���B���)4���W��JN@��	X���� 7x��CK�S����������!����Q~P4v�u@I
0��h�z���~.J$��n�(�A����,���������d�^(������g�s<�5BD����u��Q��x��t��d��9�):Dc�9NFI����C�x����D�s��q�,�(��Y�c�\,���l�"��Z`7.QJNP7��w���&:*%������'#�jd=P;�hp�.\������1�����t\�rp��?��}�'\�2��z���`������=�R��(�Kq����Y��)���1��R��.x�~�d�3�:9����G���w����0�|�d�5ces*�|9{�+T�F���������4���Cu!��������Y#�i>�s��o�~`*�JyZ��^�!��^�(:���5w�N���R�H:#�Qj�)3��W4����o�i��3��@���'��rN�I�~���]����N���4\�pO�VB�9������d����>>5o��O7�����?'(���c�s�V�z4g�����U��Q1R�h�$�x�E�H����"�z�E�H�c��?��T��
c�->�rd�d��\[{\g��?��C������l*F�����ufS1�g�����l2F���K��M�H��Z����&c��l}�3g�&����v�g&\A��p$�<��������}�'�q��d�����d��>%U�Z:��OFI����M�y��QRe����,��#����J��Y�I(�s\[���v2J��t���%y�ki�Mw2J��W:�{��:�y���j{yY?^7?��j�����,S���"�a7{������h^W�����W�x-v��k���|��O��x0jIzCm��KH�6M��h�M�k��[��}�,%��	X
�	U�:� |�D
U�=z*���UM�`���H-�O���z��1o�������l�|:c��"�C��e4���J=-8.���������u%Y�QK�|w��a[~����<��}yya������t�{�E���x��&��;�A!�e�&�}P4,<����3�c�0�}~)�/������fv��/w�l]�9?�i~�a'~B��p����a���
_����s����=��=|��xj��v��D�x����J���|���S��r}(��yv�����\K�`e�f�h��?x��-v5�n�7��co�.�#�1������xp�!��
l{d�k����)������h��(��-��
�8tn�4-��r=���c� �b����ER2X+�jB6�9QOM�{o�+�g#I(���y\��lM\O�������vB`������4�Hb�g�e1��4	S���dv���1��F���zw��|Zr��m+�����������h��"�25ZCh��>JL��y�f�"�t�b����H(��N��x�Ye��@�����A����	-�O���f�
"bu�w'U���X������F��n#��p5��6IO��I"�K�9C���]���4�R�GB��I�n�G���v����4���^�5���dV�q;��D���s}����#��(��P��Ok�x�O������kWX�Td�
~n���cWDKwE��:y��+���$�lW��+�;vE��������3�}Aq��(-��Q��N=���L��Z�d�}b���QZ�O��O�6K�����O{������.�+�,����{�D����"�
����>���}���V_�H-�#�>��"+]��}�����`�����89�
?�|��OEfQ��r(�\8�=?��@�Yvz�|z���5�������0]�WEk{j��Y�+0���^]���HW`<��8��{"��a��)ZIg����`�\U�}�!������k�q�i�����[���+N�����l�a��	Z�|++�-�$��|����R��"���@��={���B=4��+V`|����a�PW�8"���H�$�A�s�t�c��
��A<S!�}�fW�K��#���%!"�TI��N��d�����6�) ���-������^����

������)��#�
sS��25�f�����"
D���t�di�q*Dx2>
�%"�tF06a�;�F�N�+���b[��z�#��?]N�������������e��A�?���n�
��5�g�L��k����P�v��Y��K� ��(m��W��W��3�xvs��"�g�&~�C�1��\����z ~b?h�@u���&���u����X�K�<����������V���A����z����Gj|����nXp^�����w�K;$J;ZD�yklgN�&������]����=R�����2
�%������'���YJ���U�9\F��&6S�A��an{g�P�)���YI�,v���'v5r�j��Z��e����5��b!k��"m��<Q���b0�M�5j;[qT���Y��E�-R����������mg�K3���p���S��"5�J��u�#v{9Ib��3���b��#5ol����8��C�"o�R��,�itP�.��"�.�y�O�5}[�o�@�"3S�I���C���'7��0P��u��U�r���W��A�Ng���.����=��g�@�z`_l���e�g���*����*|��"�.�Y�'�v���*�%�r3���x��Y�vP.���J����<U]C9�t��=[uq����@��<m������@j������~���@9�����������4�3/&�z�f�|�}�������������Z�������wy)�Ls_��W_y������7+�W}@���� ��k�z��aC5�7��{��,�|��oP��4k�9���}m4�s����2Sw`@��@>��0�z���4��Ru��#�4���CD#���9G�Z�*Ac�@����Dk��:j�`�N�\u��.?���������BN��w�%�<�<ba�����CU:>j=�(��y"x�l�4|�4�Q"���<�7�G��%2�"O�~sx���Q�V��{�#�R�R���������Q���{�#�q�R����@k_:r�(U��1�;u��J7;�n'�#O_�������o����K��y#�{����L*h����B��=��8���v3���Y����6�������)�m��Q�eg����,�%vJ�l��[���&c3w���cu����	�>q�Nu
��aeNS�6t�!3���q^��|���w���69{.���E@�(������x�D�,��0Q��DC����Z1�l�AG���mY&e��x�8n�� �-��o��!���ZI��3w�4xDK5��m���#��IbV�x�A�7�O���W3�'����d+�o���2�����z����g���<<_�W�+^L�]q�a&�Sq8?��=�;�	�Q}Z��5���`����iS�����R���������`����m��M}8�%���?��	������G#E�AXlE�7���0���)ith��T��K`���O��w�&uUL��^�x��s�O!T��;I��J��C��Ncs��h��)���b?;d�s)?�����}�=���,���P�����N���:�x[O�����Wk�n�x����@�����\�?�s�q���R��^/��Q��4�i����5.uNcv��G����4=$���6T�b<���N��R�,�����wm
x0L��9?�8; ��P*�[������*�W�L��R�,�/��+S�~DJ�4��Dn��<�#j1�;�2j�S�����,�_!�������c�p4:_N���xL8�vX��Al}��Vh���Q��a:��A�,-�U����BsI�P�7�9��
2Z��-MK�M6+W)�4)��R��
TpB���m����hSNg^�#�2-b$�a�j���9�A�G�X� ��55��&T�"�
%*��>R�u���TR$E�H���s���P}��}�7��*SQ���O��,xS�������)�~�����!"��}}��c�,����#��R��?��33Yn��N����Owf����6���l`����JJ4��z��x�-��x��~��Q�:�$��Sl���P�W���,����5 �M�wCI<KM1���V{R>X~�\k2�z
=p�����)(+��bRrn����������%�T�}y8Y[��������P�f�U���r#D��Q@�N�	�Z�~O�SI��Ns4J��V����������X��lY��'Y��D�����������2�S��m��8m�C��.����J���2�51���tk�:�����I���`�(��,x���]	��^}��|!�����a�x*g����5Z��fN>����T���e���)�T����#�j���?�]_j�zKB��V9yO�HMv���&��-w����[��[D�����3�<��>`��E��Q�#�^��L�����^��C�3�Z���U��qN%�z2l��Sg�����+�}������0����I���>v�fK�	}�L�h�O�}�kc�-s���Y2�@�k��cgF�$<���v��\��y!��oIo��Sy��g6�?Op��zW��%u��\�(.�]iV�$��}q�P������U�m���{���j��Y9
4E��6���F���.���v����59�'���p9�9UG������$�t��#�QKS[k!�R�ju1��,�l�(��������������4n�7�_����l�Gll_NW�D�OJ>DMY��P�g���5@����c}=l�'�� �e����P�
�
�0(��<}s����)?�pA���"��~o:q�D[#O��~gs+�����O�\q`�s��O��kN�P����
�J����tn��bSz����.�g$j�4>8�5��<��i���Y�8��,�<<�����'9=#��O�3X��	ZPO���2rf�Q��'8��s(t���$�C���������s���7lYs$�������l���R�U��Ul('�g���A�bo�Cf��i��l��mF*�5�U��hu��Vc��.1f�����
���������%��I�'����l���i-b}dV)���w%c���������x��V��>�f�]>2���}�KI���+^���!K��ia��1�����K�����m�l|.&��(�hA��$��(>��i�+�O�������M��UEu���#�@Fz0k���~?i�K��a�}���:�I	��d�ol1��y�|"��T��>%�$�fn�~sL���o�}�h/Ad�@��J�7���s![w�g�l@���g���X*<�$��R����������sKxW��=���]q�$�%E��"3�?z���?���a#c��,��p5�<A�*�Da'����;!F�Q:)��F##K���������i����%/��E�>��F�>o�X
~��"U5#�k2�e�_R�s3p����:�S�,*��3p�?��y�S��U�,������"��a�)�114n��	�P�s�����EV���RD���"E�B@��Y���������m��
�D��L�����X��c26�#o���v�������CR��'����m�H��M�m��~p1"�^"�0��	���`�Mll�!��~=����(M/n�qn�!�y����b���~�C$P!�X�����0�S&��2������C�1�6
 �6`#�1�6
 �&`c�1�6
 �`�F���b�
�����7� �������iI�*�&��}0�iD<#��i'"��]��z�6��L����������q���c��-.�cq�y�-Ig�^v�/*��'[�}qc#i�x-O<�����;�����Q�:q"��@����G��Pn�p/��0�S(J�Br^e���y�X(��~l#�bUJ*�	7���2w�J�!�	���
���!����f�v��X�8-bT�qk�v7��u0�����;am���I�>p%1*��+�����i�n���}�Jbd�$k�K�������D�>�u0������V�J*3g
��f��9Q ���Y� �m���b�L���m���[b������"y����������o�`l{)�|0�����Q#[��
:T��2%F���Xe�a�]!d�g�V��C�n�
�>p1"\��8��:��%o�����������e=�k@������+>���FM6z�}}��3Q�+NdZ��
��}}(?z��Wf/�omtJ
���u=�IU��E�._��}y�����4�F�������1!J�RK�f���?Nv������&�L��������A������\��<���s ����49w@�GrL�������do��M�I��uw5i�<�������x�7U�54�
�8�|��D�g+Q�8P�}q��Y�S�<&� ��E\p"}�ec��+Kg�&�i�^��*���'aW��ci}��u���5�]����%,���I��������g�{N��o�5��9"|���_����~�J�CyB������5y�X���?U��MZ�'�l��|N����12����;��BO[���S�Q�i��&�t�+��$���nl$��{�x��f���3c���
}nA6�i
T���ss���]1��PT��i���\v�lg}���Y���c4O_� ���S<��T��AycN�	���g����W��[K��4S�I�;s�^[��.7v�j��N���I��EJwA�^������(�Nl�DDeq(�����y0r�}��_�I��K�z�fE����$S��a������G��B�X�_1FXG�<����V�<"�f�g	�i����M�����x��F;����"8��`Y��Wrpe$�B*c����!G�+<�
VH�/`a�p1�#U*��� �$��i_L"����j�PPM9S�	���:�65�t��g$C4{D�O�������4O�����d.� W�a��]���mp�"�TY��D�0��W�a
T�����xL>&S�ion�����5����KY=��O�����l|���L��y��Bk���"�|�P��j|���e�d�C�����$k,2��y|f����C��1����������5�e��<�=����zx��=����������P�s�3D�����4�O�j�98��"/7�[]��J�:Z(�nk9�G����9�$:z��Av�S��K��2�$���J�`�����S�y��1]Wge�a�Lc;����vgO�c�`�����W�$�����_�S�������@�����l0k�j4���mW�i��rb��(>�X^���%j��qyw.��L$T&��Z%��C^�#pY������2��*G?gN���O}�^��h�(Vp��	�3m�o�B+i�&
��tt>M#!e��(S��O�)("��� %"�L�
2x�n�T#D��+�nA����;^�������B+\�}�t����"�u}����T�m�4F&��
�y�����^����|Q��*H$����[fl����#��g�.��M�$(\��4��F����w�|�H�x���6E��U�rO
d/	����4S�X;F3�@C|�Kx @���!���5��������<ta1���_�[�G���_y����Dp"���b��i.R��HM	�PIE�LHZV���?�g��a����@=��CF�?���Q�e�3<��>����6<<5d�<
����Sq�]��/��l2��&nAf}���0��o�`T>	���+��]�-���.���0���'�'��~$������|Y�����_���g�4^��]�����]�+�KH�_���k���qW�GW 
N�y�7=���bF����c����w��ku���7/��t�����S����MQNH�C+,���[f���E���:�cdw�����~��f�c_o+�b<���~�X���	�@��i3Q�
]���B�Y`]���w��y���1�������"�
z���>�P7��V��Kh�a��X��j��-2��f��m���'�L���������&�"�_�Z<��''���h_���n��.0���(�%�M��[2_����n�e\`����I�)�`S��<K��E�n3V4{C���+�fO�W���7{�19_�`�,��<�_�?^���g�gn
����"�O�������V��pV:@l�O�)���G����8��l���eg<4T����F���k�.?\�������J�%�@��js�`���S�V�B����d ��jt�q��p��C�#^<�rA�����/v���_�y��������YP�c�3�����p�#�}���5�]�Fmx4�d��kx[�|o �-z�`[G���j��o����$��E�l{/I�mY���m]MY2H�%��4����DF�����������#E7��{t����{t�L o��5��X���h��_�
H�!OI��Jy$�k8*H��c;���$I�pl��@:k8*H��c�B�]�QQ.��|?�L���h���K6�ac\��ht�c��?j,z�T�e��1��l,����R���&PR��4Y�&�D��,n��&^je�K-Akz������Y�f\�R�����U.!�;�[	�eV������U<�����d���Kcx8o������� LL]�6�r]l��#��<�y�a�E�&F���|}�\A�7��Bj�����ps
.���\A�:zc�#������ZO�,rZO4���Q[R{���J�4���y�
�v��g��[d�Ye���|��R[d�����bk}	��AX�cg?�p������q�����.�4)�{p�(]��R�t�>�.��&��@8��\�`@5W��;��e|��,��=�����5�L�7�A�/_��^y�7/�{�y��<o���� F�^!R~�6w�!R�R��o9����(S��H�w���@��������0S�z��_,c�|����oo�u)-c�E}&nj��H-b��������.�"�8���]�7p�q7�d�.i
��V�I��m�w�+��K���;b%sI��z�1@������J����ZHz�j���-�Gr~�A��D���u����{�%_M���Ta�,�y����������LN�-\��-fnL?��m�
r8qY����W��,u�<�av������8��D��&����G%T�R�&�~��IiO�0H�Xli���k���P�=����������z<��|y/��t����z[|<sg�~�p��m7�����16����0R��j�����L�y�]x�Nk�N��Y�������F�f���w~r.w��Hq�|�����/��>����	����Fe��]��Ir�1���]�R�T������|�������\��%
�k������
�
��	��K�0����Qb_�
<�F	�����];I�[�����<b��gJO��	�e��v]���a&d�����\������?�b�I���=�O���6��	�sh�3�f���^`!��s�����2��z���/z���9������Cr��9]���cY�|������(p��&�4��S�������%��wbu{ �����nx���Z*�����*/�]�J�Z�D��'��~�y��W����e]�����t�����C��r��>\����f�����������ZQ�!����J�8nJ��.�wP�]|��,N����w
0�)���;����&��]��(r�o���1[J\���p/��������i��+6Y�o���%`n�����my���#XN�]�j5��Ht?'��5rx�y|^o�K������_�a�0B(�?zlWcw�+�g��S�N�������-lM<lAe�	�k��c��o9����0���#'`r:����ZL�'Y4JD�H�3�9����w�;�r���C~����������O�3vLG�o��N	���]��)�y��/�����o;��g��10�
C��
���/�����-�h���r�cg�#S�O��z��5�������������������*��		������a��w�0��A�-o
�Q�0��q�A���@������Q���� ���U���Y���d�S�N����H���_��[�|�A(���x<�x�1
#���)��,�nr�mX�a��L�?gSl��#���
���� �
�2v����F���w������R}�3d�\��f��M����`u���Q�����q���B��k4���I���JXI.*���w�iW�>yZ����<�H��
����YlY�%x�Mc���;��tp�����Zc���
:L������<'7Ko� U�bD��.�E�y
D���@�4t��{� M��{��Q�BT�O����"�B�(���q���P�
��8�$��l�t�D��q�)� s�4���p��5���]#Z�@�$E0S�5" q$2�y�]#RG��Ej�����T�� ���jD�0W�F��(P�!
 u�M��qR�ae
��8�A�kD���F��-��-�'%�GS��������X28{f���m�T%:��r�Tm/u��C>��59�����q�T���S��������|lv��-}#�1�����O���&<��|���<��y:��k~���;�M}���}q��������Br+� � ���r�%���C�7��t�r��+N�/e��	"����rg5sv wp��
���qg�rO6A$pb%vb�_D.�Ze�l\wg�	$��+�lo
�����nwp�XdNh+����#wk($wp��h&���5u��kOR�����t~1��u���*��������[�_�2���	c-��z���}]�$���r�����V�$��uG�=���ls5z���C�U0��/B�=�S���E��$��{R��J������[X���o��=H��@{\�=�t@���9���&h��n����R�'x�d��z���w�^�P���7l����Ct���E��W|���d*��/��o�����o����in�����p����U����O������Suf����T\���.\�:��+��=��0��g�D��=-xp)�t�=\�������U�����J�����u�i+�
�����?���e��GEj]�[*6�[���>1��7T��A���(��l��`�_y*4�3�}�/B�E���C3��d��9\C*�;��.��vc�������fNV�V��%�oM�e�0�wa�#��������w��u���|��,Av25O������@��^H�Z�����j
�vz.Q��!+�O
K����-~����fkM��n�}2�%���~/Y<�ROz]��.�����xnM��%7�����`aG��3�"T�s��	���YrD�1u�O�0^��
�H�rEF���Y��,����V���b����a7��'_�^��&�V�lW����
Jhy�o��@/;����u��]����N��W\�����8`���m��0=Z�s����/N��eo�j�c���*��5n~�;��4�Cq�� �4jn����a{[���4r|�X(���O���EQg�A�7e��]Oc����G�%t�0������kc�i�E7��F,�������S�\[m�m�6q��c}(��I����)�����+��O��m�#`��;���}�L�������������:�S7]��~��2��Y�}��+�zT]���n�=��������L�C}��?^K����3�b<_��L_q~�y�����K�������,/e�}/�� �l(�N�l��d������b\�oty_AP���2�%+�@����;��>�-oy��0)�v%!�T��;�*��f�PY��X�#����)"��9�+�7��A����aS<�9��"FD�>��5��t���SW�l�6�"��<�Z�<dk��'&E3+Rc������*g�&0�������R+�M1H^�~@�M4�6��J�6 y���%w������d�c'�K������\wp �(��L6Z`������k����m��V��fh���MM���f��/(:%g�������Z*�g=Qd!_�B�����n�U�e
�Z^h?8V��-sbn`^�����A�\+������A����I����0��"X;ej��$G���bk��-L���v���������4��^�h��
���Y��vJ��VH�����1L!&#���C�������Z�u�/R
1��R���g�h,3l ��DY�0�����F�3r�w�D��0�\��KQF

������(��RTa���2[����Z7f%k3�����m�* ����(��D@�
���&C��N��m��������j	5\����[fG��<f��g�)0����:T�����MOb_���O"$3��x�����J���z(TTC3X�j��4D&d���^@a�����*�b���:�����/O�f��Yp!!���/x<w+���
N��P?��b2�����x�wW&{&��Y�cI-7��W�|"�7x�
|��D��3�E3�@g���LLl�E3G��E3G+�d��br~�byB����]� �*�+N����j#5w"KOSy`�!����, S1c���1c@�3[�/�y�R��D"p�6yX��+2>?�a���-������C���s	�����e�c�&��G�Zq���� U>h,��o~|���:_a~
p�O�7�f�����n�������������>�k���I�l����]����|?a�0��=����)�5���ID��^�����#Za��������wa�S���e�	�w<��7�����3>&L���\>�%�iN��f�b/t,OGb}H7���l�Ty�V���0��G��q"�
|tI�~������
{C�2�����c>��d�>���:�K�y?�5�������1O�������y������g���.|����oW�~S�6�r�)�����������W�D�2��\������Kp��X �2N����ts��f����6�kfFA XX���5��CC���w@��PF!��~s��*QK�<�����N"�A=���H�>^zf'������N�h�O�>����AD6�>y��a#�6�E���+��E������$������P�{����Q������>���X�=
*FI�������a�-I
K�f����K����@���+�&4�������������9������=��B1i�5O�C��G�p).��T�_��D�G���f���X+O?_E�+�f�_��,����6�c����j*��Em7�S��c5L�@��t[%Lt���QZ��
!*�Te��}�"!*�Lef�}�"!*�\e��}�"!�
�\����:��Z��������P^b������.��Q'D���E)�vaZ�P`k�=�J�.�M`k�}�J�N&��{'�9j"L&��sw������P���O0�fWh�"��S����G���s?�P�f�3R�B����Gk��U�l��w��vphN7+z�>3G���Oe�@ASPY�8,�� ��������E�C�.���q���-;B��Pc]Ogf���M�7�z�H��BX����|d��Az�~�������p��:�A��<�� a���u��U-{�Y��1�}��	�l8@X�$�KZ��L8��G���]����1�K�����rRXn��i���?MyBXF7��B�0�����m��rK1L�a9�I3n�`����~���G�pf���}�|C��V&��pp�����<�=�)4[�YJ	��<����"�RJXV�)����l1a�(�]�z+�_�hvr.��Z����U-�%�Q�z+OZ�����Yo��`!Y�5.OO����6�Y�6�a��%%;�����������K��u�8&$��h�������O��`],������!0:��s����1)�0�b�t&P�zW���w����x>���>F�I
����s�S;w]�q�h����Fn)U>j)k@n������Wc(6F�O�<_��_q���������7�.
��;��p��&�������T�cbw���}!��Y��������������`�����joP�'%�1��j?0��LL����G?��u8<�<�lX�C ')��2$��w\�w�b>eM��i�)��R��GBk_��\
(4l�%�&L�y
���uB���,.�����M	{w�l�{}�d�����eMA������v��Y'5��f������I�����C�Xv5{�pE7��d�<�e��I���;L��6�e
1���V"�Q+��w�C�r,�������}���02����{��w<kxjJf�}���Al����T(R������i�2���������������9%��7mV�8����������nkn?���}��f?���}\5�����>F�5��9�OQjf�a�L6C�L6�LF�"�G6"��3��q�!�3'���>n�NgX�@�0��(o��Z�D��-1���DSmjr0��c��\��\c�QL����kD*e2����%�1���v�
�����1	Oy��-�������-����^�py/���m����
U�������kW���*k�zo�F������������0����vyd��#-���`����������B���
e��
}C#4�``��a%,�%�>p�����d{�n})�l��ID�x���[�X7+��������%�`3��j�R�����s}	�N������/��,.�����,�8�Y!dz�y\��3)}(��.����g��g���t���?���_�������[AG�Ru{���qd�"����g��<�V�8�\A:�����hCqxk�����p@��yp
H���W�1N��k�+~gDtQTN�d����X~�������MA�B��<@�����UX�T1�������A�z@T�R�[��%�_���>x��?��u����!��GV�&��Eu�H.I�\n������$���.�����?D!q��2�5~8�5����GW��p{��k��;p70�0���I2�(�^W���*��^�t��F��|c��b��K�����}���:�i�������,<�1,[���O2������L��]���'�Cg���U��-Ol�]ybq�=�
+"ojlzN��h����[$�a{���xfv
��[����z���[����G�����^��K���~Qk!�=���\���S�1��F��� ���f���?7�"`;�$v-c�fq�2w����"��^�Y���Gl�~�vh����Ie�m���/�9�q@a���*��{"�(/�e��b�<7�.�$HD?�l	-v�s�X�i��~��y��`X�De��p�7N:aq�5�� ��2�=k���q�$����e�cfL����X��G-��_����X�j����]I�X������Wc>����9�d�Uc���	?<3�@��58�]����{e}]{gd{:C������5�l���Wz��i<[���eY���-~����L��������-�JK��|+� �9nN��q���p����R'���Qy�����Fy 	��%����k���j���3���L�e*��$hkL�.��vx���eZ������a�`�*2������:C�U8=%EY9�RA�Ri����2���%�g��GR��[p���"��!���lk���(h8���&�)�nos2v�����[6����aq��(���~��g?m:�����?��D���j��8��	���O��'���m�=���x�O���2��;h�����-5�`}��wq;��z�MY�����p�-��X���Sj��~���Yk��4�
��"L����q�
P�Kl(I\e��$�
�f��2i$��(�n�d�=*ZS�w��>Jr��!�~)��<;�kCS+�e�!������z�8��R�yf��,^�[������d�
��;_C��;�����+��)���w�M��yl]�OC'�ft|����"�c
��/�w$�I�T/�_����G���z�����8���[vt��������������c��E�N���� �������v0��:Yy�PR_�*\	��R9�?�1�������8���(,U{
�]jm��uVv������
�������LQ���	hL��5��4�5v�0:;�BU�D�g���#j��p_��_
������$_S�H��aUC��l��B�P���z	��/���@�b���b3���������y����FO�����X10�[\����5�;���+���8D�FB85��1��o����y.�htU��!4��B^E/�j���x����$E�W����>qi����@�����W}~��O��&��J�~83�����dU�h�
b������Q����~��H
S$'����� ��$x�rhk1�#dM���������z*u�m��!m����TPz��Y��^��W�����w�h>�a��hB�"6����	N��4&�����G��_D��3���G��	1�,������Q����!��NBY�w1k��J�Vh����
�u:�&8����jy����n+�V{�BE"c�)
O�'�Ub;��<1����3����������7��t�����v`U��,.�J�����7z��z��J��R�N���6}-�iR�	���5�M�����@������c�?����Vd����2�9�Gr���
��O}�~$>�("l��o�
��N��p��#:�]��(��'�;t����la������hg��s��d��R����UZ�^�T�;�m5�����!>�}2�` =����R���H�������V��y�{W�)��y
TMPV>����J�'^�Q��;��fyg)�uS�/ys��Fd\Q����_L���&R�Mc��M�]O��C��L���4�\������:UT}�uG��%)�C�!��f����*�q����X�n���
�dF� 7��>���������AX��"��!�;m�c���a��c%��1.�$c�Q4��v�w1X}����k�@���a��a^7p�u=���;b�p��.5?H��c����x�H��d5c�K�frl�4W�g�e�����'��D|m����{�6��������r_J�q���9�4���3��#k�1����4�����D������K�7Z���KY����I����4�����H�u(ni|����b��t���DGc��&4�G��o*�g�W�K��ki�9P6���B5�k���o�Q���Bi����'��z|I�&��H�T�i��$���_�	�)LS��~�&��$;��L��80�$�NQ���v�&~kw#!�&$�������@�%����X�kN�^u��`�p��l���%~�s�H�B�gY�)yCK��������
��]����(l��fw��5I���).���DjV��$<m!���/��v�VB-y�V���n�$Q�r���������m����<f\$aZ���d���~z�E��~r�P��!c.�]TP��^�+"����H�tt����Z"��`&��7����c������(H����O����L��3I��P�}�����w���Z�A��-�����i��9�:���V}��{ �"�Xw��7w��8R�V�T��@� �'�Q���d��Y�l��d;�4M�Lo�����&�M;i��CV0��0�������+L��?������ /� �����_{���X�+l0�������A7���
W��vc��A�;�����NqF����_p��d����7��4��P!$/��Fs�'y8{�-�=<�_5h����������\D�����dz� y��-H������]P���\�)�����?����?�����/��0���:MP����<��t�*���V#;O�g�f�|Q����$�a���o�o|s�����^�~c$3���,#�+�E@���	�����)��u=9W��4��T�B�cw��\?@x-��@,�����{=!�t���.?����oYB"nyU+V������b���Bx��q��^�[1��t7��	iE�Y'��������dt��$��������tM9 �{�(��[v�_�?��V)����������0����������|����_�������3?����{�d�-�Z��5,���R��
���)Z2�}���w?�s~��O����wj��>���e@Z������&
�����dDG���I���/�~��/���g5�}/���)��W�(N6
	�e\Q��S�d���������?��F����_�%{]���:(�B�
yv�2�I4������?�����^�d������<d���u�"e��?��|�{X1��nz����)k���*vh\�n����<��������}�a6z��{=
��%8����J��F;�N�!��i'�h�.!C��@��t�W����mw�
k��X�� �,��gHx�<+B����,�?�c^<@�x��:��+C��o���r�a����=�zm�UI��~��F�}<���rL�b��},���>R�g�#�Eq%V�#/%oX���o��n��+��S�DL���wM
�k �J{�,�,�K��V\�a[f��;Q����d�����?��m���y7x{��A���t��w����E��0j������H+����SB� ��v51�M�=Q81D�2�r��r�aBk~���v����$���M�d������:#��q�������7�];lU�K���+~i�6�w�#^��U��Q`��![�����j�i����K
��YC_q�]]���U����k�x�Xto+�kA����:�l���~�f3g"[�� �]���zG����@N|M�`p���i\H�i�#��H�[c��5���BC��V�1<�J?������P���9x\�7k����*��d�����\�(<V�(����f���z�'b�
�=�c�+�h�����Y�~p�cp}<��x�8�e�����k�v9���E���
�0%4�������}��Zv{"��V�����u��L��I�����.]�K�\�	��tc��b��A���K\�6`>P�m��6�����=������+{��&{1&\"�c���@������K�Lx��l�������b�����A�T;B��I]Y�����lB��y>��l�g���K��&��x���
��O�Fp�V���|� �t�[�c��6�s]���YGx�qm��=�@�J�2.�P�A����r6T��^ItP����n���Y�D|"�9������=PS����	����������6���>���B|"�:�����I`g�������Oi����\16�#l�g9lp'���w��U�=!��;sN��a�5eL�����pl���6X���kF��,Om�!��k<h8��G
�=�q������������Ug�H���~�<��J'�����gO���)'au�Y�M�Dn���Vo��h[��M�r����Z�y�������9	��k���P��i}v����1�U)b�[�HuA���c&��8`2y�C^�b�&�A��^5tP������m�����U��M���&)B.q������m�������������~��IS�m�6��z�7��a��).PI@���vH��3�t5������m�r�K�����4��� �����e�
�f��������n����M@:�!t���M�(z���Y���9��fq�������D�H���M+p`53�%�������h���l���������E����_��+Fe�[��z)�1)�PhE\�<ik!����J7c0��+Q[����]mD��%,Ic������Y�L$���D6�=xE(H���BCh��&�!K4�
�[:?��$}1���{FH���Gh��s^�����?=�����V����s�+hl���%�w�Ac=�S�c/!P�A�5��� ��>T�60�a"�����"�QX"�F*�i�Ch����G	�N,���������X��
8�B~����b�4�_eNB��q]�������������A�O�rw���/R'(wK�v�%�d�Y�;o��>��|-%���bZ��3�}$�q4,[��s8�>�l9�\�L
��(D���������_���^\*3{uNJh����u�o��^AT�QXi�0��������]D��
��h89����zn��"��Q��S���]mP��������6��{#�{����w
��!zwW�b4���}�*���B���8��J[����/=������K5����%9��������7|"���p�#F��z�k�������)�;Z���&i;c6[�d��2��L`��Um�j[��p���b����3��B�9����$���(���K�.l�g�-m�������������D!������4�9%%�_��N�]	m��8p���\:��VP���W���Y���2z��$(2<��TP6]=]h�n\-���=����:6�W���)Jj*���0�q���MI�1�2Nv*PAT�B�GM[mTX@��T��mH0a(�O&�J�+����#���������(���O�	~�ga��z��;Uj�I���s���y��7!�]��8��f������wyV_
����[�8|2���f��u���c�����gh|
w_�����V��'�9�}q��c��'�-��v����EGn�VJ�����k\�d9�J��r!����)��-B�m����AM��)���K�">�u/��+�ph��
|~���Ll��]���<O�:�n��IQ
C��c����E1��o�g��*x����>����*�����S��sX�t������8xJ}����A\���������f�������W.x������HD,%�NnH�k���=a#�;z���1$�aj(��5�����;��u������������p�Z9o�o$*��_���/���������^�����N����Mz~������6u� �n�I�e(�Q�Yz��{v����DvJ�~
%lAH�w��P
!��`�7g05�	@�.��	���"�����!w����������rX���<�aN��l!o�)�oze^�8J���o�(T��HxZKzKd��J��.����Z��g��(.�(�<�VU��)[�w 5�<}*�Fy��h}n�hj�Jn���>L&}b�_QC�J�%PcQ��(Bl�C��i~���}����z3�/>
��k\��aR��YF]��m����0���P��h�V%�TX�Q����(N������!���MJq����w�Qx.=�
�f���Y�}@T�����pPZx �sH M�� 76�M��`����^6�mzfvF�W[���x��	}��1����v��(=-'Ql�r��K�t9�bo��y���r�f�w^+�?b�{j�]V_I���n$^����x��&�n%^/7d��
���Wyi~L������
�Y�Z��x�����-��O�x���|���J����E��
��V}���y���'��3G�O�?Lp���B�'�4"���a
l��1�u�_U�K	
y�ch�y����\�(R���Yw�ER�/j��3��6|>`"%�-��	�q5��cX���.U���X��L�����:!�t�4{�l���~����Q,����Z�A�\X_Jw���2P��D����c%����)�J�	'.�
v�x�/+����F~V3�
����{�W��(\���;�J���]=8_�:	T��������,����)�C��������8Eo���B	��@T%���������F��,{1lX�7��0����@��j([%�CqM� +w���*�{z��%1�Lc�nk�}����(W�`�N����?!�P'`>$��|x�E����Z�N���<)���d�y�	
h�tv�h����:����S^�E���NP������F(��E���z��QAa:����eZ"�ez���~5�5s��N�m�H�7��qcy�3�'�~����AB���O-$:^�<T�8������r���9z�v�-�I[�0�k��\�a�>����5;�`�y6�5t^ �A�+������z�iXX�B�>�������d�eJ�)�_�����zf^�0���\���vU��R�b�X���oO�xd����P���<�=�,�(W����.���U�d'�i�C��s�9[���n���5��06�;�e^�$���12��$�'�7=�+��i�r�q�iyV��rC_]���&WbB�m��-����Tk4�^F��B0�
�� �ll�X���� �T�0����&�8c�`��:�[6&��'�4���dv�S{;"p�D2%<�KVO�|�9����	"���
��^��s�V@}P������<v���id���W�!9B�
�nr�`M7 GBv����'O	o�y+�Si��|/.^��CvRh��5�4!R!B�� ��/�������+ex���������_����|����6��=7�E	c_h��i<��']�d�!^��L�������ic�a����\����������~/���	=��ui[�����8������=������;��H�3���Z��pd�$����K�A��n��;�����?��!�9�Pe�8W�������������5���Qlj ��B�
����w(Z�fLi��0\�5�Zx��8�$���"���C�3�g�H{��<?J$
�q@xU�$�,c�%�SG�h��,��
-*c�$f�[�����4^'���HhA����qX��y?d7D�������1�-�f���,�b:��{F8a2��q~��:o�@fF���0D�nU���9F����km�5/��a�AR5$3
�~��?����E����u+9U�9pi�W�&���G�����C`CO�/�7�����Z�
,[Y6�?����m�7��P�E������ko�h�����j�����O����r&��2Q��8�H�-�����S��A��s�I$�m�2��������L�Oc-E�3���lA]6'��,����������d�������r.h��T���J�����H���4�5<7��~������neo+�-L�C3��k|�����N���4���&�����?�[jS��%����7�}+�c���}�%��'d���tYy����E(�8O	4PT�*6,��I<�pC�u0�����j��JTj�?�U�K���x������$��AM�=(�����YtE`�R��CE��F���@��y��J�!P���	��c���]Z�_�,~e
]���a��W�X�	ZJ{>-����L��w]�K+P�9����5��I�&���rwgpL�M�������;�5�Q-VwZ$(�@JT10�k����.��Hpme\�+on�m����wH����?Js7J�w~h�1Zq��"��83H�v�jm
	�vd^H��?X4YBB|�w�n��k��4�R3�Lu�)�����l�����Mn�	��Pz�Y`�i�Kw���cm@����B�p�Pz����>�-4
�7�dA{*�C��
fE�o�v�������`w?��C��8BolZ���g��������'5�TG`��r�i���,��[7�c��7�A;�
� <��v���V�Y�&o��=z���u�����2`f��Y�`������et!���2�f�����=��6��^��AW�\:7Sx�Y�n���F������k,������a�b:SX`AD�sb��X��|�"��
���S9����������O�,6�
j3���'m�D���������������7:�~�-0
+)���W!\hB��������#��-��1�,��G����o)�5��mZ�t�����N�u	b��.!7�����2S��n������]	H��|�W�����zMj[��1Kh�R��&�	2����D�Im���[���`�Y�m�������B���F����.�6��KD�p�bb����KOd/$�d����	V��C��k�fML~���bU�[3z��c|�V��%�|��pY-.
������)b-\C�%��X�9C�E���",?~4���!5�� ��,��eH�{--�������x>-fy@kPn����u�o)H�Fj< �n4��U�)��	��k��E�}Q|��de���7���.�E6u~d5�9@m�@��R����d�MJEat�Q����I�7���5~<��4�|���z���TJ4�H��vOs�@w�j�%zT:�u�2�d�=��
��
��������i���p�].3��k���d�m��;�3�����$��K��5�O2z5����e�,ozGU�*j�a�*�3�zce�K_}s,�UsJ����������:���f���5�� ,�$��c����?��T��f�G���y*�����:�gp�I%�
����=E��b�K��paA��@�{4�,�h��`
h�l���\SzM��e��
��ID�R��s~�|�rLo�\o��~�OWm���4������A�fh�38�1�c��C�F?lk��O�~��i	Oh���P�p��>7��`�4�������3��zB ��a]���c��q��c��q\�+��1�A�8��	.�b�8����`�`���$����Y$����o�CKd���l����&g������K���`=�d9��u�$���NL#^yNM��]�D�����apH�
���&C�g��W�a1��
��?����4�6�h��Cx��k�L�0eP�;�����6�h����~�7.�_�!�_�5R&C��h�?����^�`������z5b2����z5b2�q�T�z)b2����!�o4�/�A�v����:��o���}��9-�p! ��z�0�
7��ykJ0�����]�,�R5�	�.����������vMo%���8��:��Ha�1�z�9����[�"yN�Xg��4�������o����y���������p�7�<cW�V����
�y��:�'e�6��`J	�_�;&�d0\������zB��
��8�����7��R?�?������N�N�i�d�xt+
�/zX�J�M�[W���u���Z(���
\�����,Z�����s��{m�G~:�~"oz9���Jfc_-��'B��������w����)�����)Oj�f����`�e1��vb����W�Sb���[;�(Oo����3`�������}���:dD&�2q'�IXU���:��o����Z.�	c@.s�J&�m��f�L`(D ��I-�1+�N)a"VB�2�����:f��A"vf"$2����d�N���b�Mh�5��h�����6�	=I�@F,�^wk-�:.�.0�	�� <��N-�	f]���b�.&�YMV���t:I�yo�0U�����$�<�Bulf/����j�����]�A�8��Mc3�4P�Z�4�2C�P�6�(�S��0zEah��Bk���b7�,���8�5$�A���Y�K98l\g[����\SX��L~�����t��IY%YT�����F��o������q�����;���d~�P�3	����=!e�����"��u�Y�����i���qv��c�f�������f%�W�[�J>gQ���^y��!f���j��l$FlG�z���{M��	��pG���*����������p�+��K�Y��+�t���Q��a�q�
����T�=B�C����9�����|�	}T�B�����5�6Q��,����ES��3d��|���D�����*:/	���-�B�'����]t����EK��3j����zE�	Z�_Q��x�q/���������S���W���,��M�4�k/���Zi�s^P�D�-|�CV�������/S�f
>1�ww�.�K~<�	���Y���/`��4��8:�����M'
���V��uW�i����&h*�1A��nx��^��i�j�@�	���.
	`���wQ���9�n�m���sj�4a�$�O-�f�0u�G���C��p7gQ^�[�!t	�_���.Ta�0�0�F�[����2��u�F>���
�)	E���p���S���Z��`��z�7��`\
�IC����������=;��oi"���}q�w4m��Ob��]�F���	�q_�����+�~d�a�L��oF�/NU����r��N���,-���I�������e�����������m����0t	�{������G�_�����Mr���[���@���W��������!�^�$�'����� ~x����aR�g"�C�r���?|a��
��=��,4��F�u`���(M�C��X�?����D������������$��BY)���{����z���cR��'��Z�e�%r�����>���.�����s_�#�@��P���������O��>��U�����'�����F"�o5������.G�����8�
�����<���~[��6��-�m�~�o{��jP?-��*I|�.��~���e��Bk�,��1�$2����wy�aJ�?�}�y�^���&������Z:�@�T�� ����g#��������"!������3�S_��E���$���I�3�c��EP'���^�����'	e���qG�bwy�����|����=�&�G�{�������������|��1g��#��J�����G�/t�p)OT�t����>x��O������H��\�y���(������XH�V�����-�R����,o�eT|�K�J����u+��/����~_IJX=�_�o���5�~�!K�V������dM`k^ja1JT���::������;���Y�w�Q���$���M
�n	��G,��B���H���1,cG��D-HC�Z�K`�aeqhi�����^� \�m0X7VX��j1H�c�����Y�,�C'x��/;�e��?���\����"!xZ}����3�I$c,+y����Y{e��A��~�p�(��W��.v��L�,��D�F�s_���n�	�
��n'�Jn,*��lA���E��=x)��A��[I@&�������p�NGPR�c��O�0)+T>�.����@�h������6����$���#a�z�A��=q�~�����]n�0A�$���iX��"�C-9��a��Z���x��)nA���b�`���1����N��"�mJ[�-�����]uK��B.-�f�[�-:����n�@���</�������/�a�/�{�V=/	���;��Z��w�����yI�fu���j�9�@���;��K"7��mWY�����;5�K�6��nW[k��W�>�Nb��4!�*��/�a�D���0JE����_jEn���Jv��X�W�����]���&�+K���G&u?R������_f���k	e��J�&;�d����I���M_�P3�x{z��+!��p�3I��'J�!t����(%B�v����`d���GZ\L��RV�� �f6L���'�����o&�*���C!n^;�	8���w}�J��".�j����(��p�������i����)�Pf������+�!_����:�T�T�����(���������f/���E��CAOi��
=,z3�iFA�i�T`��i�����iR�����E.������vK�Q��m~������L����Vu�����������;�ziVKS��C�v~B�=���[o�������J(�d~t���#�����I|K���w7(NT��`;��/�<�*m���K�&m���C��!����:�� ����z�,�1wY}*��7u�|[������v>�$�=�y��HM����h�^�m]	9�[��%���vL{yN�P{�8��(��E�������X
�nkUp}	?~"y�Q��[e[Be�_�d^�<��w"�g"��r�$�����-�4?����z��=�Vc2\t��E��8�\xhx.��v�}3r
"������'���|�Uq�W��������r2��_��m��K��2���P�@>��s�g��R"��n4I��.��+����}�HZm��3���jkI	�)Z�G<OG�$���"�q����>d��.���	�aJVM�wSaPZvF��o�uF���l��������CD�P.Q��h
[|��_Q�v���&_�U�.���!��N�s��qt���$Ah��}p����+��iy��Tq��������Ah����PG �v�E�t\�[�r�JY"�;_A��-\J0�6/D�����<��I�f���X��R���[.,�� ��r�� 3'�#.,�I[$�%r�{(�&�'.,�I�(�%rW�+�&�:\X(�tYD�n#���iU��d�hX���������]XS��CK���rg���B(s,t��l
A������+!����i�u�k�J�Vf�,�P��Y�)]Q�G�%?�\�IR�!����5���bi�KUl�����E�����s�q��9�65�cB����g
_�(	���h����"�a/M��md�J�h�R>`9V�R�mF��Rw���X{',nNn2��saT�%����[9�M��m{d�d�4fE��"��w��@p~s����:�K�8�'u�E����SJ�	">�����#?y"RJN��%MU��Nq��T��������q��5��60��=��O<Df_o�,�6���#6�L:�!^�����q�����d n�8w�{��c��������P�=�P#:�az��G�;eN������m��/N�@�P���t(c#�p/��w&���b�9��hI
C���}6~?~j�����twz0�!�}�k�j�����AVO����K���A�c��<-!�Z�^��<�%��fK0��\�F������S��F:�12��o���0}{*�p ����Fe^T�����#i�H�W�����)��z���>���@W_P=�C`nk��6>�����z9�����<.���o��I4����
�^d�����e�P}r�
\wM���_��2Y��|7<�7Y�I��q��#@�r7O�iX��4�s�K�� �d4\{r7re��N
������L����d4<P�_���+�_'���ZZ����WS[�~�X[/�@`}5<������WBh:��Q�(oq��e�1�CB� ���P^2�'���F@����D���V.b���C���X���!��|�:���:_z��Y��a���._QH�:Y��eC�!/���k�����_�`�,3�_4��'��!���	�)��3��pI�.���#����K������<(;��fy��1����8����x����F1qhW���0�$:�%�%r.�5��Z�@�_Z�\�ayv�7�7��4U��P��DO>�����+Bj}�s�f�Y����U?�
rX�4���i������F��
���2q�EH�X<BVJ<�2��o����`����!�Z���lL��

�f`>[��l�7/z9��i$Bj����A���I��~v��)�3�>�����v6mkB�c/������D��Gd�^��������4td^������� �E�-�p[+4�Br�:7F��h�<�&!l"]�2�)���-K�'�W�[����f��@�����]��P�@��G���/�'���N:e�Ta��j���-$������~��0��0�HkHIhz�����
j����Zh����Z�5S=QXa�z�h��Y��CD���#@�n>�4�Yf�c�yHeh�j�{�&{�|~��@R�3C�*��*A�}p�I�������������K��'���u�B{%B��������j��9�j���C�\�D���]a�e�H��3�A�|�����=�^@�6 �1��)w�<~��X������`���%A��Q;�Ge�������:�-��t�����e���Fx�3f��Kq��d���S������s~ ��WT�#E�MX�������
������ix-����Z$��pp�@P�������Q��P���)P����7����/���������M�	�����?�����������b��]
�zZk�=���D!���Dm�����K�\�S>�L9\?����[���-2���S����2�&0���`��Z���C3���)��\@�]��2��|J��BDS��/�v�H�����/x������B_-��l��w����4p�����	����l:[�����4d�>������|!^�����ug�7v�s:^�����-]N��s���������~�kg�=-g���W������p#�$x��T�	4���������%��sI��/q�n4�bW���S���-x��T*�#4_GaY��G�X�8,;�lh�]��oH���D�]�������J�_NM��P��Q <�U+l�������d?�#v�>�Do��A�|�Y�9n���[y�Y�.=�w����Ry����
���U�S���;!�+�S�[�D��i!%�
��[JM�rJ��A	����2���Y��5i���!�$��|��G�������O�a�W�F!V D�*��t��B+�����O,4G'�n�i8��T#uN�I<�\T��*��y4��r��u�����ab�-�
�gc���X������Z+9_Y��%�������� �{�27�~m�F�+�^��q��w�!��J����_��0M_�,w��������sX$�/@m�4\���7�f1����BM��w?k��[u�6��kO�w������]�|\}w��a�?������������?����3��jP�v����� Q.q����?��S} ��^����VD��\2�>\����8�] �����	k0b��ET��i���8;�1�����T�f�����{��������
�{U�������W��G��)��Y��RUx��I||�CN-�6�Q��{ ��0G����[�����Q+n�������m�m��o��M
�:�z�4E��a�����x�9�!��KX�������e�����R!�{�z�d�}
Bu�{����N�z"��<���"au[��K�����U0k�qL����d���W�<~��>��������� �#����
D����~%��^�@w%?�����D~X3"�kX���"�kT'�	Y\�/e_�-��U]*�������*�I�.Jz��&V��E/�Gh�)���(���������q�����T�\_�@X���0zKh:�8|~�'�s5x�����
���	�bR"������yD`�]bR�l�*2�8Y�c�B���Y�/z>����������|�D���#����hN�_W�6G�]�����\�[�������D\� �������H�P�kis��\�������*'��A�����*��?/1�c�y����B.��1�Z������>�����O��:�G����&��QjQ~�$�����\����A?A-���jw
���*���x����C�r����m��w:�
�z���Z�%���G�����q�~�=6 ��FXk�c| aB��O�zY�:t����Dr$Kw29��y�O��a_P��k$��/F �P�a#���fu�?�Ov��H�-��s|	�j�1X���O�y=�]B���o�W-c�=�L�~�������%=i����8G���a��/aq*5*#��F����]|�}�����T��49��s�Kv���kO�ki��%�+d*M��#�S,%TSY�s-i��%�QHP�MC?������C;q�]T�#-	���2y���_
m`n��=%Z:�og+�H2
������������-�MJyN���������P��X7�E��4��EX��28{�i���q�5N�B��{j�0�kH�dn��(��K��,��;j�0�{hm��6�nR��������y���J�'�����m�J�Z���|6E��mD��*4x\�C����nh�e
����k0�,4��QC��a_���i�
�U|��*RfeV�}���7�����M��L��5���
�?p7�#Oy^r!?~ON������ZA����P�;�7������m:��XA�����W%5o����	�$��X����C^����bB���GMo�b��}���f��cFa����u��k�o��8F�<lW�	C�k�G�W�����B���~�/���K������q��+w@U�\Z�������nzg���&�o��3*Qt�Q:��q��~�/��
3'�`��aQ�/���5>]���>���8.8�S���v�^���[R�*���
���t'�pvr�M*��!%����0�Dp�������1NY��5��W�c_NJ�����$ 2�r�'p
.������dd"C���V���L�
�����B�������w��������g�+�t�:X�{��I��T�
��0��h����tx�[y�����VZ����
����B8V�)�����H�"�$v���o�u����$297������Kh��A[
8����7f��A�G��&�CA�PF0�>�����D�y9�
9B���9@�
-X�����\��:$������NIL}5�'F�o��ciT����]�o�n�{��9��7#c��{/dI�F�DO�2%�h��hi
#	�u�e���V+��AB���C����YTY
�����u���`��o�����Ze��������3�����.L����2���8�6/3�k��a�&^����R0�NLT
�2_\�GmGK��w��i�2�<�Gl�D��������h�'�4���&*�V����v
A�������5��z
o�������.�qp��F���[$4$$��i����0Z�x�s
 �SL�RK��=�!6��� �3��;Z��S~I^o������<<�$=n1�A&�Q<�I�C����m=n�E^��,�O��|pZd4���W<
.k�Ug�P���r�;:���1��	�E�f8���:��ky�����
���HVY�E���2H��z#���Xz��m�^jUa�a~��?�d��$���{��av�hv������hR����h�`s��	�o�����$#Qy��x���������SJo�[7N�+Jp���nkK�,�����W��.;�2h��7���@Bl���&Fx[S4xG��&L5��H ;	�'��A����mo=���[���ncp���>����/��������o������*K��������&��bD4��4!kC�LW�g�y���������9j����Q�~e��{�r���J�i��1�=F����t����B��8*�����	vi�z��a�{�^��5��k���u|��3/�c=�\',^���_KO��
4����o$��9*���Ij���t�eUr�}�)z�6mC��$b�R�1d��d�:������I���1�SX���D��Ff�N����7�q�=�����������;�E\1�L-j������7�����4�����u[Y�q������E'�M�!@���a�T�K\%�s!�x�E��%.�`��8�����d���)���0��WB5;Vp
p��X�
��3;Xz-��j}�����W�u��.�����}J��
V���(���Oe�=P�Q�[C#��V5�����}%E�.V@��^���j�!��c3���,��&���q��a�f�l82C&f=d{d3�H%�z
�������=��Y98�1%p�'z�\ShszRZp-���B�����j��g�����@�o�g�8���w<	�����0_�������)���~4��3�#�$�2�YC�imk��oj������!*w�i�rJa��V�5���;I�b�L���uXsN�jX��3�r�����|X��^=\�.~E����� �^����a�����������L���	au�=�Cim��bDD��a�������X=�6����-��`32N�@d���2r�_�x�	b�}"
��$�0�{e�K�(������������dH�����:����,��.�����u����k3������1�fk��`�w� �,����p,�O��)��dv��35g��*�������w����;��!�9�}���������>L�|��5�5k�C	K3��zj���5�����3\��;����;Xwp#X��;�`�kk�2�5w�C	�dI�6�6f�w�aD�;�����������a�1{�c��q"��;T��~�cm������ �;���!�g:��2����3��.�ah��g:z���L�a�5k���9�f:U5s����g:����7�=��r(����c?|M,�
����Vp��j�����I~���4%�kA
|�(����������\�-��r�c��O�.�w��.�U��������8\���Z�W�vn�)2\���������|�N���A���$���aqt��sB�F��X���$fZ*)$���H�T�F3e/����M%�X��GP��'E5�$<[I,k=Y��$�[����j�,��ja��c���H	}�>�I��K�pa��g-���D��@g�0��o-�����e�5e�am.�y��!h�#"Pac-��,Ac�0����`����^:���)�k����>����@W�$��i��P�:����3��7��YY��i��q����
�x�x>/����6�_G�X�S^��xD�"�l��`L������=��s$�81�C;V�mt��n?PT5���g"],���Q��c��v8?�F�9;V�me���&�������h������U�X���H���7�0��u���w�8��u760���Zw;�O�K��uw�;�

/�n������%��� K@K.��m--�B��3�	��Z�K@����v&��"������Br���th��-��a���1��*�$�E,�yu��WJ2��,���B.?~���'��8d�i�v�1MC�"�d���_h��"	���������_���C�����o�������8����*�k`�m�+��s�}-��-�Jf�
jZ������o����pq
���>�>;�M	��~�/���t�A���a��c�}n��hQ^1��Dy���DI<p-,K����W�m��$��qXVo��z��T\RNL~Dcv�zM��;����!�&�r����`B���Q|U^��i����flRi(��m�%H�CJ�Q�^�Z�A��^���ZZ��)
D5�2 ��N���	���aE�4;��+G�{<��u�nF�;��4���Y���x1f/o�c��2{Z���������	m0M<V��D�����65������XL�
�-����(�P��F;3th�yQ��+�s���#K>`2�q�	O��<�L��j��u�3O�G��"ml���:^�k�0����>-�5��������
Vt�v>����l�Q���}��rGd�rH5���� *�T���5w
�	UD��`m�~�G@�L�`�<C.
�7=��"���tG��2-����8pQ���|��z�`��A0�hpT�}w�$�g�]O�����i`p����b]kj����"W|-�(>��8�t���|�������h���7?*{	�~������������f��%K�Efn��g�qB�qBgT,Y�H,���d�7�5Tlx����;U~�4��
��1���+P����e�pc ���n��/#�
Q�Q���������1�G������u87�Bz-���,Y�Q�E�X�op�T,y��<�!��~h�\�EQc�-%�?f���x�W��.2�^�������
�bg6u�|��j���4T,��o�>h"f��
}��OK&W@qW���E��!����p�k�}P��}]M��h�'�#��Q�1$B��X63~`����r���M��1~��o/�i����6�h^)�a�\e�/�qf#��C���n�4��FH�r�U�c���oM�+�I�?T���m�/��E�.B�!����s�/C���eU<��'Q���?J��1���F�K��k��p���PW�x�>����.�\&��3���.7p6h�
W���Z��,��hg9J j��]H$���|��:���0������<����!��k�<'i|"����;�|�����
�W�d��/�o�S��@�a���w���_�Ze���v
a$�D�'G�$�i%A�`)��8�Qvm�����QQLcA��z9���F�F�q+
���e�i
��E�k*�R��
	<��*�.���M�{mY�t�v��T�0�
#��
���@O=���.��`^R�(�����(���A��v5���������,�La�N,�t�k�`x���adf�[xZzuqO�n��k�������O/�gP	��7��b�7���z�����t�����F��^�Fa<]�b�$����l�P�o)�B�v�5]�����.�0����%\x����*������l��S���`�D0�v�)%���$`15�%�������E`g�S��M����d�;l<a#-���BGM=z����������W�\x
�#l7
4_l�A��C����9���j���
���M-��+�i�^"�Sj�?�H���x�����������16��-m��L.
�����Y14���U����89etG������Xzc��=
�m����ow��}O��;��p)n
�&��D��EDr�|����K�f�d@r|�ot��������X�7hr���f�3>Rmf��Lm3��p�6cv���F��:cK~����%j���_�d�����f7�py�^!fj�"�5���'���I��$�sU:F��ZvF`��S`����
�u}#��C62�Q��N
�������������@-��k��L����vJ�R�������eZz�fY���uw��9>��Fn�p�����������m�n�X�>�r��a���m<����jB��tYW���{�����t&PG%?F��T�����g[.�>������\,�������U H�����(Ai�T�,e.JC��H�Tj��8�7��I�kf�6�H@W$[K� 4��d�����{�(Oo��P&�"{�.Hz��t�!>�Tq���[R�G8�
����9�\�����9�����:;Q~��(w����i'H����>*yO���h���0u�I���v�n%T���3���k��������i �z��{ ���I1������Jn��X����Vx�R���z�`'V�Z�^[A�]�����U�����2N������������_�>8_}u	�����(�*C)���q�C�������|TJ������O�b�j����25q{�����C�Q�k
r;:'��t������
 ���^���d>����yd�
�7�W+��h-��F��yv��\i
�|��$p��#EL{���<B%z��J�g��mk_�&tW^"��W����ZBN�%$��vg�Z
�x5
�m
��%�X�� ��JCe���N
g�{CO��!^������=�Qz;������~~p��8����N��1I2�.������v���4dB���T81'��0:���GNj���4�D�?Y~D���8�w��P?)5�!���������l�~M���m� �����(��I��[c;�����b-�^����%��d1=]:����C1�P�����,J�����\s��E���U4��F7�����Q^��{>5�5o�F\���9�q
5�����
(��=�K��vGm���A�?l��Y�g]C��g_�YW��L�K�������MKc:J2��n�T�F���%��%�[�.m6g`�;�|K�w-�M=�n�c�^�t��9O��s��MQs���kv��9���V�>+�'n�t�c~js��#�P����y6��z��D��k�|r�LB��$o�����t��%��{�A&h�
��-�F�a�3	�S�
</X!T�C���B��nwzY�>r�0�X�����N�"� ���z�����h��&����F,�5|��f���17��T,Y�I,Z�"������#��i|��
�5<-B����M����M��u��8M�6mA���}��q��i�5+�7l�p�aCO[�M�D,(I���%���xG�F����9��}��,���&�Tv���D�������?��/�eJVq��n��T�Y�H��I��	Y����n$w@���V�d����<�S�{�������`����>jV(|v��*�����5R��%�^�u3�h�Qr�o��
�N
/�4v.qu���X���B�=��AN>��v��f4W ���$p�c��w��������5HW��KY����12��~��O?���,���x�V����$Rh"o:�.�����VY���"?�J�Qx�n'%�
�@����^������/�z^��L��0���n��*v����*��eEt�6t���_:�|v>pH�C�������'Yp���w5��!��1�o��g<6f����_��/��L��[3~Z�TN������,o*'S�k����,_��G���9�q8�`�x�����\�o�^Y�jp��C&��8�l�^����
�~��\��6M,��^���'+������x���m��\�����]�E3/�P��{Q����>�5�j4��p�d��3�#�Tk�/}%^�����m�q���f���2�k3~Z�TNf�t_�TNf��o3�-�xf�8���||�� �4d\���_��������3��54�Z	�x�?�f���.�����9�`����	l��w����f��g�uy�>�f4���#}h+�4f~/:�.mr���:K��Vw�����
��n8���S��s�"�O�bM�����@�Il<�.��l2o}�~
V����p?���������������i����6�d��T7�����S_��) '�7^_�	 �o]m��X�@0����}!���`nH~_d�	 �olm�����Q�l�a�=.)�qv����8y��+zUU:����b�����T��+=�7����o���*�5��~����
�j�X2�I��d�Ns�d.�����7�������]������A�~��+A��cq��cbFrL��}���@�[���L�>N��	$��KX��^���7��fF��T,9���%�W�*h������xx��*/���R�����d�����J�@�zY�6K���H�)���!D^�����y66m�R���%�,��PBn7����b��Fp�q+��,��4,��3�-�%�?d��N�n�9y+��{'����dc�i����XrMg�<9�M�[�9s"���9��S��93N��[�QB>%M�H�}L���d���b���}���E��q:Bo_#���T,9���Z���a�/���<������i�Xr�i�6w�z��P��y[��I����Xr�k�6�4��	$�n��ID�J(	��(�n�Xr�o�6��V�}pM��g���x��!jB�oY�=|���g���po��z����%�tJ|��x�K-��%�-���fz%��d�������3@D"	z#86_�����H�t~|���L�����b��Npl.a���a�/��7\brJ��C���[���I��Cv����t1���eg^?�HW�=|�D����t1�h���_s��-�I��f{��k�G&!3YF�X�c��Fb�4f��*$*�Lo%�������TV�]�;j�v]�;++���K�������F���{�2%K�����N����c��f%��n"�.�K�������k��WR�����S��eih��]��%�������]*-�d\��pF�P����L����������5�$:�l�1�^�����Q��O`V�%���qS���m-|�
D@�!�f�N>����Y"��:��~���Pe��D����4�f�2H�&S��Y��y������I�Hto��l���A�["h��^�������4b����_Uh&�z�#w��%WF`,y���W2!K�YS��J���+1+T��%�������^��D��k������H������6���
l�D��'����05�7f9�"e�������u�H�,9o�q�����G�	Yr�4�4V4;������t�1�
W��qM����4����r\5K�����fa��E\Y K������7Rm�s:�lw��#��T�p:�H�
IK����P������,yo���UA`��i��q|c5�5x��e��8E�j3�.�E������
�G�Jv���T$F:��6[TmgM��i�f�x��j�v�T,Y��,�~m*gLY��d����������b���U6}43f1*�X��,[Yo*�X2�e������1+���%���i1�-=k*�,��1M2�e�S����dz_3m.g��������x*�46*��a�deB�|�����R���%��.,
g��s���c��_3ml��q}�'�3�	/a���Y���%K�72���h�!�t,��]3b��M*�-F�5K�w5���M�gy9���p^��<H2�Q�k������I���
k)�U�d'��
����IY����[t�����	Y2.nt6�����8���e���b~�F^2%�}�������O!<cb���%�n��y�>�\�6B����W��Y70��w�d��%����1�No�"��9m��h��sp����M�Iuv�E\U/o��uUN~�Q6�f=����	��[�'l�q�
�����6���m�e~+��v�q�''t�m%V��HXA��E�u���I��Np��Q��UX���j�s<��4�������l
����:�?�F�Pb��;F�k%OI|�]���U��$Aow��n_���_u����>��2*��^?�����O��T8%�L�����,��oE I&"��*B��wv����'����������C76��w�k
��a=�W8�M����(?co4����.�K��1�tj[���V]��	+	BS�/�/��m�����y���n�?�������?��8y�F�����kz�����/��}���H���!��S�cG���~'�9!e"UK����nEI^���V�G��W����p��#��
~L��x�?������z��J�Ox�um���8s�KI���6~���>>�sy�e[!��^f�i��,�'���[���2�r:�U�.7�b���J��8��}$a7��Dl�]Q��=���K�O�����e'�	�$v�J��U��Nq�/��������s��y���.C��%��E��������%Q8���_�"�N��� ���,������]�LCO =��u^�Q�C��[Q�~�_`���N�U������������,�P�}�8�=2k::�'�T����
��oA�����[|���)�1�g>�i�0����|*B�B�(��g��:��B����d�������-�A��'F	q$�8c�c���X�7���{znQD����C���]��!��]�Kn��J��NO�irf|�z�}
��f�l��q�'���i�������_s���Z�b�O~Rj>�����J;����t����e���.v_�^�E��8���o����<�;r�)���P���N��o,3'<���D�)o������|��U3��Q{(��G����q�5�*��Lh�!R��e�����E�������B v��v�`Y�������q6Fn6T�*2�=/(�.���iU�b=h�}[�0���,L5��k8��bp���g���E�Ru�����^����p�].P�����F�2EB���������x�/������'���4�*��(o�d�V�8uk������9������6���L%BV�m���K%���>G��e3yR}H�F�����gt�&Q������4�f�`
�����Q�y�Q+ �F�"��6��NE��=]V*�3:5����D4���6��P�J��/+=&'=���b-���}8��zX�$�D�*��[�g)@TG]<t�z��K\�/o/I	%�9P������#e�A��������vw���5����n�G��|�v�TMoT�-���f'��|��o����|=|��M%�{a�-�{�D����5�<�V��yK�i7U>Z8k���b�
�a\��0���x�w��1f���%�{������	�����x��6�D�����,��zG�4�����Y�D��KU�w��oFDH�D&�by���*����'"22�1����h��^�F#=�
��ZY�U�P����g�'��9TW�J; 6��q�&��>�|g�{��&�6X4��@��+�TT�zi���6�[������u��7�A>��f���?��8��d3�M���02K������:(��Yq�*N�={��k�I�6M���0f�=K�\;'�j�|!V������������+�H�5�~$�W[�R^����w�M���?���(�_.�A��$K|p~08���x
���������R��}�k����F��v��4���)-�2�v"R����3QKmR[DA���P�Nd��HU��9��"	t~�@���&���.*���zr;i�� ����v���^����l���V�o�' �]o���E�dn�Dr���i�����e����\������w����W� �V`���>mn�"�Z���q(��nxI���b���,�g*��#/���E�'��m����)�Z�CAr��������r����T�8 ��1]5�dE������2�I=]��j�w�Z
����&��Q�t2
���7����u]hv������@X����c���.����LT���4�G\���c����� |>�[�������67���M
�e6�����W/����^��A�4�Mj�����6ZK[9�"yzt���R�q�@����nQ��
�t�4��U^�zca��b�����'�%�����]���(z�����^iTk��~��w���U�i"���	�s�
R�<��b4w!�EE�����F�ph��3�fI`>��|��j�FX�tw<����NS��t���%;_�az���4����4P��z���a�����Vm�pY_�kwY.�<��5Ui�t���������3%xY'�7�(��`�T�#����3�����S]$vq�c���
���&���t�%���K�pq�Cl��nW�7��jR���6N��� �5��F���4hb���j��B���Vv� ���T��=���H��Ey���lPq	��4�Y\�5��/e��v�D{�*m{p��&T��gGi�W����0�|��z�G�h-�	o{�qr����)�3IBhL����4ow�kp,����V�^�t��:�;�o�	�h�!�2I�2I����tFqR�fX���H�
�-9|N��V2���Sb��{�V4T�H�
��Vp]QR��!��y`�yu�3i�*i��}F����b�*z��[��d���n���C+}�)M���^���US9�.��N#��p�l����%�����$s�4N�wt���NV_�S�P`�<�C�Y��T^}�f�V�uv�����f^����R�R���&k�����������c�r �k ������
�v
�����hN-M=�N�%��������P�����|;�_�������X����(kM ��K����~x�v�cA��n0���8�y�x��N$Z��o��Y��<�~�wY�7���)�w�au��-2X����v���{�!����c����v ��d1k�����@�D]�za��0�%��������3!��=$����,�7D���5�k=�__zyC�(J�!Y�}�K1��5�)�Vz��eNq��a&��w���x\��h�e�a�>d1�0����Nw���KJ���a����p8����Qn�P�����`\�#�
Y�if-J���^�OM�����tp��0�,^�y�h�!(���'e�Cr*��i���{�G����1fy�4c�������/A���{�@5��|�����+j����&��>
�O��Lp����0����0kE�~%�&�i�3!g2ffRa�fF��e&,�����$��R	�u����������4��2����������|���z?0��Y��	'*=��!�F���MZ�H��a��3����w'4���05��M��$�R�Yt%L����:K����J��e��Y�zP�=}{y�G��	�*4����P���0=�vzY��o�������L�Vk���bI��SW��}�<[�{��-8�d�j���$���m��:��b7����]f!�D�N�����Y������:���n.�n��F�	�o�7��v���0c���wP��4:��vB+�m����������g���1���
[}�;{d��Y_}��������^(���_������hgv����)S�E���FZ�d���2�nLe���1��B���U3��u�������zq:n���f2U)4oz�6�)K�bs-]}���1@4�6Z������jG����{H;���I�Z���E=�3���jo���e:�+����`[�+��]~>
�>oq@�������R��.�A����r������iG���qiw��}?Y3�w�J?���`����57��f��<)H6����<���sm��x\a�w�-H��������l�I��i��2����&�4��l� ��A����g��0�t�-&��I�9��t���N��.�=��B��f�!8"]�	M�K�QZ���y;8��E�u�:X^h�a����l��;�����
FL�������2F�����OE`�gjMSb��J4At8b���nG�[i�^��M,:�d#Z�|�?�F�������x�	8��6[�
YSu�hW�m
GF���%�Wc\�� ��pxU`DMm=�������������(P��v�X8Eu�<��j���qi�Q�]���Q�zK�(��}�1F��?���������4��g�o�L��J��	&m���?���u��	�a%�-A���������eL.��"(������5�~�5H�/y����kC�vE���>E�}�Y����M9^������xm
��k���M3h�h�x�Y��`���/K�,(�M�����$�"��V%��m���Y�\Zhm
�R��Ic����Gw���6��4"BW�r���
N1A�c!����&�����PVm`ex�1��T?�04���M0��� ��wr<"�L�r,=�3,�.��f"��H��2@��MBd���;{�3�#����h'�Q���n��nF ����\����9J�d9u�,P�U�g�`Lh��^J��	G�rMO%Z��^(�I��{�y�x�Dk����Rwn����p��)lU���S��i�3��[S
61�����tV���N����$��� 6����������������~�V'gSPK
�t|os�Jty
�W�Q��
�d���K �{�tYL}o�e'�Y�v�>�wq��Q����8���[[��l=.�_�mY�z���r��w��*�){m��A������pCA&]^��W	�I7q���H�����\���NA�u�m=�����	��P�k����������f<�?��u���F��=���oAy�\���)��1P�h_�!(��X�+�s!��v\�n������|0����o��%m���B
����;�����l������u"
er���?��H�gS"���sqrg��EI��trg������\��L9I�����3\�����v��iz��|���]�3?)Q�� �8���4f�ua���h�
n=�O�)���)�|@3�;��rV��]���iO���r���c>��$C+�$C)��Ol�B3,�1>�[��:���!�ek� �{;�Va�>���!�X!����j��oE#}T�u��@1�p��nBr����@sh�2#�-S�
]8F�#Ri����f�%���/�T:q���@��L�4���S��3������	TFg������T�3*����F�>0�s!��NN������4��0�N���c���w
��h���7��;i��~�3����4SC�in������������V����bnT){�)-{�=����O�&~[�H�1�e��m��-o���(7����6��_V�d]��
�-GoOb.��u���<�����.�0��bSWn:^vq>�)4u=���������B�����
�����:�S����H�t�3�q����B����?`]\�4�x�I����8F���7>�M|�B_Wg"�����k�9��z�:���{/��Dih���6��v���1k�s��1-���9
jJC��\�t�����,&pI����b{�Q�d
lR�!9�t�d�`�
��=�n�*TA�U�4]I��I_^�!���vTT��G"�SjDK���.B_D��N����-]���v�i�s<<C���A��V��mu�`@ik�g�}?�s �ck��O��p��������	7N����v7�v�)d�����Q�	r4Y���K�aZ��
������n�>�.�a�}��h�W?��e�{���J����b��rg4���[���)�.]����)��#�*-b��#��B�����PO�i����:���4��	����B����x�����K��o�m�bh��=5Ro�JO�'�@s'��)w�N_^���U����5{2����FD���c��n��T��,7�1��6��w�,�t���3�������;�f�x�pf�����#�p�kfW\�>����3��u���H5]��9�W9�D��R�������[��l�x���>��/�v�������<�����m��wW�Mz����w�^�x3�H�-����A`c���!������z�".�h7�E�`w��q*x,{a)oR����>��`Y�obf���)6�Ij�w!�����?i�\��W�A�i�Y�����9��
�����&���33onn�W[?�3�@B5zu�Y��R{���eBe9�����\�8/���R<�1��T�{��y�_�%=����/0��S1�B\�������Qn������bQ���;@8����o��O����g1i�+`��A��?o����@������*�y%&m�#������h�"��*���N]��/�mq��7,��k�+�&��fP����u�A��������)$�ef��/��Y��������)C_��VH��`J uj2vM��:��+�f����Li����!SB�*�2��j.�����
@Q�v�K��\f�5y�W������^�2���4B-�7fJk'�g�U6740��U�t6��C����D�6W4986���1O�pv�g����S�z{��heeD�?:�6������0��g-�
quRFjvpt��Q�� ��%����`4[���.���	i]��	�������mh�/������4���.6�e������9A�f,iX��7:<o"�m)]�s@����L9XF�����]G�BTh'��n/�j����,	�����Evc�UZE>��Thm�?�ig�Z�?+�75(gNa!�F�y�i���h��j��VF�����Z�i�t`]��\9zQ�e�C�������`�M������|�;kZ�i���������/�!�[��Pm��+��������B��������E0W��n2
t�q�/C�������l�&������T=�C��Cw]�-s�-��##�����DBMI�&"��t ����l*���LB�O��f"��t ��|�l^!�l���t�l!��pLJ?3�-E(��awj��w�d����x~u%�%|RO/L4(���k{�I���V�P�Rk�O��6	�����y�e��m4f�T���$E�����$s�b�c�P`%L3���0rB�9��=�\�T�o������S�k���O��+�
=@���>��#�p&�P��v�.�By��+J��/��B-�V��Oo��uB������(��d�T��iN�G���@�N��l��n����m����RZL��Hw�o�����}�Js�Y�G���|�$�N�Me��
�����������l��W@�[�f~]�M�Z�CC[T��e3\����6�5-+�h;Y������Am&ka��e������\iwhpv�d[����{��{�v�LP.�aQ������|�z�����R?��&�5������H���3��5�m�
>{�
2<�Y,l�����\����b�����j����`/�|�R�x�.�����fFws�f������J�4?��&��	��7����x��/����F���k%Gv�>��vm��(b�/�o���t��4+�zq�I+���!�M���qg������b�������!�+���FD�E��v�1��=����V2����,�H���^y{j�b>�t��A�"�������.�;
�
i���@�j��3L�l���n@��b�� zb 9��sL!��
H�)�
�����|Ju��}�g�!�z�B/��p�#a5?$
^��]��v�Zb?�0����O7Ip�S6�D����fb=j�+HN�	"q������=��?U8@-�!?xgDZ�ks����'xm�DA�'��>�,w���C������)�A���b���*�	�	��.x��>�)�$s}�zbVBV��t
I�31,������v$���O�LE}r����K#���e����0X��8C�Y��F�����+o|o��e2��*M�.��L��:>�
���1�
���^�bzl��=�gK����P;����(���)����������>�S��m���
��4��T�v�Q��H>���l���7T�v�R�A����~�

#�e���Rix �PL�m�|V���"�3�L(�k�������@��o��;&��d�p"�64�Px�����K���������u���'�.����N
�f���G~����jiM:�r%�:a���T��CBg:����1E���������;\����t�����O/��4���V�W��a���@v3�idY>��������)�u�+y�1X��],�w�8LgTq��/6qv�@���!�-����W����?,��E��T$6�b
�����CV����Y�E)D�5��`�s
���UTc@��������� ����B��b��������&�S��c2�t����j�
��Il��+�(s�q/�Q�-�$�����<���mxB�.���ZKCw�{g�����x�0:H_V
y��
���f���!P���$����I�=�[�]Z�F�@d�`�����8��F�?��v0K��������p:t�+�����Y�j{�@�4���Y1�7���4�|������gg5�0LP��.���jsL����8�v:�8R�U\��-�yKf�jev����L+��uAg2�wT� ��]`��$4���D���;�P�1;#����Y���(�x�vV���o���JC=)_V(�NmX��e�p���2���:{ey� �:$T*�li��bK��Nw�+�e���3�P���z��6�GU4Ry�������`��:i��]��!�'�o���Z: 7�8+��kw���>��6�%�������;e+}���D��M�vf.�D����u3�f`���@s��s�.�,j�v��v�����I/>��<���8��{+�Re����3J��R?]���*�yM4��� �����v�.,K���tz���������9�����v+��F�8�-1=�xpFL��VT�UaCL��"%&�>F�SY����
�:���fg-6f�+j��W�]�P��.=������^c���C:	k�mZ��[QUZ�J��qh{>������r��Q_�RpM�f@g�m����S��z���\C��W�SA���H����2�x�'���D��:�{k�7^��m\���Ul�&%��80�D���{�\��1�)S�1y�� �hj�z��9������^D�F���qw�|2����B��P���|R|�����	u���H-�E�fK�����
:��O�����6}u�9��\+��������2��mJ�,�����,w2o���>����������J�s�x����M"NqB">�1������7�+8�
�a
It��������C��p�*���W�O��B�)��O
���<I�0�lD���&�_�>��Mo�w�ZA�S6��v��34���L��,R���X��|��p���V!�`�����>[{��{Y��|3��J&\8K�G~W��$]G�5��d|]u	U�'3��J��F��i
v��3hM%��8��yw���4��!6�����t������T��YG��3QhM��V<]��������$$�n�DD���Y��

e4��R �j}�R�������Ta�q�8�n�>�<?�F
��1�y�o�������z��lfz�����Z�����y���|�����Q�.��J���@C�t-�y.u�E���	�R>qC��'K�G�bN��qN%�����������I���?�G�/?����?���i�j�A�����1��`����0�]a���%�E�}�f��0
#S0��b@�L�dI��8G���L�44�L��g�aF'F��L��F�a�!F��bi��C�a�)F���������'
�t��<$�!x7^zc���Zi������8a�������<�>-K�
�/����^�Q�{9��w�.��,�i��)����"6dJ��N�����Qkx��l���e��0<+���p�����
wH8�]�O�A��X�Y����K������0Ms��V��/[�LE~�|����3�d���Cbr��x�]ds�a������L^f��j�h9ji���:-a-�2�i���6�K�j#�P2��\�q�q���������J�i���:$��������vH����X�����������2�y�����a���7�X��o}H��^#/�3���Z�����*��R�����G�zVP&�I]��u���Cl��ra���)�4)����ic�U�?���FX
8$~������/�S;�8^E[f]�d��Z�����0��?]�Y>� 
hX.?U��A=������������t(�J#�������)�-�c�Kp��40*/i9�P��x��^0  ��h�0�M�{}b��"�h�'�	Bqi��5�Qf���� �����ZG�e�I���]	fw;<�A��{�9�D��Up���4�I���%����&
��*���G��~c0o�]^K�k��Gw{i�S�`��Acz��$s
�1�d���3b�N��"&VR�\�)8���������4��C]�x�i��Mp�HfiGn�4Xc�����/_+w�����4��: ��,��J�9<�����\�|����'���f��#�p=��,��S<�T0�:�A��(���}r�T�.xhx[�
l<�?4�;���fP�PG ��a�N��Va������t"���
#t"���J'B
O�0B�"G�'z�3+������jxj����:��p ��<��B[�&Pq"���K������������v��aY0{gT�����N���t��'��f���6hM��{�lh����3�lh��&����v��<k���4�LFs�d�K�i7��Ok��lZ�L�` K�������T�1��n��zA���������b���a��^
7;����t�_{�0[��	�2�����

�4���UT����)��L������'3����-������E9k���O���Q�������Q�������c�f��,�tg���B��	gh�,z
[,F�U^,���j�#����l�Q�%l���V2��	��IT2��4gG���f����	�DZ�n�#�ZC�Q����T�����]7�#Dc���c[k�%l�[4�{h
^^����2=��sm��E��S7��|f$��~�fO�%�{��r Q�*[ig+k��p�$�p-8���M|�e~�v�8X� ����x�f��jk�������@�J��s	{��(3�2gR4#6���Z����r�����j�L���c*�1����eAx2�oVq���g18(l�Pz��� No�]O�|f>
�&M@��n���mn�V�����g�L8���1sc���f�`-�@OV����)����`ma��C�d(��������`%������B�;y�u0�d��@���0��'B��i���z�����8��
ZC�GC%h�4�Rq\I�f�P���Th�H[���0]26�T�e�j����}��������aNJ�I��`^��n[+'%
��E�Xx�q�R��6�����.l��v�'b�/\�Bz�x���}c�/�	�:���1{ZR�1��.������O�u`4��7dt�\�4����XM���������lL�%����`H.6�N/[�Gl@]5t���9`3���&�3���(#���~�)�J?�wa�AXGy�eA�Qd�PmLNhwP�c�������ip����juXe;��DU������>��4�����u�)TQX��l���ZQ	�����-r��L������T�%���D�c��0"��~zY���)�3�wQ������N�h���I4%|�$�,����]��LZFOX��W�RS�y\9M�����������)�NI�����1�
����1Sz�������������2�U��z���K�����)���Y����h����-SrgUr�`ws6z�1S��a���bEy������m�:�C��Ovf�;��V�\������H4��o��
��[?e�#��;�GTL���-�u$�{R�d��.�3U(ax���ll�!$h��V���G����]�q�@t�0��g�4��Ysa �����]�������B��7���Ymzx1��]�fB`��5-�d�����c��[o�q/����,�����Y��z�C�Y��������:b���j1��
6���Q��*.cHy�C��k�Ro��������Wu@�hI��0((M�;d���ee#��c�U��:��R����E�wqS�� p��`�����:��/z��
k��
U������5�[������fL���N�C��n �6Xc�i�!E`�o��������O�,N�KR��#���	�(�(��������Y7�0-d?�pJZl����[ ���~~\!��w0�{�v:v��n�����)��1XJ�g�{��!��V��X�n.X����q�
��Mo�R��>��h��u{L�P�O�h�Y
��1�3�"T�t����Xw�h����%�:�����c8�0�Zo�N�*���V��.�+�f����?X��mH)DW:N8s?�BT�C���=p���
�K8���!�.�Bl��A��AU�h�GA+���+��
��8�EB��B�:n����#.	��������U0��x���T��N"bA63S��E>9mzp�]��M8)!DK:�����|����|8iz`&��M0)#<��i73m����wON��E'@n��������1�c�IuRI� � �	�!�d�iZ���	����_::	0�N`�*�vx��n�>�Hp����� �}�}�W��EdT��?�$%���d����f���Q�6��@�����P��P�
���Xn�#�D�������m���SI�"��&���!���u� �=�H'd+�;
��/���y����_:��M��Lp{0a~�	�t�# hme���Vy��e�$g�Ea�X�\����S�k��g����K�C)�(5	T�3aF^����6����	�4U����m�Y���Go����mn������Z{�X?���q�^`e��[p\�:��
�4����&�S��=qb{g���+8;�W��j�]��]AD��t8'�t��3`w*�C���p���Z�}q{���t)g��
n��O�99��?�3^*�R�"Y�sA�a�� N��5Z�z�,#�3h�j��0�����s��������^7���
���B��U��s4����sY�y�>[m�h�q��8������`?��!kv`��9c����&NY�!�f�C���$��2��s:����-�|^�&k��	�GqKN�>�>�����2.L�v�
����������;2gh�&����z��v�@{^�l��1O��sS����58p~��jzP�<�
���Gg��8S�[���#n�W"W������W��:
!��^EjFA�T��^��wg�����y�vhd����������������G��g���~T��H��I+��
�g��h0T5�����<O�Cg&�E/���H(l�
��:�6@���Y��fz�_��W$G��g\Ow�,�?��Re*�*)J�8��l���q���8�
*���N�/f��#H~8��
a����#�V�%l��Br
6'L)W��1�Y)O��v	��'�{k�����<�dx��������x/`x��K�;c�f"k��\�=XI{+K!�����@��T(y�H,Hvs�W�������f8����V�ni�l�CPv��X�I-��[��Y���'n0�)0vt�����'��]+k1�)/����Y��X�"����=?;�k �Mu��{"����?���
�VCi����S%���k��6����t>�qr���~�z�g�a
9�%sQ��9�Vqe�>Tac>�1)���&����mj��@n�{!��c�6t.���q��R��`����.��"��_���
�����o2�DSI�/e�����]����?��C���>���X��E�Wz\�#�1%���#+HW��d�c-��E�9�K�C�el2V��n!74�9-?z��y������|Xyi^r?AH�<W:$(���j{E%KL/�\��I�\B��������r$��`���F��LH���D��`�G���Xl �0���M��,�k��������fb��u���.����17���
W\�RI0��]��36��{sK?�1��4:m�O����V�E��
L�������x���"����1;�S�����b�rL�T��'[?���0��v�������l/qo��YAN�����%�++�BD��^y��L,p�����[j�&W�c�2��E1�d�a�x�P�����!���� �-H��#-k�:���1m�r53�����r�D-1��F�)��o�
�n������p�J	�b��U�����O��~`�:����I6Q�����*J\k$6��
?$���D���VUVG��&��$7e��K�T���B��������~}��K���(�\5�'�)�G���@���V�q�K�`?�Y�����R������U�s��.f`�,���h���{O�z(�#q>��-�)tUy������l5���k����u�����>���,Y�����eK��d+��!��7��,��Dp��T�$Jhx��&����T��%��.(�Y�[��sQ6�S"8i��?�lN���d}�m����	e�>1���u������O���:c�Q�@%b���j��9�B��S�q�	�H����!���	Q6pC�q����VO	n$�e
�z�<!F!�g/9J^�Kp��<��2i2����O���.m�z�<�HkT<�<����K�;����x)N��<un������$���l��!��nu<�o��j?]�����je���v����1"s����p�N3D�N���:N�����������������WA�8�&C���������1�7)����;@����(���~m�;%���%4���NxDHh��������G3�E��F7�D��1�	��������n���~1�q�'���������x��7�5t8������CA�����q	L"����	\�	�@��65W��4���~-�)|��Q�����w���T���2��h��S7�>����������D��g_���lE���(-:�r��� K-8�r
�T	�n�[R��������!����
|E�!m�������S?M����������/�6����}������C�� "�!�|�CHx2����� 1�Fo��2
��i�qL�e�r��^��?��8���iF�����Aj�GtV��
����V���n�,b��O��zv�)�V�<6�\���S4���
R�5Em~�4?���{����������������~+S���L����r�	���Uc�*8b����5I��&B����b�0�Q2���z�C������iz0#o��yA���H�Rz�7���
c��)f�PS����&=xaf40g�6�
���%��U���SL��jz�������e�]'������/>�������X������h�,*��X�B�O	����2�����q��Quzf�|��k�B:~/�S-=�^u�7�>5_�'����9���� ��1������0���������7�F������1P���P`����+oR������|�3����B��Tm��Y�q���
��������3UM}6������k�N�pC��\H�`B���+ao(/Dx#����V�g�q����/D��	2�x_�!Y L�i��G�Q(�d��6U "�mX��i_��}����9H�N��*�f��(����3/��$q�L��0���N��?��P{���������&���o<w�1���U���G���WQ<��W�{1���Z�����`��B����B�a���J		���t������O��K�1oR���$E��@����P���VA'�lN����t�c��0�|��������*^kKG��
7��!���:��oV��5�0#&
�Oc��q�]���%J�_����]����S������uJ�����P����U5�5e���{(��R��YU{��>���V~�Ei|���h�m>�2��"�	�������'��� 9�����/*�`���xX��e,e���zZ�?��;�Q���0�E{f21���K���y��Vi��<�pB�
�;,]Z,q�:,�?�����!^�~��l�-n�n����R��v277���2�f
��L�{<�=Y���j}���#~���%"C��}&=�����v�DL5+�iln��������j��|��3>F�����Y���r�/'��v+e����X��`d	J�
k���S�f���
��l���S9��M�waO��7��:V^�M<J����H!�T��������5mM���}R�
8���U�{��3m�g��
��+�XI���t�s/H����
�!*,V���_����;����A�U`&:413=����g�k��|�����o��^P���)TC�S
�2�Sf���lU�����������;�E��AG%����������8@|��~��e}c}�����Hz���C����vF�v�>.�m���+	���2���+��������!�&���opjy��#���������\IvG������|y��o����im����g7O��kW7�Z��8�Z�gO������3�\4�������K������ou������ha}?����VEV�y����/.�o.,��R�?W6��$���y��v����:���V�+�k�1�Zx���i�F�_}�-��������:����1���m��MR@�W���\�������"���PQ�/��Y�S�����qS}�/��^������������Oi/����v���fz�M���LKO�W������m������jS����)+�k���O�6�5k��lT��x�U���9o��N1����oEq��t����>>Z�`w�A�����]���?�����G3&V�po�k�����q���i}_���Y9�)����_%�n�E���E���b�q
���b������(���u�c��A	i����2�O�Kt�<$���D>�	rsr��8m_���'���-�f��"���Z�����O'~���3mb�9V�	�OW�I���S&�����z���|��L[\������c~]�R��WN��;]����illM������h:���[L�����f��s���;mAe5�Xi��FY-����ac?'J��`�`�����Fy�:�����a���;`�6PN-�v�����SF��fG����|�r�������?���������^�z���~��M�����}o�X/]�������b�k���%-./�N���l�gy��:W[�����������,��bj�g����j��K6X�������!����B�����C���e
�V�+�=�l���r���Zs���VM��,h�����vSi.������������h2���Q`����S��	3�*�K����j �u�J���'��������S�����7�����2���g�'_P��d�a�W�G�*������7	~!���\�f4(���wp�?�������O@O����L]���o��I��������V�����d}�O��x�>�%�-��MD�!���3r���:TTK��}����z������>H�`s����r�
f�����|�uO��
�9mu��f�P����������*����mmo������'����W��
/�M_x��tf��3�osr&(�����O��)h�b3�gc-m�����TJ�I��oJ��$���|���\2�\j)��xP�W�a�m������r1����n�f��{��\^��.���U��va��(D��%������_�����/>�{���
�d�e^�~�����"�A����&���W��o��g���������}�kNw>� �������	�~�xmOO;0+�i��E�]���n�kf�m��|=o�|I�^���,rQ�7�D+R~%��^���f���|�M�����]N��;�5�uC(��1���q�z5[u��&�
$��\�=S�Sp��d�B����z���~"w�b/I����K�&�M�<-��2
�L�_V���s�����B����l=������o�����Z@���w��T0?���O����bv��g��-�����pG��k�f~�v�Yj����6��'��;���?Gq���E��&�k%�='Wb��/�������|6mNGx����V`�V`�V`�V`�V`�V`�V���h�����n�j�b�[���h�V�N��TU�e@���;�AzL�pBE�@2s'�7_]]OfS6��$�%mC/f<x�z�
��ac:������>\�������F��X�S������z�4N�k�G����MOx�s�$%�)��������1��0��;_)��������'�������4��{�������?^��WW�kg�{�S��5mv�(hl)�����_�����pO�
�g�Z�Wr{A[����v����%C����w4�*s��@l�/��wn3A[��M�p�?�a�?�NO9>��1T_�eu��x�t�{�����F�#��-��,�
�v3�'�79������f�Em&D(jlD�����_�a�]��Ts�VI�����]e�7t~��R�u����$5Yk2o: [�Hw��D�l}��/"��#5�Q��Kr�sN�$#��T�N^��%�3�7o@Il1~�?*�#'���@HP��Aj�����19�yC��T�Q�X��
��M��0����id����/~x���������v���������ZO����Z���N[n*c�!Eu~������|:�L��Be4��(�%�$3��j������X�K��fE��n��kN�E:Ci���S���8dN���������1������bf
�?�yD�=d��	5�{i�2����T�4����)���{����/���L&��
���������e���?\m�@@���.��R��a��'�zX<wa[�����(O'���SPF(N����	~'��R�1/���u��Y�K
�����^4����������=����RZ������p5g&��9��|�J��q� ���)8$Dd[X �o�
�T�ug���K8�rI{,H��Fy9.\?�x�U�����g��+�.V���\xD�$<�5�p�����z/e�`�����&$����=��B�d���-����<����
JO��mH�&���7b���f�%H{l��$ep!�nZ�4s�K9\�98p��.�����o�}\�{���w�������Y��������x� ��yk��0�n�!/��OF������_����u�
�6u�@��&��Zv���994G��B�tY�7�1�8��%|Y�I�i+@:�-����g"P�����
�Kr����N+�����c������+3�k �����b�uz��O�"��D<�[��y��Nr��/fV�0����B�''�<�bv@'h��I��t�.,^sD� ���?����0!��o���u��{�����o�#>g��7e� ��b�� �cJ8���a��FH��3�m�<jF�{G1�kC��?}�B�*P���wT�Z�w�����0�_���!1��'� O�����.���$��
<��S8?0���$�fM��F���!���e]VAgjj�`0��EAD���}�����x���
�q|����[wJ�I�����#xw�]/�	x���O���n��s���l8�M/iFA1m�qFV��|�!�h��s�R����
�1>�����v��
��r4,>�=o�����X���C�;.B�E���13���~"�h�P�������'b����~O���4
v+A3<X:�iN����W��o���_��q���	�D�/��.>��eF�o��%�mg2G����'�x$X����^�N��4N�F/���~;��G s�Y	��+�����%�n���Ga�����lz�\�\K��ne�u���UP��@6> ���a�^t�����7xo��H�����}�K����@-��Ah���ce��^��\�1���`�����
�����-���.�@����}�����
pI� O�
�C�Z�t&j����EQ��W��X���+VXQT��3�_�aT���j�k
$�c)����� ���X�LE���������t0�
W�����.lFpS�%y��%���%�K�oz��Bq
�&��;Yg����M��uf|����Wo���@��/����E8eo��l9G�J�)��8_*����|9w���x���w/�|����W/> [x[r�l��M+,����x�����l���=c��z'cOY=���M����7�wk��~���l���,:P�|��w=����	���:�����?<{�N����������S��l�Z�~W_���$������_����_�i_V�A��/����������~��~��O��������a�:4���<��������9�@���|"5��K�;?����n�U�WO�F�����
T5�3��d�.L�]�E
p�n�V�(��h����i`x���+`��=:dN
��/^�*�"�����F1����Xc{��Qx�e$:x��j7$����]]]�e����r`R�k�������Ets���m���v���o��
#6�"��k��u6:�	kb%p������O9DW������.�������X��^x��^x����~ �q��|��//���
�f���Q�v"7/3giQb��~c����4X�v�Wo�V���dh0�J�B�b��.v�i������7'�O	M�����69�����:F��=�Xv�]�K�ioLa�o������_��S�<��s!(�K�����������X�X��������kF��|$ ��82�q��CO{_���}S��h7=�z�#�7=�Y~\�qx���f��K
�!}�<������X�d�|]a�������4��#��F���,��d�$��kCa�������,�T��
 ��;�2��X�e�y��Z��t@����o�e����`Z����L[$��(��z��	W��������	�EX����t�j>��$�1�A\��(��O5���8���-D������
���������KO�_7�q���&���L6���y�T~�'�D�'��7P�y�Q�����%�68�5������_sU��C�������6#s�6K^����#���;Xm'Y@PK�����QH�@"���2���������v��n�6��d�}�#K�x���t�0�(�r�>�}��rb�@Wo�m��6�in�!���
�$,�3��?�0�?����#��g�-x-O�]�}����a'0I��*+[_��J�y���Wx*���?>�s)~mIqo����S����~Y7q����,��E�k6�9��L�v6�~[�J����6�&������r�,��9N>Y2���db}��d��H��|R����>��)�|>-J���wQQ����������'bO^bO^6�����%���N�4h�Gz�I�d[���|&Rj���������Z�h8q�Am�������(7A;��G�]��m����Fm�8��������d��e�"�Ht�>�&+���Otx�>
�'��Hp���G*5��q�XJ/��x�R������������^�����Z��J�3_gW"Fh�����U����$�F�;=byH���G�#�H�����w�O��<!g�@W�ZO�����{���7�|,+u25r4��z�6������S�� �
�`���g\C�RK>�Foc�l��������:�����K�>�q����A�E��O*�NS�7��;����!�v���;@w�}����$Z�)�,t�<�f;4j���y��L��!�%�|�9�S������?�,���<~�c���K�1���m� ��Uz��ac������bz��3�$�l�4�#�IZa�V�y?{����?�Y�+��D��?����(���{B�
_�m�76�bXh)^�T����e���Q_c���
�G�v,�������["��_gF���N��S�8��wt���>�������W\m��>����������E<�x(�N������Aux��@���Z�^����z��-�_w��.S����wE�
���3 �S�&g�y�r�	0�#2�?�MV;^���(��K)�����8��g�EV)�hj��J$;����)�9�	�
`�y�O=v��~�8���(U q��XE ;����b�+�|����<�.?��M�B�q������v����[�j��N����&<�y�C^���z���s�>����c�I�7�8U9�������~x��T�m\�Z���
o�i�����$}V�@.wFgc�\I:��\#�D����������������+�}�t1�����5m�E�o�����AvCO�����}�_��������*������N������3�|�6��[���P��v�Ct�>!��S��E7Q����t��X��Y�?NqO���f
����J���]m:jp����������z�u\��1�I���m�i�H+���B�'G3n��_.��+uO���y���	L�]���u�~�J���LY)�J��p3�����e:@����t7���Uv:��@�������3
�=��N_�o�$��%{(����d��!N������O
g:���+���X�[�� �b��������3���'$��$���+����������=�3�����S���Gs	"N~�9t�h���`�.J�/�}h{�<-J���������bX�.\���b6��r�@&��|��`:3�W<)��� 8R����G2:����3�@��:����W���tr6�E�����4n�����u���)@����k?�@]YlQ��C�d��k^�������U6^s"
��j��<�2���	�2�%�^�X�JmW�D������+�����Q���������q�'�nx�.�Kc:��������x��p���o�P�a�� ��9nx2�����������8�'%B����\��J��<'|{���I@�30�Y�Uu/��eJ<�8`���E���;>����0��Uu��_?��!�*|������0��.F;�A��#�� Ff��B����;'�%G���&:Vg�� t����c���Ao��{��_n*t�%����H��p\�D(��j�9�[|1��uu�����g�s�U�o���g����o>���h���"�Q�Q/I�tB����D�����z�h>����f������G8���oq�W����J��Z�G�G"�4��D/�x���c�UM/�x}J����K������t��q
����S�?B�[/��8��g)����1aH�H;����TP��*L#UR{��R������\Xu�W�����G���<�<����.N�]������o��b�mm��������	�s�K��F`�>�PIlF[�)]P���Ki6q�
�2��a��gZ�HkA�!�\����Lc�g��lH%��B��2������3I;CL��;��Ok�>|�(�Y���K5�S}�B���'����yy9>�����{x�X�L�������e,�O��]>����u��nN��������i-~(���i����g��G
����bJv�3(>���2�����Z����9�/r>����jD��s���7�H
�"F��W���U�=;g8h)�������F����FK�LV�:�u�]���$�AJ2�G%y���e�h�����Y���k�����u,"���c�b<��y��u�]��_�	������+_|t�
4�<��NU�s�����D��u"��������dY���)*_�_P�����W=������E���H'�!����`�y}t�Sz*z��&0��j�H�����O����p��'����A{8�����A��F*���go^�"'`R`��3Yj����|��7�������3,��m�T�OzI����u
����	���=`j�
�=S<��B+����9SCl��QC;�K\������F��B*"����B�5�k?�;c$��lP�6T_euMS�;=Z:� ��DN���s�X��G����V�i�`��MF>f;?��q_��UdS'����=\~�����W�^[��)%���^�*�u����e���7�&�r�����)1`[�
����&��(Yk����O����1���KvG��wE�0�$?	���x�[�V����_1
�����Kh���������KZ����{��0�����5���4���,H���gA�zTP&{Od��X2�@�*D���@\��|�<!\�xP���e����.c&�-��o��0K|/��������K�5#��?y�z�������=�|����q���h'�X=��g)eT��_�mD"��z�2��K��7�h9H��kY
�#�}��1�,� �����������<��d�=Xm/�����6�CI�CDR0�(C4�����ms�
%�����4'R����L����3��p�V�<������b1���1���:;W�o�����E�dF��^�/L�vl��G1/��%���r0�}��8�8��w�g�[6����T��_�����?���
S��|�ZA���!�P���s���������?>{�b��go�]�b!��w l��W�N���jq!/��J�r�U����W��`�G���c=?�JT�O=9�����1?)�h��w�6��
i[o^����S[����^P~6 NJ�<l"X���It^�S]|�O��^����| r�x����f�s6��<~�#�4�������g#s"����=�����&��O~�d��c�������Jd?j��D����/~Z=�A�$K��|q��PG�t0�?~��"F�b0�I���]������Jp�JXMgd}a����&��<��M�����mp}m]^�`�4M6O�h��S�N��a�b��d���M_�Xk�r_�a�����y����b1��=`>�|qyy����~��v���u�-�o������j��X����/>�������������Ch��$8���c����Md���b�Bp�M��Xa^;���v���$�_�z�5�3��0n�W_|��?�?>'��{ko������$;�eM�����BcW9�����T�,� ��ZK��z,o�\^]m6��������
�^�@!��hn}�?�G�\#�X��q�����#���/O h��M��o��?b]'�8A
�{`�� b���P���M�?0!%$��d�s�x�b\�������yJ��@
-CuP*���$R�z�����/V�>���	��!�r�=|�#�x�*=nnV�mW�!�,����xA�����r�z��y�����3q=�L��`U�K��J�H��z9�b_��5��\�"V�O��?��=�n�5��oW��!<����7����/�������wz��?���ZmV��&�?����^�.������������_�S���@������wI���To�)
���������9!_?g_�~�����n�����	T��y���������O�����Sl�[�1�+�������.�'.?;2e�U�w���q�1�~���������>�d�������?U����,�y���@adK�r"19i�`���~#��_�y
R)�����:C�e"O��K��$Ik��� ����15����z{�#���/�;����/������/��o����o����o��W����p�
v4-0009-Replace-oids-with-human-readable-names.patch.tar.gzapplication/x-gzip; name=v4-0009-Replace-oids-with-human-readable-names.patch.tar.gzDownload
���;Z��m�#��&���Wp�v��Tf����zjf�7����$�;���6&�E�I������>���72�;�x��k�*������p8>����r}�����������r����t���is�?�����P�7O������~�/����U�h&e��?��|�I�,�,MV���_�X�i��e��%r����l�mQ�|�t��g�~����������������zUmV���.-��r�Ti�[�E�Z>l�U���Y����q���y��BZ����"m�������o�h�����������c��������n{z���o7M����>��-�|��z��u����.�_/����z���/������?��O������b�~�����t�i����E�����.z-}���6�����o/��q�|��M�9���g�����hN�����b�������n>�v�����>o���r����q��?������[4_��Np+����,N;�K=��������P��,������x-N�������7��y�~�^v���l���<����e\t����KR-���������|����bQ��b�#�O��K#-:����z�6���'���j���y}h����E���0Tdl����-�l�cj��X���"�w��G��7���
��/������V��O���E���Vy.������o��j|������Wo���?.����b��$��om�v��zX�{����4�-����y�Vf�7m�0�>|X��w�2m�������]<4��nk���������{��?n^��s�W�7��O����7�/~����/��;��4i?�_����/���X���S�{��~��� S�H���T�<d.3f!c.U��f/���h'�N���	�w�v��u��jb��C�I���7�	%a��'i��3Jj���������r��B��s��f�����g��9�����\Ng;�Q�.� �r��V�:}n��yH�)�
�>!����Q�>!��q>m���J���'�V��~I)I���=h@�����vZ�-(�=9�Me��UH=�(�
=?!����Q=?!��q>�����g�_[i=	��,���[�
��V3
���G�-F�<��D�!�=.�����!�=.���5|��>���E%%g�E�����>G����v����A0�{��PG�����3P������N������No?��u�����{���=��"������]{g�D:���\���$Y�L�em�;�y����{4B��G���{4B���:�����t�<�Rz
3�1��(�L��2!f.cZ�
��1���/�E���'������j��������j����F�J���JJ��IU:�&��oA�M	��'��

�J+��x���^��o_�Di>��G#$z~4>��G#$z��o_���D-%�����;��x9�Qm�	�{�U<
S�� ���:X����U��h>��G#$:}4>��G#$:�fo��9�wc�����ZP����+JkVKD5�1%�X%��;f&��������r�\f!cr�qF�M���	}�@t������<�����;���x`g�F:��G��
���RR�RP�����\��0TR��Z�;1TvV�;13��b&h@9���J��J���q��]�UF����n�v�hD��x���s�m}ol<^'s&������M�M,Ly<�Mc'S�s��������4�`a��q�Y[��(����d�o��zx���{��(2~�F1���5J����Q�3`�B0/�M���_�3��T�r)���nx�1�<T���C�y���1�%�Pe�c�����^R��&��`��q�L������O�]X�������X����
3+�8�
������H|����zC ����@�c"�M�$���l�����ra������Ug#"�jl�Ux��:%N(%����U��{p<T�0ol�Pe���3$��?���dkP�� �6TA�V�������m��������m����eC�Vc�4Pb>[�����h!��]@,����<X�?`����d�cTA�_��FD������:�Vc#����Od�3O�u�D�N�Qg��7x���`�3<H��PD�U0X-��'�l�Urz�d�?����������d���e�=.��q�@���	���l�F/}$�Y���+�����;��U���{�iv�����*��������\�7�wO&�����o��x*iI�v\6�������
�m=�mPi��������m�;��M7�m��'S����D$����T&���
���&����?~��
�o�����vdJ�AT6v�L�=���dB�~x�rq�Y�B���>U_����M�>f���\�7���g�K����-.'�h��D2<�hn���?|7����-4s�c0-4s�a������`6�tX�K�x�d]��Af
0M6���L�W���m��0��a����7

�=�e�H�����_��Z3*v >%4����v|���7�f�M��T��+���5|@��0$�����>
.h&���)TN�a��pA�l����3�'���D3= l������������J�����B�Jl�[��MS
����>f������J3�0����y�!��3��|\0�0,U�q�<�����(���{:�����}{���SlBhI�3�������P�	����E�{i6O�\�Mr�9� ��)�u7
2np
�!6np����[\�d��N7�,���p��Q�6b&n�Z�D�����1��f���'��WCbZQ`�CbZ�d�Cb���q�!1�b�q�!amJZ�V���4?E�l�^oN��kMJ|z�Y���5-=1]a�'���qO��6n
pm�:���Xnpm�4np9���^�C�G��f�dB=���P�p�F!���Q
��7�:�F�N"�	�:I�a9��p�'c8�������x2�Q'\��`7��K�X2)����LM����i�OM�����[Y�M�������a������L��{��ps�k�f��-.2�0L��E�@�����paf*����� Wf�����I��ULK�d���|��Z���ZM�4�9�������F�
�d����+��0�=z��P6�U
C��W)
e����nI}G;����$
.�nU�}];����$
.�n���q�t�
�%�Z��p�����������3������1.�6����Y=6]Z��0�mY|\03\^��0��Y|\0�c�=�NO�������$gg����YJ�qr�)���k��I�IoF�j�sL�r�� 	�1�7��X�q�sPb�)]60H���G��bz%+����J���kE�Y�xl���G�Y�xl���@�o~Br�/�Br�$]		��Ox�/
�(n�`}/����RY�X?�.0���D+�LL�,� ���;�bv`^�"�A���9x+��,Ew������&�H)z�����Yc�.60X�5^��K��T]l`�6kL�����6z��U����D%<!,�����/��lm��%Vd�@{2	������f�����a��U*��>�f%5ff���hTx��5�l`��[X�9�)���p���d|�n��SbWnhFf%dVnh<f%v���Z�J6��6�,����nYf8��M��#�a3�7rl����a����$����JQ#M~��WEb���(a>f,nCf,aHf,nM������_�R�#�J)W/dir���Y��x!�����Y/M��/d�	��	�����������L��u�0��Y��S����L%2�:1�L��Ct|b�y����2����Wl$����!I�p
��^=8��98���T�����\A����D4= ,����������J��9�����Z�Y�a�S����t:��GbX��\G.���qe��Z��X��R�M�
9�9(�)�S�t�Js�J
��j�L��'�(t��u�03q��)�����n����l0���L�����L��!��Y�Dx��I6.p��F'\��bR����L)Y����bGU������Ag��y@��]��vZ�(}<���x���vj
���?o�J�N��TR�TR;:�Xe��Z�X��-�3����96\
�.0�kb�ugx6��>}|��n���W'Z����`.Zh����L�/X<o��>������+�,1�:(8���b�X��co2;,Hp�#�O����PG�9��'���z������S~{�T���\�0jRIG���l�-d^�r�iJatc�}�f���`��{X� L�X;��<60�X��!�(�{:����������p~13�jO�.�bY��Kx:��X�Z���\�7|��������DMeTc����.��{�D�eT�s�C-dTdCW����r"�M��T�B��]�/s���Q�U�O	��3*��)a���Q0�����J�LX+��������2��\TIS
�M�l�L.��	���rY��lTp}gWA�D1>�h��!_�������Y��q����Y����pKg��#�z��z�azK2�2Td��2�a4��f2����Ps�h�x����;����7j�}c>�q{���;�W
���C9��*�POy�J1�C_�R��:��dz��S�4-���O�����
���\C7,z�>np
��l\p�U���*��cs��?�x�'����qw��y��#;403��23;4(3����X��$g{:�gE��8�����d�u�w�		8��%>p&B6,�sPb���.0�g!�U������/�w�L�w����\���V������r��U'8��*s�j)�O�GdM$K��E�w����`�G��Oy%{a�����p�-��M��V��}��{*��t'zI;�~nvI�������2��Iyy����J8}��a+`�D����0p=J�
��Y�0p=J�f3������(�'���p:�o��x�kI]��l���K���l����	���������i!,�gC���	w!��n�)��{�|>p�
G������I���l��}&z��������N����,�\��6��������6�O��qWY���3C0H�Y:�����
X���'���.������U����p�>!�,���Rj��
���WF[�.q�Z�B������BW���{5~��\������5J�R�
�����J�,T@
Q5!QK;�%5I|
K��J2����A�H���}&;|7������'��F�j��|8a=M�yNXOS�V���;��+��`
,�w$f��L0��C�k�m�=���N�I�uN%t���bkd�!�����3Z�l �y�c��h����P2R�0i�R��@3����x�tAW������l@I!�	�L��	�A�q�0������]R��c�(�\b�X�����5"Pl��������.�ZR_���n�E�R���Z��}�r��Uu���VYhIEj�m�����a������/T�[}�U��B�DPQ�C�g9eT3H"N]JH���b6��{u��3�PI������yRf����A�	)D����5awO&��Q������.�q_D��BHL�
/%��J>����}O����^������w'i�W���z�����t/!��s�fUfb��4<�*v{DWox���Y����ZK���k�����rM�����iRP�=����~�;g��y\������h�|��p���S���r�\���\���]�v�\�k�6w�0��w�}�!Y���x���YsE�re#WB��LE/���{��$��b&VZ39"�X�����'�u����2��)��&t���@&�Ju�tB}�GB���T������:}QG�t�;������OV0��/p��"��_t#w������E�!��%z��Cn<%�#`5�b5��j�_�m5��<\��,M�=�r)�x��B�0���pb�_���(���
rO(2V{����B�*��7��0t��<��p�,�p;8�$��q66$W�npn��}S?!��v3����e��QK�S���C�7�P�qx�n�IV��&GZ�Jj��|��� �FB��E"�ZE�0��DBG7�%�)--����fT/H�c]^��n����R�)&xJ�3�8��?H#W�qiZ��JZ�gr%��+z��%��R�'������A��
1Y�j.���Z���0�+u��Q�0���Z�A]KC��X����q)W��@,InW��V���\���9�����	��������P�.��v
�E���7����D�����7�h$�|�},92�d���X4����6����C,��~����xd��]D"��O�d�s��#���E����V�&����?��?Kqub%N"V�B^�Y��$>���w<��r����I��u)��=:6�d�D����������$S�V�>�jq:77O�������[eC.M)*�P��ia��;�t��l)���,�.�����D�?�(������������c�����k(T3�)�[�W�����k[���	�)���������P(���i�����tHg_�����qg`�����C���������J���z���$,Y��$a+:�Z^�Ax��JPe\��J.Q�6N~y��JPe\����+A��q`��� �2�Ax��JPe\������@
��/��p%(�z)+A����H��� %�9�Y
UN���������A(����a7�8����x���\�p
k.^�1��W�����^s��.�<����\��J�l����l��Z�l�`qm6^����n�w-���o���toZ|)���%}�?1��aSkt�x��+f����Ai��l`�N9v�83�������`+ktEy�`fb��0���8�a��~�g<L\031O'��pf������38q���Lv*�m��Zu�3����SV8/���J�a�s�yX��dV8���F�a�s�yX���<��<d&^e2�2���@fb��(�v���AfG<�7-s�@;�7-��-J�8|� '��3��C�'!R0�
Y��c�`�v��EC�<!�%�|��)�Z];��H-�V}~er����dKV��2�B�?��$
�*e7`9�i!Y��@�
�R��9(q
�%��w��K�CI����������'/��1r�L��6�I�����^�b$�2��"c�24�c����k\p�q�	�����V�9�l%�?��\�r��Sl��|��/�����*3�E>p����J�E;�\�NT��8^�������Pn����X�_h4�/���U�������������=y(�U{dS������K}&�������An�����*���,6#�@�t���������[������I���Ool[�M�*���M����Xh�C����i�f����L��u��2wa��MZ�����3�+������7#�2����!7 C��r��r��[W�/T�R�&�t�+���p��A-^��9>*Yz����-�2!���	��Ue��|��n�eg�t�08��a�\`d�����\'�vv�?�x�'�Q�����%reG���WW��dG����W�����eH2��CC�HXD���,��Q�d�VQ�p���)�ZL}��0���,,��b�X��>6����X,�
�#�t�i*g�ma���!��Rf�=����������^�JC�f%��X��K�����y��<eVr8S�J^��ZoYi*?����Y���T���q��}��~@sz��DX`v���/�J�>�[���z���N���K�����Z:��
VP��s����L<a�V$���X<3/�E�:��Y���%���O��%�X%���	��A�����`��������km�hXo�����~n�����7��s�o��D���x��<�������Y��,�V���AMjU������������2��a�*���*���c�UY��V�0��2*66�������}�7�:m��$Le���g����$]���3T����}���|J DlB%!6!:��	;�����x�IM��9�'|�%�����)�o�[gXV�8��=v�g*��oy����?�H��������_�N�=#��3Pc>#43Pc`b�v�)c�3�-"�zJ�'�i�������u+A���:d�M[��7Y.�+���

%�F�AP�����
.j"�L�PI�0��1���8`K����G���I��o|��<o�OH�))mq�:h
���4FZ�Q�R�}n�(�$�Y����	E�D���x"k�Q<�5�(���pOdM<�-�E@�g�u)���9�R���9S��&8%JlT��&H%J�U���&X%JlV��;h%J3��P��[�[,��E�Nw bf�
K_��+�.�D/�\.���b��� z��!z��7!z��W!z�j�B���]����
�Xs��
{���6��e0��"RA�'"����`T�[�Q�oFe�}0��`\�[��1n"G����N���?�J�GV����k���|���a'4���?��K}�g>��*o���#Wl����qS�k8�������W:�Y uH6�6�d�P�P�����m���t��lD�?q��(w������sn��N�b�I����c��v���t���9e3�5%��>~�$��]|�2_�
J����,e>C���M)�����t�����S��5����S���*~�_�X������.�������.��h�d��,�yV�%4%�w	���_BSr|���?&4%��	���gBs�|����&4'���+0���������as�����������x���9�h%��D�����$�B�k��
99�BMj5�E�\F3sz���kUT=���{�0��u�LL��D�q��]���zVC��ha��\� y.Z�</F6��F��O��/��
�
�;�����D����'�D�T>�S>L&:���Y2�k&�A'=Ta�/&��a�o��8:��������{����k�n�<�@C���0K����� �4[�����d�	N��H1�U��*��������w�?�tc��~J��g`��~J����b�����>�JZ�j*��H�T!ybCY�r0[bCY��j�P,P9�-1N*X�r[b�&$(y@"�J����#ZTw��#�je��PsP�0�ZT� E��Q��{�1������xI�����0%�
�T��	!~IPk��OaJr�^���;�Ja�rA���Y�,�T%��D�m�X����S�������ZT�ZX��{ �_a�C�@�^���o^�`���**w��NU3���v*Ea�g7JS���Sy`��T�����A�A���KJ�Ry�����.|z������������a0%9Uvf����(w}"����Q���J���y�8F���w����XD������L��I�:�<�`)eR��2+XP�GJ�q�T)�JJ�R\VB���R���P����Y�����*�e%T).)�JqY	U
A�����RJiRD�f`UUiRD�f`UU)��WJC��4)�JqY	U�KJ�R\VB�����4�)4p3����R����*� �-T)�O�����*�@�����*E"��Jy�Q�&�T).+�JqI)U��J�RxR����UiRJ������R����*��b�N�0��
IcyWg���P�2Py������y�eu(}����g��T������O7FN������������[�N��@�h%(�JP�����p�����4�Kj>E��;�90�*wz4��J+<TS���������w��9z�@;{\6�����.�
�n
�4�+}[�X:������\�;7U�kW-����*�<���������7������������w��]�SK2e0�����d��
��4���?N�f�m�#�>V��u��2����%}+������ts'V��a�LXyX7]1a���t�����/��a��������Kjt�}�%6:�>��[B���9����f�le������@n��A&.��9�O�K����4
V6���#LX�D�O�0aeY����k�S]8���:���Du�L�H��9�����c���OsRCojNn�[��������%`j�����(Zlj�����(Z�J����U�t\G�*�L����D�*�L���E�6Y�*��-�L�E�M�S���E3�&n.���(��4�x�`I_6Z�)2a�SE��J&�|�����	+�,2o�2a��Eh:�A�(Q������_�rT���r�_`?�/�"���FDkr��5�D��D��hkb��g����1���kb<N�����9�XN2�Q����Ml����/��?9��YhM�/�&�Z��K�	��5y�l7�HI$�qZ�b6��LF���ew.H�Xn��f�l�x�9�5�'<��r�Gy��4~7�M�2�p7��h�g�I�����_hR�/0)� &��t>Y
�e),
P�2�����\S��f�d��9�5�spq��	��
T�N��O����W�bM��KA�������KAX�����})���5��.�����X��uiv2x��yY��Vx��y1G�1q���4��x��yYbW��9�����u7i����O��3�zzcV�������9X����&�����e:�f!Y�,���s�^)b�����x�V2l���n���)��.\x���������B��"c�p!f�I�Y�?����0s�f�B,k+q�L�����7:D]�����Y�K��U���=���-�����S�l��g#g��sq�e�hi���F.2'�����`�jb�}&\������jn�)�J�Y���4+9����-��y�?��O��f������JQ��LT���uJsNx62�5�c#�P���r�A��9�<�������������y�7��n�������!����I����q
�h v�������ow���4��g���'p��([�)�O�~�KFnn.r
������ds
X.r��)��@6g,����F���.r
�}tCF���n��9@��@���������\� �+s�����9@6g��"���CD����%��.2��12�s��T�|qL�IO��`*�H�O#���,���n�r	���,����>���Yn��F�����y9��$h^Na#	Zz2:d A�r
H��c���Le9j��+�qP�$XY��d As�	62�`e�Sdd���I�E��v.2�d��p��'�����<����h�h�1���"���5h+�"{imE[d����-2'���@�=�k��H��4,&�~����(	���JEA��^�$���+Y���$��u�����V��
@��L��B�TR
c���Vv��i��0l���1��9K���s�lG�f�4,#�o#�=ZV��3�]����L�@�b�2��:�g`�G�k�`�6'?�rsS����AY.Ap���_�Z]��z}��Z�9���vs����>����8g!(�p�2������\��e�Y�iaVo*�NI_�8u}������Q��J������e�-���W$�F�["�V�[$�f�%�OG6����J�;��na?�.���\d����L�E�.��\d������E�.h�v'R'Z�R����QxB��w�_�73��B=E�*�P�U�J)�s��R��,s)�����B��J��'���c��S�l���"g����E��y���\d��d��Dtp�39J���f}�1�h6r����ssf#G-�hO�0���0��<K�p�Q����)@6�"g�|����d�	L.r���0�l����>�x���h��k��:HgO��Z���)F%S�%Fe�i2���7��������RR�TRJ:��2�6a#������@6v~6r�����\dN�o%Ki����v�LX�����G�}��Q����Y�����X#�hG�/O�y�����(�n>JtW���ld�@0�y.2p �&.2p 
s�78'/�(YT���&��aF�����~��d��2�U����0
 ��x�h�L���4~���JX�����S�l�{��@6Z6r�����\dN"�N��Bu_LL�'��t��u�p���Z�(������(�Q�2��s����^4_���d�M�Y�	���P5�*�X>r
��Ip����l\
�#���&c�G.����K�lZ�#W����DNS9I�
��4?�Ph��d�lh� �G�������#]�x���q�Mh��9>zo�x������Rx����}{}������bH����C��7��V1$�����Uy�~�bH����C���a�b����>Jt+M�����$��s���k��0}-+&
j�gLe��z�!Y�W�����=�9�u����#�!��������	�p����!����E��y%���d�J�����A��v�jb�}&�#��������+���5�Y��j���`���
�.N_�� ��W��w+�Z���`��MeX���+iG�4O�y��\Z���[�����J�5O�y��k^��V2�yN��]����*HvX�P:��TF��l`��]�WBAN_(���j�>P���������'B8s�N���	�l<:!�wG'����~�N����{tB��}����e���,����yU�M�����;`?�������[<�4�����R/��f��Z������E}l�����x:wL��~�>&�bs�-��m������!�6y>��%!�?�����ov������f�y9o������v�l���Q�<=�O�w�M�x0��f��_�mZ����nv��m��r��-x�az���[������H������,�� ���\Kg"������t�SS���/O��s`���~�Q?���+���
�(U$as
&����T0A+�,�J�j�
���
�;������RL<p!�0�H0Y��R�,Q��n�.��wR��e���l�d��Ue��&��V�!?%Q�4��v��UZ0��H`X~
l��`j�Y�L+�4+�I��d�6+R�4�\���e�A�:0�6C2��mV�&LW2�j���K!T[��>��\i16��`J/�b%�*&kc�&VV(�
�V���	���*b�t����Z��(Y����b�������RZ�t�H���l��oqLAE��W��PY&��P��e��U���A��=S���2U���) ��l�������Kv3!�@�B���Cb
*���5H5��R$6��NHsU��,@%�B�������+#��v/WX��h�l�:��h���
�j�!+0r���BF��0;���JMS�KHP�~3�,�N�m��<�������&s�]y�*�SC��.��	8��<���	T�&��<9.S���X6~���b"�SM�L�M��yyk���@S��t�M�?�Z�E�:�T�"��E�R\]>�5jSqP.sJ3	�*eDLK�@��G����T]�t�, z��B[���M�A�LE�����,[�H2K\��AK1���R����+���Q��QjT#OeL��TQ)�1m�D���~d+q�,[����i�S�hd�*��
	M;��#������E3�]
Y�X�=������[Jm��\Y>��|�o���W%D�:�O��*���O?&3���Z����5��7�	�����%��E�'���;����6��f�ZDV��6��w����iY94���@�-"�����n�{��gNBnZ��M�J;a�y-M+�~}>��5�B,�EE��aY��[w�2�V�TC+���-�_��z�)�p�L��� ���'#x>N0N��W����8�Z�w�l���������Z�w���\W��c��x:��i��j�d�P��t���"7���h#3g�Lm8B�[���z�&�
�sK}�U�Lm38Bk��"6�vIhm� �������V�#�V�+�SY45a�n�d�)dM[
��f���@����������Q�����	z�d����6JT�1]7O�i�$�����;�$f�>vV�0�M�s�mNgzx,�v`���|�������1������������Q��>
����LJk��Q���u��u�}���7MkE����������|��0��v������#R������#a�?���s}P�|8�O�HH@��F���}�bBXv'"k��m�I��4��3���|q�(D���y%�=9~6�HQ������-v�}*�c<e�;^j�����
���Txb��R8��/�����?=0�o�j~����SA�/������p���>��C������*R�������7���r:>���	����Q������|���
�%r�
��Z
��3a��U�#a�,P�<G���<���������J���U�x�e����@�J��L��v���9���R��EKP� ��0V����G"�!e�5|������l((���������@J;a� 1����2�>��]����c�b��U��j�D�X�A�.O���JTNv�m���HyP��c��-f�m��F��"���"�1�y��;�R",�S�o������@���p]���\
xc)m���Ni�������D���1�;�N��?k~����q�t�a�����J��\��nV��+�p��Z6$x7C���>��f��i�T����CF�w&��{oq�q�yl8WO	0����r���fG����	��2�2i*F��#�nl�K�b�H���c�x�xP�RU"7:/�U*1:�}<d��������sm������I3�L\3�����b������vG�3|4�����i!�[�����eSj�e�0R����l(��Q��hay,@��hj��������tl�J����MM�O�XP�:����)�}�
j��wu���0z�/z<W#&]P	
�v������Y��J��5����h�O��B�����Q�M��r�-�]���!��u^�����]���0�r��	�k�\`v�(e<�CE)��r��lcv�e��r��E.^�RP���"Pl�u�:<�j�ty���\
 sA%��!�GL�ue��X�F ���k���/h1W�r\P�U�/bq�����R��J�����~^��Z;�(�Q�PG�n+�1���f��;:u���v�V��V
s��$� �?))��3�����������\�uw&� �8�}�/�1W>H�/���[r�RJH��=L�������t�J�
�,}�h|����O�*!#�MK�A�������oj�;<4����#
��#��������3���ka����T�l�8s$�/������	���Q�p�����M(|j���^�����������F
$Z���+q�m�O;��r�@	�Iw����H�d��bJ���\.�J�R���X����Vs�*���;�Z1|jB��D�L��������b���l,�N��:�bI���"�61|���p�xm���,5N����#�'GVH9������-��S��J��������a�t�����������	O'xX<��a�:��������p���h�SY!�K�hDSC�,�rMM��G+����]|����#�RAS��J1��Uj����;��!kU�|4EC��3,��LK5��M��zH�M��z�(['��g��Vm7>�i�z�@�R��y��B�XK>�B�EN�������T���(+���}�P�����,�\J�P������
6�3u��y7G��h������G����������?2���#S��?2���#S�~dj
"w�}��M��S�Z�&W�m0�:f���.L�^�B��>�������Ap��q�������8�9�G�j��o������&��g��Ep�*:�S�A�����UE'p�*:�S+#<d�&5����ZC	HA-���V[RPK0)�u���b�J&!�u�&>��
�Z�	�O-������B�SC?\�7��Cm�WjT�>��
�Z`
�O-9A|��Y�(dj9��Z��G�������+dj��Z�CN���U��y<,����������rwG�����A��SlGG\w���+Sl����z��z=M��5^>��7"��|48Q�vt�h�L���|�� Z���r$-)M�Sw�-��Lsu�
�4Ww�-��r5&�E+��nX[��B�R:p�T!��]�h���\4U��su��6N���@��H�Z|�U��p����1P�R8j�
�@
_��!
0xGC�F7o`j����<o`j���FB�y�|�� ��N��a���3:5��A�F�~�uy����Y^J9�,�~����GSD�^�m����T#k�h���Lzhpi /�H�R�����)��5&�@��nec��/�h5&l���cb)��j�[�L�Y9��K�w�����\.�reK]+`c�
2�ab
2�LVnm�"3J&����jKm{d���R���1�xm/f�g'NM��Imw��p��V�zIis��Ii�L�9�r���=�T,���l�T�Rz+S������,����
Kq�.�A��r��JO�
�@�H�(�)�K��Z��U��M�Z!�)�+6�����|3��/����7�-��#�\�`����rDT��qJ�'x�UOy���)�2<_��)�R��yf�[��9��)����O��)wU���9�~����J9�~��[��J9����?��w�o�����R_�gO������O�&OfV��	�>�,�6pYH�����[ts2lw����L]�}8��c:��)�������/�����F@�@��_t��~,�x���J�/���$��r����gR�Dcs���n�\�uC�j�:Ge��@��9�;	�� ����SXWa����Xl�{�
���UX7t����svL��������7���d9�Wqo{������bK�YHTk��t�v���D�k'��];�6O��I�n�N�Ep�v�,�[��f�����,��osQi�	�����k�	��@D��� 2�����.�4�t��Ad��"]�|���'O��kB����F!�[m
��jSH������-QH~���-QH~���PH~���PH���jg�	Y?� ���	�� �'FD�AO�&�"�^ME����br<�6�do�)${�M!��n"��@!����@!����WI!����WI!�~yl�G�~4A �GD�A/�&�"�^ME�a� �"x�4g��&fN�K���F���3�$�� q������bEj�:Wm���:���Q��~6.+A�+A�+[}e!��e9H�mYW_���1���1&������\5u�fUEG��"��+�>T����QOG9Hl�J��E�8��4���C�M�=4GG?N0����R<�V�N��z��bi*���L,��������F��n�m������\-��`.fi$k������^�%&V$�u�{PD�^�i����&���r�^�A{I�@�[��^E ��Q�^���zz$���zz$V$���9�("io�AG��������SQ��(k��O�yX<}�aq�ylGTP�w���V�=i�z�I��mO�~�����(�L����/���<,�~����=�#*����bz`���4\������'
G��6��nw��j�T�)�Z�ab������oW��vDE5~7QLl�������4\�����o�O��\�R�l���Qp.G��X�
^��U)�r�5�3Y�����{0q���+��p,�"�"n�yX<K���YrW���{�x��I��KW�LW�6;h�x�^.��Q��D�������a���s�$K5d���)Xj�@.V�`�����d�Ya#L�*������&[��^$U�)�{��iKHJ�BrP���������1(	��AI��.��f��p�%DX%�\XX?���\4���E���\4����L����n�mov�������y�?��O��f������JQ�LT��~!���Su.O��h�0bYH^r\EsC������}\�9*��4u���v���Z}i��~m~��f�I"^�5~�	������h��`.�,��
�nU�v���[�������F�m7���d4�M��o�z�=\6!�G�6�����Z�\����4��$��2���KMb�%���hbI
���a"�6�
:�j�F
����Asu+���n7_/O���n�^^�[��������AkE{=��g�kW�|a
��o��+�ye7��f�[T�ECOZQ}
��3X�P���~T����*:4��XF��bth�����������k��y�����CbM����j��O-C��e� �hn��&�D�9f���	��s�b�'�S�!�E�5���������qrO���67�h��M.os���U�k�R){�/'�����3��9�c���?���>��_�Z��D�>�9E\4�S�E�9E\4����'r�g�N����f����f������{Q-���JH"0~���\4�]����:�������'���uX�=4;���e����������(K�ZJM%�Z/���X��Fc�.���m{R���n�m������>\�����w�n}�o�(,^�%%wI�(��x���op��'^��D6~7qLl����}����}�����//0^�L$��oT>�p.��s�x���U��1Qau_L��'[�vC���:W����G����c�h�>�p(���V���g��h�S]\4��..�d����4�O����V��>pP�?��+ugs��?�OL
��{����{����{�+��(��@E)s*J���������F@��d���'����z.o�����z.w�����&��g����;��ppG��p�F�|"Y���V��I�������<,���������R��������q+\�>�_M���1�
�;��s�^7t�x������'��5��f���qq��o�����}����o7��pz�L�vsi��6�������qWYlv�������Xg����E�\������������oL>,���<_������3o���������������~������bs�����c�km���T/v�s�m��c����@��[�?��?dbVw�?��;@u��s}�����<>����t<|}�u��/O/�m=t�nL��5��c=�������� ���\�G����ib�p�gOu����}��Mi�j�fX�xVE���}y�f��<	R���O���S���(z�%Yx���l�G��4+��z��qGrou�h�v���B�4[�T����A������A�YR�	T�����y��I���<�<�*x� ����&X��58���.`<�.�1x]�����"t�SF	�0$e���&E�1/N��h[�s<��pAy��~���T���(��(��
 R��0"���NZP"+3�V!�T�M���|��*�T�s>.����X��Vd�Z�(dS�4�VJ��2Sjf9
��R$f9�R��a9�"S�rR�%���_s�zX�-�Ce9C�R��a9M�"S�r��%#��n���IMfP�Y���"�SG+2DE��^>�$�=��������a�#!����X�*��5�DF�HR���Sr2�AOl��vt���N8�����:-�pm��{�"������O�c������P�
�q��r�r��n>��vPdV����n#tQ������v:^u�c]w)��|�9�����
��eK�3�5U6d�a����B-�`�<\�v�����%���m�z����~��v��-oa/�t�v�������S+����������/�����J��xu�hN����������}S��_�/��U�m��n��,~������}��~��(��j�x;�������W�S���s����>���C���o?�Z��4����x�*��C:�����������8}\[�������1���m���k�n��n�TU[�TT;I+L
|�a�}Xl�O�a�<(���+�i�����(����eU�o��bn��Se�������HLU�E01T�	��I�T�i�6� ������f����&R�D��t�����L��8��Ec�n�8�b�{��;B0��3	(�bcL��I����	2����:S}f��s��S��:���t�Y\E\����V��b+����
S,��I@qc�I��k��
�=���K�gP�~�u���B�t�����&�bcLQ{>EPl�i�^����
r~�VkK�U�H�=���(6�\�1�J�h4�M��2g���\Xw�����H����b���]1�(�u>E����P��B�9r~�VkK�U�H�=���(6�������S�P�K��U�S�s�0Yi��3!�b"-��O��AX��s���!�[OF�*(\��j��t�.���,�8Z����$��E�{9�q�S��.B]���3�u���;<����/������k�;=����)��N����7`t�:��2���$]�����4�H�) G���]���9V��}������a�~OR�5���-�7��:��X������	��-Z�����1���(����c����]<��Sf�T���������l���J��ZL��F4�3�.�@��v���������oO�u�]��}�&��/^K�����4t�������&Q����sRRf�|:Dp*����X�"vz�.^w�Sf��8I7�x�<����6BSB���d#v�3^ox9F�zN����N�cs���)��dyK�,X�	}�Q(�o���K�T�8V�TX�k�sR8MUH��f��A��jS�����E�kdC���!���p
�p��38� R���]��f}���N���(DX_
O�6���/=l��C��#P�Z���]�O3���`(��������
lB\G>>Q5o>r�����!I�(*��������ke9�r���������U}�V���V���dD+���\{�K�3�)eA���]:
���(]�g~+�d��K16�q�2Y�/����;�Q��3Y,��V�9�3U,�����]}��:X���S/�����]�Cs���L��4���Es�[<�4���������Y�)	v�o����X����9v�K�?nss<|m�M��D�d�
����\g�5�62�v�A�4������w�s}��������z��/u�&�����M�z�0�������Sg������RVv����=�J]��V�K8U�(�W�DS�[�T���%)����?��c�	:*[��T������B������Yi�E����z��2���$��T�����wi��LF��wsR\��@����B�����=��^\��������xOq��Y,}/@&�p�y�.����$��� �"I5T���%A����{�kj,�j�.�m.�����Z?������:�6�t�f������p6?��;X0�g�.s9�(����=*��!������@�6�'�e�Z�A\���Z;[Oge%P�Z��Yqb&��/�"����sdMH����������i�3Y����v���Z�+@������S���=K�
]f��Ax�������D�,],�]��c�d��I�|>].�����^�{��blX�2��z1��O� �+3�4c,x]B��K?�u���f���t)�A���":�'��i��W���>�_����fQwu��W�R���g�j�l�L��u+2�O�}���q&l�����F����x��j�N�XdU'�)Q�rL#�����\)A�Ju/<���U����	����I]���y�U��L���)��	�����X&���3!���E����T��C���v�R�N_|�
��p����b	���b����j����>���C�u��j�
�r	�tE����sr��m��-r��r0���X�����IS��:����-l��<���k��8��C�n�����,G�~��o�����nw�/],9��R�PY*�^�x�o��w2��L���O�mWs�m�Bq�l+GR"�\�Z�2������t�\�t�
~�J�]o2qOz[&�ds�`��q�C %��
��R���i��'�
_�4��	R&R$�{^i����<����2��c[�~5�[u������e`��.KL�|���dUy������c���sH0�s�U��t�%�w�����bilE��Rg����;bs��_T�����������c]������e��>�����u��t^l���z���?���H�[?��5���s�|���o>|X��yq������:�����C�sy���?��yiNO��_;�4��e�y~>���J\�z�[�>v/�q��K]Q��][O���h������'��[Rh�u��f���QX%�`��V����{��9CX�����P���	��E�lB��������lbwV
��?�����������^^��O��Mi-Ug�.���B�g�Ko;���ky�,qlO&��`D��7���"�*�g������P,6�l���E�{D����$��D�H��G�H����v�h���`g�0��,��!�A�D��#�,�9��C��FTB�P���������kf�E������d�S4u��=�D�xS����;�z ;o���q�K=�r�&�#�"!�+��~���cj��}f;����
j�["�������f5�f�{MpRb�x�Sa���CY0�\ZZ���-���A_��v�������#���v�&X�<di_���:z�w+�����}�M&[+�$�zy��{��W�g[�;0��^Ksz��������Y��G��=aWHit��L�����������Sy1����7��������nW����}�?n/��};9�N���8=�W��m����7��������X��w�������E�\������=�����oy|��Gq���������q�?������1�y�?/��]�h���������oQ��/��?���[�������K����-��x���<|]�^�]��q���
�!m������>�2�
8�5��|�<�[���4������t\e�u#�����g�RN����6�*�C�en������}\�v:J�*��
��L�J��f�6�B����VJ�%+"�+�-<M��*l�m	6S�
��v��a�u������>��7/�Fv��U�p6\o!���	�kS���+o��#W|:��d��"��k�%��is����^vf�jEY��N��O���)(�4rH_�$����6$#xAd��\�h�z�82��"m�X)�{��O��&24Y!���7�Z�
59�����_P�q��g���Q�}�\�-�~����u���/�f�;�O�&�'�%@b�x
�j�u����M�S��qI��Y�y��[�����
2��n�;���O���.���.�[VMS
��_@��?eWG��W�E$����7���l4-��4�4��3v���:`�kC���]��(�V�s=�K6Y������5Be����O�L�>Aau"��9JrkD���D��qi�4�������
��6���!k���g�������N�S���"	�+����u���5�����������E#K�bK��3�d!q�dV�
�����$G"�`��%B���D�>��{	���D`��J����w�K�EG�5����9:
�S��b�F�(7.�,���2�,8	�
�
���:������	����V��FC�:���l��E�h�[����4y�����w=��������3��n:�T_Q	�j�%����7v��>���,6���cs�7��^|�l���^6��E!�u{�����O���~������7��N����fq:�����+���_g��4����^���v%������������_{����2�O�"v���G�����S�]�e[?7}xns����������~C�����_.��u[�������i?�;����ff���b��S�'�z{	������o(�e�r�������c��_(+��5�����_������$�8�k7�mK�{���O��AW]d�k��$�0��VK��
��5�XP�����xz���5���G]�o��6����a$�$��)U��S����=���^��ku���EJ������W���UFp�A��a������(r�F���4g{�#���5��s�P�z��P2����@�>gw
����D42���#�
���J�y��;%VO��
��/t�W�\�:J��5��PQyTZ��]F�n��\���U'�4�R^*�����m*�:����,V���/-��'q���$�;�Z}X	��G�`5�H��9��P2{�6����nX���U3$FJC�U��No�B"vw@���46�������)ldQ�;���&#+(G�WF+�P���o�T���.���:�[/U^�!�*��+|ZV�T?&�V�0�
� p�'l��L���RWF���C��a�E�����'����i9b�5�����i��|$�L����u4�����O�c����l�]���i2�3MSd�c��t(d���[���b����Z���
6M������v&{{ML�B���9���[ (lu��;�e3�v��������)vR��N�e���N#;�����Ztu�*��j�=�������U3��jh���\��&YQM�����q�z�h��:�� ��� P ��!��;��R��S2d�����U�' �Q�/#F8�Fn��I��
���e��3��:�QU��X
���?.�A��B��,����U
�a�r���sg�gd�I����Y�x�p�BF�lE��j�2�������g+����L��r��������g���
	aj		p�
5�%�P������m����Ys������F���V�I� "��Z���`�H��65n��!9� �}��~�G�|���oE�/t�r�|�xzr��%C����?�O#�d�����ZhLq(h��i��]]M���|��$�*��T�Z�]�:������+c�������M��uC�5��C����ea�9�������.��^�#���0�����+X��^�����5��:�K-n]w����"Z�Z����� �bA@�x
��	���n�k8p��G!�-��d�Rl��n��d��-�`�D�)��%aX4�d����k���2���[��#���z�*����b������x�w�������6����k��z#p���������}�}e�����~/��5>�����������������>Zl*�+pC���J�}��.$I�W8��hV����Du��b�GC����	��j7�I�Z���;v�H��Bn4���-���ZyE��]�(����}7��)���T��
%9��2
P�xm��T��;������7�)5�[���W�FoD�^���K�LR
N�#��4S���Lh*�k���rwF.k�%1,l�\�[���'��v���;������\����C��<C�Tn��y��D�Zn��3�&�MQ�+���
^�������9���}�F}�����?Y_������y���vN�['��fE�lW��@O������r���!��T8B��|��H�UO%�D8�_�H�r�3!"��nl�s";�)pAm����=g�p{^8gn��!��v��G='��m�[&gw2L�BH�
�$B�j)�B���;��iZV"[�BK���x
������������'F�h`pd�"B|]z��;���:dTB|M��'���(�d�X/�d�D�H@�"5Q��\���M@e��
�g^��O��E������J<.8���H���d�l����8��R�ro��R?D G��Z_*�(Q�a���<���S
:��'�
����������7�I!�����
ET�Xk�y�a	2�G����7����� -���4i�+u��^R��*~M�ok��F��)��2�=+�0�������[�.�R���Z�E����$�_�6��4/tJj���M_�%���j9���r�&<}9�c&/MQ����'eNL-5�E���,��t�=�*/����(
b��d�D�(�YS_�%t�������0�����#��K���������; �Em�2��Z}1������	����2fS�1�`^q���!��13��C���(E������1i��D���W(e��]�eb���2Q��qlc>>�L�D}d���D���
�(}:?��'��P9&T�c<�3b��,�T���C����h�d�5���$9\��J0���{����:�.g�[���E-k��_���Es��&��&�@�}�H���5E�����_XI����f����?C_�����������7����@�Q�e�N�y�`�wD������j�����kBIn����h�� �.�$x0��{���vq(�~�y���!�������������������RL�8(����(�@���� ��M�B��p0}��3x)�-w;L��Sk�������rh������K�����~�6�)�Y2}�����>�DB�������5����{�/�e������;��,x_O�l��w0��k ~G��cP�v]�������5X}6��5Yt�����n��L��No]��]Wu������\uE��W�1\�+����[�%eR.��?��q�����|��e��nn������vk����=����tn��t�|��oz1���c;
<���YV#>:��Y���~>�?�O����r���:��������c��zb�r���M�MU��X3��RN����V+�g�����A@�z������
��������<k%��xj�l��>��J�^�A`P�c
�u�*v��M)��D��\�I)��P����9"2	#��R���;4�b����9�v�ot�	)��� H��{���n������J����#^�G���:A�D3UAT��t��x���&����R���h1F��I��u��G`s�AXJ�,���#�T���X*(^�G���:�)����\u�<�>R�i���`���	-�B���j
���q��ZS�O����4[D)�=F-7A���e��2���#��� Ay�e��;�i�/N��x��\�(n��l��[�Gk�$�k5EW
3�6���j����C'��
��7z���A��q}C!�VYd�at�]���5��� �w�'�y� y�k��l>+E������Ti�U���^����[�P1���~F��(�,�T��T�f�fj��T�+��I��*TLx��j���R�#Ju<�'���T������q}���VLx��j���R��M�Ue��"D��9SW��������
���U���l�Q�ku#�H����&�����3D�r�TC���EV\�����^����p3[D)�+���^��0
r�.<\��2�Z����*&<�������Y./zn����n1�;[���i�=8}\������J�z1�(��R�����JCz���$2)k�@(�l�����������=�k��>�O��6
U�lj<FC������"b[�m�l)�[j*������V��}h����4IK��8�qe��Va9��
�2�O����^6"Y��e|��BZH�_�hG��#�-�ZI\63v�lh/D��+�� 9~�������UP����}��G��F�^�a��U
����"\��G��k_(�J�PD�"���;�-�����d�t��{���n���8��
b	+��w\���c����kH�����G��R��>��n}�����-^.���ms6�f��,�Yi',����i�����E�=e�95/0g�>�v&�b���-��*���U���i�$�V�aUj8n���EV6tU8
S8��!�k�t�\�s��8�Tp>�t�J���Yq�-$-����YtHZ-�����T-����l���(���9��IT�Z

l�,��wqc��E5[
dQ�AZn����K���J�7���w�TYd������2L�+ii�x��T����(�+a�X��1���'��ts����T����3k'	V6�V~���T��UV�X���"�ZrI(���q�d���Y��'��3S$1���������1;O���G�%5S$I��v���}�UY/��	t��Lu�$&��Qhj��Mme�~(�]h3���Q��Ta���P�ENGV�����7�v�`��_O?�,�L�Q��=��bs���D.�$�3�N2)��)��������lU���s��� �)Z�W�Y�h�*��JC��pX�9����V/_�O�Hl�:����zO?�!4l��&oU�U�D�����$4� >�v/���*�����G�DK��$$`;��C�F�l)�l.��K���7�$~�����6AK�5�5�M{\9�IB%���S[�>VK\/!���i��Rjy���,z��Gd���j���ak,JIz���������]���n��o\J(?��R�rJ�-OLO���a�|��]���{�����0P�)�$�R'�����S�-�����1��+	A�1j���
����j��
��
�=���X�����>�6�����#__�9�`�\�\�Tg�aY=$���8��taF\����$(U�RPJ�/��e�d o9_��l�
Ns���7��s�08.�*E��VjtyK�:�"��7�Zn6Ln���e�N���tOu�.,i��^fI�L���W�UN�4co�M=��M�.e'��m�����8G����wo�Y�|�6���t#>��_��w��[>��	r���������k���\�f���-��:(����Dv��=^a%!��W+�����n�P�(��G��.����D��kwlx5���8N�G�+����@������P��o>B$W����Ujyyj��&��~�a0v����Y�N��z+{rN�A��:K'r�%ai���2
%"$��RMY�Vz n"
'���$�d�E������6���B� P���"������^k��}���~��'��TpI<D6N�����8*A���� �
�a"�\��2��<��2��E.J���H�=�?6?�,R��&��|=,����7��R[+Sj�Q���!���C.�K��_���c������Ke���>�~D;�Yjv3�_J����d��	��~���TD
5��;�=F'�RvI,�d����Z�[�~�g��"�a,e�>����2�Ba0W�S���g]�k����y�#����F[&�����4?E4��}������t�w��M������/O�]�����1����N�;��9�u}(���
�R��������|�^���
]RhQU�f�������(������?�m���ae�O3�C��yK��dd����x�����������R7?�5v����-�5�'�[.�e@���n1�<�6ST�E!�������
���k��v����o�UQ.�d�.�DI����K�����$�H�of�ZpQ$���QM�`w���9�4�IM��f��$'z���6v��8�y�"�|g^�2v�a�����LFVj�l���&���i�4��Z��f��$�,���n1�����WE����0W$��S�#�n�L�DS�4�m����l�*H"�����������~�.2�n6O$����pN��l��@5�?�u��!�Wj8���!����ZC(D��U8U���Z���n�E�[~]�WZ���������%X$7C���+�,Y~e�$�VV�3Y-7��fx��O��0<���/���7�-�$����#=��d��ZdHJ��U��a���9D��$��w�#����gH�[�$h�_�^m��������DK�Z:]������M�
q�������� 	��t��\/�c^@�K��{�\u�%O����9�
Y���������j�:H�*}d����u�[U��I������$+�M_�^�n���eY#��c�u��E�����������Q�>�n<���-�(�<D�W�n�c�l%n���4[%$�%d���rl��-B������f��$�@w��u5um�66��U��x]m�JHb��������65l�����U��x�m�JHbs���/%r4��N-BGy}	�K-R��Gu���-��x�����Xjy������I-v����j��ui'}��������x���W��!w��5��g]`K���CB�-k���CC8E��������:Z�!� �i��{��%t�RSdAt�1
�RB������Wj
�O��<4���!������c�����{���k]�7��u���G��
'W���%X�����'Y���%Z�������I����n�`k�z�FQ�#����k�MCZa���r����q�t(�I���`n.���~����VP~���G��$f�(.g!"�M+�t����@@�� ����ng	!K�+�2V/n�AQ�WIh���y[�Yn���
�zc]�nm��|u��Fc�l9���XA?���q7��o��H�s�Y�HX�
z\W����@��UFa�K�K5'M��v�B��Vpg��� ��y�����c���VS����BD�FW0�`�]�3��bWA�����B��J8���� ���"	��zpg�!aU%��u��y��|u�Vs�U-%��:\U5���/�+#�O^Iq�<E����HW���y�|��D(���3���v%�R��P�S����}���LrC���_�������&����e�6�D��MH�Jm �@X\����pY�V�g��+S1�V���������������.K�Y� ��eogEH�)�d����mQ�f����I������{���W��G4�����e�O��J�b����*����=��K��t��HM'�$��:d���<��E~�[/��1�"���P<��ZC�>%o�(w����}����X��y
����
	�$�R�����H
���.��MU*��t�����T[H�ctR�����Uo^$P�z#A����o)��^&�1oU����c��`��CR�)d�<XXP�&���k��9T������qb�=�X���I��EZC���Q���Xj��fZE[ux�T1��$~;�`�K��@i�4RQx���%06��nI�<��<����
d|c�r�����;�7����Y��3�����������!lt�%�����^m��R�89�JL�a�x�T�na>+�Lc�^jw���i��X�O��������'�|zU��|�7f>���k�;�I+�����R��>g�������JmP�	����es���	�?���.����7]r]9���S@&-�{$���U��T�&+u�����X[
�DfR�$(y�;=�`#_"��!{�Gu.���}�xxxx��rc�h�
��24�����I	G0<O
<��;d�
���n�{���A&���B����8/�E`2mX��W�;�#�6���Cq��W`�ET���-��E�n��������a�'�K�nQ�C�s�
���>�lE*�;s����R��B2���^�'�qhH��9��(��U��c��`:�Rl@���G�e�����O��ta�-���I�1E��`���v���n�����a�+��<���G�.�����w��n
�d�PJ�15��-OY���!�}��3l��a�(�A�
��tH��P�%����j�����s~(�[(���!
�AK�����[�D6+�tm�nX� lN�u.��-��777+��mu
np�`oN�{��A��Df�����C�
n��`qN����E���H�
@rS}7�����9UD���_�%����$����H7��C+��%>Cl������K�s��'��lhL�&�nx��_5����i+�J��s:^�����������/;�hdbO�����W����f��?�������S��D�'�>��k�>9S6��wa�1m���L��iy��/g�.d�S���;C>?�����+��_�����7�
��\��i�DXd���5I��J}��o���auC?�Y"Kw[����rA�P�����������m��E�]X��3M�)sK]g�s����a=N������K�:K��I�����~&g�f�p�+e�%}�YD�������L�l���C����K7���+BXB-������9��+�B��i�	*84����F�%'�JM^��ukp8�3�
�&�mh�lY����F��K�c3�s1-�b6+�%�Z����S3��Z)�21+,9c��P��&�i3��V.t}2+o�=����U�(�z�����w�!������~,����/�T�0�����`�@�D%Q���n��T���teH�K�������f�'B���������4+�~����������P��pD^G�I
H[`=5��\�� >�F�X
�0B�����3���`�����MD�
1���/�
�s�a3�n3�����F���!S��;�C���M����������U����O�v�%�^�2�XuC���
y��n3���C���I��1���x<����a}N���`L}UC����9M&/��m��815�
�)����`��� ��5
��8�6��4�Y����-;������z���]�,,��uD)��]0�����&�����]��8�K	���}K�7=y���3�����\:��J����������[��._N����ym�]��\.!�ySdC�cjL?6�R�L��;���b��KK[����*.������z�.-�aV��B��A�.4�� ,�	3����Y%�c,��3��p7�&�;�I�$`��4�U�ec�f]8�M����KK��yW�Sz��K�f����E��@c�"��r����4�u]���#�&�NB���1���B����H����/�iG>��@��-O�l��H
Y�d+�i+@W���'�d�y�C�'��z]�|�S�5��ya�hW��D�P[x��v����x�]%|mB�;��g�����QsN�^��X�Q�W�if�-zE�i�K��f^��
N�k�@w������6���39�7�U��'�
�f|F��|�'�y�3��]�7|3<�b����L3@[���������5���"8��p���/�n��k~����3�D~Jn����Nk>��IM�Px\�ux��pZ���3����=�����7v[�e�k�x[������r��5?�m�|�������)��������o@a����1C<���g��Z��V�+�|k��
D,�|{����~v����H�r9�g"��y��X�����!�,����� ���y���_����W�Q�cI��T�H�r^����K���!,&��Dz������u�7C�F�L���%`�<�,2�L�R<�����WS��{�	���B����"��
�����q-N�L�aU�����>O@&�N�K�[Sl����/m�8�[�W��|� 5|���G��cp�+z~UfvT���)+���7��l�QP/�U�-+��=z)n�k^���v<D��k~�u�)*��sv�v��,��Y.�(KI�X#�=�������f���
~8wKn��p�{��o@����q��
�,l�������ll�a�P�i������e�vS
l��w���,�'�v}�/���+H����c��"�����M��I{��1"�x3<�x5J�R�#5�����.pUO�����D�0�7�a������eE���c���-��<���4t�u��jX�d�����[�~��E;S4��
:���Q��@����h��h��O3�����U�
,������1k2��Ye22�f"�������Z��a�q9���I@����u?���'�q���%�,���
��x@�}������}@�G�����1X\������L �%[�~�����5��5�Q��������pODh�C�hl	��k��}�p�H@|�����1Jn���vtliz<�����V����e1<�H
a�&���n&��'����l�s�����=k_Sv��^�����������DQ���:����tm������K���C�+{�@���5}��n��:EN�e�[u�P�2�����52�K����"c}�!�o �!��5@�����I�?}�!u���Z� �n�K}a^r��	$}�$h�_��OF�K������t��"�f+`�&�q�,T��I� ��R��{���O]{�X��!��U/�����s�%��==��2:�����3u?[:���y�fY���]�Sa��qT�XV[�����G��N��K5+������qs��?H����nSG�4�R;�Z�k�Z#���n}b�19Lw�&"�~���+�%���'�M���'�a�ED�=������>z�.z����~U��<c�M�����K�N���U�=����������di�9������X0��%��7�����fs��N� ��[��Q
�a��w���!<�dpPyK8$���t��O��x�U��$���
aH�#L0C���/7�?u1
�!����a��#\43	Zm��d��5��	�pwP(�[q;�X�OU_�N��K�->��=x���P�6����]]�}�.o�y������<&p����q"��F�Z&��#L��kr��4�@7��B������V��'��$�l������q���ok���e"�f�Hh�����d�&$�u�����DTxEU��ok�h����-zg/�C����r�Y�GC��%�*��6pv\?������9�5�4�v���N8#��T	������J�@���L�
����s��P�����vG�|}�Ca��
�5���v����d�{..�7���
��oM$q���]s������*<pK�x(��m{���Z�\5���Jz�L���2-F;t2���c�
��w��u�����y6rl���3bXmqpn�y�e�nNw�:N�[���#1a���'�e�y�n�.a7j��� ���mk���`��&p�i���#_si��F��f��6j�������a7b������SRp[���gGnB�}5���������;���B��
�#Yimd��e�g}��:��Y�9*`�'��e�����i��fr���@|���n�����z�!�@�]���okb��,����G�'��6c:��>����E|p��d��"l^1�����%Q7��C�C��P67����{0�����~���w������c�}�O��oh�a����M��l�n����^����v#nb��A����1�>��.-�1:Y,��1��9�����< $�A19�zg��%�W
L�i	������f�A�-�c	�9��#��W��H������?Y'"a;��g
��Q��}���}OS�
�a.�����D�L�?b��q�[>����Up��`�m�'������Ky��{|5C����Z|���
���"���&����_�k��?���c����!�EBFr�������*;�j�����nD����C{���6p�����	��pD�mO�����M��0
[�1�K\%M��$'�)�%���8�����m���RD�#p��T�yV��]����C&�!��D6��%k�����xa:��
V:��l�M���]��7�fb�r;��AG_���K�H�\6y�<���z�r^��.���P����N"�En1>(l�K���pz4z�~�X�w�M=evr�����UO��[vs���mk��f��Zb�Q�YV��{t�_�O�-�����{53U�u���_�������L�k%�P_r���+�J���R��?hH�2����W�}�y$����?���:�������x�G��@ aJ�W�)5��D����,Qp.��S�r��AB��'��@��V�  ���
���>b�B�b��8g�fT���y3��ra��lX`��\�S8�.��
����7�L�)7����V��1��s�|�@��J�L"�\H�q�c�i�y��9w���������v�T&O�-���f�����{xc ����w���-�A�o�>����-^{-�^��:�.�	��������m{��Kn��E��0������Z@��/s�EoBT���U1������������p��^��>W�oX��}����p���EzMb������~��q>} �~n~�0����w��v�&����e�h��jq9d�H��d�n(��!J�U>^�I|H%��z���q���lPe���x����W;Q \�WG�0�u>j���!�k�����>#c0����g�����~���(}��!a��u��Io� 7I����u��	,<�G��H�����;�����Z��;7�f�2��3s��s�yDw�h��:�a�F�lj@��	`���g����c!��a7�n���$-U�f����� ���������7��?�\����1Fl��_[c�E�y�e��X�%J�d�3cn?m�X�'�~�F?��1Yz��@~���$\;�����E��}���{�w1���t8w'��$?u��������z�o��/���c8����dZ��>c�`���.���������&qu����<��w9�4���%������;�g�d���������M
H<�5�wY���,�\����.7�f���>�5�wY����h �C�lv�o65z���Qa}��!����fC��i�n�B �S�V���?��������jB��C�\�d�{�7V1���Rp O��N.41�t?���u�kF] s��a��R����%y��.u#qFe �.���������(�>u#oF] y~B�\hd�T=D��v��3*�X�����\]�d���#�t7K=��Y�t����,8B 4��p�����V�`���C�8#�����D����*Z�n�p�a\`'�����>���8�W�"�f$�'V����q�y;B�	��������sb�9���u�(�
�%�WY�I��1�v�����5�.�7�Z����b���
�-r�nF] u>�j�f���/I�����uK�S8�2�BO��X��8������a���,�����MW�b_[�k��Im>����V�+�}-����G�����}�)>P�}�lsPw�}���&�Z�����~_k=.�]eE����q`LHJ��kE(�u"�6|���}��V����V2�������&��0]���:q\������$n/��{�t5�����u����km����$�z���Z'�f�R�e_k� �L��`�ag��:Q8�2�B_�Z[��`�n��;������i������s��~�GO�����[�����_�c�P�#+sS|H���`&I|wa
��\�9�(��(�W
�D��/XR������\�]%L�<I�O|r�����\5/���	Z������R��4Lz�)���:���z+:�J�@�����='�VZ�e�a���w�!5KO��!%|L��t9�C
�L��%������7��%P9d<��_��Hk^J��uo%DM2��l�$�s���3F�2�
;H����[u��
��;����n�a�]M���C���1h��O|���}FH�[�]���K�y)=�1
9��vW�7�0t5I�
���1h$��$�CgCJxD�E����}C����0�Pt7u+i\�1������mHz�3��M�&���:s4�{�LI�������p��	��)��w�;!H� �z����oP��.s���������9�bn� w����cLL=V4��g_��d��Uh^����DZ�����E���Ab��G;0��$$�z�u�;���[5H��+��2�?	�����7����u��B��,�(O$��A����|���f�OChX�~��Q�R4�"t��*��_V:Y(�e��X����X����_�PF�hx�MA����K���
��91�����	�k~h�q�T��4���^Y������Qn/G��{%�lM��5�"�/��5]����K{-�nG��6�F�A?�Pk.��q������!sV� ��;Ok��	��U���C��A��6���vd$FzP>�V����!Fa�P+�r����<! ��t��o�z����}��]%���n�c����q��x������"����6K$�_;C�h��
�����V�OfU'n)��8���O6�6y����{N�IO-�Q�S*l�l���	 ~K~_��*��~,.N�7Kt�d��aVI�=��%Tt��q�(�c"9 �	�r[�r�q/�R�3Orq��;����:q���O�^:%�o��uNN�^��4��ez)wh_�h�/���fz��h6uynL�P�����M��&ES��W�k\���q,��%;E�yQ�t;��}���������7��o�)n�Biy�tT�P�������.i�������v8���eF���*I����-'[�������U�w���$�<9Lhv���\�<.��������)T������)��j�h�k�g�Z����\��
�dK�m����,.��{(;M����Z5����5��/��@J���/.���!;u���2�l eS�24c���=���[�GG����`������N�7�;�1�9}G&}�{Dxw�fP"B�����5�p��o��5��^��q-��������n4y[�<�	�����^����,:����]�=�EVHB�#��e��N��5%���� !,�zA����3��q'z��3�(H��������?W53��k�&y��G�H��;U���[����r�!'�l�������mTH���*���T7��Z����o�W���S�����g�&#R��SZ�<��?�df
��7����m{"�;��D��x�>dOw����W��+2�����.)�|�!�O�n�W��w����J�	rwI�����>��������7���k)9��Q���V�"����G����|A0jB����3�;BP������Q��F���#U;
pK����t��|�����W3p�%����O��}�aM�����R�3,i�h�ex�	qC������>j�a����-��7w�Hzr��Z���/]�Z�����r�>!mC�b���aE�t�$��=k���z�u�����O��`�~�}���3��v�����0��	J1��dpm7!z7��^��Te-��8p�X����)Z)^�l�"�BE����JZ	z��5��sM�g��-v(j������w���7i���������!W�.f ��}
OO2�N�A���j�\�6��V��R�����~JF��*�$Q?Is�����i�x]�>����H�(�Y�����)g.��_�v�%<4B�Ms ���P����� ������N�� ��R��H+h�>�i�
%}�!��}+n�kO8������7j�����I�4�C|��_G�,:
�N�*;��b������4�#����&���������cX�!'(��|T�H��|�=�)A�����q~	�=5�(j�7���PYZ��a������X��"�w�����W��R�5kT���lJ��O��;{�e��Bi���J
i����Bb=h�j"h��������^^\��H�V^���f��hX����
�B]����j���6�umFT�Mh�0�lFZp���V��$���i�	����"K���4����N��6��]�?���gf����h|3���&c��"��M�qS�4 z{���`��m�� ��0�����2��A������P�?�V���nJ���DS�Yo�N�ko�mf��~*x��� 4�� ���z�|z<��G������[�����V�b=/�����H���<P�KB���a��gMr��a��y7�JK��\����%V�C���F�G%��6��4��y��e��F"I ^�a�M���UmIB����Ud��([�ATk���[$	(OX���N����Cv�������k�6}�����/��'>j�+���@$S����JH�<�nu��j�G�y����A�9�r@���d���O��_��wf0���[���tRr-���S�=�}e;)�
Wcq�7j��gU�����sq���nL5TrW���e�d�Xp��
���z������m���i(��r��Q�a�F�,�(���FH�P'��� ��y(�5Rx?�
*eqBI�8D��<��H�C�����I��!>p��5�E���Pl��,t�K�b=�XdD�8�<_BB�Q&*2�i�J�8�0	T��r*���������������E��k����N�xD|Pm����1�jL�B=g�����q��t`�g���)d��2p'�s��4�����A<J>x
�d��1{��4_1�!��%������3:�,2��1y��W;�:>h�SH��:��1Y.cr���o��s|�7�:�>?O���d�����^�����`rN}��+Y���c��x���~ar ���7|��7���Yo��
z�]�:D'e��.L���G���x��p��:��G���B�x��;���M�����A��x{���]�l��w���K��'���I����[���~��8�w��9���qh}������k��7U1�&����l)r���[�EC$������8�F���Y5���y�L�z�L�#��>M5�=�f���YU�TB���~��C���z��,>G
g�R�URh���'�:+<�g��9�9�J�������q������������"��zD{?a7�`b���w�)(�
`�]�PH6��H��1���_���7;���[^w�������kq+�����-�|����z:�et���/��=��4pCw��'�{Y+&��\��Kq���6��J������\G�3�
�Z��y�I��C� [D7���9R�"	N�)��Z��~�vc�����@������Y��\~���v��a��n��	$P}l$8��f�;\!o�=�
�	t#nNE q����y�5�\�y���<�����95q�KPh���^��'}��m����Z&+x�no�`��?�DD�<�U��2�KT�E%1|�H�8j�I
xI(/������5*�j�D\'2��� ��<���6���v�*4�9H��N���z�Z����?��0�=����-'K�:Q8��w��"2;�Tn���7hy�aH���.���/�.����m��f�����)����+�V
��m���UZ�����k����I4�'U�g�U����Gc�\K�'[�m���	.�%�B4Rs4b��~C�*��i�h ����2���C\����9,��2"�|�7*2P�f�z��)��j�Oq�[���4�:������V�#�Cv�?�K��~�s������[v�����`�sV��{�����j�~,.��
�5�o$�*k�i3�	lH������t�����>h���
%�����W�]\h�z����OX�l(��W���Q���Qp������0�C����YO�9ex�a=�F���@h�U~�9p���V������0�C�v���r��mIK�U�t=�e��C�m���0���E�������� ��s�/������������������O���������v������Ka�5<�i�T��r�H�%rK��^��y����|����^����$���: @!/��P�@?n�Lx�vM��:�>,H
�1�s<^S���u6�c�-u�v:	���Tx- W��i\�bV��[Q%�M��lNu {������������
��A���@"].��0�������8l��T����Lg�=l0�.��riq�"'nK2��
rZ�M�W�FV�X
��9�RH�:lKp�����M��n�
tp�/.����I) Rp�,~��Co>O������F�\<������G��8pS^Ax�9a�������_�cVg��X�G,����
c��yEchv
�[������Z�>g�wf�g�6����m��H��a�-z���4����B4|�YX)g]���|:�A]E��HN-�Oz�*�&�7�A5r9������J� ^ ^�
��;N��1����Q������L@���K�w��.��E����
�p�k&
 ]S/�H�r�1�
m��"u
��s�m& m��L\8�1��l��kuo
��qan&s�9�p9]�
�������iaP���7Y����E"��
>��Z���;��nb����_�N�'�������]+����v��4
�	y�d�����r�>�A����v���\��:�#1�$MKMC�+�L�8^J���6a����04m	�R����$����D=�\\�2wa~�CU�j$Vk�
`�LgUK������������g�1��I��-;Y<����>����&�t��V�������'y�u�?��?6�"m����b�7D��������	��-:M��`9�B�AvtL�b�2�?�t��G#l?7�"��v��`��$}�x���N�x��r�>R�e��U�qM���-�J�C'�5i�[5%vZ
����9
�d��7lM�YMx�mU�vgk>U o�~bk�/k��^�V���bw��SR��gl� �p��1��a�����������E�����]�
�Bvgq>]���^��mW{ m�����$�a���f�%K�0���;U��N���I��
�V��ImB:
6\�!��T���&>.� g�@pC#���_��<��q�7q�5�Jx��L`�!7�Ww,��.9���,q:��G�i�rI�kK�RrJ�>������6��0�&��"�������`�.:#�q����s��;��mJi{k���.����(Qx�_���@.�2�.�D`e�E��X+����[�*���+#���=v�y�*�BY��p��2�(-����[f'���-J�f��O�
-JK����-��I���a�i	��;���7�D��B]4�E�@�lj@��������;��2�����(��M
dQn��FQt0�	���K�+y��FI�-�5�)��Ga�>�Ql
�����v�D�.��s4�
���g�����5�����	
��4��_��	|�6!�;�F��L_�'F,�7��9l����
��@��T���]tgG����7n9I�7Se�	����&�)�J����J����a�
G��X�����x9q�D�.���~c��X��t��|9q@G�0�����i9��4���r���i���f��Y_�d���w
������x9q�]��8��/'��)[Nh��G��
�q�H�T��p[@����)Q���-'��p����L4�BHx��p9��s8��tt
Cxx���r�i$���D��&@c��f��hU�`0XN���N����r��n��8�.^Nu����.'����-��Y�~j�_5�aA�$�b
���boE
���
���B��i�&Z{9�78��H���|��x:V�oP6_3G[
�=@��e8P��vh������}���O��<�~��������v()���(�H|����	�Hf�F���iZ���?j����F��v�1��;���Q.LN?Gn���v���v�0Q�;����.p^?G�f������s�`�$��'�s�n>E u�+�g�F�#��U�etm��(C��j�#����#O��J�����l�G�@�C����.���D`�d������|��S!�|@kC��!���?^Xc�{P���!C��x����e"*��%MVf���o����7��ev�F��4^����t�$���o������
����}�{��XQ��
2���w��1��:�Jo��3Z���bl] g��y�V��2z;���7���a�����W)�b��h��u��:�<8���t}:�V�P�d��u`�^S�z�s���/"�U
�NJ`�v���o ���+����ZAN�Y���#�K��p��T�W-���u�DG%�������A�U�X�0�A��Q�s���B�-C0R�`L�'F$�L���gR�f�yx�j����o����~Qo)����dW���������5������4z�&��`������+Y�������+�1��\�,�O�����e���_������������N>|����d��q����?���z�@�{�{U���]!H�UR����������s��_S�Q�����|�J>9}����{$J{��PM�H�]�J��L�tmY.V4���M�c��.��7_�5~���mk����� ��������F��(�n:�jAb�R#3K�����7B�5���Pp��*$+���!p��R����;��U����{����j��mw��������f��������Rl}�6��v�+1�r�
�je�EkO]%o��svd\�x?D)H��4�.�r&y���?����	�V?@+�*��\�Rr����'kl�4(�Q��Q%���U��5:�q��9�j����T��u�����
�h�@'��.	T�������6?@)����F�H\r��
���u'������tA������e�J�cU�*G���Y��m�Q�:?F1H��'����Q�m�I��U�a�J�������^��*�CA���v�������x^����YnoNn0�P��g�v��~�f��XI���+#�������8T�>��+��C����&��(w�A����Hn�J��Qd��'\��Nu��8}I��q��~��A��a�����c.�r�?��=_��:2_��hY�3�����-g��<���]
A�]���U}��9N_�)g���7����<X_N�h�uy��N��'/��/�h|�F��(�t��d���P	����pa;q�{�b
��Y�(���e��2�]�JHB��?�m�o�i�� �����}kO-w�D���p]��� �p�u�r�����S�8|���B�l
Br�<���,�np����j�:P�1�AzM.^P+��Tnk�*����3��.�~�b�S�7}]&`.�J}��R|��e��Q}����~I��:q�����z�d��q9cH���l���#U��z1���fF�:Q��sFH����t�T{���	g���Dir~@��?��Ur����'��D��	������8!�n�=����]Q��N����SR�b������u��>xt�?^����+�������FPz����N�Y��ivWFa��"�WG���2��a�{�w��u���8!�0����ZH8s��&���+w�w�x�WU�5������-\+�����������v��j�1�zl6T�Y������T�C���c[H0sJ��T�������:�f�����U������~?^^�GJ��WMn����-`����0�j��r�L�dS].H(�C�:oi��$RE/�g_SQ \�'��
�,��8<�`�@�e�5���`]
d����@�O���fI���F���A��EW3
������X�xx�D<����N�� �
��6G��wb��?��.�+������p�#�+;�

h��K�%�i{��O��[~hR���[^�/��x:�h��B'��=�����:~g� ��8�������K�����]�^>��3�xU3X��ox�W��s��g�{��RC�3���mz�����!!��������2�3l^�B�5�z*�;��BB������w>��5�
j�0�0�s8Y��O������x��k�$�~���IR84E�gs�g��=b^��H0��I�ab�H���i�����0�{�3�(��v��>%>i�?o�S>�����_�x���[�hO>h�a��H���P�x;�s(.eV��������f�[�
nt�k�1f����[������I�%�4�����j=(��t���]�5������TH� ?���|�{�=�������"�~Bj	���j����7f���G����X���/QDp?DU��)�]��[}t48�"��5�o�����_'����}>V�d����D�{��\Y����4x��yf��'&1�K��un�q��������W� H.
��!T��2I!�����a @-�����8�e�-w���������_�-?W�CT�U�.���9�MQ������5���E�U��~U��y�����4�C�2�����������	��~"����������?1aO
69�J� K���2CZb�#������PkGf�c�c
(,$$�8Nl	���H������B2V�F��~��/���7���������6R����P�����2Cb6�F���`xVW\��'��t�_x�64���U_� �������|���),�^��!R�)�������"���jQcae7I����x��I$�����0�-�%vi9L���H��j��P�V�Kt������<6���N���<�:�.�����\��P�-��}�`��o��Y�#>� �~�!"�}B) z��������L��a����R��1���6$����������J��3��m~3�����E��T����������-��������w����
k��s�H��]}��N��`��W�?��7?k��-6����
���n�z����������c�����o�eg��"�#�mk���_���N	�nu���c�F��+Z`!��O��0�$k�;�Q��c1|\�sc'�����p.�07�w[��l4<�f{JX���lZ@�\R������������~�n�;�f����un��$;��I�U�f�v#o65 y~�����$���W��^6�����������~���$�CZ�U����75��\��#6�Z�>��l��*����^M�����$5����A�Pw���y��F]h�v\��v�:��G���Q���U�B������L�pX����u��y�N]8�f���I�
k���8�2�D?V����:5��a�TwgT��
���;s��5m[�U�S�|���
{y����A�^c���/��z���\k�����������LY/�Z[k�qfzv�V�5���!���i8���<23����4
1�}pX���L�t�hF�d���F��&��f����Mt�h2�J]�5��5�}P7�.��X�g��@�g��7�������<�@�|�@
aD��y��"}a�����5�}�8�2�}Z
��vx������2Y7�]��7
���q�n������������f�.�����5�*��)��KfV��`4���2gU	�	M�d������IH����A��~�
�`3������aD2+L�9U2����8�A��'S�a�1f����*6w���YU�|�J>G�F��r���g�����rx�I>Rm�&e�LL����
Q���&Lg����������q64�	�����o���Kfyo�@�����3�%V�����&I�LtH��9$�t�'��=4������I�\�����Ha������1D�C!Q �!OK�<�'�&�p
1��x��W�"<[n#���Hap��(�x�U����]x�6[����<r'rN} ���Ww��9r���%��r��Z-��C0�u���/y��i��Tx- W���
=F��1��r5��qp��;�s��t
3p`������A����E��� e{����'������8|$
e�gQ�oC��we���������|g�hT����#]����o?�.������*�������������2zy��/��Q���\��o����/���<u:�?���M���U2~�X@�����JN��W"$��KZ�|��~������Q_�����U�p���OHN:b�++�C��a�>�h �#�mi�|��f�,���"��]���J�!�.��.����c��d%���$��cN�(s����b�c;�Jl���>���M����q�
"�@x��=�n9 ����I���x�/�%�����s5�����x/7��]
w�>�8^�H��������U}�.�V��\8mcX�U?�N�E��4��@u!zc��o�Y
��i��Md��iGc��x)�t{n�����@��qZ�LB�����#���q'oF] y����(��!�����I�
{��N���@��h�Y��G.��w?�oX��;�3*���O���Sq;������UM�Q�����*��/�(�<G/Y�������+�>,�������}P����W}T�w�s��{�\EJ9v��T��RV��?+vPj�0[m}��Tw�f�0'7i���M[�J�����lU�k�e���_%�������cVVa��_;�(�N��*A*�����g����0��������S:�N�R+����Y�C��(��S{���6������f���+�]������M��|�����+}����\�4%�U���&�i$�:���.ZS��C�M.���Wi*���Bk���@w ��4LS|���HL���'��f���#���?&������^g��0�IH �8��}u���mg�61�j�����L�@��71��1A�=XY��4���f�}����v��L�
ru`������%�eU�PD���Q�!!�ij���JK��6j=����XZ�Lc�4�����'
C*�A~QGr������n��"-A$��@�y��h��b$e^��F�>}�C�\"��b9�Ur;r�2���g�=���a����`~-���`��*���7�-��� �@�CZHHy+,���|.;�;,{�{�t�u'����ux���U7p~�a�P�����@!:1�YVH�FG�z���� !z5%�
"�_��,���|�����77��g�Jnp��x��C����*��*�����o��/����������H3~��6��7���@��������������ii�������N/�8C�hv�n�`9^���7W\��i��hGii��%`��%�0>t��5/�?77v��\�>z9�'&��W��i���g$�`���mk����+�Z]
7�^(~8�"�$��$��Q�$�����t�4�d���Q�.�i����n�����[���������1��S
�M�yh�����C�������� ����a��� �9;�������������U��U��0*l�X0aF|��d�eU�����"�q`���#�$�i;�S���x�������.F����c|�������O��[�.b�>�H�d��=���'Y�chV��l�yJ����\:N�^�jv#�Jz2^�X��d��Gv�H���I���R� �^��0)����'�J���^���%�����=5vWv/���@�^����]����������qS�7�P����	��� �������i�b�\#�W�����QQ�,G��Z�Yh!�p6���gq�i����A�w]
-?�Hq9F�kO����,lW��S����"	�'����W���)p�W��S��7�����p�;1��a3/�8�&�@�K�����	v��3��a�.�r8�&�Ch��"Z���W��i�	!2$:|~��������#���	If��&�m�s,�����8�����[�E�d�nB� ��v���3��N@m-"���g�S
�������
����n,�O�-Ep���&&�~	��0�u�
!3`]5Lu.eC�)4x#�J��P�.`�nU>���2n&Nw�V7�$�>	"a�Ns�V��'(r���Yv$�K]�I�b��������f �N���	�����{���/}+P�-�z�<��n���#�mO}D��~�������wu�[���������o��/���s��j��N��o���������o�~���I���;^���Q����C��_o�U��WQ��f���O�>�Z��_��W���>�'��W��������g����*^>�}9��[�}^����' {���s^�0
�y*oy>Q�l�
7g_f��"�F�x�F�f���}i��z�K}:�fj��W�+���q	��F�������e@�B:��e����
��V�����ht'k�_���bj��c�nQ�s��-7��H)��Z�l]��������n��i�r*2����
Y�h��T����K^~)n?�)�����N��(�i8Y�Yv�������A��v�����6h�~5k�B[�������D����K�d�����|LR�o�3����m+LNi}�
�5MG�9;d���L�B�e���l��Y�p��fN�������mE/S(�i[�5�t��pL��0��3~1���f}����nRh�]��u�CCMQ!��N�2Qv�eN_]�����J��;.UU�<XUm�����c�*�>o�(*[�ZA����������w�@��Fe`^W�v��6���x�����mP�)\��m2<k�N��{%�>�jS85����T7����&�ev��?�����Rc:Kq���BZ��p�6��Bge�B��sv3vZ�2���pu���c�o\5|�)����q|��:pI(��'�9���P��r
�sq�
}�������z��~K���p[V-
7P�<�M�'/�J�����*y+�RS�4}54��*T,L�uh��A����?u������U�B������e`��EQ4_���4K���J����!<`����55H��������Guv8��l��Q�q��8um>_������Y�i����F-��I\���x;�4}�i��~Ts�V}�P�q	� �X]��������"=�w�����t%`��9S�&3\TM&�Z89]_����)���vSVu�]FYM�k�
���/��	�S��m
�8}����&7����n�U"�@�k��4�63KL4��f�����
}����u�:�)��8O�w��-�p���v���i3�Y5�lU8�&Z��Yu�K��7�(������P��N���*�]-�
�������y?����3����H��]��l]�W#��=�l�*_i5j�H���d4�"�U�2<�*3�t�
W��Fxu��}�Y&[���Q�+)m��J���of%���G��x9g�m���H�(
�`)g�xZ��(
�`{#G3P-���A	�}'A����-	�`4F�>(�BUY ��5_IG��\9(�t��>S��P�������A	���>���)������}�h��vd�o�-$`B�c�����BQ���"������P��|�EY��(:�c����>R�^R""�'�0H���/
���Ge�e���������������m�p�$��5�+�����@:���{Ks�+%�������Z��Jg����B�$����0R4�Y�rp��g�.e��(U��XHg��}k�_�!�����h�%GR���:���=�b��Jz]�z+����_t��,������&��E*�&����"������n���������4��~���2��vp��������?�P_:t�SC��E���mt?�.���2�A>U����<���C��s3�L��x/��Y��+)�\��Q����T��V�z��l�L]���$d�rR.b[F01d����N��NP@�� S���2
����U��J�TR�9�['V=m)����R���2�����
V;*��FN,V����b^����+u��/�X���aU�H��b��I�)���:b�b����'�[i���"��JN$;����u����@2�@RQ��1��vN�����P�[��s�-�m�F��}�T��8a%�����Nx]--$:�!�+V��Z�%����V<��yUI����-���P�,�*R���:�l.���<��#~���2����,b�N���/5��<��g�%���p�W��2�Lt���P�y��J:o�Xi������Jki+�U�J��W5�p���0�k���U����V�*@i�]��JQJ�HR��2(i���%�Y�,v�����HQ����%�J�_P��N:�&
���M�6�����D���b8����`�E�k��V�V>v�,7�����W���8?�z��{� �dB�6,]����t�uH�[bG��ti�����D���0�����E�.�P��L�v��o������/6��.q{�G`�P���UHg8f����f��$��u���"n���`�����3�N!��f��#��5��y{��s�$��c&\1���lU�����d�e�xn��t����1m1���<\���Q�^#�Wa���:�k��I<�3�Nx�G�R�mL����dR�,����Kgh;��[�<`7Y�T:�hxxv���E;u�e�km�Dm��}�eq\�u��yT�3#����)+~��T��u@�Y��[��o��*��_MU�:e���y�v���[��m&�)������[����X�M��dg-_Z.�
�B���'��P��ae��I'�'�Lp<����#���P�ujs�)��a�+�2�Y����<L����� K���f���7����r3�B��+���-�����Q5��9���1�����z���~b����r�?��D�B�5�B�.�������?�svy�+\[��OQ�G����r�Z�<jQ����RK=^H,��e�������h�K���JTx7������������M�t�n�x��@�>�CH�b}��$�k��"���l�s~��}>����%�OQUkt�OY�?G�5�eeq��U�^����2�����hS/��	�O)a�z�p��&�Z��o7�������\TO����G�/�W������o��_����J\VR\=B���\U��OQ���l����C��/#:�kkG�I��
�`N!��V���4n3G����S:	��D&a��0A�1Y�I1��U�E���~�M����9��A����������du{����n���s�A�q���6\������r�����6�N[���������v��U#����rJw���� ���1�%;����8��L��(ON�k�O�������~�7�Y$�f�&��
��kT���
�)?_\��U�
��w"5)}�.�Yh��tE��	���S���t�ZTF8�?��H��9N��U	��r��d��i�b���T/Dm�H&�����
�l���0��W�%��,'1��~���d�a���(�h���c��h��X�D��`=QL���X_�����k���t����_M��Sv��e5�e3Lf���9�4|Q� ["����Z���B���
�,��r�G�/*$YA��_T(������3-�"R����P�����&1�~�A*Uq�*T�2��T��b��X��� ����Xk*�d�+e�|�@`^..���L4��%9Q�1���tF�@����*�"�Y	��y�����������,���@#[�	{)nQv��O��|�n�{�w�_����KT����M�8Fz�������X_�����~bm������+J��!e��rE��BvB��h��b3��k
�����0����Q|�B<��X�x[L��x<�����M1zF���;(���a���S\��54�B����5��9.6O14|�#q�������P�)8��`Q��l��@EI�(d5P�2�0�E-Lk2��6�LB_R�
���E�\+E��B.w���|���z��^�����Le����������2��	*��M��6xV�
/*���I������A����df7�zZZe�x�_Z�
-�2Ar7�pS�@���f$��
�
-�-�d_`h;�F�7�����V�bo����~dG�7�Jbl����[��H�
��nZ[�j]FF>�BH�\2R;W�]
�67����� C������/(5��d~R2mq+�[:	$Qt�(��Bg(\G1A������|��'|Ai?I�'�D�3S	"�')�S��&[�(�~��E
;����,��4k�&��}PIp��e)h��e�F��Y��h���R4gqo3kER���
���Skq(.�*��DMy�H�XOv���2���+�!�M���@�
dB�HF]��H_#��P_)���&��8��k���W���� +Q���
�Z(�RTAE@��	���K�����&Ay��h�`��O�0��P�*�o7u#~hN��}����f��y�>��^w#\s^��fn����cTt����mww�u�l�,L�Eo�#:�{�qs�<�����68��P�7����uE��Mv�x�
Onk��Xp�I�y'//��(����?"�D�����#�\	�K�����(n(����o��b��
�Z3,��1�liC�6T���D*N"�$/eKE����H"���T8g����5+���e����D{y�4!iT�}v8�X,�3��R���c����J�a0]s��V�,�T���.�R]�Y�\�i�~�N'����]$�T!
�=���
�������k�
����W� �����H�iU������(�E�5��Z������h�O�xtbN���H)$�-�)(R�Eg�T�����-�r�R*�j����Y��R����D��/�*^P�T��r��k}"eIEQ.����}�0�6����.�����>�e�Q�r(�O�K�S���P������6{5��
��l�0��a�C
.�6L��ad�O�0z���`��\������p��cx���`+����+���,�K����M.
v��ci�_�r�,��Yn����N>|���Ms����������g[u9�T�$�������`�l�n!���P���u6�����4v��"����$��M	 �����&�� U�5S��PTc�
��bU~��RU\�f�����\�Z�����/����^�����oJ�UuL���)#��������b�q	�������bR!�������^�U%�,
�j�%+�o�)��^�K����"����2W��MQJ
���T�f�c�vV_���IE���Q6��^��`�mR�x���,�9�M"v�}�56�*0~r^��R����Ta�Q����?	�
��R qD\��j�,�#�0W�w������?	�9��_���8��b���E��������.vG��&N�
~�g�
���Q�?����:{����]s��gmv!a-����TG��]5�Oo��FZ
�C>� RkS$����D�����g����H'��6�4�x��|\�D���A��h����v"�Pk,��)�/k.����&�����{�6�F\O�CA��������o�����A";���
�j�}|IW�X=:�F8�Px��}��7�o�b�%x��D����|x��*k����7�Z����K</��A����8Y�M���Y�������c����~�Z��=��WF��:a
�'�Ma�n���5�A:)������NX������9d}u�[}��n8d}	kx�nR�-ci�	��Aa�RJ3���~e8��5�
&��1��ja
g�)a����W���ZX��`R�%���n`8L
s���p6�6am.������6�d
(��`*�/x{���A�N@���xk~�F�����[��a�;�foA�����Am*��=s��p���4W����Jp��`Bp�A �N%���0!���0-8�0��U
��K%�^7\4����Qf�c>�{R.��d��������W;��%�����B+J����x��J��-����=��.�6�-k�����P�<g�~�p�	��������+���/�����pU��?N���H��g����+M}�vIW+<� ����>�`�,���EWJY�[�Z��`�_U�i:]r}��g]a$N}��>[oi<�J�P�)��g�+��;����,�VKf������d��j�b��r1��d��*���j�"W��oG�;��%���z����j����YD�3���m����P0��{F.������J�|�~P��v3�3)�1������������j�;��Y�D�+mf�
��;f�0�J�����Y97kJA
�i�2K��G-�3�PTfu1����q��'�1����W
j3���2k���W_���jA���p����(s��p�+��jA� L�q��Q(*�s�X�y��a����2x$M�g�H����p�H�H�����Eu�Q�M��1��+�t�Z�NjQ�FT&��tb���Un�da�{������
IM�jQlFTf3��Eu�
Q�5�t;��+��mv�
�ZT����d���n	4��D��{z?��������^n����eE�_����/���-z;�������2���m�\�l#�������;�b|�W�6`n`=�O�}���@�`�m����R�Ra})���T���Z�N�r���{9�V�*�E�j��[����LuFt��H���*h�_� �J%������9�l���!1������6�.��VLM@��.����tYu���������^�����SPa�f`e���f��������������!���s^���[�.���(�����RY)�,
����G��t2>��YB��42���~��@#�!4I�*����������������zl������C=q=6�%H��\���d�����������>��Vc�6y�����eV��c��n����������K��%��_�2{:��5{��X����|�n��}��}������u�T��E�pU����Sv�S�w;�:W��f_h�n����U����8�5���m5����`�c����L�j;4��a��+e���Q���*g��?���c|�����^��TMZy��*�A��:���V�_~��;��T�����p�?
�\{���A3���I�������J�9m5l:�BGk
�����
�=�����������Zo������8F�S���&{�e���dwC�4jH�6k� b�_rQI&~�eR�%N���J2��)�b�D,��.*����L����	U��'|YeR��Q8_��U�A����p�<�2)���y������
���n��6����Q���|�J��H��$	�B��.���	J�p��O�)��-�J���}��3�~I��l4e���}�-Y��������~���,h�����4�2	*���r��^�����L���%0��&K�������T%2�S�KIs*�yA�V�����.V0/�0�>`��D��WF0�~g�l��Dy���<�F�O5�m�������6]�������#h��t�~.�F
�����d>��u��B�k�
�Jg�JsU���:d�fSIU�s~(���d%d.������:��E���H����h`2Ye�*��Od�I������L�2��)[S�\�0���J�3����`^���K�)�����H8a�d]�yD
*�y�-A�v�Lz���-a��:��x-��.���!�[�y������9cWYP;4��
C���%�5�K�M��E�{@4�1�r�*��2�<9Ij����H�g��LW���t*�$5��d�[�M2.��6����3�
�*s���8z���3�P�k%�l���{���l��%|����|j*nX�'���(D���<��8Tke�W�X���2i
c����@l�F���-���M���MM�w�<K�<|a�'��/��T�s��1��J�k��m�X%�V"�4+QJ�Qg�+_�c�<�t��(�m�.eI��VR� 5/(��q�?�d2C�"�1�f:j�n�C������*��~^������w$eI&����`�������+����^�j����������7Z�����Km��������0~~~�"�o��xF�BU	�=�tm6|LE@><�����������[C.�(	�	h�Gg�����G�4����w#�m��[W����������}���|�����;S��-U��<
*�r�*U���EI��>��=6��q��l��68�Q��:�)+�\�<���g���`�W4�����u���?���9�@FREsCNi:UH;}�&aE���!��x-�J�a��P[�p�b���C��<zcEd��c7�c�Tb����
�!>�ZO���|{�H�.��!P&B��`�����@<�#@�i������(^RA���V��P89��<9]����Nw��:q"F�T#4������x�oX'j�����MS�2x��PU��P7"��.S��* �����4�*;QU���p+�J����p�
�ac���-�n
��PU����0I%�����
�a�U��������N�%�����)L,��i��^��F��V���
�!VP#����4�O������"$��;���R��&�C��.���E����}v8��<9�.f��+����|�;����x^�de��J�����=g���y���1�Ri���������+*����EVP
��+���dG7��%�0��
��6'K�v+������O�������\�v%�(�/���v<L�~v��+������t�Dy4"��=��&d\�%��xtM�<�+���=�_|��
�����v��v���{�+�������|���_���e����	��}?W|�N�����L�c�\1�8��^}>��K�nG<m�=�e�S�j���������������z.��\m�}}�RA��'aI�B��/��~1����|�`���oJ�C0����4�"
ZU�2T~)�����+�8����(
���q+z?�O�(���l+���V^ 1��DW�����k7\����r���V���u��ix��$��X�e�?y�w�|)����C}�����ctU��!A _P,�����!��/)e�EQ<�!EQR,
~Q�,��B(�����Cf9��&������e�U�g�@V-��b��U!�a&V�xK��r
s�j�#s�Q�XzN�A��j����p��~�HOY�d�5K��r�2���,
�J@��H�g���*-�0# ����S+�F1���=+t���]f�6�:�i<$�l�%
��xR� 9�y����1i�$�6W��B��H�i��H��Z~`n�,w|��,7ej*$�
 Y�1�8Y��L�\����	�]�����M�m��7�������3�6A��e��bt?h�|����b�n{��=����<n7�6�f-+2���,���%eq��T���i�,�+���V�t<�N:����)S�X��R��z�_��d^����1S���8��K�L?����h(/`o�"������j�������
��R�x)�z�6�F��h_��p[��n�3={�����V����v=�Q��{	;�}������K�JD|G�����l����JZ?X�R��Q}�nM�V��P����I4����b������}Ur|�<MAm6;����	j�_��9h��YQ�dV	G�k+C�|�DX�>���p��SF���d���f�����W5�L��T�L"���$��T�
t3��;M�D:������pN���-��im\h�����������{uB�/m!�����������m�������4�����2�.z�����v�/���w=Y��<i�_���Z�����ea�����q�P{����<u�@�
"��EJ��I�������%���|��hfV
�^n+e^2�r�}��>��S����`M��(Rb�F��h*�TT�����Eu�����)U���5������uI����1����H�@�N�Q��i��b����9}tU>� 
1Z��J��Rt,	C���RA�����MN�����+����nY�
VES�)3�B�N���6��2��T\�����y����&�4��DZ��>��B])��V�q�9��0+��R���h��dh��y}��l��4����fN��N�DCq�H4�&��*Q��#�xK��K�Y*����XxR"���9>)�v������X���v�_���oc���AZU�z��:���-��E���u8����uT��b*Z�[6)��MU^�[%"#���s���0���M]�������
���N[��`Y������L�
'��JQ[W�(1ez��E�Q���PQ�Q�l�5��[tc��KF�>g�M�-��v	��\�����U�
���Ipy��Ptp&�
O���2u�a7P���\P��}�Z�$NN�`K*�`R�	&����T0���L2�K����L��6bn�I��I��(mB����9����N�������'/��,������
����(�N��V����P�6�%����m,i�2nH����^���j����\H�v����6��>�� �$����,*���n���S���6}oaf������_Y��/,���1#������������&�/Qf�w�G~��?�o��X+t�DW�����������C�#�p�Y0�<�1�����N�W��o�����(F�"�����������)�r����w���x��W�����b:��W�N�=$�z���/�������-i�\�
kf!x���CR�@:d���:���TT��~��{�����X��+��0o������E���/�!�V"�r�Y`#������Z��������
nq��}/�S�
�]O�����������*U{���[����P����Fm�6#������Q�.�r,���.7s��S)�Us�?h�����q0��`Zi7�F��Kq��4����������j�*��z��S���"u��,���b�^/��S�h�������f��QV�[^��.��m����>���������J+����~�J��6�L+V�#*F6�@�v��������{d|�
��7��<}U�!�� mk�m��7���9����J$�����w����������Z��_�[�d��4����V�[���Ps�}����IZ��h����4{U6X����|0D}�g��_��#	�A�X����2q�����b6�Z3��{9�N���j&kF#3�L�����d���fF��n��j�u��cm�T�_�������T�f�K�K���km�v�_u�d���8�_.���@8�T�w����59����R����m���s�9����8�����Y��������8��#��m�]Q���Ul��Zn��u=e�)DjK@�GS�# T����A�\hf~}����������&����P�.����}��I�LEq�~�sd����LU�p).��F��`x���4�1A��zk�]B������q�\�;O�z�T?[�s��,�i�R�!'������.�������$�G�{���^��*�&��
��b�U�G�0�v������� SA��o8��e�#�hx%�.�O��*�j_(�����_���
��~�:��]����38G�~9>W�h���]���!��4w~1U;�t�3����?y��?�o��������9����m��b����H�$���t�-�������B����c�-z��U����Uf�K{ym��4���UU^/#����'�����
'��I��N]�H��=\O��sqt����e��	������& �F���~~�MF-�)k%U���P$������u�F-TV��Fz",��Su��5��� ��������E��+�C��b&&b
"SUbJ�R��PP��h������� ������X�S�|���<� ��_"���P����h^.�f�+�l��V��q��zk�[�~��(�>��2�>>2����MD��Jb��B���!pT+���^8^���V�4�h�DU1�t�L"'����.�9��qY5���|l'J��>��K��d�����J�]���5����� �j
��cq���������V�ZZ����S�%��.V����W���<�EC�r�f�6JN��0G�H�
+�Q�
����*DBoY������6��&:����=�o����H��0-�R�>�L���Iq"�tz���z~?�_N����qB��""�[MVq..��]��g������D���gW�tUI�����F�C��uJ�����n�
$]����J����x��41*u�#9���$�*	5�U-	>��Q�X�5�B|:�`{EUUTx]6]�K�i�e�Wf�5N��2|v�>�(��x������S�4����<s�J��,-�B@���*��+��7�g�W	��>X>��B�������*��"�4��y�~�+��L�V~��Ie��rH r�>�C7�<���&{��U��!1u�Q�+��g������w��������=ge��������R����?�'*u����oQ�5?���M�����o�B�4����T��������bxC��4O���r;0f����X�~l�;�
DKX��,�f�S�����@�%+��*Z���$0F��9*R��}^$&k`��V��f�Dn��j��n����k�%9Y�J4�W�(QsMW��h���xQ���T�����xH�
��vMW��h@8��:���U��B�eEu �'�i�����h����J��,?=C�\S���y��l�j�9����;"��cY)���R'$�_��n�HV
i���
��B�A�p��2&B�y��Bn��B&TH?H�2�B��Z�O��TY����l�������B���&)�23��kR:��vV�D�S:�]��Ua$��p�nT}�+cZ]��l�{���,W&����;��GM��������;}Pl<w(���J��V��\�����Kq���M7��2�����,
w���/���R	%� ��r*�U�5�W��@����-Su�r~;����I�����>�����$?�`R��%�+m����v�
�>��Z����|]�-U@WA�hh�+�����'O��D��z�\���B���A��_%��[��u8P�5�;|��[A��x~?�����c�$�h�������EM���^��=>)�^a 6]����&���^W�!u�p�]���C�:
0$��{����\]C~�m���S�0�TF��$I�0EU<H���c��V���N[���50��������(�?���[m 
����:������#�����6���������*j�$jm�fU�t�&������6����`U}@M`�
��u*�/���S#�U�����DUz\����F��&����X"^�OS�D�g����rHee������u�6j��y��g����BC]Y���5*5n
5���L0�X���U���/9%�� TMx�/jnV��|�d�i���n�1�n���q��2����#�"���#�)EfU]�z7a���D�Lp�����.�������:����>@
��y�3D����tb����M!��������
���.�aU�(U� �pR�FG���qz��.T�������:u�M�X�GY����)S��O��$����D��B!���b^���g���d��=���?q�UK���;;�K����Z�e��F8��]���U],��sN�������$�X;a�Ow���	 $~�0�deu���&��$��?������u�J�E��9��k��qFu����`����w[:�og�IO�`��^�~��^�bv�*���9��v��,H�N'(��JT���l�������K
����Oe��%���������|:�&Ek���
�u�K@��WY�fH�{���"��i+����{�/������^�G���{��|���B�_g� W��%!����*���mc.A�j��no)c�f�"�9Z���J[�<*Z����! �&E_i�I"��voQPL;N�9�3{x���V��m�������J�!�-P�5�exO�o�����^@���Vc�&��S�[8UU����q�����?Ic��P|<�B/%����V�J�7l�?�I|
\��IA!��,�}�`���0���D�o����~C b���7x.�~#$�����wnh�R�Q/��t�7�~�B5�������2i�f�zU+��{���K�~�"t�����ml��]N2�^��
������C-������:��-F�(�X���;�q����P9�z^�g-O�
>>qr���(��,������j����f�~���>@�[=�V�p� N��5Ve��N�*cx��`U6
�ZB��������]<ta��v���P����A�-�����06�B/a���d-S�D��D����Z�KQ���@E���5waE�1$����=���d��*�LY�!��;��H��g���Y�\Hq>
�T@�"���f���1�����������]�zk�G�.��
(�l�~��Y��c�"�I���v�]�R����hPd>	l`XV���3A���� i����,P _i��g��Q��L�9��<���uH����C:V5vQr�r���d���-��
�:otQ���b��f�PL�����������������CW�f���xb��d�jw3na��UT��u*b7�������q�^7������T6��6���/�w��_�8W9����4�su��a�����9�����=!�\�t2�4�������u�����{�m�
�����on��������O4y��RQ��l��W	���pp��~��`�ln2!��W�OK����Y�+u�����Q�$�>?�n�4��'�W�4��,*G%��9�~,!��������?��"����z���p�v.+HqlF�,�|��
d��
������9eO��X��v�3���%�����^���� ]snV�f�������5���T����Am��*1w�G��������5���}���S3��-5������j,z�%?=-���k�%����a�Q����4����G�P�P�����L,�����|����f��������9�Y����:�o�B��T�T���X��&�Q����Q������%*%�������e��'G3��LBrdNt�5\3�Hp��Q9�"�]��0Z=�]��Jv�3�Qp��/m���uv���?�5c��T���p��@xe�S��,��6��(��o���i�5�e�\�"�/������X+W�-z��F�ASz��2������Af����������,d�P�V���.��]�x�������l�P�<���pN>/*��G��E�\����.�P-T�t��@�Z�����xF��	`�n?!s9�����t�>)��BGu:�C�bOj��1�����YU}��|K�_=���%q|E�����CO��C��r�����iIu��W���w��c���������^z�v�_T�#.L�M���l�y�b
vC�Ltb*�]NY���2�04O<��Xv2Z(���I�\��2���}��������"�k���=�t�����O2O|Zn:9��;J6<�K;�;�<S.�s�	!���
g�9�:����w����X�[ x���O�!!|��t0w�sD1F��ju�@�uPFe������C�sQ�9*�q~���A���223�%�����edj8���2�5�QFz�>�V��[�����h�,����[{O�C��5����9C���\o����{��W�����Kn������w��t���c%���Ei�4��zh�+el�E�����F�vQN�����h�el�E���g�Fi�:��^���������<�����z\�,�����2��J�%7���/}.j�6���%��L�#^�9p	<�?p=�"=��+_qDC��i�Z ��(�G�lu9
�1�c���D�&������=�+��2h���.�z��~���!�����Pi�^�sM�����`q�.�|����sdr���D;N��9/�����N�+~4�LA'�p�E�������|[_u{���o���9~G��ED��#�d����ha|��i�h$�S
u�:����s%��Yv������b�$C�M������x��m$� B���l7����#�9j��Y[�q��0"
����z�;�4E�!�X�����0�&��X�=�%C��)HWg������z�s���d(�32�����1U��=�:`����Wg5���t�����:`Y�����%�Ne��������0A��������d������M��f��y'������>xz0�Bu$��Jw���xpnH;86���I�����pw86{jL�U���
=26���NH8-F�o��|{����9	/�-�}0��x�����EI��+j
�����!�n[|����v�9a����<s��[�\���/�'W'C)c��^����C�^��c�k/������W(�X?��:��� j����ES�:��� j�:y��X���:��� j����ESZH���A�CQ��`g�%p���1����[[&R�:�|J�e��<���P���[Jr�nJ�7g�Le��<;�t����Ty�QS���e`1d��y�J�K|����vo��Y�4�+��|��A/ye�(��,����c�X����eP��id���y�g���N#���@E�PE���AZ`/�7�U_�Lm�n4[��������N��^�����]+:�X%/������R}|J�*���X�����kq�_*S�r��?�k��;��;r�69o�O��A#[W)���X�h!�fH�C������b�I��he��������>D#�[�������H6�sY����~�*��J��M�������?���y�e���y�+�o����������������m%`�����h�D_�G5���!S|����~�n.:�w�PqM�q'��=��/�g�?<�m��1|���1�g<[���YZG�85�������qv9��
�=R���ul�*�5���@�%W�����`���A4m��*y���2K����.��P�3VweO�~�ov|�O���@
�+���9�<�cb��v�_o���
Q����
�	��E���ZZ�IpU����#L��0���~�(O�r������m����v=�>.�o�nhfl���m���&xT
��^������g�}&�"����?�#��]��mK���WA��
yB���7+���V&�&[!d5{��X5_
���PR��[�:�|�HM/���2���0�MD,�z
ZK�3O���#�
��f!��]}$z��(��$-�DI��g�j:���e�z@��R������C�����Br\������@�K�e��c��G�
��lT�	OJD��b�M�I�H��1�.���B����	��zL������7���&V������W�?�T��UiMR�cZ���9��
M���F�w�����XT��r��af�����*`�-������������h�����|6�L�iU�O>od��Y��F��$u)f��4T��(?������?~��/�n��VT���rSu���_^c�V7A[U�0E�u����.>��u
�������C�+?��o�/��Y��R�g�1���A$���k��.��pOX�tBt�X�����������N��Iz�_���A�3�+�}��Ux=O�0��%�7��}S)$f�����������S3N�C�R�,��m�e.Jp����� B�����y�>���c��a�B�.������,j�b9H��#9��k+��)#��/� #���-vV�l���$�b��T��������Czy�N��;��w�'�IW�[\�l��(��<���;����H��e
���,O�^�:CPz�>l�a�+�F�@�<kF��'��^�N.���}_�!z���0X�:����%������/�qqn`����S�����|��
�����B���������������r&Bu"�~�{��*7�r����,(�R��PF�_LV|l�;TI�>+�������Y��n'O��F1?:������`������5R�������;*��
���9E]�����z�#G��� ���������p(�Y�Z��[UiK���s,��c{�s>U�����O��VD�+r����>s"$�+�(�Gc�%��N���h��|4����a3K�;�J:XV�#�����v�!�0m�����p!�a3���h��|��
�fV��[:&��u4��N��
�Y��-m��-x�%��A���+��KL7��Y9������D�2�|�Nf�Y/U���@��~e��]p�
�^((����b(,L{����h��a0\{Y�s���l�.���q��;�jy����	,�2 ��r*�P):�-���N�T�1��Ou���6�wa���b,����I�F����\1�]e�H��+b���E%�P[Kg��//����>�;,���2;�.��R!����r���s�2�6QF��2��Z��d��N�/��bkm�E�S=yh18k��,�����	��]�`b#�}ke�VZ=oM�K���Y���Vfg��xD�f*^���j�E���d�v�0z�P����;�����^u�J���Vt�1��D���vOQG�ql�i�(ls[T�[t�2
��]D%8 �6U�.m������f�v��X������@����4T5��>yvH�A�zzO��%����os$��M!��z'�]�\��X��0�L���&J�����9��6,��\E���WB���A�u��Y|5W
����K�'3��H�� I��N�K\��j}=�f��G����D��u�=u��GC.��w��bP�.R�0���66�V:��H�����*I�*�����9�P�BJ����7^P�����I�������H}�@'N>6Q�<L������_:-��w1T[h�Fu������^�U.���X�^�2��3�5+������������n�R���z�H{#(o������t=9�����J�R�(b��G �d�5���BT�`�����i~Q�>�$���V�7�B�a��a�l�^���E
�g�����G6�� ����C��������;����iv�i���;Wm��tyD�h�U����b)�X}��O����5�w�����1<`Em~=�
T�L��+�!�wo%9����zjg�tP,��~-����8���np�D��mL��?�z�H��K�b���)
��)e��o��^��\`�w����>y5�?>}�g�v�V����#����U�=�U���s8����b��7#�.��_��
^��/yd����S�w����Yf�[���	.���f�M<���v��`9��$3Orn���9��Q�l{3��n���1�D
~�m��d�M��"��r����s��gX�|�v���]���l5�"%��2�0R���7`�$*&����n��g��� Z�ek�$�+	����_RyJ +�����U�1�x�S��	i��A��G]�c����J��
=��v.�^�yxSM ��x�Ol�C+���~��$����x/DGUR�p��Q��>�1�2�=&��9-����J�O���������K�&N�j�G)>dA�6�5:�0q\DD�����2���c��-��t��UR�.'}IY*�M���[�L]� ��x�� �U�Y#
������d9 ��8����]��pxd&�������tUnA2B�;I7����G��1�*7�!��$��h��kq�.u��	q�*�"�<��vd!����n�|�����Z�p9cXX(m���9'�g���&!�e�1��
!!dJ������JT2��)���$��K�A��DOt2r��1���Y�i.fOM�C���~)j����[�������z������T}�$Cc��%��Q����Pz��R,4�M��P|���b>]��w�����Y��$t��b9vV����e���5S�������KQ����A��,Q�+mi�5B��3]#������"��t�$c��!���d/���7}6����)�`���Kx>��~�@$���+��.���sW��u���Kx��������=�X�G�+2�F�h���=�h�������q7yz��������>��z?�iu���G�:�E;�nyZ����{��h��+�xpM������^���o���\���%���#v"��INBX���/��Fl ��/�7`^Wd^��~H���LKo�}Z�{�K�_ ',"�����)Q���6x����-�sd�lj��Qm�����g �-}�����@��9��m��]���"��&��;�uk!����0�SE:!��B!��������ZI��E����]b����Dw�H������3�n8�_C��k��:p����j�UA`�"��{��n��<��A���>E�(>@���4&�h9���C�.x�9r�#H=����g�p�����>��-���Z��P�h�D���/��e�>������~�3�sr������*��U��k_I�A�c'��-Nbbj��w���4(���!�{���k�O�*�*!����[��iz�)}��Z-�o����R�x=kn�z�b��S{p�&�c�'B������#c��������*�4�!�o�e�x����	B�@VJ�����:c	8��W��+�=�=�j~M98w�H�K������z�cD:%c�=����+��~��k��Pv�-��9'h0��	���)�[�9\�1>DHmg���.���5+��A������R����	k	:��,�7QOB7��u|�3��?�~�R��a����O����1a��z,"�F��Q��(��#��-)����)pQ1�v$ls�4��6���
a�F���<�[D���|��YcV:k���������RN�U��u�]s���%�I�����
/��f���4�7� �0He�R�W�I'���G��V��X��w�n��!��*1yv�X��m.��K��:5�z�����F&����
����I�$���iU�����q	�:@6j����
D����Zv��T!k�S����^�K��xy�P"s������LN�]+����![:$��d1,�Kqpw���k�����������������~r>7��������z�$B�S�H�OJ.����"����'��S�m~~�\��hH������pk��?
��R�0}���CW���
II1���IY��Yy�.��x;�M�_
c%��a<6�@��J�����&e��
nQ. r��i�C����(:�
��,��t:F6��.����_�)������D�6 ���D���?F6 ��
���i@�����|&j@'o���grAH8J�����o�z���s���9;hi��#BX�E��Dx$Z���j��?�����;�O���Q���**uU��c��X�buepB��� �N�,�q����A>�!=�H-�K���G�
@��F#�
����hV6�� �0��FC�g��!
���X�kZ�����+o�z/��M�B��o�����6���dAH��
T�v��7�_+��2�i���YL���i"�u+;;d�0F�WY)�XR�����u�K����9��*;Y�7�C���������5���\��H�\�.�Bx���������I�Ns��a{�b	�m�S.�+����UiX\%��5~�����~��>�yJ���C���x�eZ�dU"��N�_K�_�o���J����V�Y�,��:����f�C}���O��bP;��������AV<�����2?|��HA!���Y������	����G�v�%��@��'D3�����0Xx��Ub��3- ���%��q�h��.���E����V������M�/%z>he�b����C$zV����DC�s?��g�,����<�-����E�pQ��*�x�������P��P�\T�l���(Be�Z;�7�M�}�@a�M1Y��X�:�j��v9���A+��<p�@�G%A6�����H��}�K�htc��!9V��1�r��������^��I�F��L2����h���cZ������(D$�/���f,��G���zB��?UI�����k��N�LJ��}e���v�O�!�y��4�`%��p1��$
d�ATQ18(�@Q���R?�����fa8��8|+�9{
����Q����1+�q	#��d�!�K9U��q�`�o"l;�m�����������0
n���o3C�=fg<W ) ���>
�c����a#FTb%���J!���V��52�R+:�����,q�tBX�&*��kd��Vl��J���'���9Q���z���^f���l}c#R]|�z��d�����$�p����4�����U�S T�o����J>�<Z@.�feu)�S~�pb��!����-�G��		a��)���rD6<�4|Bp�d��b�c�	�A�2�8����v�����G] ��U�-����qy0�|�fO�5:{�H�$��_���n���Xf�Ik���?�����5U�������2A���u(o��J�v;��>\�)����
�S�n����Z��f~���|�Em�tP&���p#��������pt����n��\���9i����i`��������9B�8������o������^�l|��*���
Az�A5��h��Y��2��dg|��0F���-@j�����V`�G��e#�MLi���_`-����"��&��A
��'�:��V���5��1FNi}W.�i�9=�a\;�&�4�������8�#��>�[����a���0U��/<p)W�g���	n��#"6 _ik�������������G��_�F�
��{7���	|[G�� ��<%���m��w�O�gm�I�.4���b[8X���!6�\0xY��������( �xsWGMA��>��QFW�L�����`�r�X����1�]���H@�6��5�������������-��m��?��Eq�Ayn�E�s���sE�s�@q��\H�'��1��J��YI�NV��ul�]��!����d����p�)��9
�<H
B�M]���{D1y��0:Vh�8:nh�I�"de'~����1��1O8����F@NPV���3F�wV3�v��������k���Oy*��g�����*he�s�/��UdA�F����{��mD�6���8m���9n
���#���|�U����>���	&i��d#��9z^3�������������������]� ���w�r�v��7R���L���Gr�:E@�.��f��yML�EI3!q-!]^|c�X���f����P�vr�$f�bo�^���%�_=(�3�\8�>>��.���8hU7T�kZ�A�����o���eVU���������Jc��ue�,eM�p9V��6m.
p��GNEV�+r)%��0V��G����6�G5��&!y�xh5���& 
rY���\Vc�	gfT����������~�m�t�e�����*���R�_�
8yR��z�M�f|o�
`(�4u��x�E����e�|<�UE����8�6��CJ~K�)�����EBR�T�t�B�[&���!�K��hi8�$7S
[RMR��]S6)��W��1;%U���j0�d��`-'b�4
�mp^����Z�riUEV�su�����./4OU��6��1�x>���w�;�+#����\�����Y]}�>����a1����?7�h/���>�?���g������P�����>�*~x�/�����+�h��_�e&��o����f���
M�����$& 	��tg�f��X��^7��S�� ���!�@�&����
DY���U
G:LS���C���$+�/��:�q���Vi�tf�.8����_�Ljv�}��e�y���u�����Jl�Ot���py��s���A���Lg7��_q7���l�Nj#���	b���w�:�/2.��������M������-m|1�F|q�F4���/�>w_d��om��F�1o4>���oB8����Y7��X�����.^�1^�b���'�����SS����7Q������Se09��J� z|��[;��%���S@��K���������n�H�c��������@�lsR%JF�Z�^�<�1��(�,Q2��[I��F]���&zs��e	����J����y�m"&7'8AJZph$�������O"!)k
�2�h�w~����n ��F��c�
�s86!Fm����p���|Gb�a��k[������!u�]:=��	��������l����v��N�,J	Ng��� �����8��0
�,H��1��X�������V$����,NH7��e�t�Ck�����V�6��m�h"vV9{|�p[���A�
���F|�p���VA4
;k���6Z���{\cp8!��u��<�^��p�@��@�)Hw�^+y��(�6����X���\���D�,N�AL}�����4Z���6����x���"�sQ�&q��������SP�?����U��7J�u��9�����k�_!
�U��fE?�����S��=��4�o�Y�%��[�����zNev=�Gyx���W<���]�_q����`��������b�j��?}��'e��}��0wa<*������.����)�k~N����^�[��Jr>6M��om�C�w	���%������l1l��sR��a)n�l�&�a��n	\���"Lf�E8��/�Z������������������Dt"���z�h~��_A'�[���r��r��IBb���	,���k��t�����\D��(HL-�0���U����8���SuN��Dw}`��@�.1�O
���<a�Q����1�G`���FZ�W2��C������der����Wr���f/�F���NF�]{��������� �f@mk~����D�i��gH�������������� ��T���}�*z��1?��[���,�S�/m�k�U�_��oO���)���|>'�����/��c���}}���������ZTyw���]��J[|r������V�����3&W?Ww#`gE���YyL+������5�P�����v����>�E�������N��/Y�������4��y}�3(�z�q0�Y�L#��5=��N�W�����p<���D%�i'���@s��;����*�.W�2�@~�W���)=��R�jCV�<��z�k8��C8���u39l"8�Z�I�I���$�3-��T�@,��?v;c�C3�g	:�CS���<�������q�5�&i"�Ydz���R������������c������8QQDm�����)x8�]$���J��6H���{��w��x�|3��6����� ���qR������1�������{�kz����;��y;_�O��2?�iz�E�����19�
�M�����p)d����uH2 �B��U��EV_��8������so��w��G��"8`r�������<�?��@��+���]!.��G4��-f;�U��	�L��9)��<�Q�-���}q>5b����K��U%������R���r��=}���u�H��&V�jB��U������'��T�����(���+X�=��ZX*-�1�
�z�5�\ZG
�r��
{}F]%u���g����.����>��g�����5 ���o?yw;�!:�.���KD��<��`��q>eQ������BaL=g������	T�jj5���k2�_gW��u��z��vh||m%��cv���d���4^n��a�%��iV�
�S�����I���E(���K��qE,�Z����9�4c����[���o_ab642����L�T�����N};V;iY�o�m(�i^��}���P9��ib��"�8�����]��.��\�!��>	)vn�*��c�b 8�2E*{<T�7Kef��Le��R��r���^��������v�3d�\3��S
�i��O�p�+>[�
O���&�P+�T�sV����y��
;�
�u��F��L��s.QC:����Bk*�U�X0����!y�[c�+	����hno����~)E-0\�c.|�S�����K�c�����W���'������ou�&
q�KlM@���=��^Uq+�V���1T��\L�fM�FV�)�:��}�G�`��u�G������E'n
*�.ma8\=B���p�k��T��*fg5�b�2*D|U(K����"J��P�@T�������J����dw�b�.
�o�J��?��+��C�^���ev�	�������@�~'���}p��h9�j�^��nQ/���s;���������~4J
�FI�����G&!�s��K[�F�8T?�i]�_�()�2;F���������^�	��(�`	
7���-&��-.�����Uu����<��z�d.P��7��������$�cz���'�o���r���
� �<R%��\�>.�cCIpY�vl�8�n��z�g��zT��S*��D�
��g=&�����&�\�O��,OR|�0�UY������5�)����Z~9e�������P�L��x���\����(�	�:Qk.��c�����g�?/��a��0����\����?eor�Y�����Ug�J�	���RyU[��*r��LE2Z.��8QV������l���WT��r����*���&���n.�2a���=\9sDS�7`��|F������� Q�"����2�+������.��\����e��E�;�^�>R}�%���=w9|�HfP�bf%�!�:4�Ii�{"���0N���i.�;=�������&u0r�M��+2Lqae��OB�<D5�k[��ces*��+�n�Zf
���u��hr�����5�����
$U/�Z��{���I`1X���Lo��R�6V�������<�U!L����������wp�xE������n����|��X�)��D���1���(����<�w&hg�'(�*|��W����������]�PwLtR�*Q��r�Q��7���&T�F�<I�g��5�-����$rRS-b��A��V��Y�H�fj[E����U�=t?�������������-���O����[�3s�o�u;����L����^��a�va��yN[����&����������������~�C�/?����;���P�:�����8�)
���jS^����QW~N�j!��]�6�����3��hK���=�u��
u�����������6jq�q*��+�"=qI����!��,��}��2��.���,}����\jj�)i��%�;���r�S
�CV���������}O��)|�}�w�XY��7 ���2�7�zHn�\L5�%�fQn�������������������/��'�-@�A�;�`����(kK����j�X����q@JIE�[��e���RZ����Z,�O`RD���w�����������:���������o?�
��w��7�H�u^
�O�(B=��=����
�����a�c�7�~��_�M~����o�E���1=ebu�� W��}t����?~�;�i��+�CqU�����������(�)��LS�|i����d���*��,�!'T�?~�����{���!]n��4U���8��I�I*�-�������o������{�`�f}j��d���]FW(��T����!���������~/'��K���Ij�/�C���u��9I}����0��$�uz���-����&1���3��)�.�t�9��!���#�~<�����)���_�sy�����xFyD���<�1{�GL� ��Fy��
�<������#�^>�������Hg�>�s����8��y����Y�/��"y����d9���?�S+T�G���:������m��P�����(E�\'�g�.�x��/�-4K3K�&���P����
��2Z�h������,��"���(��� ��I�"���^~�CjC#���\0��@��� J�8[C��?�2�S-�vtH���
����rv�F��"�[��������K�A��K�a�����!	�$��F�R��Rdl�&T�0#i��v�	�}�:�a�?M)��``�p��N��<�<
8� ?g2�Y����P/![*d����2��i��sLN�$����Y��PS� %��Yot�M>������%�[A� ;�N����o�b�����q1BV
�=��o����@�D�k����>��<f�;�� ������u��8t��zY��;��_��������8�D]R����-V�-���F�kY����D�#���������
�{�����C���x�]a����N����Lw���3>� �y�(���:$&���[��k=�Hp_��EZp��c^:����!��'%�`B�y��lH�0�Y�$@����;-�%[�K�4�q�d���X*�DE���#L<"�����M���������]R��������o~w����>���<���Z�/������c���XY	X	��
�������Q�D�c�#����m��������7����D�~+�R�~�`
���T����uI@������
���3L�Q��CB�?r��5jP&�97j�7r�3w���Y{���[m�]bp����p#��pW(���������Fmpy�Fni�Z�?���-�:��ka>�|9_��A,�:�1�\�0������'�mL��.��6����t������-�pJU��������w_���q�;�g��;?�8��������Tp��#|��v�.��Q������|>g�d9k43�[C.�H�<���v�6�b�GQ��v�\�"6P���6�$�+b���K`��X��������9o^�X���s��
�^�XG��������q^�[�tz��y1�P�Q���0�����N����8N��H�W����&�;�7s�mB�^���]\��tG�f6.�������<l.�#<��^/"����t}Y�J���R��.�Z@8��o3��b����1/�C�2�q�]O��D���:��/���>e���X6e�m��P�n�����������,����.�zJ��������+��u��A�u�V��c�Y��/6�aY���>vB��SR~��|�#c)Tu�q��v
�_2�����[���~�Es�fe��|�A�c����������V��]�7����9W�]�@�V��@��@�%4nq�4rV��B�N������������@�k+g����*!��5_�@p��.)�`>��f�kz>{q7O���D�_���������p�fY�[T���Q6L�g7�J
4�`����80�
"`�������.���!�����\G��S�G�����_�Q)��{m�����e�>O��������7�)�*5��Q?�6h��n'S��n���(�N��&�^{/�����;��(w��C����cfp�y|I/�Y"��V?�Ue����d�g�0B}�~��N��G0:�!?�p��2�T���L��&S���L���4)�nF�XY9C�i�����������|�����d������������-MI�����>�fmZa����L���fj�H�J�U[�N�U��2E���;v
��9�o9
����(�n����('7t��*B���4o4=�'�����HO��������qF�}nPu��C�PF�A���?�R|�	�.���${)p����P�-J�g�v��]�p��������a�7���&��e%_b�p��:a �5I��=�E�� ��
;�4��BaBvk���I���������+wA^������(O����a�V�����B���w
:��U��v#�dI�)�$=J8�]�g�������T�{��t>����I�.����D�F��4G
Z�d���.X�UV��+�+?���%#�G	��5h�w
��eD����a��Z:��U!�F*���s�DA�g�kb���3T�dp��S���'��m8D�$
^�
.��g�g������������2�X���|hJ�<�Y�WA��Ybq��[�-�/���6����t�]F@�]�����k~h.T�vOy���.*�?�1l/�`��j��&�e�Sc�#���x�����EO����o�/��;�F��\�\���^���R;c�������|����fl3:�+&�+��kV�}���G�$�����������3l#�����:
eu=����H���A�(�D��y"/�p���B�
�Q�I�rIs�zV[P\ER�]��V����#E�qz���`]I�W=����G�yR�������a�OY}��e���"b��������S�+��$hAq4��cP�Xb����z&N��HV>Y^�}$�J�A`���^2�$�G�Q[D�=��*����a`�v]}-�S��p��P��r��3t�m�e�������bA��g��fhL1D��������b�\��8J�������Y���xh1��~��]��L�^���j���_	�z;��^U�%+C���z��5+S1��v�*#�/�"lg���i�<+�W���H�|�Q�����{8��{��-���I�h�����6`�A�PvSV�/j����tt�[&���}���7�D�d�����6�2�n�DV�����V���������n��c-�pr�"�}e��.��S�>/i�����0�L�(D�[��y�f{�C{�7�q1:�F<1p�F5!l�hno�c��_x]l6.TOaW��/�V���|�
��^9�\���P��z��]O��s��?������cu5�oR�=|���'W�����z���}��J���,�J���'������~��k��q���C.y��r{��L'F���{�N�+Z�2�o{1�Q�v`v3Sngd�!�E�=�������s��L�����d�(�r}����=�.0K��9x% ���tn-4��1���d�5=*C&KHD����M���N�!�Zf�\^��������&���d���Z�&D%~���[�D�_a�>����2�8
Ae��}���L~��
s�v�4F+T84%�.O�?�����@"�(��%���t"!�'�����&�U�|��N����3����M�F��v�D����!�����_��@���=��l
�EA�Y�������?�?�� T|_���o�j�#jR�dT�?e
d��5�$���#
����ib������X���`�[����{�R���/����?�_n�w�r4�����0����:� <kcb�hQ	��2#��"'�l�%��rO����$LM��(qlf�PHm�y5�#j�����	���!}���v��9��p�����������. ��6Vo��Xl�y��p���(��z��b�g'������2H����� Rg�c 2@�`_o�����1��x����Q	 B���8��7���l�p��JyA��`Hf")�F1��>d��MFq�E����F�L�eQ85&�����H�d�ad�X^�&���\�����9�>^�Ks��������/V�,	�����
�����L�#*$���}�b������W�y�B��Z&��+��,Yg��<9#TI�El�Qi�&�i�%��h*�~����c�,+�=��!�m9S��Qb(1����l����T�(�Y�SBbt������}����,h7\�4�D��H4�����`�vV��E�-���W�y�����d&Iy�������/�Yh������>#�����Q���=G�M�$�:YA���L����x�k�-�WS���V���l%�HH���S�n�1|�~i�Y���������h�~��X��P#��U����6u�%��m-�'�[��v���!��D�v>���
���fC/�:��w�R]������Z��)�������hy�7���e�a��9����f�.�n��C���^vnl��:.�7�>��
L�"�r�w��������x����g���`�����,�{�x;��u	�7�"�/2�+�1��S����U]<�)"�W-���$��0���g�=h���?�|�����*�U�������L�*�����j���pY4^R��98�A�	p����8�_��A�0PG��"����s�@�$�����B����c����b���,JM `vSTTiT��*yc?��u�Y�7ng����`������2)q��	)f��;YZ��~
������������q��1���e35�E7�o���6*����o�[h�����;���7�����=s�O���(!�}e��F�I��ducG������:Q7���������	i�Sxh~V%�5��tI���|6�E4DFb�u�_���]r��:]X���5��\�U��\�����_R�/�|���C��*QT�_�^&\�VtW8o��
�
����R�R�J�5Y;�6���{	���x���I�;�{�j�t*��I�����i��,��)���;�5��_c����fQt*�-P�0�
HyCR��z���Cy�n�:�}�l%�l�))�~�(����f
�k��jD��9op�g
����A��
�4K#�c���V�M�)��0
�	�9��<����I��3�-Bt�R�'�6����Wi����X=�>g;a/���zb�5p�da9�?��:K�K�����S��R�U��\�J���[V��'"{���U,8Y�(j�RX%���Fr���Zb(4e���f�X�4�qi}�f {3��8h�R���5�6��o��/��E���K/o������`
���U�?�������Af%��:>�<��b%rp?c�h�����|9�F�w��tB��-7�Z��;g��Z�g�A,��N�X��.���v��x��7(�a}	���r�v<4y>���'�+p@M}���}Z��ILf�����JH�r�Zf��f���4���������?:���ph�
M�1b��&2�g����1W�5u�{�������D=��~ �+��K�H�MI�������T
�H�j�����e���K�B"���,�Ux�����g���b0���(��Cq���$uN=����e)]�"E�h�!/8(31��2g��|�pV�K�b�-qSHy 9�v���T���J'����EF-M��]���
_�g���J��.�i��S��u�o�Y)�,A��~�k������f�Y����7�][�d�m~������f+c�[��C^�4���+��ZF3XI�O`J:-d�A���r�n�WR�u���f���o����evVII�\��2���l�xJ��"�������M�^�)pxv]Aw������Q�L��'qi�;���+�I�#$�!�o��}u}�EO������9������c�q������8���\�v�O���������z�����vw�r�iF�x~����2G�bg����n��)m�+qu{���l��zl����X�4{��3����2G�zs�X����1����d�[��Z���{p����"��Ew���>�M����hp���=�&vAM���].��md?�����;��{[�\J����xWZg_�O��I�+;S��K�r)�-�i=�����X�la�d���������h�}*�8F����{0������R��
?%����PU}:e��U�_�Q`\E��iPu�2����.�K��7�d���^��I�#�N�O�[��vt,^�K���<3�9}�,R��;5�-vV<H|���g��JR�V������i��;�O��J� �1�~,����|i�^1�~Z�(��N�������H`���
Hs+L1���\Z���jk��������Z�������jl�*{�C~y��4Fz|�*���0�s�c���s�i�P�@�R
2�w5����-��YT$�n��n<_���H�~��{,�*�Is|�kq~���0����=�F��@N0����G ��a�@
�t�G\�X����E6�	�{��N���
v���z�4r����^l ����1�79M��"�����X���4od`�
�s���������x���=���M�wT���:�#c�����b�@��?sE�O��L(`�+���
��+xf�v��}�9G�N��/�?4o�r���z��[4���V�z�/K?D����a�����#D�9.�s�*����)yF�����6knsMM6FnD�����B����
5ZrL�R���=�x������3���6�t}2�6��G5���i�
>g3�6y�Y?[Q���}�H���a��������MP���z�gz�!V.�]
���"��D��������N���1���nd�q	���[������c���*a��V��{�x50<(osqu�����Xi�!���b������]��.i4��9JkK�
��Ib��z5|A�Pu�v7A�Q������l�U)�^�C�����p����.��>!�����7���U<t{ada;fV��w��_�a��`4f5���~b�3��fP�'���	��J�uFP|�t��w�dm��O���hoiD�nd�lxH�.��WD����[���1���Y���w����>����7P�����Z,�Z,p~,a"���p�$|�������$c�C�H~����,~���R}����E��$p�>�f��"��ooc	���:��F�%�	���.@c}�<��(|
���[	�>���g��K�f��>��'��
��+�#��J�D�GePS�cvE��E������� �c1�T�W�B�x��e~|�G�cQ�w�q��������_��� �?�'�T���qEn����=�E�
B�vh@TE������#�"�g6� 3oO<�\o*�h������G���j�����PN���7J?�������������@*��0i��o�PCc��iB:L���Z�\��&���+�\�v����F��
�T�6�O��,E�V�mS2��_��w?����}�L%,�Z����.���S'Oe��|�_�� !�r���]�������C�9����v�2���2�bB!�����\A>�Yf�6G�JJmK�\������������(�J�W���h��wZ��Cs�t8s�u���|���O�l�|�|��3��^{��Y5�/��������.�Y�?_����j^]���3�<�h�@8w�����B���?w�z�A!|�K���B�W�����>����)�xZ7�^�"�5�A�!F*�r�u��fa|k&:7I/�Z3�0�5�����L �o���=��S�r|k&����?���l"�����^N�[eNA���D�\#��-����R�+](xA>g��8
Q���.~���!��@v���^��-}��TI\H`�����DV��X"�f���'_Q������H	�~V�����g��
C!m��d?����~�P����b��+��,.��X@v/���OXt�a���eWT��`��������c�cA�x��9��z�������
C!m��������B�&�������������T�	�v�J������S���%�n��3w�������n���	� ���B��~����@O"��s����WB�t2��J������.�����]��L�y��,,�m��=�q��o&�=�!P'���c�q��2������=gIq�wH�=���D~+v����oO�%������	x�MZ
���	�E����u����P
L���0���`E���	��a���7xR-Ju����ZT��T�,{[T
�0?Mo����:4�u���)�P�0h����F(������P{p��x+��R'~-No��pR���?Di��J���B�v���y's���uUe?���1�C��������]W�o��}={�
��J
92�R;�S�)2�UN�Q�:�:C���N=���F���B����I�P�!��������8�������&�x3r�15z��v�S+1��D�url��Vx���|3��C���8�^������C]j�n�������M�A����z9`��C�OX�i]_�9��=�Pt�N�V;r1�6�@e��&J�j���Icc>N��Gk���H��C�����a��1bw3e��K�X��7Qj��G�0����Zn,��l��c	��v�����F�aKn����;-3-�����;��������������_�3����=L��kZ�2����4l]HOO0zM���s��U� �Q�|�J'�Y�+|{�v�I[]R��Y��pGG��~���8e��ce����R���i��RC���������c��eq,�F�����c��;|]����
l�B�7_ kfw����Fs����}t�-�>4�sU��	�X�h�R$���uOw�A`P����O��7{t�b�I������Z��S�C(����w~G�	��#��V��1p�u�>�
�0�5B���������)���r����\n@����3�!�|�ul�����\o���	.Qv/Rh���^'�pAo������o���#��p��d*v��z�*Sg|
k����0+��[%��j�
9eW���r������l����p+X�B
���$/������Cm���"�Z@ZD�D�F�v����8��4�u3�u��d��^�i-������x�Q��OIuL/Ur*d:��LT��or!��E_?<g�A�U���a�����C>R<*R�1�{��v=g��4�S}!_N1�Os�o�%��g�(�����SV_2E=?}dPo
L��%�C|�'�_��Yg����	���r/��o�S��=5!]�L�%��);ga��S�e�d��F��KQ3�W<y�:f�
2_���Q�����e���}d
�l�����$G%?I���$��$����o�����,F�*����TL�S�����Q�_��A=}��B�b9�����sq���)���iG�������"7o�c*� �����7���v9�	���[zN�����U%�SNu��j��E�L�<�s�c�9X�\��(�z�	i��tC��� ����C��]�^�iM��]��`�P���F1L
���T%����l�@wQq�X�Qt���|�a`��F���l��	y�I�p��k��8��:����!�q������{P��q��zo6��oIz���1=��	��oH�y�������]���\%���d��VwI�,{�i����&�Xa��*�/�6^�q������I
���������R�B������9-���k�_����b���\���e��m��[��N�'�
.���h^U>�9K������_/E��6R���A���O������J��^����*C��>Hg?�����C���������m���1��=uZ��������_J�A���\
JO������j����ka��(�u����������M�w��1��d���1�+�I�z-��{@��t������]���(O�e5m�-���	�~�{����aa��_����-����/��
������m���8�n��^=s�R��g)VM��^4)o��L������K*�c��_U�;��m��+&�`�����u����f��bm����IUWo}ev�6����\����,�?+��Z����l�?;���)>�t3+��W�pL�}��}J����~�/�z�����Y�?Rf]GD5��Y���6����N��%Y?,��X?�]�� Z�q����+�?�����2}����|�^�oRw���u��~-~k��Vo����*�co�/%�����u�i��k��8��'o���Y�����N�8EO�&��~��hU�L������g������_�{��m;+���k'P?���a����V�O�s�~r2�>�o���k���_-k���u�i-\��|J
1�T_W�������N�Shm�+dh[R��S�m����e��SsF����|���(��s��qmRQ@[����F�
����U)8��T?�C�f��D��iK�i�%S�������$�J���!M�%���]�X��������]����o��-���6�/��U`7&{�5�(>v��A9���t7%f�cZeI��c��&�gX�n�~��,D����(KL��#��sE,�MO-�D�5��||�q|yR�r����6a�2����Dv��T������u?yeL9�����rk�kZ�D	ghG��������NF�c���������m.�%�#���#�
G:��NX	=�Yji���]g ����*���O��d�R��=�D�J�z*����]1���D�d��w�5ty!�%;��I^��l.����n��S[���	���F����?^R���"[0�e\q�t; ��s$���GyP��yf3���F����8�����R{;y���TO�p��G�d�\�hS\��|��]��Cl����)���r�N%V�=���Z)�C�(Cc�#�Oc!�f����6}z���.'�b�r��s`�[���|��l����[����]������jx�-���g�"�rX{�jp�-�����"�2�D7t_.W���9�pI����N���o�>�z*���������V��|z"�D��h�^�fk��FE�����JX*G�t�����^+yZ2�x��7�F�"�k�'���;�k�%-�o��'��''�L�i����a��h�� ��i�"�Fr[�Z��]}���'�
Mmi���)�>��yz�2�������~k�0�c���2S"�����LF;���wUf��X�����kVz���Z��0��\�_2���|��,qPO�n1Er�����V���P�����"��Ck%:�����_��9�D��9S���?JuZ>h������[�}/.N>�b�j7�^GNO�+��9����@��<��
���d8����AL����Io��2�g����2��T4|P���{��[�	�T�����7~,��=���X�U����[	9�����B���^m��%�������~�	��$~G���(���n<����#:��o�&�S'�n�����X���u�����t�Y*�,!�������#�0z��W���?g�:mu����hF*N���������7�`OUA�Tuq��&(������/B�y���Uk]��[����v�
��5�x?U�	�kR��h_���E�Y#�p����N�g�o�:������EPk#u!Z\������zi=
�l���~���<��R��������CIL�!�n������C�������K��L6�n�u��Pe���RO2W�K���>\�'Y/>���VH���(���4�����G�xz�@=6U�0�" �g�V|�]T�Lr�$	�O���X���^��{�,�E����cv�)��+4������8�bH�d�r�~G��Uv~�T%R�]4�L*v���2���*��V����$���4���
���P��!��"��k$J2G1	����#tcGM��`�f<'x���#��DM��d�F"r�Mb�!M��`�:8�%n��@u�J���%�������{�J�����-����d�C�B�%�WI�`�:gS�3dy2��r��I�	�/C�@LC��"F0G����ja���2CA9�=�a�9�����&@�����L�2�t��w\�[�UC��vZ
�%}�#�&����	����K��rY�������S.\�����<}����)(��Pz���[{����w��]%y���.�Q�R1u�V�����3%�	��S�@�~},}��}4a���,*�;v<�*bOG���"1zX�w�E�����vW�xv�A��R��s�]�I��bv8A{9h1:H_a�Lp|M��`�Pq�x��\����9�
�X���Ki�o �fm��YV�'���*��Z�X����w�S��9X2�����1I�]�E�����`V��[]��`V�z�{�����L�W�&���MNa�"�
����1��*.�7}�v{Ee�;��Sb7����>���|;4EmZ$���;{]������B'�������)�`��M���|MQ��g�6�^	�J��{gW���E��~z�yO��:�	��	�W,kEj:n����z�A!e��1�cHH����y
=��`\���cPH����2������#E�U��-=�\f���*G5s��e8Q����}K���R��:��� ���::�=�,!�����{+g��\�vyuJ7
?g���Ex�Yy�\���CWg���G��1!����U_�Y��x>���a_����)�QC�2;�v�%s�BL={
Dh|>��@���6UYB�����:�zSFj}�4-��b+��e��-��0�&J����7n�����g	���>��������rPOa��u������e�U�������m���k�� ��{&}�F$���PZ����f;sp����6�}MICG�rH��I�|�E'�~�E��J��9����t~�_��h����lj������8n��V��71������*BR"w/�|z�MC�2�H�|6O���L>[���b^/��������/GC��c5Kr.����[����"!S>6REB?������(��C�*2���,4����a��<��e���h�N`�@"�`���k*��������[��ta�w�!���x��@�C�B����YA�GK<4������dw!����]/S��i-�pyP�V���sZ�$���
�M���s���bl<�&�%S��p���_�0�{�����fV86��&�P�J�(j�"e!�m�@��]jz�p} �xQ��]@02Mt�e*�]9Y�;&2��Yj��14q/���,����W&JH�t3�����LQ �Kqplk��|�w��w�j�[��6w�[�w��9\!�U�Q����k����&�Z[`Y��#*r�*8�&���"�,�h�=����/�~Uv��$��EZN���� k(�n=�t&�'����w��asb���}�E��m23�fo1Ve����UL�����.9<-/ci�J����^������
>�`lOm���/����m�$��O�SY��B-��_)��p$mU�eMI�c���;���5�T�M��+w�B��*����F���0z����A�P���3Z���z�����9T�,�`HrM�L/:��Tl�����q��K;uL����B��4����'5N�Oih���K]���WGpq
i��u���t�+��B~��>�&w`T�*�����s�N&�fE�����X��z\O%�����,9������@�s���9a�HI����3.��A�x��r�#���D�N�bA@Hm���.�%��)��
�n�C����V1��R�-�#�K�gGp"NnW� ���H6���d��bdl�d��K����u����=3%�a�l��^�5����J�7w�����%�{�9����������V/��o�+����%�N���<�A�����B�A������+������uP���*�������� ������3����Gg�\���}/��A������`�����z�-�:�=��?�?����g�/�h1U����b)�X}��O�PRZ��50�A+d�O���Q!��?�&���U��`��iF��2-A����.(
3�+n�
��*����#���f8�������6<�qq�lA�XiP��"�{����8���8l�������]
�\���e���Rp9	z��d�8�-"q����#R2��������)�c�+�5��z�.j4�9�H���K�����s�[��*2����p|IK����7���T�(X��V�_��c�_���5���a��1��k������;�ByX��|E�JD��
.M���!_�'�y�a8�
�<��Yy��3�-�|Rk�<��Cn�F��S.��f���@��7(O�����R;xoY
s��3}��kd���^��%�V�i�����]o���-R
����l��m�??�U�ysR���T+k�L����6_7|�������6C�����H:u�� }8F>sH����/K�A�=���R��/dZ���A�y�J�)2B"��;
�Vw&�Eu;��e#��Tp������j��Go6m��=2���1�.���S���~�O������Dd�7��>&d�
�����ct�2r�N����A��?}���PwV���@]~'\��_�����D���B��K{]1�R���X���!NrC���y�D������g �8���m�|��?�{��Gl����l3-�K��+	z'��[��u���C��;E�&��������K���;�.�����N��������f�R|P���������
R�z�k�������*���������-�IV���q�5�W	�O�\�5�HU�|�#qh^{(~�TqI3'b�Z����_|�$�ui���5�~;��]M-u�p���cB����*�������9������5��\����q"f�����y�����.�\?��o�,��������{��
��� #�����A���"��5��_���u��JUq+������!zxM?����Un^=����':a��M���6���K�p�.'i�������Y����;�Sy�[+����?��r8��:������X���D�{u�q��;���C��H��l�K��n��s�m��F���K�j8�^�yvzP&�b��M�����Z�����(�o�>�������S�����ki�Iy;g���/����Od��nl�L��B�-u{�	�T�&*}�UY�����t����KV���O��~9�f�Kqz��_���m����?�����.�����@3����/�}�}H����^u��q��e��k����I{���OX�\���d�xD�w���,�������pM��uo�����o��c~z0������T������9���y�L=K����Zt;OiU_�����i5�����//��l>n�Z.L�esf~��b�4�V��g�}��xJ���7��^���=r���m�g��
����-Wi�����>d��K����[q��W�\'Mi�rK��"d`@��������i�R�O��_|�_0��K�)N�����]g��KY�TQ�����|��hV|�q�������e�Ta��
����$0M�gV�@58����/���72�~����2���J���N;5��w+=&�;;�c3��g���<����DG�S�e	�gU>N�'���%o�����@Y�k&=&������\�R52����Z������^�!R�bv��������B>6��k�"f[�G�IGk ���)t�;w�=����/����+J)GB.���G���s4?@&����	a�[:�
~�w'��)Bt�Y����~�pqu��L�9J�Q�j�|Z
�4�[��d,d���lY��)������1����O�'�/��v����cvh����,T
M[�Q�� �~���u�LR}M��o�����L�A�y��Gv�-}�:�Ye��NtZ��Q��\����K���U&M�~s�:��m��Np�`�,\|R��d��ET�P���p�?94�!��7�CZ���������>���0PO���U����'�*ci���J�o]k ������J.�ZCj��g�R�o�8=S�g��E���G���H�y�������q�����3�f��{|�1��&T��*�3�<������/�RA�A=��s�v��L)�c0�k����.5��Z�za���AB!�#����!����j��9�jW����L���UZ�w���e���,3Vq|��J_��P	}S�X��k��y�Dh����qkS�p���_�v3Kz�$Wx��t�"�}n��^�����l*�7��aa��_�"�����y|2�7��ai������ ���@�`�)��O�%=��A��O������TA��|�pa2(�h����Fy�����x����.�d������zcb���k0K]����~~��txH�$�T�gq�5(�i�������dcn�H��r�:> �S�2�
�������[xd��:/tBl��������j:�C�h��p���	0��E�����}Hy;����:E�����������B����A��?�PN^��[[���
���En���}.�A=������9=:7R��qvL�rO?)�G�4H���Om�|K
��[�:I�����mkr){��[P%�%���RCD�z5�"U 5�`�-\*���*[�*{#��<��k*{�v�]��:4_Y�tF�r�=��N�����$(����N�=U����B�W�(_�b��R"�1���Y�l�-�����O�m��EQ��x�P��=H�<�2��`��x���k��5N��P���/���s���u:��x����{�/������� X�0�]/qp������=�w�	:3p$U����1�b�Ki��P�����"b��4��@�#Q6HA�i�05N�n����U����0jh������������>j�5>����P��#��>��$�3x���(��*��X*�)��O��������Y�G�#���P���a���+�������$��k!�k��#����X����� Z��j�^8EJ�R��e���U4.I�f.���	��!~��U>&EFB�{!��JQ�	C�$����Y�2���)���+u�C����a�A���;[�����L>�a���M�co�2y6��\���LOl���v�����]�����)
?t"�H5lv���#�TN>�T���������Ym��:Qog3(T������.I�M�"��;�n���J�]������[���%�}�;��U��K(�����n����� ��[g=���e�J!I�&����3���L6�$��s��M>6�d<z~����H�R��S[:��[��+��Y���~�|�����{g"f�fD=I3k���O���.gF0J���KW�M����j�<�aG�<�pj^��Esg����]3�$bf2���X.6�=)�s��
9����~Pm���M��1
��X-������ ��_�g?��/�1�g-A�Y��Or��@���g]r��JVz!�A��7u���7:E�l������F	�s�x06�Z*��~�<�e!M,z$T��Wg3���R����>�g������c���S��)�_���(wo�	�6=���g����������F���B&X���f����8�;�lR �2C��L�f�M���K���x������EmE�����i��a0�/?��}���3�2J�������-���g�7�QkJ-��
�:}��D��Aft�W,k7�#�I��J7���R��=b?�2q��^�{��w����n�����������?+�(
�h����d�8�X-����	*-�H<��2HGbQ�3rr����'#1�OI�-�M���h����d������#�hB����1���$��d���SGe�l�c�����z���v#W����
�D`�����v������!����-�L@��cw?0�n��kh7��P�'�!���m�:�U���U����X���~�������Q`f��� ��!��=��9��J���A�L=<T���P(@�Ae����(|b�h���#n��c��z�Z,�f�NykI�M����4��`5 $��U�?����YVf�~���BU_�"i��������f���Dm�n���B��9�~���z�$Uz�.�e��zcY���9�1}V!F����k[�[0�NzX8��	�q�[q��������]|}�Y�|����;�'Eq�1(�P\B�����+��c`\��c���(��7���P�����l���k52�[ekZ�`�}t�����`w���c1d�����^���b��#k�R���i2(���u	
��q�����������������M-��w�s��8���a��u0k�)@[�pj��of
�h�<�Z�er���nT�|#����H;���L��	vH����s������,�v��gB��	u��@��Y���L0	d�����A��,�6�?��-1�Z������I����@������0���hz���
��`�����K/@��r�&�geB6�=k
�k?T>�lV�p�l V��|��~���� �:�&�5���k����K�N��/29N`C��Ei�G���a���:�����q��
��qX�u0`W��
X�X���S ��"F[�Q����z������Y}����ui��51dR�{��_\��~�&���.���&*W�f��`}M���/b�5
v�Mwi��z��G����1<{z
>���Z�iq�|�p���O'�1����_��c��U3�$;����=�+8�������f��N�r�_�@�����@���B��'XH�I����;�����2��)X�`��6�,�����M��9��-���|���+�Z�{��Ox�-VO��z|�����g+�JX��*A�so����v��R'
	u��T��9����r�a(V�%����sU�1��tL~�;��4�i�O��Z�'�?��!�����7�?�>��aX���/�~����!`����w����EF����'�?����~����/�?�����-���m����A����l@�������X�H���G��;?ft���#���7���`M�]�#���_��`qC�C������H����{"�ClY�H���E�W����c}#�ulx��p��#��������~30�Zg���a����[?
���+�y	�'�?D���W�5�7�?D�����9B��1��c�CT�o���`�?cD�b��\��1�m��3Td�������3{���E����3�?hv���*:����^�R�� �l���?�A��������$`D������j0U�%Y���K*�zi�������"�Y^���j����gw�`�ez%����ZJ�H�u0����q�ic��y���zknH��T^�(1B�����o��B��T������Nqqt_S���]h��xz$���O5��ag��Ff�gl������h~�}kd�;�Fw������)��o�m�T|��&�����|��V��������wR��[N[#��4�"�^L
?��?��1��e|���P��~�s�����ujv���1����c �7F��o�7F����l|��yt������#3��wB���1��>N���2�b|�������G �8b*�<�q�E�����/��3:=�R-�4��;�5���'kv`i3�
���?��W@2�q���������
H�5v����s��f��5no�0��K���������)r�>En���d�������x�"�#4<0�o��"�-::��yu"(Cb��0(��CG��[�q,C��0,}eE��o>���!x�6)%Qltt(�O)��;�8����c������Y���O�)���{�h$w��������f�W
H��Q������hLv�����1Z:�����������b$�| �S��D�'�=�kh+������C�������w�V�d�A��|��N�
�o4�����Bk���Q3�|��a{��G���;l�1Cg���wFv:z�!����y��9�PFr�;� Z-�%�
��Z8B�0��vV�q7��f��1�gP6�ivJ������,��Q�z?�g�����1��_�?����G���xu���4>���5��q|]������]���}��]��'���t;V�6wp��o'������r��5��F��sel�_��
����������BsI��4.,?L1�=�F�$���H�
�c�<=��4���b��(�<�F���_[��I\V�����SZE�4K�"J�G
�SR%�E|x���;?��C$��5N���������A��7\��}V�5��������~8�7�wn��{bN�(������
o{,�5���a_
�Q����M"�.��|�C ��X�r��u���t��V#;�+��y�X�:���A�1�;%�T1"U��
�l�n�������-��=�
���m��mp�����Y����g9��?U�ZtY�@�Gm]��AMh�{X��)�riT�.sA��]�������)��Qg0/�9)���+(0�|�,>c�4E��	���P�J
An9t�����BA��l�������1�||n	>�v��'�:���Q|���K��s�y>ka0��.I���� ���HtrZ����#��z�vA�#��ql�2Z�L���"�������ex��0<���6���-�e����bx��r����g��������<X%L����zW���"a��qv��#���~��,�g8���q�^1�7�9og3��2��	@����z�d��g�e1�B�R��z��[!�ya�'���4�Sb�yLN�"QE�^����[�_�7��B�����Q�w�g�Fr0!D~�|Rl�Ej�LN)���[z@.[��G����nXz��C�~����u8�K��^�+ALGke��c��&��|8��"��KUy�"�Y,��;>��0�L*VW�K��v$���I��k���O	>H�'�l��3I�1B���F���{�l�����S��#F	e����p<�e�����Xt��8��9��#����Z�RA��l�tgT�H�C����xf��{�F�������nl<*�!S?�P #��:\6(���G	bk���pwN�(��Sc��Tw�T�n�4g>���6�,*���#��QU04���kP��}5��n���Z.���L��w���|�
I'p�(!0�{
%��7>X�����Q0K�
�����bu�}�@iv�����G���b��>�P��o}��'!�S�^Ju��w��7�������.r��B�I
�.\����q?.�$����)MNQ*����U_"3B����Vo��g���%�X`��fY}�����N�� ���������aDY��r?4�r�/�tirq�7�W���q}�@�"	C���2�= �9�(�G�W���1;#��C
(�Q��V��u-�������L^)?�b>�E�[���O��]�_���|yh	���M�}�w�'x����>���BmF��� 6 ��a����
�ZW��U��FuF�4?���	�U!�5=M��
�,P�<@P��@YQ%�E��������pB��x+
��O�:��r���H�P��'PI�>N5��-�3;�m��n�Qe����������fv� 5��6����l@d���E�s(����$��tXQU��1�b�'�������3�0P�3���~�#+*:���������d���k%����u:
����2���!(N��}�jx3[6f��ot����<r
���SL�/G��m����<{f����-�<�"�9XKA]aZ:���zx���1���d�����@��}�����u=����qy�WS��N2�46W�sR��4�kL�F2��"(n��8�J2�q���l���}�����\b8���aZ��mN7�Q3zX�����D���!�D�q��:��`9JT)���[��QO5�h%:w[�8g�!@��m�}�oK�rT�D�kL����9W�C��k�s�rM��q�0�r�����z^��f��Z�3�r��}����3p�<���������Ij�g�=K3X�(�#eDK��l)�[2LkG�U_/__���WO>�j1:���9g���gu/`_����
���.��P_�l�aB��O�O��|�;>��&A����DtUe��t&��:�����Cx��$}��
��"�^�pg{�/��$�C��x{�$qr_~[�=��`����=��E��A��t�j���7������y&T�����=z��w��h�C��y����jzv���1��?��q�p�����\���#��d3e���b���zSA�1�	�a�zpdzb��G���9�����A��x�'9r�$�i��	�D���H��E�i
QI���P(��!�>����p���Sh%�{b
��=$�{B���n���U!��D�����{�n@8�f0���Fy�q\�L"�7k�Bnt����4C��*���K��SU$`D��+a�����b�.I@����y����9�"t��s�htn|xp��6�n����`W����>|�
����
���n������Q�����q���g�j���Oh�_�8�nL��&A����Y�<�5��d���F��FH���@[t��x>�6�Eb�@��-�*����b����� D�p�dhT_��6Y<��4"K�\�A||k�.>����E��s`O����
��������1����GRt�����������hT�C���9�lD��i��X�������P�r����*)�"����IVk��"'�:���|���/������Kt�/���<��|�d�2��#�4��n,$��`�8�o�ZWfVy��SZ~�t��������R���u�{f�!f'�0������}��%��!G4"�)x%��^k����*��d5&�����Dk���0��U[/b�R"�J4C*���i�=U	��*Ro�L5r��.��\�TmL~in�4F_$����~3@kn�k����!���r�=W�t�T-[���cIC-D<���1[����_>����[��G�!�A�;�W��������M��a}��ufa�p����F!��� ��S$�c���� %Ii���<�Y ��C�l4�1k�z��9J�f�.q��.��#���PP!�[��G$+�-K+e�KUUo���z�3K`����%v������.Zv�$Ez|��[��Y"�j6���a���Z9�QR��p���"��E4�\�;0RA�H��F�}���~�6:��{h��!��|;������Oz���$�_�c�5-����Vob��b~�(��I�9��Fn��|n�� X���lB`2���Cp>)��pY�$�Y~J��|���XV�����Yn<����T��+����������me�
�\�4O�X�����2vd�H�.5_����p�|���k,l�/����k2��A�����X���}�yY=�,��t�
J�����lowU1�Q5��]}���U���������Q�]E)���X��cwru
t�3z��b��5C5|k��*�����lW�l���d4\^f�Z�����I�3k5&��t��%yA���Q$��p�)�}��k$u.r�1.jXdr�'/�����n�������9��Y���m�?�q��n���'oU������(|�Wa=w7��EU�>W3wo\�|EC�3rJ$��������R����|r�L�+N�~��rFNMM�\��8�\��MOmM���Ux��p���%��}����} �#�0���J0Bn@Al�!���^��X1��nFu�����!B�/����yd�v�%�-9z��Q��gN�O������ �K�6������k����_��oI�������I/�n������v���"}�����sr��������^�x�W5w��b�tr��7���H?�|I����T�Pzl-�}J�lO%&_����^L�r���^]�H,�1�l�����i���(���pQwsB�~Ma���v����<#W�[o�C����l�d�t[���-����S+��IG��-������J���Q����	��9]x�)�SnOtE09^���e��Oo,��@�|��-�W,Vx]cn`r� ��!��k;���e��Y��[?������q���D����(���o������r='�%�^�ST?S"AG������������2?��)����'r��<��+[�[*@�_6��eg��k�W�?���?���3A)��*�BD������c���4�X�]�����/��X\�����[��.�����o���M�����}],N&�����-�M������=�R�}.,�:�uM
�}[�-�S\%�k���J/IY	E����_�/F�������:��c��]��"���+����������v���f4�Q�0F�aY����q��	dtn1�<R���2����}t]Z�f#1���(����U~N������D�[Xr/W����J/!xd������ky�_>�+i�v>k��Iu�x������]�4�4�E�U�k��!�f�+��%B�`���M�)iC���D�,\��ZW;��EE"JY�FF(���ai(�����C$�7��:F����U�[��Y;MFb�M'��
��0z�0J�	dt�3�<R�t�9��	:���qF��%��1j\aD��{�����'E�0LC\��_:��;�L�������Ww�
.�K&�C3X\�Esw{5�,��"�f.�'P$�`�N&P$�`.�	D`�����Up�1�\��/"��������P����\/�A�����u�G�5�R���s���^�z/z��C�(�'Q�xW�����F����D�u[�@�W�������7�I�?x���0�x���>���
�)w�2���(t?����f_/(�|"����ID9��H�'�K�%��O#�p?�(W~"����%��O#�p?��8�L�lo��8����7D�~�d���1I_�������X���t�f�(K���#�x�-��}��g������% ]�'G�s�L*MIl�c3M&��G�9���8�lr�w�K� ��;����8�����Z4)��s����~S~g#���;���a�1D8s�g�������V+'dKd�7��# �d�V+dK�3>d�� �e
'df����MX����<#�� ����!��n-VsrR������p���y��D:��N����k���Y�%gE���|K!J�j3����C��-��N�'���(d)c�&���hX%�\H����8���,
�h���>�s��d����Z�	����k���R�(����y���a�f��d�sNS��$^�<��F<����-&`X����^�s���$�e������������9�C��X��"���m�|O���Q���J�4�J�}��mn��#Zy� ���s�g]8��)�����&9�h:<�8�d�g���}:T��t��3r�G���eH�Ttx���8�rj��B���
�����[~�����1�~��O�k1�$'����%.�q�2�4X��KM?gCKx��D�	M)�~�����Y&g���`C��C�&W?>9_����%�������:h���>V�z�����:8� �l����9Y��'d�O�	wQ��YJRaA��9�.�%�6[��T+2�A�X�V>KrV��+����
[�����9"����Z���7&X;�-&X�P���X�R�x�����L��[\���E�"y���	����r�58����X��P�6�����~-9�����bF��94���P%'�.5^|�p����f��2��2M�@�����^����@jBLH��`�eM�����S��Y�S53�����<�u�)��ck�
��=��]2>�{��L�����)1A]�|��/�0o����I�����y�����o����PnP&�H*��������,^��l������^���C)��A)	q�T,cL��T<[�|��
&��V�h�H��C����o
m����Y�>~
6�w�1E��Swr��AL4�FP�����5��Ny�L���#w��"��5}c@\x`dD0=D��a`�w	���x.Pf����[nH'��}�
�������r�������yf�����u�_Q'x��B?�2k���C.�<o�_s��
�;��x@�G&�
�6����L��Y/�o�_�`���g>��r�|�����9�R����@��^+y�o`�I�A-)�V���m+��0n�I����X��s�#�7�r}8�#9��&X�:-L�j���x^m�yGj0cK�$�jb���uke[L$16�����-]zV�S���r����$�����$'��=�R��L����-�t��t;��x��t�'s��S0�VY�O����Zm=������]�=�t
@�3[�[���<����S�+��~3�Q�3l��������m2q�8X�g�;�9�	���HZ"���w���`G�f�	^��<���9��Kj	�H��|����9m�&x�-���^�W�3r�z����+$�U�5r6�
�@3�^��V��7�-r����73r1D�+�|�Y��ttV��Cn���N,�������9�����N� ��_��#g
�;3��|��q�W�3�V�cZ�n����4�m�5>�������JS����=�6tzL\���vO���^�,AN�#��Y2�
z��;���9U\�c|:Nvt~����{����4�Aqg��^6����Y�HN��	�
�#�������Lr��{��������v�oa�Ij��cM_�]�%8r�PM�&��9z�7�D7[��t����xV�2;�O�)�����4\'c���K���nM�h�G�S���1��r�)A���x�F(�b�(Y�����Buw��������]�.h�J�&x�2�]���]������Y�i;���%�8���(z�8��X�v�`4l��5yG��~Ra}~M��Qy�^s�b[�(��V/��H����U��*���cB���o�1����(�����')��{><K�@<J|�vM�&R�4J����a+�X@�\� ���@W�L�����*����"�D�y�������r��=N�XM����@�
B�6�Z�B5���K����Y6�nB ������krL����e|����W����:��#�����/h������TiO����|���b]�"*B��%��e)��1DUK�Vm�D����TD^S8��:Z-BH�z�(&���%]\��S>ZN�Z�
`�Y���*�8��%�1?��y����[|���U�'�8���a�eB�CU$I����2�V����%�x�P�0�����eTj���W�+��"/�����L�B�GIU&�0������9.tF���?��On�>,���|������"�������U���[��C��C-�*q� ~�
/��Z}x*������7�'�,m��A����q��}8���R/��gsT��k�E�[Q��W��c��T����.=~iyx��'y����1���M�&���s5C
������C�^I�����B����5j���"�*�F���3���5�7K�&���Ce_��p����C��|>���!z,I�Neek����Q���1G=�����89A��j���������FS=K�`k�T���v5bk������9)��������;!�G�m��>#
�hU\�e��"��[ey%��������EH��u|��,9������Vry��$�\�U��rO���7D,m��;�[�N����+��f�E����U9����f&-�6�Q�p��WT|�^Gf-��a�[���"���7�OE�"�2��L�K���o��U���XCG�2� ��8�7�2~N!�A�n�M0M�t�}hey�Y\WzW	��H�{N2}���|f�����E��P�H���&��Y���e���V�hD�s���M�����Xe�WQ���Dw������Q�s��}8��-�Y��y�b7�p�j�?�<At����~�/�~N�T��p,��W�W�����{Lttx�#����_>�w������S�E��U����-0<�T��/��8���zF�9��\*u�p����=�rk�9������s>C��Z�b���;����>��	�+��M�,�����Y<]�g�dm��"��T-6���<d���|���P�\��������+B�F����$�����H0�X�	�Ar���v��/\����8�JF��H���9���Wx6���B8\��C��T���|��[�SS�f,�6�n�����3��
a��6�������6��efJ+���Q��}f��4��n;�n��*l�FmCC6�f����??D?�������?�$e���y�t����oy{���oQ[�7�OI���o�w(�yA�����'��E�����U����k��>���T(��r����,�hq������&w&p%K�A�
�8g*��6S�n�[�Fu�(�P��i�����&��s�����j�t��6����.m��4D�z�4L�z�dc�*�c�<�e��w�%#����K>���RO���R��*M�G�.f��;�(�����tk�4j4�!�fD��z��KR��>_u�����_G�|���iy���SNH���PWI<��L��b����n���4����Xv����5�AWQ')qM��2~������������h�&�o�`����o ����p��Rj��������;!1�MT��`�5�J:#��C��Gf/`��e��m�*����Cb;�����])w��1.�R&��Q%S*�2�0�������i������lN�*H|j�����1�^�������
30�jKW���@R:���_��Xa�����:v��h�Y� ��vW7����L��-.*p��-�����|Dan2
-�D���dN�)*��oI�W~����Y_��
E ^������H<���&�1���yY]D3bAz�<��>sP����l�m�l	�����2��>GEr��!����O�w+t�`��yZD<u�_�-�������%_;g����?>�E�S"}���n1w1eYpX��Q ��g;6�e��@s�m�6�EX��,�����I���
�+~?�����km�5�����������U���c�\].r��[o�g���.@���P�Jq��U?�{��������n]������.r���a�F�(���<�0���D�Q�V)9��k�������@����n�Q�W�Q)JiY����uJ��?�)�P-tM_kw�I����K:�����c��(O����2������d5"m��k(Vz�R^�)������"��
f&�-SYv�V�YJ'�-��*��2��vC=�S���P���k����mD���\8�`,�E���
�Xn*��d0f���Mr�"��E��Q�����}�yk9�S:�������Ut��5��E��[~J���@��4�������>���|��O�i��V�w�,g��yG�s��*��9�"$E�<�,�b0��&%����k���~��SB��3���Jr������"U��	��7v���!��.�V�3�k����t/1��4�En�����'��2�-^g9B�j�)������*�]��V`Hd�,PM8��B���&��Q�������a�qa��6p|���a���q���E�C�X���J~�4|jOA�E\<�S�F��r���9��VtC�Y�����!�g�b���(���p8����/w��PCX�h���w��������������?���4����xY���s��x,����>��c�=�}|v&�������N����������vni�\�
�
������2n���������H��4;�o�M_�gH���:n�<Y��CR�t_�@#L&��cS�&��#�K�� ���	;�Pe���R�0��KT$�s|�UkaY@#��?��:J�)n^�(>��e^�E���P�|w��!IA���=k�|����o�-�c��m�r�~���� Z
 ���h mA��c��/��1[��aZ�i0��h-DG���������������Z3&w�P��*J��eH�tY���C�^��b�b���%�E���i��xl�����h�sAJD��]�_H���E�)t�
��c?���
��^*G[0�/�s�I�gp��������[�1q�QX�(�Lz5�>���`�[W|mBx6�X��y^7�X������6�^���&��:�N,�|B�G� 
B
�b�L�L�ZrWf���8�>�1����O���>,�z��,e"0:�n�:�&r��k#�����"��Z��!��M���Q�l`^[��B�����5(��M�������T:6���n�
���L�|;g��gL��7a��� s���p"��1���C+��)>�!F�$����������{��?��������[�~����mCx2��{�����CB<s'���{g�r�������B]�kq�x��2]rj3f^��+�*����b\3"h������$^0bW�V�DrM
Y�E���}~���)V�������2
I�Uu�Y�!�_��t;�����^!1Di����\Wy�����l�q��x��'�j�Ae�%�������x��Ep��
�����5wyD�����Q��7�:{t�_d�)�~�v�`5,�c�j�*>u;@*&U M�Rp�l��H��^)�/
�
���I��IV���	�(�ggyY]��_�Q�&�6�]�jdOEk�c�W�}d.2������Pd'�K|��dda�J�8+RI��*?�V����P������L^�.�)������Cv;����������I���}zC��!�A����Q�z!�+o]�X�x;W��k�X�LJ"���1g���������-\U�!UbF_��`��C����L_g��Z��p�oY��|��^?�H��M�t?1�ccu�6+�.����H���~:�$��e^�������c��L���`j]��,i�����^vhg�^�9�`�����(1,R?[4��7�m��zco�����z�f����I����m�0&��V��-[�M]#�����>�Mh��.�W�Oji�����������b`.�``�dBn/j���p��c��M�
�Z���@{�q����F�9F�+����FSp��T�3��*���d��:l@�+�b�e2$C�'|=v{-akv�%2��M�'#�����5OdX���W\�D�7U(��}��jH��.�^����V��.�'*7f��w�~��E�
p@����O$�s�u[�OF!tY�Wh�9�����?��X<D���O��7����������t���GgL���l������u��gy�������oiY����
$��p����b9[��Ha��08��\P|L,g���.3���=*YS�?\B�s(��,�~����TIqI�De�5yi}M�g})��t�T�Iy�O�����$�%��
"�����^��Qb�w�?6TT�K�e?Ik��#h��`9	J.1ej�_KX�`���k$<��uB��o�n;��xS~u��A�4��1�xT��7�J�j�F��)�uB�53��|��. Gf���:s��������67��\5�
7bm��3J�H_�����j"Vw�G	"��$��a@�O�W�z#��IU����>3R/��u����9�G�!�����@�{�X��{��2\,6(�syqB�C8���_�n/w��}<Hx����8[8�"�44EY<}P�=e��l)��'�X��Z��q�����K��
������a����^3K��Ig��#�.i�]o���=��^|�s�a������{#r`�F3��|��Q}FiL��W�d	U��	�v�~`��M�M����H�1��������C��G�^u�!(6:���rc
K�G�1i��?����S{E*�O�Uh�����v$��q������3��D|>��s�vm�����}j����|��7�)8��wp*���}���$���Ux_���wEo�[2���.;�q#�u�$4�
5�����k�����K��[G$���'z=2�(��8��)����"����E��v����m�q��"�K'c��@�OR����T��]����);��y
�G�3��C+LYK�7W�����[�j����01�C���2|-������
�����6W��B$�u�bcX���Ikt��|*������t�2��rI��Am�����d�@,R��w�Q��a��!/EW���9��0��k����N�	���R7�M�Wrg����8�����r;�K]F�/=,��ivJ�a�{�Dz�>L�.���ns���q��1`��L^���2���mgM�v�K�	�'[�t���0�K|� �F�����o4z_Xpo�����CgD�(6�#�{q������G`ovdb�b����G�$@F�v+���~�*�@�����9��b�!��$U������C�+�%��8��q���?���r��<������C����z�>$�=>��$f��4��I�,7
��E�f�����(���_�_����$�#�u����q��iQ[~�
��I||�
�B�22�eG��+�r��!2���A��4��������a5�K�Vux���W�R�uP�n`h[�:����
�k���v��@�h����,���7�m�n�-[(-�������n����k^�H\J��v��J�u����i��4HO�S�Y�V������DgZ0&)�������S���	�,���`���,���$�f�3�Y�����>�{a�w]�������+�k2�W>�H$^���;�xU~u�U���`�����6o�,d�����b�,�����d��"g^B0�\�9�\�\&cq�#��rcq��<�^B|.���ca�%��rgs9�^z	���[\fca�%����n�IY~N~�����E"\���xAo��F(���p������4)�%��q:�����5�������x�O�3���X�9�l�^�������pt:�T�CE���/o�C�V"��^�5�R��|�cM�������'c���$��w�tG���]���8�� ���7�x�t�����^i�0�#��\$�/�!�I�y�Y�#,���]�9����f]?9�Z`|y�5{�bTk���D�R>������Z!|=�?��5��@����k���
�?��-��%������N!�]���3G�+��rM���5=����u��\r��?�D���`4�Dh��n�����r]=���=��%�;�d���8\�io����Q���55���I� ��DFbO�L�u{�6���6�@� ��r�3��������9k#���Q�*dX�<�y�]/!��iD�9�P���!�A�F��E���a|�e|0�����xdxN�����o����\�-�~���r5�Y\1�r�+�O��jnq����8�����������\-m�q����\����=T������w���3�9���k��e�H����8+ol�C�i:"��h E��^eP�K|>'������
�_�g?J"�������X�f_;�{7���gv�������{��sT��<�c��#����;�������6]�-C��J�i
Y��?d�2�XJ���&��5V
6�[m����a�C�O=i;a���Q�s*�|c"�����n���8{N�����$��~��G����K�����<�gQ^�u]��|�xW���W��K������1�e���g�m�*�������hk�� *5������W�N�#�2����o{�*4����
���S�T[Q]r+`��]�r�B/@v@�����2���KTV��' �fNnKU�kr���R���
���o�\1�
�m9������}�Qg�y3'w�J�m���K�y�
���������=V\��%30�frNZ��T7�85sMk&�r�%C/W��Vt�\�jI�nqI(%i�jB\����������c��kL��Yd���C2<��3��u��������?� ����}����74s��NtS���m{X����0A[�?���#~��o�����{��D�9��Q�1u��:�����������r����
�X;�?8E���qN��?+����5<6�;?���9��\`��w���7Ks��w�8�C����
;N���Mt��z�i&k��f�G�������/������-��.�Z'U������/�,8}}����������|�'m$���XK
M�v���5��3?�D����l�o���,��hxE���B
Y��'��1Wl�9�B9-�y��)9'UR�����cJ�6G�49�L���Th'�@i���Nm
W����Il�r�@�����]eu�;�y{�/�
�eY���;g����S�xa���W���l��*������(��)�|����
X-�"�y�����-����AL����d�CU��Man^!_WW�������W�����1�q�
��D�#a���T�l���Z	��{��I��$��=��
��9�K�]F��x��GY^E/�,e���V������na+6��)3�{&�i�.����y|9���V����\�8�8�5����-4��5��L�����Q���P���znNt��XG�MI(#����c�����<PBG�ic�tu��������?��n���{m�K8�u�>C�w8�n$��H�p�W�S2�$4�Y���d���/���:�&���<$-��B�y_�nY������t��4G�E_���������t��A	��e�Q�Nt���n�[
A�B�+����&��CJ�U_	��Z�%�F?)�^���|RP�*4��x��\(��o����?����~Iv���V�������L�G���
����4��~���?�j����R~�9���8���=<�qO
��1��\��K����S��
�]0,5��Cg�X�%^3�q��c�<{#��L���qr��m�^��6�F����r\71Sz�YqH�2���bkT���/��������B�	9D������o�\3�0s~�t:��}������6@j7R�am����^�@�)tD�3Q0��@�'�As�XH��M����czi�E�'�-���'�������;��*o��0/�������9\��k�����$���5�����I��>��=����D6��Y����KR�g����x��[Om0���ae���S��+����"Wo��*�7VB����+[����,��m������x�%��x�`����(�xIr>��(oC�/A��t`|�q��ce�Q�3���
��1�F
��=:hX9�^��3�E��0�C��p���5���".]�,|&�dz0
����g���d��dU��$��8;&�H�/�*"����o.��7
�l�Z���H�93�z�%6D�&_����*N3�>�[�h�6po�*-u�rA �8�F�Bg��������+��D[j���!���
�2��_����w���L�n�H�"�D������+���*\XS�
��{@P���D����4zomW�|-�*i�� ����)�3:fA�k�\]�mJ��'�#A�qPM�m'��s���0�z�b����z;OS��/�����?��l������:0H�Ju��i5~��	
f}IJ'�"���f�����7���� ��)Y��p���[lE)��KmP2�v�f�p�Ah*��JeY����D47��c��T?�4^�qh�������+nv0�ArU+C��*�s"~{M+���y����a��(^�D�%j��nP���G�����=����G��'���iO���Cd�lEi6�^�������]c���/�����<WDN6!|X��
�,���`H�%��c~�C*����}2�l���Q�up`���<����{X,����J?����!;���L���{>C�g��dB[�V�W#��>���~Ltrf���D>�����>��p������K��b�����R����5��R_�I����gM��gT_���^�:h�Y��9�:�������Z�&.����:�B���B��9�7y��w���!��h��hC��l�G46�'�pt40hDv����&�b
������Q��t����,��F���$E�SJwf8{��M�qQ&�_>�Q���>��o�L�7]�z ���y^���Q}Y����r���]�3>�q���M�r
��H����x����������Z���*����	�d�.z��1�t�j��$5��`�	�������@��:�:��N"�r�C���G�5N?C��6����4)k�I�VJ��z�,��D�
�zS|�x'��*l&U�3�]�Q
=z��c,��/��H8��?41I��p-������w��X8M��0�������t&�U�p������mzK��R}W
S���^n��f�/I|:�x��t;��K���+jk��#�9�~��0�����e���d��s���`#�{��[t��_��f"�H�s�a���f��%q�o�*��;�sx�0k��2�\��!����m��	[����,�� ��O0��D�zq���|����2�K<���c7�G�/��ze��S���&�s�N���'�
4��u���h=�����KR���V��?��^Yq����h��!9^����,)d����3b��������R��������Z���vk��[�y��>G��Xf���	��pz��<�Ht�����PK��E�2�������#T����������ja�&Z�j�-��q��Y�f�r`j��H
Q��etj������r��@z9<@�<3\O���� �<5�\Hi �|��n��<����c���
�sPJW�y�{�lL���<��������~�@��S F%��2��������9\�v�xN��5�ms��[U�Y)�cQf�]%F�r�/��fW�������].��v!0�U�_���y��{����@h4eW��0�Pl)� ���4�$N�F�9��56a0�S�#�d�����,)'P��T�V�rB�}���?a�����Q��!�%\{$�E�>���7����u�-�@�,��@��3���<�:Kf�V�Fl���x��K��uv��)���f%I��2r{!P��4�\��|��C�nb�@����z�z4��Q&�r��yz���E)�{@�h�X��M�����PEe�[��K&���z�B�����	���&�KK}�Z=���sp��2�;�8}4$1'���� /'��<99�uC�{3��_���yX&�oE�dr'���K�G���nT���P:��<��v��
FM�pr��6h�����-u;9�y��s6!�m����%y�yKI_XN&o����y/%���86�;�Er��3��i^�D����l�HU9�~|]�?�UI�r��{8�g��z��(5�x���Fa:J�`��	Az)yG4[�%[����@��O��n�����������&��-���w��i��K������D[��w��@�~���>�;�:���@�mp�������z���H�#N��p�x�`�-S�9�t,�t���H���r���]��N�j/{���E����D�8-�)�zY�?�U�k���>�����o(~��b��H�������WyQ��p���������[�4���V|c��4�NhC��}��bHgo�9���bv�B{�{-~���\]�P���9z�eG���8��:f@/^�4�����tP;D.,�����)�hh�3}X���AMp'������2&n�|�`���U��`,���2s8�.�7H#��W+��O�����<�?����mU����l{l����~�A9FK������,;��3���\kQ�(�{�*�b�Oc�xK��(�����J���5�6����zX��i,�/-2��n�,<"�B=��
�|
^�>p�*��X���:&����z���?�ox���,�oE�}L�%���
U:-}��i�Hw�����U��c�����N��+���L�-��j^[g�������6�K�6�H.�k��x��O���%���z�Z:���P���z�O3@s�h"X&9VX�:�i[��c�^5T�� �����I��@��I<1�^���,�X�ML������rc��l~	�5��Rv��a����EM���GA1�6��@]�.�i����A��C�.����_���9����55d"on���as���Vu�����{G-�W������D�����:c�B=�p J
��.E7�����:�����X#����0!�A�q��0�5�&#�1�t6��,tKj��x*�!~
���������~c�[�W��T�.p���y�7�����8����Nw9��:s�$�H%;�*	��?��p�${�����a����������/���\���<2A�~��r$%t��C��4��CV7�#;���|N��Ko$@iF��$M�W��p��"�Yo�7i#*����:����-U�wp��g��Ux���y�CZ.�b���vO_���,#��x�{`[-��\�lp[`���F�p����%�Hv�P�G��PkS44|�L`�$����}	�_���X��{{��Cm���D���.���p`h{��[�����d|��6�sI���D��Np��"p��rt'�����fx]��	I�e�-��L��#�ux���������N�l���x�����a<����4Gp�w��!<-�������q*��zOp��������[|��\$b�,l���+j$�L��#+T'���y���M�i����]�*ze��ws'��IvJ�j�3N���S�����4�!�"["�<��4C'%��RDBTu�����qg�E��8C���V������|/s�tk��"�w-xD�����<
�8����V�����Sa��r�3��������L]YI�bM�!}<������J����f���7H��#�q9������(������P���[4�|2GXw3�DUe
�_?����}c_L>��o �F���/��UO8v\8��������
���K\��a�o�4��#�'�!v`3������E���NnG7��&�
����������Vb9CV���c�M#�/��2\��Y���sR��r<[a�Meu��3da��teJ��Cz�6�i��W�>�S�[����P1��;	��C��G6��H�k�����:�������(tN~���V�x5v$�k���_�z�A�-@m]��d�b��N��'�*J29�Z$U��I�w��������L��I����^�~H��#u��X@o�B�����p��k���e_���r�dX���x�]��C<s'����09I�YE���b
P�o�~l�Ua������E������%c`���>���!|��@(�%O���k���Y���}�n>"�gD�MqF���y(�����e��z=Y�Q�����b�U�!@G'��g0Ix������vI39%;%kUZ>�
3�
�%�Qa^� ���q���
��&�}8�N�H���o|.��TS�<���,�~�9
kn�Z���[	C��T#��e�xN�����H��������v�"��LbV@c�.����%*P��M%-v,������(�m�?@��A����E����Lz/#�Zt+�7��q���sR������&��2�i;������������n,��-���*4_�|_K�/�
�'g���
����B���[���������_��|q�W||���l��J�a��8�P������)���t���?C����vG=8��PT�B��� M}�%������#M}�U������&M}����������Q�z��<b6�F`�/���~E�q��"a%:�3j�����"�2o�"S�J��A632>�iYE�k��c�'�[����C�������;��
��uh��W�	������y`D��pJ����:�&���A��b�l�y?��n���w������,Y���r�?��3��{���$�������vM�[�Er��q%%(�/�%�|K�:<H��+X���?�g����*�
Q�����T6J��� 7�L��#_�`P?4���]���y#O�Q����8�n_%��(����6UNr�2r�3�}����O�������*�J�����QX�KZ�����Hy��I��P��~�L'Pr��i!3;�3�����<�qYvR�_����o��kr����)��V�4:3^e���p����4S{��]��c�o��n�Q���5N���fo[:tZ��(-�}�m����;I�:�"����l����d I����y�i���,hH�[e�r������@h��i���!Z��z*t�6>�s�:1��n�P�����w�4Q#5�t�c
=������vo��p>�d�[����<�6D����sZEj�WI�����iV�����5������&	�� ��j�m��Iu|Q�b��eIN*(���
?�-�u��M�P�O��Z�l�A�����VA� ��!z��W��a�5
q������z�=&h�C�����th����T6�#���S~>�_�
����`Z,Kj���c�i�`��J6)�h��84�x��X���r����#����"I�IO�����(+\	�W�����e�(@�Gka��l��t�#��x�7c���iX�i�1��������"�	�b��T
�2��6��.m�E]1+�0���
����d��hV�y����[�;W��h��(����$��_��B�T��r��$��E).D����X6�+��1�`� �	�	����U��y����u.���l��ss�����:��h�&����b����7'�%���[vR��4�9M~���uo����p�rsX��Kp�P,���]��X��^b�7�XNbb����p� �\�<�'u��nMK��eR*��� 3/�IB��N���LW��x���k���F
{z�!��][/]$Y�B�P�)pWSq��=��kk� �!a(�2����,��F���~�;%��O����F�m��#��]���	Cy��4�)f��������0�������SJ����
��l��f�IqV�c����s���lJx���,V��W�����nV���n����\��u�[Ia�u��o�fz%U�[��j��
��|��W56�NB�8/ln��_����!6��p.�6���S^�Tn���*�������2)C�<
�g�H8��l$(����l:�����M�Lm����$�N�b���j���m�b���|Nd4V���%=�hZf�=�������3����#�$n0�u��!��d"V��y�=�S�N?n�I��f7F����E�����	�z�����&8Nz?�ud���&X���p�����g��a[d����&8czU^����S���l��4��?�	+�V���U���}���:z����8\+���V�m��g��&TR������!D��	A���\A�QrT>�������
����������� �[.�C2D�y�@e�KO���Z 1[�T���I��*y�wU���25gT(�.>�Z����N��i���\Li��m�i_����������y�%�����ejL���p�lgl��*�+����Y���kZ�u6��kR�U^��x��	d��{���X��K�L�57[K�j�@7�����^e��8�>u���1��,=
J�����.f�:5�g�����[<<2�c@�>���!��)��%�����L�8d���t;�t�5.]�N�1������w�����i���;��Gv�9aJ��S���IvTW	U_s��*������=���Cqi
@d���M��b��i����if�,"�L;�<�X�d�n�D�TD,�M�T��l�F���)X�U�_D�5O<5�l��C�-�l'�T��c,@:��������U�1��+"\U�6��"��� c
v����q9Q���?�_�����~	�y'e�Y239��~�:�#������2y�T�6���]Ps���wN�����4--f���c�����V!,����a��	q���p�@&���MCx�-o����p:N���s�&����s�;��'D{F�'X��Fnm�]�_@�������?���'f�
�y��N��L�O
2�����
S����2?��(�����<H�vT�FM�U�f��Q���W��u��wG��Y�
:V����%����A�K���C{���.�	�qQ7��W�uXc�@ST��4g���z��!��yK���2W�����q���}��w�.���P�o;t��
\},���r�[�<�^N��Q��l���Zl�k1VKP��Ct��%��}i���G/�Mp�fer�$w5QnI�.�-�]�����v/����@;�F�G$�����y���d��%� 5?K��E#��Uy`�����`3����{������ �d����=V&O��:4O�w�D�[�&�	v��Xw��=|��9F��@{m��5z��Z���k�|)�|Q*IK)j)e-�!Cq�����q�fP9�U�:D�U�����W�9\����>w�0�^����UE�D2�6��i�3D�L]������f�0��r�!�~D�^��t$����,�b6�x�T�	IR�B��2����$�����.�"@�8;E_>��?'�Sh�"!<���������K��y��b�H*���K�����.�z$��1C>B��mF�oT������w����O�����k�����:���w{��
�:�����x�H?�`!�~��-����M1\d�+�y<W�K.���`��J_�� �X����]�����W����E-\�`��'�8F�K0\��%��+�n��~�>P���W�`������1�f�.>�|1h��2��I!�.�p!���!�1Y<r����s��j�����_�>��
!�4R�>H�0�X�0:���')��PxG���R��0�7.��/�����q�~xaP4�D
"��A�W��b��:G��uy��C_��^.�)���eR���y.����������������]����t^d\Q%�WL���@Q�s��"�����v���*����>���Z&[39[W�B����k�4W����%��21}N*��RwG���O���).�������g�|X��?9��	\uF^yv�����,�����S\	�;�%�,���#f������A^�v���y2.*���i)�����������<�z��e_�� �[~�����z0Sc�;�8��t*A�I� H� ��='�==��9D��H�q��":e���W���)a���u.����/r�UFOE~��B��jF��e�e������~�G�q�����5eh(-��#�
D[�%���
s+������<��{e
������T�d52�U�_���l���������km���Nr
���UF��Qv�q���h�a����c��4l4h�e�|��
������*�����X�I�EJ�{dH�e��w5Q|8��?�)��`:[��������{���|���4yO�X]JNobu��2Ou[�h����M�y��C����T���n���{�A��^F�)��M���U��) o���ZmW�4Ux�f\��2>j��0��U�<y�5���{~N�3S�
�p�U���_�cUF20y������u�0:��K,���W��Fu#���CM���� l�=rU����
,62L(�m,\��),��T{�r��0����)o��7�P��C��@��oZ�A�k����Kr��ai��'rZ��������.�
�����fTQF����}���a������b�uS��q)��Y����T����s��]���L�iU%9*�;�lr��	��0�(��A�nr6D�Z��G�[�7�$.��*��D���M��+�#�Ahr����&�q���.~��������D��|K�����q:��>~���F��<�hqjqEw=3�������DZ
�[*^�?-�}L?f��$ 7G����`�|��$���X<���>Q�RR$������H����Zto�T��aT����}�w�u����l�RWyk���D��a�y��}�������r;W)�Z]l7CQrX�������|��Q�`���<� �EP���"�e�R���M��Z� }��!-��I�����z��J*~KD�_�B^�������� �l0M������iV������r8�.����x�.��O8#�<c,A ��1�$�]t����� T����+��V�m�lT�c��y�����W����{�� ��tmf����c����������S�����W3�"��6VA�P.XJ@jW��;��]@�V��\�V�����7J2���_Kh����u���g5��e9�|���z=�-3a�E��9�/�CM�d�Bg�.�J��h��f��l�ZEC��2�f[���9��
�m��@W��}�<�������s-r�'���l��5��h��T<���k�|g���J��p�=���	��G��L�� C���"�e2�#<7U�v+����bb����P}��]��/����'�p��"��e|����W/I%�^�^Hl�H//������R����q=��Ot(\�f]L��#|��7��N�{j^��`�����+|�!E��b�p����!��F���:�Z�6���F;r��	WKO������1�	�0�:������B�������:�0�b#���?<��]:�TN}�����8�7�����y�xM������;��;t��+�V���qk��������������U�:�g���+X����L&������N��t|��a���7�����'��\aT0���>n��">%�Zf17��r+��u������������y�*�$������,PF�H:LVP�X��F����*�>����p�_�#~������G��8��$�U2���?����q�O�S�mr�C[��Y�' ��q�y���2����g�l,*������4���8b��]��H.����
�p�P��+}�j������D%�X�@��sj����^<���i�����G�t��o���"}-C ���)�>DE�j�j��V����K��l�h��u���7�s��2����?!G���fk+>���f'����J��E:_�)�G!��T�n�rJz���`����e�:"&�U&�Y�]�$������\	��G=��3>������Hn��=���B���R�)�%�2����8��`�LM?~��a�� ��U�_s�E���^�%��m4}�e)�q�l���<U�t�A��.��1���H�$	%G���aZ�f���KL�e�5|��� �2w�o� ��q"p@_Q�2�B������$X0
!���3�!HPt�c�6
s�>*\�	Mi-���4��r��*C����� ��/8"T9
u�np��������@7S��	����6*�>�a���O�qv���
9����(�8F�\�G�&��%T���M�S���-�]1,�<N�kz�U��fF�0���ZgpP1�j�ae��ZG�"�g	S��%����*�nv���"����<3���`E�hJM?��L�~��n�G�\rYe��"�Z��#`	8���=�/�:>:�{l0�K7��={�����3�<7^J�%�@
w�����yg���C�d`�F���U�-�3V�`2qlw��)�;T(��s������K"��B��gmo��(?�U�`[����;��TO�/,X)~��UzP�>j�<�Ph'>q�g�{�����2niZ�)3|�U�)c�+
Gr���;�����n�CC��_
������A�x�b�Ip3�1L��-�6�C[�|,h���T���^��af��o�j�P�re�f�=w�-�����y�������Z���E��R.A*=��9K������������6qb1��a��\���l_V���*=�$���N��[Y%��-{/������v:����fES��������})��y�,��Ds*���[`�J�� ���Cg�����hAi��%9~Qwj�T�;�����Ui�e] M����R��6�/>�����ei�R�������	�=���=!	)]�[�j���}�d!)*������
��������^l��}w����h���{4�M"��$�"����i6e��8�C'Gt�;e�ro����p>�PH��0�1a�����[������H���L`&���
D�:��P�~�2�C�Rf#|�"N�`�E\��7��7�����ET�s5�|�#��;��z���R<L�H��8�d�4�jT$������I��w�����P�������-��e\�����q�����&��?�F*G�C	;�'r#d=�x����*�d����@u����,�p���I�?���[
�l2��d���)Lma��J���
I�l���T<�I�f)��Px[f�Hh�H�m���K`����a���f�VQ?�2��R�"s��N�PC]��I��,�A��~������z� N�$�.Ax��Y3��7��A(��s����y�4�w�W��Lw������ ��fq�����u�%)� 	��hyX��Mn�^uj�K����M]z��Hu���U�����^��fi��H^p�C3��kuX��Ja�H��|���5{����C�C8���[�2�����'����O�E@��t�/�v8��
>f��|r����������J��o��S��7?<W�
?�����.��-�h����Uw�*h������/�B�p������)�L�����l=��@���&Q]�,Z�L����?�qS?>�E?F��6�mo!����,���\G3�h7����S6Z���IF8r������f�����w��m����c�g�V��09����Z�i�����i��������3��F�dB�WM���:��;�E�)��q5XVV�"���y���D��=����Y��f�LhmPV�Fx�<����l�<{j��w����,����-:���1�E ���Q����!.:Xja�Pn�{&<���-��d�(��ud���&�������a	��Q5N���������?���������[s{�������E�{5�{�������]��u�.��z��_K_� B
v4-0010-Type-aliases-for-oid-lookups.patchtext/x-patch; charset=US-ASCII; name=v4-0010-Type-aliases-for-oid-lookups.patchDownload
From f809cb5d91480242949637ff626f3ce5f6155c40 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Wed, 20 Dec 2017 11:22:48 +0700
Subject: [PATCH v4 10/12] Type aliases for oid lookups

Introduce dummy type aliases for OIDs referring to index access methods,
operators, opfamilies, and types. Teach genbki.pl to do the necessary oid
lookups, and to turn the aliases back into oids when writing DDL. Since
all the lookup tables are now built before we start writing the data to
BKI files, we can be less stringent about the order the catalogs are
processed.
---
 src/backend/catalog/README        |   1 -
 src/backend/catalog/genbki.pl     | 149 ++++++++++++++++++++++++++++++++------
 src/include/catalog/genbki.h      |  10 +++
 src/include/catalog/pg_amop.h     |  12 +--
 src/include/catalog/pg_amproc.h   |   6 +-
 src/include/catalog/pg_cast.h     |   4 +-
 src/include/catalog/pg_opclass.h  |   8 +-
 src/include/catalog/pg_operator.h |   6 +-
 src/include/catalog/pg_opfamily.h |   2 +-
 src/include/catalog/pg_range.h    |   4 +-
 10 files changed, 159 insertions(+), 43 deletions(-)

diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index d1ba320..b83bcea 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -131,7 +131,6 @@ POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
-Within this list, pg_type.h must come before pg_attribute.h.
 Also, indexing.h must be last, since the indexes can't be created until all
 the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 00fc35d..62bb503 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -131,6 +131,66 @@ foreach my $header (@input_files)
 	}
 }
 
+# Build lookup tables for reg* substitutions and for pg_attribute
+# copies of pg_type values.
+
+# procedure OID lookup
+my %regprocoids;
+foreach my $row (@{ $catalog_data{pg_proc} })
+{
+	if (defined($regprocoids{ $row->{proname} }))
+	{
+		$regprocoids{ $row->{proname} } = 'MULTIPLE';
+	}
+	else
+	{
+		$regprocoids{ $row->{proname} } = $row->{oid};
+	}
+}
+
+# index access method OID lookup
+my %regamoids;
+foreach my $row (@{ $catalog_data{pg_am} })
+{
+	$regamoids{$row->{amname}} = $row->{oid};
+}
+
+# operator OID lookup
+my %regoperoids;
+foreach my $row (@{ $catalog_data{pg_operator} })
+{
+	# There is no unique name, so we need to invent one that contains
+	# the relevant type names.
+	my $key = "$row->{oprname}($row->{oprleft},$row->{oprright})";
+	$regoperoids{$key} = $row->{oid};
+}
+
+# opfamily OID lookup
+my %regopfoids;
+foreach my $row (@{ $catalog_data{pg_opfamily} })
+{
+	# There is no unique name, so we need to combine access method
+	# and opfamily name.
+	$regopfoids{$row->{opfmethod} . '/' . $row->{opfname}} = $row->{oid};
+}
+
+# type lookups
+my %regtypeoids;
+my @types;
+foreach my $row (@{ $catalog_data{pg_type} })
+{
+	$regtypeoids{$row->{typname}} = $row->{oid};
+	push @types, $row;
+}
+
+# We use OID aliases to indicate when to do OID lookups, so column names
+# have to be turned back into 'oid' before writing the CREATE command.
+my %RENAME_REGOID = (
+	regam => 'oid',
+	regoper => 'oid',
+	regopf => 'oid',
+	regtype => 'oid');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -139,8 +199,6 @@ print $bki "# PostgreSQL $major_version\n";
 # vars to hold data needed for schemapg.h
 my %schemapg_entries;
 my @tables_needing_macros;
-my %regprocoids;
-my @types;
 
 # produce output, one catalog at a time
 foreach my $catname (@catnames)
@@ -162,9 +220,12 @@ foreach my $catname (@catnames)
 	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
-		my $atttype = $column->{type};
 		push @attnames, $attname;
 
+		my $atttype = $column->{type};
+		$atttype = $RENAME_REGOID{$atttype}
+		  if exists $RENAME_REGOID{$atttype};
+
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -210,38 +271,86 @@ foreach my $catname (@catnames)
 				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
 				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
+				# Replace reg* columns' values with OIDs.
 				if ($atttype eq 'regproc')
 				{
 					my $procoid = $regprocoids{ $bki_values{$attname} };
+
+					# If we don't have a unique value to substitute,
+					# just do nothing (regprocin will complain).
 					$bki_values{$attname} = $procoid
 					  if defined($procoid) && $procoid ne 'MULTIPLE';
 				}
+				elsif ($atttype eq 'regam')
+				{
+					my $amoid = $regamoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $amoid
+					  if defined($amoid);
+				}
+				elsif ($atttype eq 'regopf')
+				{
+					my $opfoid = $regopfoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $opfoid
+					  if defined($opfoid);
+				}
+				elsif ($atttype eq 'regoper')
+				{
+					my $operoid = $regoperoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $operoid
+					  if defined($operoid);
+				}
+				elsif ($atttype eq 'regtype')
+				{
+					my $typeoid = $regtypeoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $typeoid
+					  if defined($typeoid);
+				}
 			}
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
+			# We can't do regtype lookups in a general way for
+			# pg_proc, so do special handling here.
 			if ($catname eq 'pg_proc')
 			{
-				if (defined($regprocoids{ $bki_values{proname} }))
+
+				# prorettype
+				# Note: We could handle this automatically by using the
+				# 'regtype' alias, but then we would have to teach
+				# emit_pgattr_row() to change the attribute type back to
+				# oid. Since we have to treat pg_proc differently anyway,
+				# just do the type lookup manually here.
+				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+				$bki_values{prorettype} = $rettypeoid
+				  if defined($rettypeoid);
+
+				# proargtypes
+				if ($bki_values{proargtypes})
 				{
-					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
+					my @argtypenames = split /\s+/, $bki_values{proargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proargtypes} = join(' ', @argtypeoids);
 				}
-				else
+
+				# proallargtypes
+				if ($bki_values{proallargtypes} ne '_null_')
 				{
-					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
+					$bki_values{proallargtypes} =~ s/[{}]//g;
+					my @argtypenames = split /,/, $bki_values{proallargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proallargtypes} =
+						'{' . join(',', @argtypeoids) . '}';
 				}
 			}
 
-			# Save pg_type info for pg_attribute processing below
-			if ($catname eq 'pg_type')
-			{
-				my %type = %bki_values;
-				push @types, \%type;
-			}
-
 			# Add quotes where necessary.
 			quote_bki_values(\%bki_values, $schema);
 
@@ -266,8 +375,6 @@ foreach my $catname (@catnames)
 	{
 
 		# For pg_attribute.h, we generate data entries ourselves.
-		# NB: pg_type.h must come before pg_attribute.h in the input list
-		# of catalog names, since we use info from pg_type.h here.
 		foreach my $table_name (@catnames)
 		{
 			my $table = $catalogs{$table_name};
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index c7e59b2..78dc31f 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -37,6 +37,16 @@
 /* Specifies an abbreviated label for a column name */
 #define BKI_ABBREV(abb)
 
+/* ----------------
+ *	Some columns of type Oid have human-readable entries that are
+ *	resolved when creating postgres.bki.
+ * ----------------
+ */
+#define regam Oid
+#define regoper Oid
+#define regopf Oid
+#define regtype Oid
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index c73f24b..247f067 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -56,13 +56,13 @@
 CATALOG(pg_amop,2602)
 {
 	/* the index opfamily this entry is for */
-	Oid			amopfamily BKI_ABBREV(opf);
+	regopf		amopfamily BKI_ABBREV(opf);
 
 	/* operator's left input data type */
-	Oid			amoplefttype BKI_ABBREV(lt);
+	regtype		amoplefttype BKI_ABBREV(lt);
 
 	/* operator's right input data type */
-	Oid			amoprighttype BKI_ABBREV(rt);
+	regtype		amoprighttype BKI_ABBREV(rt);
 
 	/* operator strategy number */
 	int16		amopstrategy BKI_ABBREV(str);
@@ -71,13 +71,13 @@ CATALOG(pg_amop,2602)
 	char		amoppurpose BKI_ABBREV(pur) BKI_DEFAULT(s);
 
 	/* the operator's pg_operator OID */
-	Oid			amopopr BKI_ABBREV(oper);
+	regoper		amopopr BKI_ABBREV(oper);
 
 	/* the index access method this entry is for */
-	Oid			amopmethod BKI_ABBREV(am);
+	regam		amopmethod BKI_ABBREV(am);
 
 	/* ordering opfamily OID, or 0 if search op */
-	Oid			amopsortfamily BKI_DEFAULT(0);
+	regopf		amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index afdfeb1..17ed0e2 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -45,13 +45,13 @@
 CATALOG(pg_amproc,2603)
 {
 	/* the index opfamily this entry is for */
-	Oid			amprocfamily BKI_ABBREV(opf);
+	regopf		amprocfamily BKI_ABBREV(opf);
 
 	/* procedure's left input data type */
-	Oid			amproclefttype BKI_ABBREV(lt);
+	regtype		amproclefttype BKI_ABBREV(lt);
 
 	/* procedure's right input data type */
-	Oid			amprocrighttype BKI_ABBREV(rt);
+	regtype		amprocrighttype BKI_ABBREV(rt);
 
 	/* support procedure index */
 	int16		amprocnum BKI_ABBREV(num);
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 93e7b56..fbe9949 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -32,8 +32,8 @@
 
 CATALOG(pg_cast,2605)
 {
-	Oid			castsource;		/* source datatype for cast */
-	Oid			casttarget;		/* destination datatype for cast */
+	regtype		castsource;		/* source datatype for cast */
+	regtype		casttarget;		/* destination datatype for cast */
 	Oid			castfunc;		/* cast function; 0 = binary coercible */
 	char		castcontext;	/* contexts in which cast can be used */
 	char		castmethod;		/* cast method */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index e0e4f62..472511c 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -50,7 +50,7 @@
 
 CATALOG(pg_opclass,2616)
 {
-	Oid			opcmethod;		/* index access method opclass is for */
+	regam		opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
 
 	/* namespace of this opclass */
@@ -59,14 +59,14 @@ CATALOG(pg_opclass,2616)
 	/* opclass owner */
 	Oid			opcowner BKI_DEFAULT(PGUID);
 
-	Oid			opcfamily;		/* containing operator family */
-	Oid			opcintype;		/* type of data indexed by opclass */
+	regopf		opcfamily;		/* containing operator family */
+	regtype		opcintype;		/* type of data indexed by opclass */
 
 	/* T if opclass is default for opcintype */
 	bool		opcdefault BKI_DEFAULT(t);
 
 	/* type of data in index, or InvalidOid */
-	Oid			opckeytype BKI_DEFAULT(0);
+	regtype		opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index fe6b660..9dd0b84 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -50,13 +50,13 @@ CATALOG(pg_operator,2617)
 	bool		oprcanhash BKI_DEFAULT(f);
 
 	/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprleft;
+	regtype		oprleft;
 
 	/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprright;
+	regtype		oprright;
 
 	/* result datatype */
-	Oid			oprresult;
+	regtype		oprresult;
 
 	/* OID of commutator oper, or 0 if none */
 	Oid			oprcom BKI_DEFAULT(0);
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index b683770..2f410b4 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -30,7 +30,7 @@
 
 CATALOG(pg_opfamily,2753)
 {
-	Oid			opfmethod;		/* index access method opfamily is for */
+	regam		opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
 
 	/* namespace of this opfamily */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index fa57096..e0bf704 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -30,8 +30,8 @@
 
 CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 {
-	Oid			rngtypid;		/* OID of owning range type */
-	Oid			rngsubtype;		/* OID of range's element type (subtype) */
+	regtype		rngtypid;		/* OID of owning range type */
+	regtype		rngsubtype;		/* OID of range's element type (subtype) */
 	Oid			rngcollation;	/* collation for this range type, or 0 */
 	Oid			rngsubopc;		/* subtype's btree opclass */
 	regproc		rngcanonical;	/* canonicalize range, or 0 */
-- 
2.7.4

v4-0011-Reduce-indentation-level.patchtext/x-patch; charset=US-ASCII; name=v4-0011-Reduce-indentation-level.patchDownload
From fa1e1ee90bb029882952d066e39f2f75a191c71f Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Wed, 20 Dec 2017 11:45:37 +0700
Subject: [PATCH v4 11/12] Reduce indentation level

A previous commit removed a logical block level from Catalog.pm, but
kept the indentation for the sake of patch readability. Fix that here.

Separate out the pg_attribute logic of genbki.pl into its own function
and skip checking if the data is defined. This both narrows and shortens
the data writing loop of the script.
---
 src/backend/catalog/Catalog.pm | 224 +++++++++++++-------------
 src/backend/catalog/genbki.pl  | 350 +++++++++++++++++++++--------------------
 2 files changed, 288 insertions(+), 286 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index c1ea8c6..e19a474 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -33,149 +33,149 @@ sub ParseHeader
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-		my $declaring_attributes;
-		my %catalog;
-		$catalog{columns} = [];
-		$catalog{toasting} = [];
-		$catalog{indexing} = [];
-		my $is_varlen     = 0;
+	my $declaring_attributes;
+	my %catalog;
+	$catalog{columns} = [];
+	$catalog{toasting} = [];
+	$catalog{indexing} = [];
+	my $is_varlen     = 0;
 
-		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		# Scan the input file.
-		while (<$ifh>)
+	# Scan the input file.
+	while (<$ifh>)
+	{
+
+		# Strip C-style comments.
+		s;/\*(.|\n)*\*/;;g;
+		if (m;/\*;)
 		{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
-			{
+			# handle multi-line comments properly.
+			my $next_line = <$ifh>;
+			die "$input_file: ends within C-style comment\n"
+			  if !defined $next_line;
+			$_ .= $next_line;
+			redo;
+		}
 
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
-			}
+		# Strip useless whitespace and trailing semicolons.
+		chomp;
+		s/^\s+//;
+		s/;\s*$//;
+		s/\s+/ /g;
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+		# Push the data into the appropriate data structure.
+		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+		{
+			my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
+			push @{ $catalog{toasting} },
+			  "declare toast $toast_oid $index_oid on $toast_name\n";
+		}
+		elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+		{
+			my ($is_unique, $index_name, $index_oid, $using) =
+			  ($1, $2, $3, $4);
+			push @{ $catalog{indexing} },
+			  sprintf(
+				"declare %sindex %s %s %s\n",
+				$is_unique ? 'unique ' : '',
+				$index_name, $index_oid, $using);
+		}
+		elsif (/^BUILD_INDICES/)
+		{
+			push @{ $catalog{indexing} }, "build indices\n";
+		}
+		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+		{
+			$catalog{catname} = $1;
+			$catalog{relation_oid} = $2;
 
-			# Push the data into the appropriate data structure.
-			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{toasting} },
-				  "declare toast $toast_oid $index_oid on $toast_name\n";
-			}
-			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+			$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
+			$catalog{shared_relation} =
+			  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
+			$catalog{without_oids} =
+			  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
+			$catalog{rowtype_oid} =
+			  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
+			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
+			$declaring_attributes = 1;
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
+			if (/^#/)
 			{
-				my ($is_unique, $index_name, $index_oid, $using) =
-				  ($1, $2, $3, $4);
-				push @{ $catalog{indexing} },
-				  sprintf(
-					"declare %sindex %s %s %s\n",
-					$is_unique ? 'unique ' : '',
-					$index_name, $index_oid, $using);
+				if (/^#ifdef\s+CATALOG_VARLEN/)
+				{
+					$is_varlen = 1;
+				}
+				next;
 			}
-			elsif (/^BUILD_INDICES/)
+			if (/^}/)
 			{
-				push @{ $catalog{indexing} }, "build indices\n";
+				undef $declaring_attributes;
 			}
-			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			else
 			{
-				$catalog{catname} = $1;
-				$catalog{relation_oid} = $2;
+				my %column;
+				if ($is_varlen)
+				{
+					$column{is_varlen} = 1;
+				}
+				my @attopts = split /\s+/, $_;
+				my $atttype = shift @attopts;
+				my $attname = shift @attopts;
+				die "parse error ($input_file)"
+				  unless ($attname and $atttype);
 
-				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
-				$catalog{shared_relation} =
-				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
-				$catalog{without_oids} =
-				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				$catalog{rowtype_oid} =
-				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
-				$declaring_attributes = 1;
-			}
-			elsif ($declaring_attributes)
-			{
-				next if (/^{|^$/);
-				if (/^#/)
+				if (exists $RENAME_ATTTYPE{$atttype})
 				{
-					if (/^#ifdef\s+CATALOG_VARLEN/)
-					{
-						$is_varlen = 1;
-					}
-					next;
+					$atttype = $RENAME_ATTTYPE{$atttype};
 				}
-				if (/^}/)
+				if ($attname =~ /(.*)\[.*\]/)    # array attribute
 				{
-					undef $declaring_attributes;
+					$attname = $1;
+					$atttype .= '[]';
 				}
-				else
+
+				$column{type} = $atttype;
+				$column{name} = $attname;
+
+				foreach my $attopt (@attopts)
 				{
-					my %column;
-					if ($is_varlen)
+					if ($attopt eq 'BKI_FORCE_NULL')
 					{
-						$column{is_varlen} = 1;
+						$column{forcenull} = 1;
 					}
-					my @attopts = split /\s+/, $_;
-					my $atttype = shift @attopts;
-					my $attname = shift @attopts;
-					die "parse error ($input_file)"
-					  unless ($attname and $atttype);
-
-					if (exists $RENAME_ATTTYPE{$atttype})
+					elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 					{
-						$atttype = $RENAME_ATTTYPE{$atttype};
+						$column{forcenotnull} = 1;
 					}
-					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
 					{
-						$attname = $1;
-						$atttype .= '[]';
+						$column{default} = $1;
 					}
-
-					$column{type} = $atttype;
-					$column{name} = $attname;
-
-					foreach my $attopt (@attopts)
+					elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
+					{
+						$column{abbrev} = $1;
+					}
+					else
 					{
-						if ($attopt eq 'BKI_FORCE_NULL')
-						{
-							$column{forcenull} = 1;
-						}
-						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
-						{
-							$column{forcenotnull} = 1;
-						}
-						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
-						{
-							$column{default} = $1;
-						}
-						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
-						{
-							$column{abbrev} = $1;
-						}
-						else
-						{
-							die
+						die
 "unknown column option $attopt on column $attname";
-						}
+					}
 
-						if ($column{forcenull} and $column{forcenotnull})
-						{
-							die "$attname is forced both null and not null";
-						}
+					if ($column{forcenull} and $column{forcenotnull})
+					{
+						die "$attname is forced both null and not null";
 					}
-					push @{ $catalog{columns} }, \%column;
 				}
+				push @{ $catalog{columns} }, \%column;
 			}
 		}
-		close $ifh;
+	}
+	close $ifh;
 	return \%catalog;
 }
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 62bb503..2570fd3 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -252,201 +252,126 @@ foreach my $catname (@catnames)
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog_data{$catname})
-	{
-
-		# Ordinary catalog with a data file
-		foreach my $row (@{ $catalog_data{$catname} })
-		{
-			my %bki_values = %$row;
-
-			# Perform required substitutions on fields
-			foreach my $column (@$schema)
-			{
-				my $attname = $column->{name};
-				my $atttype = $column->{type};
-
-				# Substitute constant values we acquired above.
-				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
-
-				# Replace reg* columns' values with OIDs.
-				if ($atttype eq 'regproc')
-				{
-					my $procoid = $regprocoids{ $bki_values{$attname} };
-
-					# If we don't have a unique value to substitute,
-					# just do nothing (regprocin will complain).
-					$bki_values{$attname} = $procoid
-					  if defined($procoid) && $procoid ne 'MULTIPLE';
-				}
-				elsif ($atttype eq 'regam')
-				{
-					my $amoid = $regamoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $amoid
-					  if defined($amoid);
-				}
-				elsif ($atttype eq 'regopf')
-				{
-					my $opfoid = $regopfoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $opfoid
-					  if defined($opfoid);
-				}
-				elsif ($atttype eq 'regoper')
-				{
-					my $operoid = $regoperoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $operoid
-					  if defined($operoid);
-				}
-				elsif ($atttype eq 'regtype')
-				{
-					my $typeoid = $regtypeoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $typeoid
-					  if defined($typeoid);
-				}
-			}
-
-			# We can't do regtype lookups in a general way for
-			# pg_proc, so do special handling here.
-			if ($catname eq 'pg_proc')
-			{
-
-				# prorettype
-				# Note: We could handle this automatically by using the
-				# 'regtype' alias, but then we would have to teach
-				# emit_pgattr_row() to change the attribute type back to
-				# oid. Since we have to treat pg_proc differently anyway,
-				# just do the type lookup manually here.
-				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
-				$bki_values{prorettype} = $rettypeoid
-				  if defined($rettypeoid);
-
-				# proargtypes
-				if ($bki_values{proargtypes})
-				{
-					my @argtypenames = split /\s+/, $bki_values{proargtypes};
-					my @argtypeoids;
-					foreach my $argtypename (@argtypenames)
-					{
-						my $argtypeoid  = $regtypeoids{$argtypename};
-						push @argtypeoids, $argtypeoid;
-					}
-					$bki_values{proargtypes} = join(' ', @argtypeoids);
-				}
-
-				# proallargtypes
-				if ($bki_values{proallargtypes} ne '_null_')
-				{
-					$bki_values{proallargtypes} =~ s/[{}]//g;
-					my @argtypenames = split /,/, $bki_values{proallargtypes};
-					my @argtypeoids;
-					foreach my $argtypename (@argtypenames)
-					{
-						my $argtypeoid  = $regtypeoids{$argtypename};
-						push @argtypeoids, $argtypeoid;
-					}
-					$bki_values{proallargtypes} =
-						'{' . join(',', @argtypeoids) . '}';
-				}
-			}
-
-			# Add quotes where necessary.
-			quote_bki_values(\%bki_values, $schema);
-
-			# Write to postgres.bki
-			bki_insert(\%bki_values, @attnames);
-
-			# Write comments to postgres.description and
-			# postgres.shdescription
-			if (defined $bki_values{descr})
-			{
-				printf $descr "%s\t%s\t0\t%s\n",
-				  $bki_values{oid}, $catname, $bki_values{descr};
-			}
-			if (defined $bki_values{shdescr})
-			{
-				printf $shdescr "%s\t%s\t%s\n",
-				  $bki_values{oid}, $catname, $bki_values{shdescr};
-			}
-		}
-	}
 	if ($catname eq 'pg_attribute')
 	{
+		gen_pg_attribute($schema, @attnames);
+	}
+
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
+	{
+		my %bki_values = %$row;
 
-		# For pg_attribute.h, we generate data entries ourselves.
-		foreach my $table_name (@catnames)
+		# Perform required substitutions on fields
+		foreach my $column (@$schema)
 		{
-			my $table = $catalogs{$table_name};
+			my $attname = $column->{name};
+			my $atttype = $column->{type};
 
-			# Currently, all bootstrapped relations also need schemapg.h
-			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if !$table->{schema_macro};
+			# Substitute constant values we acquired above.
+			# (It's intentional that this can apply to parts of a field).
+			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-			$schemapg_entries{$table_name} = [];
-			push @tables_needing_macros, $table_name;
+			# Replace reg* columns' values with OIDs.
+			if ($atttype eq 'regproc')
+			{
+				my $procoid = $regprocoids{ $bki_values{$attname} };
 
-			# Generate entries for user attributes.
-			my $attnum       = 0;
-			my $priornotnull = 1;
-			my @user_attrs   = @{ $table->{columns} };
-			foreach my $attr (@user_attrs)
+				# If we don't have a unique value to substitute,
+				# just do nothing (regprocin will complain).
+				$bki_values{$attname} = $procoid
+				  if defined($procoid) && $procoid ne 'MULTIPLE';
+			}
+			elsif ($atttype eq 'regam')
 			{
-				$attnum++;
-				my %row;
-				$row{attnum}   = $attnum;
-				$row{attrelid} = $table->{relation_oid};
+				my $amoid = $regamoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $amoid
+				  if defined($amoid);
+			}
+			elsif ($atttype eq 'regopf')
+			{
+				my $opfoid = $regopfoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $opfoid
+				  if defined($opfoid);
+			}
+			elsif ($atttype eq 'regoper')
+			{
+				my $operoid = $regoperoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $operoid
+				  if defined($operoid);
+			}
+			elsif ($atttype eq 'regtype')
+			{
+				my $typeoid = $regtypeoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $typeoid
+				  if defined($typeoid);
+			}
+		}
 
-				emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
-				$priornotnull &= ($row{attnotnull} eq 't');
+		# We can't do regtype lookups in a general way for
+		# pg_proc, so do special handling here.
+		if ($catname eq 'pg_proc')
+		{
 
-				# If it's bootstrapped, put an entry in postgres.bki.
-				if ($table->{bootstrap})
+			# prorettype
+			# Note: We could handle this automatically by using the
+			# 'regtype' alias, but then we would have to teach
+			# emit_pgattr_row() to change the attribute type back to
+			# oid. Since we have to treat pg_proc differently anyway,
+			# just do the type lookup manually here.
+			my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+			$bki_values{prorettype} = $rettypeoid
+			  if defined($rettypeoid);
+
+			# proargtypes
+			if ($bki_values{proargtypes})
+			{
+				my @argtypenames = split /\s+/, $bki_values{proargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
 				{
-					bki_insert(\%row, @attnames);
+					my $argtypeoid  = $regtypeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
 				}
-
-				# Store schemapg entries for later.
-				emit_schemapg_row(\%row, $schema);
-				push @{ $schemapg_entries{$table_name} },
-				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @row{@attnames});
+				$bki_values{proargtypes} = join(' ', @argtypeoids);
 			}
 
-			# Generate entries for system attributes.
-			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($table->{bootstrap})
+			# proallargtypes
+			if ($bki_values{proallargtypes} ne '_null_')
 			{
-				$attnum = 0;
-				my @SYS_ATTRS = (
-					{ name => 'ctid',     type => 'tid' },
-					{ name => 'oid',      type => 'oid' },
-					{ name => 'xmin',     type => 'xid' },
-					{ name => 'cmin',     type => 'cid' },
-					{ name => 'xmax',     type => 'xid' },
-					{ name => 'cmax',     type => 'cid' },
-					{ name => 'tableoid', type => 'oid' });
-				foreach my $attr (@SYS_ATTRS)
+				$bki_values{proallargtypes} =~ s/[{}]//g;
+				my @argtypenames = split /,/, $bki_values{proallargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
 				{
-					$attnum--;
-					my %row;
-					$row{attnum}        = $attnum;
-					$row{attrelid}      = $table->{relation_oid};
-					$row{attstattarget} = '0';
+					my $argtypeoid  = $regtypeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
+				}
+				$bki_values{proallargtypes} =
+					'{' . join(',', @argtypeoids) . '}';
+			}
+		}
 
-					emit_pgattr_row(\%row, $attr, 1, $schema);
+		# Add quotes where necessary.
+		quote_bki_values(\%bki_values, $schema);
 
-					# some catalogs don't have oids
-					next
-					  if $table->{without_oids}
-						  && $row{attname} eq 'oid';
+		# Write to postgres.bki
+		bki_insert(\%bki_values, @attnames);
 
-					bki_insert(\%row, @attnames);
-				}
-			}
+		# Write comments to postgres.description and
+		# postgres.shdescription
+		if (defined $bki_values{descr})
+		{
+			printf $descr "%s\t%s\t0\t%s\n",
+			  $bki_values{oid}, $catname, $bki_values{descr};
+		}
+		if (defined $bki_values{shdescr})
+		{
+			printf $shdescr "%s\t%s\t%s\n",
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
-
 	print $bki "close $catname\n";
 }
 
@@ -557,6 +482,83 @@ sub quote_bki_values
 	}
 }
 
+# For pg_attribute.h, we generate data entries ourselves.
+sub gen_pg_attribute
+{
+	my $schema = shift;
+	my @attnames = @_;
+
+	foreach my $table_name (@catnames)
+	{
+		my $table = $catalogs{$table_name};
+
+		# Currently, all bootstrapped relations also need schemapg.h
+		# entries, so skip if the relation isn't to be in schemapg.h.
+		next if !$table->{schema_macro};
+
+		$schemapg_entries{$table_name} = [];
+		push @tables_needing_macros, $table_name;
+
+		# Generate entries for user attributes.
+		my $attnum       = 0;
+		my $priornotnull = 1;
+		my @user_attrs   = @{ $table->{columns} };
+		foreach my $attr (@user_attrs)
+		{
+			$attnum++;
+			my %row;
+			$row{attnum}   = $attnum;
+			$row{attrelid} = $table->{relation_oid};
+
+			emit_pgattr_row(\%row, $attr, $priornotnull, $schema);
+			$priornotnull &= ($row{attnotnull} eq 't');
+
+			# If it's bootstrapped, put an entry in postgres.bki.
+			if ($table->{bootstrap})
+			{
+				bki_insert(\%row, @attnames);
+			}
+
+			# Store schemapg entries for later.
+			emit_schemapg_row(\%row, $schema);
+			push @{ $schemapg_entries{$table_name} },
+			  sprintf "{ %s }",
+				join(', ', grep { defined $_ } @row{@attnames});
+		}
+
+		# Generate entries for system attributes.
+		# We only need postgres.bki entries, not schemapg.h entries.
+		if ($table->{bootstrap})
+		{
+			$attnum = 0;
+			my @SYS_ATTRS = (
+				{ name => 'ctid',     type => 'tid' },
+				{ name => 'oid',      type => 'oid' },
+				{ name => 'xmin',     type => 'xid' },
+				{ name => 'cmin',     type => 'cid' },
+				{ name => 'xmax',     type => 'xid' },
+				{ name => 'cmax',     type => 'cid' },
+				{ name => 'tableoid', type => 'oid' });
+			foreach my $attr (@SYS_ATTRS)
+			{
+				$attnum--;
+				my %row;
+				$row{attnum}        = $attnum;
+				$row{attrelid}      = $table->{relation_oid};
+				$row{attstattarget} = '0';
+
+				emit_pgattr_row(\%row, $attr, 1, $schema);
+
+				# some catalogs don't have oids
+				next
+				  if $table->{without_oids}
+					  && $row{attname} eq 'oid';
+
+				bki_insert(\%row, @attnames);
+			}
+		}
+	}
+}
 
 # Given the schema of pg_attribute, generate an entry for it using information
 # about the attribute it describes.  Any value that is not handled here
-- 
2.7.4

v4-0012-Move-toast-index-macros-to-the-pg_-catalog-header.patchtext/x-patch; charset=US-ASCII; name=v4-0012-Move-toast-index-macros-to-the-pg_-catalog-header.patchDownload
From 9db2327a68f61f84dc70c6f55f29fcbcdec244e2 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 18 Dec 2017 18:33:01 +0700
Subject: [PATCH v4 12/12] Move toast/index macros to the pg_* catalog headers.

This makes the catalogs headers the Single Point of Truth for schema info,
and also allows some #includes to indexing.h and toasting.h to be removed,
since every file that included them for a toast or index ID already includes
the header for the relevant catalog.
---
 contrib/dblink/dblink.c                       |   1 -
 contrib/sepgsql/database.c                    |   1 -
 contrib/sepgsql/proc.c                        |   1 -
 contrib/sepgsql/relation.c                    |   1 -
 contrib/sepgsql/schema.c                      |   1 -
 src/backend/catalog/Catalog.pm                |   4 -
 src/backend/catalog/Makefile                  |   4 +-
 src/backend/catalog/README                    |   8 +-
 src/backend/catalog/catalog.c                 |   2 -
 src/backend/catalog/genbki.pl                 |   6 +-
 src/backend/catalog/objectaddress.c           |   1 -
 src/backend/catalog/pg_inherits.c             |   1 -
 src/backend/commands/aggregatecmds.c          |   1 -
 src/backend/commands/indexcmds.c              |   1 -
 src/backend/replication/logical/message.c     |   2 -
 src/backend/utils/adt/enum.c                  |   1 -
 src/backend/utils/cache/relfilenodemap.c      |   1 -
 src/backend/utils/cache/syscache.c            |   1 -
 src/backend/utils/cache/ts_cache.c            |   1 -
 src/backend/utils/cache/typcache.c            |   1 -
 src/backend/utils/init/postinit.c             |   1 -
 src/include/catalog/duplicate_oids            |   2 +-
 src/include/catalog/genbki.h                  |  24 ++
 src/include/catalog/indexing.h                | 322 --------------------------
 src/include/catalog/pg_aggregate.h            |   3 +
 src/include/catalog/pg_am.h                   |   5 +
 src/include/catalog/pg_amop.h                 |   7 +
 src/include/catalog/pg_amproc.h               |   5 +
 src/include/catalog/pg_attrdef.h              |   7 +
 src/include/catalog/pg_attribute.h            |   5 +
 src/include/catalog/pg_auth_members.h         |   5 +
 src/include/catalog/pg_authid.h               |   4 +
 src/include/catalog/pg_cast.h                 |   5 +
 src/include/catalog/pg_class.h                |   7 +
 src/include/catalog/pg_collation.h            |   5 +
 src/include/catalog/pg_constraint.h           |  10 +
 src/include/catalog/pg_conversion.h           |   7 +
 src/include/catalog/pg_database.h             |   5 +
 src/include/catalog/pg_db_role_setting.h      |   6 +
 src/include/catalog/pg_default_acl.h          |   5 +
 src/include/catalog/pg_depend.h               |   5 +
 src/include/catalog/pg_description.h          |   4 +
 src/include/catalog/pg_enum.h                 |   7 +
 src/include/catalog/pg_event_trigger.h        |   5 +
 src/include/catalog/pg_extension.h            |   5 +
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +
 src/include/catalog/pg_foreign_server.h       |   5 +
 src/include/catalog/pg_foreign_table.h        |   3 +
 src/include/catalog/pg_index.h                |   5 +
 src/include/catalog/pg_inherits.h             |   5 +
 src/include/catalog/pg_init_privs.h           |   3 +
 src/include/catalog/pg_language.h             |   5 +
 src/include/catalog/pg_largeobject.h          |   3 +
 src/include/catalog/pg_largeobject_metadata.h |   3 +
 src/include/catalog/pg_namespace.h            |   5 +
 src/include/catalog/pg_opclass.h              |   5 +
 src/include/catalog/pg_operator.h             |   5 +
 src/include/catalog/pg_opfamily.h             |   5 +
 src/include/catalog/pg_partitioned_table.h    |   3 +
 src/include/catalog/pg_pltemplate.h           |   3 +
 src/include/catalog/pg_policy.h               |   5 +
 src/include/catalog/pg_proc.h                 |   6 +
 src/include/catalog/pg_publication.h          |   7 +
 src/include/catalog/pg_publication_rel.h      |   3 +
 src/include/catalog/pg_range.h                |   3 +
 src/include/catalog/pg_replication_origin.h   |   5 +
 src/include/catalog/pg_rewrite.h              |   6 +
 src/include/catalog/pg_seclabel.h             |   4 +
 src/include/catalog/pg_sequence.h             |   3 +
 src/include/catalog/pg_shdepend.h             |   5 +
 src/include/catalog/pg_shdescription.h        |   6 +
 src/include/catalog/pg_shseclabel.h           |   6 +
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   8 +
 src/include/catalog/pg_subscription.h         |   5 +
 src/include/catalog/pg_subscription_rel.h     |   3 +
 src/include/catalog/pg_tablespace.h           |   5 +
 src/include/catalog/pg_transform.h            |   5 +
 src/include/catalog/pg_trigger.h              |   8 +
 src/include/catalog/pg_ts_config.h            |   5 +
 src/include/catalog/pg_ts_config_map.h        |   3 +
 src/include/catalog/pg_ts_dict.h              |   5 +
 src/include/catalog/pg_ts_parser.h            |   5 +
 src/include/catalog/pg_ts_template.h          |   5 +
 src/include/catalog/pg_type.h                 |   5 +
 src/include/catalog/pg_user_mapping.h         |   5 +
 src/include/catalog/toasting.h                |  40 ----
 src/include/catalog/unused_oids               |   2 +-
 88 files changed, 346 insertions(+), 396 deletions(-)

diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index a7e22b3..664b23d 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -38,7 +38,6 @@
 
 #include "access/htup_details.h"
 #include "access/reloptions.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_foreign_data_wrapper.h"
 #include "catalog/pg_foreign_server.h"
diff --git a/contrib/sepgsql/database.c b/contrib/sepgsql/database.c
index 8fc5a87..66f71b4 100644
--- a/contrib/sepgsql/database.c
+++ b/contrib/sepgsql/database.c
@@ -16,7 +16,6 @@
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/pg_database.h"
-#include "catalog/indexing.h"
 #include "commands/dbcommands.h"
 #include "commands/seclabel.h"
 #include "utils/builtins.h"
diff --git a/contrib/sepgsql/proc.c b/contrib/sepgsql/proc.c
index 14faa5fa..f1045cf 100644
--- a/contrib/sepgsql/proc.c
+++ b/contrib/sepgsql/proc.c
@@ -15,7 +15,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_namespace.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/contrib/sepgsql/relation.c b/contrib/sepgsql/relation.c
index 228869a..df0dd65 100644
--- a/contrib/sepgsql/relation.c
+++ b/contrib/sepgsql/relation.c
@@ -14,7 +14,6 @@
 #include "access/heapam.h"
 #include "access/htup_details.h"
 #include "access/sysattr.h"
-#include "catalog/indexing.h"
 #include "catalog/dependency.h"
 #include "catalog/pg_attribute.h"
 #include "catalog/pg_class.h"
diff --git a/contrib/sepgsql/schema.c b/contrib/sepgsql/schema.c
index d418577..5ca87e7 100644
--- a/contrib/sepgsql/schema.c
+++ b/contrib/sepgsql/schema.c
@@ -15,7 +15,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_database.h"
 #include "catalog/pg_namespace.h"
 #include "commands/seclabel.h"
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index e19a474..ca2c552 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -82,10 +82,6 @@ sub ParseHeader
 				$is_unique ? 'unique ' : '',
 				$index_name, $index_oid, $using);
 		}
-		elsif (/^BUILD_INDICES/)
-		{
-			push @{ $catalog{indexing} }, "build indices\n";
-		}
 		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 		{
 			$catalog{catname} = $1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 23858b8..0a2da00 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -25,8 +25,7 @@ include $(top_srcdir)/src/backend/common.mk
 all: $(BKIFILES) schemapg.h
 
 # Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
+# the catalog header files are assembled into postgres.bki.
 
 POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
@@ -46,7 +45,6 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
 	pg_subscription_rel.h \
-	toasting.h indexing.h \
     )
 
 POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index b83bcea..722a526 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -131,10 +131,10 @@ POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
-Also, indexing.h must be last, since the indexes can't be created until all
-the tables are in place, and toasting.h should probably be next-to-last
-(or at least after all the tables that need toast tables).  There are
-reputedly some other order dependencies in the .bki list, too.
+There are reputedly some other order dependencies in the BKI list, too.
+
+-As of Postgres 11, toast and index commands are stored in the relevant
+pg_*.h file, and not in toasting.h or indexing.h.
 
 -----------------------------------------------------------------
 
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index f50ae3e..fc8c5ed 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -24,7 +24,6 @@
 #include "access/sysattr.h"
 #include "access/transam.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_auth_members.h"
 #include "catalog/pg_authid.h"
@@ -39,7 +38,6 @@
 #include "catalog/pg_subscription.h"
 #include "catalog/pg_tablespace.h"
 #include "catalog/pg_type.h"
-#include "catalog/toasting.h"
 #include "miscadmin.h"
 #include "storage/fd.h"
 #include "utils/fmgroids.h"
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 2570fd3..dbac586 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -378,7 +378,10 @@ foreach my $catname (@catnames)
 # Any information needed for the BKI that is not contained in a pg_*.h header
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
-# Write out declare toast/index statements
+# Write out declare toast/index statements. Index commands must be last,
+# since the indexes can't be created until all the tables are in place,
+# and toast commands are next-to-last to make sure they are run after
+# creating all the tables that need toast tables.
 foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
@@ -388,6 +391,7 @@ foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
+print $bki "build indices\n";
 
 
 # Now generate schemapg.h
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 9553675..f32cd9e 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -18,7 +18,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/objectaddress.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_amop.h"
diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c
index 1bd8a58..94a4bf9 100644
--- a/src/backend/catalog/pg_inherits.c
+++ b/src/backend/catalog/pg_inherits.c
@@ -22,7 +22,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_inherits.h"
 #include "catalog/pg_inherits_fn.h"
 #include "parser/parse_type.h"
diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c
index 2e2ee88..d09ca8a 100644
--- a/src/backend/commands/aggregatecmds.c
+++ b/src/backend/commands/aggregatecmds.c
@@ -24,7 +24,6 @@
 
 #include "access/htup_details.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_aggregate_fn.h"
 #include "catalog/pg_proc.h"
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 97091dd..0daa020 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -22,7 +22,6 @@
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/index.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_opclass.h"
 #include "catalog/pg_opfamily.h"
diff --git a/src/backend/replication/logical/message.c b/src/backend/replication/logical/message.c
index ef7d6c5..7a72f88 100644
--- a/src/backend/replication/logical/message.c
+++ b/src/backend/replication/logical/message.c
@@ -35,8 +35,6 @@
 
 #include "access/xact.h"
 
-#include "catalog/indexing.h"
-
 #include "nodes/execnodes.h"
 
 #include "replication/message.h"
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c
index 048a08d..b3dae6b 100644
--- a/src/backend/utils/adt/enum.c
+++ b/src/backend/utils/adt/enum.c
@@ -16,7 +16,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_enum.h"
 #include "libpq/pqformat.h"
 #include "utils/array.h"
diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c
index 3e811e1..0526781 100644
--- a/src/backend/utils/cache/relfilenodemap.c
+++ b/src/backend/utils/cache/relfilenodemap.c
@@ -16,7 +16,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_class.h"
 #include "catalog/pg_tablespace.h"
 #include "miscadmin.h"
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 888edbb..e547c2c 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -22,7 +22,6 @@
 
 #include "access/htup_details.h"
 #include "access/sysattr.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_amop.h"
diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c
index 29cf93a..f5c8d66 100644
--- a/src/backend/utils/cache/ts_cache.c
+++ b/src/backend/utils/cache/ts_cache.c
@@ -30,7 +30,6 @@
 #include "access/heapam.h"
 #include "access/htup_details.h"
 #include "access/xact.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_ts_config.h"
 #include "catalog/pg_ts_config_map.h"
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index f6450c4..2fdc34d 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -48,7 +48,6 @@
 #include "access/nbtree.h"
 #include "access/parallel.h"
 #include "access/session.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_constraint.h"
 #include "catalog/pg_enum.h"
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 20f1d27..128255b 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -26,7 +26,6 @@
 #include "access/xact.h"
 #include "access/xlog.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_authid.h"
 #include "catalog/pg_database.h"
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 9732f61..e7af174 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"));
 }
 
 my %oidcounts;
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 78dc31f..3436fd3 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -57,4 +57,28 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * Statements the bootstrap parser will turn into BootstrapToastTable
+ * commands.
+ * Each line specifies the system catalog that needs a toast table,
+ * the OID to assign to the toast table, and the OID to assign to the
+ * toast table's index.  The reason we hard-wire these OIDs is that we
+ * need stable OIDs for shared relations, and that includes toast tables
+ * of shared relations.
+ */
+#define DECLARE_TOAST(name,toastoid,indexoid)
+
+/* Statements the bootstrap parser will turn into DefineIndex calls.
+ * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX.  The first two
+ * arguments are the index name and OID, the rest is much like a standard
+ * 'create index' SQL command.
+ *
+ * For each index, we also provide a #define for its OID.  References to
+ * the index in the C code should always use these #defines, not the actual
+ * index name (much less the numeric OID).
+ */
+#define DECLARE_INDEX(name,oid,decl)
+#define DECLARE_UNIQUE_INDEX(name,oid,decl)
+
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index f1f42a8..fb843f7 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -40,326 +40,4 @@ extern void CatalogTupleUpdateWithInfo(Relation heapRel,
 						   CatalogIndexState indstate);
 extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
-
-/*
- * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for Catalog.pm.
- */
-#define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
-#define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
-#define BUILD_INDICES
-
-
-/*
- * What follows are lines processed by genbki.pl to create the statements
- * the bootstrap parser will turn into DefineIndex calls.
- *
- * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX.  The first two
- * arguments are the index name and OID, the rest is much like a standard
- * 'create index' SQL command.
- *
- * For each index, we also provide a #define for its OID.  References to
- * the index in the C code should always use these #defines, not the actual
- * index name (much less the numeric OID).
- */
-
-DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops));
-#define AggregateFnoidIndexId  2650
-
-DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops));
-#define AmNameIndexId  2651
-DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops));
-#define AmOidIndexId  2652
-
-DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
-#define AccessMethodStrategyIndexId  2653
-DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
-#define AccessMethodOperatorIndexId  2654
-DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops));
-#define AccessMethodOperatorOidIndexId	2756
-
-DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
-#define AccessMethodProcedureIndexId  2655
-DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops));
-#define AccessMethodProcedureOidIndexId  2757
-
-DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
-#define AttrDefaultIndexId	2656
-DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops));
-#define AttrDefaultOidIndexId  2657
-
-DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
-#define AttributeRelidNameIndexId  2658
-DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
-#define AttributeRelidNumIndexId  2659
-
-DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops));
-#define AuthIdRolnameIndexId	2676
-DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops));
-#define AuthIdOidIndexId	2677
-
-DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops));
-#define AuthMemRoleMemIndexId	2694
-DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops));
-#define AuthMemMemRoleIndexId	2695
-
-DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops));
-#define CastOidIndexId	2660
-DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops));
-#define CastSourceTargetIndexId  2661
-
-DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops));
-#define ClassOidIndexId  2662
-DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops));
-#define ClassNameNspIndexId  2663
-DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
-#define ClassTblspcRelfilenodeIndexId  3455
-
-DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
-#define CollationNameEncNspIndexId 3164
-DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(oid oid_ops));
-#define CollationOidIndexId  3085
-
-DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
-#define ConstraintNameNspIndexId  2664
-DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops));
-#define ConstraintRelidIndexId	2665
-DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops));
-#define ConstraintTypidIndexId	2666
-DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops));
-#define ConstraintOidIndexId  2667
-
-DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
-#define ConversionDefaultIndexId  2668
-DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
-#define ConversionNameNspIndexId  2669
-DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops));
-#define ConversionOidIndexId  2670
-
-DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops));
-#define DatabaseNameIndexId  2671
-DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops));
-#define DatabaseOidIndexId	2672
-
-DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
-#define DependDependerIndexId  2673
-DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
-#define DependReferenceIndexId	2674
-
-DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
-#define DescriptionObjIndexId  2675
-DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops));
-#define SharedDescriptionObjIndexId 2397
-
-DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops));
-#define EnumOidIndexId	3502
-DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops));
-#define EnumTypIdLabelIndexId 3503
-DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, on pg_enum using btree(enumtypid oid_ops, enumsortorder float4_ops));
-#define EnumTypIdSortOrderIndexId 3534
-
-DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops));
-#define IndexIndrelidIndexId  2678
-DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops));
-#define IndexRelidIndexId  2679
-
-DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
-#define InheritsRelidSeqnoIndexId  2680
-DECLARE_INDEX(pg_inherits_parent_index, 2187, on pg_inherits using btree(inhparent oid_ops));
-#define InheritsParentIndexId  2187
-
-DECLARE_UNIQUE_INDEX(pg_init_privs_o_c_o_index, 3395, on pg_init_privs using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
-#define InitPrivsObjIndexId  3395
-
-DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops));
-#define LanguageNameIndexId  2681
-DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops));
-#define LanguageOidIndexId	2682
-
-DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops));
-#define LargeObjectLOidPNIndexId  2683
-
-DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops));
-#define LargeObjectMetadataOidIndexId	2996
-
-DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops));
-#define StatisticExtOidIndexId	3380
-DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops));
-#define StatisticExtNameIndexId 3997
-DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops));
-#define StatisticExtRelidIndexId 3379
-
-DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
-#define NamespaceNameIndexId  2684
-DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
-#define NamespaceOidIndexId  2685
-
-DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
-#define OpclassAmNameNspIndexId  2686
-DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops));
-#define OpclassOidIndexId  2687
-
-DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops));
-#define OperatorOidIndexId	2688
-DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
-#define OperatorNameNspIndexId	2689
-
-DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
-#define OpfamilyAmNameNspIndexId  2754
-DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops));
-#define OpfamilyOidIndexId	2755
-
-DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops));
-#define PLTemplateNameIndexId  1137
-
-DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops));
-#define ProcedureOidIndexId  2690
-DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
-#define ProcedureNameArgsNspIndexId  2691
-
-DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops));
-#define RewriteOidIndexId  2692
-DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops));
-#define RewriteRelRulenameIndexId  2693
-
-DECLARE_UNIQUE_INDEX(pg_sequence_seqrelid_index, 5002, on pg_sequence using btree(seqrelid oid_ops));
-#define SequenceRelidIndexId	5002
-
-DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
-#define SharedDependDependerIndexId		1232
-DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
-#define SharedDependReferenceIndexId	1233
-
-DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops));
-#define StatisticRelidAttnumInhIndexId	2696
-
-DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops));
-#define TablespaceOidIndexId  2697
-DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops));
-#define TablespaceNameIndexId  2698
-
-DECLARE_UNIQUE_INDEX(pg_transform_oid_index, 3574, on pg_transform using btree(oid oid_ops));
-#define TransformOidIndexId 3574
-DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, on pg_transform using btree(trftype oid_ops, trflang oid_ops));
-#define TransformTypeLangIndexId  3575
-
-DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, on pg_trigger using btree(tgconstraint oid_ops));
-#define TriggerConstraintIndexId  2699
-DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops));
-#define TriggerRelidNameIndexId  2701
-DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops));
-#define TriggerOidIndexId  2702
-
-DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, on pg_event_trigger using btree(evtname name_ops));
-#define EventTriggerNameIndexId  3467
-DECLARE_UNIQUE_INDEX(pg_event_trigger_oid_index, 3468, on pg_event_trigger using btree(oid oid_ops));
-#define EventTriggerOidIndexId	3468
-
-DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops));
-#define TSConfigNameNspIndexId	3608
-DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops));
-#define TSConfigOidIndexId	3712
-
-DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
-#define TSConfigMapIndexId	3609
-
-DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops));
-#define TSDictionaryNameNspIndexId	3604
-DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops));
-#define TSDictionaryOidIndexId	3605
-
-DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops));
-#define TSParserNameNspIndexId	3606
-DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops));
-#define TSParserOidIndexId	3607
-
-DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops));
-#define TSTemplateNameNspIndexId	3766
-DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops));
-#define TSTemplateOidIndexId	3767
-
-DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops));
-#define TypeOidIndexId	2703
-DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops));
-#define TypeNameNspIndexId	2704
-
-DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_oid_index, 112, on pg_foreign_data_wrapper using btree(oid oid_ops));
-#define ForeignDataWrapperOidIndexId	112
-DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, on pg_foreign_data_wrapper using btree(fdwname name_ops));
-#define ForeignDataWrapperNameIndexId	548
-
-DECLARE_UNIQUE_INDEX(pg_foreign_server_oid_index, 113, on pg_foreign_server using btree(oid oid_ops));
-#define ForeignServerOidIndexId 113
-DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, on pg_foreign_server using btree(srvname name_ops));
-#define ForeignServerNameIndexId	549
-
-DECLARE_UNIQUE_INDEX(pg_user_mapping_oid_index, 174, on pg_user_mapping using btree(oid oid_ops));
-#define UserMappingOidIndexId	174
-DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, on pg_user_mapping using btree(umuser oid_ops, umserver oid_ops));
-#define UserMappingUserServerIndexId	175
-
-DECLARE_UNIQUE_INDEX(pg_foreign_table_relid_index, 3119, on pg_foreign_table using btree(ftrelid oid_ops));
-#define ForeignTableRelidIndexId 3119
-
-DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, on pg_default_acl using btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
-#define DefaultAclRoleNspObjIndexId 827
-DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btree(oid oid_ops));
-#define DefaultAclOidIndexId	828
-
-DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops));
-#define DbRoleSettingDatidRolidIndexId	2965
-
-DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_pattern_ops));
-#define SecLabelObjectIndexId				3597
-
-DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_pattern_ops));
-#define SharedSecLabelObjectIndexId			3593
-
-DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops));
-#define ExtensionOidIndexId 3080
-DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, on pg_extension using btree(extname name_ops));
-#define ExtensionNameIndexId 3081
-
-DECLARE_UNIQUE_INDEX(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops));
-#define RangeTypidIndexId					3542
-
-DECLARE_UNIQUE_INDEX(pg_policy_oid_index, 3257, on pg_policy using btree(oid oid_ops));
-#define PolicyOidIndexId				3257
-
-DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using btree(polrelid oid_ops, polname name_ops));
-#define PolicyPolrelidPolnameIndexId				3258
-
-DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops));
-#define ReplicationOriginIdentIndex 6001
-
-DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_pattern_ops));
-#define ReplicationOriginNameIndex 6002
-
-DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops));
-#define PartitionedRelidIndexId			 3351
-
-DECLARE_UNIQUE_INDEX(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops));
-#define PublicationObjectIndexId 6110
-
-DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops));
-#define PublicationNameIndexId 6111
-
-DECLARE_UNIQUE_INDEX(pg_publication_rel_oid_index, 6112, on pg_publication_rel using btree(oid oid_ops));
-#define PublicationRelObjectIndexId 6112
-
-DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, on pg_publication_rel using btree(prrelid oid_ops, prpubid oid_ops));
-#define PublicationRelPrrelidPrpubidIndexId 6113
-
-DECLARE_UNIQUE_INDEX(pg_subscription_oid_index, 6114, on pg_subscription using btree(oid oid_ops));
-#define SubscriptionObjectIndexId 6114
-
-DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription using btree(subdbid oid_ops, subname name_ops));
-#define SubscriptionNameIndexId 6115
-
-DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops));
-#define SubscriptionRelSrrelidSrsubidIndexId 6117
-
-/* last step of initialization script: build the indexes declared above */
-BUILD_INDICES
-
 #endif							/* INDEXING_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index c0c1469..5c8933c 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -81,6 +81,9 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_aggregate;
 
+DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops));
+#define AggregateFnoidIndexId  2650
+
 /* ----------------
  *		Form_pg_aggregate corresponds to a pointer to a tuple with
  *		the format of pg_aggregate relation.
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index d6807fa..f2b4d5c 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -35,6 +35,11 @@ CATALOG(pg_am,2601)
 	char		amtype;			/* see AMTYPE_xxx constants below */
 } FormData_pg_am;
 
+DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops));
+#define AmNameIndexId  2651
+DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops));
+#define AmOidIndexId  2652
+
 /* ----------------
  *		Form_pg_am corresponds to a pointer to a tuple with
  *		the format of pg_am relation.
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 247f067..79cce2e 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -80,6 +80,13 @@ CATALOG(pg_amop,2602)
 	regopf		amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
+DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
+#define AccessMethodStrategyIndexId  2653
+DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
+#define AccessMethodOperatorIndexId  2654
+DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops));
+#define AccessMethodOperatorOidIndexId	2756
+
 /* allowed values of amoppurpose: */
 #define AMOP_SEARCH		's'		/* operator is for search */
 #define AMOP_ORDER		'o'		/* operator is for ordering */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 17ed0e2..74d2ec0 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -60,6 +60,11 @@ CATALOG(pg_amproc,2603)
 	regproc		amproc;
 } FormData_pg_amproc;
 
+DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
+#define AccessMethodProcedureIndexId  2655
+DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops));
+#define AccessMethodProcedureOidIndexId  2757
+
 /* ----------------
  *		Form_pg_amproc corresponds to a pointer to a tuple with
  *		the format of pg_amproc relation.
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index e4520e8..956325e 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -39,6 +39,13 @@ CATALOG(pg_attrdef,2604)
 #endif
 } FormData_pg_attrdef;
 
+DECLARE_TOAST(pg_attrdef, 2830, 2831);
+DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
+#define AttrDefaultIndexId	2656
+DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops));
+#define AttrDefaultOidIndexId  2657
+
+
 /* ----------------
  *		Form_pg_attrdef corresponds to a pointer to a tuple with
  *		the format of pg_attrdef relation.
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index b13fc1a..ec0f10c 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -179,6 +179,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 #define ATTRIBUTE_FIXED_PART_SIZE \
 	(offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
 
+DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
+#define AttributeRelidNameIndexId  2658
+DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
+#define AttributeRelidNumIndexId  2659
+
 /* ----------------
  *		Form_pg_attribute corresponds to a pointer to a tuple with
  *		the format of pg_attribute relation.
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index 6b594ff..dfaa15b 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -37,6 +37,11 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
 	bool		admin_option;	/* granted with admin option? */
 } FormData_pg_auth_members;
 
+DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops));
+#define AuthMemRoleMemIndexId	2694
+DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops));
+#define AuthMemMemRoleIndexId	2695
+
 /* ----------------
  *		Form_pg_auth_members corresponds to a pointer to a tuple with
  *		the format of pg_auth_members relation.
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b260a92..57edeae 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -84,6 +84,10 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
+DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops));
+#define AuthIdRolnameIndexId	2676
+DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops));
+#define AuthIdOidIndexId	2677
 
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index fbe9949..25ddaef 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -39,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops));
+#define CastOidIndexId	2660
+DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops));
+#define CastSourceTargetIndexId  2661
+
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 9ad6ca8..6078870 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -149,6 +149,13 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 #define CLASS_TUPLE_SIZE \
 	 (offsetof(FormData_pg_class,relminmxid) + sizeof(TransactionId))
 
+DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops));
+#define ClassOidIndexId  2662
+DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops));
+#define ClassNameNspIndexId  2663
+DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
+#define ClassTblspcRelfilenodeIndexId  3455
+
 /* ----------------
  *		Form_pg_class corresponds to a pointer to a tuple with
  *		the format of pg_class relation.
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index a02ef82..7a8614c 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -44,6 +44,11 @@ CATALOG(pg_collation,3456)
 #endif
 } FormData_pg_collation;
 
+DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
+#define CollationNameEncNspIndexId 3164
+DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(oid oid_ops));
+#define CollationOidIndexId  3085
+
 /* ----------------
  *		Form_pg_collation corresponds to a pointer to a row with
  *		the format of pg_collation relation.
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 81ff01f..aa92eb1 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -139,6 +139,16 @@ CATALOG(pg_constraint,2606)
 #endif
 } FormData_pg_constraint;
 
+DECLARE_TOAST(pg_constraint, 2832, 2833);
+DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
+#define ConstraintNameNspIndexId  2664
+DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops));
+#define ConstraintRelidIndexId	2665
+DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops));
+#define ConstraintTypidIndexId	2666
+DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops));
+#define ConstraintOidIndexId  2667
+
 /* ----------------
  *		Form_pg_constraint corresponds to a pointer to a tuple with
  *		the format of pg_constraint relation.
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 8e46b02..9e7f5ce 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -48,6 +48,13 @@ CATALOG(pg_conversion,2607)
 	bool		condefault;
 } FormData_pg_conversion;
 
+DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
+#define ConversionDefaultIndexId  2668
+DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
+#define ConversionNameNspIndexId  2669
+DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops));
+#define ConversionOidIndexId  2670
+
 /* ----------------
  *		Form_pg_conversion corresponds to a pointer to a tuple with
  *		the format of pg_conversion relation.
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 159c6ec..3d73049 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -49,6 +49,11 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
 #endif
 } FormData_pg_database;
 
+DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops));
+#define DatabaseNameIndexId  2671
+DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops));
+#define DatabaseOidIndexId	2672
+
 /* ----------------
  *		Form_pg_database corresponds to a pointer to a tuple with
  *		the format of pg_database relation.
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index aa01494..5c2115a 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -39,6 +39,12 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_db_role_setting;
 
+DECLARE_TOAST(pg_db_role_setting, 2966, 2967);
+#define PgDbRoleSettingToastTable 2966
+#define PgDbRoleSettingToastIndex 2967
+DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops));
+#define DbRoleSettingDatidRolidIndexId	2965
+
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
 /* ----------------
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index ec84272..5950999 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -38,6 +38,11 @@ CATALOG(pg_default_acl,826)
 #endif
 } FormData_pg_default_acl;
 
+DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, on pg_default_acl using btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
+#define DefaultAclRoleNspObjIndexId 827
+DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btree(oid oid_ops));
+#define DefaultAclOidIndexId	828
+
 /* ----------------
  *		Form_pg_default_acl corresponds to a pointer to a tuple with
  *		the format of pg_default_acl relation.
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index fdba9e3..e86a3a1 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -53,6 +53,11 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
 	char		deptype;		/* see codes in dependency.h */
 } FormData_pg_depend;
 
+DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
+#define DependDependerIndexId  2673
+DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
+#define DependReferenceIndexId	2674
+
 /* ----------------
  *		Form_pg_depend corresponds to a pointer to a row with
  *		the format of pg_depend relation.
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 9ee1675..80bc11d 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -53,6 +53,10 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_description;
 
+DECLARE_TOAST(pg_description, 2834, 2835);
+DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
+#define DescriptionObjIndexId  2675
+
 /* ----------------
  *		Form_pg_description corresponds to a pointer to a tuple with
  *		the format of pg_description relation.
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 4f696ad..0ff8f07 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -35,6 +35,13 @@ CATALOG(pg_enum,3501)
 	NameData	enumlabel;		/* text representation of enum value */
 } FormData_pg_enum;
 
+DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops));
+#define EnumOidIndexId	3502
+DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops));
+#define EnumTypIdLabelIndexId 3503
+DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, on pg_enum using btree(enumtypid oid_ops, enumsortorder float4_ops));
+#define EnumTypIdSortOrderIndexId 3534
+
 /* ----------------
  *		Form_pg_enum corresponds to a pointer to a tuple with
  *		the format of pg_enum relation.
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index ed47aa8..79efeae 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -42,6 +42,11 @@ CATALOG(pg_event_trigger,3466)
 #endif
 } FormData_pg_event_trigger;
 
+DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, on pg_event_trigger using btree(evtname name_ops));
+#define EventTriggerNameIndexId  3467
+DECLARE_UNIQUE_INDEX(pg_event_trigger_oid_index, 3468, on pg_event_trigger using btree(oid oid_ops));
+#define EventTriggerOidIndexId	3468
+
 /* ----------------
  *		Form_pg_event_trigger corresponds to a pointer to a tuple with
  *		the format of pg_event_trigger relation.
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index a616dda..1981033 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -43,6 +43,11 @@ CATALOG(pg_extension,3079)
 #endif
 } FormData_pg_extension;
 
+DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops));
+#define ExtensionOidIndexId 3080
+DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, on pg_extension using btree(extname name_ops));
+#define ExtensionNameIndexId 3081
+
 /* ----------------
  *		Form_pg_extension corresponds to a pointer to a tuple with
  *		the format of pg_extension relation.
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index caa6c91..23ad840 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -39,6 +39,11 @@ CATALOG(pg_foreign_data_wrapper,2328)
 #endif
 } FormData_pg_foreign_data_wrapper;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_oid_index, 112, on pg_foreign_data_wrapper using btree(oid oid_ops));
+#define ForeignDataWrapperOidIndexId	112
+DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, on pg_foreign_data_wrapper using btree(fdwname name_ops));
+#define ForeignDataWrapperNameIndexId	548
+
 /* ----------------
  *		Form_pg_fdw corresponds to a pointer to a tuple with
  *		the format of pg_fdw relation.
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index 9aeb646..542c3c4 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -40,6 +40,11 @@ CATALOG(pg_foreign_server,1417)
 #endif
 } FormData_pg_foreign_server;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_server_oid_index, 113, on pg_foreign_server using btree(oid oid_ops));
+#define ForeignServerOidIndexId 113
+DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, on pg_foreign_server using btree(srvname name_ops));
+#define ForeignServerNameIndexId	549
+
 /* ----------------
  *		Form_pg_foreign_server corresponds to a pointer to a tuple with
  *		the format of pg_foreign_server relation.
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 341ad5e..ff2d97f 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -36,6 +36,9 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_foreign_table;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_table_relid_index, 3119, on pg_foreign_table using btree(ftrelid oid_ops));
+#define ForeignTableRelidIndexId 3119
+
 /* ----------------
  *		Form_pg_foreign_table corresponds to a pointer to a tuple with
  *		the format of pg_foreign_table relation.
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index db737a8..9b29538 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -59,6 +59,11 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_index;
 
+DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops));
+#define IndexIndrelidIndexId  2678
+DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops));
+#define IndexRelidIndexId  2679
+
 /* ----------------
  *		Form_pg_index corresponds to a pointer to a tuple with
  *		the format of pg_index relation.
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 334e738..0c53850 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -35,6 +35,11 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
 	int32		inhseqno;
 } FormData_pg_inherits;
 
+DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
+#define InheritsRelidSeqnoIndexId  2680
+DECLARE_INDEX(pg_inherits_parent_index, 2187, on pg_inherits using btree(inhparent oid_ops));
+#define InheritsParentIndexId  2187
+
 /* ----------------
  *		Form_pg_inherits corresponds to a pointer to a tuple with
  *		the format of pg_inherits relation.
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 7dd9e5d..f725457 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -50,6 +50,9 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_init_privs;
 
+DECLARE_UNIQUE_INDEX(pg_init_privs_o_c_o_index, 3395, on pg_init_privs using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
+#define InitPrivsObjIndexId  3395
+
 /* ----------------
  *		Form_pg_init_privs corresponds to a pointer to a tuple with
  *		the format of pg_init_privs relation.
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 055cddc..e98357d 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -43,6 +43,11 @@ CATALOG(pg_language,2612)
 #endif
 } FormData_pg_language;
 
+DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops));
+#define LanguageNameIndexId  2681
+DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops));
+#define LanguageOidIndexId	2682
+
 /* ----------------
  *		Form_pg_language corresponds to a pointer to a tuple with
  *		the format of pg_language relation.
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 6c91656..ab56083 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -36,6 +36,9 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
 											 * zero-length) */
 } FormData_pg_largeobject;
 
+DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops));
+#define LargeObjectLOidPNIndexId  2683
+
 /* ----------------
  *		Form_pg_largeobject corresponds to a pointer to a tuple with
  *		the format of pg_largeobject relation.
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index bb84d2d..7b7840e 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -37,6 +37,9 @@ CATALOG(pg_largeobject_metadata,2995)
 #endif
 } FormData_pg_largeobject_metadata;
 
+DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops));
+#define LargeObjectMetadataOidIndexId	2996
+
 /* ----------------
  *		Form_pg_largeobject_metadata corresponds to a pointer to a tuple
  *		with the format of pg_largeobject_metadata relation.
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 9fa6418..7c64abb 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -43,6 +43,11 @@ CATALOG(pg_namespace,2615)
 #endif
 } FormData_pg_namespace;
 
+DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
+#define NamespaceNameIndexId  2684
+DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
+#define NamespaceOidIndexId  2685
+
 /* ----------------
  *		Form_pg_namespace corresponds to a pointer to a tuple with
  *		the format of pg_namespace relation.
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 472511c..9558f11 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -69,6 +69,11 @@ CATALOG(pg_opclass,2616)
 	regtype		opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
+DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
+#define OpclassAmNameNspIndexId  2686
+DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops));
+#define OpclassOidIndexId  2687
+
 /* ----------------
  *		Form_pg_opclass corresponds to a pointer to a tuple with
  *		the format of pg_opclass relation.
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 9dd0b84..d21f38b 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -74,6 +74,11 @@ CATALOG(pg_operator,2617)
 	regproc		oprjoin BKI_DEFAULT(-);
 } FormData_pg_operator;
 
+DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops));
+#define OperatorOidIndexId	2688
+DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
+#define OperatorNameNspIndexId	2689
+
 /* ----------------
  *		Form_pg_operator corresponds to a pointer to a tuple with
  *		the format of pg_operator relation.
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 2f410b4..89045a8 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -40,6 +40,11 @@ CATALOG(pg_opfamily,2753)
 	Oid			opfowner BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
+DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
+#define OpfamilyAmNameNspIndexId  2754
+DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops));
+#define OpfamilyOidIndexId	2755
+
 /* ----------------
  *		Form_pg_opfamily corresponds to a pointer to a tuple with
  *		the format of pg_opfamily relation.
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 0958fbb..148d3ec 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -53,6 +53,9 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_partitioned_table;
 
+DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops));
+#define PartitionedRelidIndexId			 3351
+
 /* ----------------
  *		Form_pg_partitioned_table corresponds to a pointer to a tuple with
  *		the format of pg_partitioned_table relation.
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 31dba12..ec28798 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -44,6 +44,9 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_pltemplate;
 
+DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops));
+#define PLTemplateNameIndexId  1137
+
 /* ----------------
  *		Form_pg_pltemplate corresponds to a pointer to a row with
  *		the format of pg_pltemplate relation.
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 8600073..1bc8819 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -32,6 +32,11 @@ CATALOG(pg_policy,3256)
 #endif
 } FormData_pg_policy;
 
+DECLARE_UNIQUE_INDEX(pg_policy_oid_index, 3257, on pg_policy using btree(oid oid_ops));
+#define PolicyOidIndexId				3257
+DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using btree(polrelid oid_ops, polname name_ops));
+#define PolicyPolrelidPolnameIndexId				3258
+
 /* ----------------
  *		Form_pg_policy corresponds to a pointer to a row with
  *		the format of pg_policy relation.
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 5f2d7ca..a4e7683 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -126,6 +126,12 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_proc;
 
+DECLARE_TOAST(pg_proc, 2836, 2837);
+DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops));
+#define ProcedureOidIndexId  2690
+DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
+#define ProcedureNameArgsNspIndexId  2691
+
 /* ----------------
  *		Form_pg_proc corresponds to a pointer to a tuple with
  *		the format of pg_proc relation.
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index ff26a32..bf4c59b 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -51,6 +51,13 @@ CATALOG(pg_publication,6104)
 
 } FormData_pg_publication;
 
+DECLARE_UNIQUE_INDEX(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops));
+#define PublicationObjectIndexId 6110
+DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops));
+#define PublicationNameIndexId 6111
+DECLARE_UNIQUE_INDEX(pg_publication_rel_oid_index, 6112, on pg_publication_rel using btree(oid oid_ops));
+#define PublicationRelObjectIndexId 6112
+
 /* ----------------
  *		Form_pg_publication corresponds to a pointer to a tuple with
  *		the format of pg_publication relation.
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index f9f2288..cb2f5b9 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -33,6 +33,9 @@ CATALOG(pg_publication_rel,6106)
 	Oid			prrelid;		/* Oid of the relation */
 } FormData_pg_publication_rel;
 
+DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, on pg_publication_rel using btree(prrelid oid_ops, prpubid oid_ops));
+#define PublicationRelPrrelidPrpubidIndexId 6113
+
 /* ----------------
  *		Form_pg_publication_rel corresponds to a pointer to a tuple with
  *		the format of pg_publication_rel relation.
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index e0bf704..690ebc9 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -38,6 +38,9 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 	regproc		rngsubdiff;		/* subtype difference as a float8, or 0 */
 } FormData_pg_range;
 
+DECLARE_UNIQUE_INDEX(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops));
+#define RangeTypidIndexId					3542
+
 /* ----------------
  *		Form_pg_range corresponds to a pointer to a tuple with
  *		the format of pg_range relation.
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0b8c8b2..3070af2 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -52,6 +52,11 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_replication_origin;
 
+DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops));
+#define ReplicationOriginIdentIndex 6001
+DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_pattern_ops));
+#define ReplicationOriginNameIndex 6002
+
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
 /* ----------------
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index ef7e8de..cc68f40 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -45,6 +45,12 @@ CATALOG(pg_rewrite,2618)
 #endif
 } FormData_pg_rewrite;
 
+DECLARE_TOAST(pg_rewrite, 2838, 2839);
+DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops));
+#define RewriteOidIndexId  2692
+DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops));
+#define RewriteRelRulenameIndexId  2693
+
 /* ----------------
  *		Form_pg_rewrite corresponds to a pointer to a tuple with
  *		the format of pg_rewrite relation.
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 3db9612..812a6bc 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -32,6 +32,10 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
+DECLARE_TOAST(pg_seclabel, 3598, 3599);
+DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_pattern_ops));
+#define SecLabelObjectIndexId				3597
+
 /* ----------------
  *		compiler constants for pg_seclabel
  * ----------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index 6de54bb..3a22633 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -27,6 +27,9 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+DECLARE_UNIQUE_INDEX(pg_sequence_seqrelid_index, 5002, on pg_sequence using btree(seqrelid oid_ops));
+#define SequenceRelidIndexId	5002
+
 typedef FormData_pg_sequence *Form_pg_sequence;
 
 #define Natts_pg_sequence				8
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 8a08914..5c89bfa 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -56,6 +56,11 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 	char		deptype;		/* see codes in dependency.h */
 } FormData_pg_shdepend;
 
+DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
+#define SharedDependDependerIndexId		1232
+DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
+#define SharedDependReferenceIndexId	1233
+
 /* ----------------
  *		Form_pg_shdepend corresponds to a pointer to a row with
  *		the format of pg_shdepend relation.
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index 3afdb32..3772771 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -45,6 +45,12 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_shdescription;
 
+DECLARE_TOAST(pg_shdescription, 2846, 2847);
+#define PgShdescriptionToastTable 2846
+#define PgShdescriptionToastIndex 2847
+DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops));
+#define SharedDescriptionObjIndexId 2397
+
 /* ----------------
  *		Form_pg_shdescription corresponds to a pointer to a tuple with
  *		the format of pg_shdescription relation.
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index f8a906b..bedc852 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -32,6 +32,12 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 #endif
 } FormData_pg_shseclabel;
 
+DECLARE_TOAST(pg_shseclabel, 4060, 4061);
+#define PgShseclabelToastTable 4060
+#define PgShseclabelToastIndex 4061
+DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_pattern_ops));
+#define SharedSecLabelObjectIndexId			3593
+
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
 /* ----------------
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 74d38ca..da3a937 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -118,9 +118,12 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_statistic;
 
+DECLARE_TOAST(pg_statistic, 2840, 2841);
+DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops));
+#define StatisticRelidAttnumInhIndexId	2696
+
 #define STATISTIC_NUM_SLOTS  5
 
-
 /* ----------------
  *		Form_pg_statistic corresponds to a pointer to a tuple with
  *		the format of pg_statistic relation.
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 4ed38c1..4ea7efc 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -53,6 +53,14 @@ CATALOG(pg_statistic_ext,3381)
 
 } FormData_pg_statistic_ext;
 
+DECLARE_TOAST(pg_statistic_ext, 3439, 3440);
+DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops));
+#define StatisticExtOidIndexId	3380
+DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops));
+#define StatisticExtNameIndexId 3997
+DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops));
+#define StatisticExtRelidIndexId 3379
+
 /* ----------------
  *		Form_pg_statistic_ext corresponds to a pointer to a tuple with
  *		the format of pg_statistic_ext relation.
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 274ff6b..865cd3e 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -55,6 +55,11 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 #endif
 } FormData_pg_subscription;
 
+DECLARE_UNIQUE_INDEX(pg_subscription_oid_index, 6114, on pg_subscription using btree(oid oid_ops));
+#define SubscriptionObjectIndexId 6114
+DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription using btree(subdbid oid_ops, subname name_ops));
+#define SubscriptionNameIndexId 6115
+
 typedef FormData_pg_subscription *Form_pg_subscription;
 
 /* ----------------
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 5748297..c8ccf0b 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -32,6 +32,9 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 								 * synchronization coordination */
 } FormData_pg_subscription_rel;
 
+DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops));
+#define SubscriptionRelSrrelidSrsubidIndexId 6117
+
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
 /* ----------------
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 48c7e60..a85670a 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -39,6 +39,11 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
 #endif
 } FormData_pg_tablespace;
 
+DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops));
+#define TablespaceOidIndexId  2697
+DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops));
+#define TablespaceNameIndexId  2698
+
 /* ----------------
  *		Form_pg_tablespace corresponds to a pointer to a tuple with
  *		the format of pg_tablespace relation.
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 51b51b5..3802ed8 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -32,6 +32,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
+DECLARE_UNIQUE_INDEX(pg_transform_oid_index, 3574, on pg_transform using btree(oid oid_ops));
+#define TransformOidIndexId 3574
+DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, on pg_transform using btree(trftype oid_ops, trflang oid_ops));
+#define TransformTypeLangIndexId  3575
+
 typedef FormData_pg_transform *Form_pg_transform;
 
 /* ----------------
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index 41e2aea..51e9257 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -64,6 +64,14 @@ CATALOG(pg_trigger,2620)
 #endif
 } FormData_pg_trigger;
 
+DECLARE_TOAST(pg_trigger, 2336, 2337);
+DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, on pg_trigger using btree(tgconstraint oid_ops));
+#define TriggerConstraintIndexId  2699
+DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops));
+#define TriggerRelidNameIndexId  2701
+DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops));
+#define TriggerOidIndexId  2702
+
 /* ----------------
  *		Form_pg_trigger corresponds to a pointer to a tuple with
  *		the format of pg_trigger relation.
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index b2b3941..26a5007 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -35,6 +35,11 @@ CATALOG(pg_ts_config,3602)
 	Oid			cfgparser;		/* OID of parser (in pg_ts_parser) */
 } FormData_pg_ts_config;
 
+DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops));
+#define TSConfigNameNspIndexId	3608
+DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops));
+#define TSConfigOidIndexId	3712
+
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 86fd163..e521727 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -35,6 +35,9 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 	Oid			mapdict;		/* dictionary to consult */
 } FormData_pg_ts_config_map;
 
+DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
+#define TSConfigMapIndexId	3609
+
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index f465df0..538eaf9 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -39,6 +39,11 @@ CATALOG(pg_ts_dict,3600)
 #endif
 } FormData_pg_ts_dict;
 
+DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops));
+#define TSDictionaryNameNspIndexId	3604
+DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops));
+#define TSDictionaryOidIndexId	3605
+
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5f26ea1..313d355 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -38,6 +38,11 @@ CATALOG(pg_ts_parser,3601)
 	regproc		prslextype;		/* return descriptions of lexeme's types */
 } FormData_pg_ts_parser;
 
+DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops));
+#define TSParserNameNspIndexId	3606
+DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops));
+#define TSParserOidIndexId	3607
+
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 5678f1a..97f68b0 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -35,6 +35,11 @@ CATALOG(pg_ts_template,3764)
 	regproc		tmpllexize;		/* base method of dictionary */
 } FormData_pg_ts_template;
 
+DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops));
+#define TSTemplateNameNspIndexId	3766
+DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops));
+#define TSTemplateOidIndexId	3767
+
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
 /* ----------------
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index b5d659f..f335faa 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -232,6 +232,11 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_type;
 
+DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops));
+#define TypeOidIndexId	2703
+DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops));
+#define TypeNameNspIndexId	2704
+
 /* ----------------
  *		Form_pg_type corresponds to a pointer to a row with
  *		the format of pg_type relation.
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 78856ba..654c722 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -37,6 +37,11 @@ CATALOG(pg_user_mapping,1418)
 #endif
 } FormData_pg_user_mapping;
 
+DECLARE_UNIQUE_INDEX(pg_user_mapping_oid_index, 174, on pg_user_mapping using btree(oid oid_ops));
+#define UserMappingOidIndexId	174
+DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, on pg_user_mapping using btree(umuser oid_ops, umserver oid_ops));
+#define UserMappingUserServerIndexId	175
+
 /* ----------------
  *		Form_pg_user_mapping corresponds to a pointer to a tuple with
  *		the format of pg_user_mapping relation.
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index ccc6416..25fd7d1 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -27,44 +27,4 @@ extern void AlterTableCreateToastTable(Oid relOid, Datum reloptions,
 extern void BootstrapToastTable(char *relName,
 					Oid toastOid, Oid toastIndexOid);
 
-
-/*
- * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for Catalog.pm.
- */
-#define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
-
-
-/*
- * What follows are lines processed by genbki.pl to create the statements
- * the bootstrap parser will turn into BootstrapToastTable commands.
- * Each line specifies the system catalog that needs a toast table,
- * the OID to assign to the toast table, and the OID to assign to the
- * toast table's index.  The reason we hard-wire these OIDs is that we
- * need stable OIDs for shared relations, and that includes toast tables
- * of shared relations.
- */
-
-/* normal catalogs */
-DECLARE_TOAST(pg_attrdef, 2830, 2831);
-DECLARE_TOAST(pg_constraint, 2832, 2833);
-DECLARE_TOAST(pg_description, 2834, 2835);
-DECLARE_TOAST(pg_proc, 2836, 2837);
-DECLARE_TOAST(pg_rewrite, 2838, 2839);
-DECLARE_TOAST(pg_seclabel, 3598, 3599);
-DECLARE_TOAST(pg_statistic, 2840, 2841);
-DECLARE_TOAST(pg_statistic_ext, 3439, 3440);
-DECLARE_TOAST(pg_trigger, 2336, 2337);
-
-/* shared catalogs */
-DECLARE_TOAST(pg_shdescription, 2846, 2847);
-#define PgShdescriptionToastTable 2846
-#define PgShdescriptionToastIndex 2847
-DECLARE_TOAST(pg_db_role_setting, 2966, 2967);
-#define PgDbRoleSettingToastTable 2966
-#define PgDbRoleSettingToastIndex 2967
-DECLARE_TOAST(pg_shseclabel, 4060, 4061);
-#define PgShseclabelToastTable 4060
-#define PgShseclabelToastIndex 4061
-
 #endif							/* TOASTING_H */
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index a930560..0cfc319 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -27,7 +27,7 @@ export FIRSTOBJECTID
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
 # matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h pg_*.dat toasting.h indexing.h |
+cat pg_*.h pg_*.dat |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
 sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
-- 
2.7.4

#7Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: John Naylor (#6)
Re: WIP: a way forward on bootstrap data

Pushed 0001 and 0002.

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#8Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: John Naylor (#6)
Re: WIP: a way forward on bootstrap data

Hmm, patch 0008 removes data lines from the .h but leaves the dependent
OID define lines around:

#define BTREE_AM_OID 403

This is not good, because then the define depends on data that appears
in a distant file. Another consideration is that the current system has
the property that these OIDs are discoverable by a hacker by navigating
to the containing .h file; and a missing symbol is easily fixable if
they need to hardcode the OID for which there isn't a symbol yet.

Maybe a generated .h file containing defines for OIDs from all catalogs
is okay. Of course, not all symbols are to be listed -- we should have
a special marker in the data lines for those that are. Maybe something
like this

{ oid => '403', descr => 'b-tree index access method',
amname => 'btree', amhandler => 'bthandler', amtype => 'i',
cpp_symbol => 'BTREE_AM_OID' },

(where 'cpp_symbol' would be skipped by genbki explicitly).

Any better ideas?

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#9Robert Haas
robertmhaas@gmail.com
In reply to: Alvaro Herrera (#8)
Re: WIP: a way forward on bootstrap data

On Thu, Dec 21, 2017 at 5:32 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Hmm, patch 0008 removes data lines from the .h but leaves the dependent
OID define lines around:

Just a question here -- do we actually have consensus on doing the
stuff that these patches do? Because I'm not sure we do.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#10John Naylor
jcnaylor@gmail.com
In reply to: Alvaro Herrera (#8)
Re: WIP: a way forward on bootstrap data

On 12/22/17, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Hmm, patch 0008 removes data lines from the .h but leaves the dependent
OID define lines around:

#define BTREE_AM_OID 403

This is not good, because then the define depends on data that appears
in a distant file.

I see what you mean.

Another consideration is that the current system has
the property that these OIDs are discoverable by a hacker by navigating
to the containing .h file; and a missing symbol is easily fixable if
they need to hardcode the OID for which there isn't a symbol yet.

I'm not sure I follow you here.

Maybe a generated .h file containing defines for OIDs from all catalogs
is okay. Of course, not all symbols are to be listed -- we should have
a special marker in the data lines for those that are. Maybe something
like this

{ oid => '403', descr => 'b-tree index access method',
amname => 'btree', amhandler => 'bthandler', amtype => 'i',
cpp_symbol => 'BTREE_AM_OID' },

(where 'cpp_symbol' would be skipped by genbki explicitly).

The last part makes sense and would be a fairly mechanical change. I'm
not sure of the best way to include those generated symbols back in
the code again, though. I think a single file might not be desirable
because of namespace pollution. The alternative would be to have, say,
pg_am.h include pg_am_sym.h. More complex but doable. Also, no need to
skip non-data values explicitly. The code knows where to find the
schema. :-)

Thanks for pushing 1 and 2, BTW.

-John Naylor

#11Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Robert Haas (#9)
Re: WIP: a way forward on bootstrap data

Robert Haas wrote:

On Thu, Dec 21, 2017 at 5:32 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Hmm, patch 0008 removes data lines from the .h but leaves the dependent
OID define lines around:

Just a question here -- do we actually have consensus on doing the
stuff that these patches do? Because I'm not sure we do.

My reading of the old threads (linked provided by John in his initial
email in this thread) is that we have a consensus that we want to get
rid of the old data representation, because it causes endless amount of
pain. The proposed format seems to satisfy the constraints that we all
discussed, namely

1. be easier to modify than the current format,
2. in particular, allow for default values on certain columns
3. not cause git merge problems because of too similar lines in every
record
4. not require onerous Perl modules

The one thing we seem to lack is a tool to edit the data files, as you
suggested[1]/messages/by-id/CA+Tgmoa4=5oz7wSMcLNLh8h6cXzPoxxNJKckkdSQA+zpUG0+0A@mail.gmail.com. Stephen Frost mentioned[2]/messages/by-id/20150304150712.GV29780@tamriel.snowman.net that we could do this by
allowing the .data files be loaded in a database table, have the changes
made via SQL, then have a way to create an updated .data file. Tom
said[3]/messages/by-id/24766.1478821303@sss.pgh.pa.us he didn't like that particular choice.

So we already have Catalog.pm that (after these patches) knows how to
load .data files; we could use that as a basis to enable easy oneliners
to do whatever editing is needed.

Also, the CPP symbols remaining in the pg_*.h that I commented yesterday
was already mentioned[4]/messages/by-id/15697.1479161432@sss.pgh.pa.us before.

[1]: /messages/by-id/CA+Tgmoa4=5oz7wSMcLNLh8h6cXzPoxxNJKckkdSQA+zpUG0+0A@mail.gmail.com
[2]: /messages/by-id/20150304150712.GV29780@tamriel.snowman.net
[3]: /messages/by-id/24766.1478821303@sss.pgh.pa.us
[4]: /messages/by-id/15697.1479161432@sss.pgh.pa.us

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#12John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#10)
13 attachment(s)
Re: WIP: a way forward on bootstrap data

I wrote:

On 12/22/17, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Maybe a generated .h file containing defines for OIDs from all catalogs
is okay. Of course, not all symbols are to be listed -- we should have
a special marker in the data lines for those that are. Maybe something
like this

{ oid => '403', descr => 'b-tree index access method',
amname => 'btree', amhandler => 'bthandler', amtype => 'i',
cpp_symbol => 'BTREE_AM_OID' },

(where 'cpp_symbol' would be skipped by genbki explicitly).

The last part makes sense and would be a fairly mechanical change. I'm
not sure of the best way to include those generated symbols back in
the code again, though. I think a single file might not be desirable
because of namespace pollution.

[snip]

I've attached version 5 (rebased onto be2343221fb), which removes OID
#define symbols from the headers and stores them with the records they
refer to.

I went ahead with your suggestion to try a single generated header. I
believe there is no chance of namespace pollution since the symbols
already have a nomenclature that reflects what catalog they belong to.
This required some additional Makefile changes, since some code
outside the backend needs certain OID symbols to be visible. There are
probably bugs, but I wanted to share the initial design. The MSVC
changes are untested. In addition, FindDefinedSymbol() now doesn't
work for catalog headers, so I added a new function to search within
the data.

On the plus side, there is now a mechanism to generate pg_type OID
symbols, and ECPG's knowledge of types is now maintained
automatically.

Since I had to rebase over recent additions to SP-GiST opclasses
anyway, I restructured the patches to have a clean separation between
data migration and data compaction. This makes the patches easier to
follow.

The pg_proc defaults have been tweaked slightly to match those
suggested by Andrew Dunstan [1]/messages/by-id/b76d153a-33d7-7827-746c-1109f7bf529d@dunslane.net --.

There are now human-readable entries for oprcom and oprnegate in
pg_operator.dat.

Finally, assorted cosmetic improvements and README/comment editing.

[1]: /messages/by-id/b76d153a-33d7-7827-746c-1109f7bf529d@dunslane.net --
--

-John Naylor

Attachments:

v5-0001-Remove-hard-coded-schema-knowledge-about-pg_attri.patchtext/x-patch; charset=US-ASCII; name=v5-0001-Remove-hard-coded-schema-knowledge-about-pg_attri.patchDownload
From a1d3df26acd95f0c7b8a5e7059e2e7bc5045bb84 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Fri, 22 Dec 2017 15:45:02 +0700
Subject: [PATCH v5 01/13] Remove hard-coded schema knowledge about
 pg_attribute from genbki.pl

Add the ability to label a column's default value in the catalog header,
and implement this for pg_attribute. Add a new function to Catalog.pm to
fill in a tuple with default values. It will complain loudly if it can't
find either a default or a given value, so change the signature of
emit_pgattr_row() so we can pass a partially built tuple to it.

Commit 8137f2c3232 labeled variable length columns for the C preprocessor.
Expose that label to genbki.pl so we can exclude those columns from schema
macros in a general fashion. Also, format schema macro entries according
to their types.

This means slightly less code maintenance, but more importantly it's a
proving ground for mechanisms used in later commits.
---
 src/backend/catalog/Catalog.pm     |  75 ++++++++++++++++--
 src/backend/catalog/genbki.pl      | 154 +++++++++++++++++++------------------
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_attribute.h |  22 +++---
 4 files changed, 164 insertions(+), 90 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 80bd977..3bf2ab0 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -39,6 +39,7 @@ sub Catalogs
 		my %catalog;
 		$catalog{columns} = [];
 		$catalog{data}    = [];
+		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -164,7 +165,14 @@ sub Catalogs
 			elsif ($declaring_attributes)
 			{
 				next if (/^{|^$/);
-				next if (/^#/);
+				if (/^#/)
+				{
+					if (/^#ifdef\s+CATALOG_VARLEN/)
+					{
+						$is_varlen = 1;
+					}
+					next;
+				}
 				if (/^}/)
 				{
 					undef $declaring_attributes;
@@ -172,8 +180,12 @@ sub Catalogs
 				else
 				{
 					my %column;
-					my ($atttype, $attname, $attopt) = split /\s+/, $_;
-					die "parse error ($input_file)" unless $attname;
+					my @attopts = split /\s+/, $_;
+					my $atttype = shift @attopts;
+					my $attname = shift @attopts;
+					die "parse error ($input_file)"
+					  unless ($attname and $atttype);
+
 					if (exists $RENAME_ATTTYPE{$atttype})
 					{
 						$atttype = $RENAME_ATTTYPE{$atttype};
@@ -181,13 +193,17 @@ sub Catalogs
 					if ($attname =~ /(.*)\[.*\]/)    # array attribute
 					{
 						$attname = $1;
-						$atttype .= '[]';            # variable-length only
+						$atttype .= '[]';
 					}
 
 					$column{type} = $atttype;
 					$column{name} = $attname;
+					if ($is_varlen)
+					{
+						$column{is_varlen} = 1;
+					}
 
-					if (defined $attopt)
+					foreach my $attopt (@attopts)
 					{
 						if ($attopt eq 'BKI_FORCE_NULL')
 						{
@@ -197,11 +213,20 @@ sub Catalogs
 						{
 							$column{forcenotnull} = 1;
 						}
+						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+						{
+							$column{default} = $1;
+						}
 						else
 						{
 							die
 "unknown column option $attopt on column $attname";
 						}
+
+						if ($column{forcenull} and $column{forcenotnull})
+						{
+							die "$attname is forced both null and not null";
+						}
 					}
 					push @{ $catalog{columns} }, \%column;
 				}
@@ -235,6 +260,46 @@ sub SplitDataLine
 	return @result;
 }
 
+# Fill in default values of a record using the given schema. It's the
+# caller's responsibility to specify other values beforehand.
+sub AddDefaultValues
+{
+	my ($row, $schema) = @_;
+	my @missing_fields;
+	my $msg;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if (defined $row->{$attname})
+		{
+			;
+		}
+		elsif (defined $column->{default})
+		{
+			$row->{$attname} = $column->{default};
+		}
+		else
+		{
+			# Failed to find a value.
+			push @missing_fields, $attname;
+		}
+	}
+
+	if (@missing_fields)
+	{
+		$msg = "Missing values for: " . join(', ', @missing_fields);
+		$msg .= "\nShowing other values for context:\n";
+		while(my($key, $value) = each %$row)
+		{
+			$msg .= "$key => $value, ";
+		}
+	}
+	return $msg;
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 5b5b04f..17e8e23 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -119,7 +119,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my %bki_attr;
 	my @attnames;
 	my $first = 1;
 
@@ -129,7 +128,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		$bki_attr{$attname} = $column;
 		push @attnames, $attname;
 
 		if (!$first)
@@ -257,24 +255,24 @@ foreach my $catname (@{ $catalogs->{names} })
 			foreach my $attr (@user_attrs)
 			{
 				$attnum++;
-				my $row = emit_pgattr_row($table_name, $attr, $priornotnull);
-				$row->{attnum}        = $attnum;
-				$row->{attstattarget} = '-1';
-				$priornotnull &= ($row->{attnotnull} eq 't');
+				my %row;
+				$row{attnum}   = $attnum;
+				$row{attrelid} = $table->{relation_oid};
+
+				emit_pgattr_row(\%row, $schema, $attr, $priornotnull);
+				$priornotnull &= ($row{attnotnull} eq 't');
 
 				# If it's bootstrapped, put an entry in postgres.bki.
 				if ($table->{bootstrap})
 				{
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 
 				# Store schemapg entries for later.
-				$row =
-				  emit_schemapg_row($row,
-					grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
+				emit_schemapg_row(\%row, $schema);
 				push @{ $schemapg_entries{$table_name} },
 				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @{$row}{@attnames});
+				    join(', ', grep { defined $_ } @row{@attnames});
 			}
 
 			# Generate entries for system attributes.
@@ -293,16 +291,19 @@ foreach my $catname (@{ $catalogs->{names} })
 				foreach my $attr (@SYS_ATTRS)
 				{
 					$attnum--;
-					my $row = emit_pgattr_row($table_name, $attr, 1);
-					$row->{attnum}        = $attnum;
-					$row->{attstattarget} = '0';
+					my %row;
+					$row{attnum}        = $attnum;
+					$row{attrelid}      = $table->{relation_oid};
+					$row{attstattarget} = '0';
+
+					emit_pgattr_row(\%row, $schema, $attr, 1);
 
 					# Omit the oid column if the catalog doesn't have them
 					next
 					  if $table->{without_oids}
-						  && $row->{attname} eq 'oid';
+						  && $row{attname} eq 'oid';
 
-					bki_insert($row, @attnames);
+					bki_insert(\%row, @attnames);
 				}
 			}
 		}
@@ -379,19 +380,17 @@ exit 0;
 #################### Subroutines ########################
 
 
-# Given a system catalog name and a reference to a key-value pair corresponding
-# to the name and type of a column, generate a reference to a hash that
-# represents a pg_attribute entry.  We must also be told whether preceding
+# Given the schema of pg_attribute, generate an entry for it using information
+# about the attribute it describes.  Any value that is not handled here
+# must be supplied by the caller. We must also be told whether preceding
 # columns were all not-null.
 sub emit_pgattr_row
 {
-	my ($table_name, $attr, $priornotnull) = @_;
+	my ($row, $pgattr_schema, $attr, $priornotnull) = @_;
 	my $attname = $attr->{name};
 	my $atttype = $attr->{type};
-	my %row;
 
-	$row{attrelid} = $catalogs->{$table_name}->{relation_oid};
-	$row{attname}  = $attname;
+	$row->{attname} = $attname;
 
 	# Adjust type name for arrays: foo[] becomes _foo
 	# so we can look it up in pg_type
@@ -405,23 +404,23 @@ sub emit_pgattr_row
 	{
 		if (defined $type->{typname} && $type->{typname} eq $atttype)
 		{
-			$row{atttypid}   = $type->{oid};
-			$row{attlen}     = $type->{typlen};
-			$row{attbyval}   = $type->{typbyval};
-			$row{attstorage} = $type->{typstorage};
-			$row{attalign}   = $type->{typalign};
+			$row->{atttypid}   = $type->{oid};
+			$row->{attlen}     = $type->{typlen};
+			$row->{attbyval}   = $type->{typbyval};
+			$row->{attstorage} = $type->{typstorage};
+			$row->{attalign}   = $type->{typalign};
 
 			# set attndims if it's an array type
-			$row{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
-			$row{attcollation} = $type->{typcollation};
+			$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
+			$row->{attcollation} = $type->{typcollation};
 
 			if (defined $attr->{forcenotnull})
 			{
-				$row{attnotnull} = 't';
+				$row->{attnotnull} = 't';
 			}
 			elsif (defined $attr->{forcenull})
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			elsif ($priornotnull)
 			{
@@ -430,7 +429,7 @@ sub emit_pgattr_row
 				# fixed-width and prior columns are all NOT NULL ---
 				# compare DefineAttr in bootstrap.c. oidvector and
 				# int2vector are also treated as not-nullable.
-				$row{attnotnull} =
+				$row->{attnotnull} =
 				    $type->{typname} eq 'oidvector'   ? 't'
 				  : $type->{typname} eq 'int2vector'  ? 't'
 				  : $type->{typlen}  eq 'NAMEDATALEN' ? 't'
@@ -439,25 +438,18 @@ sub emit_pgattr_row
 			}
 			else
 			{
-				$row{attnotnull} = 'f';
+				$row->{attnotnull} = 'f';
 			}
 			last;
 		}
 	}
 
-	# Add in default values for pg_attribute
-	my %PGATTR_DEFAULTS = (
-		attcacheoff   => '-1',
-		atttypmod     => '-1',
-		atthasdef     => 'f',
-		attidentity   => '',
-		attisdropped  => 'f',
-		attislocal    => 't',
-		attinhcount   => '0',
-		attacl        => '_null_',
-		attoptions    => '_null_',
-		attfdwoptions => '_null_');
-	return { %PGATTR_DEFAULTS, %row };
+	my $error = Catalog::AddDefaultValues($row, $pgattr_schema);
+	if ($error)
+	{
+		print "Failed to form full tuple for pg_attribute\n";
+		die $error;
+	}
 }
 
 # Write a pg_attribute entry to postgres.bki
@@ -466,8 +458,7 @@ sub bki_insert
 	my $row        = shift;
 	my @attnames   = @_;
 	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', map { $_ eq '' ? '""' : $_ } map $row->{$_},
-	  @attnames;
+	my $bki_values = join ' ', @{$row}{@attnames};
 	printf $bki "insert %s( %s )\n", $oid, $bki_values;
 }
 
@@ -475,34 +466,49 @@ sub bki_insert
 # quite identical, to the corresponding values in postgres.bki.
 sub emit_schemapg_row
 {
-	my $row        = shift;
-	my @bool_attrs = @_;
+	my $row           = shift;
+	my $pgattr_schema = shift;
 
-	# Replace empty string by zero char constant
-	$row->{attidentity} ||= '\0';
-
-	# Supply appropriate quoting for these fields.
-	$row->{attname}     = q|{"| . $row->{attname} . q|"}|;
-	$row->{attstorage}  = q|'| . $row->{attstorage} . q|'|;
-	$row->{attalign}    = q|'| . $row->{attalign} . q|'|;
-	$row->{attidentity} = q|'| . $row->{attidentity} . q|'|;
-
-	# We don't emit initializers for the variable length fields at all.
-	# Only the fixed-size portions of the descriptors are ever used.
-	delete $row->{attacl};
-	delete $row->{attoptions};
-	delete $row->{attfdwoptions};
-
-	# Expand booleans from 'f'/'t' to 'false'/'true'.
-	# Some values might be other macros (eg FLOAT4PASSBYVAL), don't change.
-	foreach my $attr (@bool_attrs)
+	foreach my $column (@$pgattr_schema)
 	{
-		$row->{$attr} =
-		    $row->{$attr} eq 't' ? 'true'
-		  : $row->{$attr} eq 'f' ? 'false'
-		  :                        $row->{$attr};
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		# Supply appropriate quoting for these fields.
+		if ($atttype eq 'name')
+		{
+			$row->{$attname} = q|{"| . $row->{$attname} . q|"}|;
+		}
+		elsif ($atttype eq 'char')
+		{
+
+			# Replace empty string by zero char constant
+			if ($row->{$attname} eq q|""|)
+			{
+				$row->{$attname} = '\0';
+			}
+
+			$row->{$attname} = q|'| . $row->{$attname} . q|'|;
+		}
+
+		# Expand booleans from 'f'/'t' to 'false'/'true'.
+		# Some values might be other macros (eg FLOAT4PASSBYVAL),
+		# don't change.
+		elsif ($atttype eq 'bool')
+		{
+			$row->{$attname} =
+			    $row->{$attname} eq 't' ? 'true'
+			  : $row->{$attname} eq 'f' ? 'false'
+			  :                           $row->{$attname};
+		}
+
+		# We don't emit initializers for the variable length fields at all.
+		# Only the fixed-size portions of the descriptors are ever used.
+		if ($column->{is_varlen})
+		{
+			delete $row->{$attname};
+		}
 	}
-	return $row;
 }
 
 sub usage
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index a2cb313..71fc579 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -31,6 +31,9 @@
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
 
+/* Specifies a default value for a catalog field */
+#define BKI_DEFAULT(value)
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index bcf28e8..5436a90 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -54,7 +54,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * that no value has been explicitly set for this column, so ANALYZE
 	 * should use the default setting.
 	 */
-	int32		attstattarget;
+	int32		attstattarget BKI_DEFAULT(-1);
 
 	/*
 	 * attlen is a copy of the typlen field from pg_type for this attribute.
@@ -90,7 +90,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * descriptor, we may then update attcacheoff in the copies. This speeds
 	 * up the attribute walking process.
 	 */
-	int32		attcacheoff;
+	int32		attcacheoff BKI_DEFAULT(-1);
 
 	/*
 	 * atttypmod records type-specific data supplied at table creation time
@@ -98,7 +98,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * type-specific input and output functions as the third argument. The
 	 * value will generally be -1 for types that do not need typmod.
 	 */
-	int32		atttypmod;
+	int32		atttypmod BKI_DEFAULT(-1);
 
 	/*
 	 * attbyval is a copy of the typbyval field from pg_type for this
@@ -131,13 +131,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	bool		attnotnull;
 
 	/* Has DEFAULT value or not */
-	bool		atthasdef;
+	bool		atthasdef BKI_DEFAULT(f);
 
 	/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
-	char		attidentity;
+	char		attidentity BKI_DEFAULT("");
 
 	/* Is dropped (ie, logically invisible) or not */
-	bool		attisdropped;
+	bool		attisdropped BKI_DEFAULT(f);
 
 	/*
 	 * This flag specifies whether this column has ever had a local
@@ -148,10 +148,10 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	 * not dropped by a parent's DROP COLUMN even if this causes the column's
 	 * attinhcount to become zero.
 	 */
-	bool		attislocal;
+	bool		attislocal BKI_DEFAULT(t);
 
 	/* Number of times inherited from direct parent relation(s) */
-	int32		attinhcount;
+	int32		attinhcount BKI_DEFAULT(0);
 
 	/* attribute's collation */
 	Oid			attcollation;
@@ -160,13 +160,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 	/* NOTE: The following fields are not present in tuple descriptors. */
 
 	/* Column-level access permissions */
-	aclitem		attacl[1];
+	aclitem		attacl[1] BKI_DEFAULT(_null_);
 
 	/* Column-level options */
-	text		attoptions[1];
+	text		attoptions[1] BKI_DEFAULT(_null_);
 
 	/* Column-level FDW options */
-	text		attfdwoptions[1];
+	text		attfdwoptions[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_attribute;
 
-- 
2.7.4

v5-0002-Data-conversion-infrastructure.patchtext/x-patch; charset=US-ASCII; name=v5-0002-Data-conversion-infrastructure.patchDownload
From 804535b3a38602807ddd282cf489331a4d1f9883 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sat, 23 Dec 2017 15:50:44 +0700
Subject: [PATCH v5 02/13] Data conversion infrastructure

convert_header2dat.pl turns DATA()/(SH)DESCR() statements into
serialized Perl data structures in pg_*.dat files, preserving comments
along the way. This is a one-off script, but it is committed to the
repo in case third parties want to convert their own catalog data.

The pg_tablespace.h changes allow the OID symbols to be captured
correctly.

Remove data parsing from the original Catalogs() function and rename it
to ParseHeader() to reflect its new, limited role of extracting the
schema info from a single header. The new data files are handled by the
new function ParseData(). Having these functions work with only one file
at a time requires their callers to do more work, but results in a cleaner
design.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, preserves comments and folds
consecutive blank lines. The meta-attributes oid, oid_symbol and
(sh)descr are on their own line, if present.
---
 src/backend/catalog/Catalog.pm            | 214 ++++++++---------
 src/include/catalog/convert_header2dat.pl | 379 ++++++++++++++++++++++++++++++
 src/include/catalog/pg_tablespace.h       |   3 +-
 src/include/catalog/rewrite_dat.pl        | 197 ++++++++++++++++
 4 files changed, 676 insertions(+), 117 deletions(-)
 create mode 100644 src/include/catalog/convert_header2dat.pl
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 3bf2ab0..da251bb 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,18 +33,15 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
+		my $declaring_attributes;
 		my %catalog;
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 		my $is_varlen     = 0;
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -63,9 +59,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -73,68 +66,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -142,16 +84,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -232,32 +171,96 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
-	}
-	return \%catalogs;
+	return \%catalog;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	$input_file =~ /(\w+)\.dat$/;
+	my $catname = $1;
+	my $data = [];
+	my $prev_blank = 0;
+
+	# Scan the input file.
+	while (<$ifh>)
+	{
+		my $datum;
+
+		if (/^\s*$/)
+		{
+			# Preserve non-consecutive blank lines.
+			# Newline gets added by caller.
+			next if $prev_blank;
+			$datum = '';
+			$prev_blank = 1;
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		if (/{/)
+		{
+			# Capture the hash ref
+			# NB: Assumes that the next hash ref can't start on the
+			# same line where the present one ended.
+			# Not foolproof, but we shouldn't need a full parser,
+			# since we expect relatively well-behaved input.
+
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+			}
+			else
+			{
+				my $next_line = <$ifh>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+		# Capture comments that are on their own line.
+		elsif (/^\s*#\s*(.+)\s*/)
+		{
+			$datum = "# $1";
+		}
+		# Assume bracket is the only token in the line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		next if !defined $datum;
+
+		# Hash references are data, so always push.
+		# Other datums are non-data strings, so only push if we
+		# want formatting.
+		if ($preserve_formatting or ref $datum eq 'HASH')
+		{
+			push @$data, $datum;
+		}
+	}
+	return $data;
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -313,7 +316,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -345,22 +347,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index 0000000..5ddc137
--- /dev/null
+++ b/src/include/catalog/convert_header2dat.pl
@@ -0,0 +1,379 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# convert_header2dat.pl
+#    Perl script that parses the catalog header files for BKI
+#    DATA() and (SH)DESCR() statements, as well as defined symbols
+#    referring to OIDs, and writes them out as native perl data
+#    structures. White space and header commments referring to DATA()
+#    lines are preserved. Some functions are loosely copied from
+#    src/backend/catalog/Catalog.pm, whose equivalents have been
+#    removed.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/convert_header2dat.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+# No $VARs - we add our own later.
+$Data::Dumper::Terse = 1;
+
+my @input_files;
+my $output_path = '';
+my $major_version;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.h$/)
+	{
+		die "Input files need to be header files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Read all the input header files into internal data structures
+# XXX This script is not robust against non-catalog headers. It's best
+# to pass it the same list found in backend/catalog/Makefile.
+my $catalogs = catalogs(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	# First, see if the header has any data entries. This is necessary
+	# because headers with no DATA may still have comments that catalogs()
+	# thought was in a DATA section.
+	my $found_one = 0;
+	foreach my $data (@{ $catalog->{data} })
+	{
+		if (ref $data eq 'HASH')
+		{
+			$found_one = 1;
+		}
+	}
+	next if !$found_one;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+		push @attnames, $attname;
+	}
+
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write out data file.
+
+	print $dat "# $catname.dat\n";
+	print $dat "[\n\n";
+
+	foreach my $data (@{ $catalog->{data} })
+	{
+
+		# Either a blank line or comment - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			# Split line into tokens without interpreting their meaning.
+			my %bki_values;
+			@bki_values{@attnames} = split_data_line($data->{bki_values});
+
+			# Flatten data hierarchy.
+			delete $data->{bki_values};
+			my %flat_data = (%$data, %bki_values);
+
+			# Strip double quotes for readability. Most will be put
+			# back in when writing postgres.bki
+			foreach (values %flat_data)
+			{
+				s/"//g;
+			}
+
+			print $dat Dumper(\%flat_data);
+			print $dat ",\n";
+		}
+	}
+
+	print $dat "\n]\n";
+}
+
+
+# This function is a heavily modified version of its former namesake
+# in Catalog.pm. There is possibly some dead code here. It's not worth
+# removing.
+sub catalogs
+{
+	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	$catalogs{names} = [];
+
+	# There are a few types which are given one name in the C source, but a
+	# different name at the SQL level.  These are enumerated here.
+	my %RENAME_ATTTYPE = (
+		'int16'         => 'int2',
+		'int32'         => 'int4',
+		'int64'         => 'int8',
+		'Oid'           => 'oid',
+		'NameData'      => 'name',
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
+
+	foreach my $input_file (@_)
+	{
+		my %catalog;
+		$catalog{columns} = [];
+		$catalog{data}    = [];
+		my $is_varlen     = 0;
+		my $saving_comments = 0;
+
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
+
+		# Skip these to keep the code simple.
+		next if $filename eq 'toasting'
+				or $filename eq 'indexing';
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			# Determine whether we're in the DATA section and should
+			# start saving header comments.
+			if (/(\/|\s)\*\s+initial contents of pg_/)
+			{
+				$saving_comments = 1;
+			}
+
+			if ($saving_comments)
+			{
+				if ( m{^(/|\s+)\*\s+(.+?)(\*/)?$} )
+				{
+					my $comment = $2;
+
+					# Filter out comments we know we don't want.
+					if ($comment !~ /^-+$/
+						and $comment !~ /initial contents of pg/
+						and $comment !~ /PG_\w+_H/)
+					{
+						# Trim whitespace.
+						$comment =~ s/^\s+//;
+						$comment =~ s/\s+$//;
+						push @{ $catalog{data} }, "# $comment";
+					}
+				}
+				elsif (/^\s*$/)
+				{
+					# Preserve blank lines. Newline gets added by caller.
+					push @{ $catalog{data} }, '';
+				}
+			}
+			else
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+			}
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+
+			# Push the data into the appropriate data structure.
+			if (/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			{
+				if ($2)
+				{
+					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+				}
+				else
+				{
+					push @{ $catalog{data} }, { bki_values => $3 };
+				}
+			}
+			# Save defined symbols referring to OIDs.
+			elsif (/^#define\s+(\S+)\s+(\d+)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+				my $oid_symbol = $1;
+
+				# Print a warning if we find a defined symbol that is not
+				# associated with the most recent DATA() statement, and is
+				# not one of the symbols that we know to exclude.
+				if (ref $most_recent ne 'HASH'
+					and $oid_symbol !~ m/^Natts/
+					and $oid_symbol !~ m/^Anum/
+					and $oid_symbol !~ m/^STATISTIC_/
+					and $oid_symbol !~ m/^TRIGGER_TYPE_/
+					and $oid_symbol !~ m/RelationId$/
+					and $oid_symbol !~ m/Relation_Rowtype_Id$/)
+				{
+					printf "Unhandled #define symbol: $filename: $_\n";
+					next;
+				}
+				if (defined $most_recent->{oid} && $most_recent->{oid} ne $2)
+				{
+					print "#define does not apply to last seen oid \n$_\n";
+					next;
+				}
+				$most_recent->{oid_symbol} = $oid_symbol;
+			}
+			elsif (/^DESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "DESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "DESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{descr} = $1;
+				}
+			}
+			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "SHDESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "SHDESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{shdescr} = $1;
+				}
+			}
+			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			{
+				$catname = $1;
+				$catalog{relation_oid} = $2;
+
+				# Store pg_* catalog names in the same order we receive them
+				push @{ $catalogs{names} }, $catname;
+
+				$declaring_attributes = 1;
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
+				next if (/^#/);
+				if (/^}/)
+				{
+					undef $declaring_attributes;
+				}
+				else
+				{
+					my %column;
+					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+					die "parse error ($input_file)" unless $attname;
+					if (exists $RENAME_ATTTYPE{$atttype})
+					{
+						$atttype = $RENAME_ATTTYPE{$atttype};
+					}
+					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					{
+						$attname = $1;
+						$atttype .= '[]';
+					}
+
+					$column{type} = $atttype;
+					$column{name} = $attname;
+
+					push @{ $catalog{columns} }, \%column;
+				}
+			}
+		}
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
+		close $ifh;
+	}
+	return \%catalogs;
+}
+
+# Split a DATA line into fields.
+# Call this on the bki_values element of a DATA item returned by catalogs();
+# it returns a list of field values.  We don't strip quoting from the fields.
+# Note: It should be safe to assign the result to a list of length equal to
+# the nominal number of catalog fields, because the number of fields were
+# checked in the original Catalog module.
+sub split_data_line
+{
+	my $bki_values = shift;
+
+	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+	return @result;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: convert_macro2dat.pl [options] header...
+
+Options:
+    -o               output path
+
+convert_macro2dat.pl generates data files from the same header files
+currently parsed by Catalag.pm.
+
+EOM
+}
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index b759d5c..0e349f9 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -58,9 +58,8 @@ typedef FormData_pg_tablespace *Form_pg_tablespace;
 #define Anum_pg_tablespace_spcoptions	4
 
 DATA(insert OID = 1663 ( pg_default PGUID _null_ _null_ ));
-DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
-
 #define DEFAULTTABLESPACE_OID 1663
+DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
 #define GLOBALTABLESPACE_OID 1664
 
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..410c8b3
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,197 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata fields are on their own line
+#    -Fields are in the same order they would be in the catalog table
+#    -Default values and computed values for the catalog are left out.
+#    -Column abbreviations are used if available.
+#
+# Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @metafields = ('oid', 'oid_symbol', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Back up old data file rather than overwrite it.
+	# We don't assume the input path and output path are the same,
+	# but they can be.
+	my $newdatfile = "$output_path$catname.dat";
+	if (-e $newdatfile)
+	{
+		rename($newdatfile, $newdatfile . '.bak')
+		  or die "rename: $newdatfile: $!";
+	}
+	open my $dat, '>', $newdatfile
+	  or die "can't open $newdatfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @metafields);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v5-0003-Mechanical-data-conversion.patch.tar.gzapplication/x-gzip; name=v5-0003-Mechanical-data-conversion.patch.tar.gzDownload
���DZ�����F� ����
L��i�J%�
����lk���%��������P$�
m`�����/�	Ff
�r���%dDF�;"#?�m{?���$����b������?�e���uR�o���?@�����m��C�|��\�a�
���]����d�&@��l�:)*+n����}n7�X������,V���Rq5���l�:�������������"��4�9��S�[����D�m���r�.>�?���2Yo��������y�����U�-�����O�O��+��&}f���}:g�f��_y�W�c=�#�~�ns��t^e���/���C`����7����R���O����*����M�2�6��*��z�d���r�"����"}1g�[7O�i��~���M�EZ��7������eV������������-����)�5�������\���?��w��M����0�Xfuz��������I�b�J~�X��Rn���J����2[����J�l���j�^�}S�ie]3����*[f��gV��>����c�~��b��e����>����ejm e���6-����l;JF��*��'�huQ���+�y���t�.�?���xQ����2��)��K|e��?,��}���+�����W8S�}�X�~�}e�S�O���e1?�"��?���/m��l����:=�����sc��3_&Uu��L��X.��+�#Z[Nf������;�W�>Z/��f��t��%OVi�N��)b^�W�u��o�>�)��%�G�s"�m�����u����O��zq���u�Z/�X�������2��H�d[�
<������^4>��J�8+��nNv��G�_�\%�`6���{�+�l^�n�Y(����R	�������u*���Z%���5}eq�s�.�Y�3+�^\�/����5gZ�N�U�H�v��(������7Z����+}k�3U��S�J��i
�/+N�/�O���P���(R�/�S��T����T�{�:U��\�W�*_:U�J�<��Z_�iS�/������U���{���O�,��k���&������B��$O?6���'Y�H?Ymhf?�-��4��n��b�~x�o��'L�c�|��ua?����3��~����_X�[O���S�A���������y�-�����G�a��g�����Q��=��Y��������/������y��u|�~�2��7����,O������e6�\�����
��_ey���������g���O���/-R�������sH������K������k�H?�_k^�>����y�X$���<.���WEYka78?�������F{4��1!��W�/dyV`q.v���rO0��=��1c0���v�$a,�c]�|t3���4�Y�9�xLfa;��b��rx��+��*�����8�}.a��Q��0���(�#��3�g�(;���Zv9�9���o�����\����
a�&�`R����vk�
������H�V�9��T����Rh��C.����	p�
��D��z��S�9�~s@h���%���l?��%��D~�����#�K:X��0N��&��Q<cU����v�=����x�]mVWEf\�����2��N�?5�e��;6c0�C�S�"��zi����k@,��A� ���\�6�����s� ��B��I��
rv�|�)N_�]������xwV�,8&��6&Q�lSp�6vF�l�t�<�n/�{}���V��Fw��W�D�}�"�����x���>�Co��
�U����,�T���_�LR�
�rI���2�����)���U�	�7��)�����T2�������
"����a��W�q�!�x�:��{S�q���������qX�O*�0�&��Q����m�C�o�q��6I�I�-���v�-���C;Md�R������o����k�������P"���5hn�Ijp�������xh�����u��'��&��:[)n���������S
�\�$ ���7���|��m}���q�)y��I>�]��������3��J�����$!�%����Z]���=��w���}�e`��������������\	��b��������zx����Rv�$�W3z)
�m������
&���I�nW�V�v�Km��(���T��L6?)������_ypoGp���T����o�_���I����w�����i���y����W+���,��6���td��B����&��7��{���}��^0!���QgZ,�_;�Km�������x{�tVf9��Vi�j�,�J��'�xh�����I�Vz�q|�=����E�I5Wz�g7\�-w���:~R����yg?����/<�
m���T�g<VFQ��yp����|RY:�3	��vI����\I6~R:�����'w��A(��	������L���������
�s�������kRm���<��w�c3���M�p��I���~��m~�m�����M2t�uRm��o<�m�����T��� h�m�.����6��M���7=U�k��d���=8��X��Q#��wR9������1����IV���TT�W���p����.}���~������zh{�D�V��������6Q�m>����6���Z�����vQ��=�����A���z/Mr��j���������p�v:��F���^J�M�����P���i��w���.���������s^l���M�����e�F2��S���������n�W�.�l�l���F��m�����w���>���S��5��
>l������
���+��&�f&c��9w7bJ���Fe�)LJ9�����'�"!��y�<o��,��y�,��������4}V���h�c{���f4���A��F�h�w���%������������&J�nJ}��{�$s�����z�����b�S�JV@`��a3{|6#��K��s��S��m��9�z ����m<�94jT
���j���#�IY��-�����3��g5����G6�:Pt+��y�m��f�-K�y��u�Uu���^�����2���s^'��������.�l�`��X�nb9���2�T��X�nl�h��c,��j
�v'��G'~�N��I���
��wTl�����
�U�b�~�tB�!�	����5�0����=��|e��Dj8�z���`�1��L���`m��F�=��v390�
��Y��W���]��
��~0�Ib�M��&����)p��k�c�-R����&��s=g����b��?���������c��R����p���#�I������Xl���������	�Lr:j�4\�aB���qb��m�����Q�n|��
��"g�e�n���c�w��nwY��*�=�zw�pwU�{t����;�]��9a��pw��i������z���G��=��gR~���yUV����oI�V�R�Y�|�V����r����K
)�!�+!�o�;n�~�;����5j^�>}�1E�+����=��J��dGU�����-�	[S��lq_�����-�7�V����I��:_<��������|Q��\qO��`|��X���1�	c��`���v���G��'�a\SA1��8?��/��4_���<2���n2���,Yb�,�$WE�L��"aL����{Q�,�c�_f.�:���
��6��4���Z_���������\��&�S>�\�*�QO�-YI��#0*�q����_�C��w�!��������E�i,QV������M
��3�Sd�d����7l��#Z*��/�u�Ra�w/?�����a���$���L��)����h��_=�}�Mfx���D��3��YNs�M��S����%���g����������>;A8��6iSa����w�y�}�����R���m���O��|��.r�/~O;���cmxR��gq�=������K��r�T���+�����Nm��(�:����6����?=��x����-Q�
/0��Tu��7�j������4���/\}��`��+�������#cL�1�V��Nd��7��a��#L������d��-���^C0�����0^���+�-���-��3��#+L����L����b����b�7p�P���LUZ7
����E}��|�^�P>h��E��r!cGd�-�K�����
�y��$C^g��r�U��w&�9j�h%���>p����p3�����������&y`�����~h=1�9b���Q���Xm�u6Yv�=���x����6W���D|�����x�������T,_0*��������:���Z��u���>�(��������p<�����0Q^�u}��xa�Y5�D��Sd���8#,��JU�D8���{�0��..n��J^T��E����E�b�����y���LV�Im]��$O?Z�,��h9����S�'�n�y�<��R��~rqqa�X�^pt�<}������ua?����3'�������>�W���=^���������*�����W�._�t�����S�M������.S~������iUY���-dd��d�'���W�MN��m�/�������O����$���LD�//����6�nQ8���CRQ������CH���{�B���{)���5��Vo@�^�A��(����m�w?�(���4��5H.����n����jY����������?�c� ��#^��sZ�}�g�����zf��G�f��f�B�l����Z�9�}Y����"�N���
�'uQV��1����U�l���M��������NeO���x\1��`~>�d�p�)�E�e��3���g��A��G��9f�����n���l��
����T��Q���
][�/�yYT��t*�>�Z<h-)�1H��C_�������Ck�������(9�But�r������C'�D_� 2|5�?�Id���� �Qd�FS�#�_
N��*YD^��E�
Jwlq~�7tQ~��JC[�_:h���.�/u����C_):��E;:�1H���]�_:���������K5L�\��R�Z��R���-F�A�ClQ>�*N�#���U���`�������
�����Jvt1�;�F�*�b$�wU*�bD�Vc����A��0�R;+����h��N��*�)�w����:qO_\~&�'U����(��X)E#Y�v��w�����S/]�Q4I��.�(z��.�(���=�y7����!��k�5��0��k]���Mr�]���6M�M�.F�B��]���:.�A���s#�"x
������BI����H�/F��BI��H #/����A���2�!�3W���h)l�=��L��D���,�OcZ�EYB��� @e	}���]�%�5���6'��L�$q�
�0��%���'U�&�(	�j��@%�T�-�()�*�S ��S�8s��������T�3�P�'S���R?���$��	Ug$��O�:z�)��jR	��HeHU/�@e)���,%U�a�����H%�Q�2�P�=�RV�P\�~S�Cu~�c���:OB�1�RR�(0�YJ��H
�q�R���j�oy��w����Dx���cu�Q�0)�EYG�A�-FgSAeIT�(�h&z��u_�,��K��E��E�d/������/$*8����>G�[����A%:�����������C��G���M-'4^�8�#������?���9�8�#�!����?�*�����	k{���G�G�v@�(T(��A;���Q��������A�$�������������L.�1�������qf�.�@%�3"b�.Jg��@%�3� �]��tT�A����zbC����.����\��0�d|Qg�I�i|1r�5����$�?
����:�A��$BF��F��;�Y���{%�F�2�{%WA�2�{%I�P���^I�_*�q�����������Vu�ZS,����Uo+�H�Y�PFu�{:M����Q�2I�@�2���#�l�B�c������7���BJ���R�,�8!�qz�P�	)M�e����n���cB�����4�(�(��I
jT(��S+{8�(��i�R"�Q�i�$*�&T1��� u=�!�����$}�T(�l'Ig.�8���9:�8����K�������K3��
e���L��B%�Z��C%�ZsC%�����:�j��������B���H�$S��J�z$��PF%r=�\T(�����>2W�"#7�X�`(�\�x�1rq�A��"�8�d�	�87����e��1��\bC�2��%�oN�2��%���
e��K2��
e���k���qZ��Kf�����Wr�@��%�,`"�q�-�&���rl����3��ut&�3����\�S������m����������e3H�Q���� ��2�Q�:�g�l$]�d8�d3�9cpz�k�!Y��t��8�d5�4BDS
�p�e��n�!��"�T@�3.'D4��g\RH�q��U2O�R&��s�����su�t��l�`�J��2;�Q"���"�%�.��-�Q����hq�Ay��m�+�+������ �#�c
^!�#��VC�Pc��aL��%�#�c��yZ,�_%�1��J(Q+��y�i�
	�8�hS("�q��d�;�8�h]~B�1�<�J�H7����2oUrU2M��u��H������$�@�3J(#�d�(��H�����(0�<RK��j��#����:D���EIb8���b�pFRN%@%}!��]tQ����\e�D�<������4L!M{	�8K���1�8CH�*E�2��4��hP��A����<~HJ�H��
g�A�u��/�I"2�q������pFIeL�������BD2�q��\3x:��Z'u���D:�^���)]���q|q��$�x����Uit��>W���>
|qM�:�wT���Z� S*]����D8�$�%��Qv�fN%�8�ti�$�8����8*?y����n��i�f&��h�T�h.	�A#�3"G�a�����t(�1�8�)�0Fg:5��,������u�]a����d���$^
����$�W!���@�L=�iH�S!�\i�i�������)���t5�`WFc�"�1���4c�1&9�B�0Fc�H�P ���X'r4��,����>��F���h��%zC�2nV,�*�q$�I�B�h�I���B7+Vg���:/���D��Qq}�������lF�R�����H.�#�#�����J�3*�3#�<M�3*�3���d3[%7���s�PB0�N�3���!�P2�1�9$J�3���!�P2�Q�����n6Y���v@w����4l'��H�3�vF$!�8�I;�����I��
g���q�����\V��j����'k�'�N�r�����:b6�(����Y�pFYM�#�d8���KR&�e5�yr��M�[+��'�p����@/����j�A��������ss����.�9��@A)�`�Pw7���9���ERK�wf����'�B��v?�
;�m����2
k#�8#�X�����:��������A���*�[/���2u�<�S�W�c��:��c�:����]-*l%��6o��$;*t%���
�]}��3�]mI�IG��O^�sX��
_�������pMc4���Z0�j��������/���f2Y@,Y�w�)�F�h�3y���3��p	�����^$S����POpp�s����!|^���t^r���l�I��Q|!�9��9#9�ws�>s����e��L6�Ob��^9"_��;��#Zj�x�-t���4�V{�FH��*h����Y��?����h��b��N9���79�-q3x��9�?I
�{H�jO8��j�>=x����m��m�����I.&9�yrU��~��3��
'n�5h���1	��8�!	�h�q�"��-�D\�m���$��)�^��2���|	�*�'��<mn�4`�[���*��\4P��=.�CeI��g�2�^�����;�w:�Nk	G���B��Y�a�
n��fN�'y7U0]�PbB}��CA|t����24c�5|��1��N�:�:��6
Q6��
�)��p�B����p�B���B8F!d��Bx�@��������y�	i6���	��P��������xnN����a�}��3�.�\�Z���8������FE��`=e�Sa�B�BO!�:�F�0FM�@��0�xG�s3�!�(�U���EtH�q�E
�!w@fx�cp
��Gp�r��XC[Y�e�����6�5{�j�y�'Y�LA��	��@�
�|����@�7��@��0����>��F�
���c!��@O�B�7 �)��
�"D
�Qyh(�X#�R���Q
�ed�`B�
�7�����
&���y�q4�~���J:�����yV��=���0���8��60������I2Dc��	�y~ca�mE��!�w�9I��c�+���(<����:4	"�1��C�	#���R��$��2"9�$(��4�r4�q�(U$H�2��c ��1��U�it������|�/{�~07��$0\E�S!���(�?"�(�;GD9oU�=S��|#������HjGh�A��eg8�Q����X8c����d*��	O��g����OS�/�5���l`J,5Nx]!P��m�B���J�}����fP�(�$j�
g��	I.�"��bB�D�P��R1!<�����!{���h����CXl)�f)�� V�f��J��H2�qZ�7(x�u��MZ�&/����L�4�<P���?��	T8��<��a2�qZ>���D8��|��Hn�|�dF����+������T��d9�Y#�utA����i{3x���}��Bh���I�"�(��������X�)g�Z��.��pF���D��g�V����y��z�_������F�S���/$gR�pF��.2�q���(-�8�Br"�gL�����g�S��p�pF9�1I�2��+�1�c�&
:���4d1����/��M���;H���������}�E�P�����F�X�(�x4�>K9���)�cP�i�K<���&���S���#$(�����n�	��V�P�|�zD��H��d�x���C��o"� �9���2�v`�1q:<VrtQ=�4l`$�1��!<
��vu���0F�B�Sy,�1L���a�MYDX��;T��V������vu���4��U2�q�s�12�Q�_���p�����zd,�Q�_��������$���dy_��e��n��@%�]���JiX�c��1�ct(;�>
T� ��W5&�H._T�����I}+�u�!��G��Ea?���;+
�{ddH�W�GDZ�,<"��u���/���~exD��K�#"�_��(�Hj���R2v_�����3Fs��oKP'>���%��1�@��%�����	�a�}c�hk_�0��w&�����	�a�k�h(\�0���&�����	J>G�fhu��Yw5~Yk?(0���<�G�<���G�X{�hk�`
c�!��a�=�y4���0������p��<����Q�H��dy*kC����,#�_�z���s�qD��-�S	4��N�k�z4�1z��<!*�5�Pb��PF
�tm@���2jn�kf4�1��Lr��e�=�f��1���A��F��@��)��=�4��q���G���;���#�
L�x8����p60����o���Y������gmC>���|<��M�x(k�rT,��/��X�z�L�*���U���O���:M�f�\���B��R{��3������)Fi�t/�H�T�,��H�����9�#!��g������^�0�M�?�+��I�2���
�K�Eqs|Q�� {3���q#��:����E�p�l9^��d����s#��;p��A�L����;�I�-��EI�w�.���t���/��n{��r--���g:���sC|�>8����G��*��/��1��^h�H��:Q�[.��W���Cm�#!�
�b�o$�QA_E������	aT�C���#��e2�(#]{5�8#d�G�e����g�t�,x|%���t�f$t1�v��l||QA��.�
�i����L8������9���#!�s)��L#!�t)G��QC���D�0���f�
���KP��	�E�8hN�H�bD.�*s��2r�|���E9�=B|������q	]�K9lH��/���7�\�a��
�8�r���_�.�F��~�O��8�6�z���i�#���n���nB�b�-��TA������7h��H�bd
:%y��"8��N�$��
���9��S�G��ZR�^�����P�bs|�G��[P�l7��������C{��A7�h5����>�v����_]4�(��jG"�%}Z�=�'�>�
@��v�O �4�M����f2����������	_���1tr$�Q�����I�^/����l��?k�CS�|{��u��Hr����Q��G�`�2�T%^�Q����K�1�4R�<I0FG�$�*�����X������%{���X������%}�]�����$
��PU}IP��U#	�8��j$A'~T)�q�GU�QEY���T��$��N��y�Q~'���Q~'4"s4�Q~'4 S�$�\Uu&9��z#�EU���rU�!	��*<U%�cT���1	��J<U��cT-^�L�^�t)�E^\���/�	����`��E2;C�1N�z�H0F�"�18�q�h4�e����>��K��YP����%��P��G�S��
]�
�� �%��P��
]��]W ch�
V`���:Ze�\�{�#r�hPF�A��Q4(�J�Q@@�2F"�4�O�Q��zf�4|f0�S��4��lQ:�	��)PF�W��)P��G�N�q�;�8���EHc����*+r�@:6��o--H������0�L���������pFh��-D(���Pyo����d^K��E`��c�p��u�nSM�%Be�m����!������@e�m���DH������?��]����}sS����%��^��>���$��cV�P
�#B��@��N�4������4H���f!�kg����K���k�K��g��Vu�Z���
n�
���aG�G�w��d�^h�Fu��Tcs���������C�o���A�"o��pTD����]�#�1I�4J=�Y�4H��#?J�4J=����F	�G�J��=b}�H7��i���dLh�F	"�L&�Q�H7j�i� ��t�������M6V�i\��l�
�����DH��?d�h������)"m#z�H�h#z�H�h#z������#	�I���T#�U�6pM=���8A���!����5�H���"B�4N�N@�C$k��cDE�q�#*"��x�Qi� RMA!B'����E���kJ7��i\��lz+
��d
��o�q��9�4H��5�H���5u<�;eh�F%k<���4H��5�u-4H��5�s�Q�O��J����C�����}axf���I6g�i�t�
��A'�d�Fh��I'���q��U�[�������P����bJ�8O�4JL����� �� �2�4H��4��(
�(1
�z��bz�I���~�a�Eg	���2��A!���*�'B%�U^�i�XF1U�?
�(���RT�bi}H��Y~.e�;��H2����3�:�G�4�JH�Fn"�Q�S[%B%�1��}"�q�Cj����g�Y�e6��?x���M�<�@�rR,"Bg9��,�q��,t�Ag9�:	
�8�����hn6�;bZ�;�5}�^6�Qu!�*���n^iT�dF�!O�4�l2����iT�d��l~<:�L�����T�nZ��\�����C1QK&��!C1Q�.�	�b�@�
i�������
i���xF5e�i�d�4M��
i��
�4�t5�]Wr�3��I"M�F���B5��k���If_l��� .��5��a�3�DMldX#��Qt���\V9���|�����2\�����d�4�a\�*>�A�/d�u��Fy�K�� �������gW�'X���kC�8�P,�O�Q`�J�����#�����Ca�G�,���#�>Y�H�1&6��.n���D�Si0��>Y C����Ku#�	��0.�MD8��Y�L!�w�B+����1���f�xf]mjk~[pyQ[u���6�5�B��e�V�uQZ[��_�J����$k]-���j�}����,��k���&���EU�_4��"}1O�dY��`�Q�Z����"�����<����u�L�U�H-��C������e��<~zI4��\\\X/���f�|���S�o��.�g���y����o�.����_�����L�m���#"x[���+���I7�u�Q�Y���I�����C��:0���C"��Od���C��� O>��t�Q�����dx`�\q9�Pp7�y��(�o���N��K��x�9���,��(��sz�$c�����P��1�.X��1F���GP�R��z�R��\[�J]���-�1h���=^��Jm?����+Ep��E6�J{�:�{���@���^E�D{*������j�!2�'��"����������c��@�*��z0���ufz�t�az�\R�I��Ar�g9���w�Y��� �<�Ds����]+�����E��\��v��v�=�>���9��@��^���i��@jU
A�X���@��V-�����5���(��v�i���_
��}���g��/����\���Y�Xf=\��p�Z��'��)��A�v�����sv��e�w'���_� �'
{�I��V�'<`P%iW&)�Y9��^�%(ng��<�dg=Y��[���%b�m����i�g�)
l���I�Xf�O>���c�h��%A��`;��#�b�I$2�2s�;@=�H��������M�D��%����]��Vc��g�\Z���k�+ZU����4W0;��z���$E������'�BXm]Y�)�e���O� ��I
���w�t�F=)wJ,�����#�Y����*���UjZ\_��|$]k,�\����Au����%W�=������/H�H*2�Y��G�kz�+1i^ �5O>��,�r�����J�'I}#Wnd�0��j����GR���i�f����u�P�?�����-��Li�L��Grw��5�|a�&����;�=w��C��g=���Iv�����U�)�u���}E9�+hX<�{R�d0��t�qL(��f��'�O�����A��I��IA��OQ�����h$iP�=������gw>^iT��{l(�.�F�ic���W�|h��>�
��~��O��T��=��)3�=������siZjg�@�j7���z\,S&o��')���U��I�����J�(�l��$YT�����e
��
{����� ����HP���*��a�'DP��>9�gi�*ao�TA��}jn6L���m^�*�!�l$�7��tm���DPE{����e) �jU�sF�������/���vf��+T�}ue�S�c0}��
�O�_��F�{�h
������2s&K���^_a��B����d��s>���Y!@�Jl����3k$��J��6*��Y%	H�U������4�Y��dvy��T��*��{r'�;�y��fNT0#=�P�E��=�$dPE��������yu�.��k�S��"��eT��;LR�z:��e� W�tP���=�����Y=~f�p/Tq�=�mY�y@�1Y2��Z�C��MV�p�o�,z(e�sb��HE��b7���&����d��'mC3��S#�
0{rbD0#fO9�f��;�������$�0�F��@�
z�9T0U��
���P�T�*�*��`JlL(m/��3�=�)LE"��	0{rpD0���"����o�:��)e1���8�6
F������'	LEY!�)�J�yo*���BSQVH`*�
	LQV�������=u:���)�;o@��B�I�A��=����{�GdPC�]�p$@��pD�����+x���P����0TArz���A��p�S��*�pOc#T��{���#�������+�.�=�ctP�������v�)���dP���f�IS�Q{>���C��IA��B����^Y*�]�
zz;�`v97�9@���A��*��� �8~���a�?�e�1f������dP��#��
��zP��<s{�R�
6�"�7�"�*V=������'2�B`�����vS �N)T��{W�����Y9���N5�A��}����vy���QK���~O��j�����,�*i!4����P��z;�����st���L�=DPEf���j}!m��|��Z�0��[GU`��AtP��zB;2�k��S�A��=~�RF���Y���h`v9)�9/C��GQo��f�����%
L!���X�mGs�d�����40���v�8%*�^fOdE�`��40f�G�H�4Cr��Q����T0E�s�h`�<�����T�!�X��%n�;HQ��^�GQ��^�GQ���6T����K�g�����LW�)�xT0=�\�Q���r�G3`�5�)9Ng���`�%�
�"��T�!��<Ds
��!���/��X�z�L�*���U���O���:M$9�]/�R������0�7OH�z��3
�����%������mR�A��l���u�g6����@T�X��76OV����)Y��;�l+D�m%�����ok���MZ~���>������dGg
����k
�j{MQm�) J�����>�>���S���\>�>���S������x~��>��"���ly�GU���iuwR8��N*@$�I�D)�8��T�8�>f! ���iV�C��`�U"�f5�HUs'
nR��I�D;��H"�o�%���4����q0��/�>��(@z<���A�~���
�i�wT��X��KQqc	 �O�B����gp����D��D�����Z�w����s�JQqW	 *�*���z�,��$�h�K���,
L�������40U���
��w��i��I��*�{Q��
L�U�I��*0�bG���*0������
LLh�\Uu&-sK�����?��$0������<�9���o�������T�a��;L����y�X�2,dV���;��$0w�����D���C��%!�����-&����D0���&�+)���C\T{N��������T�`�=���������g���.������I`v�8vO�f�x�c�!"��=`��=����S8+�s�	P��T�Qn2��-���/��#��N�u*�r$�k��iI"��z����$�����R�cV�����oE.
`������t����'����DP�o�"��f���z��}U������O����vR��3��c��*�d��*�e��*�N�@=������v�}����P��W;65�TP��W���
AU�>�vj��5��Zwg��R��T*���:��U�z�:��U�:��������Cjb5�d�����ng���"T��U�J$�=P���P���5�"�;���<'E�w���yN�P1���y�!Y�+�~XO�{��f���b���b���B��l�2����R��?�q"��"NUQ�������LZ���� ��Y�|�)�DPe���lAE���!)?g���X���J���Gz�MUm�����6�����L�l.�-�5��i����
���&����������FzT(v`$�Y C��#M�&��(�DP�*���L����?T��$���C����AU��!����CU��j_�^�����v�*��{�lW��������\V�5d�q(}��+'t����$���>��*�O"�(�yU|�1���h��9�ISQe��TT�$0�%�~����/��*��=CO����Ev}m]\��H.yQ��
s/���N������M}�-�/���:���<�h]g��Z��rl;��'Y�H?Yv����g�Ev�����z�H?��7����O�� |��ua?����3�������O���7��M��z����J��o����,����ri]�V����<]XlqY����C�����JKk~[d��z�����9_�z6O�l���:-+�.��6e��b�`0���'���:�S����*�U�E����6e���k�����r�����6i������/�%�>����t�v��b�l�y�����������������_����/���#�gq���������{��/���`��
#P��nd�-����G�2M���K|�hv�,����E=�Tf����<z|�y�TU��N�_��2[m�_8�S����lW~������C��������2�#��5G�:����?�����/y�������y���/"�c�
�E���5�Z���j]�����u=(��3������/_�����W���~��;�nl��K& �UZ�L��4��|�|uR��h��'����^��|���_���D���
/�������|��)�^�����������z��{�@p�e7y���J�����aS�	1/����vo�����Nco���������a��)��+�Gd�?��`�&������3�jS[SkQ�dK*��Qr_���=w=V�*�7��i]�Pj��E���i�h|�_��c��T�t�]gs��Vqm%�g#[�l���(��d��No���WV����H�����9Ej��9fY�����t�����j��k>���w|��69}�u3���7~f}�����l�S���s��~��,|���E�/?7�V��bS���6.[�Y��7i�y��4��z��.v��	�#��|HZ�4�>[���[l9y+�0^���`���	�0p8�)�l~<X���!$� N@|`
F�����ds����|�z=	�r������ 0�<c����5��/��1�7�>�I ~����T�����1@��������$���5������h8/T?Cl����A*'�%II`f��Y���z���o��� ��7�J�����d���w����4h��	��A��~�E�EZ�YtXYWi�1M��R,�.X�\,�G���
HW�
b$����9N�"�&?����G�<b�.�U�7������#��l�MO`�� �.�j�^e���2�S�~e}m�?����>c���1].���~��5 �/��4;Q�
����.[e��\~����4���/�e�~�#��y���vA
j+�.s|���9F��$�����/���)]���6{P������)�������&���f���V���x:��o�bs����O���l�����\����[
���QZJ5�1���|N'C����������2e�d9#�a��/-��d��sU�tN�~�C���O��-yF����3(:]"�����8����8
�0�P�Jm�������T2�����b�]l���Jbe�0�|'3+Cp�Y��.5�?9��@�yg���V3�x���;��!��t'��Q`��v'���b�=cPl���6h�� �36���M��'�"XT�h=w$�w�"���;��aD�N\E��z��1����[�4c��
���;blr�;���}W�)�P�}G4c����"�����]36��a�4c��
��Hw�����n���{�W3c��b����A�D����y�6�Y��`�Hw�$��=������kq�V3��B������U�.��o��j��'�������"����6h�!26o�xW����Ii���~��!�:O{��1%����M�0 hE� �N����
������L{!0�j���h�����TAJ`mS�` �1�E��p,B*�H����6�Ja@���	'Z�6t$�
 �����Qk���q�V7
������D�
�����X��u����9���!]Xu�������|�4}�j�6��v����|^����s�&�nI���<�Al.a0���N��H�i�H�9�4C@j��'	��$���/���#p�v,�p9�'ed�D�����8B�����J�@P���w"cP��k��wA��OA���2X 	�aai�E�gS%�������u���cT���g!�� ��X��p��3�C���6d�2<�}�����^4�.�D���@2X�	)�����O�J`��x���#]t�"�\KRP�t���u �Y�PL-|a}WUu��rZ�b��\U�z��P�? c	@*!�b	�����x-�P@��t-|OH����"z�
�E�P�0�Bg�C�Dt�A�_����O�C�.�7���xM�NSZI<N�G�C��gh@H���p|0DSZ`��}��C�t���BlhwL���!�GPj
�'���!�UsH�<`�?������d�(����'�d��H��w���+����B^���o^��5�`6c���jH:�>�h�@SD�GF|��������^g{�R�~���X5@g|[~wm������l��0s���T<�	�Y8*s8���������X]-���G��=mFI��/����w�������|ZY�
>,���X���vh��~c��_���������6��%����y����HX|+������?�:��0�XY�_�=7aY���Y�6�N�*�l��������4�c7R��������o�vGSC�3��M��1Y3�k>���nl*���{w���,7lM�a�l���*�;�����U�e���i��I.����l�b���oi�%�2��x�����?Y��bD^,�A!-���y�I9y�!���je�z���)�U�&�-��f�6;����Y,D�y<P;�#�qg�a����ehu�v7����6�/��//�*��h��1d38Y�&�&U�������,5+�d�@��4�a��XMR��+f���AyMX�`�FI�k���k(�U�� @D��c�������3���(���UY�� �ah����T��xY�B�Xa�L�9%U�v;�k�`�����
O�rT����,H��&�q��8UL���-��Lx����N�J�o�$u��1V�/W �������?3YO����I���/�������{uEFx��(]��p|GFxtE����o����
c�pU5��X��.��N9lB�&���K�)��r��8���=^�I38�;&��
k�U�.@dq��v{��M��)�7�������?����2g�������yR3gz������WW<?����v�e��0~�-�?e,/��U��R�����OYY�o�r�,��I^%�|����5�Q���?8�/�_��[�����O�e����������d.O�7���'��4�����j�l�������`�]��������}�1�^D����4�:~�so�<~�����}�Nn�����zy�����*�Z��\����w������j�������n�9z��sT�[l���_�����;2��od{`~���: ���Qk�M?d���na�gu��������js������X��M��'?��a�J>��u����B��k��Y����a�7)�}���3rC����f�n���f��Q���v�s@W�fKj�&%��3���������3r���G���F�~dd2F�w����cy8~T�'<<{T�w���2n��fb����=
����gb�S/���y�V�.��qz{����������VI����f/l��������X�Q0Z/��k.�+��
����4l�M*������1+�y���������J�N~nS�?v\@��w-W�������Y[�k���Gx������A�mc�������A��}�w�&9/��g\���BxZ,[��	Q�_C��W�������9
U��+�O_j������Jn�����?�|�������:[���Up��z�H�������P�c�_�Jv����cQ��OD��2�c�-��C��
~ED�����?m�hx�h���v�O�-�,��]=��6)���r2|GA�9��	�N��H����{�/24/���y�n�q�@���2�`��N,�u��[(�0�4�c�p�H3D�p�����������_���V�G�`���;�-�K��Z`�s��]�=_\%'}����|����o~h_=��wb�j��~c�'�������S��mg�9n���E�?�����K�%�\G~{z�lv�����9a�m1���%�L��
�����-�-�f�4U������#��+2��7�_������/�^�(�����\�c��=��{��<Y�/���6a���;v���e]n���-n��\o>�*c�<=~�\���i<�i�e��]>Z�X�����2����e�,Rnsz(0m�j����w�,�r������EW����p��|�X����~�>y
%������H�)�c���}�� ��'����dq���O������W���g���-&V���U��t^�O����m����9G��g3��o_�{/A�L�����E�m�����W �M`����B�:����~����dT�9d�����dl>VD��������1N��L���1�x�/����K8jv���W*����C������K�M%�c�"�rq�1k�rk/�?�r�u�6��m�!�!t{=�uZ����"{d��67�Y{3����>���M��-^����&Do��c?V���.�J�M�}��s��o�w=?*��MU�=����"�@u�D���"C�����-�����c�����;�4{��,w��=�5�|�z���9t�2�L��7�d]7���
�6t���K���&aO�u�9B�kQ,I��EdCbT�|	���l��F�����Lk��@]>3��X��X��;Q�i��
UO�	��
T��:�H�mo�k��! �+{8.������o����������IB�p��^" a@5�3B��Yq;���R�zY$�O�>6����.m)��\KUt�$j����/��:��,3nW�v�]hW��R7�S
���MhK�,R������(�����vs'���F3
>���f�uz�����HF.
��q�K�E�p"[U\����k���v�#�
"\��P��`f���
-#�	��~��n�Q�����"���v��������.!�@���.�W��z�A�^.�C�/����+�/��y���\Gb!,
�"�_XIK>U#���
��eV�K^����K/i��m+��^S�I������M�(�*�cm�"���c��hX�U�E���
�����������n>i��������OB5L��C����'�J?��u�6>�I����������v������Ur�2d
���k����$�� 6C0�[���e{�k7)�]\��������T���-��k|�aa�yR�8qs]t �] E���3#��7���/���q9��*-�9�:��2u���	�{�<z�F�l��-��.��B��L�MQ��!�3�E��hD=bf'FX4��w)\�sf
	�ug@
�mN(�o�b���Qq�X#K��R��������������p]sS\��t�0\���.x#�,�P�[��G�������/�������l�U����oC����8j����PE7F"4	��>%~�o;����T��c|�����4mK_ {�N������mlL�H�����2�{�h����P����}@���Y����9H���)���3��m|�Xc��L�^yJ�2���{4#�B��P]���i���d�U�V��$u�FP�����
��(��N*T�"*q��\CWT\�����
N4�����V
1iB��M�Cy��mzS�Bm������=�d��h3�Z����.|2_fu����@��H,�^�(�
f";�f� ��.��SD�6�#Bd-��
�����
��@��\t�Y9_�(��"�))�n�S�i#:��~p�����u��,j����akxw��8������
�vs��(����6�\��BJ|Ea�o��i��0l^��^@�;A�-���
�NEV��B ��B���h-H1D�����]�ZZ�E������f����&-I���@w,���Fq�P�A#����$�i��%2/���j���!�"?���gL]�`�>pBm|iB�*G�p��$�K�@���p`9<���b,gc��uD-E[���aK��,Q��X����d�X4���H�m�x!4��B��]�C#�p�����3)������Z�8k@A��a����~c������oH�����2��w��x�S\����iJ�|�fBat|;+pi��E�M��i����n���H�?�"
��q%>����$!�@b���y�0���H��>�����H��?Wb:���i�l�%
@�7�Q�!���5�����&�Y����k��tB�
f����'U{cc�{X�w-���W�>����M��~A;�E�������!��)bN���
��!�:����2%�;���{Jh7p��4�;,G�m�%�
Fe6/�M'�^18;���E��|G�\�i���U(����=���yQ�����Gfj^T$�+J��c��4/������CN��h���$�_�C���xoh���sN�y�R��S�d ���1�}�g�������M�j�M����Mt�N�"��o�n���A}�y�������@�������X�7������j*��W���^�'����qn��z/��I� &���j7a�-C���6�~���[�0�+���j7`�8�#r��;0��:�#�������d��-�y2��f��.�����������~��O��X����P����e���Z�k���;<��o2�Z�qP��U�-�
�������3rS6����/[|*����}�������B�'<����#��us�/�s����o���g>�iw���8\}�ea��;��������[�r���K������W���I���Mz����mR�?Z��-�o��e���n���'i��m5�d�����A����T���,��8��������t�>�[���g���y��nxB���-	���59��E�]�/��m0�/O;��!��r�E'�[�Us�L��Qo&Pok�:�[��U�d���Z$��	�S6�)S����>1b,���Hy��FJ�)��X��f$mz�8E����)�zq��-�R�Leu���C���Q]�����.��D�������dm�������?�S2U�����wi�����u�)E��H��$�����o�4���������<m�I��������<����4FNn�,'��<z-��Hy�
@�������}��ZT<h�#:�����%��[����%�/�5��-�0;u�&%��@��,��J�iz]w��S�d�9�=Q���������{��u���,��]��^�s�l��:]M�["
�v�����k�.������vtn������T����J�<��9���Wr(0��S�G�� a'��:�
\��\(�I���l��SOd4)2�yXC��vh>I%��q|�^�l��2mj)E^P\[MY$���(���qLW7�������:K�`���^tH{!��O
��LE�^�E[��McQ%�LA�-5��z����Ws���bHR��%�wB�`�p����p�=��:���	��O���F��`�M$�y�
d�=�[�h������Na|r�J=��s�1
�n���0XO�����������%���$�O+=�	�V� 
��KM�]%�]/����u)��*����<��<�6Uj���(]�� �
�z4H����#�a���'s���<�@#d���)��[M��f�'������HY�a�����6ud����)�!��P��$�������7�wz3��?����-�I7���.��:��=jn��KM!��-��
�����,*�����(YYv���eu�*&y|���uY�9��I%qQ����)jP���<�ybh��S1��������{��P�����+��������#�X���u�������-EK�;@i������{a��H*��{�=eO2��;���J��b���yO����f3'n��'2A�z�c�&��G��i?O=O����JDC=s�>�v-�E�����|��{���z���\������7��tHC��!����p{���}0��B�$�����pS�T�W�b��T"��D�(�?Y��~8
�B;4<[�����&��������,7@��7F$�^�G1�\�Nh�F0-�V�V��2su��Ye5x������MJ?����JC@�`�xw�C�uQe|"���v���Z|��r��+�@!��?>@�6k'�m�G�v
 qG��'n��t�=
fz)���(15g]j���N�<]XW@S���L��R��!i�_s����HS�TF�����a�[��>�����>B�����Sq�%��(��6;����|��%�:�;w09�x��'�r���;$LX8,�?���4����)�U8<2�4|4�O�9:us@�����S��w7�-�4;��&�mHPbbF]bN���"�W�HJ�k�FB��55�(V#z�hN��hr��&�;�����f�iU����E����([n�h�U�p�4��c*m�C�v��	q��]{�T���W�&���l+F����&pTN����b $�f},�fA%o)�S�������D��(��P��th5"�?i�us�
�Nr�L�"��8$���Gfyu~3�v�'4��u[�u&�;���)���5�A�I��P��J��G�3��o�JD��y����Z��C;��v����'��i~����f���������e�_��:4TOcx����Ha�|��(t��*IeB�0���_�b��E�.,~Q�3�i����4oO�_������s8��K=������s�i��[�@��4!	�V-��.V�d���a���@�����d����wJ�8|4�l���:u�YU'9#�UZLS��������=���qrvKW'���=��6Z;��`f!�t�Gm��	������ �'V�� ��^c�u�L������.p���;_����6)��0p��	eJR���>��%�.PC���tG��-�$�
	<0����W�����������F���j7��U�U��8�Mx�.pO�S�j0��v=sW<��P����F5�P�yqo��:!��u��*�0�t�e�|-RM�X�pl�q�5������+-ZM}��U�{'��d��9���8��{1 ����pf�5�t* ���(�w��i<`��ox�T�I��&����w@���r.�bo�7v��!p��pI\��������zl	d|�O�L`y������@����,��Uo�=�S�{t���.��k$z��VjIc�������Z��C#P�s)���s_h���>�KBi>�$������*���A�Q���/<=��q����;N�NH�i��`�S�����s5������I��x"�p�IZi|�4��VnZ��p�V���?���g���Z5���L��dO'�T�BZ�c����T	��G�o��<�C(w���2��O��J�R�T)�e��[eA5�C�S���\�e2����N�����*�4��7j�*�4���t�M�X:V:���y�=��J��2��>�J�k*<���T�����������%�+������UjX�'�X�MB �v9nKB��A(ie�H�Z��@� �&�4$,R����M��@� �&��%�����67m�����0*]%&�Gm�����n{��te�p���E���3s(~�n��d����O�j7m�ga���%��Q���n�4ZR��o��!�Q��%o�ZT����%(�Q��K��.]#���6�����G��4������n���e��zt&Ml�S$��!�OhWuJ�����S�!YO�\'H4��;M��
�)8�j��	��%a*�����|W��j�z<:
n��?�i~Md�b:B�3�?��~��xl��?���i���{i8�;NF�nv����G� �i s2�WN��M�X*�l��G���i��-%�}g���xLF�G�q&a����r����Q8�y�����G�:��MF�n���=5:�6,0�(�,:������T�g&�D!�*�K.��}|q��^��O�$Cy0��I�:���%�8+�V����H�:QO�Xb��0XI,�[���M�SR�z����Z:*�Z�$������������sZ�s���N��������,�qr�s�srU�
�����i�&�4�du�M���rQF2@����I
�?����G2�_���;�3OL�K.����yr�_W&���,���O����	9MK�w�d�}���U����L>'F�E��R=_��y���R���k~�N.���*�:)�U`�!�!�m"T�<Z��]��/\�|a���y�H�������X5T+ht�?K������S�J��z>ws��N������vA��n!�-���3��>:K�xb[�����3��mIao"}�z����n�6#]�g���o����(&AB�II��v���no�&s�s{�=aN�����OC���*�Q��{�����'d�Lw����wq��������H�!��Eil��i�����X�	}��iiHh�:�&h�4	*�q}�j	Jh�|Y����&]?���Jg�������$M�����=�,�A�VYO3���$������:��������?�X �N�-�R��v���W�#J?6�S�o�Np�)5�iR�{i9�r�����P����JCZ����"�y����n��d)H+����V���'����;%�,$�(�H�P����{1�ww���\�A��@G�1���q�Av��Dr�$'�n7�hIH�r�\�;���6=�L���;Zzf:w�N7��MV �#\��eS���}�uW��@�V�~��t���M���HN�%�#��-=�������&�	�SJ
^1G����p�	' �)�$v}r�S���x�A5$�S�����&-wS�������w����	��*�1y�0��*e��g.[\V�WW��y�����o^�����W?���W�|������z~�VV��l��[��5������5O���J�*��@O��eCf�
A�1D����|�
�'!0�>�d���q�,
Fg�44���?�k���I.8����������W�������5��t�<�e�X��!d$��=��D��S�^"h�������F��._�qN�s�����`�B����!y���B��3NdK��������\���p���P�&�B���xzq�I�PX�"���.n�-�S���h	�r����g$���6=���p_DCU���l.�D����c�Ca�9�8���S�B;9��IS��N�{���PN��V��@Q���!&�������$+P��6i�J����A�V'���@I`:w(L�o�vRtf�O.`�� `����-���v��i�������Y����L������&3�I�	�-�	m}g�tm�6YM�M1��������{mz�|v[��?�W��������I�~g���� CvG�����3�c:c�\�Nb���ru������v��Nlb��P\�1,,�!���+M�:?�������0��6��l�=V��X�&���[��l5;I���p��3{t��<�p��1�6��������i
;�F����XKcd�6:!�%������x�T�����2:5��C._�:^��G����K.��=H<%�5 ki�Y�s��, ���*,A��UWZ�s������CW]i���SSZz����\
�����"c-
?+v'�g	YT�v����j�Y�;m?K�\���������x8��KGeM��������3 z�35j�]`?���O�����[d��Y-�tm�����% �6b@��2��N���E���.�Y�PpvO(�BL���Y���F���9���p�k^4�� 0�X��b�Y���4��1p��h~����NIc���2�����/,-X�	��eRgE��,���� �o��[�u]��MZ�����V�y�V����-VIe��v���O��3��k��/w@�?M$ZAn���~�����.5�����0��,(2���������Q@���b����y=mY��(�>;�j��F�u�A����>C��F�&�NC����#�B��v�jW�p��T�p�������N����xN�Z��.��w2E|�/��#�A����E���qoJ�l�^�6I�8�!���Zt����!AQq$32(��u���N����N'�s>�	0A#��v�Z�;5&Yem,]XW@���fM����v�c������_��CB��B�������Ha ���|"��`H�Q���=e�1,
�'�N�s��s�`�Qg�f�H���c��I����zB����{r����N��k.B9���2�RK�Vo2��Ksf���f������Pygg{�F�{}����/���F3�)��9�����-����}����@j�
�#k�&��D�������#�2�zE�s�����j�%�������fu�V^\o��"����m��n�[��V�J�������R�?�����n�
I�f��4�v�Vc?hU��*�kk��7�-�h_L�-$���b�XU2��i0�����Cj}�,��Gf?���6�o�t���s^D�E��"o�j�.z|��ji���}"��b����*et��������I���bI�e�+Z�g��J��G�}�N�1y,M: y���d��n��������!�iko��fP�aI��F�#��Q�	��d����b
@I���EI��kl�����.gI9R�pHRj���6<�����e�@1����D�i�z���!��#U
�$��a�N��mQf������b��n�2�S�$�������4�W��i���}����o�����C�g�����wzp��sD�8�K�F�zk��S����!Z�83�z2Je������;kQ��	+�tPe�L�"�ME�"^�R�ne�L�Z�MR�Z;���I�f&��}�$hSV�$�`V����s�����{V��p e��ygbg����A���_�S�?_��3�MO����;=�[�P{�Db]���e��H=���5�Ij����%jN���8��Y��0)G`6�l]�7�En��]��73'|��(L�	�%����zJ@S|��L��� p?���
�9��N�`���.9��pfw]���t���S<����KU����]��eR2�{f������������Jvq��S\��($�g����Q}�����M�r�K1���>jf�'���_CQ	0�C�0 �����t�N�M9�CPM-�S�������
��%P�-�|Ie�l|��&<L_�l
��C�Y��rx
�;&���G��YM9�2��M&�i��q��&=J"��"N�q��N�	OT�$��i�l���W�g5�o(&CO��l��G������	�m�6�Zs3]�	�W8~C ����l���q�H��&���b:�!���]�d��&hz:�����E��u��}���x@���A�����,���R{�Y/8����heu��H���=�=�=3�_��.�/y���wL�S�P�+~�IN�Q�mC��]�:�N���&U���||����ZE�u.�s:B���#��Ql\)
�()�zvg:�a�aN�����3U%��DVq
0�T{�FEc�c3��]�:����f��Ge��3�4i��;��-zZCF�h)�S�����"��#*E_8�~�L���:�{uHw���&��^<�aS+�����U�l��}����?����\����W����/��|B�UR�o��*���2)-�t3*�i�Y��O/�4��j?��������F�Q��o�n#E�I���SqS�H��[(G�`������k���=��}FG����O%��e�[I�p���f�'u���i��SGjpt!����-���Eg0E'��eB[�E�@�.m���� &�ch"�b�a�M"Q�
��yOz�L�+6@h�����o������+�#_[��^���8��=�>������<������"
gw����@�] A�0(���$^�6������U���O�|"�����BV�}��%��.H�,�V���P,�4��o������gG��v����N���$s�D�u]�3Y��X�C!k<��q)c�a�6q���:����>"�9������"c�����4�&8�Q��uG�Ts>��J�}m����:���������E��z~�.��Q�
6�T3��7}9����:����N��;�IQ����p�X��b�WHG:O��~-v��x���xZ�kJ.+�����'(�,.��R�^_�U�}M�c��"d��S���am*�M�'�##*\�K�BFL�T��M�A�#-�Y��;�����V9��C�GS��\�5�����VS����G]3��$��.��O1�^}����y}���C��1r���r����m5w�rY���"�sk��R�5b-%��<�6-�-1��N�/g�Uw��=��wM�.}rG;NK�!��"�9r�VU��C�8�$��w�8�!.�������3%��w�Xx;@��-�C�h'ti:��5������!w��������rG�5ub�����&��T���&w63$>];#qyW�����"q�S����\��T���:�v�S�e��	6�FJd%$�0�6������M�����xN�TKa���P�YK�U���������8�G�
}��M���p��t�OP��6�o��~��@%�����`�w���v9�TI�%����uF~h�:����.�����\v���������]����\7z����5�j}c�.�EMw�����^���K{I�]F(����JF���K��tgM�(���c*M1o��d�v�X":���9��'voh1�]] �QZ>\���?��2.��PI�E�ju��_�']�2.��L7�Zz����R�%��X�NK��R����r)#8����(/eZifN.������?�����/e��-e���/e<�K��2BK\�����wK���BK\�����w;K���BK\�\�2�M-e��-e<p)#�EX�|����Z����Lv���0��?������7P���/��v)?���S1���P�i��B��VX�5��}l���F^2y��xW����8]��n]Y�X����6������������}�@E�+��
~�q��2loh4e��o�,�e^_c1�D���kd�VE�p�vokLu��sU���9)��kU]B���W�+�OP�Z4�'����eml��%P�6������R����Ow|������m�Q���n]}�|iM}#Vr���~sMJ��79:���@��]h���X��GO}�|�I}�G��5�L���@����d9���hQ�[~@0��.�Cr8����v�xz�#���8����t�L��v�<#��&O�#<�l�>b�D���V��N�G<����@x�3���j"ny�����0���Ip��x{��	GpK������g$���E���n)����n�g��)"�U����>���E����D���NO�����v���.b�p��<j�>���a��8��]��;��Jw%~��?�E��O8�&�a
c	i��<��6��|��`}���|#��d�x6X)!����t��r�;�9�F<�$/�w���w�YW��7����b�����Ga��7r�N
��S4V��������0��W]����o��G=�����Uw�R�g�<����tW��v��*�u![%�S��e�@�vQ�3ON�}*8��p�ZfF�q��Q�e������u!�E� �f�������k�%���Q!������hH�=P�BE)z�>M���|@�l��v���^qQg��j�%��K�l�Z!����]��|!��u$;�d8J�g[�>����Q�!L���[�1,e�~}�
2k1���|����mK�~7���bw������&��C��j���%�<���K�����9
uV;���m�'.�Q�J���8��_��#����&���
8���i7����y[rBe�l=�W�i������j��g�7jzc�B�#m=�Wij��hz���Zo��B�Nm=�w�U��H�"�w��S*�k������UWQf�9L��%���c�iB����@M1�4��������L�zN�_�Ji�����?'oy���4�]�o����������U��,�v�U�J�<��p-�-���[����4�hZ�n[�V^7u�W�55b���3`�K�V�\#&����*�����-G
hx����cM�+W�Z����LB��-
/�����`���w�u�0��]�����9�Tw�6�Lu9��M�����5�Y�m95A��4�<��kJ�v=���r��E-����-���n���j�*��M�o7�������-�������i{f�(��X�r��J�}Cy�5k�N�#��*�7=|�!�����y�v��r�����X��3�<�q}��]�y^��;�Z:�6<=�������dy����Z������Z@�����+�[^��|v
�A�/���Ht��|����'^�g�Z!X!�F@���nc��|�[xy9<�m��&U�Y,�ol�?M��m�>s�����o�:y�ZtA&e!����~�N�g���;k�Nd
��e�d���v�W?�����`�	�C*����Df�kw�L����j����x�wa��V���������R?q��S�
�I�$w �h��i��e+WHV����S��8�@���FP���^+�v,�����|B�G�����p}3I�w��F�;V����(����\�a���K<P;�w.���R��2�����'�
w���+�H� .Y��CW���&�,
�%,�&�����[P�$�r�k:���\"0H���H�:�'�E�3
=���d]&���H����Z'�6U��&�����-O�/%x������V���a4y��L���u�����`����W�|��+��9��JS�����Y�.3���,a�����V�������l���+8�-!��M��d~[vD�W0|�^C_��%���3�C�5���7O+����Q����d�z|�-�5�/����u�B�S_k�A)�;u-�R��M�5��Bw���v����h�i?C
��/���s�R�a��#��
��43�����0�6�y|�������M���T��������%��/�D����L� 244*^��pa7k���q
1tW����&�j�.m��y>g�
�uS�����(\)�!�z�Kl�r����������.H�a�,��v��^Zg�.���u�B�i�~�f�u�������K�L;�{Yh(�q�d=��f�y^�Yhx�u�B�igvIe�u~>[$NI�z������)r)h��4S��;l;��?]����/���W_}k���Pk�k�d�V:�k��>]:���t����`��i_,]��2����t�f�{Gi\��2����s�6�;��7�"���@�k4�<j��>������@�R�h�y�w�{Km1���u���Gy�x���y��,�=��*[$�vH����~�q�J�?��hI�����3JY��,������u[��%@Pb�����%-����t���=o��F�����8�~��l�{RU��
tt!��n��wq!��w���NN��:����g7�'��w��c���6�QH<G]�2�%%��w�m��E��=��AO�������	T�U�~�q���k./O��b����:	�����kW;O~'g���N'g�%�}����{s�����]���������n}�?���M�X�~�K��������������M��rkd�gj�Ck�D���g��h�&�udr��!q�H�z���L����2B18�M�A���w�!TL����# �u���#f��b&*>}wm�^��v�1�~�����Pt�hv3�n7���y����6���aGy{:�'y^a���2{��%����w_-����_�|�gE�(����"TZ_u�|�]N�:�-n����W���x�Qm���o��Q�s������|$�����u��;���A�wa
�>Nk���_N�=)�'+v�{r^��K��Y��2��#�V{,������y�?�~�����Vq�*f���|F�]O��� J���s��Q�A���:�77�4=^���a�w�	���btBf-9��Y�h��ljF&Z6�dme�b���~E�T�4�sJ�;2fAb]_z��h�b���W��_+�w�eTx�W+����5w��X��q��p�z�&��i�vJI�N�vr�P�*��7���eS������?�����zD�LG5}�o������?�?�]�m��������N|�,J���A����T�0I�^t	����k�a�}D�M��v)/��`y����V�~���A�y����%7����1�y�$z|^�9�|����5�Q����~*>?����J<����Rr��`?������o_�c���W��Y�n�zR�G��_���(�)�Y���� =�o��Oo�}��2O��%��_f�3��7�|��?�O��t���vE�B6�L������^|�h��o�x}U���njxM����ts ~(.�t�v=�H�&�E�GH`;���!d�<���vrx%�l��Tw%J"f������G]�b�QrS]�\�r��$}d�J� Y�I����#0�_vT�-�DB5B�^M�]�����T�����(q��{�f�M�f���X��^���K��p�|�W��T��%�k]�VQM]�l��~�
�?�V6q�W�fk����]�q�L����}��������;u)�e�f/�z
6{���Q�]<q���S��J���0���L�N���x@eyqQ�����oB+�N/�CC�M�u7Yh�?��L'��!"�F6*S1�~�:������PL��S-�\_,�N&��CX���(Y-QE���+�N.��C[�����,�E�6h%������x�$��r����y���]P82y��t���-n��dQ��([�q%V�2p�r���|8J���N
�\|K�./c�y}�����#�����rb���v�����v�V��/,�+�#^/ au�Wk�u
L��)�!�i� D1�Oj������m'�"�o�1jB;"������l�7�b���dy��
���g��J$��E��w��B�2���x.U��C��K��3m���9�'���I�G���
�#O�w5{�����-�	}��Cu|���S�����6��kg���oT)e�z�m����:�W��C������r\������W��������r�	�v��)��������N���@�7��U�"V��$�M��r�q?���/{K�V�����S_�p�C�����Mg�Fu����u��WP�� d)������=$���;J8j~�F��BBL�hF�
`W=Mk(�V�]
=1��Y��N�/�*+p�7����"�D�T)����q-���^��
i5�IM�����BJ�-�S+R������UW����QA�1������'t�h:�	���P�hx���9���]�zG=�h��1}sB�7t��7�w����Q
S�	}�5bJoB��,��Kr,��>��V����)�����~_����n�3���I1�*�9	A�u����p�
�����]��.���X��o��h�Z��.Ye���D/�`���v.{��0�;9L&T��=����6��y����$36
�V�M:��>��Ng�(���v)Y������)�����%��4��p�;�y��d��N��/
��]Xk'\�y�?��NkR�n�(�R 4��O���K$W�uQ5��<
/���%kW���T/(���kS)?�����2��<zY�VF��4�.���y���I�N�h�X�����u�G�:��� }�v`E�~�k��Q���e��������uR��5����Nj-nL-��Q��F��$���k��b��8��~�:�/��1���y�w�n����{��@��A��jW��V��R��37�4u���P���Q���g��B+�K.�������(�[(�;�i�������UB �{1��BB�$���fNu�(�z�Z�/)g1m>xD$w�+�@��bj�(�z"��-�������*��Y�Ke��\��*@s������+:A}�n�0��PT�D��9��������^?�--�^A]~z��kx%>^��(V�i�������pE��O,yz1���v�][���~��2��5#Y��N�L��=����O���=�R�)'})�.��7��SY��������IK�����U�������?����(����(�!���T��:�~�[Y���<Jv�����F
\Q*��	��:��VU�r����=
�	�Tw�Za��P:�E��Y��]�����}�	wuQ�O,�8U(�o�������t=W�fS4a�q����]�F��rXX��x��PvM������.!�����b���Y����V��]�ybLW�s�o��������$�To����KK�����-�g�sg��1���iA����_{S�����
��txUm���
G��PS���s�z@h�k�>��uv	Z�2����I�F�m���:�X6����\�pUiLK�5o����}�5�N�7���;M�L����,��k^������]�<������I��G%�i����*l�'������TL��Q"<s>��Jb}D���>g�"��D�b�'��I��wY���7���B���FY��**��[	g����f������f�	�$���r�%4��du�������gm!c����q3��v=5M��H;	~I�#y�gl�NB����������Nfh%bl!nB��]B�$��B&���4C�+]-��]�v�BK#��p���,h)'7�,��Z=Y�����ow�z=�>�B�6#?�pu;8Z
Sr�}z���@#��*L�Z���O,w�f������g���3"wq�������B^�\_��sO!Y�t�Z��]��B��Q���$��l'GaN�Du!G�(]��;�n7A��J�M���!��j��A��vp��9<#9	~WI������4�	�M�����M�.3k��\������V����]X�$����.,���wJ��U��.p����Ew�kR�F�����������]��7��c��I�q!���0�Iv8�8(F�����h���-B<�	@�z���P{S�v���Z�O�Foc����G����.�2O�F�s7�|`n���.1�.���x�-���!�|tp�K�� �0���C��.1*�",1��F�Sv'��U��q6S��4����~�di�n����5�?�sM���r���NtW�O�$?-���GY>07�Nt�2�}{Yc��S��qw�������5�2��*��1��Dw��p�q9����\��`��<��FY�����������+#M���H�(������q,���u�+4�5����c���{K����u��O�%�V
���I�G��x�-���0�q�@��K�AO~�&7��s|���N����S�
�=�`�w�x�������C�^g��,�,�����YGi�*jp�y�I�>�F�(�f��{�Yw�&��E����64?]��*�q�8���nU�y�dQ��`L��W�'-2yS���r�Y�_�B]��ck���6������M\��v��Ug�3z���gP=����ZR���
�t����d��nPUG��AR�!,�����,���b�u���IRPd1�<�f`~�2VkQt��G�U��6��@k�H������UY���$������X�i<���y��m6K���o��������������/��{��/���\wnT��];��I���T�V���/I����R�C0/�������7�����t�������i��C�������-#�����W���:����g������f���!�;V_�+���.��rw�D�K�	��P����kOL���S$LWro���������/:_��	�@m�����S�7jQXWH����d�e�m���D:W��z��dR����$wY�	���������	���J���>��1����m�����jH�C���a������Y���0�������������p���
lh�Yz_+)�k���6k;J�����\*U�"(�����z�F/���q=Lh�[�����}����Nn����Oq�fU���ma�]]3}�����n�����3�J/wwW;�����6�kq��������� ���VErO�I���v/g�H��rw����-^�m\�y�4?MDK��^/���*� �����M3���������e�-��n*���e���;z~�D�N�7jG'P���o����+�[�s�bl#����n���B��� ��o-����R��~�`�e]�������r&�����_���N�3�����j��Ex&���)�s0�9����&���v�v������,�zlR������L�TW�j�b`�b���m��v"����!��\/0S���	mA��eM�3��k�)b���6��=T�GZ�P��(\��Wp1��2}��/���%�=�������d���u�=��;��/gH\��,quW����>��������%<������O��:�u�'�v�i:���TB�����]�>��.������xN@5�-8}�5����hn@5���}�5����hUk����6��@~��r��+N��Rn#M�3a�0�o<��C����9M��q��*�@���'*�K_���T�~S�9u���P���4uh��#����M]�lS!#��TK�g����/#4�me�)��T�pSwid�O�^|���_*�������Y!l" ���u����>��TrVwf��];#���'3�(��=�+�aZ���0���=���Qs@^<K1s���R������0��ScA{���'Sv[{�	�������]��Y�������53�G]��a�����Xf�t��gg��'x������W��=hZ��������=)�;W�6�W�@�(�P
*�rkz9�>����.��I)��L2�������������R�Ga|�������K��9v[�\��K��IJ������x�U��m��C�������g�U��V�v�Qra����Rq�:�����'��232z�]���o��Z���+!�/Y��m�(.Y;�
$���$����+�9����+3#��(+��U�|��7_�9�h��]kiO�Y����^�����W}�����o�5���%i;�>�~����q���n�cT}��1
��s�n�[���,�e�<��M��c����]����������WEe��P���5�m�+�r������ZB��j������6U����%���h��!6��;�^��$U������\�E(��6J���K5"�*�}$�\a�.i�ZE�\�^F6,T������\��h�������FM}]�RM�<��������$]�G|��(K����A�El�}����~�|�/z�ZJa��,�O�����V�_���>��ov�GG�;�Q\]��'Y���0�_��J-�C���m .���*�1O�.�����4'R���i��E=����$���1&��#.t��@�4�YXm=A:��G_�J�B�7�"�u�=���$��8��\|RY�:Z�+��+Kh�Y�P�>�dI�G���:�>������m9���?����pD��!��9�n�9Eo��8��J��{�����p��3g|���-'C��@�49�������m����5XoB\l�&Jqw)�>����SqbU�������Pw��c���ZU���B��8�5�X�f��kh@��>�����B-xt�vFv�d�}�<Ku�����X��0�o�B����_�#7D}��7|����wFg.jQ�>R)$�����R�Dq�z7����/�������[f���l�����:����y������o�������@z9��w�~*�`��\y�whN��~�K��^��������~�j��}h?����4��#������{n�{ �l�|qN�c��_���V�����_.q���
V�p��pn��n����e�oP���k���c����D/P���G���:��YH�k-�����?ECX�����<������0~����?��J�}q��= ����Z�������Iz��F����o���� ����d���Y���f�����������n�^~2p�������-�������hX��]��9�~��g���L\�S��P������/B�"�(�����a�aj.z�LMu�����c�u7�����(�"-��bM������5/'�����:���0^�%hiJ��Q���^������X��YXj��nL��&��x�����2����K�
|��y�}n�s����q��
P���uU�/�;^Vw|���e� �d�:�'aA����z.���Z�	,j����%��TF�N ,�������[�Z�i%o�OS��|*�vtf��l��u��/S(�!�-����2������m9�����]�@i���pm)1i�;2\�����:���#�x��j��No�N��~N�Do�jI�����w~���N�MG�����C����MO<mg���]1Ep\�\hs�a������%p�����-��u��2�W0Q�+��dM�j��5��i��DO�D��$[~,�$��2GA��j2�oO7i8�@&���P����V����n�|�LR_wQ�&�=���9����'�����B�'�!�
X��t��v�����5V���*t[�MT��^�]gE�m]&�2J�D�����(�����&J����Y�ko��� ~��J9N����|?5���U����F*������X�B�n6����$����'��%���P2��U?�b����v��t�������7��B$���H�|���m���t&@92�z��y������Rp��xH�y�]���te|��W��9,\��Q������Lf�Yo�<D�|���/�x����/��6����e�������� �����gq�A<������(nt6��LH~��������7|����7o�/����~����~���c��w��s���������~'+�o�����ybe";��H�o��1�.W��1	��<������+/�:/�&������I����b�x�a���'����E9�h��������������|���{����FI���J@���������N_j�zR������C������~�I��<0����xHx
�Ek�I���0�1go������ss��-�o����[��x&���������.ON����o���F��N��{�v��|��U���(�������v�4d��C�`Q�7k9m )K����)@����
^t�hc����`��8��|�����&��p�>��
5�&��BZ����?��d���Y|��/�x~���oea9�!
C��7dS��?���"]��Z>��/�����|�uM��~�U������r���#����������2=�;��������?�����yF�a�����v�����s[Y�Fl�fC�����(�/������cP�Fa%�����������b����Q�#P�������UX�{�Em�8D������X�?}��?�W���J�7j��B
��s���9��$����i��	�7"
�vkk�D���O�
��mgM\;����[&�k���(r��u����|:��&��-���(���K>��j'[���*j�����������CA�2oQ\wujp6T���eTe�G1��YK��3��N[����r�!81b����m���r}�{;#�k�X!�7k�<��ag�����A|6��s���	�F����7���,�-����E��u���l���
��������ne"�8������}�^"M�b��c���@���|��?�����+j���1����XT�$l9��
����
�}���u�����������7�u\���(�k14��C���``��!E���q�@5���T�|L�{���E\q��l��F��[��
�/9�!���uX83���C�-��8(���d}�!��i:��
��m;�� �v�g��D�����.�LdQ��7�v��������P�,�9n[�y�I#��q���7����V���#��`�"���P���UUh�G
Nt�����w��J>b���1�X��������x}�@���m�p������9�}���ya8]-����F��s���9�]�t��v�n�{�~�G���<�gyX
�W��w���0�\}��������*�l�����X��2�����O��h-�+o=^������ }.��s�_�Q��z���,���S�����+>���V_�;�%��N���
��;��������ni���q�I��vH�w�$���[�l����V��o���n�Y����-�r���������-��x�{���8w���u��{w��y����7�]s��U7�����~E��.x�;Z��������|�������3wk~������M���`�O�&�s�����G��+��W����1x
�����w�����U��0>�~\����?��>.:�es+�����Ba*���f��9�u�2�T���/Q�#�����BKB"�������<[����V�S��������O��[��^|tuV�_=��>|����Y�c?/�${L������^�(�(����p�����E�Z@�l����r�>��;����`�)����L)
��H���������O"��}��$������s����U?�>���1���.�<� �������I�*���
�����[�u��]�����_�>?�S�u=���3�!��/_?F�;�?��%>I����!-�f�b1�E��pxK�!�-�k�����},+O��"<[AVx���ox��Hx��Qj�B�]N�>���9^q�>���&�!�e�g�'����t%�,,L��Y�a��{�a� �oY~�7E)�7U�������a(�]�FYM��|8�]��������t-`)Hy��++K�glS��\=m��w�%��@!Q�������r�7�b�n99z-Z���+6aj��D�_�����4/��Z����^�@��UR�Aq���&�������hU�V2�����(��q�).���Q�]���x�W6a�������fy���#*�X�ga^����\��"�T^��4N���J��=��5P�U!*�:+�����Z�>������f��rt��?��	�B�kA/(���Z����������aS�x`��sL���q���Pq@k���;�I�#
�$NZ�(�(�$k�7c�4���9-9d�8�I��q�8����wd�8�I�o�$�a���-|D90�q�OC|{����?�k
�b
�0�Q�bN��`k8�5\��pk�_�0�s����:�b
�0�Q�hG![�Q���NZ�[C��d#���T���xK6QE��q���l���.a$��-v����������}��[��D90��ql�G��a�xb>��g����a�8������b��b56���al0��0���0�g�����71����5���m&=�����|��p�O�s�Vo`\��6�l�
��^�p
N���{���}�hA����v��9��&�,�[lb�������L�w�<[la�q��c
��{�a@�p�b�#[��!��L��X�i�-��l	������?b	[lR��
��dy����m���%����^
b	[lP;��=E��{h��c�M���lG��GN	9�����J6���|X�����es��E�\��9��c��4�a7�a��;�N�;�������o������g�F�na=X�����c�^;����`��nc�+Y�ne����>{��n�<���;|k���@l���Av@�N&�����E4����`S7u�E3�
:��a�b���[4�Y��+���@����+�����c����T/q���Q���yw�d�P��e�V
x��+b{��4�al���8���[4�al���c���S�d���dq!���1^!������D���h�
�B)��P�Qac�P�x�0��j�<9��JK �'�����W�>��=��k���iC�h1��2�} 8B���Vp$�ff���q<����
FAu��	����R��D�x��8Y�D���c�����c	���d-������|���������E�~}����&i���|m=�i%�%�����z����.�*�o������=d?n�
���E	���r��,W�v��%�����4�l��z�(��}.t5N�+z�;�����E�|�K�����|y���;@�H��j>�0^3�C�LC����=�O������rl�zc9����:�Z�<
���X)��P��)��-��Z��Yi(~�pm%�0
�$�L���_2����&������4��;�����}Q�/�i�m���o�3�L0�y>�^k�a�-��U d��A�`R]�C�7��hht �=i�w��������n��a����I�>���sF��S\��dC���E�����c���+=��� c��8����r�"�(�4S���p�1)W�x�n���H��}�U�u^=6���{��-��E��g������-�(��]vUZ��aro��!G1��9c�����;��b�9��bA '.��4��sF3�5 �� N���jpNU%U�D)9�s��vC��P�6��`���i��A���g�9A;@W����2�K��%��x��3��f6�U�I�!��\����S�*�T�Z�6g��Z)�c����3xr��ZQy@��mN�c�Ze����Qj0�Ti��d���
#l$h��C�Y�,��s�< ��\fq��l����S���"�nK�*�d	�#Wx@d����\��Q�(�-)�:
���q�&q$�H3�8�El�eI��t��>o�`(l�cy��������s�yy<�2yu���]����w���:y4�|��^e�k&�3y����n ��<&�N�������t�7���<~�E7K�"�@g�r�Mx�s/#� xb�@���4zxdA��
�����Yf�\�P 2�y��q��T���x�nG/ww��8��[�p@�����\Fo��e^�D �����
�<L��?�D���@ ��i*O&H��4�����?���g���r
.Df������D=abTg��/�a����F&D��M���l�L��m���k��Up@$B������/���������G1�������s)r��r�#��4W��#w�I� �(-+s������; �(	�����#k���'@j�$��c{�2h��n
$V���c���#x.s������; �Z�����#��6Y��O�j9�:zb��<D��,�<�-�9yC���k!n��c�g��H�o1a����3 �����9������Z.���u�k������I��#�Z���H^������D&���p�#o�^��WY��:ytm~A�YC�����[�8 ������Ql��6?7j�`L8�m^��
@������yu��U��;>x�6�n� �������S����5���$x�y�����=Ne��2q@$�i��c��2q�#o����)�c���5z�$��v1��������!�k����d�{u�7@^��i'��c�W�{C�������)�
��5D��;N�_4 r��c���[�8 ���c���[�8���7�����>�N"wMu��;���k��1x���L�k��1y���L�r���|�q�|�����qW��: Y����L�J��:`�Bv���y����fz${O�D ��\���8��dW0�64�������#����;r��)L�@&P%P�����q/�C�P���"��.��d5�������!We��D��������@�)�x��'�*��������/��l�����e�����6���\�b���sz�pA,���J2�=��!��AX'�D,Q4�\ �9���4\��:���M�^^C�t�W���1�}�s~����Eo��������\���X�b�z�n�x_ �~�����A���q	D��Ty@�����e��Q�9�e�"�@���K}&�M��j����k��r0������]pm _����2�GB]H���-�Ta������k��X�-���+a��p@DH�.�
�2f��3y@�O�a��7
�<���?��$����J��	�e�Z��6��v]Uy��4]�����gA����I���Q�#@�X�����l+�Dh�.F�UU�@�Hs�&	�w�l�C�����i����������(B�"A�b7�e��f��^q�$��{����������0R�=���HcS������#�)W-����4E�}�{`u�{p��%�`����i���=8@����r������y����dFX	�E?�eJ��8���[A< �'����s�����������0�5 �J�b��2��������FY�
D;����d��u��?�$����`�d��uQ���u\�t�&��0��AWK30klFB�D3	�����@z��A"��>�.�<3��H���N�$���I�}������ 
9���PuN��[Qij0 �G�PL���U�L�`Y���d,5���������~����`�M8Wa���f���D2��wg2����d8�S;�����F8�7I��!F�@�"��j8��!��� ���#�(y<��i*��M�c�Gg:�L@��c�:���.����.���#���<q����V�q��a�G�������g��='DD0' ���A��?n �k�D�, "�����E���;1e�PSR����'�q�y��;��.s�X���|�F04��G�rrY��j�.S�2�/]/��,�'��N��L����F�M���A�
l�8\��,��z�8��������3r���%���,��!�������N����a��h$X
���������
:�<��yL�
[���`�e��Q�F�5�lG�����D ���P\lo���(��E��@ ���#q�=FOA���D��g�\fw�O�������	�#I��@���D�g8�gH����"�@n��0"#8d��Y�$MB
D����q��_�*:c(�;��A�%��EDM$����/�}��qn����@���Z�VN 1W^�9q��)���Th�C�
��d*�_!w�-��d7aH ���T������_����N�>��`����f����A_IO�]�j����S�{���j9���/���?��(W{���c�4���P�����w�<�����;)�`��e�4�X��U��x���i���gv#��e�4����3`��;����f������q���c�4�����q�����kd�|.��d.�"��i�j��k���~��}A���!���d���'t����p�0���X�s
!.IvF�#rx�I�H��Q��=����f!�V�%�9d�$B$��������>��L"d�g�9�����$2��M�'�K9-����|�.B8~S�C��W�e���1�FDCn=��6 �����>��F��J��x%���4���<J�>�����gF���S����P���*, ���m���HR[&��#P�$+��LhV�����dYg������|�q��_�l�d�w�D��dcm����O6 �W�@�~@l����o�l���}j��}�C�g} (^���8��<B�� 
�F���L�N ~�l�,.��f�Y����((�DN��@�"�|O�������@F�@p?8KP��~ �8�$8X\�@}��U������S,c���t���_����r,>�������Y�wC��
����Ne�����>�>t��h���QL�J���E��Da�4��\4���w���o>��w�����^�O���h���U/���7���q��W�L�F��k���y�����
��m���y���i�
��m>������.D�`�{��O�������������B������r����D_{v�i^3�+b�n>�Kb�O���5��LxQ�������=�i7d��b�����5��U�Xa��>~�g7��/���7���qO����?������"��������]�S��?�?�������s24�g��n�\y��z�w���7���;�����]����b���}�y�!Z���c���ClMz�7,�z�|�}�`�k�����p\�cYB�B�jS�i�1Oa�[e���00lx�A+�7��"��}�`W��
:���d6����A��A2���yr�N����+��	PY^e&c��]zDFn�Dt&'MLN*&����*39��N���&�I���Y&��$�Y���_�,y�3�u*������W;�XKh�C�Z��v��r�����$B������x~���*�2k����z��&L3�[O���i
V��D�.?��_��
�=��[�!F�����(�c�=^�����a��j �������:\�_0��k
W	D\=
��ZZc��aU`��bU��g�������q���������.�����`Z���x�.����?XY.F6IZ�*��8�`����%v�C���.��v+`�)\��/���>���7�]{J��3| ��X��`�U�S�����([.��m3h Ol-�Y�����V56�o��L���s��n 3��S7q����AZ�
��$�V� �p�=��������3r��8 R:����<�H��4�Ypg"�{X���� [>�����!�~-��|4�a������/�;.���@��a����k���~���|���e�e�4����z�@��]�y^f��1�/}X{fO��=���^hlb7�'>.��dW
T R�L.����|���#xB�?��_1X��� 3�1�b��!P:�8`=<2��b�D��*��L!S�S8�@����B��\����'@A����C�PwT R������}���@��;5�='����H����d����g�O�i��&�G0wP���M�eo���i���eY�i���{������E���fuF5�8K��������&.�{�oa>���pn&��0x�N���������V��X�Y���:������lEa@����D=7����lE���6�3*�VT��[XQ��([Q�!}Q��[;+Z�c;:�-;�R����T��/�����5ek����T�>r�=e�t{����m@�iO��c��){�lO!�������S��lL�X��,���U0��V���F��(��ptbwY���~
Wy����z��Q\��T N���wYmC�t���+VN.ALu*!�;@�z���A��[�O�OD8���d8��sam������XR��K���j�WK ��f]R���c�Vt���*]xp������lE����hE����WA��d#:�J~a[��Q����e�O�
�����,���5�@���!�-�O��1�����yP�DP���i<3�c�������� �*��g@��M>,��lM����C�xJ�S��;��`��bx	�~XXX�/���pvL��,1�J��;n7�%�I��P�����	>z�k�D��R��P�7�H�>���j#~E�w���h��*����c�7~����"~~~<��������/��)�y���0����b.�
�l
�G�=���p��/\ �l���l9,S8R���:������7�L��������Ql�0z��=�����X��}��5V��5Y,�����fx��~
�����>�?����I�&��Ufv�Ln���cO�M���j� ��=�,d*iQI������D,� �r(�������X���@�X9,%&�
�X� �kYM�@�N��l��i���Y'���g��d�I�r�t3K0�����D��1�M�U��������H��Q��RN�+H�D��1��'X�}k���&���Z���pN�7����*x$��+Hd39������@frq�7�3�/n&���{��$���L�lLs��M�]��
S��6�{<�< �J�*�Z�e-e�1��B�`�����(L��L���:�sr�l0�3�d������.���|�u8�6M
���m�R�������F�JX ����8'
�a#	�Qa@4��+Hd+9��t|�V���L���9cm3I/�R��L�� ���hfrA�L�\ ���M��:�����Pa@4��$���L��I4����7�v�#X��q�\�����1� ������b5>[��,� ����@4�m�>����KN�=�"
g����
�t�e:=�yC
p 6�l�������|����<��"�h:�N��/�d�9���pR5�
x��E[��
V�z�^���N�����h9�7���n�e7�T�&��	��G�B�
zy�9�i1O4 ����qC��V���J<C��5���������_�S=	�"�g1��y�/�K������C6����r%��"_�P�|B�M�D���������t
4�ZN����^3x�V�Z�f�	��O���~��%nE�8�����m��#t/s��lz����:��!_�/���x��!��=,5$:����I���I��2�:�
��v�ZZy�%���nb�,������B�#�K�7�@��Sc��V�{��ML'�	3�i<g������`5?���!�r8yN�:xvr���0��f����#^�U�D�{�j�)�/o�hR��N�������n��q�`�D�&0w���c�t��6p�g����8 �7��[GOL�g��H�&/�����lNO�
���0w�k����u�.F/�&�!�6�1���u�n����0w�sg�����`�x�e��k��x`��;����yC�x�K�q��W�D���5��'��e�V&��5��'��e�V&��5��'��e�V&��5D�'��e�V&��5��'��e�V&��[�F����0�-9��'�?��/7R�3o4c.�-����5$'�
35#����$-��I��6!YX�CglJ��>8��f��M��'�U�|�����%-cyB���<�p���~�����W�YS���X���vmV\���N����}�A����u�����@�����b1<��/�Z�Iq��E�l����������(|����G6���w�����QzT�#���i������?��2����[Y�L\lOs��������t�-�%&�vr6��?8����!����k�Q��o����x���3h@�H6���\3�ne�����#��c����?�<s�2h�\Y������/{���1H?�L�w���im��!�\�v�����������T\�\�r����j
�^@�Bm(}��K�!��0�VI���$6y���<�1�;h5W%�.�����9~��b�,m5l+c[���
����Y_�e��L��*�`�
����y�a�p��!=��=(���%����:�ZI����$}�&:�&��<z��x39t�8����a���/�=
�6�	��@$��,�*�0�}D/�3�d	|�6L`�wm|���i8��@	�]����\����JNq�u�K�U�����}Z�}��q��N�(��0X�?���A�E^a�k gm@��y�L��:5�ft�qE���\H��vg�K/�]��:8��*�L]G��.��:='�\����W��<����$�S
n��;a}�,���
�It��>���x�w�,_a$�;]
#I�ZA����G&�T�Tg�PfeG(�I��7AI����R=R]�(o���k\����c*#����\�����H������r�f=f��,��}Z�$��$��o'��X�<����K]O��?��aU�@<��2�7iW	O��8Yb���i�
���|����aSr��
����P��
�>'�wS��c�^>��f6=;����S�����9t-_�o���b��.������i�&4��A�� ��+�Y�!�x���1���$�xG�]�!f�q�1oBC
D@��r81���������d8�p�����\��
�BX�3$80���b
��|v���!Zb�)8 n�Gb��x1���8 ���P|��[�8 ��5��6��3q@�����������p_ytO'�<��x�Q��}x�Qm"��Y&Sh��Y���d8aPm'���j��K^~�.�R�j�2�-����X\�����C/c�-�XM9�	�?�?�X�m��cq�����C��x nS���/���?�����Xg��?�������4�a�u�
c��������!k�L�$J�	D6��D�~{'�?U[Jc�t��9�1���tj+����}�Q�4^���`h
<���%���;�b�����d�������������#h8��B����7��qo\���1�/]:�\Q5�5(01uL��]L��1���
�Sg>0m*z�\q�P���g����i:���*H�Ql��HH�����z��������ZX�xm��p+�'�8O,y�nj2�����@{?�am\��`�O����@�V���44���������]�������������
�V�P�8���y�q�]+�������h�����4�HQ����������2O��uel����m(G���Dl�3>I,�y�������d�/������M�W|�C=��	�w���M�a>�Qr���jg�.����Q�h��j���V������YVs�t�Vu*���V o5��Zw�=������b���|��.���2+��4n;o�u�m��\���@dT�,�R�K�V�bJ�R�R
�Z�j��Pj���p���w?�S������M�(/��&�)|���Kw�A%^�Zx�\��\����L36����gi���p�cY�����	��a�;�|gE�D�{���[9�0Z��w�58�xv0�Vv�Z��N|��P��I
��,^
���������k:���F��z���$J�e�_���������u���{������_	vK���$���h�����Xz�p�k~|u.�xu}(��y�W������]J��3<��d��}��T�7���;m%�ybUa
	�I�>��l��4�U�W�������@<-1�c���)����JVee�UX�����{�&�cd�������S�u��d`���wI�y�e��"��1�c���0e�k|`�����!
dROD�����*?s,X�����75���>��I^���h
x`�;i��^�kEn�N&w��yr<0�=��~�8�w�*O��!��*�9Y��+r"L��@��~��>�1���K���*��]�q]���H0QvPn�@b~�F��F���8�bu����:$���\G����W?�_�T	7�����x��B���%�<AwLX�����w�i������e�V�d��$xx��j-�:��j�h�Y|�@L�?5n0����V���F��[��*�&��&]����\nB���(���}#���(.����4��B����S��kY��gyn7��fV��D�7<0�V���$����@Oq�v,��������V���g����[���AF�����i���?kQ�_��U��������%��35���<x��p��s���y�d�mQ����|�]O%7Ff*�T"5EV�TSg�b%Vr��6���.I��L�dyx��<�����3��x��'������3�/H�5~�N���S�<�#�B'�v 5��H��%&u8R�����v%�u&P�zu*�Wiq0�3���x��|�%��
��R
�_��(�WX��doSI�P�N"�ju�K���������0��su����t�l�&�?)w%)��c6��P����d6561����,\�3����)�������`�}nO,���(4��3�����r���� ��O���7�1��cp������0��2�:����� ����a����9;�2������z����,���7��X��ex�� {\n����&��B6��l�(�\\p��L�@3��p�����  �\ ���r��|92��� ����
.C��D��>�U)z�������5���IM�����*����SX���6��qAC=�4Y�N< ������W�/F�O�����|�_�>�r���
���k �w�����"y@^M1�%3y+D��l�b(�Af�V&���#%�<�2y&���!%�L�g����v@�?8�2|��bpE����2��c����iU��<�in��T�X���i�����N���x���'.��O�O���N*�����@y��1��~�����.��Z��;��w0��Uh��v�JV	�]+3� ~���g+���y$��q�@���7�^�� ���P���.TQ�,�5
��-T,�|�/���`�g9g
�����zT9DND�s�9����:T9������M�-���i��Q��X`��H%0�"pVe������F��^�:D/�C��9�!>��N3K��9�Cz5�,9<w��9da{���B������_�����!�C�m���M��-I����4�NTy@d�p,���{#�bZ���S�@d�].��|����>y� {|���S��?��j6�C��c�����IS�'H�=�=�3� {�������o����w�W��-D���w ��M�m��1|�>\�������5V9a�[p*� ^�k� 2�P]k|���,�
7����s������V���pOQ���s�n����F��@���M����T1��>��sk����l�}�[Af}H�u��wV�1��*O�S$U�����6��H��
�������y[��D��PE��d���������c���r�S{��0�
��N@H��$��&��eF��3��}�*\����"*�q1���$x���Q2�n�>�IMz��(�����j��(��.�������*�t���u��9d?h��:�	���G��I�I$A"�N��x�_N�X$�,�m^|fo`��I�b1D+�Me+�$�$�*�p$H6�<�"�\{~���>D&����%Z��:�3�C_9.����|��F�
N4`����)�����/��a�]�Tn�e��y�����L�gf�3w�R!�fN�f4W���!�I�
�y��XMx�M���hN��L�`
�Y^g.3�E��K�F�"��f0?�Q���F���s�:"K��l������p:���0�����g����S�������Z��&�]���i���e���\���k��@���fXW�����e�3:��n�M��hl��3^�%6�}y8g����C���:wI�Q�=�p�u_8�t�����\���*����rz#)�'N��O���h������VY�����'��*T`ZT�2�,j�'lU�A�^���,�qU��h�������
��(���0��Py�6�>M����<�!��Wd��xvw�-��n�%���.�C�1�!Xx��j�H&��N���'�J����"h�6a��?2�X�^�o��t�_0!�k��-fddxg�FU�[k��<���bu������r�`�s�*Y`�� J
����g�P�}f������\�/�/M#�]�����C���;�=�L=e�7,z3�U��"��T/��-�(��4}*��AMz��6w����������4V��\n������(���tn�<��x��0�/��A5�X�9`)wA.;��\�}�E�+L�K�B�	��z�&g�%� ��?:��Ur���p�a���dy�������h
m�T��F�����"�s��0zxvS�H��"����mey�8����I.�M,1T�%�+ �Ke��%�Uv �XH���!<H���OB�t���2p��#��l!5.�@��3�y���Hp$�����g��,��/2�����0[jd �M���JgB������s��|vS�	D.�}��w����9:^w'OH ���=/�?�O����I#�������@�h"q0�ld���=�����_�����_|��
���1��6�@���%Q�/c���"��V%�>��^9�lW��1+�	<�~^9�c�F?1���
��A�,_9����M~ e�J�Y����M"D��a[���~r�.F�U�Q���������$Sv��DqheaU�8y%^aPMz�%P%K���m����X{+���+6�w�X'F��8T��b��#�f�U��-��a�c���"�nK1�t"�g����A���H 2l���$��B��
D���b�W����L��A���������������7�#���Kf�w�����#�xB+X�e��p�G�+���n)�py��W�4���>��]���B��j��[�8��V��
G�a��WH�{A�[��C�8j��g��?�d�?�?���3�����}�8���Dy��b"�����k{`�3���D�L�D���yL���@��S���Sr@&H��"�rg�z��~���������&4�8�m�	���	]\��RZ�R�5M���t��=(�Z�P����g$��"���a+�d�X �	����W;��GB	��Y���^�6����-_���y-��+�lX��,�?S��W}�@�m�b�&k~��+xu^}{Fs�����?1��~���tf�Z]��D|��V��������&��h���B����b�������V���c���w���D;�����N�E�S
�����Y�?����t�G�yR������~� ������0�|�FO�&����([�Hx��iPxBte'�~+>���a���<_�r����2�Z���[L&�m�������
�#��p�����y��W���e�*�a��Z�;�j(U(0�4��Vx���v���5*0����I������p2�RF�:��T�[S��r,7�,�������q"��;��h�l�iy;@�~��	:��	�/+��W�3O�T�Y��E����8UW���� z?	����r�&����8���qCP���H��c��`��N�`dN��"���E�{��X�T�=A��\��z�|2�p�uB401Uw���T�"���T�Ua�����0���?�����4r9"L�j�cP��!��
�����%ine��.I�"I��E�x|C:���`J�:R����T���DT^-������M�^!��{���<�����r^�����+�T����j����,�(�ob��y^����k� NbY����_�6y.?�8��7�}+�[�Q�d03�d���&�-���IKNf�h��t���
�,�8_V��yk#�����*�4-1��8am��"_F���7@����U��1~}� [
�>^���%�_/�X����X�2U������jP��r,�~��������cq����7@���j�MRE�U8�b��
�x�R�h5���T��*8��;���J�)[�9z+5�pBv���8���Q����S����8Q���%�����\:��?��0~~����6������������X�a�4��#;����k�)�
Gv���P�?��8�v�+8{>��|�t�����D���a��:�������2��'cR8�8��Xg������B��Q< ��_��n���e	�lQ���c�`g@�����ai����?�rUg��	wVP��$��I�bl>]5RW���!z*�������;��P�����
&���h���V
:��Ju&M��|*�7�y�T� ������&\��r�fpH��_+�Z3�&G!��)NHW#f�;&�I4H�s�I"pX�q��0�L�Ab�L�s������Id
�\�z�Sc
/]�<����8>p$�)j��t���p ���s������[�h7�`��AV_���]'�W%����*T��7�:D�j?W��A!�.&w��?@qGjDWG�O�1��	�6��>��E)E�*SL���(�Ud!��
��(r�FBq��S`�[A�'hFBq�	Z
��Oy
����o��������oTc7Y_�����4���mz���7I��K�Tp��B�,s (p�~J��
��g�6��*���J�uy�fx����l$�j������������8?���Y._!��y�n�k�	�7����	�g��A������<L��
���"y��SD2-��E~�q|������X�P�b,o�p?|Ny	@o&-�Q��yKD��rB��� 3 �h�9d�����=��	22A���Y�3��0 dd�����p���r��!c`8�5�?��q�c`8@����8���2c`8��T78���-���8�@����{�58���0���Y72H��@qn����3� ��������GA��u��p����d[�	����2��2�7G�>����06��v�?'40v/|x|��������V5�����e�]���_4�F�3���_�xz�x*�L�O@��-e~_�a��/�NR�������M�i��e���;��}����]����sf��2����W�?�&q�����<���yy�J}�{��L>��4]���4�4���C�]\B��q.Ig�e��Fy��VK�c����u���;�_������P(�
���O�X��~�~fY#[���>iO������{����M�
��e�^E��"��f�73�C�:��R�9������kfJ)QJ9�<��
z��V�����s;�Op�����&�j(9xeh!�
�U%������'[��Yw��$�V�4
������L�5�i�����O����z���{o3�_3z�l�`�l���z���=��q+ho1��,4�r^�8�r�DK�U/�����s%;n�{�c�k+*��?������ZK���	&�p��a<�b�&����`�*���t.0YU���8����Cr��V�eT�uM��X����&�j������oe^�W��J�L\��K�h�����7z�r0���\0���4lY��&V�2���@�������4�|�4��������-��� �i9��V�-���h1�O������r\�����X,��o������%>�6a��?Z�$LW�������-/O���-Mh �u��t��e��^a�WQv�["�6iu�"y�ke/�U�TQ��QCb��(�[�+Vr���.�D:� 6��%o��Z�wY��~lGl�+�4l1���V|.������-Yd�������g��������Z?wJ�6A��W>�>S�7���wV����Q��n�1���J�`���1`��+��ggv�i��;A�*�����!���5��Ep���������)y����B>��������~~�����V�c���&����-
���N[����~����}�*���9���b�>��>�r �T�Ed��:���}�[�FW����M��$���/�@'_��\�]5���4��X���GL���Ob�������)����]�gi/3�L��^�8_kFy���[�C,��,�[&�k�~�h.���QpZo@�r�9�I]��������Y�w�,3k���u\8�"��� �������g�=8;o<�H��aR�\��\g���N
N��f�O��}�1����~|�m��`�t��q����f:a�U�Ag�a����K����a�,(b@���sC�����!�5TA� 
t�!��C:`0z��
�p����������vH�q�	%jMU���<��&��#p��|�o��{<2'}'ew6���C�Ek4��~�l�
%����/��Yh�BI�}��c6%>�j�}CWjnHM����MiiA�������f��M�81����&z����1��2q�Do��������	���u���1|&��y�?{���8n-����pE�j��-R���s���|��}������p���]��#���}P�����e�p�*+E�����x������`ohi���$=E��8���^��Ho�N�f���� �i&�g��C|M|P��&��P��p��w������{`�o�J��������{�T��Cz���=U*�8���^����L�?�S�pp��K;.���|���������iR�qh�����z������������s��\c�������d*���7Q���$�%����Imr�c�4�`$9Mu�Q^�R�}��LI��3�r./ob���J����-�.#�������1��cY�?�E��$]fd���ZQ�^J�E��������;
�n�~�c{p�m�W��m���L`�+��y�|��rkZ���"S�N�S���hmDq�9a����|��H��)(�4����hY�A�&����>�;��9�����|t�R�^���z�����N���_e5����&^�����L���2����
zA2c���fg���kc�d��)��&��� �)f�9pd��� ����4�>���}\�������E��JP�yU0-��V�?�������'lj����0�R9c��H��n+���`ow�@�2MsZ�%mx���������M��`�z�C^��N�n����\�����"]��XuZa���05��.����6V8l�h�w�R���8-F���%��f��w/�S�4����y���T�bS��h�j�������T��j���\7g����?���:��T�����7�t�d���b�h
��q$���y����$���Q|�p�!��d��
U�����~G~������#�k>o�0�$�)-?1� ([��C�?��l�,�|�
�|���li��I�u�W���A���N�LF���;s��W���6������`��k!����v������@�v{Gkv��c�j�g�?mc�V4N�2 9�K����e�1Nc�>2F�X��X��b�}/���v�u���u\�m��t7��d�f�����n04;���7�[��9w�>��~�Pq������!`�|n8� ��=����%OQ��I�X����eM���,c���w���?��,5��C��J\_Y�� Wz����z�V�3@�7z����/�*v�|c�������[��<������)�b���7����X���u�c1�a��.
�8;<�fR���.�q�R��)T���YY�*��.��	�����~�<�0~��K�*w���������H1�V��6��[0 ���W�i������
��;�����W�aV�'[�����N�����t*���=S���oS�YrY�d S#�����
u��&�ZN������\�!J�}dy���;��$}����Z��f���Eh�&�2�F���Xl9(�-������&+�1z��l/�:�q����;C�����=�'�������U ��M�!���Z��	�/��Ga�������3J������7����1g�F
6��m����k
NU�B�H� I95.����j��)qY���*[���9<�>/a�w�+���8i"MN��������E�9�ml�f)B����l`�d)�dd_*	��rE���)&�F�qo��s�`��bIqo���VA��IL�<�y4U�>��nr�R������f�3��N��G�I�&[������������C�';q�����)����:���h�'�,��	��V�.e���\�mJy�{yG�0f���<�QD��0"����uFxW(NrR����?`�:#�s��
a��G�*���d���$a������/�i]/ro�����c���.Q���2�5���v���Yj<����N����L����&��4�����q��}�|�����JH�;�����;+�;�
���m�
7������+7\>�$aSH#�����;�����W���3����/�t�����6�7�t��0����*q��U�zZ�if��bd�#��b��\.	�7�\���g�N/�<q�|���U�cW{�r�_�A�3��-�-����a�Z��k\3��#�������x'F������z��`���(�X�;�
	"�6���S=A�#�A7by��o�8,g��nT�n�&�p��Y�������S����1���W�$1�Js�u���VBD�fW���r;��k'jNl�ct|2R��`k������p�
M������I��������q���`R��H��?�H`���a"��/V�a���Ee,vRc2G�7&���U�}N��f)�j�3/�����>MV��Ty�q�$N��U�����/�b���%n�S���0���xe���ys(��#��iq�����1��-��>��1QKy�1����fkw�������TV����#Fw!RD�B*��T*�4��<�C�q���o�O�
�3y��O0eo�)B�A��-���8t2J��v��t�f�x(;�Y�^(�G�������z��83�-���]i��g�3�5�����r������oL����K�����4B�V���u���1���	��c��D�6U
d�yR�-�>��e��r��-�����������R�r�H_���4���`�4Y����h�n!�I�|��D�g��Y��z�W��sh�����Ys7B3e:mP��Y���4���;�D����ng?r��^�p���K@3hg�%�X��5i��'����0y0g���+���q$j2�Q��h_+Z4:�" �s����@�6��:z�:��V �.��M��[��l���n���K���	����9�����<~0��f\l(�ey�|���q�E�D���R(�"�8�4�����������?� I���U$oecArf��IZD���7kT��8E�6qT&t�7�8��a���M������G��n���3�G��|�����Q5Q����W>/�������\O|��F�EP���=�����Q����.���i����$tn�O��G
T%��"��?��5����Y%�!�S��gQ���@@F��!����Da���-T����j���RlX�����|�y�i��b�T���O,^)j^�FB�?#�S����X�[��	�oh����$Kd����k=a���Zm����gd��h ��~U�_�3��pS�>|aV�X/���d0 '<�I��|T����I����1���P)*m*2������/XEs���4L���o�?����Y@����4����("��)��@�h�i�&�������Jlq��<7!�Z�2	H��lS�!��L���f$Ny�	��V���a��gSs�LG�_�f&�<���f�<���L+����4���g����4O�i��)O��%�}��SE�QN����TaD�+���l�T��[-O6��)}Q�~�W��U�*u���"Pf��"y��D��:CeV��3��W�������/��
�V�D@���e������Z���Z���~5�k��E@���-�����j��&��?_{B
co�e�����Z��[�8a@8���\�b����jp1z��Q�%>GV�T���8W`��3����r�Nb�}\54@��r�$��$��'��w��a��|R�}��E3O&+�Nf����%Q"��$I��8_\���KW|�V�$���VDY�w���&�p���������`�d?��,�n]k?'A�gk��y�������#����|��`��;�4
Z�=�k��Nq����|
��.��,']�+A#��	�L�@1�.������5���M�{u���d8�y=�m�U@*�jf������
H���~�M�BT�R�T�P5����P!*l)l�����:U���y�����5����F��n�q{����� �2������UZ�p�Hz���g��q�h"{|�X�P�
��Q`[����b�By6�!G�m�PY�-�������/dx~n����a�U��^a=���\b]�������WP�[pc)S��G�cD5���h������{��9S�d�A9�(������i��H����I�:E���Nu��W�<��ii&���8cy����?)��+ka�����}4iK'w:�d`�;�9&N�����H��Z$H�T��t����.�n��#���D����
T�ku�!:�. )*�mv���=�����p��b��j�]F"B�4%��a�L��Y��;2 9*���N��b��!���1r�+� Eu��@a��b�L�a�o#b�6+�'-���G���
H��U0��f"�@���~~�~}�s4x���$@��J�� <`l �Qy��5�������~6e��pe�~%�[0l�(����� lE@�U,~J}�>���]���W�����}Y�I}���T)�^Y����{�keV��N���)�:�W��LC��Y�:Q�^g��M��2�r?^c���9�C����H��y���x�6��tp[1�iRakw���D�b��<O�w�����\�T�D���,�zM�ZG�u�Dz�f����OL+��?�	�bW��c�����S��p�67I�F�*�|x������"qk�P�$R�~�wh�����%H54 A���in��
����52jq��
�r-���Z�t����*)�U�������|����Sum�]�G��_
��gng�GC��@�s���iM���_��28g��:3��|�����2�O��s���t����uI7_Z*@+��3�QFW�,�*� �u�����@@�H��0q.\���$|��+��sa�C|>�O�L���!>	���`3��`y.�|�O�g �)fwQ6^�VFWH�V_S�@U���}�^�k��%�;�2�$ �����NFW(�
���yn����S'�=`�0�
�LO��7�!��0 �R �q3��lF�'j�E[�U"�d��P�=�fu���
m�g�L���r�}.�\�	�}�lH�C��(5�vT��y���aBh���n����O�BNS���VW��p)��t��J�O�>R������H���~����Qb�c	Q5�"��B0"D���$@��8O�
Lp5:��Ch'@�$B�D�8�:I�_��.d�u(��m����?g<������53�s0UY*���#�1��R;�����b��0*O�d��W~������n(��K�}X�H�-����,����J��P�&/^����i���x8D����4J�9B����t��������%
���9��_��^�4�i��I��6v���
���],.������{wmP��DZ\f�Ju�}(���+�l�,���^��F��(�UmW^��~�����x��w�����\a<.6�r0��O\=���ru�GK��$�4��y+4-��C��qN�{�r��"�q�8�sd��-���wB\;I
��r2��W2^e%c��]�W2�sg��H�a?��d������wbe|�E�t����y��i���E�E)G���k�n~���O�>mS�e�j)
�������pY���B9}��������	{q����Qv(2E�M����l:Q�u:su��4�S�V� �L�d
D����?������'r_�A�f-���gF����Y8'~T(6d����"2������.�zt`��R��L�G��ZgP�)��@���M
f�NZ@sR#��d����<����I�G��Yz0�s:i���N��|�y��/I��y���G�/#{���!��n���vh��p��VV���/{Cy��;�8�"�d�L����y��d��n|EJ���^����n������U�5�u'w�`��S�s������]���o
����7�u�"[�{"��m�8���_�S�_a���C��y�i���������z��s��o�7���K�m�[���*�3m����q��8�b�I}����v����`VV���,W�������^_k��C*1��Z�Y�eV�If���HmL�.0C�8o&CK�2I��)G/�<1O���L���Q&���:,���'V[���7�����3��-8�������+�
���p�^�'����w��'R�{�M>�w=��5������"�zH�I/2��3a�Cz=QO�U�h�}�_?��J�/��(d��+�iOv�z��f���������>�e��MN����#��i����KuIx�<.� ��<���;���a��:t�$O%y�p�j����%�%`��L��_&��_��}{�~db�6S?�)�+��a#���\�,��J�5E�RD��bm�����3:�W��Xd��E�(,� -5�H������W���h�`\k�X����Z��ec���N�����\M�p�v#*�)4�l����mFl2"�C#-�i+j!��"B,�!|j�;v�t���k�R�����q(M
�
p+
����N�\<���*Qe�r�R�~�G���,�e�r���H�R}<��E�8)�C���Yt���
M���!I�����Llc"����������%6/Qdc���H9s��<%s4�&wQ2�����������}�|_�����0e
�;rf��4���j�����0e
�09��/�E!C4x��W���bz��[����qNE��M����.�uf�%���V�>va�Zlm*�^���9�S�'X�)�]����#�gA�Q��U�,���!�.�*�W��9J�S��^�H�$�)�W;�)gb�t���S�?�'&y�Qu������5���.�6Vknj����9U����?��$�+��%[?g������������>G�����<�j��5VR�����}7z�
X��v&k�zK�j��Vu�xfF�!{<�h�z�j�ny�73�J%����10���|2T�-c�M�J�B�(`��h��l�E@FAE��<FA�%��r����W�[����8���[
���J�r������X�����,��5)�����-���E������!��+"h��1<�*�@�����[,#�xz����	)�K~c��X��VR���;�E��A��a���h�7�������
/2�=��:�`*T(�����)e�P�}�����"�������_9]�?q��I����<�O�M/��t�����������������D^��M���a�bQ&Q*2��t�uP/�3��#D����l*/���G�~�H�������G�!�����nu�C!6%B�;�6��(���k�������8����U�]��"z����j
N�����|��s��P��2�g�$������ N��d��}u��u6���)�d��3�����%�}�f�>M6�VBY����5]�������@����p{�l�f�le������dSJ�IZ�v��:�((��R+����|��k�T*�o�-�	�$�G���vK}�veg��p����]+Ck� \���EFoP��,�Q6"�v�~�G�����;���s��?����?>@���3M�"@���oz!��U�#�q�'	Nf,$8�F��Fq���:J�T���al	�;F������R�Y�����$_������������A��j���@��8�(L��t��t��F�x}�tA�)O��3'�*6X/�`u3Y+�����_I��HS��@=���&�r���c�1}��%EAo��(���E��������:`g~.Rd�oY�[��C�����
n�$[r�(�:rG@ro/0��p.w������i����0������u�����ud�*x��>�W��X��)����p���t����+V��=�>��jz+c�^�9FZ=W����L��&�Zl_L��[�-���L����Q�Wc`�g�V�|�n��4��c���o��F1�����7�����}��%
a��� �]
jm�������EdxL���^��pC)J�d|3-���=@�����36����+x����������TB ;s�J�j;�0�G�u�\��5}R��M<�}4{��F��k%���s>���!OKy,�9�������l�hAT<�q�,�M?+�<��<n7���Y����(�CJ��C9KG�z
"�,�_�~E��������?��pB�B�����V�e��D!�)�
����+#�xjo������+��\��<�������n��+��j�v���Ax�%����"�]�D{�s��;SRc�Gn��c�r�)��E�s+���r��H�V���x�_��MZV������p�,d�F�j���<����9�9O��A���k[v��[�P@J���%Kz;"���vO�{�P�����v����N��	�3�'�o��-�;\�)����K��2n�l�'�/��qIx<W7$b%��V#\��.�H� a�X��3#��� aw�����)��9�H��~c���~>����D�4{IG+:��gT�����ZM���F�z2T�.�]��Fnn���[���N�������P��8?�k\H��^�n������n>>����D&��F�r����n�V,�w����M��=� ��_!b{Z�����HF��<���7��>��gvV^��?�X�cM����)���~8�X���Xk��D�\��^�x�������^L��_���|��-2�.�C�:��V���M@������O���-o�j��#1�b�Uk����	��e�Z��@��a��d�/�6�Cw�,�$$������4�[	��B(�`���^z�3����P|3�X�z�c���_��������Qq_"���Ig7���)��xw,�E�T�Y�:�0�]�(V)�h��:r9�%e������g��i�Mk��d/��a>�qv�c�9 /T+3����J���|'u�$b����\Gy�s�����Y>���
r_���0��|�:�A��:�X8��������[���(���z��
W�E�����pO��l8\����39s�*�UP�c��[�d����;�t�Tt��������f/���C��'��������{u��%��f&�Um����#�<~L��b��-��;h��Zii��L�;�_��Ww|�����o
��&w��)���?�����H*����
��lre���o������������|�/���}����]�k����.T>}�
����Po��m#�1�:���y��

w��D�y���_�4~��W��|M����7?0y+�q��i4��B7wje��)�����(����������m$�`H����?~���?���������_�c���{���V���Yk�F���t�<�3�����b+
����4���G�\/���9�[��x���$��c�XI�����J���&���1;�����ze����:������(����w���*�"������~]}�����x�6��V75�&dbPE�zOY��].����m&���F�
~c�X��K��?��?>5��i����<�a?���7���g�������7Q�]���F�Rn�_F~������G�.���U�Y�~�����?�L����#�|�
���?~���?����������~N�S�������\K��&���Z^!�T@B��������~���O���~���>��g�����F(�]@��3������)�1
���. 
������}���������SZ~��Q������B�	�1#��0�F��E��?����?��g�>Iq*����H�N?��X�1�bD|�$b��F$�����������~h��H�(
H��~�!���Q�1������c��"�}�SF��cvN�>�q%����d�>*��#2:>t��d�5�h,��~}�-�;�O\����cdm��N_��c������7��(�*,���q�O��w��O�e�N�k,!�����a�t��gz�<��1}����>G�c����}�QD��#�Z���UJ���:��f�
u�|lZ�r���:k+e�NT�J ��e'��%��g_&��B^r���G������S�����|9l2��'��i<f�a�FcGJo���������o������_���	~�I>������a~�l���g����<��
;U��Y?��]+�YX����bn�:a��(%v$6`@RTL�����
t�-�������A��}����&iU��g�V��:��E�R=��)5��K[#���U^T�$�W��K��>�4�����[��iz�t)O�$A�>�I���2QfS�Pa���N��� ������-�=�D/����~�&���HIt�gN������0�'`<[@�U5��_E&|���m�7�~R�=��U;I���E��1��.�?x��9B;�$Hh(��(�����Z����9������xU��l�e�v�<m�[j	X�����u���vF����Ak��m����g����.Vu�%po(�$o���!���s������gH�/N��&xx��<�8]�9��6y�i�?��S��`��=[%����
����6�1������\yBkE�PWW(����N�
	i��I��00�5��X��d�$�4���gp.��8�����eJ�/&+����T;���|���.���x!�l����Z�;�o����(:N�{L
�fG���='�N�Y���O[Ud������������~�)3v�h�u��i���a�f�
�Lg|J*����0��f��	gCEa��lX���W���a!�@,�����s����1���4!
l�N8*r���aD�m��1PQ@�:��F�m����g�a�>E
�7�e
�0[h�P�J��d����4;�A�@-R���4��4������.�BE��z>K"��$t���p,��gI�W�z���� Tjrz�`j�*4�
����>��q�T�C)3��1Kw:)����33���8�	$1��*i={��4���X�I����f��U<�vj&��I��*�0��
C�L!�Z"xvC���a~"�"O�a�c�3L�A�
�����~�r�Y>���<��!T�V�?FBD�Ah *v�����>���<��!�goN���a��5�}�G
��3r\���&��Xb'P�g�0��Z3L�1
�����9?��~���~��j
:��)To;QMI�t�V�z�����iy"������b�Tk�bE�O)�9��X���{Q��a��y94�Nr<�z�S���]�����0f�s]6��O2%L�4]'7SM�T�}r(��1�:e�&��Je@3�t�I�
~�%0b�e:n%bJ�v��})b��J����"d���4��O))2�t����hw��R�S�N��(b?&����F�����xwo��kk�����a�/
l����&���aZ
l��*���%7��0���g��]�z��lQ`[ |T,������(�-<�wXn����e���b;��&�8��'�H=#c��&H����6�w|���8t�N[N%�7����V�J\�.��L��I�]�����(h���AEnZ�t�r����<���C����B���j[���0�B�B�X8�LJ���c@D�-��l�������/� �8k*����}�_,R�����,�l��|PH��<�QA�����d��h7���N��y�B:B�
��Y�F�N�Z�`��P�.���}��iW'��<~DD1��:�����=LE<����:<f�_'h�ZV�K"�wm�*B�9���z2���f��7a�L��D����<�����z����|�5��L
Yg��u5M�E��<��;a������`� ��j3��J*���'m�����O~����q�}�U��*}��*_�*r`�o�-��zO���{�2����m�>�:j���G#U�
�-�Z[[F��gZC
r���$�����u�Hqx�it/�{���;<�H���j���C��9}B�����#v�[<��p��T�<�^����L��i���jo�����~�]�cN��S�x{��C�Nk���,��3�kJ�(��b�T���A�
����6S�M�`�FT;�vL��S�U�*O���g�W�#q�Y�}w���
3�NS�ju��~�u�k��r��j�{�z�a*U��h��ZK��?�b�����<x���c�kk�J����v�V1��{C��C�u;Q-���-���t5�E��j(?n��%d}�{d1}����\�=�������NT�>�����N2�}k>� �)�y�q>�F^���#���]VV���F��J������PQ������q�`�F�PQ��<�3Y�K3�helz���o0m�J����t��s�&�r���,�|��n������B���T��@����������T���a�7c	����bk��,�*|�qu�"I��
M_e-n{Lk�<�E�@Ps�?���^�����R�u�p<��7���
��c�(c��|�����ugm[����i�j��O��-b1Y�l/=,��Z��a��EP�d�-������k�m�;�iR���=pO�`�N���d<�����~�����L� L�-4$#�dg/#_�mb7�����6{��@���H,�C������-���yt����'�uM�r7��l�L�v��oU
������6��;m��;�:a�;bE�*�
�X�/���[�z�������*�?�0fq���f	x�B����G�W����J#=6��>��3�Yn|�r�X��d QOi���gf���R��$[��y�����g"�S�������cj��X�}U��8 �|�$������OG�/ |B�M��Fr��U��d�X���9�6���F�&��L��p�!�X��+�b
�"I���2��a�D8!�����W�o2W,���z�)�����r�%xr�VD��#�Z���UJ�\ULj���l����=�feKi� @��3yxu�g��"D��|E^v�{[�{p}��`~
G�>�4^R��s�E��c��m�
�[�������	�����xG`�t����y���l�8�: C����0f��?��y�����G��d���	����P���z����OLOF��`@>���s������}��,��'���{��i�������,6�}�^���M.���B��N�b���~��;������'��U����^�#Y��+�6w�m�<���NK�|��U:���KY$����b�J����b��rZ�����Ov��mFN����r#�*��OF�X����v�<S�/�UdyM7Ov��
����6�H����)�����n��)�&���.���
��1�_`�*���A[��M@�W��S$Q�S�n��Y^��<k��������#Kd)����t)w��G�&�<����^43���.Rq*�fej��YO�<��B��������+����~x�?��d������s7��w����E�N~4���0�b���G�0����Y�[�l_q�>[GN>����A�#�b������x4���hV�{pS��dz�0�2����RH��J��V�}����h�e���L?�D�"������&�V* ����X���0/�0��tW���;W��x���R}:������@$TT\�Na$D����H8<�#!"�"4	%e.1��Z��V;�a@B�!f�!"DE�[�DqS��BT@�a@B��!.����k���J�cQ��T@��E�����3*!^�PN���~�S���Y��G1�����Q@�t������:��l%��y�~��>m���y��~O�����UvE������K�v�JE�&���R�d�`��MWh���fkf~��p|����A����O��F��,���
_��(�C�8��Z��$:}	��;B�H�8Uy�h�O���4��#�D�]��^�:���:�7�>��i�,z��D����g�����d��}jK���_����mv�|M�}�<���'���,+#�oE`���	�0:�����<�T�#��Duac��b�N��m������x��`��yy��wG����c��W3���������w|���<K_���(�1����F��s1u�w:C��:�o�R�9�#���..�����u�D���X�����1�e W�s���Q�7�Jm�s�M0��b�(�V}�d����~�3h����*-?}��H���8����`�)�>�
z�����V/a�e?�duQ_�������-e0�|B�~-���c���dfy�J}���8�+_5��y�_��gE�X8��:�j�**<���z����h��c���v0Se�&�3�XS��s��6��nB$�$u$;: I*���I�_0N^
�;QVLd���� ��@�c%�<�:Z�0'�4S)��8'�g����X��
���L��D�<�������zEO>TlX���!Q}R$�6q@Zm-�co���0��R��6 ��K�"�e���UJ���Q�5�l��A��A��Z�S:tg��h��9���6Q-�c;{�>��K�r�3�T�������R��**6a\d��KZ����:sT1r_~���7'tO���Q�����{;��kQ�t�]"�^����"QK�����\�U�c��������Osw���i��8{j�w��~�����*��������r�%�a��$�$1�~s�������}.m��>ej�"��F�~��5��O���rUx���eU���g�����UN��&��*���F����1�#�������!T�����|�k��P��Zz��U01�t�E�a�F���H
FR9���6����S��C����P�6Jmt��4 ��b�
R)��#`�����fwU@��]���i�5Gt0so��d��Y�~��[���V�J(�Vd@��U�5���HrJ���K���}��1�`
(/���M��������=�ddlr�U9ve����0�����%Q�.fOg�{&�E�*�t�J��5��z-���z����z���=~�u�%%��9��o�y��<�;�+�o�,��G��3�5��x3;��c�>�e��������0�o&������+&�"�<�1�3>�S0;:���FaU��������^
���UP��51���`��6c������?��,��<L�iM���}���+�7��_~3	��������qgl�f9��Q�K��Tk�{����W�����19$v|�E�]�m�P�D�^���=S��S��!�	�a��*�����-:��u���=H��i�5���5"E�{�
�J���>0�T�r�{Y���d���Pn�V+ay��A�@�b3*q6D�!�V�����;��H��������� :�Q��#��h�b�yv�E�+Z���^y�y<ofN���Q����QJXW�"������W^�j�8��F�ZS���E�7��O7�v�a�;��8I����fy�c�"�����D��)e�]�;��[���)-?�0�I�xu&�3IEe� 
�Pv�i���I�z�`^v��R�m� W�dx�e�������]����+�2�W�l����a�:����
$�x�G��(����\)]�'����Z5u��_�16���8 ����U�`l�"Z5ZS
^w�Wl�g�#��q����80#���Q�u��.	�I��PC"����u
��LXn'�DS7&p
�j�?s�}�j�b�����MhR���\�jh�����P��\S)�D<>�X?,�t����	cn�O��ppQ#�>��d���;D������
c�gG!�@������1���z��@�(����n����j�^����*�����X\+�x(�����}����g)���[��+�m0�^����u��"���;n-�8Y)��m�-JE�:�M��s��7�A�]���=,������%}��b[b�0 c��-��[�0�h�h
DZ�Vi�P�J��V{�APl���~�M�+��:c
��*����Wg8�5h�d�NC{���j�����/%����U����a�!C�6��<��p���?��7��C�A�����U�o�7c�>�Ik��������:���.Z���r[6 �����{���G�W	������!��k�F�|1���4;��=!�b���{���;�:��V��_=_��mv:�< �(F��
�������u��m�\u
��\G���\-\M�R�U����u�\����6A[dWL���?�M�g����Z�;c]!������������57��A;a(L�E���c��
���@��p������k*g<�e��8��8 �b�����)���������H������c�	�F�)������F�"]}��_w:��������^Y���j�ru�
G������b8��4kn(L�\�1�[�=����C|M�����^
��l0\��3;�v��o��cV�U����Lu�b����I�8�`��P��Z�T���L���B};e�	k���cG���mUfD�}���xn��gD���5R�q����j}k�m����
�����b�E�:�F�4j�n�'}�8��aY%����^&��j�'y!�+1�4��S]����1���D����mmN<��pv��@��bsU�L��s;Y���l�U���2����Idq��j���<`t_��S�������50����t���s	��P#�����m�To0
>(,�����*�s�>���*�p��Yg�Z���M�Vf�vl@f}��L�|g��}u�S{�����]V������\+��v��d�4�v������8�e��Z|p��O���u�\�/����Ec��c{n�l�l�����s����g*���3��=���5=?��Z����k�[6���-�a��:��>����O_:����K�Se���H]CY��lp�6N�0��(���T��lOe;<��; ����o#^�H�gU���7��G�v����k�b��
Gt
�����7��/|R�L����z
��
^Z8�����'�k����m�V��Y@z}��3��=?�W��e������	��W=@��K�IM��6��b_�����0���. ��t����R��W�
H�/]E&5U�d��[�H�/�4h�5���m�n���vu3�=���*��l��m����z��;{C���)dM��9g�{I��V��$Xa8����?�x��gy�����,�qJ���=G�D���`R������{�"^���c
]��J0 ����UF6�l���x[���<!>)��!������{J�p�^+cn
�[�
��p|^���sN}�4�)q�+�p�	����v�!6"�7"ng���< �=�M	���%q������A�DK����w��	����?&�y4�X|m�X�M�8`?5��SN��dC~�D|�y%y�b����<��,C[M���4M��:�o��������j-Z�����W?������"��G���F�_�� ��(����<���6B���=��
��#i<f��F��������c��x���1�__a`�������:�n���x#;z�r�7�{)=���������W��Rz������
�!�.Hz#]��.��r��7�E=����`��u�?��W�7��`��d��j�a�]�����3��H/�r��7���>.���M���9�p�^�$=�|c���^�hw������+�gOFA��=�b%�=��7��h$�(�u4@���g<�<�t9@���g��k��Z����g����;�T���#tw��g_�����z*����H���{���a��0>U��;���H�V=�1�N�:���2F��Ey
y����z*c��[��[5=+�����Y�vo1�5�����Y�vo��D�@�v>P�d��{k�@�o`iz��@�v>P�d�������Hx�U��Ey
yF���U��5��U�������fIvo����c��to5K2�{��$z&���fQF�E{x��(�<GS_
�a�^��:�����Hu����3�5��&���=�d����6�h�
�B��k�=#m<��E\l(�d�b4���2�96�?�
�>���u_�����m>�����$&)���b�L���g���%e��6���y����W�bn`��`>a�1�2rgn�V�
?�V�^�=|1n�"h�Z������?��e��b����p}+�����=~1m�6�����d����eA��4��a����>�\��Dk3�z�B���}CQ�sS���=�5>2���1�(��w���9�GD���@�
�0��F����a��!������f��
��}��G���ztD��	~l�O���o)��&a���?}��������[��f�v���6l�6����
���z8p��'�$*6���;����]>����L�������B�#'&�8�~�{y����q�A�V�wn|�������wb�����#+j�fW��c�'G�ct��7��vS�}r�w9�������~3�wq�Pp�����
p���^q7�g/�-��~S-w1cd(���������Td7�j�p��%��c��f�n��n���:g"��n;��	�&[��5�}�c���Z�L(�'#���o'����[��������5q�,���������l��'=$]������nm^�:x6:c~lz���O�tn�s��J����fF9�pn?��
�&�1��l��*c�P~��w}����{�b��-�}k���{8�������Kv���e��a�^K�m��e����r�wj�T���;ON���g���5�
�f-�Y���9=QgJ��y�M"v�,����sv�����F}�L���{�-��`����n��i�4������h��P�SI.����F���&�u��{��5�

������
Q�
Q]��!����__Iz#��Js����3oMee9���6p����������,`2�2�)a>�(��-S@�����x+���n�S�������\Ol���������F����_�J��7s�r�v���4��Qt�������i���.�z��=
i#��< e;�e�qF��*Rox0�F��|@�v��.�K�/��X�������<��yI#��s},rF�Gxr����I~R�f�c�F��Xw���0�������}�4?��D����
H�}���|���b~ *F�*�p��t�C�����2�$Y�wk�|&������R���g�7O<��G�(��������E�_������cq4E+E�x@r��9)�%a�|�^z�^��*����kJOg������q�G���bC�pS&x�e����!{�|�����
�v��ZoL���o�X^��.�����(��d�\?��������OE��\��c������g�G���O(7}8�.���Y���P������n�1����4Z�'�n��6���V��=��[n���{w�A��[���Rv�I�f����������m��3�#���a�L� �)Q?�B�%��������^�d�Y���b��KYN`=T���B�8I{��&�0���y]�ER�Z�G|����������}RU��\��j����;wr��s,��\��&s�(;~&�c��O�_���Z~
���������u.�������_��3����Fa ����w\��Z�����s�>0�����{�yQ��O�������V�K��W&S�Q�_�_.���5�(N���6i��{w���0��!�J�E��4��[�_�vMS��"�3��d�MiV N��0��	X<��gwc{��aE:�.���������9�}���~+�kt$��z5������[*@�����uD&�����N�&��l�������F<������_���Q����kR�5-����wO@_�
�����>���>�u�=|�=���.�b��K��+��JcV}������.��Z������8Py��v�.o��3FY|����n�����l-���������z�}U=��������N�a�����C_���7D��H�������.���K/=~���4y�Y|��xL�����{���.�Q��������n��l��.��w�(���l>�����M������K������}��_��O�p%y�(g�K����Xe�`W��9���v ���;�G��z�v�f��]�tR_��K�_�Tyy���_���]T|��
�.<���+r���j=��~	(.��c�
qu���@@���p�gc����?�5|P��
�Z6�o���Q��s�g����r���:V��u��8 !�����r/@�����q��G��
`1Cu2��L��u���n���?w:�72�,S�D���<��`]w���1����U?���^d���;,74���k�7���^D���Hb�a���9SNa��+���
�*(��]?���{C��}�������Y�:s��SC�(�'���p�/����U{&+3�1G�(��pC����<�w��Z����@��.I���rid#q��g�S��-�A�\�#�)���yP����u���gr4���?��v�j��H�����^/wB��m��SH��vJ�C���1a~to	�nE��<1�*��< 1�#f��F|�AvQ����P���Q ���C�r�r1P��������a��k���E���_�+�#�:�S����z'�r���@������j��z3�����^�/��-�}����;���d[;y�4��{#�~�
���d����_��E��]�9v:90d-����K��Yd�4���p0����4Hxb+��}x��"	�"����d�>����`{}�z^�9(��d�__��7��Fe�>��y4�G�G�@��'{����6['9�O�0}�O�z"�G�=�@��������S�Uq��n�#�����|�x
�G���@�������s�������Hw/����x
�5p�Ka�|?|)��~�h������(�K��R��B�SX�OG�h��8}d�������o��e��x&�skZ�m�s�C��-�����n�I����}�'�xA���r��y�)���1��{�U{�Ev�y��� o�}L`��c�"X{�_��w��&���}�����Dv��?�$�]O�M�V��}de������n8�uku���L�z�����4X��h�� }GzpBC��M��~��/�[���d�/�
���K��=�Q�;"B����!=c�������m����m�o�)�L���&5:���[�`M�/�$��#�����|M�b%��#WYu��m�������uw��QT��#���?0��)���_����B��x=��p�z8����5�#R����~�,R�A��>{]������%����K� ��B?)����H�w�2L�*�E!�,��8
��/�$�2���d�e�%~f^��Y|\�k%���_��N�$d����kj�?����y�l�'�\�r9z���@�@��Z)/�C`*���kR!n���t���m��2{���|���w�*��	ke_N����6NO\�*POOX}@y����+ {��5�����^�e�2���#�}}k�`gy_��`�����k��rl���O���9�-�7��s������cr�/����a��k�+|@�0�g�xG����@dc����`����.�d,A�O�K�����XT|'{GW�z�cQ2�3�����U���}�A!,��g��=����L��o2
T���L?������x����2�f���O�6K0"d���������}{!���������xYt�p�������a�6z�-�_�u�_��y�u�)�%ov�&�WN��k�.�@��f
h��}3�)�>�������,����
����������p�x�~�of��O"}w+���/q_�~�������x����b<{-�������H��J;��y'���]���1�F�%f�{�=*w(>�=�V��{�����uG�F�r��b���Y7�g����`���h���� ����s���&SK��&���GqL\���WD�+�`��t��$D=���l��k�W�� ��8����(�~I$���{�K�t����e�~�T���>;
<�����m��b�)E\�8�f��h?�uIY�#H��]l��-�<����D��>�:{C�"����Ve���*���,K9Q�,NSV)��F\��!�q}�@���;�[�D��]�k��Bd�S��}�N�o��{�r�|�r���z�(��W���{��G�@^�v�wa4Gm��$�#�xU�Uq���`��qZe<���p�[$o�����ow*6W�`x#mw	���V�q�(�U�6�R����q�������X�������������<�4;����
���'$KZ?��cG�$�O|d<U���q�~W�9��=�3%�/�W?}��(����T	��Z�s��Zrn���]R�k��3U����|�(`#��+P��__!���AAk�lr���s
��5�y �����'<�9��]M�5�x��������Jz+�zH�������Q�u9@�j��H�u9@���"�e����>�R�+�U�[	0q���j��b�x��p8l�xI��d�v������1�!��4�3�����gW����G���������|M����r��>��_U<S���Q��\����N���v���.0[���>�_����F���4��1���������r��0�mR7~�"\~,Y5��2,/3�?����c�e��Wa	�
����T��X���8D0i-����A��C�&�T��
�r��}���u�������+��o[}��lH�g:��[$�����������5�u�������_�~:G�Zx_;_w���b���/h��J�IW����������u�]{��87A�g�K��b�Q����s���?���o��]y�%�o����`��0J~.�y
�L����5��R���9�e��_li��!�����A@F��.O
��?9U�@y�i��z�����>���:����<����<��L���������C�):�D�G��u�B���s��$OH�Q���/Y�gk����UW�|�^z]��v$<���3�'A�>�2?J!t�}�i.J�/m�L�Qha(�U����=p�����({��'�PI���>�q����LW�&+�Ch�4�����VN^����x�C�z���r�^�x&n���y\�*��K����bL�����k��I�H���NY��a(�>�R
x��-�}$�H�5��2;I�P��}���h.����/�k%��	)��-�a�,tae]��>���D{o�W���"��6����[��!]�"s����=��E��_$��I��6i@���9W�+5Z��4���jf%Y���D�I��=^������IHU��u�x�`�"�x�ma�^���;��a��1�-��)�.E��^}�_W3b0�Ok�B4Gu����K�������1���8�����:���p����(n�m���R����������H��r�c~SP) V�
�}�����Y*�+����������2�!�H��D��Y7!J4[[J�������c%��b_���o��|��?B�W*w��j��H��"<��q"�#� Ny��X��F�`�ze�V��!��J^���#���I�V�V#U�Vm�^��L�����Z��^u�H����.��/��$[}�^dk[���;e-Z���f����k?ST�����q�y��v��(�v�9��0=���xI�(��:����Z?b+��0:��V�Ih��W��R>����pXG'���{{Z���*#�Jfo���}fy����]�����;��y�~�Pq������!`��<�!��5��?,�(_P�%���}h��9�+43���[�W�,�H�~�q�R?�C��N]���W(�a-b��5��w�'���fu�;����VO��z:Sh�vgk���*O�6s_���-luU6,�h0��:�/��t�Z��`����L���$�^�h`��H�����Y
F��
�� �i2���_V�,�M�B��[����e�b�NM�`�cb��w,����1����I����b��Z�����7��N~�����2�
!�
�@��X��o#��5%!���������{'���U
DD�.���"BT@\�8=o�Q�����q//����iJc��o�K�����$q��D��g������������pq	�D��[�N�����Lz�������.�i��?��d�
��>���}P��Y��eO�V���������;&�I�&��XX��u�Gf;-Z��My��V\��m�0`d��t�j-�os��j1g3k^��2l�>X���u/D�k�u@�T����b�+$�'	]���R�6O+!?�����U�~)�>��\&v�����AX�t���6��pKtE�m9<����_��/����>@o���k#���C�D��j>nB��=�������;�n�j��^���G�x/m��
b��8�aOpv������������r6��Y�j�����'�dX�o��7z�+��\���	�Py�����O���/>����"re�rfW��\���v�uH�u��������M��|t�I��o��y&qBh�~��!�a��+ -"��-����>�`���B����%_��r"����~< �On���~1T5`�6Z�>��nk��;�)�w?�x�+�-������`k�0�3Xc�p����	v]����W��Ww|w�?��7�1�s&�)������o�K�W���N�]��]��t���wN�{����*�d~�p��t�Oq�%E�;�����n�?��i\lxe��E���;<!���|�=��������mi���>�sti��u���N�v��'$���?��������Ssy�*/n������q��<~�)/55��~��;�2���(��;����K��������7�IZDT}%�C���;����a}�oE���)�~0L�M���d������]��T4���������4����;�������dyWv@3�EC�q�S�y�#����nH�_H�+�u�9~��n�y���]�	�&&�?v�8��U�qv-��������a��&���s��W�./��^��y�GO��N|j��*������*Z���3+�����c���������7svg���|��k�k����4��������;����;+'h3����]e[���&L~���L��e~�|-B1���5��i�Z���U^���z���V�r�sRQ��Tq�Z8�f�1iM�����{����-k�)*���
;����+��p	�� ���YR�)s��^iU���HZ�$�?��]>���{��A�n��lH����S\�b0��tD�"L>n��mH
:u'|�R�a��������U����;8�Q��8��Pv���k�W����(�7�����WH��3g�e��|A�j|�ao<���J��1���x��"x�-
xwv��L7�j���+������>`0Kh8�u��A����uqy�zV"��|j{�l��i{kwj�_�ur���a�sC.����U��'E3���0����U?O~�&�k�n����]�E���ej�Q��|k�n>\�8��@�8����#I�����xz��^uZ>-a��d�	��Y9p��Ix������|y��~��i����=�Q_���}����)�}����w����^*���5��e�C�"
�Jc���p�v��CW�H��� ��x�9���\%��UO������8v��|��$�������5�y���������>���eu���^�<���[���,��e�����
������F�%�]=/�`��Q���@��8����BLnt��E;�!�B���	ky������W^�|�a�$��`�.�s��q�[����Ba���M'�eO@�h�cW�����[����zF�m�Z���6�dKS?g��SWOB����Xk����X4�OT,���q��`�����%�{F�'".���QqW��`(�wBqYW);�i�RF�m�t@.O�`�K��,��x>����|h]����#B�lO���mQ��6�f��N`�y���5�n����$==D���������g"jD�@��Hz�^�&���f��^O]=Q#jj-�X}v��E��<�������F�]�����m�AE�K����Qr[�d~�L�y��Uw�x����}&Z#d��K�{���J��gq���C�I�>�i[�)knT�m��27*=wbry"f4�������:0�+N<	c\n;�����N�&\���=��o`����f����:L-h����s�]�tlr������U* g	������0{$���x����J�;58��TN���-�r_D�c���L�(�Vlu�i�U ��x;
�V�]�VBbS�P���+�h��q��O��lQ����u���Sl��ikY��`{��-��{��A�~�������~d��~I}
�"�����{|\�#����_��,��
6��	�����{p��g�����|Pm�<3>�|?���1����O��V����+�<^,�2�F��@����*A������C�d6���$�S����y�EBb�H�H���nb�C=vj5co�I�cs�i��r��� K���b�4�����|������@dklM;a#\��H+w��I
c��i��@��M�,;�cm|��!W�r���
����[my<�E�}t�i1h
�GE��OX��Qp�AX\���R^z�����{�!��U�@c�2�G�����y���u�u�"�7��G��1b]�7��wY|W��W�4
������!r�mR��8���u�vWd�N����2����6�x��Jp��H���?����_�������U��3&[n��p>�G-�����?��ay��?�l-g�����F�J�V����=Ni�<����i��!���U&@��g
O��Z�=��C��8:���m@�p��i���nJ����/?����4���[��1B;���W:�b�����/�v���cB [����_d���c��&�G�Fw��n��`FOkQQJ�b��*V���-����7�g��)X���h�����e�*�E�8�pP���I����(���2T|�D=+Q.j�ZT�7<q[��$�E��J��^��c�C�(U�P��r��V|�&�_E��?{�������:��[�BS�����_[���{c�J����4����fb���+(��")�+��M�{Cj��BH�7��-�������}~�������,����/�t�^����.X�����B��a�S���;fpWA3�}0�k�*����#D��e�LN�N�6�����^�������
�B}���en���+�����E�)����1�;S/k<�c�tw[��������ZKd&�������^�>����t�u�We����w�����ts���bs���\�`��o�up������;C�7�X��������Cn26�<ez_W��e���u�e���K��u���-��F��%#C��|�Z��`���*�M��U8�"J���kJ�-
���.���b9v��:)M<[F���)���c�����:�{�
�����N*/�}��j}�V���`3��k���(��d�M��=}bV����$X�=��aA�_�+�� ���>���o�����~��r�>|���Tw�"f4����x
^TW��F7~QYw�H
�y{�$~�%8	����|��{m���F�e�_Y���R����;��j�����s��$,:�)�lwy����u4�f����c+e�Gz���W��g����������@������[l��z��p�ZY�5�
�2�ae���}��Sh���Y����e����q�;g9�]������l����!�gA�6�O��I�ox����Y��"d� 7���(�N�|%~>�$���� �����7�x|6�2���lXLNc\�5;{��H�JM������B&0�8��"Y�i�������9���B��cOG�8�v�0<S��!m������5����|��k�~j��4dk����m���c�Yh��}�^���R�GG�v�a;C�8�`[W�v���������*��2���`�����]�����a0K��Tx�`������`ofr��W�W��O��8[�����g"���&�
���q���mQ�a�C���7l�L���9d�d
�U�"��!��q��h�zU��.��;`��Z{M. X�\�����z��&�,N,\��s����v�V��5��J���3�7��k��U�d3�������q�cm ��j|�
��$�����_�_Y�;QN���������1�f1c�Bb{L��5�P���e��p�d���o�m����[l0X�x�fla�>��{L��LUD���x1�=f���[H���7��i���d��jQ,&�^H�`�C�?�i��x���;U�V����a��z��.������kO=���e�77[6��N�D�+�Ye�}k!v8���aL��u]���\�u���
��ke}��K���1���a����`{�C��>�b����]�dq}�%������>����Kh��o}���a�!;�I���0$���.Cvz�l��ah��]�����>��,����q�cm ���vdG��dOK�F��>�R�{���Z�fq}�e�����>����K��1���a���]�q�	�����-���3eb}b��aW��c~���0�+�.�2��0B��a�W�]jeX�VA��a�W�]jeX���+�P,�3�u8���}V�!W\f������&G�3Q���S����Z=#���k������z�������sJ��p#P������73A	�(��I������@P���������N�q�����?'����������4}��?����"��?�����Dz����<��.\��|w��%���dY��N�9q�;�����QQ����y�wWO�O�ZF�@@�w}8����|�!9��N#(��yN!��|�}:)�E���YNC{�n������o�����tD��
��7�wQ[�I�\6������?��-�p."�����
!Z���R@��D��3W��{yKmU�6�Kd��0��|��\�K���������kD�`��{���r/m�l{4�U-�c��6�D�[������c����H�k�����w���6$E"\�b}[��}��������������|~��Ne
�8�����+�0�z���	�0(�^XJ����b�����NW�u�X�]�[[�����u��PY�j��]� `��@����:A��c����p��H����8�7t'�%�U��
7��Xo�:d���e<��Xs�:t���u���Xk}0T��U�������a�k$�X9�[�XobOd�u��p�������N8XQ��Y5�=�*)�0�R<����;D
"�*�G!�vg��z	c���K{��_7���r�Q���;UL�a��x�����K��2�lQ,VB����l�Z����U7��9j��w����j�]+V!��j�F�vj}��Uc@0j�2x����Z!�e����U���|WY�)s��"�%����>.{shO�t�}�w���EA���7��)p��8�b���y1��4��m�����}�|p�?��?������Yg���� jeN�.U����V�������M���i4�(���4�qs\�Y��\H�!��a�_�~	�������7JG��.�
^Hl�F2�"8x�b��Fx�FX�y������%X�u��))�����C�j-�rS���G�������-��Y��,~xs'
c��/q���tO_�8Oo|�o�k��\����oZ��c q$�(�b���lXQ�&��0��q;bX��z��ur�^��������#��6X�}����#�G2���slCd�L6c>n"��k���f��Y��>�z�{���#�9z3�����(e�Qm�^�hm
R��"��8�Bq����$��5���F�j��J��d�V�}�Y*MR����\8�������y���XU2��N&���wI�;��p��{U*���-�56���K�Yoi_i����B��:�w�����=����s�_����|�/f�Ib�I*I�����$���$�$
�Y>s�$>����$��{)��+��N��=�-F��Y����}�_;#,�c�*[�����[I/��q>]b����t�X8�a]db����r�>��9v,���.���������>{��Z��3������C�==�m�IE�>��|z��?-�?=#��jr��%����OK���L�����X�#hB���9�* ��nU�������F6>��* kC��J�?|��t<;�S�H�B3�����~�Ipz�����2p��-0{Ufr�&%�4�E�c�ZB�. mN�l&�b�40��"KfU����G�}�I�j��$���Lk���S^H�;�pA��g�'Ny
��t�~�><~�=� �.��������#Z�h�CC{A����=���1�����hU��E'������Nm�i��������,�pi:\�U�.�"W�"1P�(�%i��.�'�
D�x���YU*�D���Ym����5�T��� >�M{�N�d��*�����}=����4�4[�OOs�5U���g���x�><v�9� ����E}��*y��3NL71��eS��&�U���J��]JL9����bH)gUX����^'NvtL9{I9+N�	�r��V�r��USN��*�,�C����E�:���R�/�!>�
��`���`D�z�:��������g�v�4��_���]�U���U����������*U��w��X���qF6<3|��	�"���)#�i������,������M����D�c9c�+b}�����M���:�s*��o�r�q}�4��?-gL��_(�
vV6�5H�b��>�U`�t�
������H��nD�ON����&�~:f��!
_���%N;���S@���7���~���U�c��.���&����uW��i�t���c�Jar >;�_��3�>��������Cc�@A#�:"g�b0�rN|@����P>�O9�r��)�S�&����>�)�s��:����:��n�T�u������f���� �k����&��c��C���y~U�O��o�P�o1Y�����2�#s;�[�U�M�������&�A(��BE��X���>��-G>�Pn�Be.6s���U���Q�R7���=�1|��{X��v
��FM�lk-��W����	��
)�&�*�k��W�+�82�����\��D>���(jb0�r�+T$�MU��g�)�Pn9�!�rC*����"g�:��a�9�����=�1|��{X��v
��F�l�#�@,f���w����)�:�)��3[|+C7������[��@���6^S�],1x[������nS'�k�4[tc���pB��
�EmA[e��B�������l3{r�j���R�!-������y���Bd�uu��l����D�\F�\��du-���������Fu5w�<|�������(fbp�v�+S��
U�Lj�h��C������T�LV�s���1�?L��[���`������T���n�C�� ��g��k0	��A��48��<�-Z�q��Yb�rs��zFz#�c1VQC��k57���x[Xw[X�|��-��~zS\��i�)��,�a1������+w���zW\������G��n��>*LT�[B��Huk�cb�%��>#�< t+�:�
�x��0�g��P��M�K_x����Z�g�
P9V#�;��x��8�6Yo�ouGM�mok��������xVw9h�������i�6V�su4�Z7�n�q't���q�f���#g���/Y'f	���d�
���E=�X
BZ@�N�������WZ�T��Q4V����	8�U���k�����%������Z�>�v�W��VP��=0X�������jC!���(U�j��J�6R�Nu��9��0mT��[�!�<�5��#h��l+���f��8�E�{T1��b���"����N�m��{(���,WT���eq�o�B�40#d����?�q�S�qQ���l�c����lhF����J
��-dl862����)I]�;a�Plg!��8l$k�<�b����/�*_�����[N�&%��aJ6N�8YN�;'��%���Dw �.8d��0�9�dHI��I,��N��>���g$����O���H{����('���v�<������G�Pw���jT'��:|����DR��	��r�����4<�(���OLF�MP��(�]
A�����m��8�� ��>���1@��(L�g��&Z�
,��E�f��T�d�B>��G�^PI����(
�*��vA�b�uw��������D�~U�tH�G���:�o��9���?~�����������~����Q�C
����u|�+�-�n�J�No� ��u��E��d�2%�dd��]Z�T���.&��S^H���%�T��F;pv�};)	6\xN^Y�MH7ag��0�����_�]�B���`�md� �
z>Wp��{B/j�fw1���_2�v=�L�9XzN���4��E���4����[,����Q�9��$���..�X��>�����"^G�
����?�m�<�������%���0
�7g�M9�mc�]o�1�d�V�����q*):A��]��DrHI��"jD]A�T�Z�	�L����zN�!q������T~m��;��tM�y�v�����\R=��I�����?����3h�U\�r���pG����V�6�hY�p��Z��9���)�=��,e;�|�9�{��v��q��F�J�RS��d�"�y��	�p�I�`��U�=pe<^Yi[�@��V� ����	6%�$����y�����-f|���:�5��y+W[er����'=�'e9���\��H���5�X���f���}�g�����H�H�N�H��^7�o!�s���Z���R�LO"F��"�}�n������ M��=.E�&Lb����}�j!J#�ry]�Kb]��(�J�<@Z\iZ���W
�����8k�����������<�j��X')R���tx�}�H�i&�z�t���sc�C`N���$�r�:5�$�����K�������S����:[���xa5/t)�aaU��4����8�=��g�#5I5��Sa���#�;��0iR#�<#f_����H��6N��OG�q�x���'k" =j���G��W��li"B��� ~#��
�w%�B�T,�a_����t�Q��F����}�d,e��"�v$��7���i��5���	���@t�����$l�u��G|+��X:���R��3�<zJ�/���K�n����.�FJ����<���A�ml����3����e?������M����:ln#�F��~��;�	
d, ej<����Q��>��v�45=���gB��=F�EN�T�N%
@���qA���.�������32-���:q��]�R�F_��)`��'r^��I*j����.���I�K6Ny���W���������/?�|BS�I���@��
����v/f��*�3��+�����?��O��In���d�l���mA�,������'�48��u�������gl�kj�ofH�������R>[8�z%Z,��o�8&������~��{H$�K�d|��M��%���C�k���^,}u�)�Y��F�7:������?����<��s\��nvYV�����$A�HRE����t� I>!I$� ��I�U����I�H6q@��T$���$�$�>�'
�1�D�*�M�$����d���D�)�G�����Z�H�!d��<DV�t���*��V�?�K�K������.e<��L�rV��%�l�-2�R�vV��%�l�12�r�Qg�,�eK��	�3�z#d�,[j�L��k�!Kd�R{d��8���#dk�m[
��l�>@������|DVS��]>�2�u��i�K�`:�����$�$U$�!����rT�	I"II$�E�->��������[�o�rT|p#I%ISnI���Qc$�$U$cC$�K�VWt9)V!�d{�k4���z�E[����5E���xw�������m)';.>��eKS�����k��eKSuFK����q��Y��4Uo���c��qd����C|)��^=.�!�������������ia
��*j�����eZ��lH��H���f^[��C�z���Z��t�F�����W��@�5�;y��%�8�
�^jv������ Pz�K�Q����qH���dhk�y�@5�;*�%�������~�������}�p2��[l���d���
�"�k]���/
�"�k����\�!�@��nR�^�+�@��S�^�5�@���S���
����v�&f�����x�}J�$|!��1^��T���X]*]�;H������~���t��-�l�X��;g������������)G�]]vX����\��Fg�G��Gz#$���@9]
+P6d@��h��P�O�<s�N��X9�.2�s����]E�������L�"�F����N�f��\K�����(�'�5*N�D���E���DE�
0"H�K-�K�����x@Qqi&*��,bT�%*���h$*��2,Q}!�<I16������������F���0N�'��/DFR�F���[N����0P�<@j�h��G����F��f��H�-19y�10nd���E�5Zb��1,��H=�R�����s�?��F����x0��A��F�Ly|��}�����4#5�e��MW=�F�X
�5Ze��{������HD�4�d���$����4WKL@��h�9���>b����&�DJ�����kzT�d�)r������=�:��
�1@J�h�y��{�L/����" Aj4�����O��}�c�$G�V~x�n>>f�`]$H�6�������r45ZdI�8�i�����u� 5f��c|�#>�-��9N4�g��]��3u������j�����a@��h�)�a��:�V�<����3��J�d���H�m5��1T�*�i&Vj��`��p/�,a�:����Fs
��GX������DE����$�0*��8���"H��4��{���u1@J�h��q��q��`���
���h4��8b�����7�Dnh��T�E�#���8������8�h�y���SD����j*"j���1"�����65�Z�{���
�Y���-,)��`T4�2�6F��H��,��1:��[�����FkKy|�9�8��x�����\R�F�K�$0d�3���>�r�65Zd�I$�x4��V��I�����*{
���ql�9�h�)���f��C*�7]@��h���F��"��%��
H�-9��Q�e2�����"�D�R�U�t,{
��M$�$iR����!J��r0]�& M�����0�O����xC��"�&���^�d��a��j)N�&��$���$;>��>�d�u"
d���R���lC��P�LgJ9H�z-������O�\���R����3j;��#o3�e���|����N�#��4�3z;�	$����vY45���������M ��)S��Py|�=J��W6D��k���{B/K��R������I��F���	`��%\���M��I��B�S���(�q�����i��$��U�<>F�~���/�l�����a�|H��`��\��j��0F�#�+�4@@��h���8'�K��������#A�R��|)���������D����	r���A���)r�D@z�h��G��K���e�D��FKc1:����`���Vs�R���cdO1�R�fb�F�
;z�3FI�Q���F�X%�25o��c��%R^�Z'�L��h����y�?`�4.]WU7iq��������s9���Z]���Z-:�)`�����j�4�mj5�\N�g?�siq�4�wj�����0x> x��.��S���|6{
����%&U.5�~��l1^�9��V6��@@r�h��G��G���������s��F��q0��j  9j4���cl�'6��g���F�S����|h���$F�vp��F��zD
�5�pI����|`���H��5���	��5��8@b�h���������r(����F�?:��^b���e����F;�:L�FG��`�c�$I�����!{���!  Aj�����c�G��x0R�Q�=��c/��l�2�fb�F{�>X�M������7�ep�& Qj���N�dA�"�>�f��F�-������|0A���F�?:��^�����X��Q�}fbi�|6��uh,{�h��G���K�����uh(o��u�g���q�L�c�������
�*u�h��(iX�4JV��g�L��Y�&~�4�^���r��J�
H�:�����eO�ra�J�r�zy��#e]$t!��L���H�%?:F�>
���i4�S�����h�����b0#j$( Yj����e/���������~�k���,'�/!��d��!Is����0�3�s�������p����I��Z�H�=�%��*��+���	��H����$#����������������Y��"t���Md%��).��L��2zu�<�w�K��N�������cN�1�,�\���������N����$����n�RpA�q�Y��!�8l,��9
�"���S���3>�![,�K^��C��o����:%�}U�d�2�H����2�����:?��!��0�������$�L�"v��B/R��V�w�|�$�%I��`�j1a��mg�&"����TBuw�l_$��(������#�]�����w����8�|NE2����������O;���jv�c�A��f�����l��\�o6��Z #�s��;�E��K2*��E�����|�G�5��b#�{�INR�u��&{?��s3�|A����H$v��4KR�{���[�~�Co��@�3�D��)"��Tc���QE	=�:/�Q+�>���o��0��-�!�]�+8?'1}��)%/!��2�m��e�����7d8&o��I��@zWst��~��LA�}��@��j��/gsm���n�]n�������-�?�xE���D�����n)���^����xK�`�T��%�����~i�1s�$��u�k�H�������]�$��A��1MY��S��Hb�d��$�$R���l`���Ly{�?$������
\��xRo��\�&p�/K�����I�~�
�/:V�i������7��F����'��i���|�X�"���H����9���Q�.���~���"���^2"s~O����Bh�p%�t$N��f<��NF�����P^A���������M��[l�T����ch�K����]S�`>q����p�����)p|����o�]�%c�
���D�}����2�c���^�)
/���q���Da%c�
�;�f��w���������_�K��8>��Okp��1��[t��|M����8^M0=��q�����	��N����6��e�����z��j�iF�::i^�5/9��i���*��v�b�^��l���Z'U���������]�4��l�s���D�63�b�7OF�%����[��C�w��^�I�n�m�m���N�����z}���z2�+�.���g#�mU$�W?����yH���H�K��0��b�(O�����z������$ �����!T�*@���,n��@Y���M�tF�Tj������{�Z��?;�7�������?���#����O���mG�r���>#b���L��O��$}c��y�m���!�&YWs��:O���M��F��V�t%z%��}�O#>yCC�i�
�������6�������{bcG�Bm�cBaz�iM�}	��P�MR�l.EM�� �G@]J�����R{�*L�����RiH����>��t,u�"�S�����q��+�J��S����L=)�"�b0���j6��i�����N�Ry@�h�N��ge������=� l�VpJ_���������M�������i��iw����Sc���L��'�j��r����g��r����q����-v��a>
�@�fHzsi�'yy���\^'Yr�*(/���+M�-����h8w*����������P>"N^���4]�%��yl�!�������b�d���'gs�s��	��o�����NGqw�,�v��/m��Y��B?���9+�O�<9
��wH5��b���
����I�/ ���599��|Tg1�$;�"�G7�[��w�70S'�)v29��@�JG6�x�w���9fl]B��HbY������+3��V�������*H���u)yE�i���6%�����s��.��W�<o��-�bKll))E��u��q�=
��8%QlZh�'�z�@�;������`�m}�	��Q}��9R-S�@�|\,����0%�R$i��������>�����^�'zs|F���hh>�8����[#���'r�	-�!BDXCXc	QR�?1x�#D��V���8�CD�����@I��C�aR���)h_s}�$AI_;~8L������P���|H|&#EECfI�:~Hd���\J��0]G��A\�Kg�.��(��Q�p��"r�s������x8$i^k��s�����o~!�c4�b�$�G�a�uz�,�Y���]����j{v�m>I9��\��;VN���y�[�HD���;����b�-�������@�w�p�1;D!F����\�����������V�Y��
�j�$��-L�;�������K����:�
�W�aY��������T
����v���d���~�r�aR��Vc�����\/P��a��9��Z[���
�����s�`��V	�H�u��qW��$�s��Z��A���^�*����I���T��.p���b�{U���VN.����+d�S��|r	�k��b�l�^Q
d~�9�-�k����U����+��C�}���4/��e����_� M��S!^���hl-C�-�+5��$��N^�����$B�Jn����|�u�{�$�J/E�)+�z����o�u�k^�kV�Ep���d(��n���7�3������<hG����%j���v��7�SF�sN��L����e�a�������/+���oQp����a���A6��C2���V�h���*K���ub�. s`��S���D�(Ha@R���Q="�v�_����������j��x�
��6`���������_l�'�u?'H�����+EMj��:�
6�/��j�����m����*��
$��}��n�!Mf��l�2kR_�Y0�:G��x���s�0^G��6���K��y�+���a2��p���X �x%��;^��1+��l*1���1=�CO���R^BP�<_U�*3�F�����CD����!���
�H�X��C^�	�'���Y��9�s������-�w�Eh;��i��u��,���K��</W`v_Yg��%��6L(���)�vAJ6]��_����Z��`��&�_�6����ds�i\�d���>;�KF�S$_<�'����`���V�n�0��ig��������y"�-K<n������Xm4��f �1�F����,[��z3r[%�1�1+X�;���^�Q�$�c$�&l4����!���;
k�W�Mob��S �����R ��a�����i^� cs :6�/���<�������FA�y)3�����-/��*[�.h J����LY��6�KK;�b� �~x����-����A�c!|��+�B�l����`W*�Q��F��'�L�Qr�E�����:�;V��
���8�����H��Y�Z
���&��}Do%dZa�I��3�;�d��[���Z�V�z�#N�avZ���*�P�$�9@R+���z
r���:��������1��@ie�<@���$�=p�$��D��~����ibJ/a��iB�s
�]A�^��#m��gs��$H���O~�@��5��3H�b��R��������S���F& ���	jJ�/�����s[� 1��0f$�zR����.�(��b���)���7��a�f|>�����&-6�� ��	��~�������ZP@j������T���������`+��Z�w?�m�yq����������PQ��X b%�f��)��luko��K����K�����V%�����N��Z9l06�*�J�J|���<��+���aK���i]j�)����q��\��K������_`���,��N�$��_87�@��i�3_����=]�f�j���h��_��������y���=���Y�,I�������zvw
�X�������K;Z'�87�[�������>�=��cJJ��O���YHVn��1�!���4�h2m��'
R�D��D��e�z��h#�7�����sS��SS�W
��j� �4��u��n�7f5wf52F�7�d������������3����mP���������aMM���
^xqU
���������v>/� �p~�pSIL����o�c�s�Do���|*�����Wc���&3�-1���y�u�������-%��5�g���L�$1����t�Ja�U���}SS;Lc���0���=�	�u����g���z��![�~�|�g��i�
I/������ku��$}"��j�P��x��W��d���1:}�F;��Q��gF"B����_��%��8�o��9�����������w��l�������-|X��bebN3�A�6c��u�����Y��g�=�������zM���x��Em=���Y��|��mq~������oam�/�_M<V�%�Gf y�X�!9I�aL��������L��a��F^�����|��_l����D
r���W��$��D��$��r���I�����1��E]��{r���z[�y[���������Y�=1	�N��v�i�
=�7j��-��Y�nks��%������|jE���'�IH�q������S4�@j�����h4�Q:G�����$��V(b�z�4
�X�v�&M�6�kQ��<��L����u@%( �6��H�����f
"���K����t�;$|�.�
J���o�b�`�Y:��:��7�j��vj_�m�$����
�����g�+�lE��(��Zn������>~��~�p�
�^3����[\T�R��M�s���^�!��Z�u�H�bz{��cN�V&��S��j/��?*��0���M�.�>�<�&O�d]�n��]1a�r����	�b����t�@��� ���r���b*��D�eSEmHiF8�W%�*�������l:��-�t���k���g����d�)�����=��r�l�kxS�����E����/&��]@�]������
a�Z�4hy����H[7������y��'��[&�<��0�f��H��/F�iD�S��!C��fW�Y���io�j1
[����0,��s����Lz���a��"qvnc�(���6u��r{��_���g�Y	����X�|wl�T����sB��-�fw���S��)����Ni���q�:�ys1�M�>y!�rZH�MV�vC�?EZ^~kiFf��������*X;���r.��t����1#��?��)�l�,��P8*�������Ta.���K
��e)xdj����;L�/�TW�b���D'��/����U��5��WF^��J�2e�]g�!���:T�f�jm��-�DE��DU�|f��LT�a����>����t���nu$V�g}�o����V�p$m�/�T�@&�W���=�*;��������se�rCA\cQoGK���C
O��d��Wl�O�[i��(+X�S����j��LZ�N�����N�a���0O�!��CV�����B��"����x���kK.vx|�a	�G4Y���h�h���*��`)s��$���^_\l����x�7��H��@��^�
�W${�3�K����^M��t���
�0���BV'�=96����q,}H�:I7�n;��6
���p���b�w���6p^�� }��um�
�T���la��^���e/4	�s����*g�����M�nJ��o���o�������'�+h��O�k&�7��
H���\�0}>u��Z��@H^��
���8����y�@%�n�<c��8	�����p#�&_[0P�����2���C�d��7%x��^����".8���S��a�_q���S���k����w�:���c������A~�O�G�����'���~'��$q�������ok �IF���������$#g��b�~�O��G�Z���d���D�)	r�*t������E���m�v�<��kg��f���4w���@�W!�mr����8\������d�#���q���Wlei`�z�Q��W��c�z{��������]������c������.���^�l�zS�F�;��6/�XL�f���a�GY,v���aH��y���1=��L����N����G���K���S�@����"]�����=�mi5:���l�%��	~�-9H�N��m9��DI������#����t�-��U��A����C	J:����� l4�J:��G�*{� ������%�j���C$h���4P|XO, ����*
�_D_U���h��4����}#��as�4�;b������[�v�����r�p��N��������><6�4��G�SY��Oo�xx���'|O�NJ����{&���&��&�A��>��.��Ev+���I�E�Ym��V�����d{��=���4��g6�_7�!�F���-!������X�\hr����Q�h$8J�����>=�2Rz����;�����+��������7q����v�F~5~��g�d�?�2C~5~�}�f�d�AA����<|%c
������~b��N�	~*�c��v�4�_b��M)��i�*;���6b9@���v���$&��$X�����\`��D���}�)[F+��(��F���RE����sA�R���~�kH�m�(��+0 ���%��k�?��5����QTtK��1/^�,�I���lk�������u\���-[�xs������*�a|Y{�� ����8��9L����[X�l��*����j��=�������N�8�1
n���C��U&PkmvIz���y"�gB�b�����
_�O\l��� s��I�
I��X>^�$J6�[�����v����)9����+a]���fv�h����b�f����
k�*Q�����p��k�p�y�&����8���8)����(	6�������H��wN����sw|i���u���Vd��^���5�����i�P�:	��9���tx|��e�����(U����NX������}(
�����ax:>���Lg3I3��]�rx�}:��
�I��nY��4�Dz�j=���1��K���d�d���*���d_���A�D&9�����D��D�Z�F�����Z[��|�s{�
%�l��4�1��+�z~r��Z���]�'%k����3��1�}�N��~�:3w%��\��^z!�N��_�����������!��sW2��x8!2�0���p��+������C�I���dF������%��(��:�37��tp~�>����)�]��E��Y|�?SzD���e��#os\���vY���2��M����C��y��N3�w�)��>����P+, �����W������]�P	������D$`�_�5�59[������u+���;����/(s�{3�	]���H���?���a��O�5g����UI�h_������2����
�HN�0*��[ ���z�u4:-h����D���3�����~�5H
x�W��!�7����'�D�Z2EM��8&���r-v����S���J�VN�{k��FT5�k�����p���~��r0*b��TO����3��wU�m�C2����n>Rk��$��/�N�m�'�%�L�	X���t�Jl~N��`�;�Ku~tE����B `W�D(�eN�rg�8q�;���8I\���|�H3�j�b�#c����9$���&p�J1��|��_��jo�bl�n����GDZ=[����������8�����jy��^�4��P!BO�)�����z���D(��z:�#�!�����<�k���������Ki=;I��?������,;l������k���FEr���>��jQ�Bm����>��p�1;D!�b1:@@����n
$]�>���w�F��=��������w�,�c���Y��Av�_����T;�O���A�c�p���v��H������fa����|g�|��_�m�	���d;�:����F)��&y��1�[m5h�FL�O�MnA\�������?�U'<��O^)�u���zM�Yl�7�P2�L0w�S	���~�~+Y�`DW�@�^��<!�0�0���0�S�<j�8��������G����I�i[�Z"�pX��C�z��x���;�����.��z������<��h���)��S�l�����:^\/����am��%��=+������1/A1c��M�;�#�-��5��.�����k-���
��i��i_���	�<+m7��s�����-����-G^��m�q�~������
�
�X��b)�Y�;����H�	)�(�T5!ls���/�C�g�/:���K��-��S���1���$���=����d]`C�|��4a!|���t��p��""l"4���\:�Mq8\o6Xnq.]��8����
,�8�.�]&����@�Dl��[j��|��{Yi�r�FZ����tG�
B4;%�l��0�b���}����!�P��x�R�x��A���(�X��Q��_�C�,���;��|�l�,��t�.�{��n� ��u����|��#���t^��*�B��e4T.��x6Z�Y��{��y�8�&VU)�a���������hQj����k�g��e|�?Q]�����lR��w���y�U��6�,��U���8�`���4%A�3�|�~t� <��^s��4���S�j��Z�yQ�b�=%�����/$�l�� �>�6S�����C_F��9P}��3G���p�S�JO��r.�"
h���4�W�0�k�
��������F�SFX<bM���t.]����q��qi��5���J���V\X���	��c�Wkj4�A�������|$��$\��[��/���V�P�i�,_N��L���t=#����4P�����^K�a�����R)).M���D���%��X��y^�������/�LwE�]���0�j�@�����[���=B�.�g������o0�!@��4_�)��,������
h~������_}�vs���B�XX��a6wk���~�Y�3!�������b��V����x<�l.>�7]��*Z��x��3�~������/�_�cu�9I7#���G1M^��_`03..x��-�����Sc�B��[�	r�e
�$�����j>:/�b�EJ����/���Y��2��W ��Ok�;����?��3t�]�+"�^�.t����g��#���� ����Y��E��8;d�WpZ,��#L�C1�T]o%�Kt:��0��)������QQ��P�D�x����kA��J��:#�?~�9y���??y�*{���nQ=5)�hVV�?�K^�?�k���y�>����BU\}�
��K��0�F�Hx`����/x���|���;E����;���z�l��#i�&F:�b�+������Tv�[��oh����b��=*�uKS����rjE�����
q�0�������!]
�q\�g���Br
�X��M�$��H2���f��!�A��@��*��2�.���i������2�5 �TW��\U�p��b�@j'M����wC�#�&
q��~���5��P�nP#��Ws}�N�����(@�H����D���Ib�������)F������8���t�����?Y�WvN�(��+V���M���g���Z�l��|��;���y�=
���v��eJ`��~E�&{���m���iUhCd@��|:�FT��^����~�fB?#*F���
��:�:��x����Vc�t�_���H�c�j�:J�0�N����3���AUG���Zi@����/-a��~C��C_	\�tM��d�x������?���S��` ��G�Z�j�4�_Sk=Yp�3����1��:��j"��fh��V�t�n�j3T��u����h0u��d��3K�'�_
;Y�=U:��D���L%�������jQ�cx�W��������"�� |���������_��\�J��b���
��T�>�����l0�#c��`
��0�w�~�O��~���%��?�m�k�\��w��������\I"6�/o�X�C���|��X{�a�)x*&���#iY���M�*5������J���� 3�ZPU`=DA�X+[�a��l\�@�d�Kz��-�����0oWmp1��{�dEk���	��a�L]m�)�f��
	H�bo0LX�)X�
�����T����s�zcUr��3`�j
Xi=����=d�^\�R��W[�K4�d�&{i��K�Y�����]�W���aDZ3=_\�E/���b.�Z�Ao��RhT��dO���96�7����q�It�K{���[�����V��Z�_tl��m{�B61�u�6�:�<��}�o��*��-VO�E��4%qNE� ]�����i���o�����.�a�[���%��Y�1�-2`�
;.����M�)����P�S���&�����6L@���`29�4�fd^�z�����R������_����?�����%* ]�:��pmD�.����
������������f�����t�nK�������:��,��,�l�R�&2����N�6�g���ig�)��s��'f��d��O����Ew�r�Q�Y�S���l����ee�)�����\Y-�y��G��u�"5����X�1�����co�>��X��S3�^2J{9�������}ppr��;A�o���G�����8� L3����7�<���se<-�E��~����}��&
�����h�&���9�;�C����O?
�b�h���1?�����L��Z�2P��XUm�R~H�eN���v�BV��<���[hq�����{�������Q�*���U��D<oE��A���o�~{
��Vf5d@����"E`�k�������5����i�z��q��<���}J����r�2�����]V�lMs��u���@�^����&*��I&��M��q[n�U���3L5��>�72��7j}���a�q��lQ������J0����<������P���������_L�U����������*c+�=}�2�Zn����P���3x��\!Y(B/k��f���}_���D���0[�
5+�z�Kcq{��\��VG���d(��D"%�����pH�M�|����/:Gd��0�����>�cf��U}{l��V��Mm�X^�i���������pswa1��\a�g�����0����+�Y�4�j����j>P�1�Zg�b^P$����T����V����/���q����:�������:X���k}�����~)d�C@�*OEYF�0
���m�x������Edu��/��{_Z���a���r���&8������ +b����h����������bW�d6�(�i�9�+���3������6Y}V�f)P'WP��g(A����pT1w���0��=+�t�fof�e3�y,f���4���������%�2������4�0����S���B_���M�%�u��&x�	���m�����X����J"��+�k�q�zS�t��3���j�@I@',�����������9p_�
�����R�N����O��]K�!9#�E���w��64_���m^�TJ�~b1kpfW�^���e�5����?re]����� ��.�H��	��U�)����'�+l�5����w�5�z����|��Q�R�������������J1���z���3�c�����:O���c����p�
6g�'�W*���D�5���z:f�����n
t�����SO �G@'���O��D?����H�} ��A�a�� '���z@�&G������R�������d���N�
�m8��H6������F��X.������2l*G����0�9�0��?���1�afz�RT�F[�[���d�l�+��{��6��_W�	R�x:h!H)y�r�l,s,�`��H�1��R�Q����d��!I%]z�aL�dO/��=�C��y3SJH�^7��	X��ML�_��(��Kz��������b�OG�bA����[��wH��v =O�y���h�&4� |���I�Iq9�`4��@R^v���.j~\hv��5[	Y�����e�Q����C����c#s�N��{��4c�|W�lH�����cYc�|G�l��jI���1w�9w6�z2V����p�^_���w�IQ9VjC"��x���'���r�B�"��FF ����z__���,_��C��r�}���\k�<,�|��jK�4S�~�W�~�ye�0����g���N��E�s%�mh
�m7��?�Z�'�b���K����hqZ;)	8����5#�i��0��k�5�;�T�*�U!w�������*`o5����&U�����!�%l�[�j2����������I,�z��\5t&G��f�;Y������<����v�����#~Z����)��*4#1�:4)�]3�^`@����Y���4��}�[�y��C&e[n�`�,�p��w���j'V�d����>�A��[��d�����S%�Sx�������M����n��H����^����e�������Q������e.{�	v.�v�"X����\/�?���)�2�h��W����g#~���CE|�iX,���W�%����T����m�����>�s�|�����R`
�\l�Z'�}H�q���E�J5�*��m�n��t���}Y����N���@��s1�W�%�s�B�&��<������db�^JFV�K��m������k��
�Da)QU
� E�
��k�R���+��pR$� �
)%(�R
�!E�
����R�3u�1lDAb�r='�H	6���b���R�Oyq:�d��[k���`eO|v��r���`+V�L��J�9V�`lm�V�\���R�S�}���#x�����)��U@�Q��"�rTW��� ���^)D9�+��[��Q
<��D�-���":�x���y
2�qh9�R:W� ���	���j$�@]��^sga��E��:~QH/A��&9��d|���
������5���b��n����.l�O���F����������y�?G���/$eWv�zC�8�����\����S�v�_Q[��������?+6������?�=p��$=f$�$J�A�<��������c����Rsy�L%wJ|�E����t�8����;�!S~�\����/7�{����iV �����>=T�Hx����c�&���Er>C0��6?������Q�m��7�����76�1q���c�l&��7����������8�rK��[�4f���{�r+c+��n7�������Cv k������^����a/T��O��0���`���Q/tc��xH���e?k��*�vI�d�
�]|�~�`%�X��-�qyKYQ9Vg$I	{}����Y�L�]fr�87�	@|$�D/D�& ���"�i1�5�.V���(�f���X�bc�J���m��D;U������{�o�lP�*��Q�5�h����C�G��%���M��,#���y'D{��H�.h�jn��
H��
0��wN�#t_�&���^`��Fil���Y�������L�$ �.H�JK���>j�6.�y�����O��
,�������W����AO�;�G��d?�7�����B�sE��k����r��_y�p6��+����T1k�G����u����6 c�4-M\O��9L��-�
��M����Ep�$��l�{e�#W�*	��9�S�V�6�`�i�G������l�G<�?��,��%?�r��^b���q)�z�w�o���5��%hon����0��L:��e�Mx�.�\k!J����;���%K�Ks�r�k�$�I���9������%���Q������X���5�
J����Ik�O������3��&9��?����m�6_�i���	H�b�������o�<�g�g� �����-��#eE'���k�3��4�S:���:+" u�J�l����>���1_�,���[ Y$+>�/* �z�l�9@[��E��<��I+[1�>�q���gT�j��^��U�l�jOw�E��Xk@�l��"����>G8#�X�~���L6W=?.p���W6Z�����F|�)d��J��*�l&� �3�Dd�"{iey%H��k,Q$�H�Hp��q#S:"��Oo~���*���rb��V"�<e�W�~p���R/+: Q�V��
6����A� E�ek	�C>
��H�F���l���s���a#$^X@2T���z&��g�(��<����l�a�L��5�F��

H����c�'�G��(*������t<����=��}�lN#�M��.\�����W~J�Z����/$.6���DO{OR��D�M���U���`J�U��<bl`����lc���c32^`B\�C��>�@>���6%�P���"�f'�S�����hUZA���1��6��C���es��V�B�_zY(����
����->�`��G�8M������d��!I%�Y�gf9�f����?70����O�V�$/&l�?�*Vf���6���c:��N2h9XM?���6��Odz�V�����]�oD�?������u-dkB ������k���Q�\����E��X�^kd;'PM����Ai�I�2��`f�����9u7���+-�mN�m��?VE��;6"����Xp^�*��������T�@���vWUdYgU�p���X�����I�d$"�_/a�VY�-9�4��T�����v�����]�[����k��gw/(�Zq�B�9/$�� v�8���L�u'q�"�y/�y�n]vo9m��
f���1�e
�������2x���N������=i���e��m@��3�cg�D�1�?����1>�lc�
�p,V�=GI@��&|~&)��>6�sR$|adIF|ynd�'�/6X�H��\U[!�D��
��xlc-�B$�����'��)
���p����x����c,��x���g�*���
�fx����u�: ���!���`PJ�3t��c��:�/�Km*���*��;���s��s��?#��Y/�����: A�S���t����yz\��d��y�w������;�%�����x�ax9u��C�v��f��f�s��s�!N�v������*ky�����u�Z�
��Z�gx]M�f��������
�KWkk���d�V-
��V�kh�M�z������
��l����X��K�jo�m��NCl�.���N���5be=�m�}@��z��������X�F����js������v�X|Dx��U{����;
�����y_���2�tv�*�5*����jz��_��.<�3M%��4���,��F�t�O�|7�o�����l�Z(�2�
��[�$T�6�Kg�����#��#���9����f��8���k�>��&v�A��}KZx�� ��Qvd�r�g���ZW�k���x�ID:_~��O| �O�x�����Z����g0Lp���?}><��;%}�p�|/�~y�w�U�9�Vk��
D�����>�1ce��{���������j@��B�I�(�2"�wL�����~�N��'C�t6N���u��C���|�a|��_��F��^�:�;������
\�.� P1*�)��T����j�
����e�rS����n'-g)�� ;�7��]�S���1�����m\jp�=E>��\��G,b��k�h�DX�Q�n�XD�
��
�3P�XD�j���sP�XD�W5)�X/��N)��
���*\�w0EF�R�
���z�_W��'�b�bC�������1YF�m�����y[,c���5Ho6�\o�(���k�-%���s�#�B�������������`�E�nH���l����6QB��;wF���DD}���"u��+R�XfD���
����}�nR��G,?�7]�������)y��o`	c��X���;�k
�XvD���M�����H;[�R#r���T��������h,/"lM��K������}cIK�:�PN��6�}��S�
)9�$��E6�����H���MHm�_B��/���H����0^��a8y������4{�t�{v[d��+jW�|,�u~^��.�*�1��k�E'��EI.�>�X��I�)	r��a�������M�������N~e'��	����H���;L�y�����r��sNnj�����;�V����������(�Er|aW�g?����lBJ�2fO����r���2H�F���,���L[\��b)�Az�m�uw�m�������)����=F�v�~��3����y�A���iJ������q�$�����$o������F�sCw.��5�������W#o6��e��&#o�������H����!:n����v�M�S���A��C�t(��?��^��TO%[�����W��������������i�y���C���=9�/�9�*��g�%���=�����N����!U�1�C��@�Fg�c= 2�9M�z7��l��n��#����x\�)./	��i�kCZ7���`�����KRd\_�R{����Si�r��h=���<�����1J�R����+}��'St��+��g&�{�~:��N�Ix
�r_�$�y#��,�|t��@�c����3�'P�!��3��90�!~���*���?���n��B������	�8�c�+	6d��6s�%Qz�����������=�[���0���f�x3�U��Y�a/e�����kw1�Oo9	@`��t�B����f�%�5�gs��7��=�������w�P�Fg���A�������C����B'D�t�^���+i]���o��UX�sn]�]���������H��RZ4�a�����O�_�	�����Y���0�/U����5���;�������C������l6�#
;����R�dK�9�t@�{�^�c;?��)Avg��%���)%��0�I�q��=�b��C����
*����=�w�����lH����-z�����P���E�&��z/��x�:��.�,x���?��a]
�8s��M^�����wm"���.;�.!���&�^��1�*P�[�t��A��OK�$�(������T
<[BQS��_�kq��qy���I�nHJ6�1%� W{��jS{�7�}j��,���#������Y��� ��� E�BmF���V��@ �{�+���|��(Z%�{��W4c���"�UW�D�0~!iF�M�.����
|���7l1�b��y���	�m��{s�O\�k@�I��y��v���l{[�z����"�b���M��@�Q������7�p.�����gV���kh}���t����:�J���m��&���nL�S�0>&�L��A��n���"S��|y���C���������Q�K��=�=b�_w�Yl^�Pl7e�]���X,��e�e��XlA�=�qN�� �p�����cH�b;�:9D���^7!��+':�B�{���;��X�����	�C�m�;�QH�Pl/��ZI��O9G�J���196�XP��xlcba:/Um7�T`T���9*[Y��m��������2O~��K�V<�(���W��	�j1�����=����%�C}��!���V����NS�Z��+������/��� ��s�J�u}�vo�$���
��T����6������~�C�5��-�\�����e��[�v*zu���i<��������Y_d�T�{"WC�_��Wl�{N��\,�j�2I�1�����@�.���V����$�UD���k��*2��Wb;���?�+�R%�����e��Za���1�nm�;K�@��X#K�@B[�T��9�wl��mp���mH�L����`{k{�E*`����^��[�x����������j�%�4���If.{6y������A�1y�}���q�0�-�����g_�	m)�S��Z��4�i���Q��l�H�3H�yd����o�H�sH�;������7���[����7�B^8��)|	)���A�(�S�bP�
R8�5>��6��^o"J4]k*��tp�w�U�����V ]���������]��~'��u�\/�w=��6�7��%_��eE?{���[P`\Ex{O�:I7���[4
_��
���Ua�DWPh�����}�6�w����x,z/�2'�k-����Q��/6+oT��uQ�.��S}Y��� w,�m�l1�c�X��9,��	�/�~u]��S�I���e �/@`q�
�\B��������`��	'�W9��?�8�/otW��Ao�2f
wc�\�9��8�X����0������o�R�l���G��_���� �h���/�Ybv�@������Bl��I��k��p,��M���U<��X;g����w����X�b�g�I��U���|G�+��+�0�(�e���]Y�30�"X�b[��^�zB������KoT�8To0��x�Q�Gv�*�[L�
V���|>�Rl��,v�=!�
�`�u�J?
��mq��������l>��@�����Sy"e�<���S�a��u$����q��%��bZs��OY�Nv k������}]��G#��������9�<�v�X�b*���;��/���F�K��e9��zL��^���4Ao2�6����+��w#�/�����bH�G����5��]����1����\�o>�f#vk�������O6��|��p3rX'�4.H�>��OS��SlB���}��b������p��n�����XT�O={z��������W���}��������������7<����^Q��(%Q��&�������������yGh�6���Q��4!zb��i��_�~�����m��0�1(]ZUOc��
�-@ �NFB�x+�y���E/�1
�7������������������X_����/�8��q~�+Z�u��z��1�j$[��i�@�� .q�����_�!p������VN�5�	X�����O��E�M�U,K�e��=�TJ����,*M�y�M�<��@Yw���^�M���4�\V%UO]����[B1������6�"3���>������1t_��i�ns�'#�g<b���+b*W�����D�cA�lO?�q2*.�i�U���T�p|0�M��XoIo��FY����!	Y��;������b��r��d5������LV��<����q��j�Oz�]p����l��?>��L��k�������CJ^���L�!��3M�H6�C�_�;���|AB��+��'���:�(z��]��o�.?�yYe��/Twb����g�}n�X���<��l��6���������C0x�<h��W^��~����|u}o���x�t���������T�E�(_8���7y��W���)�tS�'�������Rl`�]���������U��>��#y��y+���W����(��{�����OAF��(Y���gz�fl-?#[�{W�x��W�{����KN�G$����U>C�:���8��3j�w���H�u?y�'Y����>��?��|U�Q����"�����?���������;�@K���9h����7�,���]�=_���	���&{'��%`%x�T\�D�b��@�_>8"��I���p����f���}3�\5����xo�u�����0k ��*��������B:�����|&qnaK�U!��Y	����IRF��s2�UQH���pV�#N�l�
�k�����w@��t#�
4��x�b��=������Q�T�����c,��e85+p�����	�^B������\�LN����,W��]��xo���&�����bsp�x��l��y��	����������4�g��hi*����yW`���W���T�P��q�	��\L��|	G�?�+��k�~z�?%�K�E����(J��c�<#|���UP��>��3����]O��f�>9���8��������4t��`t{6iye}�CZ@H�G�Ne#�i)�O��Q����$O�1��
q��L��o��z����=��9q���q���):��^=�����q�������K�F��/t��@����*9��H��~�-?����`O4I�HD����DO������~o��0��8�V�Iy��1q���7�9���/��^��n��W��;�w�������r���+�+��_�z�f�3�����c\v�>}�q�W�F�#OnOo���y:���5�2����(�������]Av���q8*������V�B��%|� /7~%�mJ_�_hz��^�~�y���c66;z�������TY���_��C�!v!�G=���~�����S��pG�
I����_�G��������������::n��e���'���m��?]��W1��3(��	k����x]�3.��������j1�����7��{vK�������~�{��x4v~��������=0.��%�4fA���%�t���������������b����c[�_����8��������oV��|����Op�<Aw1��������)~h���u>K����T�|�_��|�L�t���t�����>��g��$'4^z�'��N�
&WI]6j?EOB��5U�_��_JN���4iH������3�E��}���N��	�q��(q;�8�\y�b�u�S��T����j��)Ew�s���~�.��?�������o�����O?������Y�������H�d�~}��v�k�T�����3=�i��������8�m�<q+g��#+{�]�Q�L��l�n��u'�A*4�6u�E�R:��"5�SmU���������X��,��7��������<6
X�}��>8h~��M���t�.����kp>P�:xS��8ox��g��T�}%Oh�yy/f�S�T_��J���|v��4>���	��M�?o�ys��[���V���s/���C\h2.�����f�A���k����������;m���[,�d6�t|���L6�[4S�����L5�!��|���OV�%�	������s��}�'��IZ��d�5��������LI��9�;�:�2+Y���.0E�xO�Xd<W/�e3�l�y�Z�q��W9��V�i^BO�B_vU����T�������P�*���xG�"�O�M���x��`�wX_f�R�.�7������J�u���uz�x?�r�e����������[�P������NuZ��(j���I.��N����;��jS{����z�N���{�Z�?����F��b"�����$~��	���7\.Rn';��;��_���������9"�$�*����m:�b��������9md�����O��s��T�9F`�<]����6x�d��{�%��u+�������<	��/�E�1��Z{Z`��7����n!M���������������D1-��?��'�/���.,����X|$�K�jO^<��rxf��+^4���B��*hr���2�K�U'Px��2~�m�W����J7+�����tZ�����
<����� kH���lw�����[��{Zg����~�����
�����>f���e������D�i������/�%w��-�����!w�3
��Q�E�F���]�s��/�����5=1~}xs��W����5��O��������2��jO3�x �c�j*�_����f�o�;�;�{���k�F&�g��}0+u|��$o�H��;|O��3nB�X��v���=Y���<�I���D�3���E�i���y��L~
����'�C���,^����/`�Lc���.\�����Z�'19�&������F�=-����������������?��\<��������k6��\�6��"����O�R�������
�iOyX�AC����|��D�rkf�O�m���T���������1�<���c���L����#��x�(We�?��q�}�-�#?X�5�e�*�T�w���U3�*�: �6CP�pJ������dL���f�r���v�������_IU����%Lo����_5��������z�bf�w3m�0S��
������1�[�~5�
U����gJ8��FU��a����j��W�z�zS���}�X�z��T2[BD(�(���b� SL��G�0W �f����IV���g\c���|�g3
��&FE���q�ML��D��	6�G��+�ML��f���,`��h</����Da^V�v8$
��������,��*C��3&B��	hs�Nw8�#��$mw�x,��.Y����t)
���Q�@w	s]J"��Y.i�1� ������vq�={���|���9{8���**=`�q`E��B�2@��hx1��2�����K=�S� ��9��r�T���.������i�}(�f�1�i�A{�g;dl�~��48+.���3o����3�O�RhW��Z�Jh���kJ����KZ!���KZ��������L�k�%�\�r)dgO>;���c^�,�E����-o�{���+H�d7H`7���d7_�	�3�Ifw������1��	���#��1�G���V�Ix����'�K��5BI�N��}n�J�4��������$0<�4�I)��F��/5�^��%���[K����v���B�m^������~�����C>��_���9�0�"(sF|�I?�~�=�dh�>"���4,��w���w?�n�����o�)^�[",��:�*y.�������	�m���Y�<��%sY�t��7&Ip��L����$;��>�����!~V@���<�	�5���V�
L���~��?��+B�������V���<�svf���Q����g��^��Y����;�-��,�k���:���CH� ��zkkW
�P�_���sg�)L����T������'=G��f�`����Y�	�/��Lx��'�O���n&B�qd��u\�1w����<cH_N����w�a��9T��(��x$�u.��nS:
�#�h:�Db5W,����2h�\#�l��O�ITz����|�g%�W��C�#W�#��~��2��X,�S6��V��j7�0BV����An�'�h�-���84;8�=��hq 	��<��	�/��$�Kg`Ivsy��i�/��F��[K|�����9�^p����A��K���\���\��O�Cq��\_��RL���	�S���$�o���A`<�����v�7���/�����N��ov��!b3��F�������rE�dX�&a.�\���P�j8�;����M�>6��8z��,f����:u +�?�
������s����f�>�{�<s�+�,2 �H�Vbm�H�9k;���Y[9�R>�gl����v'6-.e�\Z���W�O��7(��"
����/wM|%L	6�Nc��C5�X{3R�L��?�`��K�z��dvY�VQu�"<
'�����ui .Jj[	��g��&Kg�h���"�$�`���#����a�������o�b�K�I�f���������i�����X�R	R��]U@lAJ�w�O�����Z��yl�'�����9��2L>qp��R�H����L:���	�S��Y�]0���\}�A@	v��iD��9��/;l�w7&Y{��;����]+`��+���W���5}����l��)�kSU�R+���@;m\��m\*A6.m���Z�n��N����)e7=����L���0�W%��� �K7*�'���O�sq|z��c�b�!6�O�^���}l����
��5L���
|(�T�8�L.�'1�A4�(�Iu���!�{	���fS4�n��H���P$Q�3sQ�:0�x���z���������<�Oxb3{x�*:�d5+;8������p=iy#�n��C�R�o��"
.����#k�K�9�e�����!����m^!��c%7�E��a�B7(k�o�E`%�M�(��Y�]��-z����2xTo��N�8��,�����liBS����9���R�-D��\����	�R.���|iB��5MHa�4!�PC�A�������q����)!0
���2���>��Q�3"����4�D��.�
����6��8��7�td`�y�YCg���~m�u.K$W�}h�y�����iL��1�^�!%[@.���)�d��%���Yk���������;�Z}����i���3<�oez�S���V�&����{X;V�T��)m��"2F��FPU]Z{�,��4�
�*���F���(��u�Q���R�~��}���\iX��g��`��PY�&�zI�\�a� �����c%F+�[��t��u"�gb2L,�����������;�w�\_���T�0�;�}+I6�;���'���I��S�'
s���-Y'���z��P���ibqe(��z.�����U3kO��������
q���m!�IH��11����Q�H�a�����FFu��Q�f0�k���E���xR��XV�3
'-��\7�������;�[��F�Yy��ATDm+<Xy,���=�|q�r�����aMs�,� ������n��F����9�4<��)U��r��-���V�K#(�Ktfi��Lu<LUJ��Re)�={��2Q������"��7?��(��~�`{s���kJ�Q��|�����5���
H�J���+�KhG'�'����.�hC�1�j7�����|b����b�vs�8�����aT�����u��L��|��&	�U��O*��.���s���/�����('��kV	�	;���~��������E8�S�fQD�Z]���h1m}eA�WpP�@D�B�����Y�h��C�5���I&����2K���aRf�uj�S�+�2+93"s��4��M�<�����HuQD{8[��,���$�����>m��,�����h�f+����Q���K#�gT�q��|��+��jw�W�~�Z�M3��o�i��+����3����4oV� �t����1�>�K ��1�O7�6��"�"sr�)�4�����������[H��(�U��*�,�]���?V�eM��E��D�e��w�J����� �L��HM_�<���PAf,��~���\��=����1�4+:{�R��^��T����u)e:
�MhoN���5��tF�NB����w�o|h��2�Y�����u�0*H#�{�:@�����8����!�(=���E��c%K�����O�t��������P&s@J�.�&���Y d`�n��q&D�B�.�}��&�I/��[7��8x����P5���#���C����u����@U�R����{o�'Tt;]�*f�l1�,�,k��2	,�=��RA��]
_�m�����E���(��]������7H	y�h��X���.��H"������0i0��Y�r��L��8Bk�*�	�<P��@�)n�Y�im_UQ=��8kuID1�9
���$�1k�KU��g����h��N����N���75M�`�&n5��
��5r�x��K.Xg��zK��l�ok�H����Zs7���n��������4yY���v��%2������t>�����O����	���S7r9���q���~���?�?..dp
,��<����
gA��c����N�O��Y������W�K����f��lQ4Q������NA�lb���%G�����A���*qew�Ek�t&�fG�2��0+���I��u���%����3�������k�|.��dVB����l�snC��l���������q��B>Oy��q�F�,E}:�	���|^.��']G��f�I(��4�PO'H$}!S6�mg��=9�a�^��������c�|�� ��c�TlU�-K�UI����v^�b�x��B�W��q�$!�x���cT�h�:+6��}�	�H�e�u���-s��L-�ek��Vb�0w1��u��u��j���������I7�p�L����=�"l.��7��Lf.����f���N�}4iB�6�L�P���K����f����9�m�o|��:��)F�=%��1�{���g�)�od��G���'~���L�L"�G~;���vD�<v�y��IT��|���m��'R�fF��Lj�,u�g\� �������v��]���g�?�)(3����g��>���|�kG�+�������dH����!���!���W��h_��p�s���qwf{+R���� �
����0SI�T��Mo� �Y�[�#�X"�Y%�D���%MG �j*]G6�'�M���$��!���z������}��������If�$��3�D�$�A����f�M����c�WrN��cx�$�]*��R�&�[:�ar���u�z����'��Z���cr�$�\*��R�&7��j
���_7{7��:|lB�W��22 }�4/�IH/.�\/��$����7MQw�pHF���b5�-����.����0J0���[�c��2�5�q ����.�:���4�2���&?�O�����!Mk�V�JA0��%)
���i��1�E����DVu�!�������3���k� 2��,���m��
�n0�/NC�f�p2�}��K�K��b�f�0k���r #{X���(�5-v�*O1-��T�D�<g���?]��H������������g�~�2�t��#
�[���JRR�|(�B	2���lO��(�I���QQ+&n~l.�z��?�o��F8���D�c�BU��x�����v�]o��A�%��=������-���*�����c\B��r	���~�
�U�Q)��$�/�^�p�C���'%�cl�����/����~�������x�������O���q����?������^9}:�>��L�����k&��S��J��it��[�����wz����_|��]���	$*���!&K<e��	��L�
�.����V�������N�{���Z(aH>�*>�����1��/�I�/���/��v��>rj��,��{:��o��di�W4f�0��%��.���OV��}�Fp�*�l��_S/�T���25�J�s�ome�,�e���t����;���YEi������������Ae2�����q���T�ua�c.s�Ne�TiD�������>�����B��[	x$j��7�N�T�.����f�$���,��oDE.A�Q�v�uX���[BgV3ft��	�����$5J=kJ����y��P��V�_����rB�-�=�m�H�F$%v�n�������3y��v��x�����l�6�x�����#�'��]k:?��8������$�c��r:5�93B���CcV�S��V��*V����X���
5��ZW��?&]*��> ]z���p���R��\��\�X�zO�T�z=|;"M
�SkM������p�H�$"�.UG��!a,�i�1�M���!��\��
(�~O8f�7���8�	~�;z�,�;H�#���A�As��7�tO8f�9�|9BG�����C�4���bO,\�sb��j�jy"��by�;�
f���t�7��|����������� "�L��w�1��YQ��0�u7&bw<�L���<�����Y�q?���j�U�7�O�
X���{���7���7�����&�~���$��+ro25&a6�]c2�����a7�v�{c��3�oX���
moL����/�P�8�������Wku�N���>��OzA���_�;cI��L������#�1��a����E]$d���x��{�>�6���Q���g��c�3(O�����f.�C��N�fe���[m3��f�/?����J�����%	�o���e������h���S@�T��C%Y���5�^��j_BN��#����J��`�%���>"5AVC!�5��PPX���J���6��\��s�U�4Aq�T^/���	v�/p2����
�"������C)z��2mgbF�2�;-����K~����a��!�Lpd�:�F���yy��B��3�+xx�@���3dB�����-����_G�����G�cd��4��z��d6�����������U��������	i|��5�MQu[�~���_AD���i���~iv���t�_:PN��@|.d���~��l��5'���/���O��Qwf�>O��|����!)$ZQn�`QF�����j^7��$?��wi��e�\E�T#���y�&�^����tn)��e��*b��f+��3�������:QMN��#��v=IAR��p3�B���������_�y���}���Xc�a%B@e�}��t[�^�&��ukM������w�M�f��=����4������M_c�~�x,�y�����=�?P����	&��1;b���2h��x��n�vv��>=���&�7{p"��
������_�I���������4g7��~���;=5�3�V�������?�O���r���V��h(
v5-0004-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v5-0004-Hand-edits-of-data-files.patchDownload
From 6a3afc4021a58e0086b194562e3d2146b21e0e71 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Tue, 26 Dec 2017 15:51:09 +0700
Subject: [PATCH v5 04/13] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    |  9 ++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     |  9 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 44 +++++-----------------
 12 files changed, 142 insertions(+), 87 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index 4cf25ef..e32308b 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -9,48 +9,56 @@
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int24
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int28
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int4
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int42
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int48
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int8
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int82
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int84
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
@@ -90,18 +98,21 @@
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float48
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators float8
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float84
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
@@ -165,48 +176,56 @@
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamp
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamptz
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
@@ -378,17 +397,22 @@
 
 # bpchar_ops
 { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # char_ops
 { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+
 # date_ops
 { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+
 # float_ops
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+
 # network_ops
 { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+
 # integer_ops
 { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
@@ -399,52 +423,76 @@
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+
 # interval_ops
 { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr_ops
 { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr8_ops
 { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+
 # name_ops
 { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+
 # oid_ops
 { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+
 # oidvector_ops
 { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+
 # text_ops
 { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # time_ops
 { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamptz_ops
 { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+
 # timetz_ops
 { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamp_ops
 { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+
 # bool_ops
 { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+
 # bytea_ops
 { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+
 # xid_ops
 { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+
 # cid_ops
 { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+
 # abstime_ops
 { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+
 # reltime_ops
 { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+
 # text_pattern_ops
 { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # bpchar_pattern_ops
 { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # aclitem_ops
 { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+
 # uuid_ops
 { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+
 # pg_lsn_ops
 { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+
 # numeric_ops
 { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+
 # array_ops
 { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
 
@@ -688,24 +736,28 @@
 { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax "char"
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax name
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax integer
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
@@ -759,18 +811,21 @@
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax oid
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax tid
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax float (float4, float8)
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
@@ -799,30 +854,35 @@
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax reltime
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr8
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax inet
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion inet
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
@@ -830,18 +890,21 @@
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax character
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time without time zone
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
@@ -895,36 +958,42 @@
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time with time zone
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit varying
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax numeric
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax uuid
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion range types
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
@@ -940,12 +1009,14 @@
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax pg_lsn
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion box
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
@@ -959,6 +1030,7 @@
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index f63a7c3..10fb6cb 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -266,21 +266,25 @@
 { amprocfamily => '5008', amproclefttype => '604', amprocrighttype => '604', amprocnum => '6', amproc => '5011' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+
 # minmax "char"
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+
 # minmax name
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
@@ -326,16 +330,19 @@
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+
 # minmax oid
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+
 # minmax tid
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+
 # minmax float
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
@@ -362,26 +369,31 @@
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+
 # minmax reltime
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr8
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+
 # minmax inet
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+
 # inclusion inet
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
@@ -390,16 +402,19 @@
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+
 # minmax character
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+
 # minmax time without time zone
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
@@ -445,31 +460,37 @@
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+
 # minmax time with time zone
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+
 # minmax bit
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+
 # minmax bit varying
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+
 # minmax numeric
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+
 # minmax uuid
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+
 # inclusion range types
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
@@ -478,11 +499,13 @@
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+
 # inclusion box
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index d1d370e..a5c2f4e 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -1,12 +1,11 @@
 # pg_authid.dat
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# POSTGRES will be replaced at initdb time with a user choice that might
+# contain non-word characters, so we must double-quote it.
+
 { oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
-  rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR',
   rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index a1fe83d..add77ad 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -54,6 +54,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -193,6 +194,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -227,6 +229,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -241,6 +244,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -248,6 +252,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -256,6 +261,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index 6b78845..435bc06 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -1,7 +1,7 @@
 # pg_class.dat
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
@@ -16,11 +16,4 @@
 { oid => '1259',
   relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index 953ea08..f9a3467 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -1,7 +1,10 @@
 # pg_database.dat
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 3054a4e..308b033 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -8,6 +8,4 @@
 { oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index 99b22fb..101b0b8 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -44,12 +44,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1985', opcintype => '829', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3371', opcintype => '774', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3372', opcintype => '774', opcdefault => 't', opckeytype => '0' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1986', opcintype => '19', opcdefault => 't', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1987', opcintype => '19', opcdefault => 't', opckeytype => '0' },
 { oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID',
   opcmethod => '403', opcname => 'numeric_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1988', opcintype => '1700', opcdefault => 't', opckeytype => '0' },
@@ -125,7 +127,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4064', opcintype => '17', opcdefault => 't', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4062', opcintype => '18', opcdefault => 't', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4065', opcintype => '19', opcdefault => 't', opckeytype => '19' },
@@ -153,12 +157,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4079', opcintype => '1560', opcdefault => 't', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4080', opcintype => '1562', opcdefault => 't', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4055', opcintype => '1700', opcdefault => 't', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4081', opcintype => '2950', opcdefault => 't', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4103', opcintype => '3831', opcdefault => 't', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4082', opcintype => '3220', opcdefault => 't', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4104', opcintype => '603', opcdefault => 't', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index 8b03f0d..53a3d39 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -1,7 +1,7 @@
 # pg_operator.dat
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1581,6 +1581,7 @@
   oprname => '&&', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_and', oprrest => '-', oprjoin => '-' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_or', oprrest => '-', oprjoin => '-' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => '5003', oprrest => '-', oprjoin => '-' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index fac2f08..28181ed 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -1,14 +1,16 @@
 # pg_proc.dat
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -17,7 +19,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier
 
 # OIDS 1 - 99
 
@@ -1774,6 +1776,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   proname => 'obj_description', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '14', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '30', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'oidvectortypes', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -1934,11 +1937,11 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   proname => 'pclose', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_close', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1434', descr => 'open path',
   proname => 'popen', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_open', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1435',
   proname => 'path_add', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '602', proargtypes => '602 602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_add', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1436',
@@ -2730,6 +2733,7 @@
   proname => 'interval_hash_extended', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '20', proargtypes => '1186 20', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'interval_hash_extended', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '3', pronargdefaults => '0', prorettype => '1700', proargtypes => '2275 26 23', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'numeric_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1702', descr => 'I/O',
@@ -4753,6 +4757,7 @@
   proname => 'bool_anytrue', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '2281', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'bool_anytrue', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   proname => 'bool_or', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -4802,6 +4807,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_postmaster_start_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_conf_load_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -5658,6 +5664,7 @@
   proname => 'jsonb_pretty', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '3802', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_pretty', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '3802', proargtypes => '3802 1009 3802 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_insert', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '2970', proargtypes => '2275', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'txid_snapshot_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -6074,37 +6081,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_create', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_drop', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_oid', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '16', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_is_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '3220', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '3220 1184', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '25 3220', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_advance', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '3220', proargtypes => '25 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '100', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_show_replication_origin_status', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6127,20 +6123,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   proname => 'pg_control_system', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_system', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   proname => 'pg_control_checkpoint', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_checkpoint', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_recovery', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   proname => 'pg_control_init', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_init', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '1', pronargdefaults => '0', prorettype => '23', proargtypes => '4089', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_import_system_collations', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_collation_actual_version', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6154,19 +6146,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '2276', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '16', proargtypes => '26 23 23 2276', proallargtypes => '_null_', proargmodes => '{i,i,i,v}', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'satisfies_hash_partition', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 063b975..cd9a78b 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -8,6 +8,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 39162a7..f73e5cf 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -7,48 +7,35 @@
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'B', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '17', oid_symbol => 'BYTEAOID', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '18', oid_symbol => 'CHAROID', descr => 'single character',
   typname => 'char', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '19', oid_symbol => 'NAMEOID', descr => '63-byte type for storing system identifiers',
   typname => 'name', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'NAMEDATALEN', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '20', oid_symbol => 'INT8OID', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '21', oid_symbol => 'INT2OID', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '2', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '22', oid_symbol => 'INT2VECTOROID', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '23', oid_symbol => 'INT4OID', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '24', oid_symbol => 'REGPROCOID', descr => 'registered procedure',
   typname => 'regproc', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '25', oid_symbol => 'TEXTOID', descr => 'variable-length string, no limit specified',
   typname => 'text', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '26', oid_symbol => 'OIDOID', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '27', oid_symbol => 'TIDOID', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '6', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '28', oid_symbol => 'XIDOID', descr => 'transaction id',
   typname => 'xid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '29', oid_symbol => 'CIDOID', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '30', oid_symbol => 'OIDVECTOROID', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -65,6 +52,7 @@
   typname => 'pg_class', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '1259', typelem => '0', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 100 - 199
+
 { oid => '114', oid_symbol => 'JSONOID',
   typname => 'json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '142', oid_symbol => 'XMLOID', descr => 'XML content',
@@ -73,16 +61,12 @@
   typname => '_xml', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '199',
   typname => '_json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '194', oid_symbol => 'PGNODETREEOID', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'ALIGNOF_POINTER', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -98,6 +82,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', oid_symbol => 'POINTOID', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '16', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '601', oid_symbol => 'LSEGOID', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -108,7 +93,6 @@
   typname => 'box', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '32', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\073', typrelid => '0', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '604', oid_symbol => 'POLYGONOID', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '628', oid_symbol => 'LINEOID', descr => 'geometric line',
   typname => 'line', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '629',
@@ -128,7 +112,6 @@
   typname => 'tinterval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '12', typbyval => 'f', typtype => 'b', typcategory => 'T', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '705', oid_symbol => 'UNKNOWNOID',
   typname => 'unknown', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '718', oid_symbol => 'CIRCLEOID', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '719',
@@ -151,6 +134,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1001',
@@ -231,6 +215,7 @@
   typname => 'time', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', oid_symbol => 'TIMESTAMPOID', descr => 'date and time',
   typname => 'timestamp', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1115',
@@ -249,6 +234,7 @@
   typname => '_interval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1266', oid_symbol => 'TIMETZOID', descr => 'time of day with time zone',
@@ -257,6 +243,7 @@
   typname => '_timetz', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', oid_symbol => 'BITOID', descr => 'fixed-length bit string',
   typname => 'bit', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'V', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1561',
@@ -269,37 +256,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', oid_symbol => 'NUMERICOID', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => '-', typalign => 'i', typstorage => 'm', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '1790', oid_symbol => 'REFCURSOROID', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2202', oid_symbol => 'REGPROCEDUREOID', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2203', oid_symbol => 'REGOPEROID', descr => 'registered operator',
   typname => 'regoper', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2204', oid_symbol => 'REGOPERATOROID', descr => 'registered operator (with args)',
   typname => 'regoperator', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2205', oid_symbol => 'REGCLASSOID', descr => 'registered class',
   typname => 'regclass', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2206', oid_symbol => 'REGTYPEOID', descr => 'registered type',
   typname => 'regtype', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4096', oid_symbol => 'REGROLEOID', descr => 'registered role',
   typname => 'regrole', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4089', oid_symbol => 'REGNAMESPACEOID', descr => 'registered namespace',
   typname => 'regnamespace', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2207',
   typname => '_regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2208',
@@ -338,7 +318,6 @@
   typname => 'regconfig', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3769', oid_symbol => 'REGDICTIONARYOID', descr => 'registered text search dictionary',
   typname => 'regdictionary', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3643',
   typname => '_tsvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3644',
@@ -395,6 +374,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249', oid_symbol => 'RECORDOID',
   typname => 'record', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2287', oid_symbol => 'RECORDARRAYOID',
@@ -432,8 +412,4 @@
 { oid => '3831', oid_symbol => 'ANYRANGEOID',
   typname => 'anyrange', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v5-0005-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v5-0005-Update-catalog-scripts-to-read-data-files.patchDownload
From 01ffdf483741566fddaa2939ecf83656fe3bd5a4 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sat, 23 Dec 2017 15:56:58 +0700
Subject: [PATCH v5 05/13] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/Makefile               |   2 +-
 src/backend/catalog/Makefile       |   4 +-
 src/backend/catalog/README         |  72 +++++++++++++++-----
 src/backend/catalog/genbki.pl      | 133 ++++++++++++++++++++++++++++---------
 src/backend/utils/Gen_fmgrtab.pl   |  56 ++++++++++------
 src/backend/utils/Makefile         |   4 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 9 files changed, 207 insertions(+), 81 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/Makefile b/src/backend/Makefile
index aab676d..a0655e4 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -142,7 +142,7 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..4f3a5ea 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,8 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(wildcard $(top_srcdir)/src/include/catalog/*.dat)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +69,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..7b849a4 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,57 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data structure literals that are simply
+eval'd to produce in-memory data structures.  As such, the code reading
+them doesn't care about ordering and layout, but in order to maintain
+a standard appearance, src/include/catalog/rewrite_dat.pl should be run
+before submitting catalog data patches.  Each file contains an array of
+hash references, which represent the data entries.  The best examples are
+the existing data files, but an altered subset of pg_database.dat will
+demonstrate the key features:
+
+# pg_database_example.dat
+[
+
+# a comment
+{ oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The fields oid, oid_symbol, descr, and shdescr are on their own line
+within the curly brackets.  This is done automatically during rewriting
+so don't worry about their placement during development.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -38,9 +71,9 @@ catalog that has no OIDs).  In practice we usually preassign OIDs
 for all or none of the pre-loaded tuples in a given catalog, even if only
 some of them are actually cross-referenced.
 
-- We also sometimes preallocate OIDs for catalog tuples whose OIDs must
-be known directly in the C code.  In such cases, put a #define in the
-catalog's .h file, and use the #define symbol in the C code.  Writing
+- We also sometimes preallocate OIDs for catalog tuples whose OIDs must be
+known directly in the C code.  In such cases, put an 'oid_symbol' entry in
+the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
 Direct references to pg_proc OIDs are common enough that there's a special
 mechanism to create the necessary #define's automatically: see
@@ -49,19 +82,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +138,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 17e8e23..f941826 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,11 +143,11 @@ my %regprocoids;
 my @types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
@@ -156,17 +191,13 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	if (defined $catalog_data{$catname})
 	{
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
+		# Ordinary catalog with a data file
+		foreach my $row (@{ $catalog_data{$catname} })
 		{
-
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
+			my %bki_values = %$row;
 
 			# Perform required substitutions on fields
 			foreach my $column (@$schema)
@@ -200,7 +231,7 @@ foreach my $catname (@{ $catalogs->{names} })
 				}
 				else
 				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
+					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 				}
 			}
 
@@ -208,38 +239,38 @@ foreach my $catname (@{ $catalogs->{names} })
 			if ($catname eq 'pg_type')
 			{
 				my %type = %bki_values;
-				$type{oid} = $row->{oid};
 				push @types, \%type;
 			}
 
+			# Add quotes where necessary.
+			quote_bki_values(\%bki_values, $schema);
+
 			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
+			bki_insert(\%bki_values, @attnames);
 
 			# Write comments to postgres.description and
 			# postgres.shdescription
-			if (defined $row->{descr})
+			if (defined $bki_values{descr})
 			{
 				printf $descr "%s\t%s\t0\t%s\n",
-				  $row->{oid}, $catname, $row->{descr};
+				  $bki_values{oid}, $catname, $bki_values{descr};
 			}
-			if (defined $row->{shdescr})
+			if (defined $bki_values{shdescr})
 			{
 				printf $shdescr "%s\t%s\t%s\n",
-				  $row->{oid}, $catname, $row->{shdescr};
+				  $bki_values{oid}, $catname, $bki_values{shdescr};
 			}
 		}
 	}
 	if ($catname eq 'pg_attribute')
 	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
+		# For pg_attribute.h, we generate data entries ourselves.
 		# NB: pg_type.h must come before pg_attribute.h in the input list
 		# of catalog names, since we use info from pg_type.h here.
-		foreach my $table_name (@{ $catalogs->{names} })
+		foreach my $table_name (@catnames)
 		{
-			my $table = $catalogs->{$table_name};
+			my $table = $catalogs{$table_name};
 
 			# Currently, all bootstrapped relations also need schemapg.h
 			# entries, so skip if the relation isn't to be in schemapg.h.
@@ -316,12 +347,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -379,6 +410,46 @@ exit 0;
 
 #################### Subroutines ########################
 
+# Supply quoting for a normal bki row.
+# This allows us to keep most double quotes
+# out of the catalog data files for readability.
+sub quote_bki_values
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+
+		if
+		(
+			length($row->{$attname}) == 0  # Empty string
+			or $row->{$attname} =~ /\s/    # Whitespace
+
+			# Quote strings that have special characters
+			# except for certain cases. See bootscanner.l
+			or (    $row->{$attname} =~ /\W/
+				and $row->{$attname} !~ /^\\\d{3}$/  # octal
+				and $row->{$attname} !~ /^-\d*$/)    # '-' or '-1'
+
+			# XXX Not needed, but keeps the .bki diff down to a reasonable
+			# size during review
+			or $attname eq 'oprname'    # Operator names
+			or $atttype eq 'oidvector'  # Arrays etc.
+			or $atttype eq 'int2vector'
+			or $atttype =~ /\[\]$/
+		)
+		{
+			if ($row->{$attname} ne '_null_' and $row->{$attname} !~ /^"([^"])*"$/)
+			{
+				$row->{$attname} = q|"| . $row->{$attname} . q|"|;
+			}
+		}
+	}
+}
+
 
 # Given the schema of pg_attribute, generate an entry for it using information
 # about the attribute it describes.  Any value that is not handled here
@@ -452,7 +523,7 @@ sub emit_pgattr_row
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki
 sub bki_insert
 {
 	my $row        = shift;
@@ -522,8 +593,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 14c02f5..2e9b6ad 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.dat
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 # Collect arguments
-my $infile;    # pg_proc.h
+my @input_files;
 my $output_path = '';
 my @include_path;
 
@@ -29,7 +29,7 @@ while (@ARGV)
 	my $arg = shift @ARGV;
 	if ($arg !~ /^-/)
 	{
-		$infile = $arg;
+		push @input_files, $arg;
 	}
 	elsif ($arg =~ /^-o/)
 	{
@@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !$infile;
+die "No input files.\n"                                     if !@input_files;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# Read all the input files into internal data structures.
+# Note: We pass data file names as arguments and then look for matching
+# headers to parse the schema from. This is backwards from genbki.pl,
+# but the Makefile dependencies look more sensible this way.
+my %catalogs;
+my %catalog_data;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	$catalogs{$catname} = $catalog;
+	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+}
+
+# Fetch some values for later.
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
-
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
-foreach my $row (@$data)
+foreach my $row (@{ $catalog_data{pg_proc} })
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile,    $tmpext);
 sub usage
 {
 	die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..f71cdc5 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,8 +24,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
-- 
2.7.4

v5-0006-Remove-data-from-catalog-headers.patch.tar.gzapplication/x-gzip; name=v5-0006-Remove-data-from-catalog-headers.patch.tar.gzDownload
���DZ��kw�� 8_�_Q���V�IvUe=�{=��h���%]����=;<�H�
4����o�������|Iu�g%�X�������|E����8.���W�����94�����>������f���'��a�����(���2O��8f,I�4���	���b��%�oGn������+�����|���/���I��	�:���]��v�&��UyUM]�����<�GM�.m��v�m��)�=�D)4�,����	2�^6���]��]l��w�W�j}��^�������>:�i������������Y��$����8~��f��vq�}��~|����}���	�"��ji�Z	-���>x�fumo��]=}|����Q�YFOO�>y���M���!����m��������a���50���������~��v�Y�o�����o/�������h���RE�XW�e�q���bjE��<o./w�%p�#bR�N�+�D1����k�?�$��U�|�z�]���h��p�-��!*	��. ��7EQ�D�9�;�j�����M��������.�E�?%14�������:������a�����x7���Ymt�	�����:$IR�]�h��f?h��v\��w�u{�o������57��y�X�DXm���Y���l����z� ���}b��1�����{pr�`!����/��j���nF� ����]]n�=�?���k",<�o���+��9���>�vJ�-[|��]�[����j�:�_�V��c�r����\�4�&�p{�u��l����t��
��C��)[�)�Ms������C�@�^�vt���nA���v7�MR���W�.k{}�\�����M�����Vh��R�=�������z=��IDN�1����g)�j:�g/�f�^-F�C@
z��]�V]�qz<T�(������-x���or���������;��C4�y���Q�a�?����(�kO����ck�KB����TVG=Q0�C�������!�_5��p�����j1
��>�7���B4y�������`UX�Nv\�\�����9[dC�3��v�:��n����
���
�2Z�Co�<G���XE��?��kx�e-�u�����ruq_�Q��s7w~����L.yY����*Y�K�Y��CO���������������w��wQ�%�1�`$�����]F�KV5�u�����goN���\vX��c�H���������g�@�|�|}�������������i�>tp]5��v��OA��r�-��iLnbn�y��2�"�'�����	����]�o�=����n	��b,�����[��^�qd?�Y��T�HE����l��4�4����9��(�����-m�����7����y��������o��9Q7����>��jIs��f
����Q�����o�'G��MU�Z��Q�0�������p�?��_�
�qh��6�[�R��?~
��1�n��D����f���}�[!�N�(����	r��tu1�����N_�����zMW�B1V ������''�E�6��|�"�����
g����oW��	G8��^�O�O����|0��v
E�������@����=���i*�unA����P~n���yp=�_�h�\G@����\>�9/P�=���NN���@�'�W'R�;5y�������/������#��*�[F%�������-
���`����:����]$s�N�ly����;�b��3DJ�#���Ut������������a�N������O������' 3��=`���`@���=��a�4_J��g��vDW����5��z���w�U#�b'�.����\UI���q�4><�P	�����S��P��k���+��g�~|����������<���)8���_� ��>~z���<?��>|�����h��~a�����6�y�A������q<�D1ZOu0��bqs5�mn��I����'|>����P���A�:�����{:(Z��|�y?&v]D;����JfY���on���H�}
�p\�D�(Sk$���c����w8�m���I+e���b��=����<�����T�����Tg5�\�2bU6UOSy2��I�5�^-�����)�Od�"��@[����!��Q�.��e��������M0h�c�E�s������2���L�3S���R=���f�������j����)5T)N�7��Y�G{�7�#�����)U�������J������s{=$v7�W�^�
����C
	tri_��i���%���{/�����kI��>��y=������1Q���K��������I�y��h����=�o���jed�&��-�
�����g#���uOC��w��-�����q��e{9Nsb/G����htI��?Z��	������;�<d�t�����K�!�,�d����l����C�iI��N�,��ap�QT�v,$XL"X+L�8�=X���(
u��J�Y��V!T�l6�m��U�����hrW�[��5��U��J���t
U���U���*:y���P�:�������?r���\RQL��w��VY���fc���4����?4W�ju
������b�1�v����m|l�7K�~5�~����J$mI}�nk�2�������~<4[}���[3P�	DY����f�9�[��,AOL9�9�f�k>it�'n�Q2���2�j�qC�_/�5;����M��H:����Z*�r���z����md��b���k���E�����|B���Ab{���������)`��YU���� n�1q����U�^kQ\����S�8��Xe#�YQP��q��	��fF3���Lr:I���K��wb(����N�J,�0�����+�`nL�
�[���9V�U��"�������jO<]>5�cu�iT�'��.��e����*�<!]:5���.���V{����A]��:������.��el�	J�0�����tj`'��.�S�ox�
����]�����i�w`�M
��B�Tq�}�]69�K��N���������\
�4��gn�y59��dx���!�O���^�xZU�'�����Z���������o����A^�/T�6��f�I	���D[��X�*d?q(b=��0~�������dgV������.jT������kS����V����x���|�6#�K3r�F]l���t���X&��Gf\f�����N��hV�V�2�b�m�I���S�v[�_�f�R����LY������^b��woC�p���R�Cj���2G�
�2��X�����HG�6K$��������,q�!��%��s7?Td���_����k�1�'�����{��a{�b�\7~Q�/2�&�_������l�S���V��U�Y�������-�������r��#?m�G�u��[I������V��O��~+�"�R�����WpI��~�|Q�?�������u@�fV��c~n��R���.��NI�/���wn�������~��9iZ���*�w��x����,7�A)����l1S��>%���qRn%��;N=� /�Y��/u��L� 7�YB�7u�}~jB��:�;y���y�_������n�Z��M�*���+�8�����y��[�%�Z��E_������>����_~lx5�F`���m<�
�~���{�m�H������H��E�`���Z�j�H,����M��Rq�S4�VO
Wf�'���I��+u�}u���zAO�?�JAO��E8
P�J�oe���_��$HJ�(KiK����� K,��O� KYK���l�<D����������X-���/�V�fk��G)���D��K��q���n7��N��|�]����]����xCW���B4�ok/n6`���?��?R��\�����<[���,�����-�/���8<�3���3TOg���e��vu���������3e}H|�;��/�F�x�����V�n���[����T���Zm2m���OY����&��f��O������f��T�O�����f��R��8���s��Tl�������w!B���jm2�Zdv�����9�7��yB����=�&�L���zax"�Zn�>_|t��5>:���|��Q�|�X,
�T�'A~�\���n�6H�������js��By$Eq�n�F��mc�D��F�s?�/\M������4KJ�~���=�t�������H���=���������=O��4�q�q[q�e����cn��� ylw�v�.�����w����w��n�C����t��Y���\Si����j��/W��|�I�������T��e��!��_#6.n�F1���l��3RMk����a���}5K��Y4n�K$U���m�rso����vf���V1��l�b��*^�������?�z��.�|��}�P�~`pE�q��po�~�-����	j_?;�����g��N���{w��?���q�\����eQ��E`��+ov��>�h����2&��%��,4��1�T=����O�r���9�����ydj�k Nw=�����I�/w��fp������Mt��|�9�W��ON��r��QZE��%6�-�����������<���"�.)�W���o1�(�c�X��}t��m��g�X��kNYze�U�'+U��������X���G���ma�yxb��w+�(����1~ob���J��������?������s$�������UP�t�����������M����w	�r6�W3�g��g^r���=���\���RNo��6fq>{�2��KI5�2������ofro_���k��X��*�+�:�a��,��z��9�G�G��y��k����+�d0��W�qJw@��9�5~/��eU�1^9P/�U�,�*��)]:P`�iz��
�cH4}�<��;����#~9|�g���
��w�^���77�cz��	*W:������^4�U����k������s�i�(����Ej����z�t<�%0�����O�gu>� 6�:p
�y�Fa�������,����cy���=6�@�[����0��K!���&3����B�X(��-����TEX��$/�O�3^��\�d�Q���I}�(�N�����(D�:mH����Q$a���<��!ga��k��@hna2�!��FQ��eL�nUL�z�4�*�v�4��1W�cY�,	pH���8�X
 Ki,%�%�Kd	���e�4��*�6����Ks�U�s�X�@p��d&�w��w��*�!�{���FfB%�@hR	Z6W�Z�DV��R����UuDw��
��ki�P$N��@3*����l��*�9A�&!��?fr!-ya%��(�����"x;����"V�Q x�KwB�9�Q�:�o`N��(��qgYdN�@�Rd�fV�I)2��)����FhR��p��<�#����@b W�����H��$*��@�'ay��
O��Z*<	,
�]�D,�l_��a�`��>&	��e�`��~&	��i��\,z�J�	�(Cd�t2)Jw������!I:�e�@�N E�����������3�T��xF�*�O��"p=�T�'z�?p8�g��v�=9!��<*Xb�T��C;B3��(��3^�c�B�Z�R����	�7���Z�l5�,�pG$=4�Z���LFR8�P�&)R�*P~Kg�a����S�h.w�C��1������{h.W,2O�,�d�����vQJ�.�)���1�p����F��U#���J�f4�h��.�Ox����c@�B��)��qh��^�&Q��cH�B����!�f��d�.A$��S�%���&�t���;[[�g�YA>��N���9�w�OL9=��1"Y�����7cic���F����[�k�o�����n���\�i���J���D&��}�e���$�cB�J1R�(!�`�e���cJ1r�QO����>URFN�2��2r������\FN�<��2�=����t�S����)��L��8�_8F�1�j�a�#S ���B��IY�o��k�k*r��5�5�8���S�z���r�\s������;��F�1BWZW��>���8��gu9�����)�J���2R)�����F�}U�x#�	*E<t9�}�W��W�;�f_U ��}U�Si�U�N��W5�����\��=�Yh�J��g>�R�s����t�y���=�������;���TL��F&��J�Q���
�|���q*�!�%�(�q9����V�;���F���s��%�(�G(��8�a��q�L�%�(�C@��|�N���/����{��������S|����|���KDW��Y.wv���ViM�$��=E�!��-�q�\T��#���"�!@&�E(�?���PsMy
R��`y��8�C���#8&�9Gp��[A��R����~����u�+J��#W����2\Qb�����%�]2��������p�@��=<N]�QR��Vo�q���(Gq/x�(9Gq��n�k�<��@I0wM:��$����Q�FQ�I`�/�9��Cc��z�^��������X��,�����E���1�V8��W��9�cp�����P�7;�\��Oy��x�+���PR���F(��8�r��q���!J�QJ�������A��*�:W�Z`���������k�N��F��H���h�||�ob2���R��]R�:uf����Y�Q���.���3.$��"s�����C�<�:�_�X���������
OKt�3���3�w��
��k�z��=�F�G�b0��m���a������eaO[m�>�����t����i�m��UwA���/
�r�W�����ZtxF��J������-q��+��)E�ad�xs!�O�i�!_xrM�1�Wqmrb�����1��S�Z����������aU���x\��<��c8�9��)���12N�1%5��9F������t���%�\-��%�\���%=�CBC���pHh��s���������|-H9�����1����py��u�e�C�;�c�w��uG���d�/����Kk�<;��z!�IS�`��!�!�.=`d�!�!F�1���)G����=7�y�t���0�:��(��H����M���m��i_��m�5�+��)�-�W�f�v�����nk$v���R�
Q����Z�|<��PNP���>�?���\tp��V����\9����w��� ��q/Pzw,*��j*��P���'L���l2�4�[�Ls�C
���R�������Rce:��M��,vw�� ������8�b��q�B=�RF#��d���_=�P���2���,�5�!�5�P}U-�������%����a[��X�B�8NLkX�B�k9Y�����\��P�TK���N[FQ=�l�VH3>���2��jU��������|��2���#nR3V
)+�����uq��d����ET�qwa�j1�c/�vk��|���@��X����0&^P/�rX���ME��g[�M/�q�;�G.O\p`�X�����n�l(� E��5eQ�?L�V��5f�k4������L*c��ux:	��Px����)�NA��
��s�u_|_|_|_|�ST�b�^�2\�	��R�7r�w���c���*&��G�F7�#E��B������br](�R-���	C�LGK
�in0vh����r��U3O�:$�G�(Ox
�P��awL%u���"�M� �0�+8B�7����n �x��7����aO�.����v����~�mUn7������nB�����[�Uxr[���Uxr[������m���
����G����*�[T���
o���=��!�V�P��
of���+�V�h���T��S�$��b�\i�i�&V�9����!�ni�<�G���*B�)��ZE�9�[�T����6K����U*��n]���r���i���MG�����m:7��k�&p%!�+��f-%
J,�|�%������'�8��q�)8���U��4v���l�e9�����B�����d�B���k��q*��J��8� G(9�b\k�T�^�0�l
}d�'��2`
-hd�
��]�y
|���7DI9����(��8v3�P2Ba.�Qr�b�Q2����Rf.��
=��e>Tdm.�ni#.��ii���n������&\�<����u���p�T���/]�6D�m_:5l����4�h{�xJ���YR����J�Q2���%a��jg���KV����}�\m4DI9����(����Q2��j�!J�Q����C�
����="5����6�l�!
��k>g�"��#G(\��Y�
��k"k�RpG=B)9�#�T���(i����������a2F�^�o7���=
��In���L�F^�b&AN��S�31�r*&�O����GI��Y�eYL�e1U��dYSeYL�� ����R[�;{��)��C��L*A�/��D=|��=-���O���	��s�����`��;}q���1��0G%��X��+<BI9�#N�0��8�P2��-F(9G1n����W8�P8�`���CD�-���+yy�p\���9F����L��R5	I��6��}e���;W�K�G��:eef��f3��b�	8]�4���&�t���.~���Pp�*gBM ��P��J_����q���|�&QF�cl\0R���c��@�cd�F��s�"��u8F�1\=���e8�\�
�@G����Wg�1R����j��6�R�u��]e�<���pm�<���0�(�����5���GY4�����P�Jz_C�:Yy�^C�ko�(R+=^BCj9A�R/�^��zZ{���<�)��g��5V�����@��������5���'�5�����5U��3������xOJ��X�t
NI�����n'������u��{����"t����K(B�/����"t� U&^�L(�T�Px�5C�B�lE�������u���y��j>�.�/Ud����|�,��4#~!�e�"�����$R>)HE<)���R/������Y:�
%G:fOL�!� �)��D�\O��$�lR.��U4���,h8�N����(HR0�W�
��]�L1I
�6A/q��(�!����M��ZSEJ%��5U$&�|��"e�g�*R.�|2���[���p�T"�K/���_	G�$�)u�%�O�{$�kD8{���4\z���b��6�R�C'kDJz�����1��4H�^��W0F&�LA�%R���;�m�H�(��fMT�@���#I�(|���$��o��(ro��"Iu��E�E���U$��$�,��X/��.�3� ��z)���`��(����"H�$S{����#u�0�R�����C6�������a6	�����c�"����w
xs]8V���1�h�2C)�J���.����3�UT��ux�g�3��� ua�P4�`���9���	���K��|U$)��~+HLR��$)o�"I���YEgl�1���Th�F3m���5��$D�9}��2I�+)�Hv�P������H\E��QZ����.c
�^�HR�����$�,�HR��=��$��;�H�X%� �n��LD7VI&��$��U�0A$�F��T�� ����$�v�HR�HAE���v�=R�����$M�;�T��ix��*�4�2\]LR��vR]�8�m��������}����$�6o��"���;��"����H2h���'���a��i�~|���P��x��� u���*��w"CE��c�YY5���f��C&�@�L�WAJ%���$&��2U�2���)�HC���tob�@8��Fd�,��ECJ%��k
�I$OKhH�D�?R.���/�~�u'����{�@A��{=��$u��HRwb�=*HRw�a�Q����f��n��I �0����Q�Jn�����*�4�RR
U�J3I���:V!���z����fq�����+������U�.��x�aI9����y�vtI�y�Z��U}�5
������n{s��}�����4@�y�+x2���\x2������� ���1��q�h��O�f=�OG}��#5�y���THJ�!���]/�x��,�I<�d���I<�|���K<��O�'��!�/��x��� Oq�� Oq#��X�\�M�g��K�����J�������9�x���N��x������� �"�<����']�N]��.���=��.�?K��I��_b�����@N��v�M���_�N�Ix���	rQ�������<)o0��r	���]�/��7Br�@?X
�n�_�����K5��U��~�;o;��r���]�m����R��~�����I��_�������r�x��f���#��p^*�����]i8	/�x���#���>�&��������B��S�:���S���O��xR`�9ZO
l����GN%�	?�d��x��J<���xL�yUM��$�W�t�\��%7_Y�UHi�������Tx����t<&���[/�x�����K����%���}Zm.��b^b��Xyg{xrO�wp:���z��X<����f<���{F+���Q��l���T�J���g��~�-C�����|O��w_�O�Wn���<�f��]DjW�Wk��p��J<�B�xL��D5��$�OT�\�9g<��i���s�'��r�����F��D����tk�s}#�LR�4�1�����b)=���������?`J��x�!��c���0@����+
��
!N�j*U�7�!J���DF�����O�l�3��HM�<��%!���R���3:�x^?��e��gt�\�9��|���_��A���*{,V����,��;�����{��^,\�����Bbym;`����JbyM%d���o*X�Jb�5E������u,9�u����h��Y/����!Z��n�m�����(����OQ�9�V�5^lw���k�%�����,1m�[���=F���o��ru1������������X*|s_B��|��-�%[Z��.�C��^~����m'������g���2�ON�*Y,��������~*����J�}��Q}C��}� �~����^�:;}K	l�����.�������:�/v��C�k���ZA���-���6����j�v���\��WT5����}��?y�
A���O8_'�W��vy�n�����R������
�Y������}Kr-��<N�o�=�R��l/�?����y'��w�����n���c���}!���l�y�@M���G�l�YV��js@�F���+��������(o�)e���?}���S~;�����lx�o���R�9���F��"v�s/�0�d��_���&u����,^�P4H�h�2Q�u�&�k���@8af�)�|�6e��"*d�!-��!�e�4��H��[&�{�����29�y���2�`��H?���geVI�L.%���I��;��Y�p��Q=4@����
�.@y[���8�#���������D��$��mp�{^\s�r�NhP����q�|��*��L`�N5�-_�"�9i2I�2�L�����������)`�W�Z�n��f���s�	&�3���t��Uf7�C/�[X������B�H,6���%ea+QM���x��#q-�m5���E�y���V\���6(�L��
��*P���S���wD%��@SL���a$���p�}R�F�\��&�Q��K�����6�@��( ���P���G��G�4�hx7f���7S�����kN�O���c��jS���Lz���-�\��S�B�����@Yb��T��xd�=c������,I�k���rs�`�-���dHE����������D�<�`��W�S����a���`C�4������Y�f(����
o�����JL�������b
s�1�lI�.T��6�F*��?���f����2sP?�i63k��[�:y���,�C!o6��w�ZW����������x2[X4����F�3�K�6�����XA�����������c
kl��vk�[tS���l�z)kfBjPXGK������W�����4�����n�fYli��U��mHVC���i
��1��n�3���bA�-���J��<��bm��@��W�Z�
�����������h��e-K�"�eR����CY}���Y{i*��<�
Z{y*����o�Y�jt�-b�ZC����<�0�D]1G���j��y40%�0��l�Q(�jd`t�eBt��e��pb�y�?%.�q��xd���J5�����g���!(�Z�a6������"Kx�b�u�4�H�h�M�w�B��hlxg)�{2�D@s��V��!�5���P�W��98�ml����a�xF�
��3�f�&����h���O���:@sw7���Qk��RG��[Jk]a[��P��x���t�G��*��f��~��C<������V�x�v=����:��h��f�=e�f��G��fv�@q��<��&�A�����2�C@QX�YCP�y�c�#�j
AQ�����657���/V�f^�W}���.��0
��e����-�Dy�Mo��^��)��Edh�\4����h�'�D@���X�"��u����.L�Gf_9�'5��/4�R�@Auj��z��������3+�M��lCP|�4�������$�����= ��29;����?c����=��<�;-���ax-�u�tI������V�Y�!(��66(����������-!��� ��W
��#�����Gf�8�
����%@���G�Z_���OL�l�: C@Ko�fh��5@�j�����Bx`�Y
���������������W$������5@�����2���2��Q���z��YT���l����������u~�eD=����
����~����9�`����246�0C@c�
s46\!���Q8@geT@geT@geT����(N��wN$%���h���-LL	�b~* #@�������^Ai��7�
��q���ha�uYef����m����f[��-�R�=~H��5�WcZ4�}Dg�1���.*��.*��.*�V+`�c�c�c�#�����Byd��I�$�PI&��LB%��jd��I�F&����v��Ihk'���B�d�\�P.��K+`Hk���f���B[��Z
�j5�d5����`.�W��+�n�@KG�H�N�q���*���Utw�
��kG�t:<�z�0�����Z�p�S��3��J:t ���������Y������>��s���l����	'8N�s���H&hEb�����TF:��'�z���z���z��u�������xj���k���k��Zj��P���m/��B�u�B�u�B�u���H:��(3������U�!��CX�H�����R�h���:��%tXwK���*�e����k������yp��y*p� ��y_������#X��ZN N���[�f�_��:�[#tX�F����kR�d�F;����J���J���J���J�5s1nk���VO����C}������T[M����o5��*�_J~�/��K����o�_�����&H�� �j���	\M��j�W4������&hD5E#0����q�����K�`5��
�7P#z�P~�,��
�7��zX�p�����L����a�]���2uX_������@��itXw������a-5re�T%3�W�i��&:��MtXG
|�=���NR�k2�u�d�����������f�nd��(��Q:���l�x�cF�><
���B�u7�k�d���C3���5�a��@�=�a���������f��/���1l��Ss������h���
��:�]+�9�����*����
:�[tX�6�Em(����~����Q���WO&��;v����TN���rUY^d��I��i�VaY��B�i�:0��$�W�^=y�:�/��|��B�b5�9�>�@B3��M���v�H�`���xuCN���E?|�A	��2:�[aM<(������� ���J|��fBq���f�vM���@^]�i�0�D%u
|E�6�O���v{�$��P���Cb�G�J�����%	z\� ;�9�;�j���n�4%
NX�R�]\�����a����6(v�M��_��gV���Z�!���s��t]��%�����U�"�`�,H-��B��ZUGi}o��,�Tq���)�+}q��������v�������Y��7��j=K�[ez���[o}�t�h�m����>`���]���^7���������n �����EM���h/iP�Z4k����|Ot��"9�P�����TCV{��j�]��������@��?��5�b"��71�$4+ZC�[&[5`��i�o���Q�����g����}���It��Y���F����zu�������o���������y�tF�h �X��������=�.��E��I����������W/N�|�����73���,�2A����|� �����9}������oO����|��g���>X��?{|��(X(��2<�/���������6�<���������8�z�&�Y����r������g�����g/�8����?}�i`�fN�����O���`�W����WRVi�������</�z/Q���0�z.����
���#���
�k��[�b�'[���[p��q�����L>Ly�;�+*�������y�=���2$��<�hd{~!��6Zn7_��h����`r�^�������������uD?o��y���bu�Z�/��Y���������s����/"��>�>Z]]�W�@,dO#�j���q-W�v��O%����?��z���(����HD3�^E��f�ryYT��}��R.'J�A�=��`���>�3
���L��e��"�0�b�xc�����*���V%V�dF[��<s��d`� |��N��f����^'���Ub�	��	��%����4�W�I~��#��������"�T j��	$��	��������)k������n �(N�:��L%R�	f�taq��%R�	f\p	�l�-��\fS(���_:W�n���L����
D����:���^������s��8���m7t��:��vkZb�	����5�~���!�>{�����Wz���sZ`?C�w�b�=��tS�?W]^x�Q�zu��e�������o���x�a�����@�Q,pH��8���������@
/�i��;<�'�����5���J��+�����P�����.���=����.q����`�S�~j`��<zE}~G����{R���f�px
��n{sI��|={�&�k������{U�����}���(:`�NS'l?b���f���}cQQ���Y�P�(��@y0��`�WpM��7�����3nV���+�=� Q�.n)����[�����Ki�dnB����J�V:�W:�O�3��(Mi�����)��	���� �a0CN)J �� �Q������'@d�y��|������#������@Q�lQ��2�!�(,�����������T?�!o����;kF���u?����Ay��	E�dn]C���SA��sb���2���
�>%vQ�3)!��#.���QO���U��<������H��&��
���[k D�T�G���[���)��z����� ���W�81_���U�2�Q7�{{��l������wV<���b�NU����u�C�+g>(��r�c~�1�T[��3L�K�T�uF��0^�
������)h8{1�j( [,]'&��"�~ ���j:�jV	��U�`��h���5��4���z���Q9������v������f�K��l��^����{q<}d���	�2��v�0�^� �O������H1V$<#��DT��J�h�^��e�Y���}0���wSed���SyN����E�:O�4��sb��8���Y�������tA1ycN�0���h��Wo+MJ���w�:����8�������Lh��5�)��@����T.:M1�������$�U�����v�
o��O��������	E�0{'M���V�vOL�G��l-����9?�m��ci2b�o�=E�#G&Zy�jk1�R�1�r� "�����<k�W�A]�4��"��>t�|�����(uh�RK�@�b hy��N���2GI��Cg����W��.���K�OY�J��}��7�'x/��$��]�y�{I�Uv�9P����?>~a��v�������x������2|\��4D����3�������))����I�/��W��H����=
*o!�P>�����8sA��B�SsX�4�)^'iil:&�o�+�j#��d�cup��N�N:�6s���o�n7 j��h�w"�j4J��o�h���nH�GwI��w���vG�m/���N"�����-;����"�W�������(����}�w�\7�}{�c����(���1�_V��W_���Z����k y�;����y�h�b�L��Y��. ���Ju�Cak����F��n���=-����C�Qss����������hk%�8��j���������\�U2.I^�v��iQ�|3�^l�B�0���*{`�B��)�a����o�J�ji��xf7��RZe���VN"���y�Y��}Uuq����7O~x�F�k�2��8i/Qs%��4{Ro����G��=�B���;����H���,A�X�.R����R$$'�R$��'��%������X�{�c�]���"���5a���(S�=�����^���O&�7M��c��]����AT�d��^���������}��D��M���Y����U�oIc���qV����.�Lt`F9(4 ��'���M�����t9�<���E��''i���2l��(��EWM:t$��l�
�����(�������?\B����s�n��������a���,��j�.��?���������x,[@��`�������<l^���W����I��y�Kh�����EO@^�z�y��:�oja���9�"�-@����������C��JM�{�����u�����*n����j�?�D=Z����������b���}u=L�H(�`a�R~�YV?A���S-i�� �eP�f���^�}
�<pP���`b�?I��vx�r��S�S`cx��~`A9�p�����7�>����Z�����~�T�q�������I�T>��h�3�&��!��a��bwe���p�0/�����?����=��}��
���n��4�����q&D�=�iFh+B���#���{��>o��.����@�����\4''M��8���)���?��uJ}`����Y���0�#,�#0�o�-��������G��P~G��%�>8�WwV��C�E���K�d�X~^��
�xl��C���Z5�x��=�x��c-~t��������������?��'3��q��!�x�>��-����'��2�O���Wo��db��x���X!;���% �-�0
��~��/����9R�}�������g3p���_<������@���(j�q�S��cl1����I�\\�IX^��gT �
T�/�1�5&eq��o��>F���:G������q���5����p����,�l�S{Gx�z���P�������(Cd��')�(��%��~�|��O�}������^�9}��%B\��(<��A�l,��*�l�b�F,J9>��!�f���0C���jYj�|��*���*�3�U�/�#�>06���e��K2��I�����9}�;���-������}Y��/���$��E�.�LF)�i0
�$sQ��K���9J^�]�io*���P�W��'z�n�,1Lx���b��:h������{��r��|��������/d�z���q���O��!8PO��(�:�~���Et.��~k�~�${{-6=`O��V8A�X�?`%���t�
�1�L+3�8Mq*,2k�����M�duf�����9'��1�7��5���Ngw1�Y���������~��[��������7l�+�������7���L��K�j��9_5;��i{]�.��
�j����?���5n;|���������1���o�g�����X]�f��*2����8g4�.)-��-?����[Y�ic�������5:}�
&����*�9�6���f���>@�_������������c���U����&�������v�W>gn��y��q8��1��(�
2�3�10Z��]���#���������.x����|��o�\���j�'���ZIZ�o)ew�P�Lh���m�B�k5_6e�<9�X���
KE���1U5-��X_�g�a
�������� +��WR��M�2T
� �~����6'o��Z��~	���R�A��P/v,�(M��p�ScG�}{�y3������T:���T
�vX����?���*E)9�������n<����h�y��S�R�������-���X|��@���^����b��m���fyC[�y�O�c�c�w'0���S)�{�d-\Y�GQ���{��w�{���Q���X�����0���F�iA������IY�D��b��2�z��y���dE]4a;�D	N�*`�
�����JGEw������]i���<�G������/���������T�8���������=����n{�������}�����e�s�(,�����
���l��k3�E�Mv<)\"��}F�3A]}Ky
���t��e���H��2�"
���(��tDA��>��e����2�2^'S���G&o+��Or����7\���3�Bw�C����(���������q�����U�?�^_��5�kj.�8]�''��)udM���e��l������_��~=�)E�ow���_B�T�z9�C�[7�������
j�������t���������2Dk�P�E��/��	��f����F�3�*#Q�h�}h5�KS�����|���,�%+#yY�S3$���L"}�����w���yH����z1�h�9���%����Rtp�����>�����<��R�}�.�Bu�~�nv ���
�o���L�t|�W�����o���
�����54��Rz(9cy�hX�NN���n��K���(��.C�b0
�����������4�RM>��|�-�K�������^�y����`4�7�k� �:�n���kN��d�J_��@Y>`�x�������h
�x�{	�����=�F����&:��W��u�;���O��]������_�L��8���U�a����k����R�e���
���A]��e_�6�����B_�	qvk����t�&z9��L���NN�<_,�a{��R�nN��(x_��7S���Sx�-*�2����������WP����|����
�b&�L�G�C�Ld�i�g|�2���i���q�%W�b��������7/��L=��?5R��
����pi<��i�\��!���?�0�D�n��0��:���=��$_����������J8�,�x����?�����e�=��?)`rM*]^����E�����<^J�4����q�S���U{hpF8��x��e��
Zz>��eu[Jmrgb'e,�K�uj~�hq��$��"i*��M�%aSj1N�Q'����E?|�AM|�2h\[�:��!M���t��o����
�B���|��+�u�����,�IW��Cq
�t���`�h'��?����@�/�x����'�@��q�t�fpP������pz<����o�"q����N!_�&���B�f�^-\���
8���������O�)�>8x�Mo�6�l����:���4�E���\��(��M}!N���I1�V���z�/�*�W��N��I�����P{W%����|(����s���'���K��q�=^5�������%����ke^[J�J�Xyb3y)���
C{]��v����}Bg>�=�������b��^p7�%�|��������1�v|L
v�#����f"�9�b?H�et9p�����\���v�'6�Kp=ei���E�����A�Y������\k���n�k�Y��.R����B/=�H/�0c���[jv��X"G�Vd�x���jiBNj���\/\�����w�,IS���`���}���
A���Nz|vz�������W��b� *��bW�H8�^�I8��os
c~��a\�������D$�H�"���W����������h�<8u�%$;r�D.+;e���G{���\�.�E\\��h�/��4xWjh��/��A�`i���G�)���,V=���Efd1�X�X��x��nV��g����bld�����E�r�z�f�>������o�qtK��y���U��[��W]������=�=�j�?c��������H��Dh�a�\B8�^k?�_���P[_<�!�eZ�0��J,<���� �h��T~/x��v�S����_a���h<��\���#/�Z��U�������	�)Q���"�b��5>�1`-5�~S���h������cW\���5��������[Dyz�+x�d@OYL��}t��5�j5�7\Ss#�YW���sks��K��r�p0��1�K��T<���#�����o`�=r
�������z@��]�D��]-����[Z��F��J�LvE�8���MM	���4���cC��_�����]��3�8�k�;9s�����%�a��Y�;�,D+�=��z��b�Jx�X�
����GB���M���Y\��j";r�@��SJ�@1�Csu}����x ���e�����g�|}��EUZV(���uR6�Il]�b�fo7�����x����f��q��>�e����k�����]�W�6���2{�����T�b��������.��8Mcg�2WJ���"&��iW!W�Mk�\l�.����-�#)������
@f����'JK�����>Z�S�)(�LoX�il��~�Si�_z��r���v��_��t6N�Miz'����T�O{S����%
�<� %����p&���+38����|�|���Ky��
B'����/^"�w86�a�_M?G�_P�]���n�6�>G�U�D�����R��.|	�bf��X������Zb��^v����h�z�1���94K]��������>�7M5��e�g*���|�h7{[�
����w��;���+��l��,���H-cC��o7�����J���������U�:<��5���E�b�����������wS�c;:�O�G�8��frN���4�s��Ed1�]x@{	?����������t���{���������dF����E8�37:Y�����v��C���$zV�2.p������7�_��61�;N/�{�6����|��h�N���X^�"������&&�lF(�jAEP���0,"�Q/�"hr�UD>�*x�As��"�lF���"R_h���("���LjTi*���UD1#�2���S.iV3���+���,R�V�56�f��Xj�Wg9��������p8
J#9��W[A2�v�"r�f�E�GA8�����S�CHI�#>���v�m���Kb�_����!J�a�'��R�� 18rH���@ov}v;\p�r�f+�V�]�YGr���\����0CQ|���E��+���U.�@���H.����/��!OX���7���:�U�X��V����S���&�7kg%(5�#�N�t���9��t����m5
�b��n�FoV�E���8����lE���C�i7~�7�p v��~�!����Y�:���.�O tq���eqZ��=�b���#�z����������T���-�<+��6O..��xJ)�-����NIC6�v�_%�lB-���W�M������B����������wa�kC\P��-Z�����r&�C��?����m�Wh��-���-�=���&�����������V�����x�<x����nV�u��u�Ddw%�G��/����ne���+������|j�7�4
�p�^�u���>`4Qa�y�����?���O��q�z9�J�oQ����9��1���YR�`@�c����s����?���o�4k�u��%������cz��J��oDTh�	n��@�TK�j���j=����`�
^:|@z�����������~I��c�j!����/��F���b fs�P����7��Y<+EC�[Y�VA�n�v�EEq��g����,$#�
#�FFTY����+�f�������:�y�������=�
�gD��5#w�d�B�����f�]?�=���<�)~�J:Qd��Y�8�S�Y�s�Y�k�4d�6|�x9�H���@���|3����!��d���:������V�@[�Q�bL���K?R37��~����Q?y'r���L������Vz'r�����Ty����Ju��
UXH*���-�9 if����w��#�_3�Vw/������\��T�?(�*�q4��h�J�����V�����?�av
|!�������+����%Qt<�/*K��vM��h�c'�z��-j�����dd�
��7�K�����P$�1C��,���	����zG��D���AM*��;���B����\����Q$�gD����vnO�%\�����'�F$�Q�#|���tWa'L5�#��"����q�@BZ���G�^4������X��A���o���D
H������^������6K+����5�@[ p-&(��^i�w@���C��(�u�p��������3���Z&�AH���JvG�J���������zZq9����]`D{	-g��0��^�2� ��;��R���*��3����9p��*/	J�s�Y�#������7�0�.3=�Na���^B4���M%�i���bO��/����Q��J3s���������Kq�=�e<��Bzr���$�3�v���H$��g�O,��
�JU�C#��kD���+�w�������4�����2K��]}�K�����Y�S�<�d�J�].����,��?g$�v����7������i�<��x�\m��`���n�6"%�|��[5"�|?"����C�o�7�WV���q8����M{)�u&b�c	�h�"�b#r*��q�^������V��M���G���2��=�2����v7�Bh��_��1�����7S;ZW�%W����q[�X
aCD�cK�eu���6+�f���.�[x�����(��_���/��j��O����t��$�����#�V�<.��	!���\���)��K%����i0��u�������a��3����p�>�����0pu��.}Cr��d���E��
��������.���~Go��i
�����f+ww�����:�~3"�z)�C�!����9���8"n���1�����`�AB�j^��kN'�R������3�8���[:	��{�	,�������K��j,����9���HV&J_gjd�~��<���F.����cWNl�y��v&�A6&����%[&L��1Q��N_w�#����_������"�e��dA���QT;������v�y�� E�<��sg�Q/���t�Xo� �:���M�zl�H��>�����N�O�X����p��;��2�A@1���n��)�#���p8�[�cH�[�r����x	N~1o��6q�'�g����T�1�x��<�=T��(I��_p'�������n�
�<)M
��;M�{I�t;`������������o�Hb�	�3�T�)�p����Ir���p�y��z�����g�4O=���0TR���K��~	�A@����x��{�o=d�9�t�zopx��3����4�#�id������c�tw�b7�qEnC$��g��!q�?��{f��Lr7$�|��rFk�]V�rf�����������Mv�
�9s������xt�+e9���5���w@��4g����q+��.���NXz���;�0_���&�#A�������U��t��v��f��������3�n�NYJ����������K%!u��������C!�������3�J��+�ewz��W�{�x	��
�n�d�7��;��!H�	�De����T�m�oX�wU���Y�v��y�&����DVc"��[A�u�1��V�kU�v-1��m'�=�\������fq���D��-���-�6TJoU��q*�w�@`S���y�%1h��$��S��O�!h^$���s���p:t�	QT���sF#
F[���}��s��iL@dRd��{�M�iD�������AR�����H6R.�)4)
�y0���o��Nw2��g
��(��`��<�0\)I�^�������]�X2q��Q��2#eB|Ki|�(=��;1�F��3�G����0�o��B,vR]�����(=��z��{�(/��!���8�h����3��m�1�o��8d�[�T��!/zj���
	v�����}���������5����T�n���x�*�h��m�m����N�����5��c���(���zh�Wz��r7��psQ�B�\���\X�yq�	E�(��}�NQU�k�`!q�1B%��uGz���J���������)Uf����$��G�m���I�W%3y�|.������������!�JE�mT��<e�4}�Fl��v
W+u�����>M�Og���\D���|�7��iJQ��DbT�[(���mW
3��JQ;�Z���:�F)r�R��t����c)Z.�����=�R�6�m������H-�R����P�
_>N7����~J����T7z���$��p!6g��#$J��������sA��K?l{�'���ud�0K��P����wJtQ����^E4��p$��='�;�I�)��!v�x6H�u�8A��;�.��\/����~���E�[��IH��x���aVmd1� 7Yd�
Ow{w���{��[���S33����~���{�O��f�O�������9�4��Z��S�lz�|���B����i�����c�N	]
�+���6���w�?�b�����������H�C�`�yI6"9�=��K21	v��wC'�Z��P�*H��H����F�F��s�mF��J��a�4����6�gw�N5!����;����6 ��7���3I�m& �H3��=w&�'���HN�i|�����Xg'#��|��Dlv�'������*uJMTR3����2�(���������2�.}���� >�R0��(�$�62r�f�<��R��x�l���B�?m��bo4��,������[�#}����UsX�k�r<c�4�j�9���=��<H��/jW��|������g�?�������0k���a�&�P���6�]%6F�b�y���jX#��S��Nt�vJ�1i�u���3c~�Bl��J[�D�W�W�6�8\�� k���AA�N�*���>����h���������du�]�
p%��}:��3��0��	b�s8��y�^e$&���{v��g���CB|�)�(<g3����������c�*%q�9�,��9��s����}+G���������g��K�P-���#�-J1T�K�����T�	Q�T���K�PM%
zP����_����R_7f&=�Hu.s�Tp�9Gl	
k�������������#f#�����
W�����[��b����^��C@Al�*pa����+s�������kQtT�/������.�%f3���$�*S����Ee��SP�q������jQ��'s�V�\�2��������a��U���DC�\�.t��nc)�J=j��m%������R%~[I�:U�����CU���D��[���R���zd=���R�~[�f��T����������J�zl%jWz[�R��J^�T!s�F����6���2�/P1�Z��3����s���L��5#�F��\t���Ui%��)�]��@�Z����h�z�^���LD��L	V9����:����{VLM>�����gg�����"���f��+[��m���x��%�_-<�V�*yx��j�Q]~��/��E����-V�jE����g�g��>z$�o���&sn���p����o
����g=.W�1�m���s��9�Cv?9����iD���BKf�������s�������f�3)]��j������6h��v�t�T��1�eb�S�G���A�x�=*g�����P�	�����=xS�?(YP�N<�U���,���2N��K"z�s�cWrO	�Kq�!�L2�9��!�c)��ERb(���G"Y�vh��J�
��	�B~8������$'������;�@m��~�����.�c��-yT��k7�EW�&�	�`li2(�9g��t3���h���{vuH�)�<���$=�2C��Z��#xv��{
wH9Wkx��N\����>Q���KlD�1:�us5�<�"<���^���	�*��^���}kG�����{��J3�*A~\����{����'�w�Sp�Y[��[�79�c[�{=:�������s��<�LV��d*�����_�H�L����:�:�`�"@<��O�d^J5r���2,?�������=,�b
s����������l,����U��kO�#������0i4\05^�lS�w+Y��g�,��0w:��$5V{c���S�e�3����W=��:����*`�Z�`zW�x��8�oN�8F7w@�Q���k��������F_h��-6����]����/=�[��vL��zf���:j���<z����:	��/�M�����?rQ����f~�D����2��k�n�i+��/�3�k��=;�r>,�?j��a����+b����(j���R�,�����\P�����V��Y4~����~���k�Mq�C���%"_D��^-�\/J�p1Hq��f"�#:������2�C <���|5�+$y���1<�3��8C���)W�Q��Dg+�|5�)���?1R^P������������j'_M�t�p�7��:'_M���D\2(��8Y���`�~����']����������_����c]��|d�Oz4�j�|5~���8�A�G5hF��4�������"��SYd/7�[${<��1��8��������H^s4�G����u0�(e��|�a��0�s8���8�a������<*����>�\���h:�n�rb��A��s;�����m��!���-�u��$���FFG
R�r�Q3Hq��$���.�+?@��X��)?�Cy�T��	M�����Wa!����N�b`���z��������.��Hv<��0�S����.Y��$�����&?$����/~��v�E����i,�OH;���i.l����M.������u��=iK�1�W����wu&�[�:�
p�iCp�����d����*
��i��z�G��������-C���6y�$����������B��PU���A�b���/���t����)�={���q����Y������15���G ��N���S��`�k2�-�G��~:r��#"f��8��<���6a
p.��Su��bA^<��x0�i���F�����!�R_|�����
���i"}�����o<\�G��4�gG�����^�h0V�;�B�A�L�8ctP�Q�
('��wa�����M��D8[R���[l�r[�br���t�������3�g�����������,�|���u�t��!�������������?�`X$�>�oy��0��	�8��/Y�(GH�S^@�p� s��y�1��/��s���D=$�A$7���k��Q��(F68���x�I4�Z�F B0�9�f������P���	��+�q%��przRJ�OmD����i������O\�B��i���#�1e��ix�}����t����tQ�p��9������Z�TQ���G����D>w��Dm !�A �PD>?�SDm@+d�ZX���T����,f���.��JX��<����dpa���|����KX�od.u(�H^P�?��$�y2u�G�K�K�&�82�:Hb�#��b:a�A�t� 
�	�h���	G�SL��$��&�=�,'_�?9������@�TAfd�����C�0��jUP(���!u�6-�\g�����NTzzO8$K\I��`�T�s����c�.��}D*/`C4�X-�����:�����F,p�%�r�.�:��Y�X`����M�-1���UJgY��E*/Wy�����"�t/����k���DR�0J�*�@�A��*�%�\g�E��*�G�H>���Ao���T^���H�T^8��Z�C�����*/�Py-�l�ci�N����K��D��S*��(�n��YF�q��������Rl~8C���(����������I�������t;3kd�W�p�>�J> �=v��15���k^��^����1�����)f{�P���s�;�yS>.<6�H>&�]Tx<��.�������ZH���!���D��y��;{)�@��.)@�d�������O��^yW���$���\8������i.����Z=�m2h�gq�T���~��N��aM���[���Tt�G��#�~�8����als6�	Zbm�,���w�(�N������(�9��u���:l��,u�	����{W����020��5cQ�����:�=_�����7�:�l�,�����_'2��7�(@��#
���@8^���"����b�
A��2��U�-��0�����[�p�XMS��Z�nt������-�%�\��_���$���[J�{��6Y���0M%�c�O��
�+:����'������a�+
�T\8����}���/���I�����-y
���-�Vnm41Bj��D������*@V���Z8����BD��U�8#�&�t�W��G��6����I���y��$9'�f2�����)*��C�2���B��c���w��0(�)s/���E�^\Yh[#��x�t��oV�2�D��W+K4������������k8�U�I����*���H9i@�!��m"������|O�,X���k��������\��
`����^�m�� 5m������(�c�z��A>@��C2�[���4sa����8M�V��H��4m,8>�$Sf���0	�G���0
C3&Q�w$s@�^�J�����84_�I�r��$��i��o��?�%F�R&%A&r
�F�[	��"���4�A���K�Y�<�i�+�.�Dq�����������p8"��De
���M�Ah����6�k�������w,���C�������9�L�ZN��h�D�B37k��;��Z�|?h�8l[���q��?����?�,.�k!�E�!:|k42D1�%5Y���1���C�L����#���lQ�&�sW.���f���Tr��4�\T�I��4�d;T��I�G�RX�P�b|\���h�Wm����O��7f)�5�k�?30�L0i#5�� ��[7�L�M�{[�=�Ho03�3�4����]r��:�<G�3�,����s�uF�8c��V�G��!'�n���I<�hJhA�)^lz�Oxk]������7����
2����Jb�1<�)����o������&���8AN��Y����$.2�ymG2mH���`�/����������8wP�!A���^��G������-���L��#(a$'��M&dK�pg	���#N��F,?��O����2�g��E�L;��.A����|}�Kwz����������X>AL��.���&6L.J�wd|�j	�>�r�J��
���I���fP���;�(���&����a;�\nA��s@l����(����<0��017������95��|iR�����Y��C| �xnC<"���a���`��o������L��o�}`���O��4�z��x:�9'>4�v��\:9�}#q�=������2�@�0�{:���L�`�8��z������'���?�ij	F���W?`���(7�F�hZ�S&�'n�,�,�t�N���s��j����cy3�l���E8_!u$lS�A>z��<E��D�'�������M;CH��S��8{�*E�-�H�)=0X�������H;������qS3��_x�Egg�9q�=��l
Q�=g"�G��-�aC�y���3��=g����f�9qv=����t�s&�t�8�Z2M�9;��O�w��&�8������q�C����_�����}���q��,���v���������nO�dL�\wH�H_���z���|���������uJ�x�[�!�Hr!!-��L�Vw��I���b����~JZQ��[Il<����@I����:�pa:��q���F$�.9��2�c�3�C+�T2�D��;;Ij�����1����((�4���y�p�xI6GC����\?�M;D��l�^�����6�Q��S���XR�`���
���eE�������L�j��15pn��Bq�1��8}"g�z*��MzJ���sTT�H>lRTFz������~�Z���K	Xv��;_���������zW^�?��Mu����g�h��j���b�c�Z�`0ry_�~�gr�&
vHH_�^��Z����;g�(���\����(��r�K�P�A
�	ii�k5Q��&BH
���u�l�8tN�����a�0AEW�3b�����=�����&X�/��a��0�@���^	�!�Q&��D�-�
"���0����,'�m�G
�cy���hs�3YI�v�
:@i�E������`�v���pS����n0K/E;���������|6��7���o��%���� �a�c���/������`����� ��r3�d|�3@j�n$4@�	y��=�	Z��1�n��$ ��x������o������r���~%�	?� �V��$���ExP/���]�`�%�0����E��D�%�b�/��@Lkc�\�It��x�1�w��$��� �84\8���O�������F��@ry�<*���[%A6!�6���o#�|j|�� %�J����U�)u<�H���mF�\1rs�s�������o��=n-_���=?]�^�int�Lc*���|���������O����4?�S�p/���P��eM��3��H��7�i<~�C�?R�`�mkO������H����5����z�"�D�Zx����p=<1�Rxn��%�Gm3m���8��.3�(�0i<[�&�Q�W���"��0k��D������,���<�����2��9����d�]wWc��JX��B������s����UT��J�F��c�a����������?S�ieS�K�����G����c{�Y����29Qu��H�Q]`u�\v�A�g9�^tY�\����@,��'��@r�����&��,�d(���V�uew��x�Y����{A�����=��<s��S�#���`ak?FX;��<��d%a�~���p���Q�#�b��6��K�t���&��	�o&�������q��3yT5�nRA����}�����.r�2H1[M�5�eD��,�+���)�]�2���I�ym� f�vo<�'
?A���S���9
�9������
�2�0J�a�3��4�V�V��B�p����|s![M�-�)|����C���Z8�G&p,l4d�I���%G�B&�������B����tn�-/�\�	�T�-���v�I��z&��L��m���xa�,��d�3�*e	,3����b�D��	������r����	$��������L����8�hKb!����+���	<�H����c2Z$��a�����O>T��,�73����4CD�i.01����:�G'��������B��0���i0>-4)�FI�dV���@u0Ba�Ln7)x�w��?LS�W��qs����{�T,I9�k3,��SB�$4wK�av���J��p�$w��+5zdq:a����o��oa��k1�����Y��m�0�l5:0C��F�3�G�F����f�L�P 	��<xt`r�M�E�3��f�'5s`f����8{`&�s%��
w����L�T*I9�lt`j�2Ih����&�����u`�����s�Ej������9Hq���}S.��DE����V���G�8rE��&���J'��TLW��%�D�TL;tE�m��A�Su��E5JX�XQr�����]R���[�*��)�������,��o�X�������;@x�}$��9��<N��[-��0�9��s'����p�>�^r�����NG�W+1�b�������%��s,o�r�"1��������~+X	%��������x�-��o�������Pe9�����X���i�KF&�����R�����*K��6���U2U[JO����gZ�9nz�M�nz]�>bh��Vy�}S��:"����-����<Y^�'FL�(BNb�Y�+@^X��D����^Q��4D�q�`T&�� 2�C���i��j�[UFWKe=&���i���rCmF�)�����}Q�^?~|���}
�{S�v�-�u��<}����Su�o�
|b��4�iT����<��'�[���q�{>�B���z���������Fy�����5%E<m(����������,[�n5�B��2X��!�6�
j�1�!E�)\AJp���c#��a����n2��|l<u��(����*bU]l`�����T��<��Z����zw~�Y}�H���kVrQ<v��Ps#s)L�(�4��\7$�����oL�(��>�%�)��c0���1�#���3�5l�&s�s������g���/��'K4�a��c�#���Z�X�N����J��9��.5�n��%��t������6>�I�f�r��9����
t0��{��A����������f��&C�>��f�i(b����S2Zz�����(�F�����\f�MxV��������������a���e��.�(�eF������������c�p9�w�-LKN>��0N���~F�����w��^�X[���.��'^:�;��c���#-x�L�t��+^ao��kk���F=y}{
��"�X_~���������qAn�����+z����[������z��dE�co�(n;����<��3���[L�l�k��!���m�mS��k�'����=�,�qA���b��n�@S�-�FY{������&�O"$�����������Q����ZFon�b����TG����ZMoe�b���EUG�h-���q4�$�z����x�D���78��4����RT����:0�&WY����*������R�C���;K���x�&�[e�������'G���r�E������l���������|��*��%���h����869@)Fx�U n�Vi����v��0�G#A�xL����~�Sh$��Muo��V�4��Hd#�Y$>�D�@��o<J�|�S�gU(�sy��S>���������V'Q��t9�0���}��J����EE��;(v��@�x������Z�� D�HfI��-?J�6�����hE�;��
x3P8�D-q[P�Vg ��1���
/�����'��[��dr��P�r����f���F�K1�����
��~�>%��}6�k�^�:]��sQ��yS'|q:��<����B=� `�>��?�8���I��?�&�V���������~�oz�` d�+J��\��x�W��X61��7_���_'��d��_��^
#���YG�C��jF��z�R�/�����p�=pXe�M	?����lj�����7�q5C�4��|���p�4y��r^]>�����V�R���9F
(Z�����������{�B����?6����S����%����M�����i�4�����k�f�!c-���(0�}�]�_�����KYm�Lx��\���V]LdD���4�`BJ���g1�3on+�pBH:���&2�Fe��U�,�L��m�����*���������j��P�����E��@#�e���P�K��j>�z�%|�j!�
���]�($�"��B����~�4�t
�f	y�-���k��w�B���1y���z��	��D����I$���u)����jc�l6�
��`\����;����.��	�~�����.�������6�Ebj��(}kC8�C>�����)#�8��=w�V����<O]��)���i�����������]�!R���GB��x��.�>R����z��W�����#AG�bn���XR��2��SH�N�)�""B�,�&��y�;&�R(����R�y��0��C(����U�S��5
�.�����p�Z������G*�/Y�S��D�G"�,\�2&�TM�H���"hLL�.&!&)��x61��u*-��5���x4s�<\��38���3���W!����|���E��y�v�H��?{c�m���9�|�����Er[)d�c�8�����a��m,L>���6YB����h�"B�,������I�8m^4o;�zxJ��T���@�2~�$��`T��6[b����_{x|J�s���5��9}\�y�k�����d%(���e�Ah��+"���I!�CLCq�
��r�AK9>��:*	��|z�aC��k����k���D(�B����V�c9dR$���C��~d�.g��_�8$~+#��*���q������7���jOT��*���������Z�r�����'e��fL����Z�>.������p2�I�s��#3]�`����5k�H����ch�/�z�������������NX�=d��![x��&<%tD����q�C��_��������K�y&o��#���=�l�����nlU�InwVo:���s��{��Yr=��`u����t|�6o���W���p�`^��K&0����xmr�1p�Z�\"9;9���w7�[���2���N�����3F��P����7��H�^������e���D�^-�H�q��>���D�/�2��2�H��3�(A�z��{���^.Vr��NT�Q8J>}<?�����sy�|�3��v8����B�C3-{A!���O�!�@�������|��}��o�������3��'�6:�r�&P-p�!����m�����j.u����(�|��-��,���IH�3��.�?J��.o���f��
�7)�����j��`
P�Rx���@�����*���.����c��g��z������y*�������E��������q���s�/���Y����/��/~�����]9"i�����P�D���Lf�����,������������G���-��	�6C�0��G[H����b������Y[Z�MV���R-`z�J$�&.538 ����~'1kK�U����!�G��w�Y6q��!��G"��)�p[?����/�����Wo�l���r�8�S`0�L��7�}�?�������:���wP�������8�����_|������a�W��!~�7.�&K1bM
X��]~l��R���)q6q��g>�[�A����)o�Sn�����7`�1V�@����?��0d�2�CnD�=����@���0+�H�W�j@iW��v��q�k�$���
���Gmp��']9��r���B�@���r��#��d�s_-� �R���Q�����T�����Z<����f'VE6���?��DjX�r�h�t��c $+�vb���+4�w��
���(�3+1�������A?!s_�a�%�_��k�	fg���8�����m�dt��g/��,�Mef�@�G��i��v=�P��������Im�Mr/$�m��T����xz������Wx^R���r��QG���#l�����9~��L������������~��]���sy�Oy����2����!��>�o����9Za��3��3c�,D�E�C�ac���?����ba�-a�LH��bZ��~:&��u��7BJ��`� yW����t���}��O`�c�\�tT>�.!�Y@]XB:x�����R��_,�Ax�v���j:E���<�$M@��	�H�Q�?�\M�����z��UQ�[�$l��0�i+�������a��un=RF�*��\
������������>C�T�?��9W��� �x�GZY�Xt�>RG���G���@���:��(�u��By&b��H�X��>��y�4������>jJ�L��P<B2��������������b�����"\�~3����T&\/M���d��?j��{���O�6�.'A�36@p_����(��n{�9##�8e���=R������t�����7Ha�,�����\���'6x�,���L�?����p��2�LU1���M����xM<ZYW�8*�)�K�I�2l��;~������m������X����~��7���	.�`���~�\1����i�yu�����s6.�]����y-�}|��=N?����-?xY�e~���M�Z��#0�D�O^�~mC�'���/������k��y������O<��t;���o��i�~������C�����:^<��laIcs�����x]�&��{����|DO:n���x���/�in����/����_���9��}������my��1R��K�/Ds�������/��K6_�a���N�#�F������?0�kM��/�[��t���~?�t:�bS>������"6�����:��:T��@%�WD�=<>g��!��AX�C�
��3�zd�:������7�t��-�Y��QA�eLnA�+�|�.���a���n�����}��W��}��������?����'��X	k����?}�m���'��{%���7�.��:�������c����DL�/��6T�'����vmcI�Y�%���6�������OrK������O?L���o�����tz�cx����C�J|H�)l�^�9��Z���<3�D�����_���o�s�cx��d��l�1
6�3�r`���N��V��}�)�[f5�m�0�;t3[�!/���k��aVc��I��?�����C�^�����
��e�9xV���"Jn�)�[W[�������O��������
}
��.���<���y���p���~�)����V�ym���������w��{5?�on�&	��c
��6���2�<k��t�j��cK+����S�5U:�]qRf�U�h���z��D��#+��o�?}���o���3���B�0�g%%,S#�A'3��RG��P���O�#�[K�������H����u��j�6��BQ��;�$?&�$&6l�P��[j�9�;j�f�O������bp�A�������jt���������{{�1�������[�s������S�eC���V��x�LL�	������D�S<������a�q$	�F�&�i����f!4TZ��0iN(T�[�=�� rh���@o��
f�k������Ll���)+|��[������l#��R�����V~,[�x- ����v���z�T������������X��b���� �W����Ln�&�e"��e�n��+;`�=�^a������:��\/�W�
,��|z{�d���C����"��%������D�Z�tM_,_�	��y�.��A+o���d	���-LE(_!�J�+TG�s5�+�U�yE�����#���_4����L�V������s���e`����}:�%pT@����-N��K��
\2��m��w�%5$T�M��j���1���h�j�Pv�2���B
Wfw|���������?*��K��+�|
�i��QZ�y��������`�u�^C
������&�
�^���������u�1�F���9O�e�?n��	��c�v#G�����$���Z��A25H@�I��m���L�)�T����������{W=������t��b�c�1��J�.{7�O�O�������'l7�]�?���k���gW�>i��;��l������}����mu�\��[��m����l4������K{7��|���|����{��<�2c�|;$1�� 0x�4e�-��a�W���//����������C�7������"0��8���] �	Hh�	�@M�?}�����W_|��`L��������1W��c�����7��a|��g�a��v�6Z�`���l�,{K�w�w�T���,�����Yi��xG�b������y�&�����\�K�}��
4M��_��������0��]�}�iZ{�+�R/0����.�((dYz�R�uv�lJ��c}��<��I����7o4����o��VO�J�5�}}�� �).�1o������Wq���
^%�E�
.m�g�Z�����><U�l��!\����^2�����_�����]y������:x�<� R�Xnx:��{)������3H
��S�aS����d�N�s�*fe`�w��Go^�lG��a��7	*�u���!���c�s�2 XT|Y$��q6����_�~��O�|��
B��;_7lB5�E������W��������-��qWA�B����Ro>��X]���c���xd��������}*����M�A�J}�-9��}�:��}�wPw����G�v��<����\BA|W�K��
��bx�;Hw���J�|��7�pXl�W����
~���#k_���>���$��
�;6��������������6����|��=,T����G����_�_y�~�[���@>r��C�	�#t��uC���:y���a��fS���Y��N��tW�P����g�\�L?�U�B7m��E�_���{]����<@������r*K=�f�����ey�CG/�{b�����k��;��y��+��}�-=&���J��������^��}��"���O{\?���%�HXyg���x�Aw
��������@���s	ob#���z���5Z�����+~�� ��"\�1��U"��������/^]G����E��J����������*$KmN-��6�`�E�[��-Z�����A��O-��6�`�E��`������+�	���(^Igl�
D�$���{��<r�!M��\)���P���-W��������v�x#�p�y�c
1A����#
��R#��w������K!����0�W�C��r"��S�m6���T�X	V�3�����#�����z�	3i�����^���V/��T[�R�%��<������&X�M	���}|p�+eG�a�\c_@�!W�
����-���\)���|������F6���*>�l0�+�l52�@�-���r����-�D�]�l�EA�I�C8������Jx����L����e����?���x�^��w��yD�
/�g$dxro8�|�p�@�Ix�3��:s1�-�:]�z��-Yz���*=<�����*=��jm����	3�]���iDpa������d���s���5�����\1�V���>}�r%��v������6
�{HoG�����Wc��jLa�g���{�J/�+�������RW�������+@f���X2<I�7�����K��Xc��Z}b�`�� L�S�\~`z���T�\5:D�-�L��'Y����}wy��Gy&-�N�t�I��2�v%����8�#d��{��b���f�� �
�P�6I����yp�cV`����!�}5��=�`�4D�Q��VB�V�D$R���?�������~%�y���:<k�x���y������W�k8���Qn�{���2�]e�|~�I?v�������@6������w@f���5��|5�8oR8�2��n���5����{
	��.�+~v�+6X�L0��N���O� ��o+�DL2t*af��1k���U���������T�C����6�+4Y���a>���5�Q����`��W���,�����IN���|��2�<�_��e`�s�b���fe���"��J��oS�eR
��������7��0�Y�O�	.I���.i7���>��f�x�'�T>	N�1Q�_�����a��Cj���Bx�-�_/ ��5�v�����D�����$��I�<&��<��]?��z�F����)2sv\���4��n&9���,�)s�=r��
|z�|c42#��q�x��a]<������h������SCjL�P	������U�"���A�:�>����KR�7`����,�M@<{�q]�;��N"���"��+w����Ie`��x�M���I��<���;C���r��<��Th����(A�f�7�hgH�^���Z��Zs��;,�mY��f�0%�
�R��I���F��h�`4 �^7��\��$����J��$:���f��0r��`�pJD�AtW>�/���%"����3x�'�D5@�1~��h����\&U��`}X���z�s*Dx����;@;N�!bT������N[;K>4d� ��S@��-���OAo�l3}�$A�%��4=�� �m��[�{��it������1,�D��u�*g�������_$�4"GW&>��Z$�4Wx�(2<�8�,��Qm�H���#u.������N�v����������+����G���*A�+<�����iX��S���r��������cD�������������c_o�������>����n��)�q�����M]xc�tD�At���$B�����_H~5:�OT���-R�(?�W����M~d|j������G5�Tpx8�����OE��}���G�/Mxx���&?2�������8M�f��C~d|���|�Q���Y?��/_����4�
��YAf��DHG��!�64M�d#:mV�V>A�t�J�D���#���t�G����-x��$&�k��#>�������Ww}���9{v�G�cR�5���~	��k��#>�B�'���fjI��.�&gj�3�o�����j=g��J	�����,�aT�<P�� etE)(��;Vw
�?
��"S>=��p����5_�P��=�X�=r_�E�w@��2�L�r{��T^��v}�x�h��S:��p��"��Po�5�YJ�DNI��!4&�I��<�AwY��,���}��l�����f8�%o���Mj���61���Z���G�|��!�y����c�iWX���E	%�T��C��$�U������Qd�A�g;\��a��AQ"i�s:`c��G��#��.`c�.�%q�`^����k��6df4�����������`�x�BF�1k ������h��� ��i%�6���K6����xx��>CiM3%������	_[*�{(Gz'.�i6�����"L0O]R���Q'��<\����a����5�E�b�P�8%�Y�������N���<��:�9�7>G�Y�~P���YM2'��	&����%s�o�PR�?�����q�q�}4{������'��$B�,P��}CFH�o�f����o(Z���M��,H�X���9�
k�"�9�d�����e�����\�r�U��rs�bq�
#�y����e��F�8���`J�9���!�iOvg��<�k�PmN����aK��IJiL�V|�R{����80�K6
���/����)�s�iLs��J���K6eEsa�C��;"�\[����T3������%��L����4����_M1�s���gz�~ a���Sl��:���O���D��Moc~��������o���=���lb":n�m���Q��G��z*v{�>���b?Z���%7������1~ a�{�8U����v����P+��G:�
��"2#z�\���������NJ���4�v����U`�%.����=�����{4���=�z[�/�aC���~�������C������j_����8���Sd��>rP������Mw<��;kh���W�S�s�3%��"3r�A�!g�K���<�XF�������f����th�&�����N�'����������N��`��vit��|�Bm���;^���tB�p��N���KG�p�qX�-����T��������o�[��*1	Sh�����������00���@n��'����b�1nb}t7�aCZ����h�T���`�
��-��%1�\�H���P����!Y�W�C�EG���PnEG��\�xhk,4��(3
��'�$��\C�:��(�sSt���s���:�1Q�d�^=N�����r��tYRQ�-�����X�����E��n\����n�#4n���hMtTJ����k?NF�
��z�v����]�L�.U�c��
�����������|O��e ]��{��@]09H��{��.�)�Q���D�	T���7R�am/b�u�V]�P���6Fg6urX?m����<bmEa����k���T2�r��W���N{wi3%%��-8h:?U��B����e��FJ�|��D�����Tf���>��z1B���XQt�S!k0��0������tF0��BSf���h����<�B+g8����=�3-N������z��z��:����x�i�n�����s���=3���-��
(}|j�N!�n8��3�;~NP�����0P-���h�:$N�!
S��t=��b�n�2=H�������/��E������(�\[\���\[|\���>1�����lkFE�(Im�q��T����k+����b$�lm�q��d�T9j!��3���<��xK��M�H����g��M����&�L��<3�H�x��?gA'�'��PO.�<��(�3?���8O}:J�,�t2�����8�C=��������R��Y�	�GF���������P����&9��d��9��(�%K���8��d��9��t���%u���������~�n~()�PY1�%��X�|�)�E��n<�����u��1����a�U���Z�^��z/��R?����`<���8��X���Bm����`���c�`�PYJ�M�2n��=t�A�@��"{�2Tp���,�6�)�"Z�
 ��	��9Nc�6��������t���Eh�L+B�<h����$zZp\d1[sG�+�[�J��������������My>{�����['v�����,�r����M��w��B���M��hX,x���1gd��a��R�_$?7cG#2�<��_����~s~4"����N��������!b�����$������!2�
{��{������������?��?9F�@�������/��P�_��g[�����.V�L���� Hw[�j��>o�����]�G�c<���u'����C�������@��,S���)��
�QNy[��q���iZ��5�z��y��A������d�V���l(Ls��,���fW��F>�Pf���������>�����Sg��
�XM��i&/��F=���bPh�:�n����Icx)v�f-7���?����2lq�V#=�{�u#32W���E�ej���O}������(D��R#(�D
��{� "Pr��33�����:�	
1'�z���Zz
��1�7�(D���3�N�r{��U
1AC3����Fl1��jj�m��8<!%�D��s2��1 ��i�iB�d����8*����%�N�i�;fK��k��S��J�v���2����t9_�G�Q���Q��$;��'�61�)��#���.���,���_}������Wu����+V�;GIf���eWdw��l�Y�;�oCg������QZ�?��8��z�Om�>��>�\���aO��l��M��m���-�'X��RW[W�e]>WRY�3"�������%�!ZE����K}1���-����j�Z�G0}��EV�Ns�47:�E�j���Kqr�~��va�������P`?�p�{~n�� �������W�k~wi-�g�a��.������!�dW`�-|����Kk���x�Mq~Y;�D�3�0�S����]���$����X�,C:�E{�&����G���!�$3b�W�N�G�9���v����VV�[xI�Y��!����E>�!��B�{�H=J��zh`-"V�
��\IE�4���q
:D�Q��IB�h�j'�!�
���O�x�B�����>�=-F�}OKBD���,H
�� %!"��I�mmnS@���[��������u_#<����w�S��G*���1ejx�%d��!E�^�q�����T��d|$rK
D(��`l�N#v����W����t_��;Fv�����E	�1
�O���4�3��2���v�k b�4�F����I�f��a�j���AX&�Q��9�P�0f[g����}E��M�H��b$���g���@��~�������ML�^��C;��'�$�y�'MG����e��<l�1���[����	A��,�x3/�����$1.Y��r�vH�v���������M�m�9:�����/�{���m55e�K�=r5O�a����?�.s��&�Ml���N������2S�Q��Y�$=�!6O�j����I��]�

3�k`�B�,	E�:�y�V���`��>k�v�������3��[��I[����]I��8�$fJ;���K;�H�Ej��2q+��G��r��Lig:\w�:�Gj��VS�]q����E����Y��4��v].:E�]r�d�jk��8H����Ef���nW��$#�Ona�6C�b��.��E��B��z��L��]�kW�zJ�	���\�����������UP�)���U�9E�]j�tO���K�U6K��4f
=��:/�4�(�\h�
��Y�}y�6.��r ���{���v�5�#�>�y��;m3�c���kG'3��.l���4rP7.��3����)oit1f^4L<�l�4�������?��G���"6�}S_��Rj������������W�1nV�������3A��9������j&o�;�xIY����)���i��s�����hh�
�ye���� 4��|Pca�	����i����!FiL#7��F��/r��TU��<��D{�����u���&�"x���%]~ "<�����9<b��=�xKzyx��8��AS��8t|�z8Q"�/�D��li��i��D��y�o���9Jd
E���������T�(���G���j
���s�	��T-���G���J5;�q���t��Q�t�cw">��M�nv��N�G��J7;�C'�#�����=��<��F~��G���T�n��	���/{*�q�)��fN[K5�8]H�m�7i�S��
=�f��&�eGY8K��l����egM�f�Xs��X9V���}2�p��j������m�ZCf������
��4#�(77mr�\
?�]��0Qh���+$���bY��a�D��20�fU# -�b�D1�4��-� ��L�<A �rq���'&@"$[&A7��m3B�G3��Xg8�4i���j�����=�G,���*�����ot�40iE�f6O~��+��Vd�25�eK����,b?0��q��]yx��
W�������L.��p~�O{�v�<���&Yk-ds������������D#s�A����D!��$`����p�K���P��a�-��F�:�����o:P�]a��'S���49��;�$�0��!�<4��$M����;���>0��t	�B���w�&u��3����������gS��M�~v���R~./��+��{��1Y��;��K�s=���e
t�5��<��Mq)��<�����p)S���1Y��X���4H&��2s�^ ��Ui��ns)/k\��<������9)FizH�'�m�4��x^���R���Y~����>��`�x#r~�qv@���T ����g�<>Tb�����^Yx_p�W���4���i�����y9F�b�w�d� ��s�Y��B�����-�1�6�ht�������&pd)��d����P��4�$[�����t${�4YZ��9�������6o�sLd�TQ;Z��4H�lV�R�iR<S��)�� ��2�3��
)"�����DG�e*Z�Hh� �&��s�#�X�d��A4@Ykj�IM�vELJT�+}�V��E��H�j���3��:U���
��o�9U����M��Y��6����SL��M�!?�CD�Q���?�Y<���G=�	.�gf����������00�7��m��_��0!%���h��*���.[%�<5����Ju@I��!.���Qq9�$j�05Y����k@�'�,���x��b
	l����|���)&��4d��z��g��+SPV�Y�����7H#3�A�e�K��2��p��(.<���K�}�$6��9�&�5�F�:���h�03(X�4r��)������h�lG?>����Mm_��;��)���O�������g�3���m�e������Mq�V�bW](�gG���eBkb�G����u�ak����R%�:�Q:�Y�����"[��p�=�Bj]#ky���T��-�k��7��|������'��4iSX�dc�G"���~���������_�r��T������Mo[��}u)����:�<����g�y7}��!��K�
G��`��"f�w�{��=�jg�������c��Jf�d��I�������W���-�e�7(a9���n�5}����<��+�����������[�g��d��������I$0x���������3�B�����43��r=�l�1~�������]K6���@7P\8���FI�M��d�n-XE����������������r:h�$�m��q����]n�/�:��s�kr(OL���rxs���E=�k�Iz�tkG�!�����B��6��b,�Yt�
P\�me���q���O[i�,o��A�)��������<�"��|��
�������Wk������z�ZN�A��p{���<v�aP
gy���M�S~8���l1{E(�S��t����F��}���V~�-.��Q��������6%��L���!����5s���w�����e�]:�H��i|p�kX/�yfV�4����q8P{Yyx�u��OrzF>?��g��y������e��,�6�Op�C�P� '%I���sq��1��a�o���H�[o�����@kW�x����PN��h���(����T-��)����T�k0��<4^�������,c3\b�Z�u�1>�#��-39��J�/��%N89�������Z&����Rf!<W�J��5��m�)
���(s}`���|d�G�����r��W��a�=B��]���Ic��q9���sg����0�\LPQv����I�Q|�1�nW����}�3\��^�����g�G����`����5�~�n�������Ku�������b�����DH1��k}J�I$2����2�����.�v�^��<���k�Jo����B�<�2%���(�Ko�����Tx�I(��V����;R�������^W{������PI�K�<�kEf�~����f3��F�H�Y��j:x�`Un��N,�a�svB���t
R"r��FF�LU��
k

���C'�	6J^&e��}���f} ������E�2jF��0d��^��*�f�(Ku���YT�*'g�(2���h�x7�25XD��C!5Dj��Scbh�j�b!�D/��Us����di�E����R#1��-��u=5�%�������v!�i�����dl G���[?�.���w++��p9Olg�_�&F�8��*������*bD�&
�D�ax����
n���0,B2��z�K�Q�^�����C�������*PoW�p�H.�B���;��a��L�e�9����	"T9�
�cm@�m�F
�cm@�M��
�cm@�-�&����D�L	� 9n�AT]�
����6�
U�M���`t��xF,s=�N<D�G��<��m�G���?}�1���3�.0���2�w[\���|��[��4?�
4�d_T�-O�6,���F���Z�x����w��>��=t�D����?'��^���\/�^�_a��P������#g���P����&F����T4nH�ke����C0�O���
C�=W�'�$����\qZ��p��V�np%1�`�I7r�kw��"F����}�JbT�IW��;\���1*��+�������I���%�+%f{y-�L/|��`���������Tf"�b��0?s�@&o��\At��!�7�����u��!���O�m�#E���!x[�];"y�����>R$��`��!!�:F�<�t��eJ��#��(���B�������61"���}�*bD�j�q�!uK����'������z.x9�(���y�c�W|h#��<l�����%g��W��������P~��=��^�=�����	�"z�'��1��\�����TY�E)h^�f�!�i��cB�������$���G�o[+L �w��9c��4�5�3!�Ly�u'�2@8�#3��hr����8 ��Vu_o�����T{�������j�Fy�;�%{���#n��j"hz�q��Rg�.
�V��q�����=�v��yLh@<g��2�D������W���M����R)U��O��^�������:mYk��NKKX:NC���e��w���������k�s*D����'8���������Z��!�?�k�����������O������?ocd �gw.�(���Y������"rM��W:IDec%�&�H,�}��>e���g�n�!*6���lH��P�5�1���c��b�%���5�9��� ���<�Y�"|��h���Ab}��x���4<��������j%C�.�+�v��4��i���:w��	:�$���]n���676�4�O��Y�����)��WAe
�QF�������P�o3�s�`�:��#��R9<�d����r��I��e� W'�!����P�`�b6���*�y�G��)xD^7��%�,8��	+�2�	I�hs3�v8�y�Ep4�I��h~����H(��T���C1C�>Wx���
^��.��bdG�T&	A
Hz!0���$D6 ��$���$4r����]u mj��FQ�H�h��F�n�]y)��i�r��x�\�A�8�&u���
%��HE�� �
a�{����L��=���|L�����2'c��?j�����z~����Q#;���77����j����C�E����l5��T���)����w���I�Xd������
YW�ta+b$iG+��sA��k��
jy^+z6��=
���4��{�%F�s�c[��� -�>g�8I%!�i*�6��zsp��E^nT��<5�nu�P��rL� ��ws@It��17���`)�'*etI�q/�D/��yc�:���c��������v,���g���$"���z�A��I8�[����/w��)��
Pe9�`�`:�hx1���>���9����Q|����/�J�h����\>��H�L��J6>���*G����IK��e$�U�~��Vc�9���9�v���Q���8g�&���V�"�M����|�FB�Q�
%��jSPD�7@�AJ:D���&d����F��5WX���?j'6^w��k����V�T�����q
2(E����'��,��i�L4'`�h�_���b����2��U�Hn���������G�'��L]�a��IP��iLs��5-��n�����0�_am�b��.���^b�i���v�f����@��@�N=3B���%j�=y-X�Gy$��bm?��p�������c3'��D���'���\�������P�����9������>}��z����/~(�+P�F�$<gxl[}J�7-mxxj��y
�o�����L�_��d�aM�������a������|�}�W���z[���]�MaF9��O�O�7��*H��+?���zU�����W�li��'��,_O��jW>����|U���7������@�V��ozd�5����_q������>z�����o^���.�_�7���_������VX\����??��;_u���XM��:��������V�x�	�� �<eo�����f�. ��m=V;������/�������c^Q�9�S
��E��$��G}��n���F}��"�>��b����Zd�g��u��suO��T+j��W���=�L�E����xn�ON0i����!����]`/}Q�K4��4��d�(����r���$^A�-�S���]y�F���f�h��*�}/V�����RMo��cr�
:��HYtGy>�.�������:��!ET�.����U�����t��t��S�ic����Kq~�L�q��xh�L��g�.i��]~���m�%���Kv���0�$�&���������g�@L	b��L����l��G�x���-.��_�|�?�2���6:��c�����2�Rgc�9��G<���k��\��,�h��6-����n��@�-Z������
$���>��-��H�5��5��^�$���W�����d�dK�ix[g���ra{�us�G�n,i��>���#����@�,�k8����/�F��
��C��8����Hp�pT�T
�v�
�{I�����Q�t�pT�T
�6�
�����\V��~��.���u��<l����p������'
~�X �����&1c*�X ��&k�M��D�h��LF�
�Y�h�M�����Z�������Q������(���Y�\B�wL����+��7Y�6x.��c��,�
���p��SW�	��A���:mv���n�G��y
9������M��;R
���x?��n�����w�+���\H�{7��u��JG(]K7���Y���hg-+����F[?��i��C��&����B�!��z��Y���������Q�����>����~v����%o���ww�\�iR���Q��s�8��}�#\��M�U�pHu?����j�^�wPC���iYJ�{���%[k���o���_���_��Xo^��p�
�?x����A���B��Xm�lC��#����r(>����Q>�B����
(G=>��/�����g�a�4�:g�X�
�|;/������RZ����L�����Z��SU[�o�]D$q�
��5n�v�nX�V]�p;x7�d�.��X�(W�=�$-��w�J6������c�l�%Y��������:j��[@���
��X��B}��^��W�DK��J����>�Y:'�<.s�����+Z�����[�*w[�0��~<#t���2p���sI=�,�7�Y�y8n���=��3�!p�����M�u�u�J����M����<���a�b�2��TO������{4'�=��Y3>�O��x��� �^���,��=�'����x�����
�n���cl���k%`�x���MsY	��
������f���n��=��1�.B������\�x���|������_z|�)M�3�{������k���c��S�����	[= �-���K�N�K
�ckUDT3t0�5��a��3��.�4��x�
�O�S+�v���H?���y�I���:�(�2����=��L�8i���*3!���x������{,��S�m����~g<�F/���Br��vOgwe�����_�X�=1r��u/ea���s�^!������#��EQ��3Ldi,�=��}�7aA'Kd��:���@:�M!�9���+��
T�1�'U^���������O���~��%���K��d���C��}����.����}�(������]�7����uj��rCp[==�lq��l�]2���n��>�cY�d�c�`�S0�7�ow�=.��M�A�?4�Q�^���ic��� Z���^�51r���M1~=��Wl�>�T�QK(��D�������9UG������jd=��~N�ak��h�����bW?�a?��~��1`�P������fW����������w�'�[��x(���^���/��b�r�?��a��GN��t�K�����O�h����<�gs�iiS�fw��(�E����=�����?h_��g���������6�����S���_��
����v�/2���c`��z��W-%^2	k�[&N�f�T���G�h�*���Pk
0�3'��+����[}1���?y#�U�9��-���!(L��:�#�naI/�l[�2�`a�����L�����#5����#�A$)$����5�:�s�6�L?����]�j]q'�%B�P���PZ�Y�x��cFx1�SS�)vY������ T��-f�������G�.f��VAZpe��%�)��1�5�`=P�9c���f���e�k�����$W'��rFK���E��_�h\�
�����:8��>�\T.�W�����8Z|��<�	wyf;���bI�{��8�HK�,�����w*~�����/���>�
t���f�(�yNn��A�,��^A]�����P�+�i:���nA�4��!�B����h[��DF�
QG��8	���@�qHH����8���0SA�:i���H/k6��F��
�I�`��kD@�Hd���F� $�D/���;��	��A��%p��>a�T���Q�:�C@�85����8$"���<�D�qH�H��Lms�XW[R�[�OJ����K
7#����dp����L�J:t������^�*��|��k6r���g!���<���r{=l��e������T=[�F�c\�w�1�Xq5Mx�a� \��y�%p�t����rowN���={���y���K���VArA���>lK>�����ox��b7��yW��)^���D��O��j��@���������3��l�H��J��
��\����=����2�H6!WR��1������������V�s%G��PH�����L��k��Q���b1�m��2�bB��(*)U�^G1�	���Q�F��eT�C+�Z�]��qC���I��� ��wG�|I���z{�����j�,�C���`��_��{��$������I��������kwIU������/���{������v{`�����>r�wM�ro��7(�s�O���Bw��?�����b�o���9O��<�����X�+�TZ_��
 �:��+l)��v�55�������8DmQ��.���|��M�?����������'�\��u��\W�y{��a�}����C{Z��R���{�����y�-����K�9�<�-z[����V�X3��� _��������Tl���!/}bd�o�<i�Xg+Ql��Z�����Th�g

�.�_����3�f
��2\Gs��Twb7]�����]'3~��50����2��GK�����vaN��>G��O��)/�0����?�<�Y��dj����S���K��2��3��M����\���CV~��<?Wk'Z��������p�d�K�k
�^�x8������/\@-���G�����Kn��YQ����h�g�E�l�vni;����Tc����a�4�~�`���.���M7���Yh�e�������O�n@�O�>��4��M20p����h���!��� ���^v*�9����-��e%���(�����q����r	Haz�>���!�=^�����8����=GUrk��rw�=�i���r=A:�i���=������9�i��/�P��!�r�#��(����o�9�����-���rK�@a��!�_�����no�(X,���)�	^���
4�����m.����P.U1�H�1S:{#\��W������F�^	6�w��������Y��k���/����u��n���
.X�%d�a�z��;W����x����{*��W=�71!�=�B��
~��^�9�g���x��{���������+������	�3Y^�b�^��A��PR����1�7Hck��2�3���������e4|KV�����w}b[��L;aR
�JB��Lsw<UpW����<c�zF��!:�[SD��s$W$o�����#��x$st+'D���}@�k����-���m�E"oy,�py�0�8p-OL�fV���
5�cU�JM`6%!y5���V
�b������%�h@m�/�Z3(l
@����J�z����N@�>���9������@:VQ���l���aWi����l����Z���n�X��b�{���_P
0tJ��I+�����8T��z�<�B��,=K�������<����~p�ta[�"��(����������V�����=��8%+������;`&�E�v��&�I�5���&a[�*{a����������i��"�<���w�|��L?�������c�BLF��[�e��/k&��V_�b�a�Hs/4���2X6f�@:���<a.#	�[��$�g���*��Ba�����Fmc�Qc���,�e���e��n�J�ff%Q�#��,U@��;Q�q��&�66�_M���@1����E	�A)i��j�"9e���hSy����`S`^��Su�.�5�;�������DHf�Q��1{#c��9���P���f.�P�<.��i�L�v������O�WU�"��u����u_����Q��BB2w_�x�Vr���@��~���dzYQ[��\��L�L�W�N��Zn�����D�o"�������Sg��f ����A/���Z�f�0�9�f�V*�6Y���P�����Wk��ArU~W�`���Fj�D�,�����C�m;5Y@�b��=�c��@g�"^,,�����v�D��m��6	Vd|~�+�>g[.�?x�E���2+�z��U��X�DM������ F�{A�|�X�����M3t����X��oP��y913��I�Ca�!��Ai}��V'-�L�B��3��j1�~�Ta2e{���5S�k>�'��v�bW=J�F����fa������6�G����xf�o8�s��g|L,�����|^KR���'���^�X�����n�������6�]a�	����D������<0#��G���e���s�|�y�T}n�Au(��~8k���/9���c�}�1��$�K�y����B%]�>��}����:mv�zS��������O#������e�'���s-�qw�(�z���@�e���me/���y�(���m���8��@��.�['.Bk.�1��!3P���Q�"�$B�S���U&� �yp�����D�z,./k�<j}��
�N��5��������}0}q3���l�}4�`c�F�mD�/W���|C�]�I�j�3q����1��!��]}.	*��T'.zT����������[�(�v�l��C*��������\W�	Lh������/�#�7�=rf�����{,/`�<b��k���^y�p��R\���8��g.���<8�{�~U��V�~��>V"d� �:!�XHE
�1m�����?#�T8
o��n���1�j:�*�\���J��A�;��4BT������EBT����S����G���s?�P�f�3R�B����Gk��U�l��w��vphN7+z�>3G���Oe�@ASPY�8,�� ��������E��ee����kFI����z]�L��^�tD�&s}Y��:Pr���^>>8/�v��)}�����8���*��+�>�m�5���Uk6��6X�q�_���
�k#.
z��Y3	��GL�1�D+�->��6�B�1�2w�����;$/n������z:3g8h�ld0�Y�KG�4��.���#������55��-D`�C@5����5�)�	c���&�j�s`�z���������L�e���'�\��d�$=�u��r���Q_b�'-�`���r���M�'\�i�+�2��Mj��x���n;��cX�aJ��N��q��F��c,>.8��3{}���j]�2�����=�n��1N�Y��RJXV��,|$xa�R��*Oa��Md�	F��Z�[y��F���p��������j.��Z�[y�:-�%���z�m���qyz:-�%�����)�8D.)��\P
d���U��T��_R����1!oE{,����4�~r�bQ���V������`_���IY�Yc�3�b����`�����g4V����1*Mj��]����������E���n4rK��QKY�r@��N��C�1J�x"�������[.���(�q�pQhd���@W�k�49���4G����E�D���'���<w�'|T�h=�P|�W{��?)a��v�W��9�pe�`�|���8��f�����g����9I���8�!���*�C�)k�,N�O�����>Z�*w�R@�a-�7Y`��k����
}�dq����dmJ�����`c�C��&K_<���/k
��]D���d����:�a�4���D�L�l,��R����[��(��5'��q/��L
4��a2>
���(k�A�~`�A��[����s��cq
��F��#�������E�{5��	X�SS2�����bk��W�B��
�tndO�����~D-��d�$0@����)aE�i�Z��}��&��v[s���_�cv�0��W��2����&�1����!~�c�R3�
kf�jf�ag2���8��f�	}��q�9qv�qv:���IFy����"&n��� �jS���(]������s�b:���\#R)�1mV�-1��8O��+Ph�]���Ix�3�lI���lg�o�����o��"��{�^lC����U�����D_�gGUYC�{�7*F6%6����,������t��#���hYM��W����U�<&jmOo(�lW���q+�
+a�/.��smn��%�sv�K�f��L"�����d����YY��e��F�0�(�����UC�2�e@d��KXEpJ������xY�e9pQ����dy�1�
!��p�����I��Cq-tA��&8&=�.<+]� L������������<��:����K7��##���4�>;76�������(�
�Q�e��F��[�V7��Z5��S@-$G0����q:�$�XS^�;#���rj$�vl��"���F���o
��$�Z,�G����������8�Gh���Z�z�z�.�������[5�������%��?���4A�@�-�E�pI��r������%YT��wy�^h%>��!
�#<�������p��?�b���+�^�o�y�������/N��E���j�TU!�����d6���������^j5W��{���0��qxM�.g,�cf�!��a�:g}���f�'�Mf�����?�=�:E��r�|�nyb�������ynX9ySc�s���@������"�
�3�7�3�S������E�#]D~�B��^�8�E��-����^�&���ZQ������_�������E7:-����^
4��8�����a%�k�6�����/$��h�:���<b��[�C���N*l�.�})��
��<�T���Fy9/������Av�$A"��eKh�K�;��H[v�|�C����'b(����q�	������Ag���Y�����%If6e-K3c:��m�ZF<j���J����
U����l�Jb��D�7g���	w��1&x�c�oO����
O��y��f�(���(���;#��zg$�-��g�������|M��r�=/�zF�m�;���eZ����=��|nQWZ���[1Q��ss��(�s���� �:�}/���f�]�4��Ix��(ygw�\�� W��d��?}?`.�PI\&A[cbv1���[mG.�`��]�/
�#T����l�������))���
���J�����y��,��>��,=�zV���e�h�5�5�`[�V7FA�y��4��Niv{���|����Q&�$
�C\F�u�(�S=�i����O�a�'b8��P�F�	�N����?	��t`�h�������C}�=���h�A�&��l��x��������ko���>.���l!6�J=�R+������Z��`��nx�ar�l��KV�^bCI�*{�$�mx4�$�I#I�D��p�&��Q�������Q���5a�K����a_�ZX�/sID�w�����A����`�3[�f�R�bw4��&�V����Jv����]�W�\Y�Laf�m�c��|:94���/lg!k�}~!�#yL��zq��$,=:�V�S�u���yw�������8���|�5����~��_���(�t������Dl���}��������d�Py�Jh'`��i��� ���h�����Y��Ea��S �Rk�]���K�?�.}l�]v-l�Td���_N@cB
�I����������z%�<�p
�Q�������
�h�G�T��'���D���d�% Zh�j$�K�<~��0���8�;}��F����p���c��l�6z�Fe����)������h�����ied^��p`��!B4�������(t~#oe%���pIF���W
�Q,��B(z��Pm��+�tl%�(����
_��K�������t������:'6�.�U�����!F
\$�JE�Hl�wu��5�b�Od��h��DR�"�8A�����'y�C�C[�9!k��8�l�8�l��Wg�S��lc�is��6���f�2n���p��Lf���3E��#oE�����al�Mp2��1����0M�<b��"z5����<=
}H�af��w%d���etXy�w"��|��Y[Tb�@3��ml��;���5����|�V�sh��.v[i���*)�Oix���<A���f�����(��96����,���qF�C�o,���Deq�U}�u\�����UZ5��t����V��kyM�
N�V��Qo�f��������/�c������W�"�?�n��I>���U���}�[�+� ��Ga�]�|n�v��S}��z�E��81���gUd`���thNpE�8�����&k���~��8��*��]���!o�!����������!��@w�`6���4wGB��^�\�����G�����BM�cX���P��j���iF�W�=����J^���5�;{Hi��ZX ����O5"�b�����b�u�5�"m��S�h^�z:�O��gL����������������;�M/Hi���7[��tUy���D�ZwC��-Ml� 3�����I���?�GW�
�2�Qg���h�����+�X�H�qY%���	7`������s�T�x��X[�*�<������[�{x���������vDp���A2��5''0��@�@�'�c�]b0�c���z>��(���E?i\$�k�'w(�k������������P�F�C>%�q������Q�Y��1������^�6%2�����`/^���B��^�*��}N�u������VFB�CqK�c��u��K��$:+6��<�$xSy>c����0X
�^K�����q@l�z��^c|C���JC��<�<	�����Kr4��(D��8�"Oc6%�5.0��N�Oa�B=�50y,%�1���`����'!t���6�S5�[�		�6!�VT�����.A�%��*&�XsB��C�����od����/����Dj"<�JN�ZJ\T�u~�P�d�rv|=D1`�50����IM�Nq��&%R����:x�`'�iqV<H}���s�*h�k����u�'��8�cL�����,H��h����1�"	��7�� ��=���(2?��3�:?�s��������_���D"���'(���a�0�-�!�>�3f�=$GA�G���xz8=�gr$�I�����s�m�@�����m���
2�oi�lFO#e�A�a-|~��� �!���#���D������WR�<����Z��'�V��gT$�Y�i�gz����6�n�I�W����~�)�����8^a�?��G��Ny�H���e���s�����Xa�����@���
�1���FW����c���i�4Mv�32�D���6%��.��a���'��x!�x��4�K<���[mi���!��A��h�||�V��6o�n�"2�4�} �3�+6n@Z�tt������rMi&�����������������������i�"��%��v��T�}L��y�=�5���j�L%$���Co~S��c����"� ��n_d�].zUM��M�~M������:����X�B*�\����h�&b��u��G��	����fw���)&��x�q��Z�T$h�
{f�st��_�Z��n���|OH+�&��:�����}'��_h$��������6�k����KE����+���������J����������N������w�����x�7����v���������I�V��C%Cl����P�-�a�����Z�{l�6�L�����w?������o�����S�����.�B��_�D0i�d�d�'#:�P�L�^�y������?�q�{q��M���:Gq�iH/����_�%{m���g����5J�����(��r��A��T����M��������a�t}\��bp'S�(�Vd��!�����)k���G�����Q
t�t~��HY��
T��@�"v�����h�%ep'����s�� '���)h8<-�!�^��V���4�at
�5O;�F�t	b�������%d��h��nX3� ���Ad�>C����X*|g�������C��9�]��o[g�������5@�����k��Jz���4B��Q\��cz��8���cQ�����8?��,�+��y)y����0|Hw;�]yN�*�$b*E���kRX^�W�+d!fY_$��z��2�]���u�$��wO��}�h#M�@��Y��C�"W>����uu-��Q�<�d��N'GZA~f���!����)�h����B(��!z�q��n�{
Z����`4P�8�%�W(@l] �.�����!4�#<����0^��2�a��]���_�K������3 �
_��ZX�h�k
���H��E4T;HkG���XR(N��������=�R_?D^3����{[�\Z����if�v�=��6�9���(������;�V>�r�k���k}N�BNsDR��h�!4������y�P�a����0}\���� ���j�Y?<�V��&���|�\�F��X��D���=�5k��8��?�V��i�^QGCe�����������������Q,�^��\;��Q�,B�lT�X�)�q��������������q��".X/u�c�|��d��H��^5t���p��\��M�D����
r�F\������m���	���w�����^H��m��]�#�6��1�����GN�&\�d���e��E�������$L�����L��Z&�e�e%�����e�>��F�^��G�@�0!@�����o��7��B8�����q�����A���-���8�;�k�8�0��rT�h�q�\�
���������J�����u��t�Z&��>7m>�����O��N����<-$OdHG����\H����������>�->M;#F�����|J#dhg����a�=�a�;����[���z�	��s�����)�`
FF�U^�c�,���\^3�6eyj3H
a%^�A�	$<j8����$Ng���F�W��:��@���SG�IW:�����8>{��dO9	��{��n�%p$N�zcG��D��7n���v=V�
��e&�e�I���]{
���'L���~u���J���G�z�0�P�(���������0�������<�l>o%�
�D�"�l*��6I�p��%�lo%�
�D� �lv��^H�����M��m����������
3,Nq�J�����Cj��������\��l[�[^�4]���������(Ko`6����l^�%t{D_�m��A����h�l2F�����*�,�4�{6�U���$zEJ��lZ����.�,'5�.�� F���gc=�7��-||,�gl���
�]0*���=��K��Iy�B+��h�I[)���U�����_�������j#J�.a�K�o��&%�e� ��8��f$�!��+BA*4��@�_4�P
Y��o(�����)�$��A�5v�3B�v<B�&���zM�m���y��l��������5XAc���8.� �
�1�*{�*
�08�����5��t��2��i�`��P?yx����0RAMkB��.D�;J@tb9�%��v�X������h�i�[���\���9�(s�����R� ��N����� ���� 5�~rt��;�?x�:A�[:��E(	&��r�y3
�A�\�k)	~�����X��Q��#����a��f���h�e�Y�zeR�vF!��W&�������R9���sRBS�,���|3�
�j��J�Id��>�F��"B(�4P�DE����5�p���>��rv���>�j�B7@g�8,���`��1�����~�kxM
�������e��V�5=�:,��Y�V���|�9�u�T\����,/�x�]���O���Ud��1(���]�7\����@gLq�����7I���"&�^����pe����jV�Z�K\���d$��(�qd�����X�~8'l�F��M]rva<�ni�����'?��\/&
F6o����))��"�ww�Jh��~��K��:��^�������d������
���3�X'A����������B[u�j	PG���M�e��������$L�PRS�d��q��0�^PmJ ���q�S�
:���z�8j�j��$���oC�	�@I|0ATj]Ax�����f�}�o\F�.�}JN���>�D�����R�N�>��������vp(�	��Zp�� �0���0%d�[���R��O�p�B����A�T_4k�C�s.t��<C�S���������N>Y�a�����U=Ql�������/:r�RB0E��_�"$�yU�@��;�Mh7�h�o��
j��MYo��\b���{�w\��@��U�;���Veb�R=�yj�u��N�R�s�`���-�9t�=��V��f�O��D��W����U�z����������64��S�[`�-���\l~��0�V5+.�~��V�r�c��m�,G"b)yvrC�^#
��	������>�!��xSC�7�~Hdl5�1n��g4u�����M�WD����yK~#Q����w���\����(��@�����%vz��h��+����
�q�Yv+Ob��(@1�:���~�����s�/ �S�S(aBZ��v�j���	8��)M�wi�Lh��9g����8�[&]�]�n�7��������s�+Ne�y�L�|�+�Z�Qw?~SF��D��Z�c�X"����P*$tpA����2�>E�p���@q��i����LN�B��q��S���0���F�pFS�?Pr��U��a2�����Wj,��z'�@b#��$�H������/�����}�ah��_�Bu��0�����2��ll�o��iE���hd�@3��(Y��������Gq�.���8�,!��nR�������s�n�6����
�����4g��,�������@ib���	m
�{�����o�3��0���jG����O��������E�i9�bS�;O^���I{����eF��(63��Z��{�S���J"��u#�J/�+��0�u+�z�!�=mx%����K�c�����W���z�"^�K4�X^��n�M}��g-��`��WZ�\�/��V����������s�=�\��8�*�a��?^<��I���S`+���������:]JP��C���&���b@���� ��3,��|Q3/��)f����)ylI�O��C�Yw�2v.�p��<�28��``����	!��@���g�����������B`�\��_-�"
����R�������'b�����(��tLNIUB�H8q�T�[�CvxY�����7���iT�\������b���F�����	T���������I�R/��4���g�]LOi��������a(z;����J��*q����w���7Z�d��a�2�!�q�74�^UC�
(�k
�X�E�V����E,��dCw[��}��E����v:�����	�x�:�!9V���-�%F,���pw�_4�I���'c�;MP@+��#D��~�9'e�����.J��w�����f�g85Bq'/��,�{�%�
���T��,�A,�{�t��������t��n�D2�Y5����q=�����7��>j!��J��"������,����V���v��m)L���i%X���r��%P������������9
*]�,��\H�CM�����)e'g�o�$�-S��H!��n���h�3�J��,��x��&���
�z��B/�]~{��#+�����g�����dqD�2�'�u��%��$;)O#����C���^vC�^������!�(��r%q�8��Ah�%Q=	����_��N����N���G�����F$6�{�on!��o�Z�A���0���qU��A0�`c�@���o<�����al�`�(x]4i�a;�-�q@���1�<9�����$������3� �)���\�z
�S����H]�H�DT���-��$��+�����^��������L#�������W�u3��k���8��f}>yJx�[�bH���{q�M��B[����	�
��]��x��f^��])��4O�����h����������t���$��Yv(�H�Z@#|L�q]?���&�
���e�����G�TOs��W�����mu���%�{i��(O�!_�K�"��$�Q�f�����i^$��@���}FB���t��6�#S&Qt��GX�Z��p���������`,��i��p�*��Je�m��?|�����P�A6N�b�PIt��&hX|U��p�C��6cJ�'���2�g��D���'�t��$:v �!?��`@��HN��qP*8 i����"&�ec/a���8
Fc�xp`Q�ohQ�&1��r���U7���:Y���DB�����
xu��!��!J�~���F5�	8hAp7C�d�}�9��3�	����'���y�23���!v��4�1�<4�^k��y]
���1 �yh@������6,��]�[�����Kk��4�%�=u��6z:~��A`��|p���P`����)�������mk�����-��h��p\{�F{�_f
PC���E|�?���3�������8��D�&h=���b�
*��O"Ym�8����e�0eeB~k)��A�f��!8��fy�v$�
_�\'�-�m�ol�+pA�����f5T�n<�'�F��������~�`��'�-w+{[o�@`
���]�s?��fv��������4����e�����R�Z^�.Q�=�����[���
��k�(!|>!S������0����(B�yJ�����:U�aIN�9�
����DT�v�PZ��R���"_BTV�c�Le77$��j��A�����P��+����(�]4��r��#|�PJ��6�M�]��|�������d�+Ch�2tNN�26��M�R��iy��4gR���B\Z��9��N����N�4�5F���;�cm���%
|n�1�	�j���"AiR���)^�0��tQ%��@�k+�Z^ys+n����C�=/=�Q���Q2���@+�����U�qe���@���UkkH��#�B�7���������wkl]��������e�3L���d�$���mrsL���k��L]�s�k����m�3�����=�9n�i`��� �S�2�l0+�}{F�C��fD�������Yz�`�B�����8��G�������=���:�m�Ns}4gY�������lw��
��W��1g�K�����5yK'��p������&��3���ZS���g�-���f���4���������1G�������������;��u��g4��]��XcD<�tv�K���"���W�X�����lxH�~��Yl~�&>�}�f��VP���>i�'��Lnln/��&�6��y��l�iXIq��
�Br��%F�����o�5�Ye�d=��K��i}o����'��wJ�KOw	�Y�������Vws���m��J@�����������kR�R�YB���7iO���d�%2Lj{�����^g��Ros&�w������oF7����t)��_� ���M���^z"{� �x&�O�N����L\3p7hb���4�����Kt�#8�R%.y����(�P��jqQ@���h��.Hk���(�e�2��-��]a����&��9F`p��e1H//s@��ki9H��������i1�Zs�r{@-�(�5�;'XxKA*4�P��w�)���MA'O@lX�.,�����~'+;d5�9�m$tQ.���#�i�j{����B5�.&�l�P*
�+���
�>��L��a���������S������R��F���{�3�V�,���A`���&��iMn�V��5`�U��PNO[5w���r����^�
�$��h#��	��V���%�_�8<���}�����MEx.+ey�;��VQ;SU��`�+�X����`���S�?���?�������5�N����a%�L+����)��:�7�(?����S�_�����?�kM*o���`�5��)���\Rv�jg���Ae�E#n�S@�e;l����k
t/#�n �M�#������[�K�cz��zSg����x2�js��1U�@dH}�5��@�����Y�u:H5�a[38�~��kOK0xB3�n$�������1�i$���!,�����8����*}�p�����f�p�����\�g8�q���v�Hp	����m$���x_�&av�l�� �e�FSZ"�d��g�����|09��^=�|\���x��$���g���%	,wb��sj*>�� �ep�0h�_�C�U�X�l5�>��P�j�`��dm0D��aG�~%����F����U]#d2�)������~%f���F�=��+�ap������2��D��	��7�BC�~����!���`���!����`�K�!�=P�}���~1���[/Fn��|�
����i�������o��
�[S�a��\���%�`9��)L8t�E��
l<���w�kz+����)G��F
;����9,��x��s��:���Q�����^�U��%�6n�S����z��_�W�����?)���SJ`�B�1	$��
�������m�'����u������	�i���T�v�u�N�&Ce����[Q�}��W�nJ������n}�B��`n�
�e��g���������k�<��!�9x��5�Ur0�j)��>�?����G��+��Ma=�lM�xP�`�6���lP�(�a���G�����������Fyz�df����#�.�f>0��������!� 2�g��;�L���t��H�}[-���rALr��3T2�ns�P63dC!��Lj��Y�vJ��
7�������1���3!����O&cvL-koB����D���g���L�Iz2b!��[k��q�t��Mx��A<wjIL0��^cv1I�j�jt��IB�cx��������&��)��c�0{�H�<V����������]m�9��Z���a����:�AD��Zh��+
�@�^Z;D�9dao���!IE0� �R^��a�:��7���2�����`��g�N��CvL�*�����W�7�}KO���`w(�C����=��y��'�[�:�I�v�x�	)K�ww�q������<.|O�@p���#6?���~/�5+����W��8��������
�1+�W�>f�� 1�`;��m0P�k�eM��;r�0v}0�P10��0U���p���eV�S\�/\�(�J�^)�S4�z������W�D����bB��|���\^8�����H���b�E\��)���Vd����`w(��g�!3x��_ %r�@�W�yI���%n�=9~��*�����.(Z��QC��o�c�(bN�0�����{��xQ���%^�%��J����E�f��n��]{��n�J�������%j�h����Tu$�~9�5S���a����ua^���L�L$�����xC��ig��9�Nd4�o:iXV�������xL���%'�6AS���	Z�w��{N�zEN�P���H(N�wQH�/���B�,�at�]h{���P��	�� Qxj��0����>���@��\-��9�������K/�^w�
����Ye0B����������5�����lhHI�+��Hf�[dD�J����"g�[���������R��H����&�m<�������i�K��G�����i�x~�l�b�0�%�`O����w��_Q��38 �{d�8�|3*}q�������w�e/`i�^N����]�O.�]���D���o���������K���%��?�X������n����G��&��f%���ne\������&=�D7<@���[\�<|��?y��k,���c�UXT�Y�g�9�7��[g<Di
��B����%��~��O|$���$Y��JY���+�%�s\�����?�/�".�(�c���=�)guIFF����
aBe��E�����E~���W���>W
=�7�7������,��{t9R%46U�)XVX������|�����a�m�o;�[�~���W��i��VI�ct�����,�.��Z�f!,��%��D]�����|S��A�����:�U�4�>6�G����J���^�G?�%���>	�����V�������/�?�'���O�����,�:��<���F�?�<I(��/��;2����GE���N_�A5�?���.4�f�\����n�g�9S��'U����>��k�Ky����G��k%~Z����|D�+��2�+65D9���|T�B��J�?����o)��u��fy{,���#_�U��0�T�[�-}I�m���J�S�����}#������3�Y�������D�(&k[�R��Q�b&������N�y�8�b@�[��%A%Mmj�w#HP<>bn�=D~��a;�P�&jA��\�+#�CKK��������zm�����jU�AJ���]�4��JfA��8	��}��/g���D��o%�	���[P<�}��O"c�X�c������+�R��C��FI��R�u��'�(g�f���0$�6�����6v�N8xm��w;��VrcQ9Lgb��,/��)�Ki����J2Y��
��g��+v�8�:�*�F}��{�!HY���v!�L%�F�6�~}�9||<�'y�	�{��$ ����������r��	�� )��&L�*�Aj�����P���.D��<MAp�$-�'��|E��. t�LmS��.h�.����[&*pi4C��l���6w��G��y�Vu�uu5Y�}��c��yI�F�������[7L�%�K"7���TWk�az����}^�Qn��Zw�����^�Q�u��Z����9v�=�	�V��y
�%�V�Q(�(�%��R+r#��V�C�"�:
�|�Jd6a^YX2��<2���
�D�V�2{e^K({_V*5�y$S>�xM��l��������S\\	�e����I:���?Q2���O_D�(��+-��#���<��bT����!5�a�.,�8�D�'(6}3��V���
q���L�����[U�?qW����E�����e^>8���H;�\O	�2��\
=\���B^����g�"���~���F��\��$lF�6{��8�(�(�
zJ��n�a��AL3
M��;�Lk/@�$M���=u��(r)�Xv�[�����o�����XDgZVeXW��e�?�e7�%7����K�Z��g���
�)$��z���~���UBh%���5�9N���O�[�5���Aq��+(��9�~��IVi{��@�]
5iSr����]�9vI�|h���d����S��������z�G�dv��)�&q����Fj*L�F��zn�J�9�
��(��v�c��s��K���EI�$(��@\�����h@`w[���K��������*�*��z%��Z�l�9}8I&�s&��l��pl������@�l����i����cU/:��9��C�s�������k��D$��@?Y��������=|
LGXG���V���m��]b���/.��������<K~���Mw�Ir�u���^���t�{�@�j{��	?OT[KJ�M�2>�y::&�?�1�#���<�!s(5u��]�MS�jB���
���3�~��3J��d��6O��VU"��r���6ES��+��J���^65�*��t�FYt�����M� 	B�
���L^�\�O��������H�W�?
Bk����:y�-���B�����hW����
�`�m�R���y!Z6wnE�Q�MZX4s�7�
�����e��pa�L�-��}�9�qa�L�"-���C�5�>qa�L�D-��:]�5����B���"Z8wQ��N���$3G�:�D�vgd�h�������Z"w%`�;�5�B�c���H`k�z���U��]	)d��M[��#_�U��2�g���X��zN��J<�.���:O���Q�m����E<�K�P]b�Z`{�����/j��6�����]��)������>S��DI�]'E���4�{i��m+� �W"8PD��$�����(�Zn3r`����p}MF��;aqsr�����"/��W����m��n�#�$;�1+g���F����'5��a4X��!?�3-�����RrM�I�wG~���Rr��/�h���t����:����Eg\�3��9��������L}�� 2�z�g��q�V|�Qd������/,6��(?��t&q{����;����,,^������8���y�,<��)s&�e�$o�,}q��#�z����C���{y����0-}��Q��@KR�&
�������P�6�-��������cp_3�V0�=�zj���]���H�n��i		������	-A�f0[�����f0�\u/4�����0�Y��I�|�����S�!��76z(��*oW��I;F������x@O�������������a�s[c��y�~4���i��H<�q
d�xcxO��mw�m��"�O�Hv-����{o@��k2��W��2���Z~��3������NR�����J��yrL�����C\j��&��:�s����+c4vR�|���deR��='��)���
m_Q�:������U���Z�k��z����5�p���"@�������@y[��W(#�9���~���q?��V4�5F���%���r+�}������e��K��������������
���5p���"@"�����/�y1�]�����
�f�����>Y/4���M�L������K�t�?������u\:?|����A1��`��4����aT��1'W���f/4r��C��
g�$�9�,�(.�s���aE�2pZ����2
�����������bt&z�a�GU\R�����+5��
����T����ih�N�`��GO7�x�W�������/B2%����P�9��$x|c<�����Y~��<�`�`��WP�5��j�e��y����O#R�8?�
j,N"]��;�M�q��������i[
{i����&
�<"@��O�E��M���� �"�E}
��x�,�nY��Z������1BMG[���7Y`a�J�IOI|tnY�>i����5,4k�:V\d����Z8$=:OE~i>���w�a({�
��Tk��o!�t��_�S���W���@Z@JZ��@���,�HmP����BC}���
�����
3��E����"��Wt��8��2c���3@*C��V#�7��[���g���:xU��U	r��3M���Wg�������8\�?	�|�C�+���>n�6���W��V�����Z&�d��
��/E���yb���u�������������L�C�����up��%������-	:���� >*�?�~�G��l?�����,n�6�sX�1s$]��� 3�
�RU�]���Yt���Z)�l�J���P4$m�x��'�TM�k�W��"�.���s�"&�����7��~'L�
Ff��w�^�>�/�o�/�7ojN��|��a����&�?����Rh���X�������m'
�Ep��%
h���l�]
�����e�����U���^�l������D���6���Ut�
�E�i�N�`����j���'�S�%"�r%��3Fj�~q�@�T����j��%�`c����������dM��Eg�Y�B}>�����!��	��U,D���,�&��;+�������<\@x�Ll�rrE�3 �vV���xEV�^;��i9@� �R�L�F,��9%��} �zL�q]�E�����g�.yV�K���Cu�������&�m�CE�R9��:
��5?��2�a�IfC��z}C�WW'z���m����eTJ�rjJM���)�Za��Ft��� �1���X��&�x�e
rD�S?X���q�O6����w�!�m�������0���V��-���b�?�	A^����J$Z.L)�U�O�Rhj�S��
Jp�~U�Y������g�I�<���%! x���/=�N}��G�P~����J4
��!�U	e��-�ZiW�%�|b��8:�v�O�����sbM�y���&V	���U�� ��xuH4�oW�=��f���<���Z����r�B�,�O������'�a��@����k4�_q��=��K�����Uj}���
��i��d�E���_v��"�~j���*��`�i6��u���j:���YS��*�����X�^{�w��UW��������s6����������V�����@��(U{�Z�S^�<�r��}���������l�r%���"���:����~���������<��OX��{.��L�,~������@�����N��6��?��H��w�<6��T���B����%�*.>�M��������5M��rjY��
�s���9�U��J48=?��Zq��NWV~m�m���7m�S��u�{��)��<��t�?��#��Y\]�����V���,�����
��C��&{�k�C�S��wB���6���}������H]*�@�����Y���`&��%+n�}����m�����-L?&����[��dV �~�o�+	����r�+��%?�'�����Yx_����Y\�:yN���|)��Bo����R��M}�6mW	N�0�uQ�s�7��&/zy�;B��Nq��E�@����������t��������:�5���[B���9�����89��������W�7M�����e��5�#��2g�P������3z��R~����t%7NT~�'�p'��f��Fs���B�9��������������Mv-'�Z���C�G���\K�C=�R}��^�p��DV9��:�����V	m�y�a���n-/r	�����`$��������E�x�����?��=P6���R���%A�}v��f��7�	j��V�shx��W����Co�d�������o�����Wp�;o�P��.�t�?�tt�4�w��������7r�Z�H�	�h��X��B���{`���� �#Y������#�����dP_#��1��z
�A�5�C>���CTDblA��K�V�����|:��I�B&.~K�j���f2��_���<� _g(�I�^�t�9*L��	�S�!P��5��w�������4���������wX�#�
�_{�_�HK=.�^!Si�%�b)���:�kI���-,q�B��m�'�',������biI�����c���jhs���)��	�x;[�F��h�,�guM}��h)xmRz��;xpb�Ww����������.�p��5.�*/���CM�x���qR����S��I_C�$s��F�^��e)m�Q����Cks/��v����g/=-���X��W�=A��6�l� V��B-5��)�n#RMUy���B����tC;,h�<�]����f����0���vL��m�����V�2+���#��.��W���oR.e�w����nEh~����y�����{r�n��8�w�
�E��������Wl��.h��^��
���%��*�y;<G�$O�%Q}���Nw��L���s��>jz�{4�����4��x3
�(N�=���`X._�~[��1��a�".H�\�<" �����J}��[~IE\\�����h���_��B���D��t�;w6A~����qP��[��!7���F�~��T�9y���`}|~���\����d�q���������Z������P��W��;����;m�P�G�
)y�>�Iu �8����e����q��7��%���rR��go&�Y��<�kpqF�6\�$#�����$�gBo8�D�f����b�5g�U�S����5��>[_��k����T~H��|���m�iME}V���+`����HD������W�����jO�=�4&F��/ �{t��}[�+��D
'�����N]]B������P�����M�1�w�=�6�
"�2���i��'����Al����4���Wh�������Z6��p� $L~���wJ
`����?1Z}s_K�"��V��~3t�t����������h�{� K�7B&zj�)��@��@KkI���(C^E�Z1tbMo�t������R �>�-�w�+�~��Pw��*�7������q��X��ua��f�,�IU���x�9\d6��.o%�����wb�j0����>j38Z���wM��y��>b���%���4��5G�8���&�6Q�������k�j���������kx+��f�wI��c�5jT��"�!� A�Ms�d
�����k��b�Z:�Q
�Y�vy��m���w���KZ�zC��p.E����&�q�A2������N��e�m�q�,�
�gi~�����"���>O��ipY�:K���sD����?��N�/��0��<x���\[������nX��E���:-V�AJ��q�f�����l��R�
������!� C
%�u
�Ct�S�@����<&�G�j�5%G���/N�}+�,��� ���D�s�����D�]�Rz3���Z�q�_Q�����t[[��`��w���6t���A[���)�ub��&61������;�F5a��tE�I@�=����e�h{��!�����ew;��@��I$��x�6��f�6}���E�WY
UE����O4�F#�9�	Yd�B>#t��4�P.�������Q����<�����+�8������VzMC�q �1��}���t7�����Qy�n�o$H�K����
����4��_�>4��k��x�����:a��M]��Zz��o��X�?�}� )hu�Q�_�OR^���-����KM��i�'#�B�!�W%{�	�}l��L�g��y���b|�%Z��7�0ku"�o������T�'8�������9.�Z���gjQ���7�o�Q�P���(����������������p�].:�o�������:_�*�����.��.qA~[��?&'�v&C��N���w�1V�����S��%��zV`������kAtT����_?���cp�fp�v��S��U ����G�n��~*;���B�1���?M���(�(�w	����B�|V��G�aT�e)O4Iv������7�d��q01��!�[ �iD*��S�4V��F�q6���q�)��?����B������;h�&4�����Wk�<�_dd�z�|C�8��������I����m&��7� ~tO��/������	�&�����JOk[CP�|S[/(����Q��Mk���SZ`K��4�����ho�h�I�f�f7����s�V�������&�<�����7�����p�+�u�'���B�o�G\�5
,�������`���M�s��J�hc�@�#"
�������u��a���m)���q"s/f����2�3�H��i��� �����+�^X�EY��V��<o���%C���uM����Mg9�u��u������l�7]�����W����7[CU����eQ_�8
��`�~�}N��$��w��!�9�}�P��7D5g��.���
a���������7f�f�w�a��;��)�Y�JX���S�����>X�|����=���L?������7��K_[��!���JX&K��a�1s��#"��67f�w�t��w�
���������0�=�����k��d�|G�!�1�0�=����0]�����
Fp�C�=�����d:��Y3��Q7�a���3�^�?���o�(���.���Ci�����kb�o��<������^W�����L�#�n�)�]�R`���CI�|8'���,���gh����Svbu�X�+�w9������O<������Z�J��sM���_��D@�������t2%����$�Mv��s����7J���.l$1�RI!��d�D�`�6��){�Eom*Y�����<�B=)��$��JbY���jM%	�r|�U+d�W�W�u=DJ���M"�\B��@�[���=k�u&�^:3��|k�U�/�)�Dks!�;_�Ac��Bk!,g	���lm�����B��LL�]��%�9�
��r'��H��-������5�������LC��k�g^�k�����y��������8"�r������#��g��czE8�^�l�q��#���)���l;���u�����v�>��b��~��b�+�����4�����Jm+�]$7��w�t��E3�,��l�2X�:]~F�����	<�����k�)������H~�����	@~
]b���7��W�SxYw#
��~�.)D��XZr�hk	h����)�O���X��4��3���]H�����+��CmIO#�������V�$/by���T�R:���`aEr����&=�4�!Oc���h�y�$;����B'If�&�������8o��7��}�Ge~��$�����sW��[�oc�]I��+�k�oQU2SoP�ze���7k�����cP^-�����Y�hJ8n��(}�g��J��c\��sC��E����y$����$J��kaY����4��o��D��'�-���z������r����pb�#�����ch�O�y����0)��-v���������O#���5c�JC!^h�.AZFR���H�z��
0���B���:@�HQ ���1�u�#�-Hp��p
+b��!�^9������[v3��y��!D}��w���1;xyK�~���b�������]�Nh3�i��j}$�\����6�=�F�bJVhoaH���E����4���C�����]�e����]Y�����{Lx�?=�av`Z��P��`���y�>�tGic�M���\c��nw��ii���g�p�����P�����p
H7�d����������; ;�C
��U$�_�P��r��u��k�L�"�`/k3��>JeR��@�"pQ����y�V�;*�ix�������`����P+���u@�����3- !�>��zR&4-�M��$4X�ZSC�F/���k�G��V�I����;�Df=�uE��8����Q�K�����7e����4��4�7u(Y2/2�p�=c���:�b��FbDm$k�9��b����.�������5W�5�q��]���E.����pv�6x�hm���h�
~�6��d\�$�	<2��`�,�������k��&d��(��.��J|��8�b��^���
����C�f��/��3l)�1K��+��Ru�A�r�
&�-�n;���c�V�����bi4~c4�A1clh��}Z2������F-�`��]����c]����^��j�<E?yi����!��������-�����>h"f��
}{�OK���@D��Jy
#�*�|a�3����M�u���y�6�@����cH5}kj^�L�����\oK}�5,���@u*
��V�s�/����?��t�Q�7��>�@6�]�N_�?����z����!�>�t�2Y�����t����@�m���(���%e��G;�QQ�e��B"��������&�����8���|5|��_��9I��}��9@�;|wn�ho���'{'@�x#`��M�������������*�70�0�S#9� �<9�%�M+	*KI$����k�?�(l���b��b�$���_G4024��[Q��=,MS�L,];P�@��&���VH���EP���tqO�n��k��������^(����o��o��z�����t�����F��^�Fa<]�b�$��i�`6](F����e�g
[wb���^;�\����#�0;������{�v���^�G�?6za�<�Jf�aD��a=�$��E�$,���$���4�����5
��bD�&��Ff��bd�xKY����X����&��tQ��et�/���E���T������g�f��Z(�/30 �!_�[M)��p'���-�u�`�N-;#0�0h���&��`�	h���:j����������}��>��S@a�i��b�J?2��!�7P��'h�d�7�{oj����^�XL�a�R�H�9Dbo$����@Md=�<�������m�h��frQ���]�"����_���d^��)�;*�Ex������,X�i�o�=�����{b�����y��Kqk�0�m&:�/"����~�dXr6{&���x�����Fg��b&�A�[O/7�}���j3�dg`j�E������62��[����'�.Q�d�Z'S�~6l6�������
�0S����	��>Y���M��%���1���"�3�d�ZC&����o���6�����]wR��d���'>��]��pj�4]��e��t��P���J����<.���0��}`����t��i�6r�����g�F��v��n�t��Z?�A�{��
�h��n��v
U�B����z���������0�:z(�1����J���7=��ra�)E�u/l�b�U_�wX�F��@|�V'6@	J3�Z�f(sQ*
&@j�RcW��9���)LO�\3��qD��"�Z���'�7�h]^�CHGyz�d�2����uA�;7��3����K�����">�aU��%�����R�5.���t>$�������D�Eof �H;A������Q�{J�\G�U^��sL�_��t+�b
n��f_���m����O��;>�Yo�N�y�0���fVr���*�V������`���;�r�����
���:��v=�Z�D_�qGu^��4?}�%��K�����K�d_}�F�UYJ1�'�/���:F������R:�7.�-x�tW�����A����}&����u��z]�P����9avt�V���o9�����
��$�aU
��#��n����Z�MF#h��6B'��\�J[P8��%$�K)b��V&�*�[�T*�>��oX���6����]�b����r-!���;���`�R��Q�ok���/a���)XD�P*���wR8��zb����$��~���������������T�1�sR&�I��Qu	��%��|�s�`� �!2�G����9aU����=rR��w��'����#�����a�#6.��I���������6|d��k���o��]���F!�O���3��h����k��Vg�.1M%�������v5��������NdQ�>=<?����/�X�������4�I�������x�t���I�y5���mE�i��h����7m@����&�X�L�;"h����a���=�*�<�2����d�^��L-�^�mZ��Q���dv#���5���/�4,��rvi�93���+�Xr�kqm�1v;������y����w�h����dw_�kn��>����Y�>q;�S\��S�cL���%�����O���$26\����g:$y#��>����,����2AKP�oo�4����I@��U�y�
��j� �^�=t�C ������A�B��v���%�����G�.7��%�4b����[�5�v������b��Nb�X�z�4T�xfw��'N��.th`��i����pn�O���mBv����<�i:�i"����CDM���X��ak�cz�Bn�$bA�H���,$��8z6��L6h������X�eyV�41���.�%B��]����NY/S��s]vs��"D�L��M���]�u#�4��r'#�W���!��
�������]?3-h�e�Q�B���7Ui�������,Y������ @�����x��o�vRx���s��s~t��J�7�(�P���r���[,4��t5%�s�������?|?P�A�2,_�*�����G���~����`Q�F����OEx='�B�y��v9n4�?��Z�����Vb����w8)qV(��,�u�R��.�L�H~����dg2���I��t�V��\~�T�%.+�;��+�V�������x��CZ�7t���=���u]���HI���}�x�<��1��$�J�~q�e�X�������r27v�}eyS9Y��_3�-�xf���f<�\%�q����[$�-�
p�����W�~Z`�0�W�ie�����x�mx�{��R��iby_�:��x?Y����w.����l{��R�gV���=(�y��b������F�����U����#$+���I�ZX�}�+����F�o����4��$��]�����r23������r23�}��ly�3#�Y���+��(�Q�!�����r�����4���<`����Jp�{�	x7��}�w�7����q�.��O`3f�3p�x�6c�>��{�	x7������C[Q�1�x��ti�h�L�Y�����W���U�\t�qU�j7�{�~
k��������M*`��w��'�`��x����S@�2��]��	 ��6��>������ffMl����I&M���dU�����O�8������O�|�j�������&����?sC��"�O�|ck������BdS�q�H����7E��s\_�������T�Hdu��F����^�����7w�~s��W��p��sw�T�UC��iO:m&sv�'s��%��������tw��@��(�����r�k�^	*��c<3�c*g�#<��r~�f�q^O ����\�z����%��70�0�����b��^pl.a�WA��_�|��sUyA������
%K��6�T�������XrN�DZMid��!���%�~���ik���D,9f���c�r�����K�7�c��[��fq?�a�/�o�/Y�!��v�(v+��[��%�;�oLL'�N��D��k:���l2�"����w��5�
���qv����)i"D��c��%K������-:���yz�yhw����b��/86���-�
K~�����X�`4��NC���M���{�3���%�����L���D���]����1<O iv�EN"rTBI��E�tC���}��������k*v<����ktQb}��j��Sw
=K���{�� �[e�d,��S�sXX����\"h��/�o!u�4�+��%�t�ld��"�H����r\���D���c��f�,_K�w�cs	�-`
K~������S��X�|w�b}��O��X���M��q��.;���F�z���$�e-�M��YF�H����KWoM"�5��<]�<2	��2R_�K�7��1��W� Q�dz+1oEl���B���Q�D��"0�YY��]Z���(�6�vo����)Y2��7�w����;�7+���tq�p1]b������]������������4,KCs�����,Y�e�-^�Ri��%�b>�3�"G�gdJ��o$�-���y%��g����j/$���H�|���(�H�P�H��J���mk��U b�
7�8u�D`~G�A�E`�����[�,�*��$"�����7��A�5�"��:@���'�}�TO2E�{��e#o��
2�AK����^0�f]���F���B3�����-�2c�knV��	Y2���?�P�o�_�Y�J�,��%��w,�j�$2�\��%5�6nE�N$������uo`K'�6?a5<����1��)K�w-��e�{0G"d�y���l�g`<JM�����y���)�UM����[�al�
��kz����������X�\��~5S�-��Y���%����q�B0h���d�s^������F�oHZ����7\���|��d�{���0~�
L3����A����.-K��A(:W�� 70pA-���-�n���=j�P�c�5�"1��,���j;k:�L�5���V����b�2�g��kS9c"���%�~������5K��������1�QA����`�B�z�PA���-��M_L��Y��t,���L[�Yo�YS�d�N�i�.;������%���is9k�g�T�X��X�S��Q��S$+�����6N����6d,�f�pai8���35K���ic�&���<���Lx	��x,��:��(Yr��975�@�Q�c�7��llRyo1���X2���6�l��>��9�����A�i�z_3m>/n4=H2�=oXK����$;�<H�hw��L��uWf����^��L��qq��Y'/.t���6-K����7��)�������s��|
���,�vk����	�z����������Y���, [�,y��x7��wz��!}�i����E�o����S�����h�~H��s-��zy{%��r�+����6��v=Nu���?a���T�u4��I�n�,�[����?9�o+����F�
�`-�$VN��v���4�*����^n�PS��Qo�A���@�0`�e�eS�����5��b���1Z^�(yJ�#��8@�J�M���$	z�3nt��(4���CNO��i��Q�0����<�D��,��)	d2���DDeI�}c0(I2��U����{�5=�4��D�G-����)\��_;h�@L�1���mb�N�E��{�i<d�-�pA^"�I�S��pw��b��OX�H��~�|�wo�@��}��s�w��q���G���������6��O�_��8��OE~9���tE��������;��f��;9�	�(�Zr.�\t+J������?"�������s��~l��c�����������;T�}���k,����^BHj/���k����������.�
���2�M��e�?�?����?=�1������w��C�&T������8�#	��E%�`�����/��}]_}��m�H&�-;��O�$��W�����t��}1�������������,t�/Yt.�,��N�W$,���N����w��%Ly��fY��}�E�Z6`z�!�����������c�+7�u�@�
FW�TF/d%?f��g��������Y���?	���:'~&�TP�}
�������O��i?�N{��0����S�2D�t<������N_�$sne�~�go�2U=1��H�#9�;��~w�*��s��F��s�� ��������:�H_��z\r#8VBp��pz2N#�3�&�#�S��4;g����s?�NS=����6����\���s}��R�Afg��T��l�vf�{?p&�--��Wu������.Z��1�x�x�&|�����L�W��2�t��~cq�9��T�'BNyc���$������!?��C��=�����c��8UfeB���W/��]^,
N&76�Z�CE����$\�X���#�1r����P�y�yY`@q6pA
.M���A3���"����da�g_��^��HM�8����.���cun�&��
o���r�X�r��66��)��������~���q~>�%O�8Q�=�IT�Ey{$�����[}����1��V�����g*��l�X*Y�4��9��W,����CB4
�] �4>�{4�����^�Y4���P���8&H��j���Z7����!v*�����R������4� �!}<����V��|Y)�19�mk����������z'�� �U� �J?K�:�����S^\�"}y{IJ(9���:����{�.��$O��[����d�J@�d�����Z�;�����N���$�Bh,U���g�	 �H"@�<s�G��D�/"22���p#(�<����/v�%���LNO��R��1T�6����,F�W�������q"�tC^�n!@t+���M���n�x����	��R��Q���@z��9[�q�S��$�������S �A�[B4�K��]]�t�+7�t��q,q��~Il�W���HO`�����k/�F�dp��`�	�z�%���M�n�@��I�l�O:����=����5M�6�2��$����n������8�w��(���
(����Y�#��F{$6;�L�c�p-���1,8�e��!���\EI�g/�p�0N������L�g56������2[����"w��lgg���*p��q�������:����c������r8
����{�<Nc�N|b)�B����c��.��ps_�<6�9�Q�>��.MoxxJ��4�����+��L�R[���Q��9T��E�R�.dN�H��_�;u��I����������NZ���%m=�]�����~.��E����	�~W[�%y^!���3���errj��`�{��h��8�y�c��t~(���O�%�"8�O���H�F���qk,
����v1r�R��3��?x����"��O�6f�C��A��� YeH��Sr|eaYuLzB�[
�]t��ju�<RR�`kC���$��]V5�;t-�e�cA���(L:�J�C�s���x]G�Y�B�2*56�Ea���!����`������Zu��W��A��c�e��2�O���Ac[�hD��z���<P��a�����%>��E������4>�����o��p��������w@���P*8��~�z�����cU_����
Mw@�s����$%��Hf$�	w	C,���p�B�#�^�l����U�ZE%�_7��0�#`%h��fM��y�>�)C�LD1���s��"Nm��[�d8����h���B@�YG9`-�e:��;�9}��U��.�si��N�����'�*�/��
V]���1,u�����-.k��y�.���j��J����D�<'7y&z��t	^T	�t"��'�;�����L��~�w�d�m\�X�~��������m���rCk��D��bl\�[q7�%����������kl|`��
H}�n7���c��:�zp�S\��+:���c"_����\�y���<pw�7���uZ��SWt�s����G;��=ml{p��:T��gG��W�bw=2|A��d��!p�<�������:���O��~	u�Sdg����jt�m)���V�6�����%�D�N�U|w���d��C"e�4�$�Ln ���I
�a�:�"]�T���9�V[}0�L�VL��[��X�P)#�56����$���X����=l�U���m�����E>�n+��Q�k����?'��'UwZ�+M)B���sO��6#�b�����lW�v;==,!��r$�&'K�${G'ka�d��Y2���s6��5�P�U���j�,QgWk8�>0j&�yo+_!���p��d��w:�����Yq�]�s
$���\Q���n��pN>X���R�������R@���Z�
�9_�@��o'�+�RT�v�@�8��e����%tI�������z��!���
F��<K=/o����Bs�2�M�1���B�O�.�Fz�;����=�����E+��7�Nr~5���cp8��I�!OK�V��?x1�Y�@������]P���f���x=�q�M�Cm�k��qCD�z�Q��w������5������y�g�$�}\q�"k�g�Ydw����{�i[��y/�nji��C�
�yK�tw
���y�V];
��01X�f�u_Qa���E?��`�F�b���g���r��T�Z���m��L�%���:@��~_|Rt�1$����������`��c��KR���4Lj�D����wT��������"(zxh�����jl@�H�n
C��z�V��GP��n���=r&cf&vjf���a���yj<���	���YW���T�>Y�x{����D����\����,0>�+���U��6'��t8Q�����H��n��G��������E��@�8���T����e��h�U&��
��+a��vd�Y�Tf���*�$�B����{��<�t�T�I�/������)����< ~��eumeg*�Z���K�t�����;��d������<v�))�4�S!E�'Y%�n3k����<(v��9��e�
���i�]:K]1zvZ�8������Csb�<A�-�f��N;Pf������FGb��Ch���~�����Z�_��B_B�7&� �]a�O�2G�W���������_��BX����xz2�gG��u�l)����(������"IYVe���J�q�c�/��]R�z��t�������zq:n���z2�)4oz����F����Z�����c�h�������U�jG����{H;��������E>�3�V3��&Zi�K7tlW�y���6�W����|<#|������]��%��]��
%4��s�?[y;�7��T�sc�����~�b����~�9�:�y+n����#y��������y:,���g����
2�����[�\�5.;�-)��t��y�PEd��%QM VjlI��;@"���G��*m`V�l[�0�G������c�;Qs��v� �
�2s�C�D��������f�1swp��
�m�:Xn��0�jG��
��E��R���I	#�`S���hMi�SKzg��"0�3���(1�C?<1_@K����4F���&�T��t��
�����bG-�#^U�����BVT]:�Ui[G���QC����k���9���6K^%F]�EO�!�����?����v(
Th�#�@Q<����Zv��a\h`l��cP��n��e��>�C����X@����q��3����'@^	%xp��6~�����i�ZcS������HOwIklU����&�R]ZQ����u�h�K^ �$����]Z"B��O����#�-w�p��v*�4�"^����j(z@Z�,Z<�):,��eI���y�V;���C����^�I��4+�I�M���bR��m���-m�FP�B�KX9�������c��c�'\u"�M���,��6�)�pS���t�K�7���w/�p��5�)��e:n��C8���"�ia&����[����I�L��g�#xFw������0����5R����R�KX�3G��,�v#�b�r��>ZE+����p���i��'
Z��^(�6����"���VPq�A����}!��~�HlU"��S��i	�5��[Qr61�������@�p'���}[�G�j���)����5�Q�����~�R'gSPK�p<w}#Kty
���Q��5�d���K �{�tQL}o�E'�Y�v�>�wq��Q����(V��[Y��l=6�_�m����T����;-��!6e���vy���
m+���L��
�
L�'����#�V�r�k�:�W���������:<�B�����/����)�xz��m���Z��5���g@y�\��)�����h_�!(��X�+�s!��v\�n������|0�V��o��m�������;�����l������u"5er��z���H�]"g9��sqr���yA��tr�������\�u9I��]��3\�����v�xIr��rt��]�1?)�� �(N��4z�u���\k�
n=�O�)���)�l@��;���)��������\
��o��F���.��J;�PJ���*��t��F������I{��:���e��O�ZY�;V=8
)��:�[�H��-{,P�.��������l�)�hn�8D��K�����D*��qw�Ro�dT������JM'�Q9������^�r*Ry&��t���@ex&^j�q���@����r��nt�}]:����t0����JO*S��h:8�l�}����6<{M���6��[SqH@OM�K�0��fWh���������y�qo�,Io ��Z��������Cp�t:�t������SZ������6:n�r-��znS��edLV��*q����$���,'X�9����<�������(�u���ENa�C�B]�cj�s
�L.�)��ZLM3�����O���9��=�;��u'>S��Y(��NL)����L]�G�������c���z��0��g-�uu&"�������Sk���UhL�w���u����j��j'>+��?Gr��x@���������a@Og�����5�.���R� �:
���M�  G�����P�;���7��{�*���'���V��4�����b9&8Z@p�2�#Z=(iw�"�FTzNW<v���n�kM�����f���\E�p�rJ+/��y!��;��}B���#8F��Fo<L�q���6��6K�u!���@�\�L��&��W�]��B�D�1-���6���v	5�k��Z�g����,���7F��[���a;4�I�[o�F�)�����h��)��#�*-bf�#��B�����PO�i����:��9�g��v�r|.�Mj��r�Kv��c�7�6H0�o��j�7o�'�S���rO��;o�/�m���������=TwVl-���	�1v�
�VZ��`�����z@���N�q�wLG4��>��t����^$t�Y�T�|�j�t9fi`���3���|��%����D��:�c��:\�<��K��e�I=_��]�vx���>��j/�v����l#�y��]E���A��"���h�-����|���H�-�B��A`c���!��������".9����"���I5�X%<�9���5��K�|��`���7�������$���h�gW��?��\���[?H��������9-�
�����"����3ovf��/�ROCBzU�Yf�R{���eBe9���fE_�87V��R<�1�����U�P��Kz����7^`��bp�(����Q���%#�	mA����ww�pBY=����>�`C�
O#�LU�8i�J��X;8�o�j]~��U��RL��ZI�����X;D
����+��3_���^Tm*�Q���,Mb�7��n"#�R����Kae
�w�SH:��P3_`}���1�Q5�yS���=-����"�@�Tg����#u��K��M3~Z��*([yC���eB���B����S�oV���\�=�r�[�����������������j���P(��0X�V����(�V���_J��S�)Z\�����2�c�<��Q���0lopPVT�����1�����]QD/t���=k�����2R����T�b��	�/Q�7��8���_w�X4>0LH�:,L�O�7�el_!|i#Z�I�J"����p�(���/B���w��	��������z����:B��R8k(t�^�)����b�~��(���
me]������A�/hEGl*�}}� ps��]v��A��h5Z[��E��i����
�M
���QX���Bn�;e4M�U�PQ���h<k0Dz���["XMm.-���M�CK�y_�;�N�f���]N����[�i����K�A�����m��Pe��+�����������En��
a�����2`�0�6[����c����\+L�c��U
�z��v�Cw]�h-se-���D�]"��)�.���p&"��t T���3	�xD���'dG$����j��qf%B����O�8s����c:P:���Y�P\�3�����+����Zg���e�.���zza�F�t<.Y��M�&��Z�"�Z�%x��`�NpC�
��6���ZaFI.���BR4���A�@23KV;�V��3��)�L�"#t�����j���a��f�\XUj=�p;��=y�X�Hpx���FcD�j�������@(/?vE�R��i��B����J;��M��`�N`o{�B<N�K�����x4��
����O�6��VH[J��v�YA^Q*���
N�.�m}P��/!Y*.27����)�0���|SY�r���r��vD|c���-�/f%P����_�mS������%h|GY��3*�
eED�"�NVG$l�"4}PZ��J��E�\����m&���Y1��2��^���^r�(�{X��C{+��*_X���9_`�X�(_�����j{�Yq���S�����6X�=��)��6���}4�	@��_U��f����n;h(�-_��� .����ycyG�n��L;���q^���fGp���a������#���3)���cb��e��jG�����Q���h=
Y���k9�8��3���^������Q�f��q��%�5J���P��`e���%�Mv#"v�OZ;�Q�g��z+���s�*$��Y��=�N1O����A�"������N�����B�L }�V^���7���y7 �B1�EO=1���9����_�|	�lDH�O�:��>�NmH,�)��Kl<tp$,���C���Y�����XK���n2�x�:��}6
�Q�����X������H\��t�pfN��O$P~������Z��p�����}"��9�O�d�Tt�j:p�r6 �M������,E�J#}��or�<��d�XM�R���N!N6�c�zA���5C[4�����z1���OQ||i�#��,����"��gH3�W�� t��}|���n_#zw���R��@1s(�-���B/��M�@6j�����[�{�3g�q��j'?����0�5V�����S�'3���I��!��~���������0J���s����n�Q�����Pj6'H�a��� ��ad�(8�PJ
$�	������?�P�v�	E{�^{v���H"<z��������LN$��
�6����b��<�`�q2�X���������X6��I��A��,��R������VVW.�IgXv�N���3��'�������N;���`t�tE��cb��^}���-�f��U:K�p��QL|�Df���C5a���@v3�IdY>��������I�u�+Y41X���/�w�8Lg�����8��| ��^������o����u�������w*�T1�pe�w�!+�RT�4v�����pK0���V�*�6�i@t
K
����z�xF����f��Z��P*�u��)\�1B��qF`���G�$�����E��C�
��(��v`L�`(YW�6<�r�n�	@���;����t�SijP<l���/���<��]����3����L�`��������-�.-m#�!2k0|]��	]
��
���H;���n�i[V@�_8:�����R/m�=e�Xo���4���k�^�qv6�O`_R��3��}&H�@�f�t�>�1�`S�un��J ���GWC�����%5x5�2�Q�c\�����3{;���|���)g
�iGu"�����������Gv�,�3J���O9��_����I����/J�+�6,e��f�nz�&���:{eq��W:$T(���Sr��~l�;��W��w�uG-�{�����5�Q�T�����������Njk~�wH�I��,�����M��
����� k����iA����$+�N�J_�'��cS%�����;���6��m����Xv�h�Vcn���eA�PN�!��N��=�!�<��'����>�~G�yo�W�L��L:��J(�����-����D�
��_�h���0T��R�W�����>�K����L�Z�n��)h��ck�����3j`�-��"��
z`��)1���Oe%��s��n�����F���J�.N�az
���r����~��jX�!��5�6��W-��*�V%CW;�=s���i�����v��E#�&)3������[Q�)�[�uU].�!z�������mC$M��AH<�q5�D��:�{k�7^���]�)�Ul�&%�r90�D���{�\�������c�BmA���2���!s�������V��������d������k�����'�>���i�D�)�������	��}t��{�����s��Vl��� o�����$BYrc�Y�dVg�}�I[�Sg���/����:"b�:aM��D��D������^�O_����x4H�.$�9G����uO��+�o_b?	��x	�>2R'9	x���b>��a�.(��w� �6���>h)O$�Dr�M���PP�2-X��H:B,&�fFH�+��5}HN�
�;�����b���7E}�6�����g	����WX�����������e�Pz���WB��nM+���A+*��\�9�������qh����vX����m�W�6&���U��;���:l���jrI	����AB�����(#uY5K�������Z
��C��X
�������2l2�!�t���';������Ct80���5\�V���UO���t�=U�URk^���4W�<�M���aT�
}[�2hH���;��N�h�mbB��O�����B�Q����f���Wf@��C�{a6I���?�G�/?����?x�V7|�� E���D�HC0Zh�d��0NA���<�>��������)��@2�O�f���X����F�fF�����	]3�#Sp&vg#S3�#SX���S�!S3�#SX���Cztf�]:�dj�!x7nr����Zi������8a��7���,�>-K�5�/����^���{9��w�.�.-��I�h���U��"6�K��J��
��Q�y��hN��E�� 8+���p�
4O�5��p�����
�c^d5��7�.���n�4���Z�$�lIs0���M��R= B�x������n�����"�5!&y�H�0����E�:�������vZz���2�"+���]n-1|#\e�
�v�����8}TqcI	�s���~�o��	}&��z�=G���D��������`�c�����Ts�'����pXsz��=��u�W�K��t���V�035��7w�����g=8����l���*n���As�!��I��p��O��gS������
��
�rS#�b/M�u�b����v��
��l��{~�����L����.�,N�4,���L����}c�w�Fr��Z�B:Y&�{Hn�Tr������%�jk
���,~��N�^�/��z^4c�:��>1�F��5��U!�4w���(��s������@~b�;X�U'=�O�Jt)���p)�����V�f��v�&��k\����d���f��*3���>��5=tY-9�i���cP�2���S��%�k���i�����{�U1��J�f
��C����8������&�{���C�0�5�	.)�,�����+�Q�4U�ek��7u�
����	��+�@���b:�'����9y�[��U��ZiG���{����C���BQ�)Z���h?��dD�>>^"u	�<4���6�����xSZ3(F�%���J'B5O�0Bm��n�U:�y^�:�v`���'V�S������F�#r�|�j�Za��h�J�>�?�G��V�	��9i�b�������{w'5x�Y2xX������%.F�U�9�]|�I��d4�5�����4kZDF��F���4kGF����3����d4;u>��fM��h.�L|�9�f�`�i���M���daQ_����y�R�9&t�-�[�\�����$Y|m�����7���fG���n��{���C+#p������ !J�O~�yU��*�2���57����d����b�K���-X��&9���H�^��H%�o���~9�l���OwF�+��p���������X��s!�VS�ad^��7J��M�q���3����$,��u��#��o�������AB,�����[����Pf���!0Y��������Fu�h�)�vL#c����qa�fu������___&om|��M�9�"w��8�����������)b��YT]$j�E+��`e
^���!�����������O�.k����X�X�����TmM���0�{��C(Z�vqN#!c�1#��XfL�Z`���YL�AnP RS.�����[n���R0mLy3z���t���N&�MKYv#@�,���J���������)}C����&�������2���
�*;0���,�	���2�c���r�SO��%��2�n�N9��@�hsmhv�z �f|K7�,�o<V2��}r�xn ����YSN���m�g5�N=$���5�G?�����P�
�>��VMC)���6c�j��BcZ�
�T�i��9��-<PK��F���,�/oNW�xpRRLB ���vt�Z:)�S87���K����R�6���a9��������>������3zT���?�'|�D�~p~��iAu�4����NA1�\��h89������<i
�
O�i��"�k1��5{N�1���5$��,4#�&��L;�Tl8�u��u<�����b�����`�O���6�S��~8��*�������R����Z�����hG���!*���;������vta������=������������(��FU��OX���a��E��m��A���|*��
���D�c��0"G�^������S�5�K���7�K���:��<EkhP��E���0�S�{N�3h=a��_�Ku��q���4���1_vF�c{�d[���o�Z7*tW���t��zW���Z[�ZjJ�Va~�nS
��c�%]J���m��h����-]r�2����9���.���w�Hm����j������h���!z��;���Vl���.��A��B$��7�������0���C���C*&���;sq���D!�0���tJ��~x��{	����2���j�=@�i@4� ��Y,��a��L���8���@�3a��w��������!{wA������z�'�XE�kM?����6�zl���[{�K�����&��S��u���Rmp(4�
������b-�\GL���P��UT�����J�R��
)ks(PfT����1�������a-�t�it�����h��v����^��P*���=��� �.n657��)������x���r%����B-�����y
����z&^�=��S�Pa���5V�X{
@<��FX�[��>�|�>~t�b7���RD���`���{�n���
tn����N���J8Zl����[ �
�~v\!2�w0�{�vZsv��n��
���.��6XJ�g�{�5!����E
�X]_�VY���j�o��7U��*�����sD.�%�b/\cV��sD�L��(����B9V,j��C9oEIG���� ��8���V������c��j����
����f'�{lR
��������P(S�\wh�jS�$�u�s;W[is�xP>�FaI���1��-n�����C��|W�yB�5�t�v�aB=�9��F��Z
�=8��qUID,�����]����g��]����A��#��li�g�k�����f��]�����3+�v=�f�u�y7�d�)�wd�=��t0���M!Y��T!�)�:���RH��������,Gg���I�k�q:���`�I���K  ��x#����o� ����[�Kt�Q!3��!)�����}�7��{_�b����>�@���,�<��bgP��^�r?%��	:�H��<��)"!i*�q��d�����Fj8� M�XI���!NU]�%�������	ue
&g���	�Lh0M��0��V�,�t�~X�L2��Y6��������9�!	�&}��O	X�9���Q=�@�:fdu
��`�����M�m���D�_�rt7<*����l������������Kq+79�F{����C�� M�g.�8o�(�:��'�w������~u������%�~zq�s"�A�Z>v��=���@@�����W����
7���f&H�`gl����s��S?�%�q"B$Kr.�=������F�So����V����c�4��,�k��h�u��N�
/�x^�y>GCh�8%�����&�����>�������%��w4���d���8-��S�sH���n����q��9�V���l�|^����9�[
��-9��9�`7����N���<h��tl������n��m���S"s����=������h'5���p�f����Q<7y������[5Y��������������i��<D_�b/����{���@/k��-=��8��<�(����0����pgl_:m��E�4�7[���,,?�������A�Jw�gt{��������}����+��
�@�z�%Eq���@�\���'B�-k�C���Yhd����������-�r|��Ro������($aS��V$�<�7�����P�;5�{s?���h�]�T�*"m�+T��M�Mp������2 �C��$U���p=���5��@[
�)%�(%�(��w�_��m�4�7�
Ahr�S�������A�� �a�\2rc6�N U	3a1S��68&7K��5r�]~7<���
b9��/O?�C.�c"u�gy�	����B������Z�3��~����R��|����P�,1N�8�]������1���=�MD��`����#Q����W���Hq��6*���F���r�F�C�cGwL����M��ke-&���1�:kmkW~����6gg�p���NW~O��}��O��u����P�p;+�T������R��}�z:�U����{�L��'P�a
9�%sQ-�<JM��:};|���$(|dcR66m�u���69�� 7g��C:W:�I�8��n)����y�3�S'O����<����E��y�T#�X\�K�;j�/j�~����������Y4��F��W��HfL	F<�����e�*��X�2�Qg��R��o���s7�_������������.^��������<s]!���
7��6�,1�s?�>s	��v��K���H"������f��{�1���&�MF���@�b|Y���1�X�|cH���[1��Z�����Y�p�B�����	�\�����]���6�6���~�)b�)t����a��/�B���=������+D��y�cz���5�y!^��������=#�7^�m.a���v��c�7��^�N+���3�����lK��B|��ZH��v����jb���n�67����o�XT3MfF��;��5�9���?���,��4q��:��F�O��#���K��.=�kL�yJ=?�$tk����|cVO���h���l�{��Z@�}�@�\/�:��<���y"�������
P�v���QBc-�a,��p�`�I~x��IYeUd8��[R\=Q�I�$u�Xk�!d���%�$�������A����U
y�{3}Zi�D:�mU��4�D���U�)U�*F�;���bf&�R���@������8����\�BWU�'�;IL��V�.�ps��1�,X������������O�]�@�O�M4<�t�~&�%_��X�j�R�
o��d�
�'�A.p% pAi������������I���!bs�V%���n���)���)^�X��������N:���*T"f��)��C���9ew���$.
�
����w�Lj��Z\T����b���c!��s�P��^�>�4e����'�i��T�Q>B�A�*B��m<�%���5l*�h�=;� w�v	\'Qdd�T1�v��a�/@e�y���]e^W+C����u���#�����t��Uo7�Q��`]�/��E�O�������9��)���4�$����N�����o<��������S04��	�~����8O�o�ah�U��#�����Y�8m����4��7>0htSO����(�������:n~��_{�m�����=�cMt�	��	~|N����d�K`
���u��)�	$�o}50;�A�����R������/����,�+���J\(Z�)`/F�������]vuD<�H��^�bX'R�x?C��H/��d+R,UGi����O�J�41���)�S)���oI��[�J��?xr��8�5!�$������H�'^���/=�[�m�+=^�;�l�G���1gq�C�8���7���'8��'����+��Y+������q��XF-�+�����3�����f�)~�[��':zDg�Lg��M���O���"���$I�g���heJ�c�����1y����� U[���gM��{����������TOQ�K�������2���1[0��<�l/W� 	1�^9���#�i�hX�xk"4��*6#,)#���YR��py|���3��[9��I���0(%o�>�� ���b����Vn9pj��zF3�m�[s�\��]�&�r�)�SMn����-u�c_�����S���i��_|�K8o
S�8�bo�}�$TDr���j%����
��*��?W�e����c\*����;��G��N0�&������?�r<�{A�%�f
����hDu��qE����cZ��
�Q�1`��oT�_�'�c���67�`s��Cb|������o�WA�>c�,���Q�M���xkA����&���~IW�i���dl.S`B���*ao(.�x#����V�g��/���/D��	M����C�@����"Q���{m�.�]�~��N����EEs���������[������|�f �&��fJ�����u��������>I���\
7�~�����AFh�2���,2�����,���P/���}��e	[E�����r����g�H4����V���o�	#�vci>f�M*�������s�U���n`�t�p���Q���J&a����{�K��-p��W�Z[2��n���Q�����/}���[�aFL���z��r�*>sK"����+�y;?]�	��s�K����~	b��1�j5��jk����P2�Y���NY{������^�A�}���h��?�"��"�	�����W�c������9X]��{0~Rf<���2�M�e�zZ�?��;�X�.����{f21���M���y�����+�<&pB�
�;,]Z,q�:,�?d����!^^���,�-n�������v2�7���2pcf
��L�{<�=Y���ru���#~���%"C��}&9�����v�Dt5+�iln�������Rj�����S>F-��5��8�
e_N�s�8V�V����!T��������z�<�5�`���9��*r>�*���jSm��u���x�?���C>H�"��S36��k���=���$*b��p���18�V�T�����	+tP��hb��$����xA<��V�=Qa�������U������o3�����I	��]������nr�3Z��zA)�`�'W
�fL)1@�hN�yN���e�2�S��|N����|��od�����x����E���x�������~���<:�
qtAo��10���x�<�s��$�:��B|� ��c��C���(�����M������wkRs%��O'�/0/����}���g~�����<���Z����R*�����������n-���8:�������}��������w��b47���}��R��
b�7o?����������cS��'���&U��?@>w��nt\C�y�
�b�ymq FS��~���j����b���������.�������C�H��BcW������=��XDS�*����Yo�2}Yl-k>���2U�����
�����;�����\O������w:/%=�^qR;�B���^�[��M-�Z���4����?�H0V��O��V�$FF~;���?�8�D'�B��F)�&�=,_����h���
l0������:�bu�?�0���F+��x[����p���i|_����Y9�)��~f�/�p�vC���"��D�����pq�|ap/�F&��t>s�q������EP��Z��zy�'�%�`\�g"��t���w���U�_�:��5��&0��PkN�s�������OV2y�U�4�J<���j<�7V�������S/?r|���I����_#�z��K#�Hn^1Ib�tn*����5y�N6��F�����|ru5^�����3���������X��QV��Y#f��������+X����L^}�<�p��MrM��0we�-��R�L-�v�����SF��fG����a
�{�|����W��?�z�f�������,���#q��t7�Ex���W��������o<�������e��i�@7��m�,��{�j�\*Z���4��Ze�^L��3������x�`���^o9�B9�����Y����1�j�Z�P*��������+��nV��(�W�j�X�eN��������Js�Gg.t�@}�@��g@��9e����e�BI�L���P���A(���B�^�����}�1�L�J�;�<#=��[�p3	�J/CA��~�~���pI���q�|����<X�-|�W�X��iF�rx�w��So�/Z���$�������[/��������\����oa�����L������{��Z2�R(�D�H�-�=#/���CE5�����W��sSv����I��OZ��P����uk^]�&{�v�,����VW(�7@��,��~�}N%��\O<gc������=1����JMWx�n��+��3C��i>���3A����gO����z�u������sRUJ%���T�w%iS��t6��d��K��b������*��Lkw\\�m�x���	xN��v�q��;����|o�a{;k�����������~�����Kx�H�?\��F*jy���o��~]�D�`#�T������Z��s�2s��[lv���O�5���P4h�s��7�j�w������7��n�"�����������g���?X��E/�bz6;���V�	��pR/�B���rgwzu��V�b����9�BA��1�����C�����oX7�� �NNyI~)(w&���|��o��v�&�^��L��n�@�I�U��M���Y�<<f�e�����,�g�U������-�F������7|�R�o���wJv�
f��6���d����nL����Uj���hx����o�.XE�2m�
��I����'�/a�b#x���N�Z	x�����
f'.L��=s�F�	(`���
L�
L�
8mfm�mm�qk�V^��H�V�f+V�����jEk�kNYuZ���i
*�cZ�*���x�l|u��8S6��$�%mC/�=x�z���ac:2-�����@\���h*�/���� ��������)8�i������7�LOx�3� ��S"�\V����c�A���'^��s}	�9�7'�^=��e!��n�Y!n%�7^�6WW���x���3M���j[�������n+��I[A�,Y���^����8�ap��x��d�����/.f
�J�dX��K�>��F��n��#\�O#�P�����C��>q���|�l�A4�4���x�^�xdV��|������v/��l�5W5K/j3!BQm#"���������u��I�dH�/�MI��e�~C���QKYG���OR��u�&�����t�?�@$6�ou�E����H�}��������?5D*Qg�aO���5 %6!����9���?4�@H���al�����1>&YC��T������%��������)9���O���_�����G��K�sN�q�{v���N�����2m6�,�8�����2zRT���({i9��d�/x��2�	�Da-��&3	�H��j�
���,`Vt��.���Y�S���x�d�F�`p��'���6���]f���3kpC*�b��!G�>��1�M��>��G��:&Y(`/�^Q�h�������x-�l2�o�U������?�-�(J�&��j}%r?�qi,���1�\��A%4��i�����<�u<��cLa�85@b(�{�[|H���������:���5DT��pd|��G��g_o]����R�Z������py�i���O=�l���e�~��"2
,��7b�O*���Bu��>�}���>�Jw�,����]���X����5�5g�s��)`�,�"R��C@j���o�	=��0P����������~��6� Y0$x��"�7�?����_�A����	I�"���FL���c_����f�K\����&%�@3��h�k1��fV77��������������_3�ojbd�*C�� �5O���&���X��a����;/sb`ww^	��7��K�����PC���Sh�"h�fe�,Z�	��fm�D�#IG��qdX'AZ�)iq��t���\�@-Z�2�*.}�@��:},Y"=`4����6�G ��t@����/�|����$�mB?��x"��q�	G;�pNz ���Y
��7r]��������0���;���P�:7x
�"�O��?"h��7{���>
���0���������}�����������q���
�)%'��T�!��l�����FF��!�EA��_���q*A	����ik�����rz���~!D����(V�0�<a�{
����?��I��%xG'q~`�6�s���$c#Et)�K9���N��>�p�#���2X����d1����J���,��Q�.���k�gw����qxw��'�(��qr?#F��9k�aCk����@,V�����������r��9J�w�7���p�>B@�6�*����0������B��*c!CV��8*n.WG?H!�7�������i��2����;����o����w�������`��y8���_^-�����yGG�7�:pc!�f�u�Io%�0�m</�oZ�2-O��=�@�c��@��%�Ru2T�qJ4�)�����\<�s�JWX9�>�6���Wh|x>
�l��d�;��f��[�U��4_��^��p�
d��O��yG�?�}�w;�I#��\{�T���P��_8��z�,����l��<��L�f����D��p��O�l� �	a�c�>��]���z�� ���C�Z�t&j������h�-�/�`�*k��XaIq���@��Q����M�5l�@����4g��44c@3%%c����������pK\��I�
\���*K�K��K�/r����b	����M�w���m����e�*3~x����7�q��e���Vv��b���5��f���8SJ_q����XS�r8��������^�������^|@�0��dL�K���X����~����wo�$��{������=E��;�7s��r��	��~��iy�����w�|�B�C�z�!�S�U�������~�N�m����������7�<5����*lX�I�E��e��G�����>����p�_�=I�s���'���������w�{G�Q8�f����|;4~)�`6��8sF5Pq���HM����������kz������q�������s`C�������c��������S���
>
����!5G���@|���KZ�`X�!Z(@7���/+>��\`q�F����:��5��7q`WWWU�]�S���r04����nf���`�
�@�/�n�[����a��^�@�q�����#���F�z�V��~� 6^�v�N>
�wQ�.=��6����{����������%����y��?��4��G]��I�yq��A�{B�����`���^��[Q�I5��\e�8M.6���bw�F����N�{32�����<��j���j���3`���	��c�e'�%�d����$�F�	hL��U�>���bF#�y�2�y���m��#�9#�#��3n��J�'6	1�q��8���������C]��h7=�z�#�7=�Y~\%QpL��fx�K
�A�L����B�._�d�<-1��{6��;���gF#N�R|��`�U��� c�kCAOP����P��o��L,������Z�@��4�)��X���mf�����#���H��Q�?�`��P#�������	�EX���q�"�l�I�c�)��g�Q@��+��Yq��?Z��X�s�%$?���7o��
��d�nf�h���u�U�Y�x�F\�
R�%n��m��#�@��AF]N��O�Hl���T|����?�U�l�g&
�9����s�������(������v��0�x0����$"x�! �+�<����c��6��fs�^�%s��O8�,�����K�Y��f�,���#��G�K'�st�����l�*��1��8�H�G��=#��C#���(�72~�~n�ky:�\`���~��8�����lu �+��!�&_���f�����x�%���W�2 ����n�id�DI�};2��]?��|��D�N#Zg
����hKbu�&�&������r�,��9�?M���5���+�)���g�B}����y���f�����sQ{�%�����ZL�l"����Em�O�^�_���1M��x�����i��t��a�H-�V~^����#Sk�
'n��?8��}�%e/h�v�����������Z���-��~���/t&{.k#'G�z �q7Y�D&�x��{�Qx?)�~&A���%?R�����������.��K����������rdK:\�p���J�-p\��@hm��y�1���N��G�L>����#�ig��h�����~O��:�����2c��=�^F,d�
K�J�LM3rn�X����_��)}~@�_0W��3�!4RK>�Foc�3~lri��}qr������q��U��� �"��&�w������~���H�u���
����m�e�-c`�*`Y�-5�V�
��<��&|��|��O3�S��6mi5S���+K������Op/%����������{���r{�����|�N{�x����x�Q`~R>�}�����/~��2�9�����	K�e?�~Oh��������#R�"���������L6�3�),<�������E6sTXz5pK�1�k94��t};��5xqG�y����Wo^
�;�#�����'|��,�R��1MH�|>]���<�=��.�T�7<��OG�*p�O��C�M~�x���':�Le����+����OMT���f���'������6Y�x����0
/��]�>��?_�Y%U�9�t*+Q��,L�N���O�o��#|��k�K(�Y�F����2��#u<6V]���=��~�h���S.���Z�('���]���D?h��V#��w���7�1���:����3����+�)g
}���KL�����	��>|���^x�]4q�j���~\�����|Pw��.�l�����qgt&��eC��������3����_�WZ15S�~�����.�>�;���m�6����u5�������Q(�y�7�������}����]o`s������u���L4���G������gy:���y�����O�0���+�M����Nt�O�C?M���#��	W��#a
�*,�"1�s�MGNt��0���>�����M�5�C/���M�5M��i�s�^������-���qu��)X�1/�Y1����K4[�.��X	T��"+S�f�0�L1���v�Pr���,��4�r��:r�KV�\��1�0�s���%��I���^��b~�=7L~����,��
�I�L�<�{�71�#t��dY����V�A����h�zBRiER6/��yh&/��M]s���8s�)�jl0���|4� ���G_�3@E�Z�m����"��6��iQ�4g����.���J�����-f���,�
dB�L�7����1cz�����#�{7x:2��1�/���R�����/����x&��kf^t����'Q�^�ec`Y����)]��z1�J#��2��8�xn���������2���Q�����	��q��J(�!.A������Pj�<&�J�FVmV�Tn��B�F�,�p�/��h<Aw��wIU����?��5�+��M��^����
��q�8xx�p��0��Mn�U�o���UE�!E8)�uN
�B�Tuy�9����}��)1��(��{��/S��S��9��||���9��A����|�����L������f���v���A�'�3��}|��*<��������]��X�YV���G�:x�����[~�0�����r ��q���?r���o��0���U�C�����g����������qo�|��18�
c���G=@�F� �U	AJ�������-��|[��4s����H~�s�������p���zh��m��e���H.�j;��3�������od��^_���f��dV���@:��8�@Q
��G���������A����h����1a4@i��sRA1v� 	eI�-<�Ke*�7�7U�����2��O<�<f�������wQ��b����6^x�,)���L�(�F�M�B���R?���4dsh>�*�(�Rr&v^V&�"�v�L+I%�6���b���9��c���X�
�Y^H�P�������L�N�����NdA���/�
�oVD~��RD
�$B���9z��"�iVE�O$q|����2��������_27���g6����p�����S�;��E>���lZ��y-~h�'�Yz�����&�����6w�t�H���}6.�!��g������7����Qd��~���5�����u(p���^6��9�A7R��<m�*$?n�m��d�q���Q� ������<4��QI�e.{�+Z}v��u!��J�y�qq�4{O�1h>�Q�,p�*���*B������R�A����/���j	�Yg^�,��9We���D��uB���D����dQ���)J_�_P�����W=������E���H'�!����`�y}t�SzJz��&0�.k�������O����p��'��1�A{8�����A��Z*����7/i�0I�N��,9�j_Z<��k��=p-��K<|�;���^�);��.�G]�b��qB�%�EO���\�q��e����`����!�e�����G�I���T`��7!����I�5������������X�
(�*���<��.���-,~{�#��`��W�`�#�����P���D0@�&-�����.�������E��.�x�����b
��E����BNx7a|���yp�"A��Vr����\y�0��ab@c�}��������uc{qF��r��3a�F�1H9�O���p`���c�y^�kF��x�l	
_0�������M�z0�
S�O�Xa�zL�X���D���G%>e�wE���m�%���B}��<���%�e�\�;/�q��2f��0����Y��sS��ml�{��X1����g�o�Y�����4�������!3�	+V����YJ�����6"��F�E�
���*@���@t3H��iY��$
����c�Y��Af�3���:��U/0sy�W���`�����J��Z�%Q!IAO�����$���6��������HA_��2��>�����Z	
��o������P��G|���xT���f����i�]z��0�������0�������4����h�����s8����`�Eo�
P]��'�/��Q$���B�Fd�����
�j%L�S��'���o^�t����O�o~x��b���oA2�|w�"�uY��B^�/����+_�{���� 0���/�j~`�4�0��zr�����);�|��}o�m��R���<���������?���l@\#��l�	aal�"�YyNu��?�o`{-�g��=�� ����W�4+������(�P�H)]��n>k��<,~�I��7�~}�GN�h=6����k�^�D���]O��������� �����P�qM����K`�IS�t\:�m��|��?�	��U	����/6�5�d�`�������}���[��r��gI�~��������t���%�����{80o���X�����l�s�qgWW��|��\`>�|qyy����~��r��}g\.Fs�[���wX�&+��������/�8��p���:F���L�\6KMo�Dv�c����l�}�
��~�&�{~N%���:���l��J���\}�-��������:��}�9��75�&��-k*Y�x{�W���\���������ZR��cn�����j�^;�iW�r�
�B���������F80�������G���_�@�"�����{o��N�q>����"�AD�'�;�d��h`B�I���O1���`D�(�k�+_���	.��Z�� )T��I��+������/��^�������9��f�1^�L���ev�����7�� a=^������\��m����~��&�kb��T��~!UY	���C/�_�������K^�H�����G�����_���v�\�c�_}���8A�������~�����W����Z������?����^|�D�x�����x���l~Yt�w}qy����8J�5c����nrCK��L@w��������_�}��)�[���<yU�?^��_�\}���x��W�7���o���_�m���O�w�>q{��)����O�e�A0�+L���d.��Y%#���������T��,���g��{��-}�����I�-���Mg���3�J������U/y"�X�|$I��a�����YU}�����
e|������|a]��&_|������������������p^��
v5-0007-Remove-OID-define-symbols-from-catalog-headers.patchtext/x-patch; charset=US-ASCII; name=v5-0007-Remove-OID-define-symbols-from-catalog-headers.patchDownload
From 431d3c24158600b432f851d73b8678af658515ba Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sat, 23 Dec 2017 18:19:36 +0700
Subject: [PATCH v5 07/13] Remove OID #define symbols from catalog headers

The headers that had OID symbols now include them from oid_symbols.h,
a header generated by genbki.pl from the .dat files where the symbols
are stored. This requires an analog of FindDefinedSymbol() that retrieves
the symbol from the data.

Arrange for the new header to be generated before src/common gets built,
since some places outside of the backend require OID symbols to be visible.

Automatically sync ECPG's knowledge of pg_type OIDs with the backend
and fix an out-of-date type name in ecpg_is_type_an_array().
---
 src/backend/Makefile                  | 30 +++++++----
 src/backend/catalog/.gitignore        |  1 +
 src/backend/catalog/Catalog.pm        | 13 +++++
 src/backend/catalog/Makefile          | 10 ++--
 src/backend/catalog/genbki.pl         | 94 +++++++++++++++++++++++++---------
 src/backend/utils/Gen_fmgrtab.pl      |  2 +-
 src/backend/utils/Makefile            |  7 ++-
 src/common/Makefile                   |  7 ++-
 src/include/Makefile                  |  4 +-
 src/include/catalog/.gitignore        |  1 +
 src/include/catalog/pg_am.h           |  8 +--
 src/include/catalog/pg_authid.h       |  8 +--
 src/include/catalog/pg_collation.h    |  5 +-
 src/include/catalog/pg_database.h     |  3 +-
 src/include/catalog/pg_language.h     |  5 +-
 src/include/catalog/pg_namespace.h    |  5 +-
 src/include/catalog/pg_opclass.h      | 12 +----
 src/include/catalog/pg_operator.h     | 51 +------------------
 src/include/catalog/pg_opfamily.h     | 14 +-----
 src/include/catalog/pg_tablespace.h   |  1 +
 src/include/catalog/pg_type.h         | 95 +----------------------------------
 src/interfaces/ecpg/ecpglib/execute.c |  2 +-
 src/interfaces/ecpg/ecpglib/pg_type.h | 65 +-----------------------
 src/tools/msvc/Solution.pm            |  5 +-
 src/tools/msvc/clean.bat              |  2 +
 25 files changed, 143 insertions(+), 307 deletions(-)

diff --git a/src/backend/Makefile b/src/backend/Makefile
index a0655e4..431249e 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -119,6 +119,10 @@ submake-errcodes: $(top_builddir)/src/include/utils/errcodes.h
 
 $(top_builddir)/src/port/libpgport_srv.a: | submake-libpgport
 
+# src/common/ needs a convenient way to force just oid_symbols.h to get built
+submake-oidsymbols: $(top_builddir)/src/include/catalog/oid_symbols.h
+
+.PHONY: submake-oidsymbols
 
 # The postgres.o target is needed by the rule in Makefile.global that
 # creates the exports file when MAKE_EXPORTS = true.
@@ -142,13 +146,15 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/catalog/pg_language.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
 	$(MAKE) -C utils probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
+catalog/oid_symbols.h: catalog/schemapg.h ;
+
 catalog/schemapg.h: | submake-schemapg
 
 submake-schemapg:
@@ -167,15 +173,24 @@ submake-schemapg:
 # will be in the build tree, so a simple ../.. reference won't work.
 # For headers generated during regular builds, we prefer a relative symlink.
 
+GENERATED_HEADERS = $(addprefix $(top_builddir)/src/include/,\
+	parser/gram.h catalog/oid_symbols.h catalog/schemapg.h storage/lwlocknames.h \
+	utils/errcodes.h utils/fmgroids.h utils/fmgrprotos.h utils/probes.h)
+
 .PHONY: generated-headers
 
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h
+generated-headers: $(GENERATED_HEADERS)
 
 $(top_builddir)/src/include/parser/gram.h: parser/gram.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
+$(top_builddir)/src/include/catalog/oid_symbols.h: catalog/oid_symbols.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
+
 $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
@@ -216,7 +231,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
-	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C catalog	oid_symbols.h schemapg.h postgres.bki postgres.description postgres.shdescription
 	$(MAKE) -C replication	repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
 	$(MAKE) -C storage/lmgr	lwlocknames.h
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
@@ -306,13 +321,7 @@ endif
 ##########################################################################
 
 clean:
-	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
-		$(top_builddir)/src/include/parser/gram.h \
-		$(top_builddir)/src/include/catalog/schemapg.h \
-		$(top_builddir)/src/include/storage/lwlocknames.h \
-		$(top_builddir)/src/include/utils/fmgroids.h \
-		$(top_builddir)/src/include/utils/fmgrprotos.h \
-		$(top_builddir)/src/include/utils/probes.h
+	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) $(GENERATED_HEADERS)
 ifeq ($(PORTNAME), cygwin)
 	rm -f postgres.dll libpostgres.a
 endif
@@ -329,6 +338,7 @@ maintainer-clean: distclean
 	      parser/gram.c \
 	      parser/gram.h \
 	      parser/scan.c \
+	      catalog/oid_symbols.h \
 	      catalog/schemapg.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 557af3c..1398e2d 100644
--- a/src/backend/catalog/.gitignore
+++ b/src/backend/catalog/.gitignore
@@ -2,3 +2,4 @@
 /postgres.description
 /postgres.shdescription
 /schemapg.h
+/oid_symbols.h
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index da251bb..9d37674 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -347,4 +347,17 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
+sub FindDefinedSymbolFromData
+{
+	my ($data, $symbol) = @_;
+	foreach my $row (@{ $data })
+	{
+		if ($row->{oid_symbol} eq $symbol)
+		{
+			return $row->{oid};
+		}
+		die "no definition found for $symbol\n";
+	}
+}
+
 1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 4f3a5ea..270dc9e 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -22,7 +22,7 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: $(BKIFILES) schemapg.h
+all: $(BKIFILES) oid_symbols.h schemapg.h
 
 # Note: there are some undocumented dependencies on the ordering in which
 # the catalog header files are assembled into postgres.bki.  In particular,
@@ -54,15 +54,11 @@ POSTGRES_BKI_DATA = $(wildcard $(top_srcdir)/src/include/catalog/*.dat)
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
-# locations of headers that genbki.pl needs to read
-pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog
-
 # see explanation in ../parser/Makefile
 postgres.description: postgres.bki ;
-
 postgres.shdescription: postgres.bki ;
-
 schemapg.h: postgres.bki ;
+oid_symbols.h: postgres.bki ;
 
 # Technically, this should depend on Makefile.global, but then
 # postgres.bki would need to be rebuilt after every configure run,
@@ -71,7 +67,7 @@ schemapg.h: postgres.bki ;
 # changes.
 postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
-	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
 .PHONY: install-data
 install-data: $(BKIFILES) installdirs
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index f941826..bc52bc6 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 my @input_files;
-my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -36,10 +35,6 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
-	elsif ($arg =~ /^-I/)
-	{
-		push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
-	}
 	elsif ($arg =~ /^--set-version=(.*)$/)
 	{
 		$major_version = $1;
@@ -53,8 +48,7 @@ while (@ARGV)
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n"                  if !@input_files;
 die "--set-version must be specified.\n" if !defined $major_version;
 
 # Make sure output_path ends in a slash.
@@ -77,21 +71,9 @@ open my $descr, '>', $descrfile . $tmpext
 my $shdescrfile = $output_path . 'postgres.shdescription';
 open my $shdescr, '>', $shdescrfile . $tmpext
   or die "can't open $shdescrfile$tmpext: $!";
-
-# Fetch some special data that we will substitute into the output file.
-# CAUTION: be wary about what symbols you substitute into the .bki file here!
-# It's okay to substitute things that are expected to be really constant
-# within a given Postgres release, such as fixed OIDs.  Do not substitute
-# anything that could depend on platform or configuration.  (The right place
-# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-# NB: make sure that the files used here are known to be part of the .bki
-# file's dependencies by src/backend/catalog/Makefile.
-my $BOOTSTRAP_SUPERUSERID =
-  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
-							 'BOOTSTRAP_SUPERUSERID');
-my $PG_CATALOG_NAMESPACE =
-  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
-							 'PG_CATALOG_NAMESPACE');
+my $symbolfile = $output_path . 'oid_symbols.h';
+open my $symbol, '>', $symbolfile . $tmpext
+  or die "can't open $symbolfile$tmpext: $!";
 
 # Read all the files into internal data structures. Not all catalogs
 # will have a data file.
@@ -131,6 +113,17 @@ foreach my $header (@input_files)
 	}
 }
 
+# Fetch some special data that we will substitute into the output file.
+# CAUTION: be wary about what symbols you substitute into the .bki file here!
+# It's okay to substitute things that are expected to be really constant
+# within a given Postgres release, such as fixed OIDs.  Do not substitute
+# anything that could depend on platform or configuration.  (The right place
+# to handle those sorts of things is in initdb.c's bootstrap_template1().)
+my $BOOTSTRAP_SUPERUSERID =
+  Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID');
+my $PG_CATALOG_NAMESPACE =
+  Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -142,6 +135,10 @@ my @tables_needing_macros;
 my %regprocoids;
 my @types;
 
+# var to hold data for oid_symbols.h
+my %oid_symbols;
+my @tables_with_oid_symbols;
+
 # produce output, one catalog at a time
 foreach my $catname (@catnames)
 {
@@ -242,6 +239,21 @@ foreach my $catname (@catnames)
 				push @types, \%type;
 			}
 
+			# Store OID symbols for later.
+			if (exists $bki_values{oid_symbol})
+			{
+				if (!@tables_with_oid_symbols
+				    or $tables_with_oid_symbols[-1] ne $catname)
+				{
+					push @tables_with_oid_symbols, $catname;
+					$oid_symbols{$catname} = [];
+				}
+
+				push @{ $oid_symbols{$catname} },
+				  sprintf "#define %s %s",
+				    $bki_values{oid_symbol}, $bki_values{oid};
+			}
+
 			# Add quotes where necessary.
 			quote_bki_values(\%bki_values, $schema);
 
@@ -394,17 +406,54 @@ foreach my $table_name (@tables_needing_macros)
 # Closing boilerplate for schemapg.h
 print $schemapg "\n#endif /* SCHEMAPG_H */\n";
 
+# Generate oid_symbols.h
+
+# Opening boilerplate for oid_symbol.h
+print $symbol <<EOM;
+/*-------------------------------------------------------------------------
+ *
+ * oid_symbols.h
+ *    Oid symbols to be included in catalog headers.
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ *  ******************************
+ *  *** DO NOT EDIT THIS FILE! ***
+ *  ******************************
+ *
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef OID_SYMBOLS_H
+#define OID_SYMBOLS_H
+EOM
+
+# Emit oid symbols
+foreach my $table_name (@tables_with_oid_symbols)
+{
+	print $symbol "\n\n/* $table_name */\n";
+	print $symbol join "\n", @{ $oid_symbols{$table_name} };
+}
+
+# Closing boilerplate for oid_symbols.h
+print $symbol "\n\n#endif /* OID_SYMBOLS_H */\n";
+
 # We're done emitting data
 close $bki;
 close $schemapg;
 close $descr;
 close $shdescr;
+close $symbol;
 
 # Finally, rename the completed files into place.
 Catalog::RenameTempFile($bkifile,     $tmpext);
 Catalog::RenameTempFile($schemafile,  $tmpext);
 Catalog::RenameTempFile($descrfile,   $tmpext);
 Catalog::RenameTempFile($shdescrfile, $tmpext);
+Catalog::RenameTempFile($symbolfile,  $tmpext);
 
 exit 0;
 
@@ -588,7 +637,6 @@ sub usage
 Usage: genbki.pl [options] header...
 
 Options:
-    -I               path to include files
     -o               output path
     --set-version    PostgreSQL version number for initdb cross-check
 
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 2e9b6ad..dc6bac6 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -82,7 +82,7 @@ foreach my $datfile (@input_files)
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
-	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
+	Catalog::FindDefinedSymbolFromData($catalog_data{pg_language}, 'INTERNALlanguageId');
 
 # Collect certain fields from pg_proc.dat.
 my @fmgr = ();
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index f71cdc5..5a8a35c 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -11,6 +11,9 @@ include $(top_builddir)/src/Makefile.global
 OBJS        = fmgrtab.o
 SUBDIRS     = adt cache error fmgr hash init mb misc mmgr resowner sort time
 
+FMGR_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_proc.dat pg_language.dat)
+
 # location of Catalog.pm
 catalogdir  = $(top_srcdir)/src/backend/catalog
 
@@ -24,8 +27,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/common/Makefile b/src/common/Makefile
index 80e78d7..3a05d11 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -88,13 +88,18 @@ libpgcommon_srv.a: $(OBJS_SRV)
 %_srv.o: %.c %.o
 	$(CC) $(CFLAGS) $(subst -DFRONTEND ,, $(CPPFLAGS)) -c $< -o $@
 
-$(OBJS_SRV): | submake-errcodes
+$(OBJS_SRV): | submake-errcodes submake-oidsymbols
 
 .PHONY: submake-errcodes
 
 submake-errcodes:
 	$(MAKE) -C ../backend submake-errcodes
 
+.PHONY: submake-oidsymbols
+
+submake-oidsymbols:
+	$(MAKE) -C ../backend submake-oidsymbols
+
 # Dependencies of keywords.o need to be managed explicitly to make sure
 # that you don't get broken parsing code, even in a non-enable-depend build.
 # Note that gram.h isn't required for the frontend version of keywords.o.
diff --git a/src/include/Makefile b/src/include/Makefile
index a689d35..934f630 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -54,7 +54,7 @@ install: all installdirs
 	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$dir/*.h  || exit; \
 	done
 ifeq ($(vpath_build),yes)
-	for file in dynloader.h catalog/schemapg.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \
+	for file in dynloader.h catalog/oid_symbols.h catalog/schemapg.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \
 	  cp $$file '$(DESTDIR)$(includedir_server)'/$$file || exit; \
 	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$file || exit; \
 	done
@@ -73,7 +73,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h
+	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/oid_symbols.h catalog/schemapg.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index 650202e..4e6163f 100644
--- a/src/include/catalog/.gitignore
+++ b/src/include/catalog/.gitignore
@@ -1 +1,2 @@
 /schemapg.h
+/oid_symbols.h
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index d6807fa..b067ec1 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -20,6 +20,7 @@
 #define PG_AM_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_am definition.  cpp turns this into
@@ -57,11 +58,4 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-#define BTREE_AM_OID 403
-#define HASH_AM_OID 405
-#define GIST_AM_OID 783
-#define GIN_AM_OID 2742
-#define SPGIST_AM_OID 4000
-#define BRIN_AM_OID 3580
-
 #endif							/* PG_AM_H */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index ec31c93..18bd4c6 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -22,6 +22,7 @@
 #define PG_AUTHID_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /*
  * The CATALOG definition has to refer to the type of rolvaliduntil as
@@ -88,11 +89,4 @@ typedef FormData_pg_authid *Form_pg_authid;
 #define Anum_pg_authid_rolpassword		10
 #define Anum_pg_authid_rolvaliduntil	11
 
-#define BOOTSTRAP_SUPERUSERID			10
-#define DEFAULT_ROLE_MONITOR		3373
-#define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
-#define DEFAULT_ROLE_READ_ALL_STATS 3375
-#define DEFAULT_ROLE_STAT_SCAN_TABLES	3377
-#define DEFAULT_ROLE_SIGNAL_BACKENDID	4200
-
 #endif							/* PG_AUTHID_H */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index a02ef82..98aaf30 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -21,6 +21,7 @@
 #define PG_COLLATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_collation definition.  cpp turns this into
@@ -65,10 +66,6 @@ typedef FormData_pg_collation *Form_pg_collation;
 #define Anum_pg_collation_collctype		7
 #define Anum_pg_collation_collversion	8
 
-#define DEFAULT_COLLATION_OID	100
-#define C_COLLATION_OID			950
-#define POSIX_COLLATION_OID		951
-
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 159c6ec..9617a8a 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -20,6 +20,7 @@
 #define PG_DATABASE_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_database definition.  cpp turns this into
@@ -75,6 +76,4 @@ typedef FormData_pg_database *Form_pg_database;
 #define Anum_pg_database_dattablespace	12
 #define Anum_pg_database_datacl			13
 
-#define TemplateDbOid			1
-
 #endif							/* PG_DATABASE_H */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 055cddc..02de79d 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -20,6 +20,7 @@
 #define PG_LANGUAGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_language definition.  cpp turns this into
@@ -64,8 +65,4 @@ typedef FormData_pg_language *Form_pg_language;
 #define Anum_pg_language_lanvalidator	7
 #define Anum_pg_language_lanacl			8
 
-#define INTERNALlanguageId 12
-#define ClanguageId 13
-#define SQLlanguageId 14
-
 #endif							/* PG_LANGUAGE_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 9fa6418..c3a0737 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -20,6 +20,7 @@
 #define PG_NAMESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------------------------------------------------------
  *		pg_namespace definition.
@@ -60,10 +61,6 @@ typedef FormData_pg_namespace *Form_pg_namespace;
 #define Anum_pg_namespace_nspowner		2
 #define Anum_pg_namespace_nspacl		3
 
-#define PG_CATALOG_NAMESPACE 11
-#define PG_TOAST_NAMESPACE 99
-#define PG_PUBLIC_NAMESPACE 2200
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index f37675a..51d58f2 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -40,6 +40,7 @@
 #define PG_OPCLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_opclass definition.  cpp turns this into
@@ -81,15 +82,4 @@ typedef FormData_pg_opclass *Form_pg_opclass;
 #define Anum_pg_opclass_opcdefault		7
 #define Anum_pg_opclass_opckeytype		8
 
-#define DATE_BTREE_OPS_OID 3122
-#define FLOAT8_BTREE_OPS_OID 3123
-#define INT2_BTREE_OPS_OID 1979
-#define INT4_BTREE_OPS_OID 1978
-#define INT8_BTREE_OPS_OID 3124
-#define NUMERIC_BTREE_OPS_OID 3125
-#define OID_BTREE_OPS_OID 1981
-#define TEXT_BTREE_OPS_OID 3126
-#define TIMESTAMPTZ_BTREE_OPS_OID 3127
-#define TIMESTAMP_BTREE_OPS_OID 3128
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 3b1ff2c..3f630d8 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -20,6 +20,7 @@
 #define PG_OPERATOR_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_operator definition.  cpp turns this into
@@ -74,54 +75,4 @@ typedef FormData_pg_operator *Form_pg_operator;
 #define Anum_pg_operator_oprrest		13
 #define Anum_pg_operator_oprjoin		14
 
-#define BooleanNotEqualOperator   85
-#define BooleanEqualOperator   91
-#define Int4EqualOperator	96
-#define Int4LessOperator	97
-#define TextEqualOperator	98
-#define TIDEqualOperator   387
-#define TIDLessOperator    2799
-#define Int8LessOperator	412
-#define OID_NAME_REGEXEQ_OP		639
-#define OID_TEXT_REGEXEQ_OP		641
-#define Float8LessOperator	672
-#define OID_BPCHAR_REGEXEQ_OP		1055
-#define ARRAY_EQ_OP 1070
-#define ARRAY_LT_OP 1072
-#define ARRAY_GT_OP 1073
-#define OID_NAME_LIKE_OP		1207
-#define OID_TEXT_LIKE_OP		1209
-#define OID_BPCHAR_LIKE_OP		1211
-#define OID_NAME_ICREGEXEQ_OP		1226
-#define OID_TEXT_ICREGEXEQ_OP		1228
-#define OID_BPCHAR_ICREGEXEQ_OP		1234
-#define OID_INET_SUB_OP			931
-#define OID_INET_SUBEQ_OP		932
-#define OID_INET_SUP_OP			933
-#define OID_INET_SUPEQ_OP		934
-#define OID_INET_OVERLAP_OP		3552
-#define OID_NAME_ICLIKE_OP		1625
-#define OID_TEXT_ICLIKE_OP		1627
-#define OID_BPCHAR_ICLIKE_OP	1629
-#define OID_BYTEA_LIKE_OP		2016
-#define OID_ARRAY_OVERLAP_OP	2750
-#define OID_ARRAY_CONTAINS_OP	2751
-#define OID_ARRAY_CONTAINED_OP	2752
-#define RECORD_EQ_OP 2988
-#define RECORD_LT_OP 2990
-#define RECORD_GT_OP 2991
-#define OID_RANGE_LESS_OP 3884
-#define OID_RANGE_LESS_EQUAL_OP 3885
-#define OID_RANGE_GREATER_EQUAL_OP 3886
-#define OID_RANGE_GREATER_OP 3887
-#define OID_RANGE_OVERLAP_OP 3888
-#define OID_RANGE_CONTAINS_ELEM_OP 3889
-#define OID_RANGE_CONTAINS_OP 3890
-#define OID_RANGE_ELEM_CONTAINED_OP 3891
-#define OID_RANGE_CONTAINED_OP 3892
-#define OID_RANGE_LEFT_OP 3893
-#define OID_RANGE_RIGHT_OP 3894
-#define OID_RANGE_OVERLAPS_LEFT_OP 3895
-#define OID_RANGE_OVERLAPS_RIGHT_OP 3896
-
 #endif							/* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 500abab..b988bc5 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -20,6 +20,7 @@
 #define PG_OPFAMILY_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_opfamily definition. cpp turns this into
@@ -53,17 +54,4 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define Anum_pg_opfamily_opfnamespace	3
 #define Anum_pg_opfamily_opfowner		4
 
-#define BOOL_BTREE_FAM_OID 424
-#define BPCHAR_BTREE_FAM_OID 426
-#define BYTEA_BTREE_FAM_OID 428
-#define NETWORK_BTREE_FAM_OID 1974
-#define INTEGER_BTREE_FAM_OID 1976
-#define NAME_BTREE_FAM_OID 1986
-#define OID_BTREE_FAM_OID 1989
-#define TEXT_BTREE_FAM_OID 1994
-#define TEXT_PATTERN_BTREE_FAM_OID 2095
-#define BPCHAR_PATTERN_BTREE_FAM_OID 2097
-#define BOOL_HASH_FAM_OID 2222
-#define TEXT_SPGIST_FAM_OID 4017
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index cff69bd..0cf894a 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -20,6 +20,7 @@
 #define PG_TABLESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_tablespace definition.  cpp turns this into
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 213efa9..e2d4626 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -20,6 +20,7 @@
 #define PG_TYPE_H
 
 #include "catalog/genbki.h"
+#include "catalog/oid_symbols.h"
 
 /* ----------------
  *		pg_type definition.  cpp turns this into
@@ -268,100 +269,6 @@ typedef FormData_pg_type *Form_pg_type;
 #define Anum_pg_type_typdefault			29
 #define Anum_pg_type_typacl				30
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define JSONOID 114
-#define XMLOID 142
-#define PGNODETREEOID	194
-#define PGNDISTINCTOID	3361
-#define PGDEPENDENCIESOID	3402
-#define PGDDLCOMMANDOID 32
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define MACADDROID 829
-#define INETOID 869
-#define CIDROID 650
-#define MACADDR8OID 774
-#define INT2ARRAYOID		1005
-#define INT4ARRAYOID		1007
-#define TEXTARRAYOID		1009
-#define OIDARRAYOID			1028
-#define FLOAT4ARRAYOID 1021
-#define ACLITEMOID		1033
-#define CSTRINGARRAYOID		1263
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
-#define RECORDOID		2249
-#define RECORDARRAYOID	2287
-#define CSTRINGOID		2275
-#define ANYOID			2276
-#define ANYARRAYOID		2277
-#define VOIDOID			2278
-#define TRIGGEROID		2279
-#define EVTTRIGGEROID		3838
-#define LANGUAGE_HANDLEROID		2280
-#define INTERNALOID		2281
-#define OPAQUEOID		2282
-#define ANYELEMENTOID	2283
-#define ANYNONARRAYOID	2776
-#define ANYENUMOID		3500
-#define FDW_HANDLEROID	3115
-#define INDEX_AM_HANDLEROID 325
-#define TSM_HANDLEROID	3310
-#define ANYRANGEOID		3831
-
 /*
  * macros
  */
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 7d6d7d0..0404385 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -255,7 +255,7 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), TIMETZOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
-		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), ZPBITOID, ECPG_ARRAY_NONE, stmt->lineno))
+		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), BITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), VARBITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index 94d2d92..970dfe3 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -1,9 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_type.h
- *	  Hard-wired knowledge about some standard type OIDs.
- *
- * XXX keep this in sync with src/include/catalog/pg_type.h
+ *	  Reference of defined symbols for type OIDs.
  *
  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -15,65 +13,6 @@
 #ifndef PG_TYPE_H
 #define PG_TYPE_H
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define INETOID 869
-#define CIDROID 650
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define ZPBITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
+#include "catalog/oid_symbols.h"
 
 #endif							/* PG_TYPE_H */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 6dcdd29..cdd3c1c 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -465,7 +465,7 @@ EOF
 				'src/backend/catalog/postgres.bki',
 				"src/include/catalog/$bki"))
 		{
-			print "Generating postgres.bki and schemapg.h...\n";
+			print "Generating postgres.bki, oid_symbols.h, schemapg.h...\n";
 			chdir('src/backend/catalog');
 			my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
 			system(
@@ -473,6 +473,9 @@ EOF
 			);
 			chdir('../../..');
 			copyFile(
+				'src/backend/catalog/oid_symbols.h',
+				'src/include/catalog/oid_symbols.h');
+			copyFile(
 				'src/backend/catalog/schemapg.h',
 				'src/include/catalog/schemapg.h');
 			last;
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 0a88b52..ff99c0f 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -47,6 +47,7 @@ if exist src\include\utils\fmgroids.h del /q src\include\utils\fmgroids.h
 if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h
 if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
+if exist src\include\catalog\oid_symbols.h del /q src\include\catalog\oid_symbols.h
 if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h
 if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
 
@@ -66,6 +67,7 @@ if %DIST%==1 if exist src\interfaces\ecpg\preproc\preproc.y del /q src\interface
 if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalog\postgres.bki
 if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
 if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
+if %DIST%==1 if exist src\backend\catalog\oid_symbols.h del /q src\backend\catalog\oid_symbols.h
 if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
 if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
-- 
2.7.4

v5-0008-Implement-data-compaction-strategies.patchtext/x-patch; charset=US-ASCII; name=v5-0008-Implement-data-compaction-strategies.patchDownload
From 7a58861be67b783cd9e440ae8a8863e1ca741243 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 25 Dec 2017 16:24:22 +0700
Subject: [PATCH v5 08/13] Implement data compaction strategies

Add the ability to label columns in the source data by an abbreviation
rather than the full name, in order to shorten the entries. Add default
values and abbreviations to a few catalog headers. More could be done here,
but this is enough for a first pass.

Compute pg_proc.pronargs and (if not specified) pg_proc.prosrc and pg_type
OID symbols, rather than storing directly.
---
 src/backend/catalog/Catalog.pm     |  84 ++++++++++++++++++++++
 src/backend/catalog/README         |  34 +++++++--
 src/include/catalog/genbki.h       |   3 +
 src/include/catalog/pg_aggregate.h |  38 +++++-----
 src/include/catalog/pg_amop.h      |  31 ++++++---
 src/include/catalog/pg_amproc.h    |  19 +++--
 src/include/catalog/pg_authid.h    |  43 +++++++++---
 src/include/catalog/pg_class.dat   |   2 -
 src/include/catalog/pg_class.h     | 138 +++++++++++++++++++++++++++----------
 src/include/catalog/pg_opclass.h   |  17 +++--
 src/include/catalog/pg_operator.h  |  56 +++++++++++----
 src/include/catalog/pg_opfamily.h  |   8 ++-
 src/include/catalog/pg_proc.h      | 116 +++++++++++++++++++++++--------
 src/include/catalog/pg_type.dat    |   6 ++
 src/include/catalog/pg_type.h      |  47 +++++++------
 src/include/catalog/rewrite_dat.pl |  80 ++++++++++++++++++++-
 16 files changed, 562 insertions(+), 160 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 9d37674..a8a406a 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -156,6 +156,10 @@ sub ParseHeader
 						{
 							$column{default} = $1;
 						}
+						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
+						{
+							$column{abbrev} = $1;
+						}
 						else
 						{
 							die
@@ -229,6 +233,28 @@ sub ParseData
 				{
 					die "Error parsing $_\n$!";
 				}
+
+				# Expand tuples to their full representation.
+				# We must do the following operations in the order given.
+				resolve_column_abbrevs($datum, $schema);
+
+				if ($catname eq 'pg_proc')
+				{
+					compute_pg_proc_fields($datum);
+				}
+				elsif ($catname eq 'pg_type' and !exists $datum->{oid_symbol})
+				{
+					my $symbol = GetPgTypeSymbol($datum->{typname});
+					$datum->{oid_symbol} = $symbol
+					  if defined $symbol;
+				}
+
+				my $error = AddDefaultValues($datum, $schema);
+				if ($error)
+				{
+					print "Failed to form full tuple for $catname\n";
+					die $error;
+				}
 			}
 			else
 			{
@@ -263,6 +289,23 @@ sub ParseData
 	return $data;
 }
 
+# Copy values from abbreviated keys to full keys.
+sub resolve_column_abbrevs
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and defined $row->{$abbrev})
+		{
+			$row->{$attname} = $row->{$abbrev};
+		}
+	}
+}
+
 # Fill in default values of a record using the given schema. It's the
 # caller's responsibility to specify other values beforehand.
 sub AddDefaultValues
@@ -303,6 +346,47 @@ sub AddDefaultValues
 	return $msg;
 }
 
+# Compute certain pg_proc fields from others.
+sub compute_pg_proc_fields
+{
+	my $row = shift;
+
+	# pronargs is computed by counting proargtypes.
+	if ($row->{proargtypes})
+	{
+		my @argtypes = split /\s+/, $row->{proargtypes};
+		$row->{pronargs} = scalar(@argtypes);
+	}
+	else
+	{
+		$row->{pronargs} = '0';
+	}
+
+	# If prosrc doesn't exist, it must be a copy of proname.
+	if (!exists $row->{prosrc})
+	{
+		$row->{prosrc} = $row->{proname}
+	}
+}
+
+# Determine canonical pg_type OID #define symbol from the type name.
+sub GetPgTypeSymbol
+{
+	my $typename = shift;
+
+	# Skip for rowtypes of bootstrap tables.
+	return
+	  if $typename eq 'pg_type'
+	    or $typename eq 'pg_proc'
+	    or $typename eq 'pg_attribute'
+	    or $typename eq 'pg_class';
+
+	$typename =~ /(_)?(.+)/;
+	my $arraystr = $1 ? 'ARRAY' : '';
+	my $name = uc $2;
+	return $name . $arraystr . 'OID';
+}
+
 # Rename temporary files to final names.
 # Call this function with the final file name and the .tmp extension
 # Note: recommended extension is ".tmp$$", so that parallel make steps
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7b849a4..3b2cef6 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -59,6 +59,28 @@ quotes, since we don't know what kind of characters will be substituted.
 within the curly brackets.  This is done automatically during rewriting
 so don't worry about their placement during development.
 
+- Some techniques are used to keep the data representation compact.
+These are automatically enforced by rewrite_dat.pl, but you should be
+aware of them.  pg_proc.dat uses all three of them in an attempt to keep
+the file manageable:
+1. If the .h file specifies a default value for a column, and a data entry
+has that same value, it will be ommitted from the data file.
+2. Likewise, some values could be computed from other values, so are also
+left out.
+3. If the .h file specifies a column abbeviation, then it will be used as
+the hash key in the data entry.
+
+- If you want to add a new default value or abbreviation, you must
+change the relevant .h file to use the new default/abbreviation, and
+then run "perl -I ../../backend/catalog rewrite_dat.pl pg_foo.dat".
+If you want to change an existing default value or abbreviation, you must
+first run rewrite_dat.pl with the "--expand" argument before proceeding
+as above.
+
+-If you want to add a new method of making the data representation
+smaller, you must implement it in rewrite_dat.pl and also teach
+Catalog::ParseData() how to expand the data back into the full representation.
+
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
 contains pointers into pg_proc (e.g., pg_type.typinput), and pg_proc
@@ -75,12 +97,12 @@ some of them are actually cross-referenced.
 known directly in the C code.  In such cases, put an 'oid_symbol' entry in
 the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
-Direct references to pg_proc OIDs are common enough that there's a special
-mechanism to create the necessary #define's automatically: see
-backend/utils/Gen_fmgrtab.pl.  We also have standard conventions for setting
-up #define's for the pg_class OIDs of system catalogs and indexes.  For all
-the other system catalogs, you have to manually create any #define's you
-need.
+Direct references to pg_type and pg_proc OIDs are common enough that there's
+a special mechanism to create the necessary #define's automatically:
+see Catalog.pm and backend/utils/Gen_fmgrtab.pl, respectively.  We also
+have standard conventions for setting up #define's for the pg_class OIDs
+of system catalogs and indexes.  For all the other system catalogs, you
+have to manually create any #define's you need.
 
 - If you need to find a valid OID for a new predefined tuple, use the
 script src/include/catalog/unused_oids.  It generates inclusive ranges of
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index ec81d5d..5537b61 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,6 +34,9 @@
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* Specifies an abbreviated label for a column name */
+#define BKI_ABBREV(abbrev)
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 54df39a..c0c1469 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -55,29 +55,29 @@
 CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 {
 	regproc		aggfnoid;
-	char		aggkind;
-	int16		aggnumdirectargs;
+	char		aggkind BKI_DEFAULT(n);
+	int16		aggnumdirectargs BKI_DEFAULT(0);
 	regproc		aggtransfn;
-	regproc		aggfinalfn;
-	regproc		aggcombinefn;
-	regproc		aggserialfn;
-	regproc		aggdeserialfn;
-	regproc		aggmtransfn;
-	regproc		aggminvtransfn;
-	regproc		aggmfinalfn;
-	bool		aggfinalextra;
-	bool		aggmfinalextra;
-	char		aggfinalmodify;
-	char		aggmfinalmodify;
-	Oid			aggsortop;
+	regproc		aggfinalfn BKI_DEFAULT(-);
+	regproc		aggcombinefn BKI_DEFAULT(-);
+	regproc		aggserialfn BKI_DEFAULT(-);
+	regproc		aggdeserialfn BKI_DEFAULT(-);
+	regproc		aggmtransfn BKI_DEFAULT(-);
+	regproc		aggminvtransfn BKI_DEFAULT(-);
+	regproc		aggmfinalfn BKI_DEFAULT(-);
+	bool		aggfinalextra BKI_DEFAULT(f);
+	bool		aggmfinalextra BKI_DEFAULT(f);
+	char		aggfinalmodify BKI_DEFAULT(r);
+	char		aggmfinalmodify BKI_DEFAULT(r);
+	Oid			aggsortop BKI_DEFAULT(0);
 	Oid			aggtranstype;
-	int32		aggtransspace;
-	Oid			aggmtranstype;
-	int32		aggmtransspace;
+	int32		aggtransspace BKI_DEFAULT(0);
+	Oid			aggmtranstype BKI_DEFAULT(0);
+	int32		aggmtransspace BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		agginitval;
-	text		aggminitval;
+	text		agginitval BKI_DEFAULT(_null_);
+	text		aggminitval BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_aggregate;
 
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 9dd881c..c73f24b 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -55,14 +55,29 @@
 
 CATALOG(pg_amop,2602)
 {
-	Oid			amopfamily;		/* the index opfamily this entry is for */
-	Oid			amoplefttype;	/* operator's left input data type */
-	Oid			amoprighttype;	/* operator's right input data type */
-	int16		amopstrategy;	/* operator strategy number */
-	char		amoppurpose;	/* is operator for 's'earch or 'o'rdering? */
-	Oid			amopopr;		/* the operator's pg_operator OID */
-	Oid			amopmethod;		/* the index access method this entry is for */
-	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
+	/* the index opfamily this entry is for */
+	Oid			amopfamily BKI_ABBREV(opf);
+
+	/* operator's left input data type */
+	Oid			amoplefttype BKI_ABBREV(lt);
+
+	/* operator's right input data type */
+	Oid			amoprighttype BKI_ABBREV(rt);
+
+	/* operator strategy number */
+	int16		amopstrategy BKI_ABBREV(str);
+
+	/* is operator for 's'earch or 'o'rdering? */
+	char		amoppurpose BKI_ABBREV(pur) BKI_DEFAULT(s);
+
+	/* the operator's pg_operator OID */
+	Oid			amopopr BKI_ABBREV(oper);
+
+	/* the index access method this entry is for */
+	Oid			amopmethod BKI_ABBREV(am);
+
+	/* ordering opfamily OID, or 0 if search op */
+	Oid			amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 681cdcf..afdfeb1 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -44,11 +44,20 @@
 
 CATALOG(pg_amproc,2603)
 {
-	Oid			amprocfamily;	/* the index opfamily this entry is for */
-	Oid			amproclefttype; /* procedure's left input data type */
-	Oid			amprocrighttype;	/* procedure's right input data type */
-	int16		amprocnum;		/* support procedure index */
-	regproc		amproc;			/* OID of the proc */
+	/* the index opfamily this entry is for */
+	Oid			amprocfamily BKI_ABBREV(opf);
+
+	/* procedure's left input data type */
+	Oid			amproclefttype BKI_ABBREV(lt);
+
+	/* procedure's right input data type */
+	Oid			amprocrighttype BKI_ABBREV(rt);
+
+	/* support procedure index */
+	int16		amprocnum BKI_ABBREV(num);
+
+	/* OID of the proc */
+	regproc		amproc;
 } FormData_pg_amproc;
 
 /* ----------------
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index 18bd4c6..d073f72 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -45,20 +45,41 @@
 
 CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
 {
-	NameData	rolname;		/* name of role */
-	bool		rolsuper;		/* read this field via superuser() only! */
-	bool		rolinherit;		/* inherit privileges from other roles? */
-	bool		rolcreaterole;	/* allowed to create more roles? */
-	bool		rolcreatedb;	/* allowed to create databases? */
-	bool		rolcanlogin;	/* allowed to log in as session user? */
-	bool		rolreplication; /* role used for streaming replication */
-	bool		rolbypassrls;	/* bypasses row level security? */
-	int32		rolconnlimit;	/* max connections allowed (-1=no limit) */
+	/* name of role */
+	NameData	rolname;
+
+	/* read this field via superuser() only! */
+	bool		rolsuper BKI_DEFAULT(f);
+
+	/* inherit privileges from other roles? */
+	bool		rolinherit BKI_DEFAULT(t);
+
+	/* allowed to create more roles? */
+	bool		rolcreaterole BKI_DEFAULT(f);
+
+	/* allowed to create databases? */
+	bool		rolcreatedb BKI_DEFAULT(f);
+
+	/* allowed to log in as session user? */
+	bool		rolcanlogin BKI_DEFAULT(f);
+
+	/* role used for streaming replication */
+	bool		rolreplication BKI_DEFAULT(f);
+
+	/* bypasses row level security? */
+	bool		rolbypassrls BKI_DEFAULT(f);
+
+	/* max connections allowed (-1=no limit) */
+	int32		rolconnlimit BKI_DEFAULT(-1);
 
 	/* remaining fields may be null; use heap_getattr to read them! */
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		rolpassword;	/* password, if any */
-	timestamptz rolvaliduntil;	/* password expiration time, if any */
+
+	/* password, if any */
+	text		rolpassword BKI_DEFAULT(_null_);
+
+	/* password expiration time, if any */
+	timestamptz rolvaliduntil BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_authid;
 
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index 435bc06..f990d26 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -5,8 +5,6 @@
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
-# Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
-# similarly, "1" in relminmxid stands for FirstMultiXactId
 { oid => '1247',
   relname => 'pg_type', relnamespace => 'PGNSP', reltype => '71', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '30', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1249',
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index f24a27d..9ad6ca8 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -31,55 +31,117 @@
 
 CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 {
-	NameData	relname;		/* class name */
-	Oid			relnamespace;	/* OID of namespace containing this class */
-	Oid			reltype;		/* OID of entry in pg_type for table's
-								 * implicit row type */
-	Oid			reloftype;		/* OID of entry in pg_type for underlying
-								 * composite type */
-	Oid			relowner;		/* class owner */
-	Oid			relam;			/* index access method; 0 if not an index */
-	Oid			relfilenode;	/* identifier of physical storage file */
+	/* class name */
+	NameData	relname;
+
+	/* OID of namespace containing this class */
+	Oid			relnamespace BKI_DEFAULT(PGNSP);
+
+	/* OID of entry in pg_type for table's implicit row type */
+	Oid			reltype;
+
+	/* OID of entry in pg_type for underlying composite type */
+	Oid			reloftype BKI_DEFAULT(0);
+
+	/* class owner */
+	Oid			relowner BKI_DEFAULT(PGUID);
+
+	/* index access method; 0 if not an index */
+	Oid			relam BKI_DEFAULT(0);
+
+	/* identifier of physical storage file */
+	Oid			relfilenode BKI_DEFAULT(0);
 
 	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
-	Oid			reltablespace;	/* identifier of table space for relation */
-	int32		relpages;		/* # of blocks (not always up-to-date) */
-	float4		reltuples;		/* # of tuples (not always up-to-date) */
-	int32		relallvisible;	/* # of all-visible blocks (not always
-								 * up-to-date) */
-	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
-	bool		relhasindex;	/* T if has (or has had) any indexes */
-	bool		relisshared;	/* T if shared across databases */
-	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
-	char		relkind;		/* see RELKIND_xxx constants below */
-	int16		relnatts;		/* number of user attributes */
+
+	/* identifier of table space for relation */
+	Oid			reltablespace BKI_DEFAULT(0);
+
+	/* # of blocks (not always up-to-date) */
+	int32		relpages BKI_DEFAULT(0);
+
+	/* # of tuples (not always up-to-date) */
+	float4		reltuples BKI_DEFAULT(0);
+
+	/* # of all-visible blocks (not always up-to-date) */
+	int32		relallvisible BKI_DEFAULT(0);
+
+	/* OID of toast table; 0 if none */
+	Oid			reltoastrelid BKI_DEFAULT(0);
+
+	/* T if has (or has had) any indexes */
+	bool		relhasindex BKI_DEFAULT(f);
+
+	/* T if shared across databases */
+	bool		relisshared BKI_DEFAULT(f);
+
+	/* see RELPERSISTENCE_xxx constants below */
+	char		relpersistence BKI_DEFAULT(p);
+
+	/* see RELKIND_xxx constants below */
+	char		relkind BKI_DEFAULT(r);
+
+	/* number of user attributes */
+	int16		relnatts;
 
 	/*
 	 * Class pg_attribute must contain exactly "relnatts" user attributes
 	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
 	 * contain entries with negative attnums for system attributes.
 	 */
-	int16		relchecks;		/* # of CHECK constraints for class */
-	bool		relhasoids;		/* T if we generate OIDs for rows of rel */
-	bool		relhaspkey;		/* has (or has had) PRIMARY KEY index */
-	bool		relhasrules;	/* has (or has had) any rules */
-	bool		relhastriggers; /* has (or has had) any TRIGGERs */
-	bool		relhassubclass; /* has (or has had) derived classes */
-	bool		relrowsecurity; /* row security is enabled or not */
-	bool		relforcerowsecurity;	/* row security forced for owners or
-										 * not */
-	bool		relispopulated; /* matview currently holds query results */
-	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
-	bool		relispartition; /* is relation a partition? */
-	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
-	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
-								 * this is really a MultiXactId */
+
+	/* # of CHECK constraints for class */
+	int16		relchecks BKI_DEFAULT(0);
+
+	/* T if we generate OIDs for rows of rel */
+	bool		relhasoids;
+
+	/* has (or has had) PRIMARY KEY index */
+	bool		relhaspkey BKI_DEFAULT(f);
+
+	/* has (or has had) any rules */
+	bool		relhasrules BKI_DEFAULT(f);
+
+	/* has (or has had) any TRIGGERs */
+	bool		relhastriggers BKI_DEFAULT(f);
+
+	/* has (or has had) derived classes */
+	bool		relhassubclass BKI_DEFAULT(f);
+
+	/* row security is enabled or not */
+	bool		relrowsecurity BKI_DEFAULT(f);
+
+	/* row security forced for owners or not */
+	bool		relforcerowsecurity BKI_DEFAULT(f);
+
+	/* matview currently holds query results */
+	bool		relispopulated BKI_DEFAULT(t);
+
+	/* see REPLICA_IDENTITY_xxx constants  */
+	char		relreplident BKI_DEFAULT(n);
+
+	/* is relation a partition? */
+	bool		relispartition BKI_DEFAULT(f);
+
+	/* all Xids < this are frozen in this rel */
+	/* Note: "3" stands for FirstNormalTransactionId */
+	TransactionId relfrozenxid BKI_DEFAULT(3);
+
+	/* all multixacts in this rel are >= this. This is really a MultiXactId */
+	/* Note: "1" stands for FirstMultiXactId */
+	TransactionId relminmxid BKI_DEFAULT(1);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
-	aclitem		relacl[1];		/* access permissions */
-	text		reloptions[1];	/* access-method-specific options */
-	pg_node_tree relpartbound;	/* partition bound node tree */
+
+	/* access permissions */
+	aclitem		relacl[1] BKI_DEFAULT(_null_);
+
+	/* access-method-specific options */
+	text		reloptions[1] BKI_DEFAULT(_null_);
+
+	/* partition bound node tree */
+	pg_node_tree relpartbound BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_class;
 
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 51d58f2..f44a0aa 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -53,12 +53,21 @@ CATALOG(pg_opclass,2616)
 {
 	Oid			opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
-	Oid			opcnamespace;	/* namespace of this opclass */
-	Oid			opcowner;		/* opclass owner */
+
+	/* namespace of this opclass */
+	Oid			opcnamespace BKI_DEFAULT(PGNSP);
+
+	/* opclass owner */
+	Oid			opcowner BKI_DEFAULT(PGUID);
+
 	Oid			opcfamily;		/* containing operator family */
 	Oid			opcintype;		/* type of data indexed by opclass */
-	bool		opcdefault;		/* T if opclass is default for opcintype */
-	Oid			opckeytype;		/* type of data in index, or InvalidOid */
+
+	/* T if opclass is default for opcintype */
+	bool		opcdefault BKI_DEFAULT(t);
+
+	/* type of data in index, or InvalidOid */
+	Oid			opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 3f630d8..cd6e227 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -31,20 +31,48 @@
 
 CATALOG(pg_operator,2617)
 {
-	NameData	oprname;		/* name of operator */
-	Oid			oprnamespace;	/* OID of namespace containing this oper */
-	Oid			oprowner;		/* operator owner */
-	char		oprkind;		/* 'l', 'r', or 'b' */
-	bool		oprcanmerge;	/* can be used in merge join? */
-	bool		oprcanhash;		/* can be used in hash join? */
-	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprresult;		/* result datatype */
-	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
-	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
-	regproc		oprcode;		/* OID of underlying function */
-	regproc		oprrest;		/* OID of restriction estimator, or 0 */
-	regproc		oprjoin;		/* OID of join estimator, or 0 */
+
+	/* name of operator */
+	NameData	oprname;
+
+	/* OID of namespace containing this oper */
+	Oid			oprnamespace BKI_DEFAULT(PGNSP);
+
+	/* operator owner */
+	Oid			oprowner BKI_DEFAULT(PGUID);
+
+	/* 'l', 'r', or 'b' */
+	char		oprkind BKI_DEFAULT(b);
+
+	/* can be used in merge join? */
+	bool		oprcanmerge BKI_DEFAULT(f);
+
+	/* can be used in hash join? */
+	bool		oprcanhash BKI_DEFAULT(f);
+
+	/* left arg type, or 0 if 'l' oprkind */
+	Oid			oprleft;
+
+	/* right arg type, or 0 if 'r' oprkind */
+	Oid			oprright;
+
+	/* result datatype */
+	Oid			oprresult;
+
+	/* OID of commutator oper, or 0 if none */
+	Oid			oprcom BKI_DEFAULT(0);
+
+	/* OID of negator oper, or 0 if none */
+	Oid			oprnegate BKI_DEFAULT(0);
+
+	/* OID of underlying function */
+	regproc		oprcode;
+
+	/* OID of restriction estimator, or 0 */
+	regproc		oprrest BKI_DEFAULT(-);
+
+	/* OID of join estimator, or 0 */
+	regproc		oprjoin BKI_DEFAULT(-);
 } FormData_pg_operator;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index b988bc5..a9be48f 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -33,8 +33,12 @@ CATALOG(pg_opfamily,2753)
 {
 	Oid			opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
-	Oid			opfnamespace;	/* namespace of this opfamily */
-	Oid			opfowner;		/* opfamily owner */
+
+	/* namespace of this opfamily */
+	Oid			opfnamespace BKI_DEFAULT(PGNSP);
+
+	/* opfamily owner */
+	Oid			opfowner BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
 /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index fab35c2..1f71a6f 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -30,43 +30,99 @@
 
 CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 {
-	NameData	proname;		/* procedure name */
-	Oid			pronamespace;	/* OID of namespace containing this proc */
-	Oid			proowner;		/* procedure owner */
-	Oid			prolang;		/* OID of pg_language entry */
-	float4		procost;		/* estimated execution cost */
-	float4		prorows;		/* estimated # of rows out (if proretset) */
-	Oid			provariadic;	/* element type of variadic array, or 0 */
-	regproc		protransform;	/* transforms calls to it during planning */
-	bool		proisagg;		/* is it an aggregate? */
-	bool		proiswindow;	/* is it a window function? */
-	bool		prosecdef;		/* security definer */
-	bool		proleakproof;	/* is it a leak-proof function? */
-	bool		proisstrict;	/* strict with respect to NULLs? */
-	bool		proretset;		/* returns a set? */
-	char		provolatile;	/* see PROVOLATILE_ categories below */
-	char		proparallel;	/* see PROPARALLEL_ categories below */
-	int16		pronargs;		/* number of arguments */
-	int16		pronargdefaults;	/* number of arguments with defaults */
-	Oid			prorettype;		/* OID of result type */
+	/* procedure name */
+	NameData	proname BKI_ABBREV(n);
+
+	/* OID of namespace containing this proc */
+	Oid			pronamespace BKI_DEFAULT(PGNSP);
+
+	/* procedure owner */
+	Oid			proowner BKI_DEFAULT(PGUID);
+
+	/* OID of pg_language entry */
+	Oid			prolang BKI_DEFAULT(12);
+
+	/* estimated execution cost */
+	float4		procost BKI_DEFAULT(1);
+
+	/* estimated # of rows out (if proretset) */
+	float4		prorows BKI_DEFAULT(0);
+
+	/* element type of variadic array, or 0 */
+	Oid			provariadic BKI_DEFAULT(0);
+
+	/* transforms calls to it during planning */
+	regproc		protransform BKI_DEFAULT(0);
+
+	/* is it an aggregate? */
+	bool		proisagg BKI_DEFAULT(f);
+
+	/* is it a window function? */
+	bool		proiswindow BKI_DEFAULT(f);
+
+	/* security definer */
+	bool		prosecdef BKI_DEFAULT(f);
+
+	/* is it a leak-proof function? */
+	bool		proleakproof BKI_ABBREV(lp) BKI_DEFAULT(f);
+
+	/* strict with respect to NULLs? */
+	bool		proisstrict BKI_ABBREV(is) BKI_DEFAULT(f);
+
+	/* returns a set? */
+	bool		proretset BKI_DEFAULT(f);
+
+	/* see PROVOLATILE_ categories below */
+	char		provolatile BKI_ABBREV(v) BKI_DEFAULT(v);
+
+	/* see PROPARALLEL_ categories below */
+	char		proparallel BKI_ABBREV(p) BKI_DEFAULT(u);
+
+	/* number of arguments */
+	int16		pronargs;
+
+	/* number of arguments with defaults */
+	int16		pronargdefaults BKI_DEFAULT(0);
+
+	/* OID of result type */
+	Oid			prorettype BKI_ABBREV(rt);
 
 	/*
 	 * variable-length fields start here, but we allow direct access to
 	 * proargtypes
 	 */
-	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
+
+	/* parameter types (excludes OUT params) */
+	oidvector	proargtypes BKI_ABBREV(at);
 
 #ifdef CATALOG_VARLEN
-	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
-	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
-	text		proargnames[1]; /* parameter names (NULL if no names) */
-	pg_node_tree proargdefaults;	/* list of expression trees for argument
-									 * defaults (NULL if none) */
-	Oid			protrftypes[1]; /* types for which to apply transforms */
-	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
-	text		probin;			/* secondary procedure info (can be NULL) */
-	text		proconfig[1];	/* procedure-local GUC settings */
-	aclitem		proacl[1];		/* access permissions */
+
+	/* all param types (NULL if IN only) */
+	Oid			proallargtypes[1] BKI_DEFAULT(_null_);
+
+	/* parameter modes (NULL if IN only) */
+	char		proargmodes[1] BKI_DEFAULT(_null_);
+
+	/* parameter names (NULL if no names) */
+	text		proargnames[1] BKI_DEFAULT(_null_);
+
+	/* list of expression trees for argument defaults (NULL if none) */
+	pg_node_tree proargdefaults BKI_DEFAULT(_null_);
+
+	/* types for which to apply transforms */
+	Oid			protrftypes[1] BKI_DEFAULT(_null_);
+
+	/* procedure source text */
+	text		prosrc BKI_ABBREV(s) BKI_FORCE_NOT_NULL;
+
+	/* secondary procedure info (can be NULL) */
+	text		probin BKI_DEFAULT(_null_);
+
+	/* procedure-local GUC settings */
+	text		proconfig[1] BKI_DEFAULT(_null_);
+
+	/* access permissions */
+	aclitem		proacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_proc;
 
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index f73e5cf..a71bed7 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -3,9 +3,15 @@
 
 # Keep the following ordered by OID so that later changes can be made more
 # easily.
+
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
+# OID symbols not specified here are generated automatically according
+# to a simple rule (see Catalog.pm). If you created a type and want to
+# know what its symbol is, see the generated header
+# backend/catalog/oid_symbols.h.
+
 # OIDS 1 - 99
 
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index e2d4626..3c069d5 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -38,8 +38,12 @@
 CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 {
 	NameData	typname;		/* type name */
-	Oid			typnamespace;	/* OID of namespace containing this type */
-	Oid			typowner;		/* type owner */
+
+	/* OID of namespace containing this type */
+	Oid			typnamespace BKI_DEFAULT(PGNSP);
+
+	/* type owner */
+	Oid			typowner BKI_DEFAULT(PGUID);
 
 	/*
 	 * For a fixed-size type, typlen is the number of bytes we use to
@@ -67,7 +71,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
 	 */
-	char		typtype;
+	char		typtype BKI_DEFAULT(b);
 
 	/*
 	 * typcategory and typispreferred help the parser distinguish preferred
@@ -77,17 +81,20 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 */
 	char		typcategory;	/* arbitrary type classification */
 
-	bool		typispreferred; /* is type "preferred" within its category? */
+	/* is type "preferred" within its category? */
+	bool		typispreferred BKI_DEFAULT(f);
 
 	/*
 	 * If typisdefined is false, the entry is only a placeholder (forward
 	 * reference).  We know the type name, but not yet anything else about it.
 	 */
-	bool		typisdefined;
+	bool		typisdefined BKI_DEFAULT(t);
 
-	char		typdelim;		/* delimiter for arrays of this type */
+	/* delimiter for arrays of this type */
+	char		typdelim BKI_DEFAULT(\054);
 
-	Oid			typrelid;		/* 0 if not a composite type */
+	/* 0 if not a composite type */
+	Oid			typrelid BKI_DEFAULT(0);
 
 	/*
 	 * If typelem is not 0 then it identifies another row in pg_type. The
@@ -100,7 +107,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * typelem != 0 and typlen == -1.
 	 */
-	Oid			typelem;
+	Oid			typelem BKI_DEFAULT(0);
 
 	/*
 	 * If there is a "true" array type having this type as element type,
@@ -119,13 +126,13 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	/*
 	 * I/O functions for optional type modifiers.
 	 */
-	regproc		typmodin;
-	regproc		typmodout;
+	regproc		typmodin BKI_DEFAULT(-);
+	regproc		typmodout BKI_DEFAULT(-);
 
 	/*
 	 * Custom ANALYZE procedure for the datatype (0 selects the default).
 	 */
-	regproc		typanalyze;
+	regproc		typanalyze BKI_DEFAULT(-);
 
 	/* ----------------
 	 * typalign is the alignment required when storing a value of this
@@ -163,7 +170,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * 'm' MAIN		  like 'x' but try to keep in main tuple
 	 * ----------------
 	 */
-	char		typstorage;
+	char		typstorage BKI_DEFAULT(p);
 
 	/*
 	 * This flag represents a "NOT NULL" constraint against this datatype.
@@ -173,32 +180,32 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * Used primarily for domain types.
 	 */
-	bool		typnotnull;
+	bool		typnotnull BKI_DEFAULT(f);
 
 	/*
 	 * Domains use typbasetype to show the base (or domain) type that the
 	 * domain is based on.  Zero if the type is not a domain.
 	 */
-	Oid			typbasetype;
+	Oid			typbasetype BKI_DEFAULT(0);
 
 	/*
 	 * Domains use typtypmod to record the typmod to be applied to their base
 	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
 	 * domain.
 	 */
-	int32		typtypmod;
+	int32		typtypmod BKI_DEFAULT(-1);
 
 	/*
 	 * typndims is the declared number of dimensions for an array domain type
 	 * (i.e., typbasetype is an array type).  Otherwise zero.
 	 */
-	int32		typndims;
+	int32		typndims BKI_DEFAULT(0);
 
 	/*
 	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
 	 * collatable base types, possibly other OID for domains
 	 */
-	Oid			typcollation;
+	Oid			typcollation BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 
@@ -207,7 +214,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * a default expression for the type.  Currently this is only used for
 	 * domains.
 	 */
-	pg_node_tree typdefaultbin;
+	pg_node_tree typdefaultbin BKI_DEFAULT(_null_);
 
 	/*
 	 * typdefault is NULL if the type has no associated default value. If
@@ -217,12 +224,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * external representation of the type's default value, which may be fed
 	 * to the type's input converter to produce a constant.
 	 */
-	text		typdefault;
+	text		typdefault BKI_DEFAULT(_null_);
 
 	/*
 	 * Access permissions
 	 */
-	aclitem		typacl[1];
+	aclitem		typacl[1] BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_type;
 
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
index 410c8b3..cf38c7a 100644
--- a/src/include/catalog/rewrite_dat.pl
+++ b/src/include/catalog/rewrite_dat.pl
@@ -24,6 +24,7 @@ use warnings;
 
 my @input_files;
 my $output_path = '';
+my $expand_tuples = 0;
 
 # Process command line switches.
 while (@ARGV)
@@ -41,6 +42,10 @@ while (@ARGV)
 	{
 		revert();
 	}
+	elsif ($arg eq '--expand')
+	{
+		$expand_tuples = 1;
+	}
 	else
 	{
 		usage();
@@ -79,7 +84,18 @@ foreach my $datfile (@input_files)
 
 	foreach my $column (@$schema)
 	{
-		my $attname = $column->{name};
+		my $attname;
+
+		# Use abbreviations where available, unless we're writing
+		# full tuples.
+		if (exists $column->{abbrev} and !$expand_tuples)
+		{
+			$attname = $column->{abbrev};
+		}
+		else
+		{
+			$attname = $column->{name};
+		}
 		push @attnames, $attname;
 	}
 
@@ -112,6 +128,32 @@ foreach my $datfile (@input_files)
 			my %values = %$data;
 			print $dat "{ ";
 
+			# Write out tuples in a compact representation. We must do
+			# these operations in the order given.
+			# Note: This is also a convenient place to do one-off
+			# bulk-editing.
+			if (!$expand_tuples)
+			{
+				strip_default_values(\%values, $schema, $catname);
+
+				# Delete values that are computable from other fields.
+				if ($catname eq 'pg_proc')
+				{
+					delete $values{pronargs};
+					delete $values{prosrc}
+					  if $values{prosrc} eq $values{proname};
+				}
+				elsif ($catname eq 'pg_type' and exists $values{oid_symbol})
+				{
+					my $symbol = Catalog::GetPgTypeSymbol($values{typname});
+					delete $values{oid_symbol}
+					  if defined $symbol
+					    and $values{oid_symbol} eq $symbol;
+				}
+
+				add_column_abbrevs(\%values, $schema);
+			}
+
 			# Separate out metadata fields for readability.
 			my $metadata_line = format_line(\%values, @metafields);
 			if ($metadata_line)
@@ -136,6 +178,41 @@ foreach my $datfile (@input_files)
 	}
 }
 
+sub strip_default_values
+{
+	my ($row, $schema, $catname) = @_;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		die "No value for $catname.$attname\n"
+		  if ! defined $row->{$attname};
+
+		# Delete values that match defaults.
+		if (defined $column->{default}
+			and ($row->{$attname} eq $column->{default}))
+		{
+			delete $row->{$attname};
+		}
+	}
+}
+
+sub add_column_abbrevs
+{
+	my $row    = shift;
+	my $schema = shift;
+
+	foreach my $column (@$schema)
+	{
+		my $abbrev  = $column->{abbrev};
+		my $attname = $column->{name};
+		if (defined $abbrev and exists $row->{$attname})
+		{
+			$row->{$abbrev} = $row->{$attname};
+		}
+	}
+}
+
 sub format_line
 {
 	my $data = shift;
@@ -186,6 +263,7 @@ Usage: rewrite_dat.pl [options] datafile...
 
 Options:
     -o               output path
+    --expand         write out full tuples
     --revert         rename .bak files back to .dat
 
 Expects a list of .dat files as arguments.
-- 
2.7.4

v5-0009-Data-file-compaction.patch.tar.gzapplication/x-gzip; name=v5-0009-Data-file-compaction.patch.tar.gzDownload
���DZ��m�#7v.x?����~;�j�{&g��xt}�;��Jr��:�*V5g���%u�}��&����p���*�=]|{�$ppp��\^%I2���l;��[<��nV�O���b�|�4����o���
TU1i�M�2U�M�"��,�'i�ei�?U^O������M�����=o��uK����K��\�'��&�����s�z��%��)f7�uZ\'�lv�7���l�����)�����nG�_W�����I�g��v����7;��N����&��>>������������g����X���V������<�r�U���o�_������&_$u����������o'���o~���5���$����?&;)���tr��7o~���^l�������/�����}���n����Lf�����z=�y1��l3Y,o7-��7���}�}�z�����o����L6���������W��g��������������o�f'�5�du5������������k�E���WW�f������f���~���y�~q��f�f6j7���������}���b�������l�Z~�>zY��������������w�,�>��S���U+d_��]���x��OsoR&�!n�&G9�y?[��o���EZ��������_�����������?�ys����\]�/���W�d]C_{�
���$��K����oo���,�-��*�� ���i{m���'W��i�O�8����o&��f�f�Lf?�����I����jq;����&k�����{i���Z^/�o�v�������/n����n�k��6�Z�w�������w�����y2_/n�=�>��w�F;�����q|���v�L�������t;��vz�������b�3��w������n����m��;������>�Z��{�~���f����z�������Ty����E�v��G���b���a����������zL������qV��4N�`��"����Bh
����/),��T��$����n�J���L�L�7!)��A��%�������
J����rR��������K��-���~��r1�M����]�0v�J3�u�����UD����j��*���?e���S	mtEK�!W���v	�<MB��eh=c��2V�W	��%���I����Mr���K��%=2�]�|��K����}l�����L6������������N��`]�W��t�������{�/�O�-q�?[�����:a_�%<������;A��A�fx���z���,�e9��)��"����K�<v���@����7����Z����)�9}��4E6���-*r�`~'`����������X�G����������p,+�x�4N(�
1��U(8�Hc��;�4�N���������p�q��e!���LN������`����;&O{3���������0������O}�x���>&���P���~������X��"���������G��q3?� �8������Q����0E��^>c��S�:�S�/������q�)��Y��������Y�yf}�i����f��%���L+D�J3-�h��i�����D��g�8��H��nj�0A$V^M��{��	����S��Sz��k���~��9��6w��v�;x��N�������YJ�x>��Lf�#�}�#N�V����d�Z�7����w�����|�c�s��k��?��F=#W�qedN�("#�?���W�=�c��Y�f�WN]�+f��G!p�c�q��������~��
z�Lkj������$���G�a����v=����,&���������g7�eI.�iV����b�q�0����?��}��k�W���C�����v���?��?���?K*z�����@L|���O��s�4�!hF%�E����g����7�97��Z�c"x���<'����m�+��;Gm��y�;e�������6�i]�C��*v��1�?[�g������n�����g���|V�8��O7�gk��'~��
}��4S�(�WO�}�����N�fMBy6����Q������L���s��L�����������6N������4��}n��f�9�h6��bcO�gu�e���H���i�>���6^0���mL��>���x�6�UY1�{��${�R��4Ml��8h���AF��~����*�`0�k�	��gZ'��{)lW�L3���^6��l�����H���~`��aAh?3��HAA��uB���(&.�6�B�``�i3|��\�0#��B_����p%�����`9�N$�.d��8�8`�����"!w<t�I���*���tm!��j���Y/��:(4���)E��������A�%���.l6����-A�/>7�����Q�	�c�w�����������6���|d�C�}�CN��Q�
�c�R-����?���J��~T�����
<5;���n�3r=Uv9�c��P����\U3?*�������Hf�G�WN����}$�o��?���=Mh{nd������]�o��?��>��?#�!T�T����Co�������.��#T�D�v������s�iB����%t*d��%�?���}n�%��7�}BE�n�SV1P>{������v
Ew�\o?����'9'�Z�c�z�T�����s��.��n�"&���9�5���>��Ok��iT���1�u#~�O�������m�P��?V���=���o���������n}���>�Ao�����g��e�y��4�A���s��L��>�}C1��T�i�Q����?��J�q���=zR�U<��2�gd�����k�-�cZ�/=���gl�\5�:Q�k�/9���� �q�vg[�S�6P�
��(�&J:�5P����?*���=�>�C���vf��$2����K�:��`>��P��d?���������\�+Uey��	��$D��	�p`�0;���<�c�#Bi�qb(��a.���-�aM$"� (>C"l`p��WDL"����qfg1 TT�;�.;���P����p�!���]D,i}o��������	��G���v����[*�Y��,�7�f����#s���(u���\����z������N�����j��M'�!x�1����X��s��6��K=g��{o>b��N�Yh��k��nW�����J�p�����c�6��}�v�r}���V�b?��.�Fp�/!Q1E��kb�K����-[�[x!��)e��\�r���Z�u�B�u=��N�O[�2�����&!h1��H.'j��M������3H�0!L-d%��������W
b*����*�����������L���{�����X&u����5��1#A��^=�)4���N�|���4@D�jK�3���aJ��������W���.���=��*j�.������8�.��G����L�x�^6�K�>�e��v�0W�������	�_����Z�g�����5�6�`Z��
6�_�`�b ����1�p�F��\2�ZQe�����������7�Q^:pWQ�^m�q
�1c�8:dYQ����Zvx|2K������W���������v��h��O���~=�L6������jm	���K��c�_�/�M�+k�
��u��B�uw����*j��"����qG��2&����l����[�a:�b_2�9e������3����5��R�������"��n�%�yg �3B^m��b7�������Y�%�U����Sl�7��n$rS[0�p}6�'!p���Sy[c�7A{�U��s.dY�E�5�6�@[��$�!��U>
A��*�^��Lia���Xp.z�@F����
>��xq�~��A_:��9������8�t ;9:��}/`�	�%2D����/ j$�.v����
S`�ui[�5co9�5rC��Q3�t��U3r��`|,��*y�gc8y��U�X��������#��1� +�U�.	1I?i&�0>������J����^`�����z0�'}��_J�3^-��
{�����L�x�PV�["��jy\`!Q����
�Q��|���q�kw(c����,�����}�=�/YT;V�{������TY�k�n����|���WI�$�\a�8L��(�KhP����Cl>�(n���z0~�K;����@E������/�6��vK�������C�$�������d=��o7��r����l;����&��8v��by��(_���~E����O�"C��Q��H�N�<�&��,�#��.�J�e���E����j
��_9��I<_D,>~|�OD,�X���b��������X�~�]E>���r�/���S���q�Xg�R��H�����q��z��
�'"�YP�X,�����i�*��pD�K@�q���Zj?��U.�$��\8B���1&�x����j�~�1�D/w��=�l���c�z���@����9�S���3s�3,F�;�~�0�u���Bib����C�{��s���c�__;��,F���6�k'�\�����w�e8Y�|���m����m\�V���j����?�^��flu���m��f;�����7��'�4����;4[���s���������y����V�ulUG�L[K!O�����$eT9��sW� ��������2�4$$�~�"���-�%�?�Bh��=��}����0� �$�V}�z����U����[lYl���r?'��,��e���}�o�*��]brZq�<�n���j�1��/�����sd)}�5��_����4�16�n�|ft����c�"�&~�%�����lF�&p�c��wc�3��_���8����F=>��/�*�9-�Q�tL%z;x��V��:�C�s/�����{l��{��S]-�	C��Q
�
�r�	"<����	6P�L ���[0�&��
u9�Z���B����'��Q�hV�0
��M�
p���4-��jy3�f���5i@MN.��q�
_�'<��z��/>y�7c��}�������r|w�R�}Q;�;��S��1��ypRp��U./=���)Nw,���`���������������o��������w�;c�q��%f�Y��&����!�E�
�}�P�}�U"�(�����&����}�L���a��v�x��c��1)�������~
����pyY�)�NHLp��<��\�t�u:dU�t�v�~�#����c����E���U!�Kz���2�U��![6��Z�������|������j�~��]Dux�?�4��fBw�M"Lzl�]�������x���.��v�0w����m���/F�af���5� �'L
,7����*>Ry�����<���/!�
�-�W��D�Q��X*�������y�hL���qK��YI4/lO����\�V.`��p�P�h{i>���U��1�>Z+�z_�/��3��_�����|N����WY�,LM�q8Y�y~���WA� ���p�p;_n��*a���_<M��Y�&�m���<�G{Y�U�g��W�b��d������Ry9�{P�2�?�����}�K;	/������|�����i�{7���_l'��6���������W7���au�����������l;�v}�M�O��y��Is���,�����I�$UQ����r����/�Z����U�e�������_������U�VO�CE���n���d����v���������n��x8tZz4��w�w[�X������=��������gqh�|z^?�6��m�k������������$?�����*�|��f�2��B7G:������-!��7�V��dU��d�h���[:���Vu�t-�Af*�I�#1s�f!Y�4E0K3�c����z�9���,�-��
��e~��A��Te�?=����2��f'�B��
]HW��7]lv���<M���b��� 4�?f��V�*��-L][������%��!�2m�K�K�/�.[��Sd ���l�^B�|��������-_���	�2�9�7T��%�?hn�k8�0@k	��%�v��21sZ��M���S��-���c�9���w��3>h`��.����t���#��KYp��3�K`������ 
g�+�a�x�g^^aKF����e~���,���@t1g��=<pY��.���/���f����1��eAhL�V�|���4�qb��jK/g���`g<@�b�(�f���[���B��7�
|�"���7������������d��� u�;X���w���s������%�x{)��C�Y������,�Ac�>tY��jt���,�U�>t%Y���/?�DK���-8�L���}r�����{9�B��R�f�c&���l��oF������/1������%�{���6U3�Xn������vj�h�:�Y��3z�u�;��5s;�������p�����A��+���]pz�H/1���;E@��@t1+s��]���G����9He�	��t	Pl��$���������0u+3�iX�SF[��W��c�:%g���������3DGV���
D��U*������*���Etd%�����* ����=�����9]q:�4]x=aj:�$������X�0�����0K��I?���EGf5#g5-g5%g���������(��I$��_DK������h��{%��_DM�|�����i^����9=�MNY������:T��'���,�vU	���]W���������X������^�����B&�/@�*3M�.dU26�]��,d�0t!������y�v�x�9��9M���0u��pY��nU.������u�0u���R�M�?���K|�&v�PRX'������R{�%CZTj?�aH�J\%C�T�H]�0�K�,�Q��<�<��Z���xc��>u���Pu����b��Nu�c��V������A�2UF���9O/�D�s����hx�<��
�������t@E����M�g��U����]�g��e���SV�2���*���F��J��G�0d�J�H��Q�*/	��9Z�F�C�h���Zf��!��E+w�������U7G�ES�n��~�E����XE��(W��)�.}�J��#�3G�Na�`���R�>�1sTjs�c�
���Nx���fO�a�N��a
s�]R����{k)k���NP%dz�~������dv����uo����D^[�-d��({	������,dy��Jl!�3N[h'���Z���9s{���
N��� 59�@�-M�*� u3���������,��{
�R"i�J�����J��3�.�e"	l!�X��.�������=���7�+�ia���rVq"���t����!+L]ER���E��[[MRA�Y�7��JJ�0)��
��T�P	U<]HE
�����T�P�W<]LE��$�9���V�fT��)�0
�,sB0u��B 
���B0
i�H�~r8��Z�t�b���� eRJ�e)�P�2)%*"�(Ca���qae(Cq�D�j��*��H�Uc�@d���#��)��73p��8nn���fWV&��-
\{)����|f��
)����4x�P:-%�	���
)�x�����]H{NEB4t!�9
XR���(3[����{����k330]���
L��a��r�I`�����}v��.,���;��H(���}oMY�\� �:_X$� ���������0,���1r�&����@c�� �e���v��(h���t�3�&���9�TtT����X(*�,��}�����ICK��A�/r��e���/B�2������(c.�H�V�2�������\	����W���|�5\x�8���;�E8���;"�8���S�����?o&;�����$2�N��V�Y.��]�2t H��y8��rm)��N�(C���"��(CG��G	���@�T��
Q*:nf��+W77p�	�0p����[����R�����d�^e��B�1�*�~���W���eL�����(c�5���:��zu=a\C���O0��^]�P����k�W���1[�+������X�(Cz5�d�������p�!���[�(Cz5	�����@1[W���\�����>z��[�>��
�4p}�t��kee1"����G�WE��KQ��U���R�1{5`��p�1{5`G?8�-��n
��K����x\�^ul��q
{����k���|�p��G�J��~B�!�*sY�eH����b_��z
��w8��z-s��jVY��)d�Y��[�q�������p�'�k�-
\"��
�i��O�"�\�l<)�P�@p�p��"�\�t<)��fm)�~yR����S�������B�F��f���i��
\����0p�Vni��d1* ����p���@s�h�X=)c�{N�(c�F�b���5 �xY�\# ���)k@���X-�F@�q9	�k�b,����,VY\����b���bO�X8���k��*���Y���h�d�NS(�X�d�Nr�k��#���:IL<�(8��t�����)�=��i	<�HnP�3H������3HS	�*�;�4�S�dm?���Z{E�R��0��v�*����D
c�V�6N(��5���o�m�IB��f��:� �?�W�e)a@�q�kYJLx1��b-K�L�3�XK�s�8C��8�F���@�4�L��+Z����M<�3���<�s��x�=v�\�v{u����?�l��f�(�
#���VBg�q��V'�K\	��/��\	��/�K]��vf�Q�Tu�^1�+�i�0����NL6�W��a`#}�<S6�WT���Zg7���5�U�XT��'��������5y"�!���T1��i&tM�cH�fB���0�tiWp�z��"k��I3�5y lf�:�(��N-���S�b��i��T���6_?���6N���V�y.r$�cD���%��cD��!�)c�����D�_�1�B[�QgM���]������B���i63`�J	��
X���a����aK�~��r��e��c�v��/��xWFh"c��0���DB�1���D&y&�3B�:/!���Dm�:R=J�j(U#4qY� �a�&v��Fh��k�������`X�M��SG
��8_/n87�9���&\��_��"���q��h-����Z$�'�����i�b�!]Z��7�4�����������q �pf;�d87��A�0�]�������e�z`�������|p�I�8�x�����_�.�A�2W����Tg%s��]�4������G5�����g�#���<Is��"���H��`�:����������2:1'e�|��!]��L��7B�1#3`#�p�1Sf�e��ld�����Y�����+3�@d��bL��!��/��=A��y�����e���
�5�Kj���G��9U�%	]�q���'��E�F$�%�R��H9�gH�6"�Z1��:m	u*���M�O�d�^=����V��#����v����v��\�v��\�v����y�4�n��%�Z;Gj����<���|���LQ�_�}�Y�B�C�T"�)��v�Fm�?�����1���@�
���h��x�>� ����=�	���Sn��z��Ka���
r�s�g2��gLqfBS[�3d����,�S���-*�S�[�I_+v|�s7�,�6�i�TS(�n��.��6k��Ea`C�R�����r���t:�����!����Zu�y_�G�0�R�B��a�M���`�e:
��0�I��y�$��'���Z}A������5�Q��C�m����D-tT�����:*Q)�h����zDI�u��{usZ��r�/���)C��e-��d#��(��0�;K���cwCG���L���se��_����$����<Iw4j�suX�(j�s���aT��h{z~��,��KV����eJ^���F�!���ld��2�����E%D��M*��%#��	����\��9�X�/H��8�0�Q3�a�������sj��:u2�Z�������z���9:���&�N��?-��\�$E��'"�
IQ��"��e('�\�4e(%����n;T#tG"k���O�/������+
�1P�u���c*�[�.?�f���
���\������)����S�X�3�Z�NE"�R���ME�\�8C���T�O�����T��@��������N-��k������������H�.�+.
`���+������������1CJ�3t�H*�^�8#�5OE��g��TD��q�N!I������z��k�����0�q�\v�W��`lW���lW�����Z����iIg=��V�Z�3f��"!>)���*m��Y��G>
���w����i����W���p�=�
��v�)q`�ju/<�
��v�p�����^�|P�O��6K�^����5A���V���|�o���8 g�^�D�c�8C�����b�!{5�����!G������q����W��J���v����C.`��y8pis���l�~�X��?L�zu�m�U�������+����KP(\����Z���_����.�}0F�4��B��.���$���tc�t���Z�3�}F�M�r���	���T��������k��1w�����t����>q�ZE��m��)C8
&L'S�s=L8M/���'����t��vej�.Y���]�PS5eQk?�B��4�,^F��{uq<��W�.�[2h�!�*�8�3ezfW�x?�V����#�����9}.��$��������lI'O�-�	VH}��]F�;���n�n��o������V��L
L7�{I�y��n�4�f������.��X���$e����J8~<�Rq��,d���JY[�H�
��,�2'�<��y��4G���	������c���������"%�����]���d,q�#}�F�sy]����Kv���M�A.*�����/xr�L�tM�w����(*�u��q�Z���V;t��4X^�B[G����K��
�Z��+��72Z�d�����f��c���r���J��O������v�k�)9ur�N�����+S
�e��jR��S�Wv'���2g��g{y����SSb�?t���C��d�OQ>���'^zt��K�\zo��[�l�������d��C�F��(X-�+�z����Z{�X-����!�s����]��9��5�h���\�n������S��R��������%Ud��*<�&<)+<]����]>�u���b��'�X�S4���+3����������#z+[���4��7y���)��R~��$��}�|`-��\�/�t6;�f��5D���J>;c��y��7�����`*���A4�R)��4�%�
'����~�2��N���}��p�v��B�����4��U=_��� v����"�G��'�pA���<�����p�)���\������HV��jv������a
�r�W��g�g��s���\s�r>QPs}��'!����4�n����@6���[���p�����5TEx\��@6���
`n������3�w�dC�A�z�|VK�o*�����(��R���-8��~�����~[9%��1q�p��"��9nR�!���(�j�KF�X�����"���(��/E�\QP%Y�"\A������a����"Ld�.Ex
��cK/��+tP�fK!��N��eh�vI9���xYS������d!����z���J
�T|��P�v���f:j!�����z�yj�s-ePK��A�t��j��62���Z��NU�L;39v����B�����K37���X�8�q��{�E�V�%[U�����bTL��SW�z�R�!�f�a��y�L�b=�X�%u���#�]I���XSB��1���tZ����@��WR'��@7�'�#��������Wcm��5�W�1�J)�	��n���:��"�Q�����sMtX��	�jl���,���Z��������v�6��:����"��j��k���[kG=T,!.�����L�~������f���j��.Q@f�*��F}A��r&��� %
���a$lRPG�\�0�(h�����Du8��c����a,Q � %
�T�a0Q0"E�&
�r�"��D��t�(���&
F���D�e4\�{�g^:�2��tT������F��c�zz�q�1T-�ZL�]UOo4�0<���7g�C5���>�j�7��}UOo4�T�j�7����pf�@\3�!$^������7�D����2,��)QPy��������rYrI�����-�x��P$�"���N&�"�1i���S�R��&��		1�����		1F��V*�b;�G>���1F<�T&�&�s���"+����,}���z�
�����Ra4��+?&�]�KF�+�f\ye�\��Q�g���"IY63`�������1�����xc����f1���gH��
X���6����`
��)�Cb�u�
@\c���P�k���8�k��R�`�������f�r�����Y]�'{��1��c�Z
�(�&E2n��X�.H2o���$
y���Wiu��z�}����`8rf �b�����!�f���CVn^�/�����>K*/�z?��=�eg�F��%��u�����gD���,rS�gD������]�3(l��<�-`=�=�Q�e~�W���y�����V����c�un8pa0N��K���|�u��Ssuj�!RG�!2��#uXt����yE��W������T�\�(�Zx�Ld���-<U���-<U.��Hq�����^x*���#���������K83�+��������0qA�^�������z�$=@����r���k}T��>b������;��w�]Dnqz�.����HckU�����F,�%{ �rx���_��k.��W�,J7K

}����$���p�r�1{��i�g�^�e�B!���R�9��z���	�N�C9�E6��Z�l�+��Q��
{�vYX0�a����|�W�j�|�t�"EGy%r�g�����_E���,2��>����<��H�)��z��������y�9qF��?�_��Fd����
}��8C�p��{�r�V����{9��*�Pj=V��z���Z{E���y�.=8pf;Va87�	<�0��;\�Dd��v(U�H����} "��I�{3��A)�{�A2F�gl�9�W�3��H�K���:"G�q�V���8#�)Z����8C�M#R�-�rn�3I�9g��	M?c�!��BnQ�z�Zv=����e��F�����8������U�����86����'�zW��|��6������l/J��B'�F_8*�}f���!8�-��t�7N��<�}g;E�H��eNQ-�3"���(C�I��B���Q�\�z1��'��c��>���X�QG�Q'f����ak!X���8����Q���������\��j��_�k
Y�4�5E����)�_vM���]S$(�������k�R�&�����k
����l���{M�ac�����zB��H'����r�D��IO���S�^\�0;�og�]�$�����B����%<����:��R��9WQ��\�0"�U5&����5J�W)/�/q�T�m�CP3�A��S�I�`S������W��*������*����8��h�RG��`���������r�l�+O4H��U	Y!Q�%��J�
��=1�PUBVHl7�U%d��^�3T��D�
^w$�e{�L��+:z�G]{���l/���
`��p���W�y�p�>��9�*yp�PJ���h-��l�jC���}����m�����d���9o�������R&����&]��?���&��K�����x����|�$��=�5{pj����������@��dJ@��i�}���%�N���-zj-B.jfez�"d�h���*��/C� ��:��/D� ��J��/E� ��Z� =@1��:��#6|�Y�L��<�-�������HdKEr$��$9�R��l)J�D�T%�"{�%G���%������\-����`9);��1V[U�1tw��%"�1S�'��1b�2��c�@-d�j!����"��c�aoK�1t��� ��B8��p�%��������K�������Y�G�]�b��rQ������w���\V��O�m<l��ux(0l��:���/�a������g
��o�uy%0�ye,Ur4XJ�z��JM����Nw�i��?hl������V�l�o������i���Y��c�T�c�G�8�c�G)dxB�!�>��B�!E&[!��Q��Q	���"e�J0�|� �c�G�BF}���g�G��C}����#Y��y��l��9��(��<�`5�p��aX�Gi�v4��(�
k�(n��5|�m���>�+U��>����|�{
�>����|����,�sn{d^v�-j��N�����������m��'X�0�2�i�f��(#&FKyD��!FK��(^�2b`��E����-e��2�(#��,r��e���R�:]�1�[O�K�.��������[Osm���W*��������)��_���PX�B�[�q���,1ps!���u��f���I77p'A����tRy���+%
�+%��]/q���������P�)C9�
��p3�b�#���q7�/�9���pS�r��m��Q6�/G9���`s�g��k�=NM��6�<�b�G�L�8`�Ml1���-Vy0o����vy.o���������}�~��a���7����������|F��H5�oe�4?��]��NK"������[�!�fZE"�4��0�.D�g�)u?��#�L��D�������R����Z��Lhw��Xjf�6"���Z��:�z�tjip������������G�]�����5��ABR&����I�����L���Bt�YQ����B�WR����Tn���X+���R�DFY ��q����i��f�-D@�US�������4�R����S�����$��b��J��x��������d5��!���>���MR��L�h�6��
5��u+_T��������d%jDKitUO.��\�������e:��NJ��=4���#��AC]Cp!��������v�P�&\�/�w&��~|��KjO��C����\|!�P����"u���WCm9�a(��PgO8�c��E$��-r�Et�[������B�\>�����@�_���E�:%�Bt��Vf��p>|!�{X��.2��l<|�;���`�5x.���>\Kx����0hR^DC{q-a���a�����p�IYJ�^�Bku+���"S��J
��9�*����|X�{��L�a��]������������v�������L��\�_��=�b<���nQ�.u����b��E��`nDt���kK������(�`�����Bt��F���U�P*��{k�o�X���>������r�����
��A�e��~�S�,�`A��A�lg,jf���?{%H�7�E-�2�Z���5��Ux��`�rY�����D@�i��05�UV�����k5����6N�$H,�^���R9�B'*Z��~c����T��E5�_�'�������]��8t,�����	�j��]+
�����+V����sT�V��>�r?Q�������ih?�U��������O�9PC��Y*(�H�bH���|�aj�������B��O���.SB��85~j�����pyb��O�q�� ���W����[�c'/��b��}�����e<_l{�T'�/�L��6���m���>�����DG��K��<�[���1n�5���5�n�4�����������-�
�<��;������3HM&BU�|!5�]py�����#@��BzRj��_HO�l=���)���y���i=�8�]��'S�6B4�����@@uE�NL@���$s�A�)�))h�A(y
tIM]Y43�	C��4���"�������B|U�v����'����p���*[9s&c�����M] ��}M�V���.���.������ji�����j��������������H��������x~������"�28�6v�0�LN��"�!�S��Q�1dvJ���2���^j����N/5���e���|�;��K����������������^������#B�~R��E(c�O�]�26��*�})�~���"�!�S�����)u��c������c���.�����T���A��t��]6��!Ow��=�en ��t���z��]�c������1�����A����Q�K���a���S�qK9q0��]������q�qs�����+�@\c��uP\v�U�j}VW���zVW�� ��"��1c�ZUS���:g����9����������6����O*u~�chG�T��chO����"��]�Ru]"��}�!'	��\9n�@d���+i��� �^K��ia�jZ�I� �^O�.�a��Z��_U�����i���X��P�B5�"�!*��J0���!"�!*u�cL��^����Mr� ���Q���HVW�����
��o���{�(k(P��9�����-}�y��oE��[3�L}(�����$(c���r$(CI�L,�'AJ2db9>	�P�!I��3]��r`�V_�����a����@���
\�~�p�m�b����r������/M�R��Kc�����y.��PFtiKYf��P�j>s���eD���e�Te(#��������d5���������|������M(nn��t?�[���R�4p]���9���|���������'A�I���e�&�*������T(B�2f�&�n3)7l�.q�m��m;b������(�k����|��Iw��5l��ZO�zt��yx�,VKV��	�`��e)e,IP��S�B�
�xL}�"�������S�B!�D9��u#O���������Cqkw��AaV�m��k

�:a��
�V:.�W��w7��n��������5�Iw�q��=)�o2�!#=)���
�����y�� 
�����B�!S=	��MI���#����6�O��W(8rf ;w������vPd�dO��#����L����_��?o/��Z255-�
�V>�	$u[�il/���+B���@���&C�$u��ilGP��1��U-�(y��+�\�}�8�lL�d�������B��F���|s�(�&}Q��m+2{%������+��v������}�@g�����t*D��[�f��5w2���\����I#�72�$
�����(C:�%;���t�{�Y.v��ih"�b����&b.v��ih"�![$
M�\jG���h�WD�k>eHCQ��6��D���R�44���!
M�2�:��&}Vr+b���)/C���]�)C��N�]}IcqX�3�eHcqX�Km=I���yq���#���&b�����4-.4c|����y��0Ms���il"Je&�Hcq�`�/il"Je&�Hcq�d3D���G�$�M�f`��46��}DO��D�:�[�46�a�t�iz�lo,��`����2��`Mq!=c��]b/C�Z\"L�4��k-D
��R���HC��\j��i(X�K��"
k��=��������+���K��G�dgI������0��w������,�� �-zs��v93�cdCG�
����Y��K9J6~"wC����,�97���������E.
d���*�A�9���$���c��g�(=���A�Qz��"�����<�m<%$�
-Z���m<��%�
-Z���m<��-Z4w��������adc=-�1����A_���-��s� #�x��dc�u��l���N4���o���6-z��I �L�i�Z�
K���g�=��$�
K���)-�W$�39�7x-��)$�9FoX�h�����	2�����������m���W�  �&v��i,�&vS�i,�&v��i,�&v��i,�Ry�o�QnZ>RYk��
�2�"��_E6�+p��l�W��	���dL������Z�b�U�X�?�W�R��H��TmYJ�6dHC��,�R2�!U[�R�
���-CN^�M,U���W��u���#g���E�s�m������6eQ��@v���s"�a;�5b����ZKU���Tk-U(#DR��T��iH�����62�!�Z���������W�j��Q/93��[�Q��@v�L`��@v�"�24T������byO�c'�82����Ul#u��iH�6RG���Tl#uN�iH�6���"
��&�U�������f9��Ul�>rF�d����s��ba��@v�X�4�]*v��8_/nhG�<9�f��#.�����"�Y�b.�i������,�Rj'�i��-#�G8�=M{���v�o�>xF6,X��F�
h���[�s�(�a��������2�Rr�MKZ��7wL��<"
m���R��ihs�T�!����i-�[�HC�;�!G��&Uz��G*k�]2u�������6�Q��@v�V�0���F.
d����ly?��$jC��S�7����D*xk��:�C�4�e[�Rw{��F�l���H#Z��i��L�4t�W3���H#����e��R���6Z�2��/�,c��F��hg�L�KLQ�"u��kLB��H��$�qi�[���xc�-�B�%��W��[$���y���^��|g���+�����$Q�\Gvfq�����>p��@vyL8rm �
Jp��@vyL����I]e�+��!�f�o���i":��,�-'�1��[c<��9����mNrWX�����fIaNK������������t�����U2���2��E2�:D�4��f�T`Q�4��f!'l��L��*k�m��W��!g�;��"��;��"�;��"�2X�^}�-�����3�uA<���[�h�cD�b�"	��V-���#*��J0F�i!��`����TLK�1�*�N��a��
���)�8+���ZB��[�yL
.E�������U(C����X�m������ ~��f:���`5[�����:[�����:�;��V:�;����:�;*��6:�;���NU�N�����,%c�q���H7�8�����;#��'7����/'�������N�,W��v��=?=��d������n�����e�Of��IZ�(F������c
�NU<}2�[��.��7��������b;�}�Y�|�w�n�_�������WO��f�O������vr������v�a�&w���������iU��o$U�v�����/��j���'W��eZM�8����o&�~����z~��������q���K������V>Z>?v����n��w���f��t�u�1M��p-�����n����oR��i3-���o�`��&+g�U���
VL��k��&���Fwg�hfg��m�F9�M��N�b�{O����L�
�`��!��9a=EX�al��Z�T�f���eZ�4z:k���Y^X�'��h����F��	x��(�o�?��O
Ho�����cZf!��"�7��i��z6*4�|���6�%4�I�)S�|���N�VO;�(��i����L������>������4�9��6��W�RM��6L��6��v��9���TS�M����E���m�&3�)3`,y/�`o$[�N��G�gD$�����g�K���i�?!�:�m���7�CZDtkP�r����M$7
��Q������Edmk�b3�'P���;V������V��]=2���X?�&{n|i���pM��������$a���>���>�P���f��m�	�d�L���$/�2+�`8m�����\����,k���<c�X:�����
����L� i����G�I�����q
�c-�V��X�n	$��r���8"�U�#6�]��Av��FR����g�L������\Md|�5H��"�j�YyE�����z��
���Hm�.Y�$������'l"���n�.��~�6�[�Y�.(l���:�jK&�V�J��@��~��:�(y�V{b��Ze�����/�#�Y^r�t�V���jV2����'L���������[��S�f�L��2E���f^f�������}��,�y�W\f5�����ke�"�W
7�U�-l�Gl�o4���3:O�G�V��XUhK�$��o�6��i��na�
-Ng�*(��+G%�Z��w��X������Q!�!)����Y]��R����hW�SE�T)@[b��rU*�q�zT�2��e��o �b@RO�m��&	�'����n&te�����=vH��2�(Xc#f�F������qYT�:�]�ef��S&�#��re�������U��QF�YE��)V����N�+Z������2�(Vjy�S�����X�Ll�aE�,=�eNu,E&���������E-S���Uoj�@\C�����������H9���I��2�������mA��=��%�S�����aHVij\r���D�uW1y%�+���� S�Af�M�@���������
Tj!�e�t$�V&��ue�����������"�EN .��!M�0W��[���������������?�Q��4g�Q����+S��$���\MU�A�����6-�;��X�#q��V{���C�9����sH�����
uHt6�"c��H�U�P�
eqN|���>������t����uE����H�����C�z��rE���[��E�U�C��v��+����'��U��-��E�U�C����T���+WZE����1���^�"�Z�kh��f]I���=�mg�"��91�L?Fv��+W�w����l����3L�6M,YE�F��:���%/�]�����h�x���m�`�����
K��X��sf|�J��N�v��R�-�����ej�ri��-��Y����Z��MrY5`�CQ�u�O������`&J�F���%�j����Z�M�_���E1t��q�N���m6+���v�4^1?
�����Z�����WS�E�U�E)R����S1%���Z�,�dO�X��3'�+�k��D�=��I�R8(U�]��eY���Z������n��s�{Rj������T��4�C�<��p�j�+��2�V{�5����0[J
��d�F{~�U��s>���gIn�_�V�����8���b�#T�Sx�Z�?��j���^���aW�V��5��c#:�d�����q�e�yC�e��L������$�����e@���A�A�+��rj�rv���'h��	��:�\5�3�4����2�M���"M�=%�Mg{V�A{��p��<`nD�U��H�(��y#:w
mn9HD���2b�C7�8)���e�,(�j������Jf�U����h���|�y�X\Q��lG<J5�s�,{�J�������z�V�#j�]6M�V#w\M�����V�Ir	��6~��� D�V��Jl�
���V� 0f��A(������/�0>��S���os*���8c�)X���>����������j���� ��1(&�m�Bw��2�!PLFZ�R��Q���`(&��C���9e�����/n� & ��}�b��#pDAm�P���6�2�ah\TGS���p�l�@1KJ]���Ud1F�Z]�/G7�2��@LFPRE����� �������~�0�D(t ����cPQ��`4.C��n�)���0�����}��z��F���wf����>�����1��
u���~�y�!���e��������c^�������
b2(:��v�$�:8�V�m������R� �����JhN��Q��m>4+
b�n�	_A �zx��<����c�����5����o`�c"���(����X�7��h\[����������E��]Q�J���"��������J�'����7�=�����#J����#��
C�"���*U6��W�������~���b����.Z������R[Y�P��g��c�6����v �P�e�9-
���zmZ����{mZ6����&��osj��Y�6+�L��b�0*w�GVZ�������Rm���6}��T�>s�m���U��������MK1�P��2$�f�k�R�(�������)�"m^BnM�Y���6����f]��u����i�s�����+�;�����+"mz��6=��H������yU2mF��l���k���*��b��f���Q�V�^�����Z-{=l��k����2\�Z������!�'���7�o�7s�k�7s,75��j�pm�(�k�'����r��d��/;���7~�e\�Z5e��l��k����'�k��������jJSc�CVJ��4ia-+�P��$�6�E�MS�����4e�����j����r
�T��������4c�e���J��f��P*���D�$����!X\�<��C�8�.���B���tsV3���d���X���~a"���������1��a*�����_N�ba}�aq1�,l1,l1,�q�b�:�R�Q�@j�N�.�������C�0���0���0������v�l�`��S��Q�@�beah\,��m��q1�04.����T�Z=�����S�(��	��q��04.����f�����V��*V��	��~���I�C�bah\�B�a+�Bs|�[���b!X\� ���`q>~���`q>���nI'���;�'�h����k�4�vu���Z���%Z5o�YE\X42�Yg�d�P�}��k����B�b��B[�P�U�E�&��Z��0d/���^9�P����� �j���R�!��)����F�US�K��\��4�R��U� �Xi��a�5�&��&B����r�X�}a��#�j_���ky���9���9ah�����%z�@�l|�@'s#�3#��8� �[�����<�[���>�T;���7�[V����2�[����MG�G�����04n�	C���04nY�����+v�Z^(g��V�%�/�jo�k�� �jOjK�X�=���*���*jK�O��.��8��U�2m��T[��j����Z�(��)E���T��^��RY$)���=����.�6�S�t����6-7�6�^�6�R�����-P�2�{�e�0�L�=��2������o�i�/C6�]�MO��<�9:=�E	$Z���U�	�����h�';�dZ�IN�k�2QDOny�XN�j3���k<�6�^����j����k<�6�^���k�d����_�����6=eH�MOi�S�D���U�6�uw3���'C���04��C���04��*��JY�j����8�9���C�8?7��_�`]��"��$�_����!X�����!X���cUa}�qt���B�8�+���B���WO*����p7���7�H������#�H��� �Q�=E�����t!X�����`!X�m�c5*�����C�������������$���W��������-���l��o�=.����������!TL<���<�=I�h�f���I�E����@-�v^N�e+��C�������w$�?���~Rg��������,�@�,$�^�) ���h�s
��M��|�-f
 H�@��)� !S`9{�sC���R.��3��	 ���h�s��M�Xv�Zf H�@��	� !`�������������o����?�Q�Q��R���h�oVH��7+$Z�F[�Ew
��8������]�%=���/�qt�-=�����8:������9���zz� �JAH�*!A���O�\�_?��L~�d�1���-���O�[m���v��_?Y����d�*V��\��f�[	=Z��-
iP��VB���,S����,S����,����,��W ��!r����W �����)������)������)������)�����,�|q8
�����hQH�z�(��-f�x�8�8f�x�8�8�ax�8�8�ax���)�$�+���qH�+��Oq
��Oq
��Oq2��Oq2��d����&��
f{X�V-�Bh�S�
���PZ�&�zA<XB�L	�6$d��\����U�HU��/��gi�@���	-b�	Ja�c���W�� a�	V�� A/���{vety�@���/��������r�S���_�� a�� a�� !����qP�lQ��
�5�A�o���7d���2mB3�V�*��������� 4@,h>�X�A��Q�
���9��
���;��a+vx�� ���rzC��6�f�O�R3�����
�+`�X3��z�0�����3`8+����i�X�3 �
b��`v��.�m+5���fO�����sB�M�9!����i��*/�*/�t�9�aas����������6'rn��\a�>��5'D���"mz�	�6�9�����������9�aas�B����fv{����I�7{�k��Q�M�9!����i�J���V_��	�6'0,�9��nL&^+#j(3���I!����j�kR��L�CS'%�Y�/|&��L
�(2)�9�g`�k���X%D��\%D��\%D��V	e���A��*�aa�����uB,�7���ji�i�x�Qs���*O�6�����R�*�f�k�r$�P�E�M���R�ihRYW}�F{��Y�&k��)q�]�^��k�n�`q���Im'�A��IY'=A`�T��������v���Lb�\�M�(��j���j���j�:�J�#�Z{�gw�h����a�����=�'�,��W�������lh����U2\�M�(p���9e�Z��2B�bS�V��UAj���(6eP4l��h����m������������������o���3��4e/��>
�R �����V=�����.���"�J���J���J�:��&M��(����J�:��R�b���H������k����mA(�5E���F���~kD������K����o:Zl��h��w�~h�����kUJ��*���Z�ZY-�h	����:�%�����:�������:����j�
����������Y���-����E�[��iA���h����o��M�bR���i`�V�4�g�B��U�������g������g�/0��y8�������x�����Z�lh�+�
�����[��dC���X����o��
-��"-tV�����=p�X����%�����d�P���n�V=��B�b�n���#�Z{���F��d7��%�Q4��gqH��fV���~h���i���i���-*�P��+�EE�
[TP4d�\/��
�	ZV�A'�G���P����P����P��z��"����o=A���E��
���g����=3�
sD�������V���T�~�D�Uh�4�&=�&=��0��
�'02O�������.6��J�O��j���j���j���V�C���Si`4��B�0[EC���3{hk����MKn����V=�V=�V�E$=��e���[DP4lA��EE�N�����ly?���`���c�Ti��;|K���z�S�V�}x�����T�����u�����v�/����v�L_�Ys^5%��T98���^�&E��E����h�p�'t�p�0�qB�Z'O��6Kn�d6G�{���Q�}"���}"���}"�*f�(���(k���}��a�	���'(h�\�>p���b�z�������6=m�6=-�6=�����I0����G�P�Qq��z�^e;0��0,���0k��l���c�UJ���vqw7���_l'��6����Z�v���l;{X�������������vr������v�a2+o��b��m�^��xO�$���������/��j���'W��i5�b��_�S�7��v�XN����/����\�����j��|����NnW�����>����b�v�'�����Q;���x���x�z����?������?�����������?|����3q2Y��������?�������o�����6�O����������|���o�������a���Z{o�l;�}>�����a�v�n}Q����4�l������a�xl�*=������vo�[>?<�;|���aq���.�������/��{�>�b��O�4������o��?������������~���alE�q�\lWk����a�#���x�;���g�v����e���������������O?}����H�j���fm���v�X�o~e���~O�pO���O�n�����>�?|��kG����������~��w������M�
���v-��ur���n.��XE�n��_����~��?���~�{j5����_��]�n�2_���:Yx/����e`����M���4����oo����5��v�Zn������4�|������}?��4��m��I�E���d����z=��hYQ�e�u����u��������������t���}������{+9����(_��������������|���~v�]��w�f���������VW���,�t��l�m�=>������a�:	l����f��V}��!��f;_�<��K�������v����n��o��1�l;^1$�o=�e�Qm�}k�|z��{����o�oo������^����<�Y�[�o��g������a7�Uz��{;_�����l�]�s��_��6_~8��7wQ��[G1��h� (O;�M��]C����6�OS����`��F	C���bJN�f��~��3�|�J�g23���:3Df�!�=���>���+� ��.>����u��:~��f\`f�%�'���q�%�f�;����PW��uV\`V("��������VO�o�|��]�Iz�\7o��U����!�J���W�O���o�>�z~7_���v�z�;���[���y�������������:iG}��o�N&?����vr?�N����7;����=m�V������������}����^�=��2{�o���q�}��}����{�l���N�A_��o��,=��X����!��{������9F����;Ea�jN������|Z��fY]��-b[eC�5��z������yC��j� B������>��`"d�>��1��2+H�/��t{��q;���m�l�'�X�N�TY)������X��^]�JPM�u_��0������2�������������c�EVQ���>"+���e��	�59���}l�f�>�Z��n

�Z���	��|([MMj)�,m�J�L���������o������������?�������} ���Pe*�r����}<Y�g�V�m!� %�zi��}+I�Z�|�~�+��$�S��H
�w�FF�l��G��U������?~�S�W�����?@���R�I����M�/j����Yp�����@=��e_j�=��g[Oc�P��C&��d��		�m����r���N�D8P(��pH "Sf�n�?��Xx����,d�i��dtM�����9�������:W���I���O������"Pz�,`�Orq��J��WLzX���)\zX\���F/Q��JO���6%dA}"���q%�Y8u:�U����W���q���+����F36��qv3�
�7���	��|	k+�/��s.�)��d�
w�����#��1�@�S|�aqI������������{o�!�d�����oz<�y�G���@w��������Lf���}����v�0�����e�]M6������;V8m>n�����i_�5���A]o����v5�,�������l�c2{xX�2�M6��zv<Oj�+�UOm'w��c���B�����c�/nvz�����d����+{������n�O-�j=��g���{Om��~���j�����lu7o��v���g�����S���v�Y�N&?��5��o�
�nu(
��w���<ov������Q��?d�"�-'YV��,�tQdkd1�)�r�C$1�"M�\���~�U����o���C\��1�2�G�j��A��������G�3T������B�RvC�Z
���0����3$Eu��]�R%z���M�p�����4&�7Qb	�=�������lJ����F��.[SB�Ja�|q��v�;�yXzn��!��<�9��I�������!y���7p��Z�����O!��v�A&�K=P)�1���=�X��~��<�r�JO1��cKU9z�T�.�����KJ��ba~tQ�df$���8x��������_�����TZZ����i�����F8h*����|6�4��"|��:@�{�{I����u��|���y������%���;Id�
�P���]�t�5=�4'U��<��
�W*��+�<63YA��4�&��nV��`/9ZCe����4�"�����C-�"�� fC4e��}�m���R�u��Xb>1���Y���}�1�W���V��n����1M���Y�J]���!�r%2��[��"����b���;|���e�R���-E�(R.��;����W\���|w�����'����-
��}v(���-�g��b��XR����-��5C���e����D����<,��G����<����u�W$����8Tq�����j�%B-	�#*�&d�T0���$|�
�\�7�����r(	w�O�a	g�I�g��)\-4a���p��;C���v����T}��x���6�cK���l{�mW�D�DV����f2�����W�|���/�%��$\����!�cK�B4�������+������_�e\��/�8��g!+�,��V�Yg%.}��E�����-���J2��Dj&��~��~k	�S"Mt��UP�	�%�!�n_����������b|������p%�>�t��}����r��$�/�#�s��(���L2�:�E���eKl2��3��r�[��D�nr���f���\"��7�alA��6��KXh�|	3���g,���������Y
�tvEPqR��[��p�	h����{���l�\�!4��nT�3�H�@\._���g�r�m����`���A�8X&g����d~�����bA�^J
���T�['�,���{�V=��a�7	���I��v���C%�L�A�7��RC�d ����	-����{`k>*�53�������#<D�~���)P2�f2�x9�)
(I��c3	
����� k2�(@5^/4
����@���h;2�\�����7u�{���pZ���j".�,�z$�4�v�
��
��d��"�kWl�������FFQ`*��D1Q�~|20��6�n3��(0ks��{�
���A�9pzY��8�U�����R��t�j��~������z����[�����jr�^,w��N��������M�}|`wg�L"WR$ ����������$M�X�����6����	g�L?����^��Y$M��`5���IgC��r����A������e�d|���N�4�k��Az��Rr>*���x������
e��>^#H;�����o0qQ�qW��N��)-��8L����S�T�9f���*�t0�$����O��z0��4!�`����cw��r.��D\-z�;���K}�XI8�����
A>����.�����][:��J�9X�1M���w��q�z�bw����*�����6t5^���?xhTw�H���2O���^v��`�v�p�������l ��]�y����>]���>��#H���NT4��}����hIq!�*����]
G��X8C%q4F���6���"�VH�d�

D!))4�������f��F�@T�dh��� �v0d�a�����&�
0A�d&p��w��:��-�A�+�v�p���
H�\��P��a.X�������}���;��c*�p���o��|��th����{�����0����Y�sE�%=W�%O�yi�w%I���q��=A��M���9�kC���6?�t���Ex.�E�LH����{A��Y����;1�����;�r2[~���u��KI��_�����uB��}�p��)C�w�Z�c��d��{��|]**0���
���x�#H�63\����N�]����S����}����}Z0�� =;��y,������a*T�lW�na���ZF����u�9]���h���qruu��Nf_m�7_�����:^�U+�����95�F���pQc����|����m�\g��4I��xsuu�����/�[����U�eZ������_���S7<���ww?�=/o�m���u��o`��V����AN�}�=�N�^w����aXs���m���C�x}3[����\��{�g���[����C%����������|s�c��f�x�����}k����9r�����m����?�������{�?w�w[X{���?�z�y���r��02�?�I\(���w'�yu�����F�-�F�-��[Z���1���y�
��������%1����O{�w\���{�����=���~�>���'E^�Z����y�����Oi�7��L���������{���"����P��
�,���`�p��S���\EL�z�?svf�mj�?)��<d�^���?}B"��;��u��dt����zo����b�9
�p�x-�S'�{�{���������4�v�{���M^���-������mWDWk1����B��L�"�wm����������c��7�v-�z�){=~��Y��A��1V��J�/c�?���+U�����>����X�AU}
�GP/��d�OK��J�}���.z|z��Gh��nm�%{X�c��5�c�;��Z4�^/6�^�f�>�r3���c���1��R�!�4L{�6uw[���"7�m�����=�*
�h��Xo�FxRw��55W�]�����c{,Ut�al����+��_��N����m���*{�'��r[|n(���<�W��i����c����c�S���V}��2:����i�jS�*9x������b������K�sTz��us���i?�\�f�p�I�rzel��y�y�gMfOO�v����r;Y-�������d_��������(��A�j�fM^��x���zo���C�]at����W����$�-E�W)�;O�y����������V��$1�����$�����jy�>�����%��C�>���g�vL�Z��P��������e�H�������^9�������	=�6���!S��qn�������Q�mg�

��8���[FW6;����aiV��]��M��1���}�;��vi���G�������4��n�����n�����5���qN�#�,Ov=,�����yCl��N?]0m�Uo�t_�v���;c�����f>���v|���-1pq#�6r��
d/0r��=D�F��B����������J�e�_�:�z�H���������8�=E�w
��a�������H����{��>�"�1[T!��u�j�4f�`�3V�0��GY��>\t�S�Nb*��&�/�YC���3S�f�J���Qo����0{���Y���s��uYHi�0����	����Y�M��wu���.�����~���'�6���9n���Q���1�����m����Ej*�����+Y�si�/��2�z�?���zo7c���1��H�����3�:�_�^Pg�}h���kr��j��d��e�"+R�Hy�ScFM^�Oe�f`�����|�������k�	������n���l`�b��
�B��s�N��3�8~���>��=�&�����s����_nQ�����K9�����O�
������V�}����0"�������yD�~3�/_�uyU�O����.m(g������wF�^���\~
���T���������M�9����t8��O�%��^O����v���m���7�(X*V��*I�X��	����D	$�L"%�On�����$xH����CA�L������i���(�! ������%f<L7����$�_�Q��
c�~��~�zJ7����.���d��V�N$�vmD����%�
=8����\�',��l�mD���hRrT�Q
w�� ����r���{Cu��GM!T�l7���5�����2���?�ss��1���I�\��9����>sa����G(�|�����U�,�O��_�H��*��{����_�x[��=�0�U+��?B���kV�3{�
{�Y'�r�7��������pf(�r�
_�������/�Kf�9i��~������e�������9D����+��Q
���!������V\\F�;�����G������D3�$k�����}�)�l��]��
�]a&fO�����i��f�$F�h��Q_-���AyC�9�r�Y1�1�C�_($��;{D���;�%�v��
�f0'2w(�K����f�D��h�J�CbV)%p��x;�I��I7y��%�p]N��9N���Hg#����E��,;�y���(oGs{
�7L*3���V�� �.��0��l�q��Y��~��l
)`��$�R;�AsQ�P��T�jF�a�)������)7U��!�����~�l����+[��m���u�je��d����2B�~�<'�����]�l��]���4X3����"���6�wL7J�E7�I|��q��b���v53�u2?���]��m7�L�5���;us*����6������r8���D���YS��*���W�_����a����k���W��21N\�J�#b��
M)��>@#���R���|����e����s�F0� �=8�o�����C���vD3��/a
��j&�r���rX5��_G�k
����7L����2yH�v�����`%������4b�����h��rw2:E�[�V��:�4���*$OE��u�K����2v)�W��Y�K�YA�l��{�lLL�>��,�+�l��P(��������6F�������4"���`��v�O�u���8�%��1F/$��S^����zi.�q�V&��e���WG �E�:fuz����^�f��#H|&\�}����p���0b���#�*qe����b6��!1�3t<]L2���")0���DA�(T���r:��d�`0+x���U
�zj M�z��h� ]��cR�VMe:�����Q����vj�Kzf�����������{;=�g�]#�;F�d�"`m�����b���ceO�����+3��FD���{^��c_vF<���+�}���v* YL��&Al$�!�,�Q��d!zz�;����k�����2�Z�0�i�0�5���K��nGh��7���x���7�ay$��T��+���1p��J�����^�"y� Z��@[;�hy@t��k��� !oc��4!�h�
Ed�����K�dSp��M��;-�1�hHyL�c����~$�#�)�jR����D��(L�C�N��c�!u����@6�
����
������K]�h u��dv
�k�F��$W�K^�����0m'�b�J�T�M��8/�M>�D�+��R�!lSG����d� Q3�J\�����Dm�|)>��I$�P1�*��
�����~_��D���L�5Q
��M��������$$��h�`���������$$"���UgbO���B�f$� iH���A�Ym[	V3U
Ti�`���bQ|!D1�Gf����[_����$��*�����)5a�L+U��dB����uF��������4�Q�d3�*+'gt�>���;S�4"��l`4��Iv�"��r^`���F:/���d1-�5�<��/1%d1-��3�0
P(iLDK�a��L5LJ��y�nYp��b3RO�-$a>���f�� ���$����b�]'�2����B�I9�����`�]�%(��XeGt�O�������n@&��X��8���{`������k��)S��!Q�1Vo<t[���<�����Z3�����E���S��$t�,I+V��+Q>V����-X��4:4����D}�X�m��m�J��X������\h5&Z��ji�.� _7��9
�MtX��h5���:
:���w��K�$5h?��u�!~0k(2��d(�f2Qc�C]�wP���+M3�|=�0��@����:�o@&,�����������:�o�&4��)79^�^e�����~�ev)�s�����9?w�\[������J��b����c�OK.�����)�YlH(A�
�n���*����������t6Vu�G~��J���x����x}O]����y�KD|�&Z,�;F�
#�}jd1��6!�&��lJ���Xa��zVeJQ���H���}H�0%v�xj��mN��3�1J0��O���C"�y-��I�����|U6����9�yH�0�S���O#��Z���Y��6��O��&��lA�rv]��	���@�$��@���*��<��<(�I�����4�����d[dU���O]|+���S�Y��Cb$�M�����*.��Hj<���F<%;�)%AB���e��*�^S���6��Z������3��|p_���P>�����f�$$������O�#��Z���B2�0g�S;����l�{ �r%�2a��R(����r���iQ���i��31�5�Y��f0���7��ts���D(�K!.��[��K�>\F���D�L7����xq\NBK:1UHF��v0u�����T�D ���0'��L���VB����������|M��\NBKB	���`��+N�]�I0W*�IP������`����_�<ar�����:�=��[HAH@0��x����#����R>��S��*��}��`s���HRB����VGA���l�Vk.�Z�i���{��-6��8\�	����V��Q�k�s�=�����(TiJ*AI.+(-h%���cu���A^�!(�qO��H��{F�m�A��av���f%C��ss��<���5UiBzf����z�W�c)�&*��*��Z6!}��J��	�}��L����H�������XK���n���r|w�d��ts�S��G�w@��%�x.(7D��(�-������h<$X�/�����(�p }�w�[�WH��DdU������<������x��xH_C�z������P�i�W",�u|u�Iv`5]���IK�I:t��I��z��@�CIJD[r���%�%'����9v����}�S����/qL��/��n�q��8�"v����[������hA�BJ�+�S��3V�)f�1;I?P��3��|��EK��8�O-�
H>���b��j�8�����5%S��G�D�C�a��=��4%S��G�>+�pPE��me�&���ZJ1!���A�$'���y�!q\�n�*�I�8�]��0����sk�4����m�I7�����,Y�/Z�j&�`�����7�����,�I��d�����v����5Q�l%�j���=s=�]�0:uI�%g��P-<���q��wP������Tef�'/����\<Dn*T�����|Q�i�?�	�����n}H��h�	q��%K	s:P?�9K��
���PX����iuL�&a��8���D�v�4��[_Q6����W2,o���7�U����o���������{����c��{��(Y<��`�?����mJ�~�Y�1XD���>^���������U�4Sr�jB$�j
0�F���=���b�~P����PrA�4n7),�h#��@>�4Bj�y�r���jX���8��A��"}�����?�h,L���M��'�-L#�/@.�h:ka���%��Z{���@�8��]�:�O�jLq�`����>�d���\���2��z��pMN���X��~:N4���*O�U�}������P�C�1��% � =&��1�i�	H��h����v,%r�c��Y�8)�z}���/	�l�:;�F' E���D�K@�q�H���$���h�&4�-B|��m<&��1��-����0���@3ZA��`�S��t<&y�x��l�$�OW�d&q<������\��P�h� �s�d+QB8VKE
�:�$�|�q�H��A=^�4h��	��O�����i$�
C|?�%	}��������>�g�����/�m�U����(��hwSH�a�f��<![V��{n�o f@�A\�a�V��<Q?���n���}����������lY��n����N��Xr�8#��+S�=7�w��)<����T!f������������%X�G�_�N9wW�x�������X��Y�0][��D� $hY��Xi�w#�a���!���H0�*�FDK��>��e��hD!���]$�PU�������P(
8}I�GO�B(�a������W���"�)p������������w��B�U�%��?,&P4�����,
��$!����O�������q7�X��]��e��i�����+�\K+EH60k,��b�y#]r�,�(T@�}��g��`���"��D�Na��iq�.\�{}!��i�Cq��S�1%��Q���Y���FD��+�~�����7s�BgqK�
�4����>.vP4�[BwqK"1IHD��[���]�b�/D�2
��-�D��;?��-!W���FD�����f�f�\qK3
�4d�-VP$����`���"��D$9nq�.\�{}!��I�3������6�b������7n#$�������)�4�u�*������b����na�^Kr5�!�u�����3����`��V�u�-���j�C��uD|�
I8 !��/fD��������\
q���aW�7����>����>���%�����\�)�/���
{kj�m�/(�QK.u��N�����J�� ��
�{�_E�r��r�I��*����t��'i�mv�}�y���r$���O�� y�<F�`6��7����R��g/�	��?�4�W!�C1��J9��i)����6AM��&� K5����c�HzWI��2�|�Y0)������Ls2HT�l�4��2E����u���=��M�9���iM(A�zAs��1�U;���)��R�������jg;^�+fk��N��M�dj��#��NL�L�e����d&�� �AUa��>�3�Z��4�Z-�HN0�V���u%O�����[
�m�u�	��Jo���*������T^),��}�6�:����&�r��HZWr-�J+�����s�FZ:Ti��{�Di�N���9w8���d�2��k)��F�
����=��>8�r|���_������q&��F�F����<�3*��~��Q���D�K�
0�}y�K$�
R�����yVY��V�'�����Co�;�?1��k2:^4i��-��g��h�@K��O��of�s���`�k�o�fr���2��#sU�����Q��bsU�V���m-���h��b������E/������x�Q�|�>��������M�d���B ]��=!���u����?4���T��N�*$)�#���`p�U�
�3�eI��N�*$��L����Apt��]-��DaPI�~������0<�Z�y�f��&7��+'�
��O�7)�7w�cd,�OE���;�[�;m.�O�z��dST!y)��u�e��jt�s;I]V�e�o�FRGf����@�Q��s=J� �����:	V��>y��2�;��zCa���V��v�U!��Km�� %�l�����j��%uA6O�����8����Q5���������{��v��#c&R7
�mw�M �_��M�
�D�_}|����,��8��B ����owqV�u���i�}�����}�O�C����[E[��Q��c�fOk�N|{����. m��I�J_*	���V���f2�8���oRIJ���l�"2I�q�	Mb;����JflU�M�Th@r�']�u�K7yV\W��s).����"j��J�yY������p(!�S��RPle�-E�i@��y����T��RLl�-�D�R:�6��?���U�S�jy��)�Qr���6N
z����|�6R��e���T�0$:��I��d�8#�_;%8�j��?�����+3�]��G�_��L|K�;�[������$���S��u�NmO�^`�.�������d,f���1�� �����c�#%]���=L�/��f).������G�����{��J��5gq�I����������P)�5sq)K��������������!$U6���kB�_��-��W8-���=�w�d�p�*e��X
i�Z�iB�f�<8�4�y�5���KM�5'��I~��)�E43������9j3�(T[b5�!+8SJfDe`�LP�)�V�*#��|����}�,����-q��d*d����L���a�M\�����d�z���8�"�~��K�����1g=5���8�"�~�k���rJ3tX\(�����
X@'_vf���8�]���o��*�7��F�	��3�"
�f�]�L��]�5��($!z���*>��&Px�XjN�B�	=SOJ���� L���,��F6FY�&�jHC"���I�B��Y�J\FY�ZRIJ�C�.V�F�N!���:_V�6����F5#VC�U"+W�L��@�l�e�Q������N����>��a�~�a�������	&r�+��)��C�zJIB�lD��I����2�W�lh#ejB��2$0�wlZ���2Y	�D��z�ld{z��5�x��6e�/��sKb5�aOo&Yf��q#.��z�e���Z�!
��D��P�p
��g_p^���UC����v��	�gf_	^���UC�jE��m��l>b������$�TO*I	��C�����u�N�=h�*�d�O��]���t���b#uVLs
��Vn����|��f{x��o�e?
9���8:}FLK)�\6�b���u}�GPV�"B��������\z!]������]�I=�j)�!HH�g�6��|��G%�<9���x��zR	JT�L`���c�����������y��Z	�J]�a [�^�W�cff�l�\Jg�3����f)3+�`q�h~I}�[+U�YYK7A��^�DE���XT��ZU-�YHT���
w�Y���]�tQQ��M��"�~ot�&����3C4���L��9�
�+}���l��iwK7��b$��]���o6����7�����_�������{����c��{��(Y<��`�?��]���$�����E��_��u6������v��#Y��)��@�\)+��H��X(�� ��v[��K0q�I�uR�h���'����Ra<j]:<�0~]W7�	+Z\
���� ����	��5'��p�I��d�!`�EZ�]>�)s0V�����uc3�:���������m�U7v2�I���ml0.9�f��~�nl"��E����6����'���u����]�Y��8��r��l�!H��F��~�"��Y�`�s�Jx����W�5�A���JN&��?=�����O�o~�@��C��?�cE�����O��F'1�d�!B�
��G��H��0O�H�����n�nlbf����f��m8��R���p9��[���������6��3?Nz������������6����Z�*���������tT	I�m��Mq����1�������h�=AT���`�]��x6[V�2���k���'-�aP��1�q�J|����`=HX3��,)�@n������(OzFr��UB���<qI�6\�>x3�+�����T,����d
���:~��	����OM;��1
q�_�R�J3�8�`��3�l�:��FmxJ��3��-������b�����@�R�n35�[p��yi6!�q�?R�������I����J�U,}��
�9bt���*������VR1��4�����;�?F<0�g
t�L��2��,u���2�VX��h���o�<�J�r��U�_����=��1����"Q��G��r.���H%@�?��/�l$fB��u������E�����5k�4w����������S�e�_�yJTU����/������S�/��%�.K�+�u����2LI����h�Q�J8#��������b\�Pp�����
B��@o�GBK��|t�H&�@�-�mI��������C�n�c@C^�����������8l��6 F`�����W�dA�W�.���F������H�LG�u�tcys��D�ph�Z��+�`N���N����@,V��S���lM)A�Q�. ������K�n�lL&�V���Z,�nm��f���KF��[^ZX���0��de���<mI�C�
�&�9���*�jP|�T���A|O��s�Ji��v�FL:���$�=���PM>��6���=@P�O��$G�yJ�Q�j���S���N���+��YK�#��x��rn�����G�g��%�5��(�}n�f���)i6��Y(7i���!�1�����C��Y[J	���O����0;3r%��������4s,��Y;��I�Px���j&�R�r%���J��5��43����X�N��+WL�	������-���@����fbI���4�e#�p�	���u��{���@����T�	�B{����Y�q����-k�|���7�*�:i��M@|t*if�]*�4 �M���N�u`y���7��:x�?��������!�>�����P���,��{����l�]��N��^����* ���B�+��c��I�M��%{Z����tM�vH'������']G�:�,���`�����>�D7�3�H���?���(��"��1~�83��vH'��2��#F�
x�J�Y�F���B �i#q�:��f�����S8\��������V�������D��[>����h�~z�%��:{v��:�/H.B��1C��������w�*'jl�kH���}�y����Q��Q���X�dCL�Z���k1�I�A��rT��>��Z�����5.������(��>*K���������%�w���
1k<�l��@�������@�K�j��'m��Q�"F�����<�~�c�!���R�m'x�_ �xHm����r:�>���m�]���t�r����po@��
P�e�=W��&|�-����0��:�V�*3�Ll���sm�I�P�f���g�uh+"�����D��5q;�����@������D���rVY�x�[��Q��2�6L&����0��d���.�iI�p���W�b��'�a�s���� �,�X��NX������2o������7rij��d��g����������3d�	���@�-�NY����O5�k�:���j�H�!N����9IeYPwb�IWI"��C(��Y��J��C�����C��G�rC����)����^���nl��Y!k�R���X��yJ�����V>���T�,�8�<���
X�x����te4N�5���|zT��$U���p�.����v��G�:��PZ<��X�%��"����eDc��5�� �0�c��Yl���.	�k��(�p~�|�9IQ��\�c��C�c��Q%�1 ��I�8�%�Cj7�H��l�@�O�������I�7y�J��,9?�����������!�|@�<b&�\�2����64S��{�w>��'�$Kt��������j1u�@B)p��bi�ON�s�!���d�_Fmy��Ee���3�K�R��1�2Yn��*��7�$w�EP�/��a�����������v��W/��/6wX�/_�.W�9�O���^S�.���*��������I��m�=��3�����&c��}�n����bK���� �CN�tChN.� ��`Xkn�#���+�t��e
������z�w`':��8���=mpj)�v�@X=:f�+�{��������
|���C<�[c%:�6P������Q�T�kg&�|�qapYc0:
�r�TE�u,��`%(�����>��A��_u��0��)��n�y|��y�I��h�P0��
O/7��nm����g����3��3f���!0��@A%��.���0�/�
��N�"!
`��V�_��g����Rg��2�7��b�N��:�M�?�s�.�{i��8�� |�����9�k���s��{��B��l�=�������D����)@����r�i�}����o����8���d�c���~c����6TBA�����#����%��uRU9�*l����<�#��X(w��K�����������v���������
|�
�&^m~��6�~�?��O�%����B%S���:9����"�
��_k������	��a��T����o-w-�t��B7����, ���vI�k����$����`)�E]/�Z<�n-��n�o)�%��G)�]��h�
�&N~�c�w��dW��>"f�j�Ul�Fb%[)����L����x�����?m%C����d����d7Sm�nV���N���Szw�dSTa�)W!IU���i�A8;���v=�.x��=��.Ej�����L?��9�{�������P6���
Io2���$S�@�tf�s�qr�v
��HC���~�X���iFX>��Dv)������K���u�n���CP>�����5�����?�M^����)�vC���`n�����I)��PAyJZ9�H��T"���k���{��=�b��*��>��Wv�\FG����#�N��l�]�Z����?�z��{N�����9��Bn������j��r�����n���r���D�E��w~�L��t�V�{�'8u���0,4�L~�����J5(u�1����?_9K�����C[�5�a��� a�\�k�av���et'��.$,et��F:�4����������,�j(t�����Gp�!����"
(8����;�t@k��I������8�u�����v��D\�T�D`�L�'"����U�m��Q���2.����\�r X.M�T� R C%��>=A�
Z-��U�i��r�,�l��W�� �(@�2T�/2�W�3G>������\L\��,�}��y���������O���_P���z�d*��O����\L�/��e��b��g�d����/D�s%������b�6n���{gM�T�@4�v]N&Q������L�TO�J����r���^NVV�LN�d�T�O#+]RFdkI��
�����R�4j��/���^N\��L�
,�n}��uk9������R��4��>Q`�$VL�Dc2U*����O�y}s9���,_I�t YMa���f.���	�b�����x�@��Qy�r"��.ri������6�P5��h4=?� k|�mu�2j�c XG�<���ga������m��6���J�B�XS�9i7[W!9��m������b	����&�
������������]+�����@�������r�eu\�V��*��a|���*��[�j�f�b��d�:�]'���j\�{�3��yn$N>���R$�S��b����EM���freS�f������ ^����_��qg�)����-+�\�%7����*]X�ce�e'��J;#��:�ncjK��8����A�����9q�]>�
sS[r5�a�����6&kn�����kcjK*AL�u����n+g����L��T���`N~��.��d,.m�X�(�������d\q������B�j^��+��
w;4�5���ZK�V����������wA�ay��x��)k�E�(\��3�+�G5���v�C�'�����Oe?��A�(�������'�"6:9a�L;��V!G+�|$n���#���>u���������7�vce&X�1�=o�N�������8ky7�{�����v��@���=S��nC4���Tt�S��^�v�u���Cr�M@d\�*��������!��Y��V�{�����t���]�3�A_���Y&�,�q����=N������xZ>3������*�����5�U����{�U�&����EL��BZ�^�KK�r�9�X>3R>���*'���m��t�c���I�Ps3S���0�����L�h��#����'(������^/;#x�#0����#v:N��|t��M<����%h��^��j��d��MGv�1��!.Ec�\|`s�8�\�9��lb��
L��s�F:Ar�m��#����h�!.Mc�_�=1����<MG�(@������������b��3tSda��SrR5�J�F^L����R� 	Mz���$k.  �lM{�T�5o�{�c��	~�<������`���nvI��7����Q�|����e,�}�����+*$�u�c���[�AO
x�q��f��kn��"&��%u��H7�6�#�����@S\!$�c�G����G>:����& ,4�>q	{��J�c�:����. B��B�9�L�*z��vd����Nl"C�����g/U�S�J�:����.* �
r�fy;�x�����o�|3�����/���-�i�s�B|w��������N7����'�����������`&�#��������?���2��VW�<�[A����{`��eP���I�l�iL����r���Q��[ �k&/��3��zxh�I�:�S����B���|����{`������>o���w��B6e��V�v�|��0�W���:��v�?2�>^��3�,��.��)���O:pNIq�|�d�g�\����d�"E�S�H�9�4�����������2&�"�L��X����H�x	�+t�[BI�"�c�r�0��Iv�<��Q���J�&,��P�v����	(�nW�e���RkRI���`YL�/&����n0�e���=.��!Sa�hK'A���1�P=�hh&GR�'RPV�,�}�"s���e�|��o�����!Z�������s�}�����o�����=F��!�K���)]��f�G�R�W��:�^`��O���J����},��Ojn�x�c��yM�V���z��B�@_�v��"+��!b�O:�tx��|M�|�c��H>aE��!P&�������������A�z�I�>qmfQ��\���w���!D����73-P��d�mf���_��������{��	H����.��s���.@2���1�58�HA��l��o�-���������_�{�����E�����A����Of3���Tr��\��0�������)%d��?=.�OVWl6�g}�v�4�
LFrG{T�xf�j���8�L���o��"y�%��{�a$Q;���F:��M=���m8I|X'#��?r�m7HW����m�K�YV�s�mGHW�Q"~�G����^Plu���m@tth�GM{%�1��v�te(RK������� ?u�\�c�M�rrI���D�4�`�y~��X�[�J��D4�)��t��v���:y�6X�K)����PB��\�8,7�u�]>/o������������K�����l�����q}��|�J�l#�q ��UB=�62~����u���������
j��%��/��Q�`u����f�Y=��z�VO���q%4���m������M����/��La���'
H�Fc�����hJ��S5V�Y&N��&
�&��!O��8���s��C����#�L���St6�L����>�'%%����y�TM��u�
���	��>Lj���X��.S6��H�����	Z�'�O�������-x�`2L^��9CG�4�cuw��j����q��R�.,����f�v\8?#�0OG7�
YXZRZ����i�u�Qr��{r;?�-��{;�}��R�.,��
1����Y�^h��Y�!IXJ�����2}c�Z)�
)�/hm/�|��v�
M2���"��CR+���q��a����f��WA�L5,6�E��5������
�Ry6ZH*����A����d�3�i *��Mh��c(S�n���z:�Q�*�d���i i(���a�YO��\S�:i>��8�X9s��!��CU>6�����A� M�w
��v8V����5�?�u���:�a&M���a�m){����d=E��M�	���\M�M��St��s���!���@8�?�f#q�<E7Kltu.�v����|$���=��,���@��������5S��iO=Q.���X��������5o�c�RU�s~8��]@�t�|�������|wP@�G����!LeNA����dH}��w>|<�hY|�n
S�����SZJ$
n	�*+���X��*���V��pz��-"�q!|T�-��):Y�9�$�J6���,�,����t��4�p�6�O?���Wm�����nU�)����Q<��D�������$�B	���
�o��C#Wl9K��+>�X����7�JW�� W�
X9&Y�/I�����[����yA�%I��WJ9�&��I6��h�2,YH�M�}:2���K�$����&D�>
���x�II�A�%[���c����� C� .`RRv�a�Y�<��+�8���%���}Ir6��
34���`Lp3d��lI$"	�0��$�M���s�������F�",#�I`s�-'���������HD�������L�������%X��gJ�G^3&�T\{`'���Uy=��lH�B��F4�Z/��������6��Q>��GJG�O�z���R���\�\>];"IH��}RLr|:K�#w�%L>];U�����(}:KN�o��x����#���EH����g�����OWG�B��n��� �LPl>]3
�h�f����\����k!�����|:l(puE��B9���\�\>];"IX������������O��F�",#:� ��������2�p�t��D$ay���>�y}�����V�A�����>��/k%(6���
X4t�A�O�R6L>]�P>��}��u��l�������kO[�|�������3�O�&���K	��l���k��
P/%�h���c���X���n��.&�34�$!!���		���YC!]��s�f�$,�~���~��S�����Eke�����CG�/��(���P�#�Z�����`F`6���3�����>g��:yDn
��:yl9H����9����I6=/�u������0�s�3:�:'�~����c+q����
[O����01!^�zFt�Z���x�t��=-�u��r��T�[����r�7��a� ey;�x�����o�|3��������7��z��{���(Y<�� �Y���t���kw�vIaC�r���j������}��8G�����P�p�nR�gG����� �5��5���|��vb!��)�"#�M���t��.�iF�JB�9�fL���q�����|�Ee���!����^E�R�?Vs�%s��K#��#D
���'�`%�*8��`����p�!4� �d�Z��v��D����SM���������S��T���'�:����!1�������4c��:����[yy�,���N|�X�8A���@��COIWP����+�r���+�O�������3db1�|��+�u�?=�=��qi#?t��
�-XH��	�����{U�
��D����C��'����������Y ���VQ��d_��x�����m�[��'��Qp�~nO�|��{��`�7��������
G*{�'5��A����[�O��(I��fKvuo' # 5��o_��NA����a0khx�W���b5�����"�`�^�1���W���2���BI�@B��Jvk8��K(����(Jh|-��<�~o��<=�c��8���l�9q�S:�M!�@o��C\�z�����}��m�����ky.m8My�!�0��v��tlC:}�/�
�����Z�:�e:��"�����Y&(4������ft<��T���Rq����Su����\�a~o��ct1 F���U��c��0/Y����n��+7
�a2�U��`r|��\g����t��Y`����s0R=�����Z�rVviW �������%J(�//���9Ed;���v l�����.Q�Y|}1w�}������������.��-��#��Z��,��]����z�EG>S�c:��@�B��V��U�#x?,3,�~��L��P�
tlv�����+N�P6��X1��1��}A����FAf��RXh�
4��6�!�P�������b]�B�����:
�q�:�E��(�@�u���)�����������:���.���C�o������S�n P�r!|&SA'����Y�d�}�r�1�<�"�l�BLtSpu�V7q��]A�����EA-xK���,9�!�WD�
�r�a�o���.aN�V�����;���bE�Xd{�O�!o�-�kR�����	%�Qn��LmYJMo��*a�eb�����y���{6S���f=����?��
������K������2��1P�Ab��z�(����<�S~���e���mB�I���[{�R���6����P���kZFC���*f���I��2��6��N�D�����#)r�����hH��������u���Mwb*{^�<hC���urWA��+{����@�\���3��p�T�e�b"�Q|�i_������ �@�e�d"R|�5L�\	^'7�#>��g1q�W|�i�/���^�hj��ESDhk��Uz���C�Q_q�s�!
������S`4e�k�F�gu:���]A�
OY��=w�b�j\W�t.;��3��p�����){S������\h�C'wA�/M�3�J��X�y�e�;trS90{,0��g1q�\&�tG@NG=th/����f�
k����r�_����������}C�hiIW���B�9TD7\�{��
��y�]�B(Z�&�@��BdFa�����>��%#�=�4�^�n���_S��h�tI���:�^���������~�L,�a��H%�S� Q�����P��~�P,��PQ��/K���F�w����?����c�@�����Y���
��zq�������]��3��.z\�����L`�y�n�������*7��{���Gz/��.����a�@���~�D!����:7�+�������E
���s�.G�}�������P����E���yH����������*��s���'��Ql�oO"?��kD���'r~q�)nnQUQK������QQo7����7�/}P��W�Uw)��}�[��w}\i�u�����%��=�q�ew)��|�[�Y�J7�hs?9�#{���Q�/���*���o�
T�zu �e�/�}0X�,�w�����:����!��S�n}�I�I1pey;�x�����o�|3�����������}������IT���k)'U�g5'�b�����m�-+2��1��Q�A��#.�����!��o������~P!s�$������6�>�Zr��2'f^���a'N���	
@��5�'�d�n>i��]n\�O|���#�8�����=�&O��d�t��l�m�j�{��x1�� un��e�������j)�y;���������8�����c�KE"�J���,cM����W��������NL2��x���x���A:)K2��I�)����cy���������3�}�7Nj���1�>��!��`�y�o�@�S�j��8U�L�������e����Qbp�o��H7z���	�����9G��zNZ!��8x��W�������o9P�^v��v>J!�Z�Vg��F���X��)hI<#��Z���<CVX���$��P��a-���f�Q�s�Ic:5����baT�q�������.Bk�9i�8��@�M�s���6���F��Qp�����&���1N�x�%�m�<8S:1UXv�Z��3�'Tx�3���v��CG�5�Z�a����\-qX��ZIvCMB��A���y�:S�&�����t_t@/����qOp]��M/[��%K�>���4s'��Z��Ot���H�%K�>Y%N7	������k��3igk�k����O:uA?�!G�T�$�\}(k)`u,'D�	}&�e|�L��,��D�@�������L��B@P�2(x�\�=S�!��,���8��� �9}�!�h��T�Y�����OO���YA������T�p6B������^}�P=��2�V$�9!���������!em�H�1C�U����+v�! �r�6l$fH�&j3g�J�Y�7wb�/�n�SbB��r�yzO��i�e'�q�v�C����w]���rn����& >:t�M�c�K�T�������D�l���}�*P���@%%���L���� ����'_p�z���
B�V��{�'��|t��&�@v������O�����nC���C|������O�!W��-��FW�6��>�I���
]:�
��/m�����b"t�td&�<�q�~"fH�����i`������K��Fg`/8(E���e�~z��r���_Th9�U�g5��	�������������A|@�//�l�E�S:B��9��rI��&]\H�����y0
�������.��6/H'[��
�<U��9O�]��E� ����=j��j�A�r��.l�6W�#[pG'�T��q��M�aJjn���!("�l�&��X�@��C������F��A�x�~���s�H#8��HW���qR�}wZ��0�%�	�:��te#'�o�tMz��D0��^�P�9�n��b�VyI��F|�K�bN�It�&B�K�i#��1:�.���G��F TB-T��@Z���0��&��6
��}@|��,��q��zz�`x����������"XC�<
��RB��(Y<��Wi��0�
&>��g�$�y�����T%��X?��b��c2���b�Ig��fz�zV�Q����B���)P83��e]+v�����kG���@������"Qa�fc��
F[��a;���E5�3��	���`7���x��}������������.�Op���]���N��DN5'.�r�1j�>��b�i�����^����Tn�i�*5-�zx�)=3m�V�Aj�o�lu����> P����`+�#5F��%[]��;�
����W�}��63}�b�Y{z�$3]�5Z��^e��-�V��`Y�,��w����!�{Qmv6���ZK*%�,Y����AY����J����mv�>�cp��wO�E�+�}���~�������6L,�IvM��7��b>��"UT�z=J�R�����)#6�(y����
���h���?%�e��'�D��
�	�V�4R����[PN�$6C�����n�j��_V�rf���iwk��4#|���B�����+��0��
�U���[�.�f�'�UL��,��8��_���D��v���,oF6UP���J�HG��X�G����������8�r���fw����m�[�7��j�l�g���������*���_���f��?�o��\j>�3�L�gu���T#}��j,�P^�n \`FM\�
�����*����L<��������Z
i��-�<�UA�C�);�����n�������lf���;&�C����s��������-i�\j��QW�Z:)��m@���F��p�R�~��(�����Jwcyht�!�_lv�x���A����R\,o�'����T�� J{���ov�r}������q��nEE��A��5q��1��b�?8
�.�)"���cq��{���P�`)G���p�r{��iQ��&��"}��(
~�FG`���}�5���Y"�Hj"���������7��<(�C�����Ak���6��F���������N:��	.��)��/T��n�YR�N��|��=:y:|+��8b�rwzV��bW
��S�d����d����~'O6&����F7��i� ���`����o��^}����o_������6�&�d�S��`5
'��<-��w13:������^}�E���6 ��J��P��^�:J�o�h\���{�����h�>Eh#�)�`���3Y+��}e���41�����6|':�Ja�|o�h�s&9D��	9o���w���^E��9���-Q}�n�L�G1(��9~��	��T�jP�[�����^��YF����_��.�x�}�w)��4>��t`�g"O#���y������]��6����j��t.�jI����r9�4�+�$D��	$�=9 ��7*T��U���!����:�T9����7�9�Y��:����p�����t>m��|�	P�\n���v�!hu�����Du�)^��m��t-�g�rZ��&�����;j����Cm�<C���������Q8)�B���91�[S�GwI���hTsz1��QK�!Lj��������,�Wgb>���1���O��fa>c�0�B���|K���E����|�-3�,��lv�3;�M"�.�J=���T��<���_�sqw�|~���^��0��9�d�8�����E���z�!��_���a�}�����7��|��\�8,�!����]���b�l��15������02���Vi%HQE5��Q-�������`Db��u���������.H��$��������Q7���~p��W����`��K��+�/��v</v<?��B�T��1�Zj����D� �CIO����#�����mDh'�P=v����8���v�� K�N�\�#��,�/�����#���WO��@p��@�K
s��uD��	�r�D�����n�2 ��/��!�F��"�\?�"�~�G4$Xje��]��l�6���@�����E99+��J�T�L-���Bk5��DM�P]O�*���'M��HWu0�������	���[��XO�*��k&����!O��������3DaM�c��n+��@��"��jAr
EH�:K*�{5���6��_�}�*��8��=7�]X�?��`���^��z��D{gc��.x��l��YG���g�B���vk�������bWPp�C�h����a]��Z�� B�WZ`��=qs���
�[���@3FL/�=���pH�S�7�vb�0bz��J���T:����x��D���n�-���%��KUT�������D�rt%�9���Dp���:�w��� ���NCk��LcK�7���'�P�0W�S�!��/�T^��R��rs�1x/��^�nK8]P��B6ZjE|�kXM30��<Ow�"it5ks�9���u��j�	|_H����R\H�����H
�[�>��E����^@U�Qtu	d���@0������M�g�S�Za��e�6�R�`I���6^����T�HSQ�`P�d����$V)Pe3P���.������+�����4`�S:W�"E@Lu()v�����$�gB	�8�GG�b��\|P�����S�0E�I�����F�����eD_�w�/�����6�2�fE�������f{=.W�t%���o�.�O�>��h:
����`M� %x<����fo��_|a���/����$�����/���&O���#���asx|P������>Y>�����P��S�Y�����ybHd^#���ry��q�!p��@��
���x�p�f����qqD1/�/o�~;����^����W������6���WG[ 4�������wV��.���m��G1D27�5�#�����_��b��$�r�\�bfF�[$h�<�|T9�E�������`�������q1[������I���w�M���pZSh�Cf
��c
���w�����w����_6���1���C��SY���H�N��yY����Lc��	2��
X������_�������X��~��/��1�_���{�2���������G�����
�fy��}���x����ClV_��44��T��ezu_\�V���9����!�f��}�:a^�{���V�A���-W�{0����iW��M
��������� *g*�>���{�����f�8c�qq�fMP�r��:���:C����s�H6?V��RC����W(��3���n�p��3�V�W?W��47�����,}"�����hc��?w{)W�{0t�x�������iK��J�3�����]����R+���q���-����V*��M��Ih���F�t7�5�c
���h��8��>�qh�����.iJ�)�������?�~�����FI�����[����
�r-vw8�r�?�=x���H��u��d���Ja�����{����3�	���jW�[0��1�%��W)�L
a���:�I�g���w���R�q��Y�K�Z�L+K��s�^��4�l���[*�/�T���N>_g���5=�w�A2x�����	u/�T������d#���vF��2���*��)u|^z�y��0��8���6^`�Y��H5�c�H���b��2����v����.S<�d�qy�
I.��C��E����D���������V���3�B���]]M��#����~��;�*�c5�u��4���
hB�J�~b��hW��F\��iWW��b�q��>�o@t��,�t�y���;�m�&��+�����������K����N�RRa���*�3]����%y�"�ryL��b�P�<��o���RX��J�pbZ��������&�Bk����Y}��/��j�>h�����S=�D>?\����������/z�1�~y�
���ap�+CuZSh�t2S�_Sh���RX�<��T+�C`%�v}L#�����]vMh���ZH/
FSU�������c��$2{�2�6���SM�SM��X,7t�IV���%�!�JE1�{��{0���E�U��9��z�{L�jy��9��[0��v�8uN0z
���fD�@��L���e��sr��`jM�.���j��Jb����9��5�bS�p<vN3�"L5����SM�Smj��m:��&^�R���j`�
s)����6���I���s�T����`��
�����0�M��C=���7z����4>�e<�zzM��eu�E+�M�nS+�U������85��J�����i&���Z�)�s���`Kg�
�����s��0�M-���9��{0�������p�G�y���@�[�����1}���guQ���,�� ��n��bw����p�����?�)�`�0`W�Q;����|p����~8�8�C6������o~���`6����zC��/��I��Hq�Z���;<�H��+�W�M8��x������m~����+�=5���v��>KR����������X��������_�����6��>Y��O�w�O��n�(K���>N�����&Y�����6�E�U\�������{��dDO��5}E�a[���xN�e��������
��V�'���j5/��qsK� ��@O�g���~M
?�������-6���=~�bU}v��5\r�/E�|bs��]ev��X�����[iA�yJ<����*zK��Bu�FXk������D9�5�N�:��zk��ZO:c��h��u����������T�jo��c��hkv{}Z��`O�
�f ��e���vk��]��U00��\��ZO�Xk�:{�7��1�G���4��>�ie�����<��������u�PW����rICC=;c�
|�������>B]��
�iM+C=C��7j��^���j���w�PW����rICH��jx����P_�P�P��inC}Z��P�LBg�f�.�F��v�.�k	F|W6y����O/��:�~�(wa��+[st��I�H���7�n>����a�=8c�
���+�����>B]���aC�.M6������V\��q=���V�������{��3� �}x�7����1�G��7������!>��A�����|�w�	���O6��g�6��L�
&��e-�:N}'0���||�������~�V�G�%���
v%8�mj�{�l"vo����l:������t
Q��^��KF� iHx�3H{w�:9�����OkZ�X0�
JP�����n1���
�}X��g�o��'��������}S�[�h�y32(>y�M�kDw���=��~��D�i�����&�Z&Z^��{~����F7#����7��������^43�g�mF&}��D_�D���Y���E+�zmF�$���
��z����F�`7\��9����AII�^o��b�K��8�W�1�)�T����g����[8��p&G������g+^$�K������+���yB����������n�<��x��x�xV����|Ix���<����i t"3��%��9g�������|<���s��\.��9�T<�&u����9�B��0��\��v�x�x��
��B#���7h<��Nto����A ���>�s�.�D�9{�����F<3�g�D�9�1���
xB�X��s�d;<��R�<%�I=���i �������9g���G�y�����@h�����3�����
p�2I�SX�s�,���;;�Y��;��Y����wbG�$��`?����>���@h`D4Cu��	q����[h�g�N<�����;{���x^ 40���Z��3q�����g�g�N<;��pF�qd��l�cv�C~�p��E�4 ��f9dE�]�������p����p�^��=�3��{�_��h���ds�q7���I5��%a9����u���>~�Q&�����Z��9�c�i]�
j|b�G����Ue2���
��3�p]>T�vVx�m��P-�������2U7��&Nh�Wy[�Q��!��jK[�C5�����}�@=�����e�����.������5Q���c}��5r5}��XC]�����7_�t�S����.|�����c=���rI��SxM��)��w���m�����:�d����?��#����6�����~�C��~��j�������qU���,6$[t��������|�y|���s?��TT�>:�SQ5�`B?�������t�����^�������I=��X�sOK%����"�����~/�=�/o�����h�����m�M��#�o=�]��Pw����'\���a}���r����.�4x����~����t��=x��..����*N��y�|2�)E�.NQ��m����n�u'�9�K�-MC�����2��?����� ���+����I[�+���*�*��4}^�T�_}m�k�^3�"~�X��
xT�n��d���R��Q����R�F�P�3^g�� t0)\���M�G�ai�=�^{��h������;�x��o�m�����X(��WA���,�����jk
9p�	<����Q���+J}�BS�Qx�G�
G�U���A<�B�����	�*R���xe��d��S�{W�G�B7�.���z}�b�R>Y��4��>K��d�`]��T���{�����9R�{w�35H"�|v�7��9�����(v
f��W�k��&�������6�T��"�8��?�S�������Z+�IE�����j,��J��
�����(WiG9�^���P��6�'����Q��c�J{~-<�����z��>>��h���E��i�}�����^I����f�~�l����0v���� ����0*�&$���G8rlb�X���x���c�c`�����[b���<�k?���o2�]��$�W�iQ3|��WB�&���k},y�X��yi�fiPY�&��8��m�
\��{o�][n:+.�r80A�����Yo�n�I����l_�l�;��x��v��KEC8y��I���m�F�;#��p��G�5M���yb�����+m�se8���h��a������r4�f;���@v�6���$`#�]��NZl���E�7�W2�23���������'6��4r��V�����,hPpB�\��(2�E~�wD{L[c����rIF$O4H���Gr�������Z$e���!�U$;(	a.t
������M�H� y�o�W�6y�� ����U$���+^?y@t�$y���������-U@�Z�t\����C�W��w8<��O�`��aYFTt��-�<�=��+�`��q]F`�����<�=�4(X�}\���Ya�.������fN�Ue�3qD�Y��7�����GLH>�hc"�A�fo���<���dy���`>,j�g\A:��.�u�<�/�X+�0��`LK��Z������f���
�]�XlS�.���k���~�����d�jd0��iM76
a#�{i�~���v��1�A�QM�_�1$:��x������/m=��@�7��	��5
��M5�����-����>�c2n���5�)}��j[��y��4�!O�z@_��T"�C~@�����M����}�����f�<(�th"Y�}<����@h`t9M�D�<S���~[:��Zh���rI�h����[�B��f4i�GD�M�E����Fh�t9\��?����X 4p��\��`����8>P!�"���J��@�zPH�����r�|�@�@Fp`r�&�5'������4;����q�4'�)�<��EFp�t-�5�,2}8�@��Zt��a# ����	`�O|���� �7���&�K��^��B���?��\������bk���FZszL_��D��|���2`z@y�c�0~�C#�cZ��f�yZ���kZQB�io��v�������Qo��v�A�3G�(m�����/��v�j�>s���v�>#}����U;����������q��wz;]��zb9zi;��!���N���;���B�iM�o��v�=�i�>�N��}]������+;�;G���vz�����pd�'�sD��r�R<���E���0�>Ot���W*+j�]�k�|��vYwn��V�]��e�W�m+�]��z,{�\��.:����������{����&o9[�'���G�o�Z 40Z�&(>�|5���=�����p���m�L;���������q�����&����8������Ks�����+Q<��w���9����z�S]���{��s=K ���T�>�@������P��"~�c���O!�B��8������;�+������Lt��?��%�|hf�+��L��e�7���-����{?�^~B�5��Em��/8��L�����o�I�\{H{H/hP0���.#��C��]���c�>�Qm��"!}X����_���s���������`�uea>l������v��nn�X0���2#��s��m��
������C��'����8p<��?t������8J��m��f�J��I�w�~�K�"�W b<�!e�����/�b�o������d�s�
l�~�����p"��
L��k�>g���&�2�����<y3��lW�}R��/q������$�� �Ob~/|�m������j)
0\���:�����Oq�l���x�CV���t���`����
A?!,���O��o��!{��E�f���x��"��6Q2���S_gRF���{�&�W5�m
����a�o�m��_�����(�`E���>9fh��&R��{��2��G�V�O���UV]��`��@M$��W�O�*���<UW�5��S���e��V0�<���('�������RzD+�o?eeQND};���=�/�����#X��/j�f�d�c�xKtS
�C�C��V,�r���p���Q9���r������t��G��7�n�zaH@?{,�1��U��
KS
�E	d������)dS,$�lt�/~�c����UX�"�\��5��s��c&�s�?��G�G>@>�+�O+��>D?=~�����,��U�P]������W��7=u-��u�_z��D����
���q�,��s�:����r�_!A-�Fj��Fj��F��m�F�o��S���H]�FJ��V���65R��;��Nu��F�ulH���i �Nj���j�*��,j����HyP��vR#5mV#ejb[�*_#�1�`�E���Q��	���l�/�����V\5R�F5R�{:D�d�r���P}��F
�#���V���Hy(/(<�b�Y��90g�kW#5�5R����)��wU#5�����0�3|N���<�������^��
�����
^m8-m��#�q|��hp���k@cTWE���E�&�*<�7*���A�|
������u���'�3W��~������wLV���!�	�p]3`����c��G��(y�����9�\s���V�&|s� �Y}����T�i������;6w���m�l�u���������"�6�Uz�|W����rI��;l�LvO�E�u��`<�-�q�q\?.����������<G��#}/}���y��`~X������*k�/�����P_��
���*����n���h��>�V|���}����b�>�����:;&�`=�����z���~X�-��e�y'����;�����`�+=���5���``\>��`b���v����/79b�������p%O�����v����2�����x������X��@����\�1�����J	l�?+%���6�OX�B�aE.x��?)A��.O����eQ����� ���+y_����x�D��h�S�� !����^���{/e"�������^)�����{_h��F��,[W��N����$�e�����O����,�vX��>�h��������;Ih��h���NLZ-���v�O���7/_>�8��8��6��.ee���4\E>����\��f�,c?t�}�l�'e�����
 �p^]a|Oc���O�]�����.���v����6��L^&�N^�>�%"��W��_���W�H4�
 ��]]���W�4!
8<���7�W2��.�Q��6��3$���[�8f��%�n�O����	�����d��>�	a�����b�XXf�\.��ex�IzI���{�V��v�Z?��Z#H�A����{=���{
O/�A��+9��f�`Lp����=�8'���7_�a�r�X���6�)ee]���c�K!��G9�$;�?��5=�
}�EWTJP"�1$�
z����^�R��c���n���6�es�R��?$������w5wgzM�OE��_�c<����db�
�h�?�N����=�<B���2_u�-ea����Q/xx�Gy;�Gwt3_
Q]�
�Zt�>�l�Gwt�x�)�U���8�<���������	�����8�<���L<����3Y��L�{�*������n'��w�n���C>��L�����Z�u�9�Y�2"�3/�9�n��9���n�M�]^�s&�
��s&�U��{�����L<�t3�L���A7qVyT)��xt+���g��3���8�<��G�G�b����#g�A7qVY�o�������d�"�d	Xp�V����,������->F�������7\��d�������[��yv�|]F`G���V����\��|n
��>.�����7qbY}�?��`���|���vv���f���N����-���yf�������;��Z�	�'��&P3��x�S����q�;q�	�����������q<�;q�y��'�� ��,	z���4c��C�����L�����������-Z����Q�QOB����\�~~~���T��1��>�}�-S�����r����U6w����x6����V���8���8[��jE�P��H8�~x3��r��p_t%����/~����������'�*&�����f����F+�F|���8o��4��
w��u�����
"�o�q�� ?r
�tz�g����������8&0���|Q<8EXh����is���m�����z��+dUP���|X����#�TK=%����]�rE�k�%(xq],��k�4��.����
k��|��r��8�9~��>���{�OuUNP�n���C�Y_��@�u�
(8a}\�
��������g�q�p���>.��k����.�Y{X��v�YV�5��v�0x���Z�Ax��U����8W,�x��y�j��\P�5+�������8b,���3=�!���2+��������bzhCh37aVu�������yh+�va�9��4���8��bmm�n���n��=w�M��
�]Xm�F��&G2��?��5���{�>u�#�r�H����L{�s$��.r$S����SH�#����v�#�r�H4���E����mV�#G����<r�s$��.r$S���������xh+�va�9r$hCp��}��Z@��:��Y�$�*�?
�����`�>}f3��AO���'�
������O���AO��(�
��T���P4��7J��G��n'�����@���r��(�*�����$R4��Z}&��������7!�������k�	��RM���LY�r�6�AO�F�s&�
�������h��=���9�*��T����h��=���9��Nl7W�	�n�	����xt��vR{���C���;����n�n'�����;�8y� ��i�S*����M
��m����I����^���M���>����G��/���>B�p<�gh���s�z�)A��T�1/���/
���$���:�o���r
�}�L)��q��"�$���c�{����k�)��t�.��^�V��n�l�9a�=
�������;y�;�|�s
��N�n��?��
0����9a���#���$���/����G�3���P(��0�,��h?`�����~ a}�����u��x�����3#��_SP��X��^qe*���,��q-���~EO�C����+�'��	�����}9��P�]�/����/3=o�}�z�NE�B���HU��D�:����������d��R�G��5��Y����h�����1N6��C��]��=���r����8��_c��I�y�(���Y?����WO
�LZR]��*HA
F?�O�J=D��f����c�c��y	&��u[�L�/�I3�g�q�q_�=����-q��S
�~�Q�QP�v�5��!�~�����a�a_���&��e[�~`�kj���������A�+�����������W�O����f�E���/A��"�F���F�|��������<���s�z�KI{]p�t�N�;j�,U���b��R�&��'c��L��hI��������4h{�*H�;����z_�D32�)�1�)um�r��~|S���u�NT~�k�{�'����!��A��V7
6R�CX*�~���Q�#o	K6�`����#z<��W�~���L���!����A}<�U�I��-T�K>d-�Tc�o����E���h??.����{���F	�P^4Q&����[���J�E�o`��VY������������{�`P��r@�I�%YlVO��)~��J+U���@��h���4��lugP��:�IB����|���W�K�Z����7��~	.�WVm>`��+5;�i �R�D��G�G�B�
N`�f�6q�I��U|�g�x`W�}�'��2B��f���y�w��
�!,8�]Y����&��v���o�o�\p��4#��v��u��*�!����M�n}|��������w	Z����&'?(�z|{|�~��nw�0#�����/�j����N�.���y&x�p��w�`����f�K����S���w���9aX1�2�]���t?5��]0�d�����������]%�t�l<����+.����@��Wl�AN��}�8�y�v��&����v���������������id�"�nl�A�;�W8��r�
���k���N@p�~hm�sN�)���10�Co��������������7��0�=��~���Z����|����7�����wj���<|��mf��i���_��Oz=��}"P�������d�[e�9�_P���7�:��3���|82��������w�JU~u]��k�k�����h����,��>�>�_{����88���
������O��+c�����������;k��2���M�'���x�lv��_��z�@b���������g���5�f��n���1���J���[(�**����u�!���d3�/"o�����4�}!I��`��i��x/8���6�����G�5�>�;Y���
��U-��s
��0�.�����Z���w����2�c���$~�x����i�
 �`Z�"�I�T��f?��|o�i��3�xu6�?i��YD������H��zA�q���`�}eQ����S*��6��.^���� ���A������m2���m�z�x��<���a*Jyc(\�9;pi(����!+�����n��$��K �!*���N�Z��%����11L{�������������%�O5�p~N?�>&p�pue3��+��LCyKb�v���c����{���$���~
c�ml�-Q��\��s��Ec}�w�g�sp�^�%�T�%R��n���L>fd%�����3��KT����##3##y��&��z���`A�wc�k�A����RG�}���:���`"��nl�r�g��vq���N8�7�� �������)R?;�Q�8�+�v���io��8�H���Vp���}�h7�
���Oc�W��o�Z�f}/����	Z���h�h�G������nS�Mt(F{Oq D#��&1�w9����C����b��8�Pc6@)�'^h��������oT'h�{��F3GV�YyS��N�w���CA:�W��=��p�, �����{�nF�
t��q4�?�0z���K�L2�\�� �Y1z%�����������X8�w�x���L�Le�
�r����w^�xr�������{�v������{��A4�nH*�����{�	ae�����`i�
�m��-����/M.�����y2�x�3�"^^+��_4�/~��[#���Cv�x��������`��f�F�\�<�A<�-���2�Av)��G��M���%�z���	����
���Kc�`�!$�g����w2�/�r����^}:c��x�
�'�u�SyL%�n3�G7���$
a B]1���_����l�i�Ep��p�x��o�%�������G8���t�xG������t����OB?f�o������0�>�������f���}��|��a_>������������s�����Y��6����f��P}k��w��N�L�sAL�u�;�z<�:-N�d�o��]<�W����l��xM�Ob<�7{�{yuy���nC����\{�x�o���@2����nN��<P��/\G�����s��f�~?���T:�9�W�v|>�k`#����|
���t��6��k:�������������n:sZ���}��^�k�	��p���a ��lFxR�������X�'��'�]��&��_���v3|y����s����KM�0~Qr.<���p��i������/\��&��_���/t�V��w�^qo�����6��#>M_7����}��|�<��M_nrAL�us,4.�:n�8`�o��]<�� ����n�c��Skg��+������������wG����:_�����S�7��U��t�����M�5"h�j��{��A�l�5������^�~�lBc6����������u��R<e��;F��s�����I!��+�{����2\}������]��\�|��:�<,���n"�lC��/���]�
�k�o�����K�B����z�V���:+_�������x{��y�
z��r�e�54���y����}��{oh �e�[m��d8��u2B^n��W�:��M0�Y���OQ>������BA#�	W�
@$(���4Hi���k�Xuk�������Z�����4x�����������l�$����j�Z��g��LRug����������q8,p]����z�#�<�c�y�S����A`,�������$:�8K��	�����p���������;�@��0�!?�/D�xn~jA��RC��|h#�s�e�FK���H��cLQq����$fa��ta*(��_^������Z����O	~D����C7��vR������.	�����X���
��|_gx//b�x�	J��W!���8���c��Q������/3�Wa�;��0�gS��t�S8���tr���P7�:~������fG���j?ea��9O����M�������>g&���p~�[����i D87Iu��t�S���b�X�����$������cJ����x�����d�����&�3���W�q�������qE!�����~�����4�s��5��e�{����M�z��}���tO������I@�8���6h zc�a������6h����B�Y�����f�
(=4%�����1Ot��i�����Lu������1�u0�+J�if;�[V�<��L�L(����@�nYc��3�2q�d�f�a�e�e��������O��=ZVZ�<��L�LH�4%��j���x��P|]����_|jd�
�w(�����D���qg���s�:��T���j�(��K�[�&��Y�t�c��V%Z=R�F*����a�N��?n�c��9�n���`���A�>��zV5]��/Z
������P��{�ww��7"p��u�D����yR��������?~�&�����,��������]L���-��!��Z�C���sb�� =\�4���\�TF!�����s���m����\�V8����^s�~��t�!�G&q���,����4�D ��GR�k����`/�5����tr"����;�8x����.��
��j��D9��I/�����}6�n���2�#0��a����2��?��OZI������}�fq$&��u���)�
���]��e�}>�p�
�;Q����we��l����������	2�A%�W�������?pf.�2h �������9�{h���h[I���=n������w�)@�����`��Q@�z
�~'�@��+�����&C;���WH�������>�������Z��@��H����mdzS���3�T�	��MK��UVQ�"(/\�_f=X=Ra�N�7?vG	-d�������:O.���:SxT�1����7��:"��W��qYg�%~�;�YJh����}�����Ta�v�fQ��������,�cD���������H�n����%Q�h0�!2>��,9����;p�#�����` AD6�{�@�h-=���b�wz�K��5P��B�dP#�����S3�8�P�z�S���,��P_5qEh�
jY��W�\�P_5��)�K5R�����5�9�W�����Y��y&w>�&d�6S��pWA��z�4�V��!��������4����M��7��������6hc����s�P�!�����U��Q��*�<���b�L��_�d���2����[�Q`�s�us��2h�'_�,
���f�����hC3���1K���km[��?]V��:��mA������E�9
Z�!j�n�[+E�R��>��(�"O~����'L��*.8�.������0�5t�yZ�=�T#xF�|X�%m%?e�{�I���M�������������o����X�%��Q�����8^e����hG�
fd^_X3���.�6�S��]>����O/����G��T����fQv�Bo��(�=A��"� c�����b���a��j=�-	@�����K�,*�F�#m��x!����Q��2N��SC�@�Q=,2K�MZGi���&��8�-~����*����"��=N0�� K�������q���t��DP�����s�P���l~����=���]��Z��io�<��3�]#��j�l9��=����;�vR��V����2��������.Ky� ^���=���I�.���-�r�c��?k&����H�A�u(H��=w�\���q3q�=�}'���&
R�K��=��5I��l����(���{����RAmv{���]�1w~���r��;`���O�"8F5�����f�4�����{diq32�&� ��
�2G�w�m���������[@����A6q �j�Q�M��V�e��]���htsK6����;�ih����o�������2����%�:���@��e�>6y.�D��p��R�����{��!D@+F{�*u[�3���uq+.��L�L�\V��2�L����jfZg�x�Z1J�42�W�����i�i��>�()���_)�=�i�O��=����3�l�)��L3�����t���6�gcx�a~o��XN��m��+���wE���n�78����A�{i�c��	$��\wQ���b3���f�0��%����W����O���?|hC<���K�n.(����>�d�U���B,H!��v[�)��a�j.�tX�����gW.F��C�g/,��� �����3A�?X@���e�|��L�������uq�b���oW����)���a�.����
���}����}f�CA�~e����&d�~���~5����ys����x��w	��G�,�YP�
�(�Q�I�U?d�y������*���9aS�4UW�Nb����^�
w2=����?�f5����{_�@��5����������Ji�P>%}��l*C�[�BS��5eg�P~��p%�G./�4H��X�@Uc�Z�������e��1��NM�� e��z�o��l�c'�"�F�(�����E���?����)�?���e��Y�rsl7���L!T{��N��m6�V���4�
�I,���?eC��i�@�lo�����U���B0��b��m�b.
������P���B������Ok�
�g�����({����h����%[��h\�p��Nu8�}N����dt<^ �����#�)(�T������^P&z��B�*��Fr���\��S����_����N�y/sD��A��W����m�?j��N��s��W1����?@�T�eR���	��p<�����
�+l<�c(��3+Iey��W!�;M���y�����]�hL_���-����v-��4r��?�8��q�P��8�����X� ����I�iM�5qEE�d6������D����k��v�����.��aE>�i��-w�������!��&��� K����es�]5�_�A�c�������k���VD�4�j_gF��o���\�����],�[���f�#|,�d�����:�k�M�����W0u\	}��<�k�����r��c9`"�WB:w$�sA��f/�j��I���c��~��S�3(���
XJ��������m�bzk�j���S��G#8�	?��:|!�,��I5��)�c��������.*�0o����@T��C��]�7W��4vN��]�zA��KV��
�0�9�z���!��lm�Pa��!�j�+J%����
l�N����V|ZrN��.rC,�{h�*���P� �Ge�r}�"��6T�l�F�G�������1^e'*��/-(y��no1���?��kvof�������K9R�i4S0g�������I
����;M`9������[�pb�V��(��](��'�%We�9+�����pR@��q�������rwa�����ie<��x���<|��R�;��	yW�����
I "�V�{�W��2Yw
�^�>��Z�=.�p}�9\/4�rR�\`��t�5��p�����U�����d���&z�L�49�=�u^q���
u�����S�������*�ul��]-��ra�4��]��M��mOll�b�+�!��}��5eE��%b�p��#��A�;��������x�:8]L4�����^�s9tO�m(��e_<�Y�����Q\�o�	�H/�_,�VX"�Jd�]"�A��~��ut��A)��p7�m�*M����Q�/ID�i���C/Z�=w��j�4��O������O��z�S����3�g?
�f��Ri���U��X�.o,�h3�P�i�C��M�H��iV������56{�f&Z��a�"�	6������y�3~�����U�+!�M�8f�l%�r�������r���v��6y%��s��������_���v���T��&��#������xM����^0�.5 �xW�*�W���wS�<�����&�n�K��p�=���=��bW���n�-d��<�!��m%��s���X�D��O],�\��2A�~ma_]��z��/���9pe7�W�|���zgc�1�~�c(�[�,�����`,@����gj���sE�~|_���,��AH��u���b�l
�e��@.����3��6��C�T�����y���o�O;�1 ��]������K}������:\.���}��L�F�%��_��q���x.�L�,<<�W�`Zoy�;��R�l0��?��m@A6�����������t�>��`�U.�2��1N�f
��a|z���k�1g��c|K;e��a|v��
3����o,1�������X�7���Xek/VY����83n�qK�oh�'����?~�������/p�e>F��U�>-w���q���,_��L#���"�S����E� �_�������4����c$D�o���p�rA	�b�p$>�w��$����p��6��8����>���f,	��0��:J3?��� �7�����]Jr�������3�)�
c=�[&j�n�x������v��������s���1ic��������8�1��0�0�Vh�)p�@�x~��U���������y����S�3����iNLa�W&�L_����4�T���Q����%�����0�$�7��fze�@����&-L#����8�`�MH����Y�,D�L3�&�~��iH5��(��3y��z�pq&�@��b�r��v2<4��'����3��~ZZ�z�h�t�x��P|}��,���m��	��^~��[��3�}���s�K�*D��&;�^4XE�l��x>Dp�|���5�z��� O�XY����E���
V�e��(b���=5�HP���;�]�h�a�5��E�N��_��s�:f����cx@N��������c'`5����|���"Px V@m�n�*qJ)�o���h���b<�4�����nf�"X���������$X5�iI4a�����U�-%y����=���sN|���x]�[������x1�G�1�Roz���}�]h�!XP��,-���f.q
��\�z���|#�,���X&�{>=��y���v��2���}�b���|z�{3��7��-m����T��3�����b����F����T���������W�
��C��#���G\�����-���A���^�@�x��z@�����l%�s��};����L���5/�&�5�hF��]6X��M�����6�3��4n�� (Y&8�a�/�c�b�[��x�pM�?��i�k��(��C��\��ol��)9U���5s
����	J��q�$�����5����Cc��H&`qK���5����&8~�������r��g��"���f����m)#��qf��rzD�sn��3��p���N	qtra��+Xe���9�g��cp,eh[\�k��ec
`e��O	�~q	s�����
!��Y�������;;�|y
3��+�*�o��Q�"���7���w�{��Va�����-�P5��h�zr�����%q��v�1�� �>%�u������qC������8�2������������)���m;�z�R����e�=o���� |���Y��,���. �h�X�R�����/��&����6;V,�,P���|DScT��R
�&L!�?f�x������K\������|��J�4D0�j+�������V���K��m�j�fr��q?g����=���t����7�Vnc��������`��������D3�Gd^G|���<���C���
�5d��1���e�[�P
�L���H�!���7�#�����������"�r�9~�����5��X��@Xs�"�A��T;\�aY
���=��j5"o���,d~��C��)>���X�7��U��,�����d����&�y2���BZ��p��&��O���&�z\C��������rC������<�K~	�;O�al�M����������6�Pt��P�!\"��ol*�c���:�TFw��]@_m��Ca���Q��K�;>��(�
t�WF���c^|������C�1���3���y~��	����������x�6�\b�(�0	@��e�3/?`�o����0W� ���y�����c�����4E��m�	�~���Iw���T��.����#�����3��U�y����{��������,V��s�<��CY�*.�0�Nd�����1$ �n�}����"&�C�e��os��sz���ji^��e�W��i���'B�s�s4{��:I:��Le��S�u$�G�pT���4���q��-���i�
�:�K�NB��2#x���r~:��v9��������F��V���f�>��{v8�+�x�p��+��;�O�=����n����������(�g�~�v���{���9=�j����I������X��)F^~���eO�&zcO�Y�}��!�-�da���)|���*���8��sC`cEK���W����\�����C��	y����OWpu���������\}�G~��V��1�_j�K��Xy�0�dO�=��j�`����`B��`����{�]��e�b
x��od��Zh�����������%�;v6����[�D����F�#��$�#�Y�������M������� Qp B��x�9MU�+X�u#���0��qJ�q��!�1v����g�l��)ZF�U��������T-#���������7��h7�3D���\�Ft����:���}`�oO�?����A �D�F�]6�9
����w��Q����:��Y����0�7�su�[�n���zn��8�Q~��~���}�=-�8���1v������Zg�i`��(�h-=B��������Z��z�S��Z��|��������`��8�&J����M���O�[�,��3�9N
D�W	X/L���-	�Sm��%����;���A�{m����A��D[^���,�W��~�����sr����s�p?��I�n��%ypPT�Z{rl��3���1�S!�_{���t���B�Y>
N��Z���:6���W�� t�������$c�_�z�~����SF��)���!R�=�t)>d
�
��R#�L��+����Q
�w_K=��`#^���B�	K�Z�3}Q�X���]%pb$[[3�G�`� )^n9��u&5�o��\f*���2���N����f�!�+Ho���"��H3�+	Z�s��H#��U���3�Z�A;{�Z%Dz�x0���xXAzC����j�=C�+>&�L�v{.�H#���$��e�N�>{���!
����1�s���<^w�l�/n$Ocd����)��Y:��r|q�����X3�+
R�+��`#;��{q��
�n�]��J�a�Wx��8�k�n��a�)c/�1�d�_��3��}�
"�+�W�^g*�hh��[�^�/�G�Fq��aY����,>a1X��zIb�8,C����)�%i��L���4�,b�_��;F�C�Q�c��I�5L���%Z� Y��oW�D�_�aA��b�od}��[x�3���
C���*!���f~'�G+N��������HC$(�V,�B��Y�����g&q�`3��PP�
l��,x��z���!��&N�mln��{�2�'����?~�����{�
���X��	8&�b-��H@�+���/�4�'�Ui��K��pY[x�zq���96������!�H@���MGe����3E}X}��W�[����j��z)>qBg^�K��%��p8Fd3����W�����~/^�f�����/�dF�-��Q�t8��������Ym�,�E�#�r��I���.�j�~^y�-�hDP��Q�HQ	mVw)���.eN���[VWX�CC�s�'�n�� /[-P�7!��y�����~-����~��q�����-�D��{���`A�}e�cxS4\�}�^&�p�p�z>�}q
s���U,����Rs��.gj��P����N�:
<��y���s�'���*#�W���>�#g��PP�"����n�TL��������SA�����:�T�����$O���:qGDb�v;7�L������c����?�7e�0�w������5L,��h�"n�����R�I�.`:����}(U/��C�E��e��6|�	
�cz_�(�H
"��KWO�;�i�
?�������a�d�z��=�<zjY�����?��?y;��"�Do�������!^���h�,9�
���C�,~�M���z���	Oc�*���D�B��o���j�R���wa|�0�]�x�����x����ptIO8��WW��X�������wc�k7����RW6��:��@���l'A�,��p�r��:�j�$'�X76�X��!��=����j���=�]��q������!��+�;R���&3�7�N������w6����@}g�3pm
f{��"poK�s4p�� b]��9t���ZCw�"}�vv���������=�w,�1����L������T�2o#�7"�n����������cG��#�W�s���e9��9<I�q��j�r�l&�������U�|�|#�%�z2h����jj���(-�H���^|8&C�CM|:�b�j$���{j�Z�����y��)��s��{9S�����@M\vD1jk�8�),�=����S�F�������O��]@�T��>y��Z��|�g%P^�`
l���1M����a��;�w�Cd���V�=�����P�%PCAJa��:h����O�����'��g�A�a}
�osAt���d��64��?0�yYt��L�����)H�L��O��`�o������� b�����j�3X:����,����A�����Y�l�3�����@t|�(P��aq�bG��\._��,��?YVd����� Nby���?~6�RX�w�~%"y�$�N;�/	��d����6��S���/<�}�a��,���_�%��m�����@�tc�ky����a��v�����{���s�bx%��F�#�s����F��{�u���Qsh��������U��p#' �w}����5p��66���l�(�����Up�����F�\�w}����5p��66m��@�^we��pkp[����{���������7q^oc��p��K:W�P��u�l.���N�R��Y�oa~4���:���?grq&���<.��uY\��������~r����'������:����{��	�s�i&�F�����W���x�[���Pp���V��-p��"���M<������
n�����M2��
7�����'n
n�����5�au�.���C���}&]��zrQ1�kr�����?:8Y'��;�J��
h���jd@�]k�I���I�<��\��b���c0�������ab��mi0�����R@w�%��M��RAt[��~�H��e;��2A�ta���F6w��:g�������GM�q�h��
�X�|S�E����h��S���+��[�v��������y�����su�z��b��Ys�����)�S�n��g|��
H1��H��Y8bn��vv�|����
����,7���pq
^������M��~
o$�eV�p���=;n������	�So:8�8����n��d��L�`)���p&� \�����2)�H��~���	g�
�U.h	�-���b)�����p&� \��������C�'��
>�L�`��~�U!��B����N���B:�#Q`��Q����&���Y�yF�>�nQ����YEh�W�[�l���kqn*�|^?�����#�zXXM��I��^Tj���^��v�����J�V�D�����Xn�]���4`j>�)��j/���j&[�r�D ��"h�
S=��b`"�P� gM��)�������'``"���;%�'h�2S=WRb`"�PN	 gMLH�x"�X���Cu�N����x��P���_��//�'�'y�����d�e��+�;S�-k���{���I����J�@�:�,���=�^#~����6��:���8���/�4��qv�gY�K�����U��P����OB���7����7�QO�)p�b����=J~jt�����	q�~5/A3��e�!��4q<.�S��\�����!
���IK�V�^HR��CR_g��9�rF���>l@�pF�A�h����|� �T.��C._���q�����:C3����l03�(����T=��������cA����=��OG���s���-�o#ao�$��}g��eQb���'�A��.H��g��$��wvf��Aw	t�	h��H�]}g��c������]k�#�u����3���<:IV]+�H]}g��c������]k�#Ir��9ta��-�.$�q��#e��;9M�rf[��R~����v;��ip#\#���{�����T�V�w��p�v�����g���IkL8J8�yk�.5�0�%�,���1
�k�������OQ�t*��8D+8����r6�%E
h����l� =����-�h�y��US-�9�Tbeu���8�����J/�iJcZK>���NVm�
���P�y��E��=���J�����)�%G�6}���|��V��5��*�H��\nv]/wO}��X:��-�,��U���
�E<�.*���>�(��{J��4��u�=������K���3�1��/��8{JM��=f���e���x�V��pB���=�k�s�q�����/�_���o��XH8�
�*�,�K�����_��O�����������A,��0�zr�f�3}�:L������K>���'�Kn����P��*H�o��f���������l}G*0�KHZ�qV��i����$<����!�Vbl����:���=����7]9^*�+���T^��MWR&����X6'���uBP�Q���h��3��in����,�\���k@.�[��0����t�AS�,k1T���G4������G������J��=�&��a��S��(���?������C(����p�L�Q���FE���PZ�����uG:���2 �;U�;�����j��I�c�bGZ��J;��G��:1�0����������lhF1���R(�~��s��?����}�k�g���\:i-�/��A�3d7o9���� ��to!�$$��k��nKCd��#��UpF$V��*�3�����ry�TK����TZ��E]�I�"A46��3��^������	������<��t�)9�i���$��Nu.����~�m*���eS,0K6zG���TX*���
6�>��S�4l�&F��T�^�{��������� ���J,`:��>�)��+�M	��6���]�����C���0	v��yR��08 ;?x	��,�PJ�S�f�����9���?x��������N�g���x���"���q3�
�M������B��k�������zI���A��X9U��
rj-������$B�kx	� 
�>�h��K��;��;,��M��c&��C8-�l���yR�x/y�E��_���*��m��d��*�.��_'6c���"���;���>zz���)���������eI����������A����}3,��iZ������b+���r���7~n��AI��3�]���az|�o0 u�4���17L=�|��nv����x�Ke��P�*�wH�/~�~��~����@����A4!������!�b����'�;(�V��x����_Y,`���O��sAP��a�����A��}{dR���7"���46$��������'vN��p=F�5�(Cf������u�����(��%�*W��,�\����y�Zya�)����x��OK?��hr�����VJ�������L4��e�(^�]g���<b)�]A`B�~���f�K���
��d�h2��E��$��c&���,�]�� ������g��X�z�	.1�-q<���A������`������BA��K�}4P������v�
A|���B0:+Bh��	a������f�W���Fc���f��F����V���5?��&�vR��f��N�e]�gj���w
wK{���n�j^C�L~�"�o���oL��i��I�z���(���j�;N��)v�b�;��N57�y��=��[���=FF�������p�"�Dl��/g�h1���I��o3���~[�|���	B���</hy^�i�^�;`�n�8�h^P�h<2=�d�2�3��F�2;����������!��g�p�*1+�����
���l�,>�Z(��||m�O���s�Wt�'�t���5A[,E����3���O���U�y���o��P�VZ�Qg�������;<y�(��������O����r�I�����y��#c�X�l��F7{���*TPf��V�.V��	�&��4�1��D��=�g9����@�:��'��A���l�B2���$�L(I���.$O�H>�Sf�HY>���Y����af�M(a.����$Z�i�9G�w`y�h�`�����o�<B�dgHZU~������%�}�e��9�EG���eFy��@�r�h�����9G��
��h�2z�*��Q����p�>C?'�LG~���F]�9��&�G������+����a���L�
���+��M���3�m8Vf�U�m�,���,#,��>�'������a�oab��=�<Df0c$�4�G��������2r���Vf�!�����Zg���yV�Y,[��������r7sX�I<�sx�O������Bd���!�noS#Z(�A��YR�@��+��p�*�l�<�� �[�X��%��$�~����mP�dI4�v��~�\��X>��p;�x�Y�R�*r����S���d�s�b/?�m�	@���N�]����c�J�C�>�� ����ey�"��.�\ �<����s���	��]]n��
9�;o�Re���9�,Z���R��N���i3��9��U����v_��U���2B"�P���J��;�����[d��x8d<8���W _���K��%��/�pK= hXS����L
���I�G2����\F~����?q}i���y�'���e�?E6�����J���c�+�����#�+�~��Xa�q��s��E+8#,�~[��q�a��yk
g|�d�����@���H6����8�0zgk8k!a��;�w�Cdr�\��!����*��wA�s;	<���y�h��-�O�\px�T]�g�����s�s
B�\vr�:��B:<����}���>f�n��>`�*������,�Z��2�|�T�+�=�5�}��N�m(Z��o|���o���Q9�Y��n��
��M�^DU�[V0��v%1o�X�b�m��<��
:}]�07����[��v�k�=�"������������Ii(m������JF��p����VY���9����'�?���^��T���8'���cs{�i���
c<k[�:��\������~M>���{i'���k�/�������a�rY�R�?g!��W��6.�vr����<�Ym���-2�?c	�do�K��U��a���%����}x��Go8�w�?��6g*>B8�����Q1t�����'x��I�����x�Q*�I��!��Cj���\�a�\7]p0h�o�|�����;����H5�n�
���5�>^
���_��L*����\&�r��uV3b�4���N������]��E� ���I7)�o����Ab5����i���s����B������Tlt2�.i�)��Fq��m��G��R��9J�k��c'MtZ���@������rN���
|��FK���[`���b��)�:�:��i���K���o���j���wN���H~0����]K�dB�N�� z�M����L��D\�K����M���T6>�����)/����z	��:�ur��EW�5E����6���<�rz8U&�+�rN``�bKE]GRh{!#)���Y������9VrNn�:JIob�A�f*���[�/���� ���f5�i
,/���8Zc<GQwbj<x� j�������O�/��:U�������U���}6�������F4�p�m��d���~&1��>9�������������������T�#_X��|�v��}_�B[V�{���v��v�v��*i
����rA��b���Zy����e��g�o�~����h`����������:�WQT�U,����)���)�UM�z��#|^SZ������XwR����[���U��TQ���?���Gk��#[JQ�k�����H�>}A�b����`��CE�`:H��UsM0ak��9`��9��a�_��>��	Hy���QZz��^>����j+O���D��1�n�>���=����8�|�J��t�w_�l������^�|Ex�~>�������G���]wFF�`����w���1S���cz�cK������HY�z����_!��L�(0��L����M0��f
������E�!��`*�C���p�m��/{�!���g��o1\�K(���
U���d7�A��r�1L�������f���]������\&�0�9��xg'Y��F�F����I6�AG8�j�%�x-W��0�u�<5m����J&���l)0!_Y������=L*��xd�$����"&���\)0���/,^K|a�$�������R����S2�9N
TU���b��1)�Ib��C��f�/XjX��S�@�xn�d&����I�Y�
�Xmp>e��{+�NN���������:������C��&�t��O�f���~���=����&��������;�}q	���$�F���������R�+��'a.'F�����e�|���q��u�?�r^f-lD�:��O�v�=�����RO�e�$��q��1���h��K��Y����`�l��=��i�eO�����G��(X���;����O�;���y�|�R��n�I��u2�@}�"%���nStoJYD�������fY�������'Al(��C�}3��x-������������>xu�Qz��I�L
����!�'WJ���,�Q�~���[L���[�n���
�S4��u���l�Ja3:Zk�d�s=!����)���v=!��S�/�$T�\�JB��q�v�'q�z�
��F%��l�
yc5T��'k�d�s��[�����P�o�n�Y�����h�	�?o�\��o�_�=C��l�w����s9�!�H�Z�jY�p&��V���X�������Ie���V���1>a��C|ke�[����q������/�����=��}7�8#�#�����*��v�9Pa�
��*��
���Z��k/[�@����Qx����'��I1Uu���)�j���OQ�T���$���E�Y���B�,��~��������T$b%�#�����E;6gz����zl$�f
w^V�
�\.�6Iz/[*��e-e�g��y���� ����%sS��&���������I��Qy
����i;��s��)���In�8_R��b��u�u]\\����h��)hK�y)|%e�Id�V`�`���35�R0�dd{�R��c5ZJ��xX�Df	� �[�YZ�R��a��F�0�yt���82�Edt��h����?k�?����`H
�r(���H�:�����pW�7E�tP��3�D������]��l.o��'~��;0P� �}m��:s�n3�����N��3��1�L�F? ���05�pr�������������w>���W-wT�,"dgF���i�`
�i�V/L�@��N�S�Ve�J'�\���86���B�~Q���U�0!G�Y�������1��R���s8�I���!�����"�����Q�|h��4H�$1�Z�u��������KU�-��IU�7>�R��j�%�Y���w5��-�;�]�T.����/Y��2a������������iS�p!���>�k�I��N2�kn�����R�R�rs���1���u��BYS�PC���GS��E�]gOi���KRS*���_Y�E�=����j��;1������:g���Jxb����fH�}�������>>�m��m�i����$c���c�6`��K��m��wQ��������|w��yUl��b�:pZ�1�#��	������lf�����7��#1�����U*�q���fx�J�k�0�.��tW�����U	��P*���c!�%�2*R\�ASyBJ,�#��@a��X�$0��i�^���@|������R�U�:�_�Y5�5��W����L��&����^���X|��[=3����;�?n� �<P�@=��u�L�*�I�G3q�����q)G��L���{�9��������q�s�	jD�|W�}<����n=d�]L5vo�Z�t��7+��c����.�����9��.�'����YM�R=V}����?~�����{'��Xh�4����z~2�_����3uP���`o�f�a8������e��J��io�
JBR�l���MU%�9��R&���=����&��_�\J�H�o���|��)_��7�gN��Z��"k�KWO�.h��UjQq���D���=�s����a������t���9:�i(��m�4;�>���E�=�{��(V��Z�����T>�E��(��fr��OY������ � U�D��
��.
���%���VO<������O^�O���Zm���X=��Wj<��?��,��Md1"����X����!�40]T���p�K���h�/^��6q��2���X�>�o:xSS�I$�� j���5���Oi�p��)9D�'qvN
�u,�*��b5���P<�)��V�JL�g,�[K`(��{j�4�,!d"P���@�`)����F�}x����������X�U5t
(LR�/���Rr��p��k��8=D����~m���&�aX�C��@�b��\R�!����?��?�� �C7�u�����"�K�<`\���(���)����U�������c�.��C]'�p}x�J^�h� _L`�-���u���C��_E��6\���_Q�
�)��>l����E�����*�R�H�k"�
��&��s��OCa1���R�V��
"B���5�S)��������,kc�)�O�tBD��� �@a�kO�(��(���|�{��L�9I8 ���f/���2y�<����yVx�� ���I���yw���Y��&����&)���u��<3�
�5�<6Iy�"S�A��\��(^����;$L�Nbm���@$.�~����r��D2�a���e�����_�~!
w}D3vR4(d����>��t
����]�^��3���V���-hP��X���j�M��`B����V���,������}F�{�	�q
D�,��6�+��������U��d�(������j� ��4I}n�DY8���ML���+;K8 �rl�����l����>w����{����6O�� �\P����^s����� ��~W� }� �Z?|/M��$� �����&��[nY�R���YOVS��7/HP
Tr�Lv��Ot�-�������Z����W�'���H�qo�#�wd�+����^�j��sp���h?��:>H��v�[�����vp�^���Kf������������l3��*�l�vI��\��v�-��lkl�TP�]�%e�w[G��6����RA�vm�Z�!�c��Z�O����"w'��y����G7����g�
lD�W�R!��-�us��c�~<la��T����;��'U�=h���[J������j�j�}K�UR���x��x�S�SM�{I�JJ5����`b�u���0�V��Z�[������������Q7����q]:�q�Zu������&���.�x	L����o���(�x�-��'3��G>!��d_�?e�o�|�(�
����&�5�sS&��l��|��b�<��0�����w�0LY/�~^�XW��*�����������=IL���;����Z�m�?T�������I{Y!5b�m�������Xdw��� ^��
����S�eK~w���;9r�����R��&����l�y������&���hy�4�
����!���0�
�X�v/�G]��I6�,Z�k/
t0����Z����#k�����#$�7������.%��*i=����6nq���������� kc0�����B=��qJ��-��r�����6�F�|����/2��P��#b�td�{��17c��!yn������p�|b��U�xW�)�F6u�w��n�{�B-��aJ��2��^!��}��X�V���]P�����F��x_�wl�k�V-�}b%�5�2�W�c�Y��������a�o���
��x��cn98a��,+��bp��z�a�o�{[�{co��38��'H(nl�/?�������k�Bv:4D1_���'o.e�C]�Py:z�ys���G�����g�� DP����6ha�pt����+X,�/�	"	�&iP�3�o_]Gi������,����!>$�6�Wl�#�g����0���v9���r�*�����>e�Q��>��[Q��G��!M���4��Y��<Z�B��t���a�2A����]-P��T�=�)�q� �rt����m:p�$�s*����j`�j@�+����c�7��r]w/9����G.���U�Uj<�)d�V;��S~��n��;�9 �l^���cl[5��s��l������:��'��ae�%'������3���������>����[���ZP�������,��wD����>V�L�
�����\:W@6Q�=����
�eyu����m�8nWwnVWo��������f��}�3>�����H���G�gP�?�|����`kb�|��[����)g��9x���W�
"�V���(S�Ms��c"�����mnx��]F�Co���-����Uy�U��~�����w�2�l����MK`#���{��f��<����F�q���M�6�xwc��HF@qO��6����~ok;�Hj@�K�>}����%[%�6)��Jy����Mo�-o���������s'�5D�j��1�c�F�T&�Xe��V����=��� :�X�f�����\�D��F1��k{��1'��B��fG�����j�Y�d���w9�!�1��O�U��9W��	7��(��*�I���3"2nt�f�R���� e;�4{���>�-��=�]�O���3�6p40���.&��x��,�{r���(M{�-�i�[�,��,<���{������aye���
������v�����r�K��a
�l)�W�E&�	_�aA	�b��ol�2���/�mf{�!A�ua��id�2�����x����6��d"A��b����f~����.wH3�Lv�l�W��O�����
'���N�g��V7'#��Y/���S�^�['9��&8����z:Qy>��OFp!4=�d��}�=y�k���w�vjJV������>���2�@E�_���������v��[(4]1�/�����L��-�2�����w�x����U�f��#���C��Uj�}G������Z4�1����m��a�:
6��lQ�y[�u�����.�b����c��+������w��)I��k�9�s\�y�����x��):=RR��{�T�����Wc�(�1K���`\�DnC�T��rd�6�|_�����}3��T&�=HS��bT���=L1�������8;�m�7�>����6@������"�46;�%�������d�����!r~m�����@
���e\�����������f��z���f
�Z����inE�)U
��2|�8��si���6P�w�o����>�
�f���Cx��`���h)��#v���^���I'��]�{y�7���q;��.�..���EC�����
Z����]����/�����?�a�F���6���|�|?�/�O���e�����lc�������(��f�3m#J"~�8��\� .e
�T
��"h ��A�"���]���.�/M��Tm��g3���<�����[]�����u?����/��{<��L@�j�3�i��1��uc��x����&,?�S%�*�UuU\2"�'����a)���EM�"�j������1;8�_��:a�����qg�W*
��7�]���0&�0'A�����5Lz�/wZI��O�������������O��>���]������r%_��K� ;"y9��~
� K���z4��FwVA�2��D�F���r�������[O���{��E��-�C/]=���q�,+3���DI�������I�<��O����������B���m������?��-�z+��![�n��.���qW�-���-�W�P��y��"�������*\-�����:���|���W�����*����P=�o��z}.���_�����x��{���6H[Vj�����u�Vx�u���0C�gF������`
�-���o0������ \��9��)vn�Q����S�J�uo���-�W���f��F5�r�'���[��b2c1(H���k���yv��"kBo���I����Wy�cf����?&�������+��}�z���
f��������G��?�1��Je���a������V���c������5���X��>�-Z�z�b�eo�X�Xo������F����do�X�����������0M�������!�������b��F|��e�k"��/L�����k���9��:��e��2�g�T�"�������t9G�ZE�������nP�L�7UVh�8�;��)�M���a�,���m�kF�R�/[���1�9x&��.���y������z��iq��8����0Vi#�<Hy��.����a����`��g��s�s�^�8�.�0��x�R������fL�a��`<L���#r�	C���0�,PA^�ri�����@���>%�h�c�y��^=���w���9�V�=g�����{���I�����2<Ec�����SG�4A:��]�m:��w	7uxN���9\%j��90g�K���r����g��n�[|�|3����]�/�]��3s�����	D��ma�
7���*���P)0��k+B�����8wc.��O/�`�����s�s;&�������K�x&�����p6�����I<�Il�I?#��s�pN�^~ �������C���+���^4�}K\�!���3��l;qo���%��S���y�ue��u�P�%��;2����~=c���f�~=������4��������v���x&�@�|c�'���*��T�@b^���+?`�sH����&�C�����#��#&�R�_��
���Q?��EX@����$8��0?{jw��r�V���z��NN��`���X��h� ���@�C�-�9F���r�d�"��d�����K>;xB�BYVLa�����M����k����Yy�w�3�6�~!��k�&Ur{�F�7�av�!�o�U���|������6�"�N��Z��{��9,*
T���d�'Z�|����������n��{od"^��[����/��/[tg�.�����k���	��-!��`T�eh�/Pv���GBr1FX�����+����LTR>rm
"�
�}�u�!��=F�������_��v���`������s�AU~Q�G����R��F0?�j��7�s�b[�<&=nH�XG
��/D+F�����DP�p�f/]���H<^���73�1M���]:��Z������,\�Z'��i`�GD�����!�������w��.�z��br������:)~LC�!X��n���+&#��!�t_���c�D���@�H�n��"t�|���b�����Wy��;l��9
�y�6��Jc��&�3���cp��k��>�@����C� 9��c��g�
���{jo���'�gO���[���^����S�����a���i�Q5xV��5���+ww[�W�Y�����?x�!B�O�n/^�C���/�_C�v����c���$N�w����������?��f��_?}����y>������Jh>�e�IIK��-=>��H�pv���?����O	�������>��t5���
�3��o�|
� E��������vrt�����b��}i������!��H3�*	DHWi��{�V�>��m�{�����������8����7�
Y �:P��a�������}����f��
�M��D&�2��R�GWS��#�����0�s�*��3��r��h������+���a?���������p�����5
����xHv�t�^�����i��4���3
*w_Z�*�L�_;
�$�yWpN���p�L;���yo��9��	�|��I�S��^9��T���g�L��{d[��3R��L�`��|���+��0�G��kGN�\�b}�CNvT��=;�_�E�o:�3�
�����P��o�� ���{I����z��o��|��o�}G*��@�T�RfU������4�+���Sb9�^9n �������r�����]*�'�x��bU�$i{�+F��>��2�����<K��_:EEK�5sT5����J4�Wq(u�d�2N�"�&���sVo�	��9
I���kI�$;���T�w�5�J)�k�ksl[���y��.�6"����+xP""���v���1Q����xz�a!$*X����]�����q�-�	W�SD�P���2��C�n��^�Z�0�aS��-��l��Y�S$"�8�T��\"i�������D�����T:
jW,{��M�S����v�y�wL�L���0=��/Y,�_������dO-�=��<��8$g��L1c"����*�S���2-���QU������'(<���B���B2���M-��D�B�������]��2E�50�G6��/�#�SZq].N�Y��gS��K!���a�]g!��K$
��B��F���~�Q�`QDb�.��E��LM�����r��-���	o)����nh0�����6�����/"8��q���%q��!.w����R�����k���E�
�d�Z������<����	1]&�	?��Ji:Yf������P����E�����P>��n�:;};3�K��~OSopR���r@���nN �����1����*
��t<��+(��6�VE"��u�/aj��@��dWK�~#�U�S	��Dujgc/>��Y�=���z+�2�9������M(�|R�|��&P24�G3�_�
�sF�Q���?;��@C_<Z}\�\M�w'�u��x��e8��2W����3^b�as�l@p��`;pe^�+Op�j[��6aV}X}���(+�����h9��V*�$��7�����Z5�*E��F�w(����{��4�{a�����!��z�Hu���d��J�AA�"�|)�l�� ku5����2�p=F��k�n�*k|�.S��g�
g^�w�P���b;r�a�&�x�������$Sg�L)�|�X#�49VZ(g�������Y46E��o��t�D��w��2����
\_9-q]�A��mg��%����_����n*(�U���n������f�=S1s-;����U&��K5r�b
���Q�-�%��t� ��x��Y�� B�'��x
r����}Er�3:jqO���-\�M�=0�Z�G6e3Y���� <��_]!�'����(t���%I� ��l��O})K��#��GC���>G���KV����&���+o��0>1O��>�����)�/qb=��R��X��m�)
�qT��Q�xx�K����2����8^��
��1��������"�+��}�:�xM����R\���X��q��3m}e�
g����K���w�Q���S���JN��pL���^.z�5����p����M�-���-_�8�?�y]�)C�.���/_����f��G��Y �#3Gr���Z��2����g^qEn����|�A��	ZD�l���<�����l�pHXO��K_�������E?�_�kU�1
_�+�H�
d@?��� �:Pl��_��	���s��h/����Wr�#�V&h�WlS�F�!,�"�����:��4�V��<�"��.rh�%���`Y�e�V�=Hd2��HI�+���_�/��!�!�eM�&NPA�`�����	��S��Dq�������"k���z��������Eo6�.B)�em�6NPA+`�D����wIo�}������J0����P��4��2On���?��[E!/a-�|C�b�b����J�=6��eFDp���i������y]�@�U��c��qwb�)�jY}�5qkM�Y����N�-ztx5�o�����:?7�s�Z�Q]�q�M���4O3�Cm-Z���hl�4�P����gM�&���#
p��#��h-�G��*�TVX3���i���x���3����h!/AJ��*���r
K�oA��7����4�K�8���e}1k��C���GK�E�^����Pdk"�F�p��
�>���2a�SrX#�p��k. GEH���K;���\�������?y;���'����[����F!��o��*������d���j�@VhUm���8����P���A����36���F��N�^~���@"���s�=�^y*���[7:�j�
�|I ��Y9DDgJ~$�j�*j��z�9
o������?�`���N��}@����&�Z+�R
�����hQQ���e*��.n�H�t��?sr\�A����I�
���}�a�>k�J���Z>Ra��^��o�]���?}���?�����x���sY	���@�5r�yG�`AX�N3�u�V�Nsh;"E�x���L�",����}~����:���A`��e�.��KC����C�����xC'�q:���	��2�U�S���J��"��S�G�E,��$3�.�>�|���Q��2B������P��iY��}X�E~ �9��m�
�zU���=zA���~Q��f�,�����������������;����VU��	�1|)[�G�Cu�Z�����@��s����_����R��z
W���+�#�N�oZ^�U��I����.�����3��� �j^��3U3C���r�� ��
����ps�=���T�����V����?����x��������{��?�������?�����_�/��o���'�*8����J��0��j	�B�'��MY,�6*����~�(`~.��~���������?~������t���:��X
�\P���Jp�t�"���?��Ep���8��%E�0��\���>�������vI���%Xg� �v��TW����{
V�i0l����B��=�W|��o�_������`�O�]��$�������m���.	�'X'��$	�^B+w������?���?�����M�}�,�����J0_�K�q�<��`y�C��<z�.��M�����$3����_"O�����qbah7�J]���^�Yp���8
�-Y��-��SqA�C����B�?mw8�����st+@��Pv���j������\gm����+����v��B=�1rd�t��:�������QW(�G}���hE�5V�b��@��N�B��3���
u�u{��:�>S�2z���W�
[Qg����mx������:\���i�.��l�ma���6%�v�W(����R@Kt8-��R-V�)@-��*@�wr�Ry'�hqE�=���cr���I;�Y"^\���\'�t42�R�c���0&�����|��N�5DB�9��O����n�<��W�Q���:f�xg����U��.��|OP�?3���gz�?n"�,��Y��5�c-#}A}�H�Hs�����4# #���6�S��m�G��^���2L.��V
�����pd����!�<1�L�A�1��eZ���R9+0������p;<��s]�����K4����n����(�����*/%�7&���������K*�������
R	��]���K�5����*��a���L1T?g%X���)99(Uy R@m��r�@,M�����d�����|����g�U�s*,���v��5�w�V��Eq6�������G,���u�
��NbC*��>a���gjn��4��BB�o�k��}Y�#d	9����;����~���`��1����;	���E3��F��uT���65w��F2N����
J�W$���{�$<��c����WY6;>������(�4���;M(3#!X����[v��KQ�^�0.� ZW
�� TFHE����KJWe����>I�jY!=>�;1��.uD1/�� ��w7o
bAunYc��x�H��-��v��6�T�s)r.�q"gGI�A����Xp��<�y0�K���Qv���*I���6���T#�7$q{a�A�2Q��*��\�������N�F�����������	�Q�V���&�'qMM��k��� M��8��`�zH�`�s��/����_�m��L�]{g����B�;��)��]�%o������/ =�eL��c<�gS����)���2�9(��s�O��r3�c��� R0�ME��+��4�?����'Gv�v��j�U���C�F����n�u����yc�h��g�?���?���_E�Uv<l�p�NM���1^1�7��.s�0AD~e��c/��"ha.'M��;�"�}�7��<�A'.G�^U��j8-�������]��!�N\����p�P������f��������pp��������0�]��3�:�v<���G������1�:���v��B]��W�����9���K�C����p?�O�.\l�g�W8�������L����h�������L;����C���n��H]�z���}3���>m-6`�����J��2���xyU}�o3�e����^�V6��w�l��Av�k������n�:��5�F������*�Ma�[�a�_��X4��$��ns:M9�1�%����A�-�1��Hd��e�o	��.�2�q���n���x���w.#���_R�	11��
�9��+M��yN�n'�qN��X5������9��!7!���8'Hjl��}~�i�9����9Abc;����sNmd�M���6�	��!GN0l����!7 ����Opl�9���/�82��vr�I����5�����x�4G�E`)�q�;���}�}���3y�p�vR��:3�&�������h�g�b������8�(�QG��k����s�#����[Ix�_����m�����]R���k�p����d�,�\K��H1#�9MU�O�b���U,��oZr�G�i�!���Y�XRL���&����u��'Y�����^b)�1�Z�<�]���:^j�_3��2��X�����E��xi��-w�S��@v6me�c�0=S�w�%>�+������������+��N����e����Cki��]����Kq�"����/���C���d�G��Go�wmj�����e;�={
���wL�u��1B��� ^��6�r���Sr���y����t����L��^WQ�l8=r�f���\�x�0kpdi��+'L2�:�����������]yo�N����8���+{p\��'([�8���+��`�u���t�6M��x�lQ��A��Dx�_�
�w'y_	u]*�qze���h;��Y�;����_^�`hd+��M'���������{\���7�A�=.h�)JP���`sl�������]�1+�����U��2���miy��L�����0��v��.��9����o3�������o�&��,�sx����p�p1���+)�	�2Q��<'����(�S��Bn~m�Y���C�Y���Q��_��c���l�����+,��/j��
�4j��Y�
��T���~`��%�Z��+�����MlwKE3���iB�������3��rvA�k������m�����TO��#���di�����7Z�?����9eHY�2��|K������=�K�;��FK����1�vs�:	a�z��.�~����������7��<���J�V���e��9�T�a�	"}�&{-�����P�.�0����o2��E)���'V����,@��S�>SBeP��&�(!�)�kX7�j��
*�TP��7��T�4T+$T*�&{�������!M6����Cm�gm��A<�z0�������t5�W��GP`�� ��j��WhL��K������*xI,�+�&��/���5D	�4x��x:}�H��o��89��~8�����Y,4	�J�hd�?�^?m��x�Z9;H�.b�9&��,�0Y1J�u-���J[Y+�������?e!��i���%�	�����:]
�L�k����tiQl�#gO���Fa��a����_�����"��[������M5LP�O��������t�/��3����|�z���w�V�~�=		����<�����Yu���:-�	2(����:�����b�?
���2�I~����F<�J���%����}��_����w��c�������
$,�����,�!���!���9�L������K�p6�wt>�J>�����\�
�L}rsc��$���� ���53�g���k��0cu���[��>�������@�rn�����2R�!���~�,6+^���y�q2��I����P��7����7Cb�5� A}����0���rl�|�]����N���
����7v)�;r^Iq3��f����~'=��)��Q��b?t�3m��!��s����=�]��#I/v�K��������Z���P��A:�
��Ub����
����j����h%��\m��M��8�5�M����H�d�����*OrG-�Yb��E��R(��~�b����F�V�(�/���@;�L������b��R����o�V���L�+{���<�z���uS*()��1opy���Y�s�K%�8O8`��zFI�S�u��A.��v�����L�D��]�n_�Ha��u����a
@4,��������)�*����l��`	�sA�e��	���
�>�?��m��8����~
]@V�Dv�����w����-l���v/vh���M����##�v��%���C��H��83�����������0��)�:�nD���C�F��P���id�o���"�����!���.M���2�@�S��?�	~{�.4^�4��M1D����a����>p�WEa��/�;b����Zx�jU�|������B����QF����u��:��u����$��DTH�����8	e��I����$��ah����Bl�4�T[�0"R�uk$��X&��b�~���	��3br���#���iF�����!L�����5L�� I��O�B�m�ZM8�.A����i��R�>����O�����N��k���>^��:��*�����$����y�I`����8��n�"�+~����6����|t�]�����R�YP����� �v����&.)���-��os�5�@���d3����^V����|������
������~�c�-~�O�8(��W����Y5�:��l�x����3�������G ������BE�T��D��I+�����$�|�����K��P���>��t�5��0�����yA��=�j�C������+	/~������_��o{���C�Z&��E�=^���p�b�/��{��A������dd3'K���aZ�l���g��'�g�]Dj������������H�0(���F�v�d����T��������/�U3�������eS�o��)#2�}��h��c��`�;�4a��#�r�O;L6�:�V��h��g��W���o��
�4�E/V;x~&�L��z2�>����_��������~�{����|m����6\OQ�6��-6����2������{1Q����j�����6T]&�:�n||�]�vS��3���z�	�b��������u�X��q������'=��{�k4�w��8k�yU�=�v���d����i���������;�daC��M>��x*T �E�{�]�c�o�x�c���7#X��I�Al��js��������5I+(����!�]�0~Lv>� ���(_� ���
�gAw��
:t5�g�\v���B�%�',]j�?4H�U���0��v�J�5_T�4�i����+`�Q�(u�R(���3��d��{����?���F���9]��0���Ac������O�3�{��JW������A��?�dW!8�Q`�a����!cx���M>R��:�_�Kl��x.�7� ��Ui�7?������>��n�0��
%������ 3�����kD���V�����[�c��0L�4-Z4�V�6%$���MH��4��|��%�������ca?�L�-/
|ZX���D���������K!8�C�Ea���AcS��=q/�t�O��AFX�9�����@��kUD��V��|���� p"cTa���Ec�
� l������K����Z/UaxA:k�G����di?��}���P������5kT�4kM%�n�FiK�.UaX������
T����V�-K���>���@)��nG��(mI�G;V�h�j���V�-K���>���M;�����^�Vw%�����v�)�T+<�>��Q����R���kZ�+��OW\�G�
��aX�y���V+|���Q���+aVx��i����I]�W�X��6	��.�����<oo���Uz������LT;��&j��5l���&��������8?:�r�X9n�f��(L%��
�K��������7�^�����-�
�+2v����|o^�v�� JC������� @.A���9yV�0$��=cV�6'��O�@����$�	|���T�1>��/'Y�G���b6���s4Z/�T�����4T/~TT?�����f
z�4Z%u��O�D���e�w�g�/�a���C�L��=mS������@����`��]��}~�����`��s�E���EO������f�
�O)�����i@P~V�1��A0��@�7h����G��L�b�FG=���'w{"�%������}xI��������QW@~A�lh�C~�
�q���\������E�=N�7>d�I>`���!��\�LZ��:���#��M
��
�T.[�G�:/����=�L��'�M'��aC�AX���Y�k���}?�<x�M��q�Tg��+�	d\��C��x>�>�
W�q��\1z�!e�}D
��U�;�4W��4Ly6
4���J�SI�PLf!A�9u5e�%a���AC3��5Y��#@��?K���UF4�`���1����}�]�����H�P��|Y��tH��,l�����s*���������%�������`�\y�O�a�-U"D
�'�@��+M (>7b�X��j���������t��d��b}:>Dw{�0|����_�}����I.>�,�]��BX�����
�r6��8�P���J�I`��������3��YP�+
O��|�s����c�9��d�� /{�������:L��(7��F�n�S���i60���z
Q�(x��%u�<��i�W�]�_���J��X������!}��������S�%�/'J���G�7������7 {^�+~M9�v��D�����p:h�D�!#��'�*����"D��_��g��~eYX(�7����C�c��R`�a�B]����e��t����!����h�t�~��i���c�$��5��%�SzK	��1��A�R��T�0L@�����(��l���Hb���z>�Pvf���o��P��������l��k�6L����5Y���L]��'y�u����S]�/�nA�c����0���is��5?�������U��=+?:���0�=��Qt��g:kM���ODf��1�������C���������5������M3��Q
��S��HA�K�=�L�W���f�X��^ 6�B�K��%an,4����d������z�4
��07�wK��yt:I�����/�?�_�(�|�� J�������D�.1�%��t�����CI%���-'S�$�6%^��%�K�g��Y�Y4?~*Ha���Nw��(��sPT����)��
 �"wH�S4��.���s
����e�Mt5d�=��Y��9&���,u�:��)
�\A	O)���/eY@��"SgYp�)T��@O)��o1-C����`���<X�A���tf.�J�U�zT�K���hU&�?;A$C}Q�.FZl�2�,FC��
s��
k��w���,�/C�D��V��=�O6�1	��9�mj�=��f��xP���lO�(87Q�I�.*���ss����A�����C��5N���pOO|�����+�[@�w���kpy���2,������;7�X�{�Hz0�	����
6�*;19�@�;��"� �cP�A@ EE�n��C	��q)��^<|c�Mi���0��z�C�|T��������/����T�([N�j_��;:��e�D��s�$����3�`|}���aN}F'���xI��iz�oz�W0�<�*F����@W%Z�R&��U�,y���P���k����~��g�,ru}7s��T�o6[��h-�lQs����:H�?��.���+��,����{�)Y1��t��v�
��(����
Nl{���c�DVy~��UN>�����
��F����{�_���GF[V���6	�@{t��������&K����N�s$	�&���Di���m��oE_zM�X>(%>���JF��Z������O%a��'����O����y|x!��<��I^ ���3���	T����=�Z-CD
�Yfa�NF����"p�[	���D�U�(�e�F ��)�w�\�W"�@�I��-�W1
Q��0����^k�����D�/��4�,B7������!��E�?N*\�T��0u�4��#����$�p�'Y���:�\���D��@��O%��m����AtH_���S���6�f��G��}��\]�9����1�i������?xf��
l���Q���z��4���f����!wr�s|1�7C�r���rUf��LQ�8��)zSE�)�Z���
_����4<eK��������������D����A��(��������8��u"��h�@���1�% ��o4��;����'P�]zL�7[y����m��������>�=�l��d�g�4 ��?�M�E�\ *.";`D����f�Gv��
HD"�f��zN�O�����[G��2!|)-��v��� &���'��@��7�.�!x���f�-��__�f����0���4ke����7���x 06fv�3~Y������������4;�p��AicYrB�V��W![�VQ}n^E�L���*2�O�f��!�n���C,�"
,��v-vg|����Rx<�"�K�H����
�xE{u�W��	����B*1��A�w�/�C���Y���A���Bf���=c[�
r�����xC������Bd������Xt�����6�4D����-f��[�N��+��d:�0�����Y�Y�34-�����������k�E����9����������/����'�����b��t2+O�sQ�R��f�r�8P����l)�8v�=����Q��}�*���n�����Tz1��i��Ab�8]�ms��_y��A����+zAA�Y�����������- 
0
�<��9T�!Y���RC]O��������^m:��}�0�m��'�I�a*B+��x��F)e�%Vd�/TS�]|"�h0P\���'��8sP���h]b�N���^��)(�/���i��s��{?�8�H� �A4a�I��pk��uMEBn�8�f�)�8���`q��tU�W��imX �����:�I��T������rd�..c�v�aH���?YR��<��6zx$��],�{
�����k��@���moa�S,f�R4&�
�#S�y:�������ac��h}xPj�������t����0s�S��0�!�m�c�	��PNt��@��W��TaN������('	�������|�F?�*�)�W���j��w����wo\� �
1<n0|��������f��#�*��6�na*��\��R���Wmc�vp����l�00��=�]�:����Ojz�4c�R���T�E�
H�0\��� X	�V���R�AV�I���(�������c�)��<"�E�f@�u3tD���$A=7�D���P"f��j��})�z"\��3.��`u���l�F6j��V��U\z1�P�7���-i,9T��
��������
����T�V�O�8x���t�A^���9E���%�qM��w��
�'r1]�B�me���$\v�<~�2�AI�0�����VtV�Pi�Q��U��������mE�y��?[NUc]�����z]����-�=���|�j�(�.�7^uh|��T�J����7"�=��S�l~�Pm�����@��5o��?�e~��fS��X^"	�8���t��i�)��J}��+���o)E��I��n$���Ew�Y��#�[�P������
}���r����/;H�&:4��g���qHf [Z�b4�'��f��kZ���-���<�f���%.�@	��u.�Ca�{���8�D�4Xt�w�C�S7��.�!
DX^��1���3CO���h�����2&�PKFipy������(�����?�L��a.��7��$�w��
=''��<�
�g��D�;���<#6>��5p:��J-��F��p��0lT���7�8�h�o�A�pfa�N����E*������6l�%� ����;2f���{i�����V��o�w�1��q5tz�@ ������0P�q=|/�G,s� �{	K���
z�����p��1,�6����q5`n��y�}�\-a��1��t�O���jE�u���W}�d���L�qU��$����5���h��=}vF���1�	��_HBW�I�M��dJ��"*�t	���t������g#o�`��:#��l����YN
1�����!�K?��P>�P5�j���> ����H�i��wn�ac[�~oF��d'��H$�t���aq�Q{����da��m=��cX0��]�=��;b�(ea��ms�����D�,�x�L�fZs�������]��I���#�o���P���]�!��O��"�>���� ���
dM�c�o:57V;�g��"M��1E(Z7C�mI�Se	���"D�8,@������`���U���cB��Y������@��>P�D�
���@���a�J�.�\���i�vI���=���J#:l�������:d]6��������������J ����>���7)�a�w��<Rv)"a7�a�	�e8a�G�n�	�����K��N�L;@D!�q��5%���{�341�*��,t9�d�I�P	h���Nf�D����.E�%���u�U�xzO��)gS��7u��R�L��p�n��eR��NH��+���)T����U�<l��5��2��������k��'����FZ n:
'GZ,e�5���/�w��b���o?����|
.	�B�K�� ��^���-��/��������{i���LQo�d��2�MDu��*��-�0J�4�ln�Ra#=�\�hIx ��*g��Uq��G�y_%�3�d��H���>:Mm�):������:�e�P!�|���i�������f�IV>-��1�sG�IpH�}7����njT���x)�V#�z�� ^uf}��.u�	�|�~��������l����V8��<��oAS�Li�����r��7YiE�W���*��"��B���E��f�`R�Y�VD=W����FQ�r0)��5Q/T��(jYF-����Re�Q�(jYF-�IQ�^���g����'��S��`!�����:#m�\+D���N��IQ�(D
/�lf�@Q�d9�����B��
Qc�E���`R����W��"��(jYF-����
^S$��Q���Zj���e��XU���7(kw�CU��zN������^����?6;o
�G�Rb��mP���8�/i�#c����u���`P�o���X1��o1��Pb�d'e\i����6���0�<8K^���{Xc�89�q�f?k<��	�����,������+�`�^
\`��������Q-/,-��LnV�K�U���8�C!�$5�q��^��'�����cF���NA
%��|ZXZ�JvR���NAN����5�-�32��Xt
ZhXcxMo�AT2�d���NAX������
-,ky�	����������S�b���5$�>N���
N�P�;I
u�e��!cE�-P���--6��JV��a��r�V��2���t
Zp24�H��������S������S�B��P�B���AT2�d���NAX�����T����N
e�5ifX1U�E�dA
w�up����b1�����~tp�j�X���G	�>vE���#b^&���"��g�����%��d{��e)C���U��lzL�4�+efTA�!KX�����|����x��-��=Oa�<u�8�0$k�e�����V�����*�>����/�+�F�G�%��/�������=�@_����D8^�d��O�`[5��0�$:�t8���2}��<P���fk��,X�:	�S���D�#H$���4�|9��jT|�fwK��k�E�2[��l����r�Lc�+������T�U~.���.p��r���8."MG����d�N�?�{w�\�(���B�e��u6G���uVZ�,'�To}��I9K��<��,i�&98�n�-C�$�r
"� �68��=H�A�d�X	�j4l� ��"��E���)]��k�:0�D-82��I���c����E��8:5�As:N(�V��h`���c���E����Cs��194;aC����30xH����h��2�#c�cN;1�I��n\^D���d��s9����������-������b��m�������l1�2�*f�B���G(�xQ����N����h��O��zB���o:B�Ja9������l����#������8$,X[�Hc�A����"s����;�|# od����u����{������)m������_i�G_�&v{|�6��}<~?d��������R�.�=�S5�S��MO�p�7�F5����wzZs=����=e=����s|��wi+w*o�U��Y3�	�9�h�}�j������r����5�q��6��|N�N���}+���<n��m��c���)��A�3e��\�l<^ms6�	��������{��04�.����C���9��
i���M-I^S�R�[>����6�4��L8@������R-d��P�Ih�l2�m[Tdu�G"�N@����i�=��_�g�!l���!:B��#��;n�@=7&����*���!�����f�+jcBO`�oY��:=����s��~��|����9:��>L�0���02����1}��|�O?������!d���x*��D�v��g�K>��������m��Z���6������aC�y�����=�3����
����W�}���	c�q\��2l�h]o$$�
�|~>���$���|�����g�k]��}���`
�{N��	��A��}p&w�]$8��<�_Lf��ws|J�����5G�y/6����-�8���@���]�[���������7���G��G�*����_!Kt�.�/&z3^�!p����<���?t�������$%_+�l��?x���D��<{������Q��y��X?�o -���!H�:eoEZZh�1M wQ.�9��B�X�n����/MW��K�W�aN���Hz�����9}�fF����^/Q��Q���b���g��:h�9Hw/A�N��f�x������9�m��W.h'�����'�A�����M��a�c���@#1������yA^Z�a��6�h�K4����.-��H��"{���1C���oy��N��\�>�i�F��=r�[��g�Y�D���kP ��
�p[^�� /M��
C�����4��C�	AB B$mX ���	B��5�T�8��{/	���G��������@�-���;�f��V�#=HO�B,0���������t�w�TK2�����:22��0�m���n�%�F{�|��O�A��7#0���K~#S��F�`���N~t������^O^���d~���e�O�����w"2��N7��AK���_��@E�6!��2���k��!B�Z eb$�f�`R/p����]��)+��0�a�4b�$�N�0RGj�4"�~	A��J7�I������N���,%�H�t_#�+`\�M�nbd�g��	�1���0P�����b��F����=N���T�I�����a�.����r��:�$�i�;7�����S��)�w�=����O��� �{?��ew[q�6�	��f:q��/8���p��P���S�.�h����	�y�����e�
#�E�oZ��)��J�Z��.�����9�:�:[<B^�$N�����a�z(�\r������f����\���#�Uo��?�'@�o�C����Vj�;���=�������{B~���c��D����@U<|�����~�n�W"�-�����|Z�2�/i~m�s�a����m���awiC�~)~!Z�nZ��3M����~>�Q���Q��H��\����]x~	.���0M�W���$��M�Q�=���6��
d`;��\�~���6�-R��3}d�D��@��v����\�($N���QD>��M����]�ek[z���
�.E���
\W�����r�;�3i��^�#��|��4�k��5��Z�-��V�_���M��c���i{���Q�bj����!)V��N���_��y4���1+H��m���38:�2��-\�f�0�����#�Tx�H>�H��?&���KH�����5y�~�����_�����������=��s�br�{���}��N�;'�CRt_����zyh�������/���b�.�����Is������������IX��E>���u����C��|�S��}%=��+{����7���Sr��@�w�~)������y�^Ea���:9�i>�#)�
�ay�[���MZ;�E)�T���f����\H��:���DSy���b���bV�����������b��YLc�����i'+���n�?U�_�����"[-����=*���s�q��9���57%4��N��i<�����Xv���$�� X�Aq��`��e4������O~x=�?!#vY}-#�8,BR�D��U%�H�5!*�A}2��h��"%�m�p��(9)g������f�G�:�s$�X�!�H��PN���z���-C^�e����8������j�N��^W�W��A(awr�\���"^���P�Y�+�0�Y�B��$r�L5yT�4���� f�~���t�R!��	�
���z�\�:Z-�U<��?U^��dJ�ma��^�EG�-M�X�������Gu�R��*�I���b�5at�����?��HE2O� ��R�.
�^w�1)N��E�6�.)��$��"G���h�;�	&u�&�1EFLE�E�p���F��T���������U�)�l����������U������]����#����`(��P����A�e`�i����)�9[~9��%�Z�a��6f�Y-��5���#�QV�h�o��F^��V�X$���!f�C�	sY�M{@�'�!7�����9�N��Q��O���>��h��*8&��[���G�o�z����������2�%;���2D�:�����`�x\�!;���`�&��9+u�CAN%����t�;O[��At�$b��V��Q���\��~�oEt�X%���!porp��1�	N�V��Q�Up�;�9�g���]�]�JS���<�����&tm�����d`�bU��e��l![�2�|;C��KMiSv	�y�<+�g,��B�Zb���F��Rgi�D�9y�S/x;��w}��7"W���H,����_��#}�^�����L88�-�B������C��Tb�1�n� S�2iCV���}��a�u=o�w"iHZ'��vj�M�p�V�Q5s�O�N(�]���c��Rd/�q�4����M�vd�i�`��r2�����=�4�����|}P���wfU��;UpP$v��o����l�c�:�5
N������sHy�_i�g���foA��������.{C4����4��7����iS�Ex���B�i��#6�U�z�����1$j�����_���8h�M�z2%6�Bl��7��'��&zZr�2��'?��A~����w'#���j��C������P���A��9j&�j���#a��a��G)��X|���.�Fi~>b��W�(���g�t���������Y�DNI>�7}0&/P�27|����9y��z����v���%��r���|���\������!3�-���*{.��u{�6���Lh��;o��b|M��>��AkXr�*�����k��F���D��6��b>�m���6SU�P5o��D���i�G��"�_�r�I���FTo �g0;��h.�$��KZ����"m)D
;�f��4B��`'?�Kx��4>����~Dz���e�z/��b4�c��G�5�/TO%��`��7��l���M,�;�r>Y�C���>�*v;�[�������5����1y���T=����J���<���^+���2���e�6.R�7x��i�Db5��z,U��#)0f�{�{!�l��Q�h����A#vQcof�42kS��%��(�#Ef�Y���$���]!6F���L��V:��r��H���&���V��%2�
�u_#��R�Vvb�X)��a	*�N�������c������k�(�qA\����Iy��xp�<���sj@��QvN��#7o���v[\��`�M�<,�"��H�������8��^���*YX�a�c���Y�=���(�	�"�Iw/3I9�u@<	�����"UHUU�FlB��jS|<a�.=Z���������4�����Dr�[vL��r��q���f��#)I�Y����+�� uX�J�T��8s��QuN���
��[����C�Z1���u��
�J+��?��p���p���!VmX�>����:�[��v�P�c���V��t��� �t���������!Km,�>��� �tr������������������5�$����$zZ�)�D�B��D�%��2U����.��l������T��`�Ri�M������ )�F9G>��`�^B<�a���e����H}
�jS^zp��F��v���D�zD��=Q7�	7����Qn;jV�u�T��:��,�[&Z6��@7�!qZ������_g�8��5qY���?��� �e�|�y���MX�Wm�&�(���%,��2Q�e6��7R��d�_�������S�>�E8|��g���w��J8���F�$
���1):M�I���y9�]L����U���(fAO�a�YC�F������DT-W}�����I��!��;��Z���5i���W"���A��?��������-�����
:�H%/��db�����{��+���<%��R�*��M����f����d������n��U)vHS��xrhn�V��u�ccu����HR�B�B,6��n��=�%��"��=�#8�/ >���
�^��9�����0����f�����RC���Q����.�n�������!���O2nz
�4����',�=��Q��C�5 o��������]qi�%1��Ova�9���^���xdE�����0��:��22]{F
��}���U�
a
eW%�#
�	?i)!�q���g���a����eD�k��,F��!D�&��������A�d#�<C ��
�<uG��O���y�����Y9x���\}�b_q��t�l��>~���(���>�]���!��D%�oq@���-j�C��M+��*D}@K����`R�k�z�5Zj�,���f��
QG(j�,��������z��s���?.�n��h�Iv���r�����X`��3k������P�.&oM��3�[��-�����M����6ev�cz��aR�B���ih��{	���P-.��x;�!}�vqp����K�U��U>*��C�
C����2�asB+FXB��V"!zp ���E$��O�����\��q�K��f7�J�4,�L��S(���U3�����dg:z/HPG������T���HW|��6�B�_c%���
GP�?�2��bM����.NA�pa[�t"L�)�))����N��j�zq	j�)����f�]�;?�GL��Zc��WG��qFM`�������W���R�&GNn���GN����	�����CD}�0M6�y�U�,Q�%Mr�N�S�/�3������|
����_�Y�-9���u�f+p����*C�|��
��(�X?�3�?�4��M&�F�E�G�;�:��n�Y�R,�������2�[<$��}7�������������?���S��eD /�i�U�&zF,s6�,dL����{`B�N��*eI���fQ��1�:5��0�?Y���_\�����G�ZX�hnC���=�D�+�FY4
��+kG��qI���OO|J�������od���3f<
����*M�z8Y�|�u�����A���)@
,��ZeFH�(�Q���J���O��yi�]��{�w�$G?y���>��9l��"�.��&�$�����Zp�+�����*�2�p����|���Y��u$��vY8��929ej!�0�@)�>YE����O��*�p��#�������f��2D%�.�y������|�45��&P�SL�O��P��4?�����,���LF������g�^
�9e&�z���H���@l�xkz�c���Y%66|ZCg6t�q��>�i@7��������)��8	+j%iP\�L`��JjDFA`D����}>Y���|�'�)N_� �'MN��^���R��Z�bHE�C�����M����������^�J�pR�<�>�F��S����:V�l*��Q!Q'��~H�;��U��r�v~0t��m��.|��w��X]���l��"�/�1[z�oD����3;X��)�QwZ>�L
_���],�{���jf����M>��@��x��0IG��y�����)�!�Y��Df�tTU�h�V��
4��`���������V��M��+�o�=�(�TF��>�h��1rq�]J��e��{`�c��S�S�,��zN�	>"�1�G{��#��8<f��!�������X�>Y�-~���7�E$��1WcLKE
�I$S�b" 4�Bi�*7��hN��%uX���K_�q1
�����r����\����J=-�,����`y�5��(�0�G@�P~���`�]�����	�T���M=/�w\3e�2@�Q��S���[8L��5�~��g�d
k��e���^�E+����a��W��j���	.�]��q��w�}�D�������q����������/R��#�����I��A6���Z�8�s�Z��B�0X8Th�4
�W���(���������x5�\��np�����Z�(e`h)U_wR"=������5��8������"���90=��O*C�����	P��v`����(s{�T�����h�G**0N�/�|������[D�`����v=Q���~����XA���&�����_�8�����_���?��p��7�w����l��E��P�r���4�T��M{��tk����V&���w;BFs��{������9�7}�x��}7���RN	ymN1��X���-|$�u�I����G�a�s���V��8lD�c�L�[����$����!^#��6����>���x	}�����$�����$�|�����K��t�Gi�a����9K �q�]��A1�.C���2d��'�3����=����!�[��7����Q�"�:��P���ID����$�B�#�T�\
,��
�o/:����*y���R#���P������y�tW�����xk+Te
,$�v�o�W��b
��D�T��(d���0�/Blz�|�I��CV� `���LI8�hQ&���B����7how/>n�������
��7."�I��c����Yq��K���U	�ec�_���}j�
>Tx!�R���Y��s���s�-�����or�-j}��-l�e���Ec~��E��L������e������!����G�v}���j�h�`K��Z_7j�0�uH���0�c>P�U�����%����� 	.�!�)���$+���\"��t���q12��'��V���w�K>�/��E����2���w�m<���bg��������'��~�'������,���5$B����{
~x������Z����vmd����B���e�#T�n�*B�v�J#�6�>�����Z�sP��O�Y1��$��"S�G}
\]a=�f?.cU����Y-L�I}8c{X$MQ�d
T������w���0�bv ���]��[��,x`sHvW,���W�V
\�q�$�'��������Ow/4�p	W��^�FC
IG2'����':  6�����d���A������0J+6��"f�`�_	���W���aD��?���xKP��0�(s������T��M��O!y�-����n��}77\oA�hKN�79re����{nhT�)L�%"I~�^���n��@8N�*�����
��Q�r�i��+�)�)��O�Up~l�}
B���<���"�tI�`�p��46������>J�g�<���������+]����k�K��X��C��������bT��K�u�k|����w0������O�x
x\�������@p<x���M��w/���B�>�h�;�P��	���� FwN�i��in1m�_�*�D%W����/~S�_���v�C����AF�"tD�UD�L<�Ej*QXq?���v�y$�o������M�d��aFz�$�r%��d���H���IfYu��f����H�>2/������-~h���]5S��
e<\�0}��ip�/�D8�tK5��Ee��Pil��|��S<$�����y��N�[�w]O�V��S��+te�S��g�����0
�A����B��/i����,}C���a`�����;s%v�Y@�B�����9�J������������K��*����dV��<�/gbE�l�T<��$��
��|��C6�3j��Y0j�]:Y������T����)=�X��z��|y�O��r=�� ������p�d�+�����_zN&�!���\2'��S��O��k\�)�����U��(HO~���M_�� }��y )1gYR4gT��oaLF�
Fe:_�F�5�z�{�'��~��(�:������d$�^���eW�W�D��L����i1D�_��:�U�^����I������z&>�5��W����o���
�_���$����?�?���������L^�O�p /���>�Iz��CFJ�9%5}������Z�x[w �_.�;=�_~�SB�N�-_��D?].I��.|&�6����Bf��<u��}����������� <�����e���<�G9+NoyE�Xv�_=Y����*�,�Y���c��^+C�s9�!lN1�P�?^�g2����Y#�b[^�8!NN�"1�h��@����0�s�dx~)Oi^�������d���g��{�S3��l�149��Z���s�F��"e��S����S�Mq������z�`��/D��������s��s�M6o�n�t�y�NT�����%�o�!�*�{2�04��d%��[L-o�
��q3��2�O
�e�P�;�/*���A���u[]�-����H*�m�Q�PC���������B�A3�Pn��I�o������r#av����?2|���uN�V�\u�ZaWU[G����e�a�T�M��|� 	�@�gtSH���Yu8���	u~�z�'���7�~���R���T��b�� L-��TbpY�EF����=�)��J��A����.��R��?���O��`����O������Uv����G�s2�	��lr�=�,�������������g��&M>�NL��w$��(fi���V/2���s��MA�p��w���|k].�����5f0�)5�	?os�[���|3��-�T�b���-�7}���]��I�4N��j�\�:;k�PBvu���X	Iq�'���_�l>�|J5?����tO��4E��
h�?f��6&��:�uAcqc��Kv��*Er�jy�Rd&�|�,��-f��������;��~PY~NA>i�M#^�$���G&���G7����tq�x�a�K���=/|�^��R�`�����y.���~��H����%�
	B"A�� #P�V� I���N��oBT�6�����d�i4>?�/��)��� 2"2Jm�CFy+��+�2�t�#1�{F��I^�;��e��I��������{G^�7!0��B&�Q����y�<L^):�:����� 6"6
�0N�M,x��DB�f��I��rM�A��iL)B�D�Zb0!��FhZ/��ps���T�\��[� M����$$I$I-��h�=���o'�!j���_����G��D�� � PF��`���X%��'
Ng�����}������Q��w���9�?���w^'%���:�(!J2J
qIq��)_l$��������� 6"6jq����a
.����y����L�����?%���+2P�����w���{�D�����������tIm��qH���Zo��R�1c���z6K���������{�s�&$���Z&k���0�G�BA����w�D.�D���	,�T��/��{�����d)2b��\)�EF Uv����?��+3ip9����8�3��r$	�f��0N���`���/�L���
T��G����@���Z�����d��i.�!]t>Z���t��OPF����%�yD�s�I���d"�0�a&/a���BO:��,��� 	��M� )-'rY�Sw��[*VR~����
.����*���7���mw�&�k����-��-
���I�p���c~��yw���GCE]m_gv	e�QG��Vq��BE��+6�+L/�����	��P�(��6����'u���<�Eo(+�h�m[wn��_u�F�YA�������1*}'�������.�_!�[7��"s%������(&�{�b/
�z_�cvZ7<6�.��k�N`L�"AGtl�M.�yJ4�<�r�]�<FL;d����I�{�8����������B���X�2>�"ju\5����:����r�������r�w�����)�[2OA�(ea����a�Y��&,aD&��>��H���;@pw0`��'J.����E��r����(���<�,9>=���=�A�g��?x��5���^��
���������FRRBR���$F�����"�*�O���w������S��1�|)B<�k(7�`�^~�$KoOZS��B'�5t_�&�����1�e�&;0��������,{�����"�sd��)�	��6�htE�����	4�����0!�8����GH��#������o��4�{I������Wm�k����U����.R��r��g��>�'9�^�K��_U)%��}}	�7�@�0�U�i��f�L���Wv�+�G�i2v������a��a�"��?o�w�h�������i@Z�a�CXVE�c��&(���U@����T5�\�(�gOa�B���S�
�[�o�2���5	���]�@Xb6[oF���#��&�=��i($�^��zb���	�*�����h��@�aX����  ��#f
6�@f�"�X��J��0[���?�4[	�Kp���P~�����l��Y�G�)aN�|�}S����1Q������:�(�fK��/A���!M��z���	��@�>���h��G��;����X <���,#��0�w�i^������_(P������n�s4����vJ�3��I�B�~vLkB��Y>���k���M\��qq�\T��q�����%��X�78��nt�v*'������-H�s�����:��,M��;L���X��BfV8cE�hb�����EJ	W��,4�2��ue5�j��:��$O�_��j�rg���Y�w!�L��E��}~\��%>y~C��\����)�P�U1V�f��
��,h����4���y���U�%�}�L8��Cl8Z�XP�Xu���_����A�����rC��#��'s�O�2h�������y�=P���8Pb�au����q�i�1l�[=�y�����Fp\EIq�xL���D$�[)�	��X}ih���k���~�����j4-����%[��w��-��.!���aHt��� �\V�X����8	Bk��>�<���'H�
i1�u�.V���8�k%��c����^/9��9��1
�Y��c��
��{q�eu����L]�������Q�D�;�Sx��C(���(
.����J����a�_��{h~:�����n����uS�~_�����|Y�����^��,s���~��~�������'C��������)���?x���V��y���k��&c�Q��@��Z�`e�������)����o3u���V������B
�Q��8�����������*�o[����&UJ-C�
v�b;��s�`�����p�?%���S�J�K@O?/���_gc����?�L��-�$}�����L��S���9?x~�E�S@d�!x<zO����=2d�Bi����U�R�D�%��&JQ����J����t2[	�R��j��e�����W2���B'�"x�-`�L`���S�������b�#�����L;#�
�HL�O�)`��d��B�g
�B�|��tS2��k���	�zA�_fC`�����Zw�����
��.8$��K�!����K���N��#2w������j�M�E�b1���0�����#�:a�at������H	��-3R���d>���������#��<c��������,�)r��>�d�
#�����$��0#N+,�(�X�+��}'�-��nX�)�5���Y<6��Y���o<k�/�x��(xg��_@8�
�#�;�w�������.��_/��B���<{
���!���0�W�����%��������24���-E��_i?�o����a ��o���y��c�Qi�_��� �_Q��[�@.,s1�p��=zp1��k�c�/��\h.x ����Vl��L�����R�A�F&��4�}�ix&�I����_!��ZD,p�E0�/���q5m��.���F��?�v
�))J"�dc�Q��l����l�:��/��l�i=����
D�2��X��������0��^�8��-�2����	�����_W��5L_��~�#d����V����edE�J�E>�/]V4��u�"���E6��=�i,�WP��;o;,k<���������|�_��h,����`�)`600��v
�
��0������, �7��4V��s���n-��~n��8�������^br��n�1���d��������Q�;;��<>�~Q8���|�_z���!O������^.\�k�\Ko�y�����X?j��p;��]�8�m��
�ih���r��2�(���}���*�W���|�
`�qa�n��"#�����Qj�z�\��a��E�\`�{\��"�;u!.t���"w��Y�sa����E�L`�{L��"��q!&����"w��Y�sa;���,rD���D�o�\X�����"G60��I6�f���-�:Y�f�;���,�������p`y_8zg�/�m�J8�%6!+�E�&+��k�ZY�Hf�;�F�,�����v9��Y�N�1$�|��@�7���,rG���E.�s�vZ�d�# �E�* �����Y9b����A�o��Bc�\3���q'��?����G@0�I@��k������w�A��[L4���
�w�����.C'���q���?�;o_��{�/�{TV���'s��c_��~����^2S"�'R����L������/})E���%H�0��0��8��G������<}��X1`Fg������m&��"D
�`��@���vf"�|��W�����/�ec1�X��}���_�_S���3I���/{��k����i~K��(�>X��
�pJ�.�P�d-���@
*t�L�������S�;����
��")�x��X	�F��O
^GK+��I R�#�����_;RB�}���p"uRD�A
�Tg��x)>L�@
���L���g37�k�����R2�t&�r��_�.m���H�n�S-5�Q����	���C�FB���
�I?��2>��b}��Hp�xS��8���VB>(��F�ar&�
��[�O�������9��8�'�M�q�����S&����M�38����.�]}/a��D������o��#c��0�}:���M��<$c<d|���2:�]�[�������f(��px�P��p��
 ��v���_�D2�C���dt��&���28���Z��������h26I�'o�=���6��n�Y:��[��v�!5�Q���Z����;�/0�R�,Cl��c�_La�%��/*������
����f@����N4m��#4)4]<��`��IH
F�����8�L;C���D�5���\O��24dChcb�Cm
&����!4@4�5S0Mlx����������M�d���3D�gcB�����i��9Cf0t�85��$������=
2�a��2�.I�K~��`���F�I~z�`���8F�t~�`8F�z�1 CR���&�1l&HjbA0�J}����T���F8�<��|��D��8}asN<ZO}�3��e����g�Ox�-���G�,��zj[w�����p&�S�9%���e#���s@��������������g?x�����}��?�$����!F1R��>&G��z���a$��	c����j�����w�!�D��n�p�R����K�|XW3���G�����vL�?p5�'D����1Z|��\�C�1�k@�=����3��n
�#@��5#�n��%27�3Bw��.�\�"gy���.h�d�R}�H
�b��Rm��DHz9��
��$�\�>?��w���xy)�g���D^�{O��{����Lx�~x�*�CNzD
��������7������]pN-�U��B�n�� :��	�)K����J��I�;�3���Ao��@���"����"C0n
�����d�
�c�B$��	��n5���&����-����������)E�`3�O�"����������3n)��!��m������+a�^�v0��m
w6(�
����
�*|���*���
��*|��p�������p��~��$�g�$p�L��d�xJ������&�J6���J�0��#!��&���P*;&oM��3���zqu-�`-�p6[o f�6m�M8�^-���	Dl��X���{��
���hh:Y�<��{��0�{����������z��w�����z7;��Z7��u��1��zW��pTj���7�z���]�w����Q��o�Lm�H��T��C��a"��06�o�=���bN��S����@���O+�b?�72����;��G��
��{��=k���0��l��������oS[��*���x7aR�e�=������>3� 3T�]?uV�3;���W�V<_xIT3C��iT��p�W��Q�l��f
(����o�q/��8~fg?�?�����G>��?�G�q��6~c��o���	l��ZDz��OF+��''seU�=�pw��=&k��/�A�����i���cQf��?zS����M���O?������� �P����wZ���>���������da�h�����|�{���ZN_�M��}���+.��U|%m^��v/��� ��m]�g��3�����*��������}����wV�t^��m��,l��A|����������$J����qi�i�"���^�vz+?�/^��4��������ps#���a*��m�����mk>��M���&��#6)X���Z�I(���a�D��44
x��qX�;<�gUav�S��K��������v��k�_R���-
���{������*���~��m�m�a��i�9I�z���U�DZu~�|���������r��i��1f���r������f�VMY�_"7����_R���j�n/;Xy��o���G2�V�tt$�*����Z��7[��q7)�1����wN�F1u�=1+`���)1Y�3��o�&�����=�.
���h������t���)����#w��F�c����V��G��9<�3J���G��$����
�|c���0x�g�����>k��+�v��;�h�.�yF��I��h�n��h>�,Y��h������F���P�77���wQFG�E����l�v�W��q�e�gu��2��da���M�
>����Fos|u{��iXS����-�m���
pH����w��fF9����sbqsG��Uat�����#��l�o�7�-u>����A��/�r��=���e �����.A8lV��L`8�����o�S>���?
P"I�!|�������scNPtP,a�;�����P��?�\<��m���+Al�'��U`�o��E��0�����,���D"8���[q�!����$���(�H�*?��>�h�I����?O����yM�f����|����#������������=�P�J�)���'���m����>0��Z����E���;msIDH�F=��S��M�>��s��.�����8��[�
8*(wq[��F>��	�6�^to#�-���h�N;7�;i+?�L��3m���mL����]��tfj�[������K�^3p��n���c�G���vg�5�/!��_��\�k\>�Y���r�W_e����.
�\�zU���K�/9����r�h(���Adw�/�v&N��87�s���tj���M�m
C��_Sn�-��{mN���
9�
96|�6>��3m���mL��N�� j:�Mr\�E�!8tj������9��t'j_����|�s�q�0g���^P�q��
�
���=W��j�U^�|a�DL���#�FC!��"���� -�)�p��4�N-86��I���c����A�a�� ��FA��!G@��B��hC�
C�����6tm��6&�f'�h5��
9
�_�!8tj������9��t'j_����|�s�q�0g���^`��mH�{	N>�(^S���$�� \�<,�%
46|���m�h�L��2 s��������!&y1�G�[����C���'����$O[!E#��E�G�	k��@�0���F4�W�S����u���������x.�����`�����)tW�"5&_�(P:^
���X��t,H���jwU_�|a�D�����B����-Ftg�����}J�������M�W��(z��k�(2xm��e��������t����P�1��pc�G��k���A�<������4�����C��G���<|��n����T��Mb��[�Q��7�Q�os4]�&�.��I[���3y�T���?��|�9���z!��Y��mq9���M�f������RSu u?��"	�ma����+� ���������J%v����}<���i�E�;t�c����j�����4O-\�R������[{R��vD����Z�ii����`uC�*p���;�4V;��g"p����)���`:^�:
H�{S0D�v�y�U-�5$ad }��7����/+�T"��C��������i��9��`}�H�0������2`��\8��4]tc��t@U���Dx������ �Z�EM�0����o
�v�iN��:
I�d�������s9���&^S�G�HL��r�1�*G���R@�p:o�ce_��K_iH� �F�0Ho���a3�]T��Tw�]�t�6�R��N�@�����
���3X����KP-Z��0P	���\���`� Kk�����S�����j��S���a����,%��A��Q����B�f	:)�<}�A?`��$K:)�#���G��\�h<>�I���P�r-l����*��+�;:����
�!�,*�C�*,�x��
;�]�4<�X�d���VA����i�c��@�w=����m�e���
�v�$�|�������0'����n��� ]�����r��`�v8p�����U*(�Ag�f��}O���i����h�L�XA��*c�-N���U���T<���=%��|���`������[����{��W2�?���x_�������%H�0�@rv��z��I�+����><�9�l]2�;�(���7��O�w%>�����3~�3�S�����/����)�u2N�s��C�OU���)������dz�d����Yy*2 ����zT�~���F��>��S���d}�����g|�0m~hA�'?��)���������wD���:�c��LW|����q���b��m�B���9eO���Q�r�����/Q0h��uD}���%���MD�Qw�3��QK�c@�����N�����P��n������?Q���0��K^i��*����'����
OV�������:D��H:��a��.���1�m��l�B
��=?I�]����� ���e�=�P��`�E'%����������w��J�(��A��r=��w	�}M��u��\B���Fa
3�
<�����0���YY~X)r�I����V�B��%��DN�Y���&$����# �d��������k�]�4=���|.�Q��AB>[���
#�Ir�l�A�uK���ZP#U���G8<srp&*�0Fe����2yH���g��d�������>�o?���{��/AP��Ns^�$|
�a�����z}g68�W�Lh���c�y
��r~OK��K��
�	��x/��x0x��0���@D�]�����HWy�>�R��
�����q�f����Nps��(�a!n��@s�'�U@c�X����V��?�)�+t��E��v[���XK `p�2�\�D�s�@7��$�J6YM�T-������O���\}ba�u�P��u����:�h2�Q�~�~�������8�p@�z�����y�u������d�k�jp:�d����hT�)$�7�aqY�EO�d�'?�����%���=�� ��g���'���l��r��L2w@taH�l�������T������G��l���k�r�9�!_(��{��EI�Uz������p�t�,r~O"(�����t��o*������0$r�Y��7A�k`S�#���(r4��rQ��m9��A���P�~�������H��g�`H�U����������&���x��x�y��`P����\�d���U��/-�}}�Gd�yM��8������6����s4�w
�T�wP��9�p��
�0Y���5P��q�Qr��|3s������6�����������F~��x�y��m�|3���o����'�����q�����Z�tN��$I�k�Y���&�l����~h��e��[��4aX��,���9_���� J�h�o"��f>�Q8,C�o�z�m
6�h]#.��-�],;���b7m����X��������*���/~�?�����
�����Wj�����E��2��!��>��h��4��`pX������F��zA@ct_&l���n��c���&	�o���O[���p��!��{��R����=�i����5v�����5@+n����b�E9�j���Zp�M.���~��~�rwN���7�lO�=�E>�����{pN4�a���t�Q����Tan/����7����I�j]���Y��Yw/���y�2�r��\g�b�1��#���N�D�4:p\��k1��o���6m��V�
��:����N�f�vme����Y]�9�jsB����(����7��W�=D���-�Zfe^��A�UO�B_��R�"�MaV��!�zT���,�M9��5/�����Z�����A�}�k7��e]X����Z���O�+���#n^��.��t4u� YR��t�����v�O�C��h���?�V��27m���{�M��&j~�a���@��	����������])
c[����������4��t[����������-�0��s��H�������h� Y����n2�y�5Yy�}_�=�������wS��+	Hm�2����C/~W
�����;�K���[$���������?�������dj��K�"/��T�3:��+Ul+����\�A��g�:+ixH�o�9{�����������=I���pT��%a��Jm���+���9��������$����$@$/2
��Q�9�cE�M��i�fv0��Ks���������a�P�K|�^�_*���4���x�A��`�i��K{8>����$;mx�������KC�A)�����J�)����}m���1�VoB<n��f�M��h�-J�0��
h����e�I^a���{�zG���.����{z_Lz���Q�
���0�w�u�z�*�~���]�wY&�~�8�Y�Tz���]�w�������\����zW�]�I�G6���g�$�|�����K@n,`e��;�����P���@&����~2�q"x&��1>8JE�w��5�6������e���)�'��`����#T=��!viE�b�fU���A$T=��!�iC�R�fU���b��Q�
qL���7���F,U��o�fZQ���J#���G�7�4m�^j����4�~qM��*M�MW��a-��� ����+`�_�����c��o��5�.<��9�{�8L%<��X��zO�+`���4@���Uz��=��w`�_�4��zG�+����������}����gP�*���g��3@FsS����z�:�9X�U�M#�;�]�����#;z_�o�[��~&=B��#s<��0�|��<Mc��W�Z����t���Ey��=�~�5��eO�4�������A�6G?\�fU�4�'��&��A�Vc�\�FU��(���8&��A�V#�\�fUdZq����A��G8
�A�2���bLU��z�QM�}�����w�k�����
�PD6�@���&�;2y.Kl��5�:�Be���i����ww%4���6�f����9x����1���	f�#��Ksi��Y������B`1���&f!
9p{���m7�}Ld�7@����i����@`w8����Y����Q���o��?���.R���!W�!��	�t�>�W����X���+r.��m���M��5o5���*��Y�NS�!h�nzZJ���}�)B���>�A��FC ���CE�����!h;�h��R��mo�
 �8���RE�����!h;i�7�"$w���:$�Kj�K�=���I��� ��x	vA�x��h��b�ZL&B?��������[��+B��yHf�����l��z��W1�'�0��5�IB�w~*v��3����)>(����v:�r�(pM�� �
�hVsd���t�,�Y��	[�e�&��I_<���K�0$u�]]�����Q�'M�G�~�^������u��>v�t��q�,`P�a�����)0�A�����;'p^���4�YGn�q@�K=i���,m�v�)l�f�iT�d(k�!Y��<U�^���m�����{a�b/�Yl&�����^Ji�����vo^������[lh����-�m�=�������n{�j�����.���[��a�7�-�D��Tc���_�]_�n����O�����(N$��5m����O5�.���%��%w�$	�R�o��j������{�h���q
��Cg[��m��k�Vf�E~uO��"����{��)��d��F�o)�m������8�6/S[k�F5��,[���%�-����/)������l���J���5�(��/�,m����d4V[��!}���
J�nk6������~�c�]K�9���|�����d�k�\������C��N�pN
��]���f�<�[c��\�V�.q�R�N�������\���i�Y��q��&���f�	�	s
��`9o�t2�X����6�6����:�a��V��=(3��J��r��AU��s��`H�L���A!����Re�=h������S�����{G��@.�Lc������c}P���f�-*����fuC��Co�����h���vo�-�������1���ev_���o�G�/*����%����l�5-�;���wU�v,x���S��5V,�q�X����W����0$p�Y=��4��������������z0*��|�����O��������M�N��KG
��0���6�,��N���\c93��w����&t��;l�=����d�k�d��I��IW��r��K�0$u�]m�.�Ru�%��	�����;�u�f�o��]�4����F��i�Fa���K�d��9��SK�e�������mw�w��m�l7���L�
 k����8>���-��$��r05���vkJ�\c]��-�],�{9=�
����z���)f`ZW�l4�R�i���jUs�E�30�c�g���J-d`�C20�:U���7���m�h�!ol�[W[�Yh,P������v/�f�V�
��@$d��&�C[m�V�&�rg�V�����������m��l�{��;�z7�Vy��u�Kp������^��^K�0v+����^��m����h��b�K�;�p'
�����@�+��}����UM���d4����0�v�q��u&�g�,4V%�@�~��G&����eaA������+����9���70��9�X��9�3�j�����+�����������[R�Y��������fqg������)�"�������aNZ#1K��N��h��d������0��!6��,5VB��wG?I���7��9�G�9��
k���{�����������wd�,	�Bb��S{�z���C�A�o�G��#i����v��yk��Ro�4��h��c�����aV�Cly����|1y���Th�-��|c���&���iWO�E�5Xsr��5��Fk~k���9����L���y�Y��7z�*U�A�n�7��������uM��eS:�BoK@�h��c�7��O�eaA�,�������b�~R�R�p��(,��yY�*Lv,D^��F���N�������3�wK��k��J�g�$K[c�B����6�|d��%e������k�#_j�k,�-��,�{��%E�����Q_i�k����|�h��v�a��vY�������xf����4�6�����.���<eI�{��������?%ix��m����e*I����vu�lM-]ilf,n���>'y�7L�aV����F�Z;_�h�ob�G�Hz�b��vu�xk�Jk�������{3PIf5>��C�N���4��������-�hRHQ+����k�[�GW�����������:
H����t kt��2������5>��&�"(����V5���Y�%�X���V�.��Z�����	g[�#�%�{��Jgh�{���������,���@����k����X������N��Q�[����rH�������h��[��J�!��5��aP�u��Z�{O��k�~O�6�.6��9�[��u�=�:�,Y���Y�>�Og4��M�t���;l�EqT<�����>�1����C�������pQ�V�<�tKO�L��
iqs����o�j�m����u��F��k-�����>����5��c�7���XC-Wo������,rh��������n�Fcm�z��w����oM�V��p6���$8�}����d�I����dA�8�����.k�%��XY�n�V�V��c�6n��V�o�O��5�U�~���������{�'�m+��}�
V�VMR����[�}���~����������<�bKh53)�TOw�r���7�
�	�>��)������jRARw�T���h��Jc��������%8
r0���n �q�1w���`�m�������L�J���q]2���e�b�}�~��P!���>����+�y�}�b�m����U�� L�$�Ru;���Cu��/*���2=�{���L���������?
c\Qd�������a*�)U��.�������,*���"}w#z��m>��)uD�M�I����,�:L�������^M�-I����r5�f����5�*������,S��pIf5>~W�)��k�X��g,��������yA��w�T��h��\c����������S����S������\���]�6��o��^���XPY�4.�'����;q����n��/����wO���r����9k-Y�3�aL��8�]���t�� �-m �+������,*��"=��{=� ���w�A}��L�:D7����n�'������j�d���h�dc�}���F����B����������L&{�1.������lV��t��$
S"��t�A:�Z�����LgV�cOnY�`O���{B7����	����%�\�4��5H�������Jw�KTa��C�d�N�S;�����Y�����z��c�n�hO��Q��RT�|:���������*7=
���jRE�x�T��h�f=}9U���^����%�,�;�o�}x�������Du/3����
�p�
_.�f�& 
�S���y��#�6��5f;���7�H�a��J����:!qY�����/���YNv��C����}B��x��y����1����7�~��q�%{vE����YrH��s�Bo�/=P9���Ao�-�[���/y:����4��w���
@yU�T\F��D������v�T�+�|�|��D��!��$�+z
4������'5N����T��Y
�j���P�@�@Hzh�#~@�}�l�jI��d���+�n���!��T�A���=Y��!�xl���1
�{z
�r�*�3T��� VE��X,[%>t@�D^������~�H�[�����-�2
�y��e��w�-WQB6b5��5d[�Z��WGy�FQu�e���Y����Si��.p�j�A�0�S�i�J�
E%�g�����
��:#���H�����X��`��"O�6L����4SL�P�$7��n�e��J�L�z��?F}�����<�Cz�>UV�"S�o�h��d�0?�&?��i2���Z<
��iv{C�ag���f������F��������O��7�������!�a�kGr��E�7�i���_�����S����D�u��_z�X�|_���&���S��."���[�,I5���f�����������0���h<D�������OTE	}�yN�Z)i�{�J�\��-���oG���u�<aQ�����#��g)y��2�g`��[������>b��m��`G�!Pv���9�k?y|�?�il���`�Uc{���:.;W�0��"��[~N�����~��[�_����Q��8��X��S��)��D��s~HO���R�N
/W�`lc�|���h'=CQe���� {��O�]%����<|����%"L�|:\m2�OA�(�	�Oi�fJ�����,'1�!Q+/��uQ�-����e���"j*a�CMU������R^�d.f�QR�?�<�8�����7b�����&C��b���7so�A�iK���/�,�E��f=�A���%��.�	�~=�CcQ�W���CF�LT�����*I�F(�s� JN�-�s�]�&��0L\O����[����`�Y����$�
C�{IC�3��j6���K�tr��v��2D�%v����vm
��rC����^��s	�����>E/�JpD���{�s�����'X5��:��]��!���3�!�r��p)���D�+����j��8�V������I��������C����F��_J��������_��;�[���\
�_��"�}�5�r����;�����V5m��M�c���*�w�O#}n[�c�9����7i�s�]�!fn:���c{��V��Z�bd�LY��.=��[��A�7]�;%����x�� �V0v�B��]�'����.�>��?�����C��{T�)���3a�����
�)�z�>�HVzW���mv�t���Sq8k�8��3T�{P���T�u�*ZN^8��A� "IBB��A��
�0�������A/��x����[���U��0�ASl�	�N�R�H���$��������P����V�	��6@+k)x� :
@��3X�nZyAN�� K������;?���j����_Q��}N�]I�~S���a0��Tq��l7�����=�$w��9U�::�N��a�3���������P���M����z������w��'�U{)x��#&�bIvvx��@�W��R1u�����o��/@�;S5TIz�)�;0!R�TWgV��P�}+M�B�)gH�`�����Y��0�R��9a}(&�f�*��k'����
H��s��l�rF���X5]�iC3�F����c6'�dM&��B$���`wj4���c&$�V�"H��8�#��*s����H��@"�4#�X�L�F�!��H��D�%�#l��q�6��G��I1��Y��@�p���������� 1b��l����.s��@#�T�B�����P���'�F��w���3��x:}"�oC�/�h&��y����H�u����ShYX�����!�&T�iWw�t��9�Lu`������uj�Xx��4����mcf������~,R�
F��;p��x���7FWz��(��C��H��q4:������������>S���H�{M@��X=F�a�����v��"z["4m����dKRv��~�Ca��8��T7�n�
��W|t�! !�m����d�L�`�C����9�rv�`|�`s�o�xLotw�!3#��'�)��0xZ��cgv�L��<�Y���<�e�U��'�V<���8���V	��h����j0��C��tU����O&;V|�a��z�)*����Z����^��J�b���s"��T�M��,�h�LV=�[X�IG<v:X�����������_$�|'v�
bp������d���spJ0�@[f� ?�����tz����77�e/lQ�����Z�<���C��N���/�D�[;m\�rN���07BPU2&��S=KJ�$���3�/D7�~����D6_�a����F�S��"h U��E*�����*Lb���"c�#�_�o������yJX���Z�L���n��_���G����k�M���sD�06vnK>���J=��aM't���F]�daP���M��������o��Z%���K6��[X��m���m;���i 1{�D��h_J����K5aj��-v�����e
$Vu������m����6)q A��]�8$q�~�T�I�)�E}(o��(oK�� �����ttO.'��t�-�+��
+�������n9Y�����{q:,t�}9P��B/2g�}Bo�'9���K���dw�9�f��O��
N�
��g����ss������HMqT������s���PL�~�?���-e���������A�;�Y��|8"�����_���I�4m��9��ylm�L��t�2�?d�(D�q�����q$:����?�&��8�
Y��B;-{e(t�a��h=�� �O0�$ 0��.R5
�8�:L3P�<�
pM'cp;�"�������A��$C�`��z�?���~��d�OIfys����!�v�����J�M�cG2��KU��������n-Z1�T�H�!������S�ph3�f(��e5�
L���d�������8G�}��a��7�|6|�|�G������G��76��.�]�?���P�i�����
�`"�4�=�'w�''�g��?��Y��5L��t��p�+�<%���)[u$���aE5�AJ.K�E��a"W0���P�dp�lBFJ.mK�d���)��oI��=�����?zA��5�pe)b(�
�w�*�5�V.�L�\:�L(�3b����\����R�hQ�������)h,M��I�v�p�Up"6p�J -��T�������1R���W����Z8uc�����iYqps?��1u!G�0G��Y}��EP�a��4AZ��$G��Bv������!�����p���J���p��J���j+�r���g��O�D�r�(�I�8�8��@6���XR�[���{��U/���"��#B�c<����A�SI�d��Q���ya��x�d�vS�VH6(r9$�ZT^}���/��?S�������E�������4���&?����1A80q�_�v��7��;���!�l���C$b(�����Q��X�[��Xm\i.�-��g�2�����X��*�8�>;���g���<P�f�h�$a�����b:�Js�`��pp2���yp���Id�*L
Q(�%�Tp������
\���
egi���C����q���C

��d$48�A^��bi#W`ns�H%�^J����b����V1&lr�#/�C=/�<�Y��z��T��_���w D
D�D�A��%��8qQT���(;��:�4C�e7/��S��|Rf���0�8^X���4���IW�#Y�TLUY	gT�dOAJ6CM�_~
yA^���oXZ�b_�O+��{�NMK'���15�������$j���6/|��� �����d��f���(8F�$O�0�p�O��p�(�R�?��f�� :jt��|�B
���������0>��!H�6��K�#��,R��t���#%dj�q:XZ�������/*H	UQF���1:z��Bv#
����>�L��Y2<<W��)QSr���(�S��7.|:(&���A������7��v���^X�Ew��j*u����L1@N�f��eP����ae��'Kc�Rs�\�Ff�4i���>�lr�!?� @g�88��1����-�� `��5q�
\�
��7N����!������a�t>�����f��tt\�X����9���v��u�0�alLC@�.��p&{e�1������(��������C�!eN��mLI@V���`������e���� �xz2-|������L��Q����F��)�8�n7����]	�������]D�B�w��j?e���b�����9�w�`H�M��.8E�6�MB�X���@_�Ow*e�p�4��q6
�����[�n�`P�e���m��:���O�l	�g����_'�]�� ���������}8�sro�������������IZ�(��$~�D���O�O��3O%xk:
�92S��'��7�� .H���8A@����HN^�<i�`���Nk�Lx2>?��CC�����s)F�����%M��S��=/�����gc)�����Q��:��+��U������17���wFb�[����mW���J�*TS��w�C��	?�K���-sX
1�9������b�dpL��������/���=:3��*����m]��h�n#Y��LnY2��(N���P�!��\{���Ov_\z�Y���n�jZ����<@������3~^6#T{Q�~��b8rdG��
�]E��a����������!6�5��B0�F�}�j�������{/g��;�����P�\�g��y��cNj%\)�P )r��b�;���w�sA�O�Ct�.f7��-K���9��<��iY8�h�
$�3�H�j�A�% ~��������"mP%o�M��.oR6���Y��x��y��c�7�`���^����L?q�(+���&;o}H�$U�V^F�F���SQ�.�'�ln�������C�[�P�!���O7t�&�z2���z�fR��!%����'�������D�s�������[��(?q/9��Hv�?"�~�	~�$U�;���y��3�F�s������{�����O����|C>���:�J>���F&�}�����f���XHF�Y���9��!�����z�-��|]���������<�X>�����>�^���7�a�V-�H�{@�<\���6�l&����;�Q'�S�"�'Qh�*�w�Hy�R���|W��yE\��j�}=Z�3�
�����~�m�s����Dwv4����4��]A�b,�w=�
3���e���+�H��H�(�,���\�P���-�(�U����"�'!j�]�����
��+	[�T,�S�?y�eO���$��>�������X%��_5L�u3��j��w2�, �|N&���4�����%�U���<��q3uC�V�_����oP��V��u���3�Z����6!J��/����x�:�����o�>�������s[������YaE��hx��	O���E���s95a�E��6c��qwy	���"H���I��sk��R��'U5���|��s�49��#n��������8���6P�K���'�|��x�at�>���s*�\���d:���m��n�O�1�#��t��8���/�>�GE#�l�I�b���g���}h�l�=���*Y�<)@,^s;:�5�>��K��I������������]���A����3�R������TSSZ�4�";��y�C��f<9�H��gI�14�]3p�_�%<��2���g����89�|[������9�i.l��6��t����;�l��1u
u�T>'\��Q�m<z�B���G�0�n��:]�|��\�Q-o<|�����\����>�-US�����{*YY�d���+��d��J/.����2��^�S�����w@�4/�����%�|y�)��r;���7��>&{3�?a����#'q1d�N���DnE�/e�"!e�e�g�	7�U[z����X���!I�|���X���[yEeG�C-�pY{��w�^tTa�Z!�k+����Y�����'������b�
1�!�0�H�W��4�:L���{`���P*�L���P<���h�P��<`Xu���$���Y�.�!D+�0�r�o�`�~Wu���5�p��<��t���T4Z>����O$/lC��w�;�o*����)�Xn��>-��9GP�R�N>Cu���V������0:Z�U�9��B'�k�X�i.�=�S�r^��t�J��.���G��u?L��Xw�m@M����\��F���r��8�/�_K�����P|�/�q~rZ��hR�6���������r������=�ta��pHC���2Q������#�}���E�v��(��J�s�G�����.t�MchT�)�N� gp�Maq�A�~3�} �_�K�5P���B��yl��;`�f~�d�z�A��	���V���5C��N�C�����k�����K^�z�R����8a�(kb4o����8���$	�1�w����;��&r�|�DV1Q�5\��LXe���{�nn��
z�:f��H�t�����9���@+��1W�r�g�m�
��	�y���FJv�3i��!�6Y�a"}��X������}�p��8P��8eat�!W�CQ/@��_,�gFP��w����+�.��\o�^�g�L������9���q�W���h���/V��l��Xde��<�:Q���/u����[�����*q��x!�}/g[�
)�z���O���c����b���f>�q$^����yA#s9#s��X24`#-�����-�K9'���q�����,L5EOHPz�s�j�����I
�D/����,sxN�w�T�aN`�d9�`Lb&�.�e��:O+����7�AVN����B6�-��4�W�%#��b,�������Q1!y�Z��9�c����.���(�����.�I���P�o�Bt*_PNO��
	�[lm	�;>�������	�|�����yBU6�G2�[�<�p�[�!R�j��es��cD$�����)-�p~��8�1��P\�\�,�$6�kz��w������kc���������O��w��r�D]�I����-�!�~)���	��
��n�9����0��v�P��E�RMaS6���f��e8��	p���]B��j+x�}T�4���2w3%�$��y�������!b{W�����3�^lw/h �>��x�{���5bU���M�:��n������}Sa�U��3����MxpZ��1z2B��C���b���Y=��;��da�&����F�Y�5��4B�*L��-Zo����<�����O��hv�+V�\�i&�J�w|����?�x=mT�,�X��&�hO0��(u��R�����p��`v�q4�pnY��b`��	����-SS�e{�q>�j���3�/r�yG�����!��B�r^4�,��B���������,��{k�sW��=eF��Mh����u�)�}�7Aq��yq�&6�}�7������]K����2���?��u�=7����B����s���������m���Z����i�Zc��Q���c=wl����"�e���� z�MI��T���n����e�`����o4aR�e��W)5?�'�d	�zv���jg�4w��mF�W��]<]�I���kG�W��9d���31SS=���3�������U�I�W�����;}���n&�T�1n�������,U�q_�;2�y�O�?��B��%��y��+�V&�]�:�G������������E�"��[��nJ1�rX��6Lk�[�����K�zM�~�GY�����U��#S~3����]\M&��C����'���z���9��S8�#^$��|�$n:#�+vLNb�X���JQ�Y��8.�${I���6���-u��Q�Z��gj]�����umvz�[�Y]����,sQ����p6b�T���FT�}�i����tm8�[�Y]�"����F]K���_o���������2�u}��
�vK5�k`1DU�.D]�����4���]�����Ru��'�Xv����S���_u�I��$M����+q�F���:����,�KdY��������i���a�:�#���X��cz�W����/�V'	���/�e��������S:�i��H��s
/�kXtUn�N�������u6��$>����]�7��e��������L>�<���6N&��0�W��(����o���{E����7~��[���r�	�|����s���d����:��|��87==�7s�<
=yO7�[��YK�
�OU+�q��9}����t��[EE��x�D��<wm8�-sD@�R���}���0�-(�pbK[�QEO'
E�"T��h�K|�2�*X�VT�i��hA���j�2�*X�V��^*Z��-xc��(X�V���FE}�E�]���h~�Q'��xL��D����7�r�)tDJ����H8�}�U~�l+�����;��8�g�������s��`�������aX���VU-'��3^���������L^Lu��������2�2L�3m�c2�z������<&��T?�_��t�a4"S�kZ�|��.x	w���D���[��������g2�{����d�Gs0��[�$��S�
r�o���Q���w	�o��2|��.����n�"��9�Q��<p�[<�i��h�O����5���*��*�=)=>L�:^�$L�Pu��i�
���S 
���}e���av�`B���T>[�=��#!q!z:V���3�[!����f^{I�!)�xA��
�"��:f�%���#�B�Cr�7�y:j��'�w����V�xJ�~�����Zt�a����dCz�q��T��Q��NFD�4�����B��VSgW����[���ek�:���P��#������9�����[����b��l������H����,?<>r�����P�y�L�y��,uwZm����Ht�{ww�%aH�\���ie����q���d]5:1��������0,�a��
R�U��j�^W�;\�@���nz3��QG�����t�m����_����.����.<baP�S��K��z �+z����3w�;�aL�m��K�#�}����R�����4��k.h����:���A�\#�X��~���rg�r�ny���^9��kE���)��S���-���rG����5�B�b��L�b:,:��&�|;*h^�[�c��!�C�vY�;(t�N��D0�6X57�y��I�um���%6���.<�C�������!N�b��8/�����)�����VO|�f�
lm�T��[��u���/����m���p�kT7�n��]��U7�G��7���=D��7���5�n`���:U��u[U��
�G�|n��6����V���j�}���nU(x�����9�B�m|�=���E����
g"os<�����:���*	�)r�����C�g�����^���'Y��I��1S[��,�P��,����4tda���1�,`�e��Z��.7�H��S�Q�y��\��$�
�u������������W�)@:����l6���`�����Y)?PzS��hT��P��v������c����5DN��*|:O/����v���R��mO�+�����T�Q���soHDrR����	�3�21���`��aZ��V�n��ye.�qx��
��4n{O����A@`����2"��y����{y�1UP�0�������v�0*�XT�9/������|b�nf�7T����	 �)�I���k-5�j����M��nJ�;k�e�����-�WR.�]�&M���]��3�
e���9�)�	�E]��M;{�h�Z�����D�ho�Zk��'B�+����S��|}��}I��3a�1}�i��@���=_�F4�=y����P�!4�����E�IhL�����B��O�������{
��������GW��#b������{�����B8�+�SFV3����������wA�~��q���]�	�0��N�����C�����_qC�K�����A������D��o�������.7��w��V}��������IA��]�+�Es��������.��+7����������[�R�rMh��Z��[�r���
�d��>I��]�u���$k^::8�����fkE�w\TI���.��u�x)��w������ �Q���*0�-��;�}������.�S3�9� �\t����`�O4��!.=!#������#�L�e��
R��=5��,�a���u
3�^�W��q&Z�G�*z���O�����B�8�rL2�Mg�:�F��PM�'yP*>�%�#�Pqf9�q�1�[}D��,{��jvd����R���T0|lNi��^cL��6y����;d�iv��0�*v�$�d��i��V���`�������uS����z�c�EG5�u�wS��Qp�F8\S��:>����d(&K��t�����+�����
��2H���6H���?wK+������W�J;y���ia��{a;��L1�!V�0Q��Z�X9M�P��hr���J@���#����c�[� I������aX9
��)�.<[N�0� 
�)y_���,L0P�����U�a��Gr���h&��Q���4���k��N�!*����n���wMZ�$�VF���(�L������@��U�-n-�ubx
nV����9;v;�F�NG�N�c�[n�$k�b�;+����I���Ur���Z7��s��������FF�eC�i���
}B�6����u���Y'[�6��P�i�\�kO�T��w�{�=�7!E$
3U@���W���}�a����CV�N@'����0W����,+��I��	�;�����d*B�_lS%�T.���^�b�o�lv7��6N���ei�>��S�Yi�;=�����-I�V�ai���<*�
n�X�c��������c����Z�[�6J[�����������6#Q����#������uD��=��D��)	�-�U�_��(�s���/�F��_�;<�P� �{���x���{����kTx#�
/��>P�V��_N�
��X8$p����b���v2�	���� ��'J�xW�e�mZ��������	�$���>����	�<���1���)\�O�^��������YF�V�z�^v��:��h����M��p�F�#��~0G�?4�������S�A�����[�9�s%�W��]M�c6(rP��x��/�d�n
�[vT�T1k?z����yl�*"���K'��
C�o��'��u�����z�=Q��$��CF�W|������k����LFqW�d�*�����0�E�TM2D�^ �(�
+>���i��Y!@Y��\2��2�B�E�{Z��u���X�:B�������������	B��o+*O}X�*3%#��Ca#���(����;:�^���U�w����JH����J7wR���Y�0����8��Ju�>La���{��o].��J�L����'���|��$p�����{�r�gS^�����q��Rr%��m�I{��;t��<������>�D��J6O�\N�C��G���X<L�Ey��Y�vO[1������&r���,��Dn�������P�e�8���Im��-��!eJJ������?=��+�.i�o�����-����~I�����6������Q����e�8���t��`� ����hj�M�2�c�O���`�G@F2����0R�YR��O�E��o��?=���������e�c&
����0H�07���������.
�r�"�<\g��X'�a��o���k2�L&C��gw���0P��|�������,|
o���Z����!������`���:��k{�I�0�LM��j�����(�k���9�������&O���kd�����W������/)
Q�p��g6Y�]/�m��oD`�	PL��Y� ��}@/��	�����2��G������1�M�Z�N/$X6`�+�-��W��W ��03����@�����6Yp���0
NY�^��qR90�������A��>����qs	*(QXo�
J��/�-���� n:J�1h(U�00��R�&Wb.\�Gh'��\
���8�I�4�0�g��������o�2/O>��+���a�Y�����:-�E>�YE�k��Y�:[F���+f�����)����T!7���Qd7�D�=��54����x
M�t'i�S�lb��n^�r/ S5�l��y$��������(0��9�M/59�K7 ��;�)/ZR���#*j�r��S�K�a��-�}uyA�wQX�����:+E%�P������

"�������Q��)�}�6�������a�&�,�}����V�a�O�X�*_��%�[[,�����6�s��A���������b�p�rUa�M���I���S~����cj�
�P���
$~A &�mc7�)?�v����Z�.W

��>1|^k�P]�-����r���U�	6Q���v�N���0��N��u��	O��y�Q"j~���?G>���eQ�[�i�N��'�c�� 
�A�$&[�=�z�r��@q~}�wT�{��dE����{7/�Da. �����U�luZE�Z��K_�����>"~�v���W��EaH�B��X��I
�c??N�"h�y��@*1����/��)"���&{���u��MA�I�0�K6h���C�5@k�A�s �m����B�0���h�� H�0E_�9c0����Q<����a
��-Z���<Y�D���2�h:aQ@�b�b����B�j�-ZlL����
��K*� '^;W
��YJ���#�����/�Yu���sg�<��~�7�:������>X��KM���l_���H�]���!#�y|�%723���yO�8��+18�5���0G�han����6-C�����2*���<bY��3b%��4�y����0�z
��W����b����*ryS�r�W�1���
��@A���hv%t]YG��:eC������.suqKzwOzF
�OG��#�c0�O��P�FA�'�!?�����t�r���n��S����l�����,�T���_��d99r� �:��*��yX���B��2�,]����m��R���e�`���C��+�S�<B����03�%�2d��VG��$~{����;eB���hvZaX��D��y�I�[���?@���G?����'�+@��!'v9���s��B�0�hn,%rOI��eH�a�`V��� ��$"F�yl@�Y`�!@�!��	�SP	!AHD�������Sd+������2}�bp� ;�&.5���K�!��5�v�-.�N�vS�I\h��R?�S
��O����`l b��3a��GH����,����X�&�AC�i�Cg��E�tLw�(�|�iQ5c�x|��)?���Ad�F���w����l�~x���&����r��:��M��[E���_��f��0��sE�Y�BBpL�(�n���*���';���w�oX>%W]��N�����*,��W��U��{�al���l��Nr�-�6l��+E(rT�]���6y��Q�3���D~}?��,)��]�:z<��(�B��-����$�)H$H�O^��i����q�_���P���w��P���k��G��Q��f(���:�������d��d[���q��z��7c#i����r���h.��>��_��7��)����A��BoDaZ�e�����-��R��3�K=%�g����+����{��0-��d� ����G��}��3oP��>]^]��j�����57�XB�:��%?���z{�;:���;(����.������u��N�v����q���~!��a�Q�[p����9���d��S�e���uG^�����C��!��=��C�����������S�zo���J�����o�)s�8V��|���������I���!�w
�!<�����u{��.����K#J����91��'f5�pb���q�j��hx��n
��qj�T�Sr�*k*Y���f��/���+p��9W���8'��/�]��r��{A��,�y����@�}�[3P��I�N������"��l���{�VYf;���1�M�`b�?��������������?&>-�EJ����O-�:W|R�(�����\y�9w!�q�q��9>xA�[cV:�����d��~J�@u��-[�R+d�U����T��+�%���[	��-f1~ps�C��0(�a�R���N����y
0����c������l��1SI�qhKb"�����w�ZJ���n�r���qU����~��A�s����)&������z� >����P�s���	zS'�3��~ojyW��9���ba~��U����P@�����yR���������Vr����y`Y�����Cv�x�����W&*r�����&�����9�0�xA�K99R%��O*z����W��O��7m\T�|b��	�������e��a��tHL��6����U\�����.^N�t����}[`��3B�*���Y'J�w�L"��2%|�
o}��Na~����0#l���r�^�]jv�����Z��\��O�
R����H�Ir�$U#�6��iF�X9���n)�%��1G!�6��1��<��e�XV������}�q|��8�H�rv���I�\�c�������H(���~�`������X�V�W����������sG.6�ku�chT�m$���*?N�������T�����b�QS���KX�u*8����"�@"�#1Bs1;c,��+��������9r��M��ol��H��N4848WK�-�V2���L�����/c��`�����4eH���4���|~�j�����z��'v��]���
������B��9�d��M.^�hv����_�	A �AV�����l�[bXm4��`[VSQ�X�%Kz!�gS>�F���t�(8o�r��9�E7��Sq�R;�_
�$G�S���\�x�A?@�78,`o��ET�R�.��A=�y}��*�k�nf�.�z��h�C��f�f�K�u��m#o�<���+�����,;��������a��xMgv��_��9����\���V�$�-h��1XgAR�����t[6I6��^q�����?��k����-��������.��i�����IS�)|��v��5�l��$��0��������"�Z��/�R��ip����~�d���:��\��E�>�"���,�.���{�-��a��s�?%bW����1:����@��42L����(��r�!f��^Kx��:��i�o���A����M��Jd��&�4������6)O��5��Y����S$��(<��uO:��A�
9`h�5���Qc�����fk�5��f&"^��:��b��$���<�m�<(	������XL����1AI[L3����%������QM�j�Dt��<PQ��D��� ���+�/�5K.�E�EQ��Qom�zk^�SeO���Z��m��q�c1S��(j��S�������D�_Q�(j!�W�.
5+j~o��d�{��!��oS�$Ui~����m.�T���,�FFU_�:.�\%{>��)��TB/���q��$�*��5��b1��	<�p�����V;���So���vA�e�-_S�������r&��y��,����)���m��_��M	3�{/��U=��-M�L;�0�JU�Hy������/k���������;�8"�Vd^>R�E��bW���uF����������r6�r�p,����=�2��m�A�/V|��w���e��>I���0���o����s�g�.��
a"*}x$�l9Y��z�����TD����|���C���XyB���f+4b�tM���F���`F�����8����$���^-]��b���Dr�&�Y��4<�8���=�Q ��A���N��`����
�FtZW���]�(DLW����t5�#'R�� Ep� �tA���:u�9���z{��G�(��2��S���|��4�9B\Eg�[�!W8V�|,��!u����r����������z*�>L�O����3�\��#���o�az��,x�i����|�\�!�q!���vov_��Q�7�?[���O��Q��������7/n���[?��~�v�R�[:��3:g�Yu��=,@��~�4�c�T�=Z���p7�t�,Y:��/�4�d���?��M�f���W�����?G�X(�%M8�5&��o]�zM��,������d��c����{��o��]�AI�=Y�.��.���%?I�}������0��c� ,���G��b���,44�����_�M���\����d���,��S��gC$l���%�#�l�t/D�	@����l�fn)�ig�~�������'�.!O�����o�aE�e���R��WT4��|��(
��d����D��`B�JV�_?����,���e���H�{.��ty��~++�����;Z������H��!MI�{���u&����P��$9�� �0` #�&�L��-<���������>�A��[�uuL*������]jss���6�`���C0�Gn��+��4�L����0��eG�
��s��Gl��������VVU���W
������e	���$��	E��H���2�K�j�����)��b�,�������q�09�����8��y�t`���i��#��D�{��!"]b�]�Lu��8�8GV*��z����R!&�+���jI)6u��;���.��&�C��M'@�2.��G�g�V��v����Z������LCw�y���d����>7���;d!U_L�D���CD2������e�x��%��lq��9�A���-u�vukI^�
X�\U��P��������n�fu
���*���G]����:��R��X;YU�E]��E]o��zk^��������_[�C"�~p�m
�u-��Vt�5�k~r*"Y���z����9Ie�?����w�'���������$C���qH/��b|�^s���`�G����aq;���v���Yk�)��M�JW��*1��JW(�N\�S�Y����e�cD�+�n'��)�������J�:��J�{��mV��dz/�tE�n�{1��JW�$+�P��tE�nQ����T�����C��������:tY\��%�/�r����� f�p#��o_rga�������$
�D�� ��3O�o����~s����()�\jT��a��_��"q|���������n������[~�?�TO�?�����&N�������1DRo���J^�[��z��_�h
'+~��^U�6�~�$�5��w�?�l��y������VK,;�Iz�Hz��(Y9��M�~"��~��!LIf�wtg���r��p���=��G���m���wY��x������k�i��/o��[�������c��Dj��R`xL{YrH��&��H^(b�������������}52��n
�Q���/��60;���5����s�����G�qs`C��n�|A��F{��8���3�6�2��-�#Z'�.������t(n���N\-��y����>���W���+k���	�&�����*��a�D;=&��������k"%O��)Zq�!�����s��-���0���������������~�����-�1U��o���]G��J`�L��h�V��~>B+�?9�
6��1@Z���0�X�)$:��`������$�Z6���=���8GBl��L�]"�,L�*���`R6���h�>P�%e�0c}�fW���X�E��!R�R�a��+3�o����0�
M����m��yY1S�!�B����!���!��!:%JorDv�\��,_FB���|���O�>Y�M��>Iq���El�
�G�������d4�0�ES�X*��
��e��\�I�-?�O���j6<w
U���p?y|4}��yT<���?@&����(9ex�jX��FsSy����� ����\��S�"�/�A�TnA{L�(�x�<����r���wk4a���@{��Bbc����F�@��D�9p�q�<8�'�����G�9��!J��i�d��������&6~�����i��������x�'�JP��!��r��u��df�����(�G�]Gb��V������E�
���Zbj�A��06�d�`�V���7i�t�Sd_n�W4��j�{l����N���������}���Rif���7�s�I�����;��j����D���W����U���!�A��:8����roDaZ�e��G��-t�/K���@�c��}; v+��^�O���:v����*7��[�������d���Dw��:����0����q]z�d������g$��i97?�O�.��GoaT�U�zB/���G_���Q������
;�������P���;,��&L���D)�����������]��WG��K4@Y��-��G+csYe�����������
`�pt���Q�!��*��9���0Y��^9�����Q��C>��>���P ������gT�j��@a3�����Gq��x�>�q<����-P�������a�}���@:�^����x4m<:���~������@:�N�,�R����8�r���]��t1��<��n�����q:��	�[����.<�E-�����m�fE�Tf�<�4*��Ei���Je�M�i�6+��J��h� �3�Dd�Z����\����Q����T}���������;,x�Z7���Md�3��
��x��������^���{�D	_]�������	�����Q�����}G6:��x���L%�`���m��rG��r��aT�����|����C�E.����o
6+����1�-u��,���U�f���-"���8^o�a>�^mV���QVcn�P��s@�iz]�Y�+�KqqP�����]�yGF5^���o~e�R���-�0��5f;��������O�����gm���OlE!�s>���-S��#)���0��R�kj
�9�\����T��rA�7j�6�ve.�.��H�J���Vf���\�
_�������'����6%AR����(���KpY��(����?��O�������+�l�-��0�R�p]�s���"j����T�R����(j+�����}�V��o��@Q����~l���~���?��e��>I�c����%Lf����8B��'J��,�\LSn�K��*�V�"!�0*_]nP~�mmTp��������q8l��r���?��'�����M���A�[V�>9�����Db��x�-]!(d����>��C��B��,�Kx�vBP�0:��@���6��8��h���S�*�<U�cXP�~�o��dO^����]�5��X�����u/
����b�M�JJ_L�M]������7����MT�s�E��0.�n��L���~ u�S>~Tf(�����?�����,�;�JiuXF��p�c��x����5JI���$�2���0�T��I�I�����B$�"��Gb9�=�������5�0�EY�e���VMV�!~�n�����^��
�<��A���:�';�T zw��W���X5���r����!C�
Sg��k�=�
t�&9P3��D��� FV��9����N1k�#@�����I�o� ���h�6AN�aw#"�D�n!��cwQj�"p���
t�&�>��%������$��f+�?&���Dh�pk����.�a1P���](�a��jK�C�������g�IZ}h���X!Fc�bW����ihL�����+��;B%���^G8.�t9�x�_���@�#�hOF�{()�"*>Z�� ���c�r�:��<NC�i>~D�H�����^�I�!%�d:]x�_�Qj�#r�ci�N"d�g�j�1����z�Hb�a�������Y���rP���K�M�|��j���
<�8*O�<��in{#4<^��,���*���ff�����'���TO(��/��s��6���p�f��1w����P��-� V�g����k!�9rwCU��DGt�Htf���5�P�Q+d�%3���4'a1�Z�����j��Fura�V� .��GY�����X�PL���w�wE/o�P���`;!��P���Q��hX�Sh����X���U]agI_��X>]�p�b�c�&-�)d�Bx��y����
��k3�dtw�B,�����s����o3|n:b������
����l3�Hm��{tJo�p���?7����p����.��[j����A��j���O������/EN�M�x�I
���	�~<<��EA25����Ko���lG�\y!�2�>�� ��%q�t�	^�i�A�������y��|��\�
�yq>����RR^BBlmSX��6��tD���G���1H+��T�j���Pl��&�v6��#X<��������#�n)�D8dK<��tz��Ro�!��i���5a*�X�6R�h%�2> P&��8]��n��q��[}�����^Q��v�e;[E�O�B�.���z���ao�	��~��u���d���Z0;�2�����a������2�^F`��������r,����[v����g��2���	/3�,�$��vJ�uWW��bO3�k�&���^�_GA�.���L�������{ J�����`��)!^�L�'a��B����~��������P���G��0��\��!)�N���� ��M�	D��6D����8"u������
 �g�!%}��9�,�4+|��+aL�C��~d`��&��4@|�� �x���
�a:L���F	��i��JF&�b$����!�����4>01�
�?��;,�����
v��,�������C}�C�������|>��THp���e����9;|�7�NJu���''/
x�� 4 4�8���m�����Q%"v)|��9>o?� %}���H�fE8��+8`Ad4��>dQ�b�����yH��<F��yHE%F�!����	���
;������G��B"��j0jp�����KMh0����N0��44�s/����rs�{�E%���x9� D�Y��e��)������x�B���h �v2l���%z�h���1��\�Q�Calz4`��������\�iX�/
��c���U����B���`�����z���&�(_N0%`�@�#�!���LO�����M��}J2�Xd�=�z�	d�xR�o ��7�%���'�z0�~4a��6����C���O�c�5�@lt���cs7�Nr���{����J���c�l� o�������(\����^%9�r����S�����kF�I����O^~����w���_B����"G�D���H�{oz�5>�@����������f>�M��n[�>�7��M�^�������~�vdR	P3�%}&79��n8H_o���,6�������W_����o�>���"�/W����b�]�VO��E�O��Ux��{Xg4���0������I�LF��1����d ��\������t��z�2 q�>����#Zv7����(���h19�N�t��7����]�/��7������.:��w���G�-;��}���f�T��.;X�!�����{z���@�D��/���#�����MANJ����'����Q�9�{*��,����
���/wk|h�����xZ�`���Z}G���~�p3��O�1+�������q7��:/��7 c�'��^�[?�d��{L���u�����*�0��I-����@���
���ha�0�=;��6����T
,�=cwU����G��Zv�������+E�${&�������.j�CC�
����� WA9����������~���/�vT&z��$�|����.?����>������oY���d�=!�/;�b�`t�=���?�-�=rEN�:�w��d���1�/�����~/H�F�]�A{��%��1�������	�n�:)Ri��^x
�~����h$��7�e"�z�;ovk�Hs����F�r:;}� F9Z[5bMs�v��g�i�wD�h��;�t�0M�W��kN�h*������E�L�����nI�'(���3�Qq������6"K��7��u���Nv� ���U�UU~U�_h�}��w����HE��e`���<����������b����W�V���cb�����?Q���<��b��1�v���a9q�e�'�J����%�P��9�^������r���5�!�\C��z���A��YdY���7G!u�$�,v���i��D����u�y�@��Rb�����i��$��H�o��7�O�D��f?
-�S��5�`���t@
y������up�Y�g�Ae�AxbJ�,����!��%S4��"�6��V2�8����y�lj�����	����o���c��I�y�aD^����4f�D~u7�0p����|���
t�*PMo5<��ic����<��lJ���KR���K5���_��������R_�S�������������{�v��l����{a���6�T���j�i
~��7�L����N��2�N`��,��_��C����}�v����'F�������h[������B��~��+&c����2.]�X��[$�D�n�����3I3�mB���C����h�o�a���i���-����5��5���$]3�Ap�5����y�?f���rRl�2��tA�����v�W�~4�;�}���w0\�{|z~k�Y����	����
���n�r?��v�������A�eB��q��y�C�*M����*%��i�/RaY�+��q&���N������+��f�OzeV�C��Q�+�.������N�P$V�KP��2*��<��9�NW��;�!;���]S5W��T���~}��	����A�V�R�\����b��HUi��ck���"
����� ����9#d��;��d6ss��r��h�:?�������w|���
��8xE�@x�~�]����R���G$�5%j�
d[���Z��v��kTY�2�5eKv�����J��02p�&��5��s���nM���\��*�O���q��J9��`�0�S6e�����$�q4=��zL�Z1�Ck���������;�Y������L���w�w����1Ty3��l�Vh#���E�VcS�s���n6����dC��A,F&���/�����O�'���N��8Cr��c�?�����=�a�v����^l�y�h����wE����6�H+3���Kg���m�k��&��{)k����l�����)��R��-v�z2����r<>��1-��3#�m��������S���%'��TS'��Z�u'�+H=���}6�'��:��J2H<����� ����|R���;0u=�^��"�r��q�9*4�o�$
b�*{x?6����h�jCP/�t��*��gh�����0b�ko�=���!qFpDx��1OIl�������h4�<n�`�'��X������~���4��z�?�@�\d{�2�6)m�)SZT]/�y��K����_��pk�!"mO:(��XT'q�^���R!�W_w��e�NVb�m�n�t��	�4xEr�Mrz��T����Z'R�'A��)��H��A��H��u"EO$���+v�F���#)�b�"��)��N��J�� F��.F*�X���D���+CN�� 
���X�� ��T���H|�!AH�����q�N}�1#�9��Lp���
R���F��}n�O$�OVG�:%lF����k{��!Go�V�����������Of+��2\��u��4d�(u�G0R��xB�D��b�aJ�:I7t�� 
�M��*]N���U�%�T��%�B}�4�ksR���u���,0��S�����d�����>�U�����U��t��)8��0�:�q��;����<�!���;C��6��Hx�9��ayqH����.)�T��&'*��JHib�����O8�S
QE���O�o�JB�<)h	����g����c�O��j�b:V�WK�A��\�cF:6�>�!%^F26lb���0���9���oSz;�v�!��f� ��>�2j���[U#s=h��
R�U���FY(>!!'AJ�{
q�~��RD�L��v�]�&'Steutr����1�g"���@(�����W�=�0C[�E��@�r���!^(g��Se_Hn�q�����-}��x��CT8�����$��"U�HYt��3p
��Q�!b9V�*eU����5��
Bl
��[���Ce��,��=C��y�����B�B�4�6
;=
�������+�IT�U����g��6���S
�T8l���]��I�}������5���9�����L!�,������e�EIy]��h$h�w�Y��z��u�8�X����x��lA�>;�
��L�	����m4N1A)]�p�t�#�"
�J8:� i���lA�#>��qTZL��P�������P.��el�g���T���:q��w2803�fw7�����_�V8�M�?h��O�	��ps��t�4����]��:�7^y�c[�I����l:������/��
]x7�.F����f\1��A�����@��6{�-�����=~�]���3��lP�~������f���`��7��v��(�B�O)���EPw�'�B�dK�.Z��L���4���O$�8�Y����k�5?���T��)����;�{�'�n�[d������������U���au����lS�#���g��47���j����k�#�3p�Jjr=}&K�b����?$PV#-������"Lg�����R������qv�{�������q����K��
k�����[����q������]^�v�XFV��@��v������A�?�14CG��A?8(���a�54������-�W������yp@��(���6A^
���=���s���/o	e*�<P"^3�!���?{�r�C�w$�*�>{��o�?��718p�y��$e�O7t D����'7�K�������"�I��Xyh�/��f�O�K�f����upw�%���b�������?����t��7��`��L���Y�������������N��1!��y+�b> %����� �i{��|�(�	�>�����~��h�[��n+�n�-s^���I��m��H��>���G��n��IV~����yh�^���;���_Z'�]��yV=�G��N��e���3�ar5��i�2V�lA���/]'�V��d?�B�z�e=(�-�Sx���]7o�'���K��&��!X8���wZ2Y}P��7y��O�jR��!L����(���������������z��I�+{gz�j��C����X{X������Q��wtu���d����?�A���������l�������J�{q�P���o�e~D�m�T~Zl��N��.��O�=��O��*�5�����5��c���g�(���s�W���/+����g�]=l4�������M��QNV���%�3T�� ���W%�my�;��-!��d�%����������7~[��������z��vL���b�ro���1�s��#��w������F�=">�Xy������L�G�"��S��,�&y�!
�������� Gb����M]/����'�,VIA�\}�K������i��-��B�4,(����/J���g���W��(��M��h	d�FKwM���'mzfk�cUN������mA+� 
>���	������M����R�r���W?��z�H+��EkW+Fi�������S�=Bv�Y`�DT�l���w����x�/���?����:��Tg�2:��|�U���a�5����K/�|](MB|���"��������v{?�7�����y��j1�x%�f��4e~���pVD���PL����!Z~I[��0^G�
���D��:���Z���;~SD��`9} ���?}��
;G�n����������/��B������tq��y_�����(������go����������h)�:t�=$����O?��S�w��<$������<=�����o��(�*�����f���#�+����~���8�_^������
G��i�-u[��.?�}JI�v;�|5������pC���n�6)|%�Y�������]���)����T�����7?�m�[��C������bMX�}}�������x�|��R~�G�2������:��^�A��X@��`]�N]<:�+Mj�~����t����#�
=i�VY^��x���=m���a��H}D{I��$�z]z��/�~%
��1"��{����7ufv��<z{�'@��9	N��{I��"�oX��VE<�D�~<�b�9,cv�1����CY�/�*��,�����?�:��j�7�~�>�:'�,Uv�������L*���N���L�@��c�m!���"���?~+��n���^��b�YV��@c;�����V��/{�o������qL�k]��������o��>��.R.��,K��R���_V�����������#g�%���*�]��,`z���D���~���������?�������@w\8
��4�>5�.f����3����L��������CV���x���x��j�����w��-�o�;��;S�w�wfN��g����������$y���JYG<�a���T.E�[$��b6���}e[��) c���@!���R��e����V�tW+�9(���=���0������4��x�8E����������*=/`%/P��������w��O_�2N�6�]1���!�J�bW��\W�\�_(������������{+K��o���nd8N<�����r�o(,�v�9�_�Q������~; d�1�bv�0���#���5�qT������NP���;���v�K�;��E�Q��-�t�'������_��~
j�~H�~�=/�[`R�Y��-V{�;��T����,\S)�g*[���G��)�nL�{����4�������A��&��9E$�Y�����������������S�*~����(��Vaq�o_��d��@o����n���z �T��{D����`yT�Z��5��5*T��t��=�en�v������{�K3�M��mO���
��������6����*;�X����d%v�����v��'6X��wX��\(��H�Bl2>�H��B��5HF?mr���>���UK'�B�N�� ���;=MV��K[�B��2,
�\ /���!�
����t��f|+������
��t�]�C/�&���z\����D���n�-6 ��y�D����U���:�Li_���M��_������~�k~��A�N_�f����?ot���yy�ElX��2��b6d��4Z��}���a�wQ�bK������3��� �dKA�/a�A��~���i�x�z\�P}k������^�fJ�F:Dn�|���V�����0��4�����RJCR�Y��$9[z���y�Z�������+O���K�>Q����v�������������������[��M_�:
��`��B��T�V�a���
\/�k�,��Ng�� )�-�������S\Qx<�>���S\���UK�����A��?���Mg�� �AN���C��py�\����9�p�_���s��S�s�����t�K9�c�ZW��D�z�Y�y0���
����<�Wb'�}�&��7��J�kc�����Hd!�{��vv$��^
�����s�MW��X|~��leVM�Z���Q���~T��\o������m��F�)~F9�P�1��E�>��(O(?�����i��S�x����������v���8��5���6����r�'j�����).A/������b���������]O�R�is3�'�C�Q��J�^�u��t��:�X�@�����<�������7����o�����"/%��36�O��Ii)}/N6��S,��o}v�/���8����.�
������w�������A)A��r�\|������=����(��|��/������Eqr�������vkv�y|�!�(��U������n�H��J�4w(D�\���C��h�C���6�!,&@H�O�}�������o���o��6dO����/�{����t�@���L��`�p�`���1����7\����'�^��������Gi{�f�������lP�5���s����(�;�M���������������������;w���On�ms�4��C)��=
u�0�w|���t�)���]�}\�����:��������b~�������k]���Wd��I�6��i������f�x��c���^`��������-��f�l�.qYR����i^��N�Z���V+�����^w��wbn�]�a�V��+��-Iv�����v��������{�t�Wq�)�NU��z��6��zn�������`?\\�������X ��nD�~����������l���L��|z��g��#z�)"�K��"��H���XZq�~=���sP��@���(`P�����_����
��Z���������s�p��Y������~;�������]�:^�9����,��OQ��!ya����Tuy�o�=�cn�rP��W��.������9�i�}��v�R0��]P����O?���*)[��F�[�d�z�������7$���o�G�c��~����R:x�pq�O�u&����P�q��Lr��=\�9���+���>����.
�fA���Q��qH_N
�{v�+���G�_�F�G}���������f*1A�"QN��h��w@s�o�����3��K�����'�/v�
���B�/��'�X��d�����2a;,������8�7���i�E�x����O������I�^u>���|x�q���'�D~�lYL�-�)�%4Vl`,�Yn�����0c��1J�"O��f���A���k�S���,�����]{[�M��
�����!�%4WVn�-��6�����o_|���s�*���,�B�rx3���J�x�=�r`B��?�����bc�C�D�����(���4�������b���
����/�F�����B�%�+F�s���o.��KK��_���	(�A^@y{qP��������7}����%}�.�s��J}SY��J�������K�{!�����C�R��5p�����70/�K�JJ��t,h�S�T���
�m�,���x-OGM-_D���!M�;�W���WW�]��k(jP������������;��1U�)}T�P��_��Q)�P�v@��P��5@��s�\F����_�����G^��:",�&���4�����(�=E���/K:^�3B���Bc����5�d��
��Y��0�<:N��:N7,�v���3�zN�X
����?P�;'N����F]z���<�	��/z"
�NP�h���{u�O]��JG�E#�����?>�m3~�ZcD$����������9q����W���jg��/�^��5�0Y���oz��Rn�n`m�����$��z`�HJm���9I����'��1���Qrp��A=�fKq�U������*k����Q����\�m|��g��|j�^�y�t��E�����m�CD����|��l�'������#����r1p�p�u�^���o���t�~2���_�S���mS�v�d��`#y+`,��/~nCU����A��+�3��[��0�t����IMkM�YS�k9�����\
�&�p�N'�n�r�����^u���T����#��3�����7����^�	����\�B(�qQ���G,���"��ln�����u�I�!���#����?s��~?=s���r��5��������>�BK��������<!M$���B��ZR07P���u2��?����X�T��#�6(.P=7��<�U3y�H=�J�<� ���[@qO�[P5��sq��!��XO���2���9>F��d�9^F����s�0�gSI�x������*����za��V��l���%EN�M�=x�H�9f��
�,��G5����
M��V���Z��H�Rmgy��tH.�^��mfJ��^d�k� ��u�4�C[3���N����i�:��O��Yz���(�K�\Y��,���[�	�T�:@�T{��*���R�
OLc�u�$-Q���$�:��H��%�F$=O�8I��k����<K�V)������E�(����n4%���SR�R���-I��K5+
��M�N�>���4Q�)no5���@�[��_���tE��E�F(�JRC
��*�+���p]�t)�FV�
h6o�����[�*7��[�e���oc�	fo
�3�Gi��T���K�p
u�@����l"J���N�4���������j�%v/qkM�K����z�k|%�	�Y�(;�I4�l�
�Vf�[���i$Q����*TY�f&Em���}�DQ�
6�`U����:St"��&l��)
�T!�����>KT�����]U�ut�C�	V�V*_��)�'9~DQ7)�|��D��x�����2[��G��������A��h���H�����)�",�T�bN��:4�5��}����N0./����
���-������,�[�jD��{Y�^��
e���'#yj�y/�x���(MKt�iO�B�%Vn�l$M���X�B�t;Q���D�~4�AuW_��r������,�&aaYJ���/��;rJ��}
K�=�+�v���������	����RRlL%�mj
��9;T�&��]�T���,j���Q���ji������5��+���0������������D���v������
#�Y�id���y�Z��aO�B�U������^��3]M����s�i��%/>-���zm���'_bs��'w�n���]���;��|��,���|���c�y�`�*�j-�U����S8�9��H>��<n����S��;�%�*�e�	�w���a�N���/V0��D��C�e��M����j�2+�	�k-��C�:�kJ�������\��m6��U�R�&+iI������-��UC�*g�U�Z`Z����Mq��j�?�RUW����LU��,���'2t���o����T�&��&������
��x��|a�Q�Z�e/N�	���iR5�ZI������|%�*��E57������'�?>\��;�����1~BS�<�|�|}q���P,��M8�g�����g����S��X���'�IV�v��	 BB��PP��H�������4����;��]���b�8�����__f;)���'%hd9
 A$Y�D�bn�1�	��P���?�����G�������e��
G
��Q	y�����9in�uw����)�C��O���zv��=L���MA�]�B���sD��<�HW?��'����w<q�����L�?i���hgQJ�n�����/����b�2�Y<f�s�D`�<�0�L]����%T��r����B���.	�K����xU(��Za�0����R0!��P;�� =7r��v;��?�N�|W�{	����{��p�E�;�gHM���S��t%�nf��P��J(f&�PC�\�$�8=M��
k@�$`-W������IM5|JM���t#)BWj�Um$��������|�Y�k��+�����]U�E�K����[OMyK�U/���B���L�js�F$b��NE�m^;�7�u�����~,��6�!�����@�� ;8	~p�$�(�^���|��>�E�p�*Z����N�2mN��V&�DB�L�S	u`2�y��67� ��u�YBLj�O9���<�&�����Q?��|p��X�~�ys��^��og���^��%��+�p����?V��������#)��,�� "�B&�/�������6��nK�`%R�)��j�5`y��	t�����E����2���	�	Q�]~�(���ZX�Q#IMQ����"u=�����[pD���FJ�e�9I�!��y�������R�b�z��T
�Z�����2��;�����OO;��R��&�j9��j:(�� �������.�*!	9�
�53��H^���S1 ������Lp���U��h^�.���8���s����9��<p����s�K}>���hV�xBC����G0�:����/�D���v���R��rc��j>�
�x���-nU��xo!D�v"?�O)��h��?w�����~�c���:Y�"7DM��Z8z���u8���"	�p:�I���2����OW��B��,W/��B��	��8K��C
�b\��=�O���Qmk�g�U������FA&�3�p{3~�
����D���y�Ow�a�*��E����4�}�,��_����26�E��;a��������I�N�%�F����@D�B����]�}|���O)�Q����/W���{�b>����5X:���/=����
1����~%|��x?~��Z���{0{����Ah/=.���rYTJ��P���>�N���|�G-F'��h�
Wc6�T���Q� G��a��:������i�#Tbu��!�c�i��H�{7������!u��7{����d�-'����9?��
�{�A�i����YtZ��hJ�j��O�A�'_����a��5"��?�'x���j�����KXxxnx�����%,c`,�����Da�;��8
�;������x���R����m,������}u��8������9�����#�1�@L�0�����/p\�w����<���
��]*n�FCKX��2�Xbq��~��q;�����[���
���������n��-�X���mw@��w��C���
2A'��c�u����F������6�v@(;NS�z�]�%,�GR��|�A-
��m~�vQlW����m�Kx���E�OH}����Q:k"<A���	k�&,���JD����(��OI�5%A��3l�;�	9~����(����dlc��P��s'�8�;}PzF2>������e�*�!]a$k�P�=���Q���=�n8�I���Z�����=�� ��n���Ymn,���9K�+���x��k�MW��_})[�����t�����[>mq��Vx�[_�6,g5�lj��$����p��B6_ ������U�+�,Za$!s���I�v
&44i���=g�	"�$��FH���@h������q�8:��������2<h)��r������������U����zX���T��i��d��O���Z/�����������=_�"��;
js�Zz�\y"�<�W�5��P�
.
�l<VXx<��
}
���\�l��|����NS#-�5��P��;� V�B�3�����$�%��i�z;d���������[I9v6��K�l||��&����T@��$ ."�H"���]#	=�>���U�������,�8�4����2����v"^>k�~��5N�w9���&�����Y��G�{W��~�G�����z~[z�?�����&J�:�f���6?tT$�/�����P�(�N|�������B7,|��Gcg�����N�h~�\�:1������������s���yi�
\T1���7����?�3��u6��Ao�V�d���&��&2P_�=l
��u	_+tu?�����b�`g�\|�?�=�}��X�"�.��j4��7�gQ#2�5"eR#2l�M�������?������|����2�����M��L��������0��r�v`�)
$��}OSn������1�H���z����AJ����v�Q��k���RLx��Sr|��7E��u�3�O8SbG��z+��j2ON3m3=QY�,:Y?�Y�P��]��%E���_j�J�+P�$ ��Y��Q��[vmjh�)�*Lc��u{����rOi��^�(�m����1L�=��3aB'���p��I�^]�$�u%lnZ��JXF ����W[>e[�[r2����iOliN[VZ)/uU�����������m�6�Y��G�������s<����'��tWP���&��?�������(�����*��d�	I���c�����
������[���;��Z����,����ey�G/[������w�?/���
����|[����S��u�x�8�
�W�z���[e�7H������>�F���CWv*&�NU�(����S����U���_��@���T8��������;��{V����FJ��f��I���bU������M]��"�57D�An���.\�T�d>V+\�JA�Bp�|6�&����&��������\#(e�������I���~���b�:���b#�)l�#�5������|�{��.��By���U���W�j���	���v�/Q����4p_W���wbD�G�����,�O� ��EKd�
K���'�w�����7��>[U���Q��0�>F�]�X�Z�Iv'�ZM�<��1�?N����1Vg�S��n������q�j�H�Ud��i�A���Y���d��]�IN�nL�M����O��R7�������`O��=�b��NW�[=��XU��Vbk��,������I����_��J\��>!\+���a�t{�
��[~�[�����XE�f���a���O��^my���3���y@
�q��(���?�����~J�����k��W��M�-����
��:n���f���}���_��g��S�������x��y�����,�8�z�Zz��r�?��`�M}�E@��w�������8�����eJNR�}�����_u���_~Z����qI����&�c�����W���C&}{1�6������{�Z�6>d���	%������H��.�6�h�Ahv������4��5�Zb�4������
���x���%R5-qJ)�j�I����CH�E Vc!��X$O����p�M���D�E��	��%�<��\0�m|���`�6�h��h��B ���2���R���2�g�m����	���R�!yY�#7K��$�p$�mK�@4������D#ry��fB�}������8"�����i��&�cXK1��S-{�+�lp���I�(���Y�d����a)���g2��g�I��&�����q8mxB�_����>����MO���,x����hLI�k)x���^��%H�>�y���l<����h��/X�.�f�������S�����������w��F�|v���iv �R�X���j��j0�
�[�qWMh��������pO>��8�'��FvL\vo�7����R��������z F�+��k����*�p�$#�U�y!xIC�;������c��
^:�R�"��g����B2$[�m���������Qw�J�x�Tn���`y����)���jr�~=Q8���$Y��a�
T��r�?������S��� �[X��e
@ep����{���|1��=��������w���|H��v|<��4�O����� ���(,��@����
�y���"2<����,�e�f���S,x���M<��2������*x
� �OCl������q�M�v=5z&����a 5��_�K��&��-��H~2�7��r*�<,~�Ed�8��W�bo2TGXi�)!�XI�$;V*R�x�9��]�
�����x�7$����<�0��M����V��q�N�~�.����s�]�}�}����?�����s������0
v5-0010-Replace-OIDs-with-human-readable-names.patch.tar.gzapplication/x-gzip; name=v5-0010-Replace-OIDs-with-human-readable-names.patch.tar.gzDownload
v5-0011-Type-aliases-for-OID-lookups.patchtext/x-patch; charset=US-ASCII; name=v5-0011-Type-aliases-for-OID-lookups.patchDownload
From ba814e507b384cad94bb603dbab036405a24c09f Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Wed, 27 Dec 2017 18:23:57 +0700
Subject: [PATCH v5 11/13] Type aliases for OID lookups

Introduce dummy type aliases for OIDs referring to index access methods,
operators, opfamilies, and types. Teach genbki.pl to do the necessary OID
lookups, and to turn the aliases back into 'oid' when writing DDL. Since
all the lookup tables are now built before we start writing the data to
BKI files, we can be less stringent about the order the catalogs are
processed.
---
 src/backend/catalog/README        |   1 -
 src/backend/catalog/genbki.pl     | 151 ++++++++++++++++++++++++++++++++------
 src/include/catalog/genbki.h      |  10 +++
 src/include/catalog/pg_amop.h     |  12 +--
 src/include/catalog/pg_amproc.h   |   6 +-
 src/include/catalog/pg_cast.h     |   4 +-
 src/include/catalog/pg_opclass.h  |   8 +-
 src/include/catalog/pg_operator.h |  10 +--
 src/include/catalog/pg_opfamily.h |   2 +-
 src/include/catalog/pg_range.h    |   4 +-
 10 files changed, 163 insertions(+), 45 deletions(-)

diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 3b2cef6..72aad06 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -137,7 +137,6 @@ POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
-Within this list, pg_type.h must come before pg_attribute.h.
 Also, indexing.h must be last, since the indexes can't be created until all
 the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index bc52bc6..c15ed20 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -124,6 +124,69 @@ my $BOOTSTRAP_SUPERUSERID =
 my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
 
+# Build lookup tables for reg* substitutions and for pg_attribute
+# copies of pg_type values.
+
+# procedure OID lookup
+my %regprocoids;
+foreach my $row (@{ $catalog_data{pg_proc} })
+{
+	if (defined($regprocoids{ $row->{proname} }))
+	{
+		$regprocoids{ $row->{proname} } = 'MULTIPLE';
+	}
+	else
+	{
+		$regprocoids{ $row->{proname} } = $row->{oid};
+	}
+}
+
+# index access method OID lookup
+my %regamoids;
+foreach my $row (@{ $catalog_data{pg_am} })
+{
+	$regamoids{$row->{amname}} = $row->{oid};
+}
+
+# operator OID lookup
+my %regoperoids;
+foreach my $row (@{ $catalog_data{pg_operator} })
+{
+	# There is no unique name, so we need to invent one that contains
+	# the relevant type names.
+	my $key = sprintf "%s(%s,%s)",
+	  $row->{oprname}, $row->{oprleft}, $row->{oprright};
+	$regoperoids{$key} = $row->{oid};
+}
+
+# opfamily OID lookup
+my %regopfoids;
+foreach my $row (@{ $catalog_data{pg_opfamily} })
+{
+	# There is no unique name, so we need to combine access method
+	# and opfamily name.
+	my $key = sprintf "%s/%s",
+	  $row->{opfmethod}, $row->{opfname};
+	$regopfoids{$key} = $row->{oid};
+}
+
+# type lookups
+my %regtypeoids;
+my @types;
+foreach my $row (@{ $catalog_data{pg_type} })
+{
+	$regtypeoids{$row->{typname}} = $row->{oid};
+	push @types, $row;
+}
+
+# We use OID aliases to indicate when to do OID lookups, so column names
+# have to be turned back into 'oid' before writing the CREATE command.
+my %RENAME_REGOID = (
+	regam => 'oid',
+	regoper => 'oid',
+	regopf => 'oid',
+	regtype => 'oid');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -132,8 +195,6 @@ print $bki "# PostgreSQL $major_version\n";
 # vars to hold data needed for schemapg.h
 my %schemapg_entries;
 my @tables_needing_macros;
-my %regprocoids;
-my @types;
 
 # var to hold data for oid_symbols.h
 my %oid_symbols;
@@ -159,9 +220,12 @@ foreach my $catname (@catnames)
 	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
-		my $atttype = $column->{type};
 		push @attnames, $attname;
 
+		my $atttype = $column->{type};
+		$atttype = $RENAME_REGOID{$atttype}
+		  if exists $RENAME_REGOID{$atttype};
+
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -207,38 +271,85 @@ foreach my $catname (@catnames)
 				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
 				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
+				# Replace reg* columns' values with OIDs.
 				if ($atttype eq 'regproc')
 				{
+					# If we don't have a unique value to substitute,
+					# just do nothing (regprocin will complain).
 					my $procoid = $regprocoids{ $bki_values{$attname} };
 					$bki_values{$attname} = $procoid
 					  if defined($procoid) && $procoid ne 'MULTIPLE';
 				}
+				elsif ($atttype eq 'regam')
+				{
+					my $amoid = $regamoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $amoid
+					  if defined($amoid);
+				}
+				elsif ($atttype eq 'regopf')
+				{
+					my $opfoid = $regopfoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $opfoid
+					  if defined($opfoid);
+				}
+				elsif ($atttype eq 'regoper')
+				{
+					my $operoid = $regoperoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $operoid
+					  if defined($operoid);
+				}
+				elsif ($atttype eq 'regtype')
+				{
+					my $typeoid = $regtypeoids{ $bki_values{$attname} };
+					$bki_values{$attname} = $typeoid
+					  if defined($typeoid);
+				}
 			}
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
+			# We can't do regtype lookups in a general way for
+			# pg_proc, so do special handling here.
 			if ($catname eq 'pg_proc')
 			{
-				if (defined($regprocoids{ $bki_values{proname} }))
+
+				# prorettype
+				# Note: We could handle this automatically by using the
+				# 'regtype' alias, but then we would have to teach
+				# emit_pgattr_row() to change the attribute type back to
+				# oid. Since we have to treat pg_proc differently anyway,
+				# just do the type lookup manually here.
+				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+				$bki_values{prorettype} = $rettypeoid
+				  if defined($rettypeoid);
+
+				# proargtypes
+				if ($bki_values{proargtypes})
 				{
-					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
+					my @argtypenames = split /\s+/, $bki_values{proargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proargtypes} = join(' ', @argtypeoids);
 				}
-				else
+
+				# proallargtypes
+				if ($bki_values{proallargtypes} ne '_null_')
 				{
-					$regprocoids{ $bki_values{proname} } = $bki_values{oid};
+					$bki_values{proallargtypes} =~ s/[{}]//g;
+					my @argtypenames = split /,/, $bki_values{proallargtypes};
+					my @argtypeoids;
+					foreach my $argtypename (@argtypenames)
+					{
+						my $argtypeoid  = $regtypeoids{$argtypename};
+						push @argtypeoids, $argtypeoid;
+					}
+					$bki_values{proallargtypes} =
+						'{' . join(',', @argtypeoids) . '}';
 				}
 			}
 
-			# Save pg_type info for pg_attribute processing below
-			if ($catname eq 'pg_type')
-			{
-				my %type = %bki_values;
-				push @types, \%type;
-			}
-
 			# Store OID symbols for later.
 			if (exists $bki_values{oid_symbol})
 			{
@@ -278,8 +389,6 @@ foreach my $catname (@catnames)
 	{
 
 		# For pg_attribute.h, we generate data entries ourselves.
-		# NB: pg_type.h must come before pg_attribute.h in the input list
-		# of catalog names, since we use info from pg_type.h here.
 		foreach my $table_name (@catnames)
 		{
 			my $table = $catalogs{$table_name};
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 5537b61..70d2761 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -37,6 +37,16 @@
 /* Specifies an abbreviated label for a column name */
 #define BKI_ABBREV(abbrev)
 
+/* ----------------
+ *	Some columns of type Oid have human-readable entries that are
+ *	resolved when creating postgres.bki.
+ * ----------------
+ */
+#define regam Oid
+#define regoper Oid
+#define regopf Oid
+#define regtype Oid
+
 /*
  * This is never defined; it's here only for documentation.
  *
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index c73f24b..247f067 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -56,13 +56,13 @@
 CATALOG(pg_amop,2602)
 {
 	/* the index opfamily this entry is for */
-	Oid			amopfamily BKI_ABBREV(opf);
+	regopf		amopfamily BKI_ABBREV(opf);
 
 	/* operator's left input data type */
-	Oid			amoplefttype BKI_ABBREV(lt);
+	regtype		amoplefttype BKI_ABBREV(lt);
 
 	/* operator's right input data type */
-	Oid			amoprighttype BKI_ABBREV(rt);
+	regtype		amoprighttype BKI_ABBREV(rt);
 
 	/* operator strategy number */
 	int16		amopstrategy BKI_ABBREV(str);
@@ -71,13 +71,13 @@ CATALOG(pg_amop,2602)
 	char		amoppurpose BKI_ABBREV(pur) BKI_DEFAULT(s);
 
 	/* the operator's pg_operator OID */
-	Oid			amopopr BKI_ABBREV(oper);
+	regoper		amopopr BKI_ABBREV(oper);
 
 	/* the index access method this entry is for */
-	Oid			amopmethod BKI_ABBREV(am);
+	regam		amopmethod BKI_ABBREV(am);
 
 	/* ordering opfamily OID, or 0 if search op */
-	Oid			amopsortfamily BKI_DEFAULT(0);
+	regopf		amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* allowed values of amoppurpose: */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index afdfeb1..17ed0e2 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -45,13 +45,13 @@
 CATALOG(pg_amproc,2603)
 {
 	/* the index opfamily this entry is for */
-	Oid			amprocfamily BKI_ABBREV(opf);
+	regopf		amprocfamily BKI_ABBREV(opf);
 
 	/* procedure's left input data type */
-	Oid			amproclefttype BKI_ABBREV(lt);
+	regtype		amproclefttype BKI_ABBREV(lt);
 
 	/* procedure's right input data type */
-	Oid			amprocrighttype BKI_ABBREV(rt);
+	regtype		amprocrighttype BKI_ABBREV(rt);
 
 	/* support procedure index */
 	int16		amprocnum BKI_ABBREV(num);
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 93e7b56..fbe9949 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -32,8 +32,8 @@
 
 CATALOG(pg_cast,2605)
 {
-	Oid			castsource;		/* source datatype for cast */
-	Oid			casttarget;		/* destination datatype for cast */
+	regtype		castsource;		/* source datatype for cast */
+	regtype		casttarget;		/* destination datatype for cast */
 	Oid			castfunc;		/* cast function; 0 = binary coercible */
 	char		castcontext;	/* contexts in which cast can be used */
 	char		castmethod;		/* cast method */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index f44a0aa..c9ed806 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -51,7 +51,7 @@
 
 CATALOG(pg_opclass,2616)
 {
-	Oid			opcmethod;		/* index access method opclass is for */
+	regam		opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
 
 	/* namespace of this opclass */
@@ -60,14 +60,14 @@ CATALOG(pg_opclass,2616)
 	/* opclass owner */
 	Oid			opcowner BKI_DEFAULT(PGUID);
 
-	Oid			opcfamily;		/* containing operator family */
-	Oid			opcintype;		/* type of data indexed by opclass */
+	regopf		opcfamily;		/* containing operator family */
+	regtype		opcintype;		/* type of data indexed by opclass */
 
 	/* T if opclass is default for opcintype */
 	bool		opcdefault BKI_DEFAULT(t);
 
 	/* type of data in index, or InvalidOid */
-	Oid			opckeytype BKI_DEFAULT(0);
+	regtype		opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index cd6e227..a099c9f 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -51,19 +51,19 @@ CATALOG(pg_operator,2617)
 	bool		oprcanhash BKI_DEFAULT(f);
 
 	/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprleft;
+	regtype		oprleft;
 
 	/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprright;
+	regtype		oprright;
 
 	/* result datatype */
-	Oid			oprresult;
+	regtype		oprresult;
 
 	/* OID of commutator oper, or 0 if none */
-	Oid			oprcom BKI_DEFAULT(0);
+	regoper		oprcom BKI_DEFAULT(0);
 
 	/* OID of negator oper, or 0 if none */
-	Oid			oprnegate BKI_DEFAULT(0);
+	regoper		oprnegate BKI_DEFAULT(0);
 
 	/* OID of underlying function */
 	regproc		oprcode;
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index a9be48f..ce3b07e 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -31,7 +31,7 @@
 
 CATALOG(pg_opfamily,2753)
 {
-	Oid			opfmethod;		/* index access method opfamily is for */
+	regam		opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
 
 	/* namespace of this opfamily */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index fa57096..e0bf704 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -30,8 +30,8 @@
 
 CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 {
-	Oid			rngtypid;		/* OID of owning range type */
-	Oid			rngsubtype;		/* OID of range's element type (subtype) */
+	regtype		rngtypid;		/* OID of owning range type */
+	regtype		rngsubtype;		/* OID of range's element type (subtype) */
 	Oid			rngcollation;	/* collation for this range type, or 0 */
 	Oid			rngsubopc;		/* subtype's btree opclass */
 	regproc		rngcanonical;	/* canonicalize range, or 0 */
-- 
2.7.4

v5-0012-Reduce-indentation-level.patchtext/x-patch; charset=US-ASCII; name=v5-0012-Reduce-indentation-level.patchDownload
From cb1d1e8e4270072eede11e1ea997a50e85590b71 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Wed, 27 Dec 2017 18:29:43 +0700
Subject: [PATCH v5 12/13] Reduce indentation level

A previous commit removed a logical block level from Catalog.pm, but
kept the indentation for the sake of patch readability. Fix that here.

Separate out the pg_attribute logic of genbki.pl into its own function
and skip checking if the data is defined. This both narrows and shortens
the data writing loop of the script.
---
 src/backend/catalog/Catalog.pm | 223 ++++++++++++------------
 src/backend/catalog/genbki.pl  | 380 +++++++++++++++++++++--------------------
 2 files changed, 302 insertions(+), 301 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index a8a406a..49195dc 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -33,149 +33,148 @@ sub ParseHeader
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-		my $declaring_attributes;
-		my %catalog;
-		$catalog{columns} = [];
-		$catalog{toasting} = [];
-		$catalog{indexing} = [];
-		my $is_varlen     = 0;
+	my $declaring_attributes;
+	my %catalog;
+	$catalog{columns} = [];
+	$catalog{toasting} = [];
+	$catalog{indexing} = [];
+	my $is_varlen     = 0;
 
-		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		# Scan the input file.
-		while (<$ifh>)
+	# Scan the input file.
+	while (<$ifh>)
+	{
+
+		# Strip C-style comments.
+		s;/\*(.|\n)*\*/;;g;
+		if (m;/\*;)
 		{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
-			{
+			# handle multi-line comments properly.
+			my $next_line = <$ifh>;
+			die "$input_file: ends within C-style comment\n"
+			  if !defined $next_line;
+			$_ .= $next_line;
+			redo;
+		}
 
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
-			}
+		# Strip useless whitespace and trailing semicolons.
+		chomp;
+		s/^\s+//;
+		s/;\s*$//;
+		s/\s+/ /g;
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+		# Push the data into the appropriate data structure.
+		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+		{
+			my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
+			push @{ $catalog{toasting} },
+			  "declare toast $toast_oid $index_oid on $toast_name\n";
+		}
+		elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+		{
+			my ($is_unique, $index_name, $index_oid, $using) =
+			  ($1, $2, $3, $4);
+			push @{ $catalog{indexing} },
+			  sprintf(
+				"declare %sindex %s %s %s\n",
+				$is_unique ? 'unique ' : '',
+				$index_name, $index_oid, $using);
+		}
+		elsif (/^BUILD_INDICES/)
+		{
+			push @{ $catalog{indexing} }, "build indices\n";
+		}
+		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+		{
+			$catalog{catname} = $1;
+			$catalog{relation_oid} = $2;
 
-			# Push the data into the appropriate data structure.
-			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{toasting} },
-				  "declare toast $toast_oid $index_oid on $toast_name\n";
-			}
-			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+			$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
+			$catalog{shared_relation} =
+			  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
+			$catalog{without_oids} =
+			  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
+			$catalog{rowtype_oid} =
+			  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
+			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
+			$declaring_attributes = 1;
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
+			if (/^#/)
 			{
-				my ($is_unique, $index_name, $index_oid, $using) =
-				  ($1, $2, $3, $4);
-				push @{ $catalog{indexing} },
-				  sprintf(
-					"declare %sindex %s %s %s\n",
-					$is_unique ? 'unique ' : '',
-					$index_name, $index_oid, $using);
+				if (/^#ifdef\s+CATALOG_VARLEN/)
+				{
+					$is_varlen = 1;
+				}
+				next;
 			}
-			elsif (/^BUILD_INDICES/)
+			if (/^}/)
 			{
-				push @{ $catalog{indexing} }, "build indices\n";
+				undef $declaring_attributes;
 			}
-			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			else
 			{
-				$catalog{catname} = $1;
-				$catalog{relation_oid} = $2;
+				my %column;
+				my @attopts = split /\s+/, $_;
+				my $atttype = shift @attopts;
+				my $attname = shift @attopts;
+				die "parse error ($input_file)"
+				  unless ($attname and $atttype);
 
-				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
-				$catalog{shared_relation} =
-				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
-				$catalog{without_oids} =
-				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				$catalog{rowtype_oid} =
-				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
-				$declaring_attributes = 1;
-			}
-			elsif ($declaring_attributes)
-			{
-				next if (/^{|^$/);
-				if (/^#/)
+				if (exists $RENAME_ATTTYPE{$atttype})
 				{
-					if (/^#ifdef\s+CATALOG_VARLEN/)
-					{
-						$is_varlen = 1;
-					}
-					next;
+					$atttype = $RENAME_ATTTYPE{$atttype};
 				}
-				if (/^}/)
+				if ($attname =~ /(.*)\[.*\]/)    # array attribute
 				{
-					undef $declaring_attributes;
+					$attname = $1;
+					$atttype .= '[]';
 				}
-				else
+
+				$column{type} = $atttype;
+				$column{name} = $attname;
+				if ($is_varlen)
 				{
-					my %column;
-					my @attopts = split /\s+/, $_;
-					my $atttype = shift @attopts;
-					my $attname = shift @attopts;
-					die "parse error ($input_file)"
-					  unless ($attname and $atttype);
+					$column{is_varlen} = 1;
+				}
 
-					if (exists $RENAME_ATTTYPE{$atttype})
+				foreach my $attopt (@attopts)
+				{
+					if ($attopt eq 'BKI_FORCE_NULL')
 					{
-						$atttype = $RENAME_ATTTYPE{$atttype};
+						$column{forcenull} = 1;
 					}
-					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 					{
-						$attname = $1;
-						$atttype .= '[]';
+						$column{forcenotnull} = 1;
 					}
-
-					$column{type} = $atttype;
-					$column{name} = $attname;
-					if ($is_varlen)
+					elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
 					{
-						$column{is_varlen} = 1;
+						$column{default} = $1;
 					}
-
-					foreach my $attopt (@attopts)
+					elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
 					{
-						if ($attopt eq 'BKI_FORCE_NULL')
-						{
-							$column{forcenull} = 1;
-						}
-						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
-						{
-							$column{forcenotnull} = 1;
-						}
-						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
-						{
-							$column{default} = $1;
-						}
-						elsif ($attopt =~ /BKI_ABBREV\((\S+)\)/)
-						{
-							$column{abbrev} = $1;
-						}
-						else
-						{
-							die
-"unknown column option $attopt on column $attname";
-						}
+						$column{abbrev} = $1;
+					}
+					else
+					{
+						die "unknown column option $attopt on column $attname";
+					}
 
-						if ($column{forcenull} and $column{forcenotnull})
-						{
-							die "$attname is forced both null and not null";
-						}
+					if ($column{forcenull} and $column{forcenotnull})
+					{
+						die "$attname is forced both null and not null";
 					}
-					push @{ $catalog{columns} }, \%column;
 				}
+				push @{ $catalog{columns} }, \%column;
 			}
 		}
-		close $ifh;
+	}
+	close $ifh;
 	return \%catalog;
 }
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index c15ed20..640dc9e 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -252,215 +252,140 @@ foreach my $catname (@catnames)
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog_data{$catname})
-	{
-
-		# Ordinary catalog with a data file
-		foreach my $row (@{ $catalog_data{$catname} })
-		{
-			my %bki_values = %$row;
-
-			# Perform required substitutions on fields
-			foreach my $column (@$schema)
-			{
-				my $attname = $column->{name};
-				my $atttype = $column->{type};
-
-				# Substitute constant values we acquired above.
-				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
-
-				# Replace reg* columns' values with OIDs.
-				if ($atttype eq 'regproc')
-				{
-					# If we don't have a unique value to substitute,
-					# just do nothing (regprocin will complain).
-					my $procoid = $regprocoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $procoid
-					  if defined($procoid) && $procoid ne 'MULTIPLE';
-				}
-				elsif ($atttype eq 'regam')
-				{
-					my $amoid = $regamoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $amoid
-					  if defined($amoid);
-				}
-				elsif ($atttype eq 'regopf')
-				{
-					my $opfoid = $regopfoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $opfoid
-					  if defined($opfoid);
-				}
-				elsif ($atttype eq 'regoper')
-				{
-					my $operoid = $regoperoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $operoid
-					  if defined($operoid);
-				}
-				elsif ($atttype eq 'regtype')
-				{
-					my $typeoid = $regtypeoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $typeoid
-					  if defined($typeoid);
-				}
-			}
-
-			# We can't do regtype lookups in a general way for
-			# pg_proc, so do special handling here.
-			if ($catname eq 'pg_proc')
-			{
-
-				# prorettype
-				# Note: We could handle this automatically by using the
-				# 'regtype' alias, but then we would have to teach
-				# emit_pgattr_row() to change the attribute type back to
-				# oid. Since we have to treat pg_proc differently anyway,
-				# just do the type lookup manually here.
-				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
-				$bki_values{prorettype} = $rettypeoid
-				  if defined($rettypeoid);
-
-				# proargtypes
-				if ($bki_values{proargtypes})
-				{
-					my @argtypenames = split /\s+/, $bki_values{proargtypes};
-					my @argtypeoids;
-					foreach my $argtypename (@argtypenames)
-					{
-						my $argtypeoid  = $regtypeoids{$argtypename};
-						push @argtypeoids, $argtypeoid;
-					}
-					$bki_values{proargtypes} = join(' ', @argtypeoids);
-				}
-
-				# proallargtypes
-				if ($bki_values{proallargtypes} ne '_null_')
-				{
-					$bki_values{proallargtypes} =~ s/[{}]//g;
-					my @argtypenames = split /,/, $bki_values{proallargtypes};
-					my @argtypeoids;
-					foreach my $argtypename (@argtypenames)
-					{
-						my $argtypeoid  = $regtypeoids{$argtypename};
-						push @argtypeoids, $argtypeoid;
-					}
-					$bki_values{proallargtypes} =
-						'{' . join(',', @argtypeoids) . '}';
-				}
-			}
-
-			# Store OID symbols for later.
-			if (exists $bki_values{oid_symbol})
-			{
-				if (!@tables_with_oid_symbols
-				    or $tables_with_oid_symbols[-1] ne $catname)
-				{
-					push @tables_with_oid_symbols, $catname;
-					$oid_symbols{$catname} = [];
-				}
-
-				push @{ $oid_symbols{$catname} },
-				  sprintf "#define %s %s",
-				    $bki_values{oid_symbol}, $bki_values{oid};
-			}
-
-			# Add quotes where necessary.
-			quote_bki_values(\%bki_values, $schema);
-
-			# Write to postgres.bki
-			bki_insert(\%bki_values, @attnames);
-
-			# Write comments to postgres.description and
-			# postgres.shdescription
-			if (defined $bki_values{descr})
-			{
-				printf $descr "%s\t%s\t0\t%s\n",
-				  $bki_values{oid}, $catname, $bki_values{descr};
-			}
-			if (defined $bki_values{shdescr})
-			{
-				printf $shdescr "%s\t%s\t%s\n",
-				  $bki_values{oid}, $catname, $bki_values{shdescr};
-			}
-		}
-	}
 	if ($catname eq 'pg_attribute')
 	{
+		gen_pg_attribute($schema, @attnames);
+	}
 
-		# For pg_attribute.h, we generate data entries ourselves.
-		foreach my $table_name (@catnames)
-		{
-			my $table = $catalogs{$table_name};
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
+	{
+		my %bki_values = %$row;
 
-			# Currently, all bootstrapped relations also need schemapg.h
-			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if !$table->{schema_macro};
+		# Perform required substitutions on fields
+		foreach my $column (@$schema)
+		{
+			my $attname = $column->{name};
+			my $atttype = $column->{type};
 
-			$schemapg_entries{$table_name} = [];
-			push @tables_needing_macros, $table_name;
+			# Substitute constant values we acquired above.
+			# (It's intentional that this can apply to parts of a field).
+			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-			# Generate entries for user attributes.
-			my $attnum       = 0;
-			my $priornotnull = 1;
-			my @user_attrs   = @{ $table->{columns} };
-			foreach my $attr (@user_attrs)
+			# Replace reg* columns' values with OIDs.
+			if ($atttype eq 'regproc')
+			{
+				# If we don't have a unique value to substitute,
+				# just do nothing (regprocin will complain).
+				my $procoid = $regprocoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $procoid
+				  if defined($procoid) && $procoid ne 'MULTIPLE';
+			}
+			elsif ($atttype eq 'regam')
+			{
+				my $amoid = $regamoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $amoid
+				  if defined($amoid);
+			}
+			elsif ($atttype eq 'regopf')
+			{
+				my $opfoid = $regopfoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $opfoid
+				  if defined($opfoid);
+			}
+			elsif ($atttype eq 'regoper')
+			{
+				my $operoid = $regoperoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $operoid
+				  if defined($operoid);
+			}
+			elsif ($atttype eq 'regtype')
 			{
-				$attnum++;
-				my %row;
-				$row{attnum}   = $attnum;
-				$row{attrelid} = $table->{relation_oid};
+				my $typeoid = $regtypeoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $typeoid
+				  if defined($typeoid);
+			}
+		}
+
+		# We can't do regtype lookups in a general way for
+		# pg_proc, so do special handling here.
+		if ($catname eq 'pg_proc')
+		{
 
-				emit_pgattr_row(\%row, $schema, $attr, $priornotnull);
-				$priornotnull &= ($row{attnotnull} eq 't');
+			# prorettype
+			# Note: We could handle this automatically by using the
+			# 'regtype' alias, but then we would have to teach
+			# emit_pgattr_row() to change the attribute type back to
+			# oid. Since we have to treat pg_proc differently anyway,
+			# just do the type lookup manually here.
+			my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+			$bki_values{prorettype} = $rettypeoid
+			  if defined($rettypeoid);
 
-				# If it's bootstrapped, put an entry in postgres.bki.
-				if ($table->{bootstrap})
+			# proargtypes
+			if ($bki_values{proargtypes})
+			{
+				my @argtypenames = split /\s+/, $bki_values{proargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
 				{
-					bki_insert(\%row, @attnames);
+					my $argtypeoid  = $regtypeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
 				}
-
-				# Store schemapg entries for later.
-				emit_schemapg_row(\%row, $schema);
-				push @{ $schemapg_entries{$table_name} },
-				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @row{@attnames});
+				$bki_values{proargtypes} = join(' ', @argtypeoids);
 			}
 
-			# Generate entries for system attributes.
-			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($table->{bootstrap})
+			# proallargtypes
+			if ($bki_values{proallargtypes} ne '_null_')
 			{
-				$attnum = 0;
-				my @SYS_ATTRS = (
-					{ name => 'ctid',     type => 'tid' },
-					{ name => 'oid',      type => 'oid' },
-					{ name => 'xmin',     type => 'xid' },
-					{ name => 'cmin',     type => 'cid' },
-					{ name => 'xmax',     type => 'xid' },
-					{ name => 'cmax',     type => 'cid' },
-					{ name => 'tableoid', type => 'oid' });
-				foreach my $attr (@SYS_ATTRS)
+				$bki_values{proallargtypes} =~ s/[{}]//g;
+				my @argtypenames = split /,/, $bki_values{proallargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
 				{
-					$attnum--;
-					my %row;
-					$row{attnum}        = $attnum;
-					$row{attrelid}      = $table->{relation_oid};
-					$row{attstattarget} = '0';
+					my $argtypeoid  = $regtypeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
+				}
+				$bki_values{proallargtypes} =
+					'{' . join(',', @argtypeoids) . '}';
+			}
+		}
+
+		# Store OID symbols for later.
+		if (exists $bki_values{oid_symbol})
+		{
+			if (!@tables_with_oid_symbols
+				or $tables_with_oid_symbols[-1] ne $catname)
+			{
+				push @tables_with_oid_symbols, $catname;
+				$oid_symbols{$catname} = [];
+			}
 
-					emit_pgattr_row(\%row, $schema, $attr, 1);
+			push @{ $oid_symbols{$catname} },
+			  sprintf "#define %s %s",
+				$bki_values{oid_symbol}, $bki_values{oid};
+		}
 
-					# Omit the oid column if the catalog doesn't have them
-					next
-					  if $table->{without_oids}
-						  && $row{attname} eq 'oid';
+		# Add quotes where necessary.
+		quote_bki_values(\%bki_values, $schema);
 
-					bki_insert(\%row, @attnames);
-				}
-			}
+		# Write to postgres.bki
+		bki_insert(\%bki_values, @attnames);
+
+		# Write comments to postgres.description and
+		# postgres.shdescription
+		if (defined $bki_values{descr})
+		{
+			printf $descr "%s\t%s\t0\t%s\n",
+			  $bki_values{oid}, $catname, $bki_values{descr};
+		}
+		if (defined $bki_values{shdescr})
+		{
+			printf $shdescr "%s\t%s\t%s\n",
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
-
 	print $bki "close $catname\n";
 }
 
@@ -608,6 +533,83 @@ sub quote_bki_values
 	}
 }
 
+# For pg_attribute.h, we generate data entries ourselves.
+sub gen_pg_attribute
+{
+	my $schema = shift;
+	my @attnames = @_;
+
+	foreach my $table_name (@catnames)
+	{
+		my $table = $catalogs{$table_name};
+
+		# Currently, all bootstrapped relations also need schemapg.h
+		# entries, so skip if the relation isn't to be in schemapg.h.
+		next if !$table->{schema_macro};
+
+		$schemapg_entries{$table_name} = [];
+		push @tables_needing_macros, $table_name;
+
+		# Generate entries for user attributes.
+		my $attnum       = 0;
+		my $priornotnull = 1;
+		my @user_attrs   = @{ $table->{columns} };
+		foreach my $attr (@user_attrs)
+		{
+			$attnum++;
+			my %row;
+			$row{attnum}   = $attnum;
+			$row{attrelid} = $table->{relation_oid};
+
+			emit_pgattr_row(\%row, $schema, $attr, $priornotnull);
+			$priornotnull &= ($row{attnotnull} eq 't');
+
+			# If it's bootstrapped, put an entry in postgres.bki.
+			if ($table->{bootstrap})
+			{
+				bki_insert(\%row, @attnames);
+			}
+
+			# Store schemapg entries for later.
+			emit_schemapg_row(\%row, $schema);
+			push @{ $schemapg_entries{$table_name} },
+			  sprintf "{ %s }",
+				join(', ', grep { defined $_ } @row{@attnames});
+		}
+
+		# Generate entries for system attributes.
+		# We only need postgres.bki entries, not schemapg.h entries.
+		if ($table->{bootstrap})
+		{
+			$attnum = 0;
+			my @SYS_ATTRS = (
+				{ name => 'ctid',     type => 'tid' },
+				{ name => 'oid',      type => 'oid' },
+				{ name => 'xmin',     type => 'xid' },
+				{ name => 'cmin',     type => 'cid' },
+				{ name => 'xmax',     type => 'xid' },
+				{ name => 'cmax',     type => 'cid' },
+				{ name => 'tableoid', type => 'oid' });
+			foreach my $attr (@SYS_ATTRS)
+			{
+				$attnum--;
+				my %row;
+				$row{attnum}        = $attnum;
+				$row{attrelid}      = $table->{relation_oid};
+				$row{attstattarget} = '0';
+
+				emit_pgattr_row(\%row, $schema, $attr, 1);
+
+				# some catalogs don't have oids
+				next
+				  if $table->{without_oids}
+					  && $row{attname} eq 'oid';
+
+				bki_insert(\%row, @attnames);
+			}
+		}
+	}
+}
 
 # Given the schema of pg_attribute, generate an entry for it using information
 # about the attribute it describes.  Any value that is not handled here
-- 
2.7.4

v5-0013-Move-toast-index-macros-to-the-pg_-catalog-header.patchtext/x-patch; charset=US-ASCII; name=v5-0013-Move-toast-index-macros-to-the-pg_-catalog-header.patchDownload
From 7436cb981e21782f058ae97c1f63c0dc67fac57c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 24 Dec 2017 20:23:24 +0700
Subject: [PATCH v5 13/13] Move toast/index macros to the pg_* catalog headers.

This makes the catalog headers the Single Point of Truth for schema info.
Some files included toasting.h or indexing.h solely for the OID of a
catalog's index or toast table. This patch removes those #includes.
---
 contrib/dblink/dblink.c                       |   1 -
 contrib/sepgsql/database.c                    |   1 -
 contrib/sepgsql/proc.c                        |   1 -
 contrib/sepgsql/relation.c                    |   1 -
 contrib/sepgsql/schema.c                      |   1 -
 src/backend/catalog/Catalog.pm                |   4 -
 src/backend/catalog/Makefile                  |   4 +-
 src/backend/catalog/README                    |   8 +-
 src/backend/catalog/catalog.c                 |   2 -
 src/backend/catalog/genbki.pl                 |  13 +-
 src/backend/catalog/objectaddress.c           |   1 -
 src/backend/catalog/pg_inherits.c             |   1 -
 src/backend/commands/aggregatecmds.c          |   1 -
 src/backend/commands/indexcmds.c              |   1 -
 src/backend/replication/logical/message.c     |   2 -
 src/backend/utils/adt/enum.c                  |   1 -
 src/backend/utils/cache/relfilenodemap.c      |   1 -
 src/backend/utils/cache/syscache.c            |   1 -
 src/backend/utils/cache/ts_cache.c            |   1 -
 src/backend/utils/cache/typcache.c            |   1 -
 src/backend/utils/init/postinit.c             |   1 -
 src/include/catalog/duplicate_oids            |   2 +-
 src/include/catalog/genbki.h                  |  23 ++
 src/include/catalog/indexing.h                | 322 --------------------------
 src/include/catalog/pg_aggregate.h            |   3 +
 src/include/catalog/pg_am.h                   |   5 +
 src/include/catalog/pg_amop.h                 |   7 +
 src/include/catalog/pg_amproc.h               |   5 +
 src/include/catalog/pg_attrdef.h              |   7 +
 src/include/catalog/pg_attribute.h            |   5 +
 src/include/catalog/pg_auth_members.h         |   5 +
 src/include/catalog/pg_authid.h               |   4 +
 src/include/catalog/pg_cast.h                 |   5 +
 src/include/catalog/pg_class.h                |   7 +
 src/include/catalog/pg_collation.h            |   5 +
 src/include/catalog/pg_constraint.h           |  10 +
 src/include/catalog/pg_conversion.h           |   7 +
 src/include/catalog/pg_database.h             |   5 +
 src/include/catalog/pg_db_role_setting.h      |   6 +
 src/include/catalog/pg_default_acl.h          |   5 +
 src/include/catalog/pg_depend.h               |   5 +
 src/include/catalog/pg_description.h          |   4 +
 src/include/catalog/pg_enum.h                 |   7 +
 src/include/catalog/pg_event_trigger.h        |   5 +
 src/include/catalog/pg_extension.h            |   5 +
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +
 src/include/catalog/pg_foreign_server.h       |   5 +
 src/include/catalog/pg_foreign_table.h        |   3 +
 src/include/catalog/pg_index.h                |   5 +
 src/include/catalog/pg_inherits.h             |   5 +
 src/include/catalog/pg_init_privs.h           |   3 +
 src/include/catalog/pg_language.h             |   5 +
 src/include/catalog/pg_largeobject.h          |   3 +
 src/include/catalog/pg_largeobject_metadata.h |   3 +
 src/include/catalog/pg_namespace.h            |   5 +
 src/include/catalog/pg_opclass.h              |   5 +
 src/include/catalog/pg_operator.h             |   5 +
 src/include/catalog/pg_opfamily.h             |   5 +
 src/include/catalog/pg_partitioned_table.h    |   3 +
 src/include/catalog/pg_pltemplate.h           |   3 +
 src/include/catalog/pg_policy.h               |   5 +
 src/include/catalog/pg_proc.h                 |   6 +
 src/include/catalog/pg_publication.h          |   7 +
 src/include/catalog/pg_publication_rel.h      |   3 +
 src/include/catalog/pg_range.h                |   3 +
 src/include/catalog/pg_replication_origin.h   |   5 +
 src/include/catalog/pg_rewrite.h              |   6 +
 src/include/catalog/pg_seclabel.h             |   4 +
 src/include/catalog/pg_sequence.h             |   3 +
 src/include/catalog/pg_shdepend.h             |   5 +
 src/include/catalog/pg_shdescription.h        |   6 +
 src/include/catalog/pg_shseclabel.h           |   6 +
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   8 +
 src/include/catalog/pg_subscription.h         |   5 +
 src/include/catalog/pg_subscription_rel.h     |   3 +
 src/include/catalog/pg_tablespace.h           |   5 +
 src/include/catalog/pg_transform.h            |   5 +
 src/include/catalog/pg_trigger.h              |   8 +
 src/include/catalog/pg_ts_config.h            |   5 +
 src/include/catalog/pg_ts_config_map.h        |   3 +
 src/include/catalog/pg_ts_dict.h              |   5 +
 src/include/catalog/pg_ts_parser.h            |   5 +
 src/include/catalog/pg_ts_template.h          |   5 +
 src/include/catalog/pg_type.h                 |   5 +
 src/include/catalog/pg_user_mapping.h         |   5 +
 src/include/catalog/toasting.h                |  40 ----
 src/include/catalog/unused_oids               |   2 +-
 88 files changed, 347 insertions(+), 401 deletions(-)

diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index a7e22b3..664b23d 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -38,7 +38,6 @@
 
 #include "access/htup_details.h"
 #include "access/reloptions.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_foreign_data_wrapper.h"
 #include "catalog/pg_foreign_server.h"
diff --git a/contrib/sepgsql/database.c b/contrib/sepgsql/database.c
index 8fc5a87..66f71b4 100644
--- a/contrib/sepgsql/database.c
+++ b/contrib/sepgsql/database.c
@@ -16,7 +16,6 @@
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/pg_database.h"
-#include "catalog/indexing.h"
 #include "commands/dbcommands.h"
 #include "commands/seclabel.h"
 #include "utils/builtins.h"
diff --git a/contrib/sepgsql/proc.c b/contrib/sepgsql/proc.c
index 14faa5fa..f1045cf 100644
--- a/contrib/sepgsql/proc.c
+++ b/contrib/sepgsql/proc.c
@@ -15,7 +15,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_namespace.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/contrib/sepgsql/relation.c b/contrib/sepgsql/relation.c
index 228869a..df0dd65 100644
--- a/contrib/sepgsql/relation.c
+++ b/contrib/sepgsql/relation.c
@@ -14,7 +14,6 @@
 #include "access/heapam.h"
 #include "access/htup_details.h"
 #include "access/sysattr.h"
-#include "catalog/indexing.h"
 #include "catalog/dependency.h"
 #include "catalog/pg_attribute.h"
 #include "catalog/pg_class.h"
diff --git a/contrib/sepgsql/schema.c b/contrib/sepgsql/schema.c
index d418577..5ca87e7 100644
--- a/contrib/sepgsql/schema.c
+++ b/contrib/sepgsql/schema.c
@@ -15,7 +15,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_database.h"
 #include "catalog/pg_namespace.h"
 #include "commands/seclabel.h"
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 49195dc..9ed67b7 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -82,10 +82,6 @@ sub ParseHeader
 				$is_unique ? 'unique ' : '',
 				$index_name, $index_oid, $using);
 		}
-		elsif (/^BUILD_INDICES/)
-		{
-			push @{ $catalog{indexing} }, "build indices\n";
-		}
 		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 		{
 			$catalog{catname} = $1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 270dc9e..ae2f405 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -25,8 +25,7 @@ include $(top_srcdir)/src/backend/common.mk
 all: $(BKIFILES) oid_symbols.h schemapg.h
 
 # Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
+# the catalog header files are assembled into postgres.bki.
 
 POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
@@ -46,7 +45,6 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
 	pg_subscription_rel.h \
-	toasting.h indexing.h \
     )
 
 POSTGRES_BKI_DATA = $(wildcard $(top_srcdir)/src/include/catalog/*.dat)
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 72aad06..72b0b4c 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -137,10 +137,10 @@ POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
-Also, indexing.h must be last, since the indexes can't be created until all
-the tables are in place, and toasting.h should probably be next-to-last
-(or at least after all the tables that need toast tables).  There are
-reputedly some other order dependencies in the .bki list, too.
+There are reputedly some other order dependencies in the BKI list, too.
+
+-As of Postgres 11, toast and index declarations are stored in the relevant
+pg_*.h file, and not in toasting.h or indexing.h.
 
 -----------------------------------------------------------------
 
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index f50ae3e..fc8c5ed 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -24,7 +24,6 @@
 #include "access/sysattr.h"
 #include "access/transam.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_auth_members.h"
 #include "catalog/pg_authid.h"
@@ -39,7 +38,6 @@
 #include "catalog/pg_subscription.h"
 #include "catalog/pg_tablespace.h"
 #include "catalog/pg_type.h"
-#include "catalog/toasting.h"
 #include "miscadmin.h"
 #include "storage/fd.h"
 #include "utils/fmgroids.h"
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 640dc9e..f5bcd9f 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -92,11 +92,8 @@ foreach my $header (@input_files)
 	my $catname = $catalog->{catname};
 	my $schema  = $catalog->{columns};
 
-	if (defined $catname)
-	{
-		push @catnames, $catname;
-		$catalogs{$catname} = $catalog;
-	}
+	push @catnames, $catname;
+	$catalogs{$catname} = $catalog;
 
 	if (-e $datfile)
 	{
@@ -392,7 +389,10 @@ foreach my $catname (@catnames)
 # Any information needed for the BKI that is not contained in a pg_*.h header
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
-# Write out declare toast/index statements
+# Write out declare toast/index statements. Index commands must be last,
+# since the indexes can't be created until all the tables are in place,
+# and toast commands are next-to-last to make sure they are run after
+# creating all the tables that need toast tables.
 foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
@@ -402,6 +402,7 @@ foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
+print $bki "build indices\n";
 
 
 # Now generate schemapg.h
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 9553675..f32cd9e 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -18,7 +18,6 @@
 #include "access/htup_details.h"
 #include "access/sysattr.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/objectaddress.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_amop.h"
diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c
index 1bd8a58..94a4bf9 100644
--- a/src/backend/catalog/pg_inherits.c
+++ b/src/backend/catalog/pg_inherits.c
@@ -22,7 +22,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_inherits.h"
 #include "catalog/pg_inherits_fn.h"
 #include "parser/parse_type.h"
diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c
index 2e2ee88..d09ca8a 100644
--- a/src/backend/commands/aggregatecmds.c
+++ b/src/backend/commands/aggregatecmds.c
@@ -24,7 +24,6 @@
 
 #include "access/htup_details.h"
 #include "catalog/dependency.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_aggregate_fn.h"
 #include "catalog/pg_proc.h"
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 97091dd..0daa020 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -22,7 +22,6 @@
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/index.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_opclass.h"
 #include "catalog/pg_opfamily.h"
diff --git a/src/backend/replication/logical/message.c b/src/backend/replication/logical/message.c
index ef7d6c5..7a72f88 100644
--- a/src/backend/replication/logical/message.c
+++ b/src/backend/replication/logical/message.c
@@ -35,8 +35,6 @@
 
 #include "access/xact.h"
 
-#include "catalog/indexing.h"
-
 #include "nodes/execnodes.h"
 
 #include "replication/message.h"
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c
index 048a08d..b3dae6b 100644
--- a/src/backend/utils/adt/enum.c
+++ b/src/backend/utils/adt/enum.c
@@ -16,7 +16,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_enum.h"
 #include "libpq/pqformat.h"
 #include "utils/array.h"
diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c
index 3e811e1..0526781 100644
--- a/src/backend/utils/cache/relfilenodemap.c
+++ b/src/backend/utils/cache/relfilenodemap.c
@@ -16,7 +16,6 @@
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "access/htup_details.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_class.h"
 #include "catalog/pg_tablespace.h"
 #include "miscadmin.h"
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 888edbb..e547c2c 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -22,7 +22,6 @@
 
 #include "access/htup_details.h"
 #include "access/sysattr.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_amop.h"
diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c
index 29cf93a..f5c8d66 100644
--- a/src/backend/utils/cache/ts_cache.c
+++ b/src/backend/utils/cache/ts_cache.c
@@ -30,7 +30,6 @@
 #include "access/heapam.h"
 #include "access/htup_details.h"
 #include "access/xact.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_ts_config.h"
 #include "catalog/pg_ts_config_map.h"
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index f6450c4..2fdc34d 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -48,7 +48,6 @@
 #include "access/nbtree.h"
 #include "access/parallel.h"
 #include "access/session.h"
-#include "catalog/indexing.h"
 #include "catalog/pg_am.h"
 #include "catalog/pg_constraint.h"
 #include "catalog/pg_enum.h"
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 20f1d27..128255b 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -26,7 +26,6 @@
 #include "access/xact.h"
 #include "access/xlog.h"
 #include "catalog/catalog.h"
-#include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_authid.h"
 #include "catalog/pg_database.h"
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 9732f61..e7af174 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"));
 }
 
 my %oidcounts;
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 70d2761..9735430 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -57,4 +57,27 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * Statements the bootstrap parser will turn into BootstrapToastTable
+ * commands. Each line specifies the system catalog that needs a toast
+ * table, the OID to assign to the toast table, and the OID to assign to
+ * the toast table's index.  The reason we hard-wire these OIDs is that we
+ * need stable OIDs for shared relations, and that includes toast tables of
+ * shared relations.
+ */
+#define DECLARE_TOAST(name,toastoid,indexoid)
+
+/* Statements the bootstrap parser will turn into DefineIndex calls.
+ * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX.  The first two
+ * arguments are the index name and OID, the rest is much like a standard
+ * 'create index' SQL command.
+ *
+ * For each index, we also provide a #define for its OID.  References to
+ * the index in the C code should always use these #defines, not the actual
+ * index name (much less the numeric OID).
+ */
+#define DECLARE_INDEX(name,oid,decl)
+#define DECLARE_UNIQUE_INDEX(name,oid,decl)
+
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index f1f42a8..fb843f7 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -40,326 +40,4 @@ extern void CatalogTupleUpdateWithInfo(Relation heapRel,
 						   CatalogIndexState indstate);
 extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
-
-/*
- * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for Catalog.pm.
- */
-#define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
-#define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
-#define BUILD_INDICES
-
-
-/*
- * What follows are lines processed by genbki.pl to create the statements
- * the bootstrap parser will turn into DefineIndex calls.
- *
- * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX.  The first two
- * arguments are the index name and OID, the rest is much like a standard
- * 'create index' SQL command.
- *
- * For each index, we also provide a #define for its OID.  References to
- * the index in the C code should always use these #defines, not the actual
- * index name (much less the numeric OID).
- */
-
-DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops));
-#define AggregateFnoidIndexId  2650
-
-DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops));
-#define AmNameIndexId  2651
-DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops));
-#define AmOidIndexId  2652
-
-DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
-#define AccessMethodStrategyIndexId  2653
-DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
-#define AccessMethodOperatorIndexId  2654
-DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops));
-#define AccessMethodOperatorOidIndexId	2756
-
-DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
-#define AccessMethodProcedureIndexId  2655
-DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops));
-#define AccessMethodProcedureOidIndexId  2757
-
-DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
-#define AttrDefaultIndexId	2656
-DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops));
-#define AttrDefaultOidIndexId  2657
-
-DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
-#define AttributeRelidNameIndexId  2658
-DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
-#define AttributeRelidNumIndexId  2659
-
-DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops));
-#define AuthIdRolnameIndexId	2676
-DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops));
-#define AuthIdOidIndexId	2677
-
-DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops));
-#define AuthMemRoleMemIndexId	2694
-DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops));
-#define AuthMemMemRoleIndexId	2695
-
-DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops));
-#define CastOidIndexId	2660
-DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops));
-#define CastSourceTargetIndexId  2661
-
-DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops));
-#define ClassOidIndexId  2662
-DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops));
-#define ClassNameNspIndexId  2663
-DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
-#define ClassTblspcRelfilenodeIndexId  3455
-
-DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
-#define CollationNameEncNspIndexId 3164
-DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(oid oid_ops));
-#define CollationOidIndexId  3085
-
-DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
-#define ConstraintNameNspIndexId  2664
-DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops));
-#define ConstraintRelidIndexId	2665
-DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops));
-#define ConstraintTypidIndexId	2666
-DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops));
-#define ConstraintOidIndexId  2667
-
-DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
-#define ConversionDefaultIndexId  2668
-DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
-#define ConversionNameNspIndexId  2669
-DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops));
-#define ConversionOidIndexId  2670
-
-DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops));
-#define DatabaseNameIndexId  2671
-DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops));
-#define DatabaseOidIndexId	2672
-
-DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
-#define DependDependerIndexId  2673
-DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
-#define DependReferenceIndexId	2674
-
-DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
-#define DescriptionObjIndexId  2675
-DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops));
-#define SharedDescriptionObjIndexId 2397
-
-DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops));
-#define EnumOidIndexId	3502
-DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops));
-#define EnumTypIdLabelIndexId 3503
-DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, on pg_enum using btree(enumtypid oid_ops, enumsortorder float4_ops));
-#define EnumTypIdSortOrderIndexId 3534
-
-DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops));
-#define IndexIndrelidIndexId  2678
-DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops));
-#define IndexRelidIndexId  2679
-
-DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
-#define InheritsRelidSeqnoIndexId  2680
-DECLARE_INDEX(pg_inherits_parent_index, 2187, on pg_inherits using btree(inhparent oid_ops));
-#define InheritsParentIndexId  2187
-
-DECLARE_UNIQUE_INDEX(pg_init_privs_o_c_o_index, 3395, on pg_init_privs using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
-#define InitPrivsObjIndexId  3395
-
-DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops));
-#define LanguageNameIndexId  2681
-DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops));
-#define LanguageOidIndexId	2682
-
-DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops));
-#define LargeObjectLOidPNIndexId  2683
-
-DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops));
-#define LargeObjectMetadataOidIndexId	2996
-
-DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops));
-#define StatisticExtOidIndexId	3380
-DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops));
-#define StatisticExtNameIndexId 3997
-DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops));
-#define StatisticExtRelidIndexId 3379
-
-DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
-#define NamespaceNameIndexId  2684
-DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
-#define NamespaceOidIndexId  2685
-
-DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
-#define OpclassAmNameNspIndexId  2686
-DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops));
-#define OpclassOidIndexId  2687
-
-DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops));
-#define OperatorOidIndexId	2688
-DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
-#define OperatorNameNspIndexId	2689
-
-DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
-#define OpfamilyAmNameNspIndexId  2754
-DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops));
-#define OpfamilyOidIndexId	2755
-
-DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops));
-#define PLTemplateNameIndexId  1137
-
-DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops));
-#define ProcedureOidIndexId  2690
-DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
-#define ProcedureNameArgsNspIndexId  2691
-
-DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops));
-#define RewriteOidIndexId  2692
-DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops));
-#define RewriteRelRulenameIndexId  2693
-
-DECLARE_UNIQUE_INDEX(pg_sequence_seqrelid_index, 5002, on pg_sequence using btree(seqrelid oid_ops));
-#define SequenceRelidIndexId	5002
-
-DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
-#define SharedDependDependerIndexId		1232
-DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
-#define SharedDependReferenceIndexId	1233
-
-DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops));
-#define StatisticRelidAttnumInhIndexId	2696
-
-DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops));
-#define TablespaceOidIndexId  2697
-DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops));
-#define TablespaceNameIndexId  2698
-
-DECLARE_UNIQUE_INDEX(pg_transform_oid_index, 3574, on pg_transform using btree(oid oid_ops));
-#define TransformOidIndexId 3574
-DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, on pg_transform using btree(trftype oid_ops, trflang oid_ops));
-#define TransformTypeLangIndexId  3575
-
-DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, on pg_trigger using btree(tgconstraint oid_ops));
-#define TriggerConstraintIndexId  2699
-DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops));
-#define TriggerRelidNameIndexId  2701
-DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops));
-#define TriggerOidIndexId  2702
-
-DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, on pg_event_trigger using btree(evtname name_ops));
-#define EventTriggerNameIndexId  3467
-DECLARE_UNIQUE_INDEX(pg_event_trigger_oid_index, 3468, on pg_event_trigger using btree(oid oid_ops));
-#define EventTriggerOidIndexId	3468
-
-DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops));
-#define TSConfigNameNspIndexId	3608
-DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops));
-#define TSConfigOidIndexId	3712
-
-DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
-#define TSConfigMapIndexId	3609
-
-DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops));
-#define TSDictionaryNameNspIndexId	3604
-DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops));
-#define TSDictionaryOidIndexId	3605
-
-DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops));
-#define TSParserNameNspIndexId	3606
-DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops));
-#define TSParserOidIndexId	3607
-
-DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops));
-#define TSTemplateNameNspIndexId	3766
-DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops));
-#define TSTemplateOidIndexId	3767
-
-DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops));
-#define TypeOidIndexId	2703
-DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops));
-#define TypeNameNspIndexId	2704
-
-DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_oid_index, 112, on pg_foreign_data_wrapper using btree(oid oid_ops));
-#define ForeignDataWrapperOidIndexId	112
-DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, on pg_foreign_data_wrapper using btree(fdwname name_ops));
-#define ForeignDataWrapperNameIndexId	548
-
-DECLARE_UNIQUE_INDEX(pg_foreign_server_oid_index, 113, on pg_foreign_server using btree(oid oid_ops));
-#define ForeignServerOidIndexId 113
-DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, on pg_foreign_server using btree(srvname name_ops));
-#define ForeignServerNameIndexId	549
-
-DECLARE_UNIQUE_INDEX(pg_user_mapping_oid_index, 174, on pg_user_mapping using btree(oid oid_ops));
-#define UserMappingOidIndexId	174
-DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, on pg_user_mapping using btree(umuser oid_ops, umserver oid_ops));
-#define UserMappingUserServerIndexId	175
-
-DECLARE_UNIQUE_INDEX(pg_foreign_table_relid_index, 3119, on pg_foreign_table using btree(ftrelid oid_ops));
-#define ForeignTableRelidIndexId 3119
-
-DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, on pg_default_acl using btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
-#define DefaultAclRoleNspObjIndexId 827
-DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btree(oid oid_ops));
-#define DefaultAclOidIndexId	828
-
-DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops));
-#define DbRoleSettingDatidRolidIndexId	2965
-
-DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_pattern_ops));
-#define SecLabelObjectIndexId				3597
-
-DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_pattern_ops));
-#define SharedSecLabelObjectIndexId			3593
-
-DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops));
-#define ExtensionOidIndexId 3080
-DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, on pg_extension using btree(extname name_ops));
-#define ExtensionNameIndexId 3081
-
-DECLARE_UNIQUE_INDEX(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops));
-#define RangeTypidIndexId					3542
-
-DECLARE_UNIQUE_INDEX(pg_policy_oid_index, 3257, on pg_policy using btree(oid oid_ops));
-#define PolicyOidIndexId				3257
-
-DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using btree(polrelid oid_ops, polname name_ops));
-#define PolicyPolrelidPolnameIndexId				3258
-
-DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops));
-#define ReplicationOriginIdentIndex 6001
-
-DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_pattern_ops));
-#define ReplicationOriginNameIndex 6002
-
-DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops));
-#define PartitionedRelidIndexId			 3351
-
-DECLARE_UNIQUE_INDEX(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops));
-#define PublicationObjectIndexId 6110
-
-DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops));
-#define PublicationNameIndexId 6111
-
-DECLARE_UNIQUE_INDEX(pg_publication_rel_oid_index, 6112, on pg_publication_rel using btree(oid oid_ops));
-#define PublicationRelObjectIndexId 6112
-
-DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, on pg_publication_rel using btree(prrelid oid_ops, prpubid oid_ops));
-#define PublicationRelPrrelidPrpubidIndexId 6113
-
-DECLARE_UNIQUE_INDEX(pg_subscription_oid_index, 6114, on pg_subscription using btree(oid oid_ops));
-#define SubscriptionObjectIndexId 6114
-
-DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription using btree(subdbid oid_ops, subname name_ops));
-#define SubscriptionNameIndexId 6115
-
-DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops));
-#define SubscriptionRelSrrelidSrsubidIndexId 6117
-
-/* last step of initialization script: build the indexes declared above */
-BUILD_INDICES
-
 #endif							/* INDEXING_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index c0c1469..5c8933c 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -81,6 +81,9 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_aggregate;
 
+DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops));
+#define AggregateFnoidIndexId  2650
+
 /* ----------------
  *		Form_pg_aggregate corresponds to a pointer to a tuple with
  *		the format of pg_aggregate relation.
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index b067ec1..505177d 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -36,6 +36,11 @@ CATALOG(pg_am,2601)
 	char		amtype;			/* see AMTYPE_xxx constants below */
 } FormData_pg_am;
 
+DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops));
+#define AmNameIndexId  2651
+DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops));
+#define AmOidIndexId  2652
+
 /* ----------------
  *		Form_pg_am corresponds to a pointer to a tuple with
  *		the format of pg_am relation.
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 247f067..79cce2e 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -80,6 +80,13 @@ CATALOG(pg_amop,2602)
 	regopf		amopsortfamily BKI_DEFAULT(0);
 } FormData_pg_amop;
 
+DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
+#define AccessMethodStrategyIndexId  2653
+DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
+#define AccessMethodOperatorIndexId  2654
+DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops));
+#define AccessMethodOperatorOidIndexId	2756
+
 /* allowed values of amoppurpose: */
 #define AMOP_SEARCH		's'		/* operator is for search */
 #define AMOP_ORDER		'o'		/* operator is for ordering */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 17ed0e2..74d2ec0 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -60,6 +60,11 @@ CATALOG(pg_amproc,2603)
 	regproc		amproc;
 } FormData_pg_amproc;
 
+DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
+#define AccessMethodProcedureIndexId  2655
+DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops));
+#define AccessMethodProcedureOidIndexId  2757
+
 /* ----------------
  *		Form_pg_amproc corresponds to a pointer to a tuple with
  *		the format of pg_amproc relation.
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index e4520e8..956325e 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -39,6 +39,13 @@ CATALOG(pg_attrdef,2604)
 #endif
 } FormData_pg_attrdef;
 
+DECLARE_TOAST(pg_attrdef, 2830, 2831);
+DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
+#define AttrDefaultIndexId	2656
+DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops));
+#define AttrDefaultOidIndexId  2657
+
+
 /* ----------------
  *		Form_pg_attrdef corresponds to a pointer to a tuple with
  *		the format of pg_attrdef relation.
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index b13fc1a..ec0f10c 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -179,6 +179,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
 #define ATTRIBUTE_FIXED_PART_SIZE \
 	(offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
 
+DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
+#define AttributeRelidNameIndexId  2658
+DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
+#define AttributeRelidNumIndexId  2659
+
 /* ----------------
  *		Form_pg_attribute corresponds to a pointer to a tuple with
  *		the format of pg_attribute relation.
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index 6b594ff..dfaa15b 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -37,6 +37,11 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
 	bool		admin_option;	/* granted with admin option? */
 } FormData_pg_auth_members;
 
+DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops));
+#define AuthMemRoleMemIndexId	2694
+DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops));
+#define AuthMemMemRoleIndexId	2695
+
 /* ----------------
  *		Form_pg_auth_members corresponds to a pointer to a tuple with
  *		the format of pg_auth_members relation.
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index d073f72..7f62cf2 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -85,6 +85,10 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
+DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops));
+#define AuthIdRolnameIndexId	2676
+DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops));
+#define AuthIdOidIndexId	2677
 
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index fbe9949..25ddaef 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -39,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops));
+#define CastOidIndexId	2660
+DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops));
+#define CastSourceTargetIndexId  2661
+
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 9ad6ca8..6078870 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -149,6 +149,13 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 #define CLASS_TUPLE_SIZE \
 	 (offsetof(FormData_pg_class,relminmxid) + sizeof(TransactionId))
 
+DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops));
+#define ClassOidIndexId  2662
+DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops));
+#define ClassNameNspIndexId  2663
+DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
+#define ClassTblspcRelfilenodeIndexId  3455
+
 /* ----------------
  *		Form_pg_class corresponds to a pointer to a tuple with
  *		the format of pg_class relation.
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 98aaf30..7f099c1 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -45,6 +45,11 @@ CATALOG(pg_collation,3456)
 #endif
 } FormData_pg_collation;
 
+DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
+#define CollationNameEncNspIndexId 3164
+DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(oid oid_ops));
+#define CollationOidIndexId  3085
+
 /* ----------------
  *		Form_pg_collation corresponds to a pointer to a row with
  *		the format of pg_collation relation.
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 81ff01f..aa92eb1 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -139,6 +139,16 @@ CATALOG(pg_constraint,2606)
 #endif
 } FormData_pg_constraint;
 
+DECLARE_TOAST(pg_constraint, 2832, 2833);
+DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
+#define ConstraintNameNspIndexId  2664
+DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops));
+#define ConstraintRelidIndexId	2665
+DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops));
+#define ConstraintTypidIndexId	2666
+DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops));
+#define ConstraintOidIndexId  2667
+
 /* ----------------
  *		Form_pg_constraint corresponds to a pointer to a tuple with
  *		the format of pg_constraint relation.
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 8e46b02..9e7f5ce 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -48,6 +48,13 @@ CATALOG(pg_conversion,2607)
 	bool		condefault;
 } FormData_pg_conversion;
 
+DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
+#define ConversionDefaultIndexId  2668
+DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
+#define ConversionNameNspIndexId  2669
+DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops));
+#define ConversionOidIndexId  2670
+
 /* ----------------
  *		Form_pg_conversion corresponds to a pointer to a tuple with
  *		the format of pg_conversion relation.
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 9617a8a..aa135e8 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -50,6 +50,11 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
 #endif
 } FormData_pg_database;
 
+DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops));
+#define DatabaseNameIndexId  2671
+DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops));
+#define DatabaseOidIndexId	2672
+
 /* ----------------
  *		Form_pg_database corresponds to a pointer to a tuple with
  *		the format of pg_database relation.
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index aa01494..5c2115a 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -39,6 +39,12 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_db_role_setting;
 
+DECLARE_TOAST(pg_db_role_setting, 2966, 2967);
+#define PgDbRoleSettingToastTable 2966
+#define PgDbRoleSettingToastIndex 2967
+DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops));
+#define DbRoleSettingDatidRolidIndexId	2965
+
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
 /* ----------------
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index ec84272..5950999 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -38,6 +38,11 @@ CATALOG(pg_default_acl,826)
 #endif
 } FormData_pg_default_acl;
 
+DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, on pg_default_acl using btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
+#define DefaultAclRoleNspObjIndexId 827
+DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btree(oid oid_ops));
+#define DefaultAclOidIndexId	828
+
 /* ----------------
  *		Form_pg_default_acl corresponds to a pointer to a tuple with
  *		the format of pg_default_acl relation.
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index fdba9e3..e86a3a1 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -53,6 +53,11 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
 	char		deptype;		/* see codes in dependency.h */
 } FormData_pg_depend;
 
+DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
+#define DependDependerIndexId  2673
+DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
+#define DependReferenceIndexId	2674
+
 /* ----------------
  *		Form_pg_depend corresponds to a pointer to a row with
  *		the format of pg_depend relation.
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 9ee1675..80bc11d 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -53,6 +53,10 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_description;
 
+DECLARE_TOAST(pg_description, 2834, 2835);
+DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
+#define DescriptionObjIndexId  2675
+
 /* ----------------
  *		Form_pg_description corresponds to a pointer to a tuple with
  *		the format of pg_description relation.
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 4f696ad..0ff8f07 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -35,6 +35,13 @@ CATALOG(pg_enum,3501)
 	NameData	enumlabel;		/* text representation of enum value */
 } FormData_pg_enum;
 
+DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops));
+#define EnumOidIndexId	3502
+DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops));
+#define EnumTypIdLabelIndexId 3503
+DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, on pg_enum using btree(enumtypid oid_ops, enumsortorder float4_ops));
+#define EnumTypIdSortOrderIndexId 3534
+
 /* ----------------
  *		Form_pg_enum corresponds to a pointer to a tuple with
  *		the format of pg_enum relation.
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index ed47aa8..79efeae 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -42,6 +42,11 @@ CATALOG(pg_event_trigger,3466)
 #endif
 } FormData_pg_event_trigger;
 
+DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, on pg_event_trigger using btree(evtname name_ops));
+#define EventTriggerNameIndexId  3467
+DECLARE_UNIQUE_INDEX(pg_event_trigger_oid_index, 3468, on pg_event_trigger using btree(oid oid_ops));
+#define EventTriggerOidIndexId	3468
+
 /* ----------------
  *		Form_pg_event_trigger corresponds to a pointer to a tuple with
  *		the format of pg_event_trigger relation.
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index a616dda..1981033 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -43,6 +43,11 @@ CATALOG(pg_extension,3079)
 #endif
 } FormData_pg_extension;
 
+DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops));
+#define ExtensionOidIndexId 3080
+DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, on pg_extension using btree(extname name_ops));
+#define ExtensionNameIndexId 3081
+
 /* ----------------
  *		Form_pg_extension corresponds to a pointer to a tuple with
  *		the format of pg_extension relation.
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index caa6c91..23ad840 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -39,6 +39,11 @@ CATALOG(pg_foreign_data_wrapper,2328)
 #endif
 } FormData_pg_foreign_data_wrapper;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_oid_index, 112, on pg_foreign_data_wrapper using btree(oid oid_ops));
+#define ForeignDataWrapperOidIndexId	112
+DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, on pg_foreign_data_wrapper using btree(fdwname name_ops));
+#define ForeignDataWrapperNameIndexId	548
+
 /* ----------------
  *		Form_pg_fdw corresponds to a pointer to a tuple with
  *		the format of pg_fdw relation.
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index 9aeb646..542c3c4 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -40,6 +40,11 @@ CATALOG(pg_foreign_server,1417)
 #endif
 } FormData_pg_foreign_server;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_server_oid_index, 113, on pg_foreign_server using btree(oid oid_ops));
+#define ForeignServerOidIndexId 113
+DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, on pg_foreign_server using btree(srvname name_ops));
+#define ForeignServerNameIndexId	549
+
 /* ----------------
  *		Form_pg_foreign_server corresponds to a pointer to a tuple with
  *		the format of pg_foreign_server relation.
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 341ad5e..ff2d97f 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -36,6 +36,9 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_foreign_table;
 
+DECLARE_UNIQUE_INDEX(pg_foreign_table_relid_index, 3119, on pg_foreign_table using btree(ftrelid oid_ops));
+#define ForeignTableRelidIndexId 3119
+
 /* ----------------
  *		Form_pg_foreign_table corresponds to a pointer to a tuple with
  *		the format of pg_foreign_table relation.
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index db737a8..9b29538 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -59,6 +59,11 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_index;
 
+DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops));
+#define IndexIndrelidIndexId  2678
+DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops));
+#define IndexRelidIndexId  2679
+
 /* ----------------
  *		Form_pg_index corresponds to a pointer to a tuple with
  *		the format of pg_index relation.
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 334e738..0c53850 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -35,6 +35,11 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
 	int32		inhseqno;
 } FormData_pg_inherits;
 
+DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
+#define InheritsRelidSeqnoIndexId  2680
+DECLARE_INDEX(pg_inherits_parent_index, 2187, on pg_inherits using btree(inhparent oid_ops));
+#define InheritsParentIndexId  2187
+
 /* ----------------
  *		Form_pg_inherits corresponds to a pointer to a tuple with
  *		the format of pg_inherits relation.
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 7dd9e5d..f725457 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -50,6 +50,9 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_init_privs;
 
+DECLARE_UNIQUE_INDEX(pg_init_privs_o_c_o_index, 3395, on pg_init_privs using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
+#define InitPrivsObjIndexId  3395
+
 /* ----------------
  *		Form_pg_init_privs corresponds to a pointer to a tuple with
  *		the format of pg_init_privs relation.
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 02de79d..15a3d89 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -44,6 +44,11 @@ CATALOG(pg_language,2612)
 #endif
 } FormData_pg_language;
 
+DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops));
+#define LanguageNameIndexId  2681
+DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops));
+#define LanguageOidIndexId	2682
+
 /* ----------------
  *		Form_pg_language corresponds to a pointer to a tuple with
  *		the format of pg_language relation.
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 6c91656..ab56083 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -36,6 +36,9 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
 											 * zero-length) */
 } FormData_pg_largeobject;
 
+DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops));
+#define LargeObjectLOidPNIndexId  2683
+
 /* ----------------
  *		Form_pg_largeobject corresponds to a pointer to a tuple with
  *		the format of pg_largeobject relation.
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index bb84d2d..7b7840e 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -37,6 +37,9 @@ CATALOG(pg_largeobject_metadata,2995)
 #endif
 } FormData_pg_largeobject_metadata;
 
+DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops));
+#define LargeObjectMetadataOidIndexId	2996
+
 /* ----------------
  *		Form_pg_largeobject_metadata corresponds to a pointer to a tuple
  *		with the format of pg_largeobject_metadata relation.
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index c3a0737..525f340 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -44,6 +44,11 @@ CATALOG(pg_namespace,2615)
 #endif
 } FormData_pg_namespace;
 
+DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
+#define NamespaceNameIndexId  2684
+DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
+#define NamespaceOidIndexId  2685
+
 /* ----------------
  *		Form_pg_namespace corresponds to a pointer to a tuple with
  *		the format of pg_namespace relation.
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index c9ed806..31c9aeb 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -70,6 +70,11 @@ CATALOG(pg_opclass,2616)
 	regtype		opckeytype BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
+DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
+#define OpclassAmNameNspIndexId  2686
+DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops));
+#define OpclassOidIndexId  2687
+
 /* ----------------
  *		Form_pg_opclass corresponds to a pointer to a tuple with
  *		the format of pg_opclass relation.
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index a099c9f..50cd840 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -75,6 +75,11 @@ CATALOG(pg_operator,2617)
 	regproc		oprjoin BKI_DEFAULT(-);
 } FormData_pg_operator;
 
+DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops));
+#define OperatorOidIndexId	2688
+DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
+#define OperatorNameNspIndexId	2689
+
 /* ----------------
  *		Form_pg_operator corresponds to a pointer to a tuple with
  *		the format of pg_operator relation.
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index ce3b07e..83af79a 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -41,6 +41,11 @@ CATALOG(pg_opfamily,2753)
 	Oid			opfowner BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
+DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
+#define OpfamilyAmNameNspIndexId  2754
+DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops));
+#define OpfamilyOidIndexId	2755
+
 /* ----------------
  *		Form_pg_opfamily corresponds to a pointer to a tuple with
  *		the format of pg_opfamily relation.
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 0958fbb..148d3ec 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -53,6 +53,9 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_partitioned_table;
 
+DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops));
+#define PartitionedRelidIndexId			 3351
+
 /* ----------------
  *		Form_pg_partitioned_table corresponds to a pointer to a tuple with
  *		the format of pg_partitioned_table relation.
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 31dba12..ec28798 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -44,6 +44,9 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_pltemplate;
 
+DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops));
+#define PLTemplateNameIndexId  1137
+
 /* ----------------
  *		Form_pg_pltemplate corresponds to a pointer to a row with
  *		the format of pg_pltemplate relation.
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 8600073..1bc8819 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -32,6 +32,11 @@ CATALOG(pg_policy,3256)
 #endif
 } FormData_pg_policy;
 
+DECLARE_UNIQUE_INDEX(pg_policy_oid_index, 3257, on pg_policy using btree(oid oid_ops));
+#define PolicyOidIndexId				3257
+DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using btree(polrelid oid_ops, polname name_ops));
+#define PolicyPolrelidPolnameIndexId				3258
+
 /* ----------------
  *		Form_pg_policy corresponds to a pointer to a row with
  *		the format of pg_policy relation.
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 1f71a6f..d764e79 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -126,6 +126,12 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_proc;
 
+DECLARE_TOAST(pg_proc, 2836, 2837);
+DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops));
+#define ProcedureOidIndexId  2690
+DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
+#define ProcedureNameArgsNspIndexId  2691
+
 /* ----------------
  *		Form_pg_proc corresponds to a pointer to a tuple with
  *		the format of pg_proc relation.
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index ff26a32..bf4c59b 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -51,6 +51,13 @@ CATALOG(pg_publication,6104)
 
 } FormData_pg_publication;
 
+DECLARE_UNIQUE_INDEX(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops));
+#define PublicationObjectIndexId 6110
+DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops));
+#define PublicationNameIndexId 6111
+DECLARE_UNIQUE_INDEX(pg_publication_rel_oid_index, 6112, on pg_publication_rel using btree(oid oid_ops));
+#define PublicationRelObjectIndexId 6112
+
 /* ----------------
  *		Form_pg_publication corresponds to a pointer to a tuple with
  *		the format of pg_publication relation.
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index f9f2288..cb2f5b9 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -33,6 +33,9 @@ CATALOG(pg_publication_rel,6106)
 	Oid			prrelid;		/* Oid of the relation */
 } FormData_pg_publication_rel;
 
+DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, on pg_publication_rel using btree(prrelid oid_ops, prpubid oid_ops));
+#define PublicationRelPrrelidPrpubidIndexId 6113
+
 /* ----------------
  *		Form_pg_publication_rel corresponds to a pointer to a tuple with
  *		the format of pg_publication_rel relation.
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index e0bf704..690ebc9 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -38,6 +38,9 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 	regproc		rngsubdiff;		/* subtype difference as a float8, or 0 */
 } FormData_pg_range;
 
+DECLARE_UNIQUE_INDEX(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops));
+#define RangeTypidIndexId					3542
+
 /* ----------------
  *		Form_pg_range corresponds to a pointer to a tuple with
  *		the format of pg_range relation.
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0b8c8b2..3070af2 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -52,6 +52,11 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_replication_origin;
 
+DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops));
+#define ReplicationOriginIdentIndex 6001
+DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_pattern_ops));
+#define ReplicationOriginNameIndex 6002
+
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
 /* ----------------
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index ef7e8de..cc68f40 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -45,6 +45,12 @@ CATALOG(pg_rewrite,2618)
 #endif
 } FormData_pg_rewrite;
 
+DECLARE_TOAST(pg_rewrite, 2838, 2839);
+DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops));
+#define RewriteOidIndexId  2692
+DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops));
+#define RewriteRelRulenameIndexId  2693
+
 /* ----------------
  *		Form_pg_rewrite corresponds to a pointer to a tuple with
  *		the format of pg_rewrite relation.
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 3db9612..812a6bc 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -32,6 +32,10 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
+DECLARE_TOAST(pg_seclabel, 3598, 3599);
+DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_pattern_ops));
+#define SecLabelObjectIndexId				3597
+
 /* ----------------
  *		compiler constants for pg_seclabel
  * ----------------
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index 6de54bb..3a22633 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -27,6 +27,9 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+DECLARE_UNIQUE_INDEX(pg_sequence_seqrelid_index, 5002, on pg_sequence using btree(seqrelid oid_ops));
+#define SequenceRelidIndexId	5002
+
 typedef FormData_pg_sequence *Form_pg_sequence;
 
 #define Natts_pg_sequence				8
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 8a08914..5c89bfa 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -56,6 +56,11 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 	char		deptype;		/* see codes in dependency.h */
 } FormData_pg_shdepend;
 
+DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
+#define SharedDependDependerIndexId		1232
+DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
+#define SharedDependReferenceIndexId	1233
+
 /* ----------------
  *		Form_pg_shdepend corresponds to a pointer to a row with
  *		the format of pg_shdepend relation.
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index 3afdb32..3772771 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -45,6 +45,12 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_shdescription;
 
+DECLARE_TOAST(pg_shdescription, 2846, 2847);
+#define PgShdescriptionToastTable 2846
+#define PgShdescriptionToastIndex 2847
+DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops));
+#define SharedDescriptionObjIndexId 2397
+
 /* ----------------
  *		Form_pg_shdescription corresponds to a pointer to a tuple with
  *		the format of pg_shdescription relation.
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index f8a906b..bedc852 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -32,6 +32,12 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 #endif
 } FormData_pg_shseclabel;
 
+DECLARE_TOAST(pg_shseclabel, 4060, 4061);
+#define PgShseclabelToastTable 4060
+#define PgShseclabelToastIndex 4061
+DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_pattern_ops));
+#define SharedSecLabelObjectIndexId			3593
+
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
 /* ----------------
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 74d38ca..da3a937 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -118,9 +118,12 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_statistic;
 
+DECLARE_TOAST(pg_statistic, 2840, 2841);
+DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops));
+#define StatisticRelidAttnumInhIndexId	2696
+
 #define STATISTIC_NUM_SLOTS  5
 
-
 /* ----------------
  *		Form_pg_statistic corresponds to a pointer to a tuple with
  *		the format of pg_statistic relation.
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 4ed38c1..4ea7efc 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -53,6 +53,14 @@ CATALOG(pg_statistic_ext,3381)
 
 } FormData_pg_statistic_ext;
 
+DECLARE_TOAST(pg_statistic_ext, 3439, 3440);
+DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops));
+#define StatisticExtOidIndexId	3380
+DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops));
+#define StatisticExtNameIndexId 3997
+DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops));
+#define StatisticExtRelidIndexId 3379
+
 /* ----------------
  *		Form_pg_statistic_ext corresponds to a pointer to a tuple with
  *		the format of pg_statistic_ext relation.
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 274ff6b..865cd3e 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -55,6 +55,11 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 #endif
 } FormData_pg_subscription;
 
+DECLARE_UNIQUE_INDEX(pg_subscription_oid_index, 6114, on pg_subscription using btree(oid oid_ops));
+#define SubscriptionObjectIndexId 6114
+DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription using btree(subdbid oid_ops, subname name_ops));
+#define SubscriptionNameIndexId 6115
+
 typedef FormData_pg_subscription *Form_pg_subscription;
 
 /* ----------------
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 5748297..c8ccf0b 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -32,6 +32,9 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 								 * synchronization coordination */
 } FormData_pg_subscription_rel;
 
+DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops));
+#define SubscriptionRelSrrelidSrsubidIndexId 6117
+
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
 /* ----------------
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 0cf894a..10d21f9 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -40,6 +40,11 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
 #endif
 } FormData_pg_tablespace;
 
+DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops));
+#define TablespaceOidIndexId  2697
+DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops));
+#define TablespaceNameIndexId  2698
+
 /* ----------------
  *		Form_pg_tablespace corresponds to a pointer to a tuple with
  *		the format of pg_tablespace relation.
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 51b51b5..3802ed8 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -32,6 +32,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
+DECLARE_UNIQUE_INDEX(pg_transform_oid_index, 3574, on pg_transform using btree(oid oid_ops));
+#define TransformOidIndexId 3574
+DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, on pg_transform using btree(trftype oid_ops, trflang oid_ops));
+#define TransformTypeLangIndexId  3575
+
 typedef FormData_pg_transform *Form_pg_transform;
 
 /* ----------------
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index 41e2aea..51e9257 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -64,6 +64,14 @@ CATALOG(pg_trigger,2620)
 #endif
 } FormData_pg_trigger;
 
+DECLARE_TOAST(pg_trigger, 2336, 2337);
+DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, on pg_trigger using btree(tgconstraint oid_ops));
+#define TriggerConstraintIndexId  2699
+DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops));
+#define TriggerRelidNameIndexId  2701
+DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops));
+#define TriggerOidIndexId  2702
+
 /* ----------------
  *		Form_pg_trigger corresponds to a pointer to a tuple with
  *		the format of pg_trigger relation.
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index b2b3941..26a5007 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -35,6 +35,11 @@ CATALOG(pg_ts_config,3602)
 	Oid			cfgparser;		/* OID of parser (in pg_ts_parser) */
 } FormData_pg_ts_config;
 
+DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops));
+#define TSConfigNameNspIndexId	3608
+DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops));
+#define TSConfigOidIndexId	3712
+
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 86fd163..e521727 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -35,6 +35,9 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 	Oid			mapdict;		/* dictionary to consult */
 } FormData_pg_ts_config_map;
 
+DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
+#define TSConfigMapIndexId	3609
+
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index f465df0..538eaf9 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -39,6 +39,11 @@ CATALOG(pg_ts_dict,3600)
 #endif
 } FormData_pg_ts_dict;
 
+DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops));
+#define TSDictionaryNameNspIndexId	3604
+DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops));
+#define TSDictionaryOidIndexId	3605
+
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5f26ea1..313d355 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -38,6 +38,11 @@ CATALOG(pg_ts_parser,3601)
 	regproc		prslextype;		/* return descriptions of lexeme's types */
 } FormData_pg_ts_parser;
 
+DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops));
+#define TSParserNameNspIndexId	3606
+DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops));
+#define TSParserOidIndexId	3607
+
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 5678f1a..97f68b0 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -35,6 +35,11 @@ CATALOG(pg_ts_template,3764)
 	regproc		tmpllexize;		/* base method of dictionary */
 } FormData_pg_ts_template;
 
+DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops));
+#define TSTemplateNameNspIndexId	3766
+DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops));
+#define TSTemplateOidIndexId	3767
+
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
 /* ----------------
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 3c069d5..7c7ad19 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -233,6 +233,11 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 #endif
 } FormData_pg_type;
 
+DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops));
+#define TypeOidIndexId	2703
+DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops));
+#define TypeNameNspIndexId	2704
+
 /* ----------------
  *		Form_pg_type corresponds to a pointer to a row with
  *		the format of pg_type relation.
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 78856ba..654c722 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -37,6 +37,11 @@ CATALOG(pg_user_mapping,1418)
 #endif
 } FormData_pg_user_mapping;
 
+DECLARE_UNIQUE_INDEX(pg_user_mapping_oid_index, 174, on pg_user_mapping using btree(oid oid_ops));
+#define UserMappingOidIndexId	174
+DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, on pg_user_mapping using btree(umuser oid_ops, umserver oid_ops));
+#define UserMappingUserServerIndexId	175
+
 /* ----------------
  *		Form_pg_user_mapping corresponds to a pointer to a tuple with
  *		the format of pg_user_mapping relation.
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index ccc6416..25fd7d1 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -27,44 +27,4 @@ extern void AlterTableCreateToastTable(Oid relOid, Datum reloptions,
 extern void BootstrapToastTable(char *relName,
 					Oid toastOid, Oid toastIndexOid);
 
-
-/*
- * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for Catalog.pm.
- */
-#define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
-
-
-/*
- * What follows are lines processed by genbki.pl to create the statements
- * the bootstrap parser will turn into BootstrapToastTable commands.
- * Each line specifies the system catalog that needs a toast table,
- * the OID to assign to the toast table, and the OID to assign to the
- * toast table's index.  The reason we hard-wire these OIDs is that we
- * need stable OIDs for shared relations, and that includes toast tables
- * of shared relations.
- */
-
-/* normal catalogs */
-DECLARE_TOAST(pg_attrdef, 2830, 2831);
-DECLARE_TOAST(pg_constraint, 2832, 2833);
-DECLARE_TOAST(pg_description, 2834, 2835);
-DECLARE_TOAST(pg_proc, 2836, 2837);
-DECLARE_TOAST(pg_rewrite, 2838, 2839);
-DECLARE_TOAST(pg_seclabel, 3598, 3599);
-DECLARE_TOAST(pg_statistic, 2840, 2841);
-DECLARE_TOAST(pg_statistic_ext, 3439, 3440);
-DECLARE_TOAST(pg_trigger, 2336, 2337);
-
-/* shared catalogs */
-DECLARE_TOAST(pg_shdescription, 2846, 2847);
-#define PgShdescriptionToastTable 2846
-#define PgShdescriptionToastIndex 2847
-DECLARE_TOAST(pg_db_role_setting, 2966, 2967);
-#define PgDbRoleSettingToastTable 2966
-#define PgDbRoleSettingToastIndex 2967
-DECLARE_TOAST(pg_shseclabel, 4060, 4061);
-#define PgShseclabelToastTable 4060
-#define PgShseclabelToastIndex 4061
-
 #endif							/* TOASTING_H */
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index a930560..0cfc319 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -27,7 +27,7 @@ export FIRSTOBJECTID
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
 # matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h pg_*.dat toasting.h indexing.h |
+cat pg_*.h pg_*.dat |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
 sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
-- 
2.7.4

#13Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: John Naylor (#12)
Re: WIP: a way forward on bootstrap data

Pushed 0001 with some changes of my own. I'm afraid I created a few
conflicts for the later patches in your series; please rebase.

I don't think we introduced anything that would fail on old Perls, but
let's see what buildfarm has to say.

Others: Now is the time to raise concerns related to the proposed file
formats and tooling, so please do have a look when you have a moment.
At this stage, the proposed data format seems a good choice to me.

Thanks

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#14Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#13)
Re: WIP: a way forward on bootstrap data

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Others: Now is the time to raise concerns related to the proposed file
formats and tooling, so please do have a look when you have a moment.
At this stage, the proposed data format seems a good choice to me.

It's not very clear to me what the proposed data format actually is,
and I don't really want to read several hundred KB worth of patches
in order to reverse-engineer that information. Nor do I see
anything in the patch list that obviously looks like it updates
doc/src/sgml/bki.sgml to explain things.

So could we have an explanation of what it is we're agreeing to?

regards, tom lane

#15David Fetter
david@fetter.org
In reply to: Tom Lane (#14)
Re: WIP: a way forward on bootstrap data

On Fri, Jan 12, 2018 at 11:38:54AM -0500, Tom Lane wrote:

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Others: Now is the time to raise concerns related to the proposed
file formats and tooling, so please do have a look when you have a
moment. At this stage, the proposed data format seems a good
choice to me.

It's not very clear to me what the proposed data format actually is,
and I don't really want to read several hundred KB worth of patches
in order to reverse-engineer that information. Nor do I see
anything in the patch list that obviously looks like it updates
doc/src/sgml/bki.sgml to explain things.

So could we have an explanation of what it is we're agreeing to?

That would be awesome. A walk-through example or two would also help.

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#16Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Tom Lane (#14)
Re: WIP: a way forward on bootstrap data

Tom Lane wrote:

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Others: Now is the time to raise concerns related to the proposed file
formats and tooling, so please do have a look when you have a moment.
At this stage, the proposed data format seems a good choice to me.

It's not very clear to me what the proposed data format actually is,
and I don't really want to read several hundred KB worth of patches
in order to reverse-engineer that information. Nor do I see
anything in the patch list that obviously looks like it updates
doc/src/sgml/bki.sgml to explain things.

So could we have an explanation of what it is we're agreeing to?

Here's a small sample pg_proc entry:

{ oid => '2147', descr => 'number of input rows for which the input expression is not null',
n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },

An pg_amop entry:
{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1', oper => '<(int2,int2)', am => 'btree' },

Notes:
1. this is Perl data; it is read with 'eval' without any external modules.
2. the pg_proc entry has been compressed to two lines, to avoid
content-free lines that would easily confuse git merge, but keep line
length reasonable.
3. references to objects in other catalogs are by name, such as "int8"
or "btree/integer_ops" rather than OID.
4. for each attribute, an abbreviation can be declared. In the
pg_proc sample we have "n" which stands for proname, because we have
this line:
+ NameData proname BKI_ABBREV(n);

I think John has gone overboard with some of these choices, but we can
argue the specific choices once we decide that abbreviation is a good
idea. (Prior discussion seems to suggest we already agreed on that.)

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#17Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#16)
Re: WIP: a way forward on bootstrap data

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Tom Lane wrote:

So could we have an explanation of what it is we're agreeing to?

Here's a small sample pg_proc entry:

{ oid => '2147', descr => 'number of input rows for which the input expression is not null',
n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },

An pg_amop entry:
{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1', oper => '<(int2,int2)', am => 'btree' },

Notes:
1. this is Perl data; it is read with 'eval' without any external modules.

Check. Where is it coming from --- I suppose we aren't going to try to
store this in the existing .h files? What provisions will there be for
comments?

2. the pg_proc entry has been compressed to two lines, to avoid
content-free lines that would easily confuse git merge, but keep line
length reasonable.

Seems like we would almost need a per-catalog convention on how to lay out
the entries, or else we're going to end up (over time) with lots of cowboy
coding leading to entries that look randomly different from the ones
around them.

3. references to objects in other catalogs are by name, such as "int8"
or "btree/integer_ops" rather than OID.

+1

4. for each attribute, an abbreviation can be declared. In the
pg_proc sample we have "n" which stands for proname, because we have
this line:
+ NameData proname BKI_ABBREV(n);

I think single-letter abbreviations here are a pretty bad space vs
readability tradeoff, particularly for wider catalogs where it risks
ambiguity. The pg_amop sample you show looks noticeably more legible than
the other one. Still, this is something we can debate on a case-by-case
basis, it's not a defect in the mechanism.

One other question is how we'll verify the conversion. Is there an
expectation that the .bki file immediately after the conversion will
be identical to immediately before?

regards, tom lane

#18John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#14)
Re: WIP: a way forward on bootstrap data

Tom, everyone,
It's getting late in my timezone, but I wanted to give a few quick
answers. I'll follow up tomorrow. Thanks Alvaro for committing my
refactoring of pg_attribute data creation. I think your modifications
are sensible and I'll rebase soon.

On 1/13/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

It's not very clear to me what the proposed data format actually is,
and I don't really want to read several hundred KB worth of patches
in order to reverse-engineer that information. Nor do I see
anything in the patch list that obviously looks like it updates
doc/src/sgml/bki.sgml to explain things.

Alvaro gave a good overview, so I'll just point out a few things.

-Patches 0002 through 0007 represent a complete one-to-one migration
of data entries. I didn't see much in bki.sgml specific to the current
format, so my documentation changes are confined largely to the
README, in patch 0005.
-Patches 0008 and 0009 implement techniques to make the data lines
shorter. My choices are certainly debatable. There is a brief addition
to the README in patch 0008. The abbreviation technique was only used
in three catalogs to demonstrate.
-Patches 0010 and 0011 implement human-readable OID references.
-Patches 0012 and 0013 are cosmetic, but invasive.

Seems like we would almost need a per-catalog convention on how to lay out
the entries, or else we're going to end up (over time) with lots of cowboy
coding leading to entries that look randomly different from the ones
around them.

If I understand your concern correctly, the convention is enforced by
a script (rewrite_dat.pl). At the very least this would be done at the
same time as pg_indent and perltidy. To be sure, because of default
values many entries will look randomly different from the ones around
them regardless. I have a draft patch to load the source data into
tables for viewing, but it's difficult to rebase, so I thought I'd
offer that enhancement later.

One other question is how we'll verify the conversion. Is there an
expectation that the .bki file immediately after the conversion will
be identical to immediately before?

Not identical. First, as part of the base migration, I stripped almost
all double quotes from the data entries since the new Perl hash values
are already single-quoted. (The exception is macros expanded by
initdb.c) I made genbki.pl add quotes on output to match what
bootscanner.l expects. Where a simple rule made it possible, it also
matches the original .bki. The new .bki will only diff where the
current data has superfluous quotes. (ie. "0", "sql"). Second, if the
optional cosmetic patch 0013 is applied, the individual index and
toast commands will be in a different order.

Check. Where is it coming from --- I suppose we aren't going to try to
store this in the existing .h files? What provisions will there be for
comments?

Yes, they're in ".dat" files. Perl comments (#) on their own line are
supported. I migrated all existing comments from the header files as
part of the conversion. This is scripted, so I can rebase over new
catalog entries that get committed.

I think single-letter abbreviations here are a pretty bad space vs
readability tradeoff, particularly for wider catalogs where it risks
ambiguity.

Ironically, I got that one from you [1]/messages/by-id/15697.1479161432@sss.pgh.pa.us ;-), but if you have a
different opinion upon seeing concrete, explicit examples, I think
that's to be expected.

--
Now is probably a good time to disclose concerns of my own:
1. MSVC dependency tracking is certainly broken until such time as I
can shave that yak and test.
2. Keeping the oid symbols with the data entries required some
Makefile trickery to make them visible to .c files outside the backend
(patch 0007). It builds fine, but the dependency tracking might have
bugs.

--
[1]: /messages/by-id/15697.1479161432@sss.pgh.pa.us

Thanks,
John Naylor

#19Peter Eisentraut
peter.eisentraut@2ndquadrant.com
In reply to: Alvaro Herrera (#16)
Re: WIP: a way forward on bootstrap data

On 1/12/18 12:24, Alvaro Herrera wrote:

Here's a small sample pg_proc entry:

{ oid => '2147', descr => 'number of input rows for which the input expression is not null',
n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },

An pg_amop entry:
{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1', oper => '<(int2,int2)', am => 'btree' },

Notes:
1. this is Perl data; it is read with 'eval' without any external modules.
2. the pg_proc entry has been compressed to two lines, to avoid
content-free lines that would easily confuse git merge, but keep line
length reasonable.

I don't think I like this. I know pg_proc.h is a pain to manage, but at
least right now it's approachable programmatically. I recently proposed
to patch to replace the columns proisagg and proiswindow with a combined
column prokind. I could easily write a small Perl script to make that
change in pg_proc.h, because the format is easy to parse and has one
line per entry. With this new format, that approach would no longer
work, and I don't know what would replace it.

3. references to objects in other catalogs are by name, such as "int8"
or "btree/integer_ops" rather than OID.

I think we could already do this by making more use of things like
regtype and regproc. That should be an easy change to make.

4. for each attribute, an abbreviation can be declared. In the
pg_proc sample we have "n" which stands for proname, because we have
this line:
+ NameData proname BKI_ABBREV(n);

I'm afraid a key value system would invite writing the attributes in
random order and create a mess over time.

But if we want to do it, I think we could also add it to the current BKI
format. The same goes for defining default values for some columns.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#20David Fetter
david@fetter.org
In reply to: Peter Eisentraut (#19)
Re: WIP: a way forward on bootstrap data

On Fri, Jan 12, 2018 at 04:22:26PM -0500, Peter Eisentraut wrote:

On 1/12/18 12:24, Alvaro Herrera wrote:

Here's a small sample pg_proc entry:

{ oid => '2147', descr => 'number of input rows for which the input expression is not null',
n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },

An pg_amop entry:
{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1', oper => '<(int2,int2)', am => 'btree' },

Notes:
1. this is Perl data; it is read with 'eval' without any external modules.
2. the pg_proc entry has been compressed to two lines, to avoid
content-free lines that would easily confuse git merge, but keep line
length reasonable.

I don't think I like this. I know pg_proc.h is a pain to manage,
but at least right now it's approachable programmatically. I
recently proposed to patch to replace the columns proisagg and
proiswindow with a combined column prokind. I could easily write a
small Perl script to make that change in pg_proc.h, because the
format is easy to parse and has one line per entry. With this new
format, that approach would no longer work, and I don't know what
would replace it.

How about ingesting with Perl, manipulating there, and spitting back
out as Perl data structures?

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#21Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Peter Eisentraut (#19)
Re: WIP: a way forward on bootstrap data

Peter Eisentraut wrote:

On 1/12/18 12:24, Alvaro Herrera wrote:

Here's a small sample pg_proc entry:

{ oid => '2147', descr => 'number of input rows for which the input expression is not null',
n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },

An pg_amop entry:
{ opf => 'btree/integer_ops', lt => 'int2', rt => 'int2', str => '1', oper => '<(int2,int2)', am => 'btree' },

Notes:
1. this is Perl data; it is read with 'eval' without any external modules.
2. the pg_proc entry has been compressed to two lines, to avoid
content-free lines that would easily confuse git merge, but keep line
length reasonable.

I don't think I like this. I know pg_proc.h is a pain to manage, but at
least right now it's approachable programmatically. I recently proposed
to patch to replace the columns proisagg and proiswindow with a combined
column prokind. I could easily write a small Perl script to make that
change in pg_proc.h, because the format is easy to parse and has one
line per entry. With this new format, that approach would no longer
work, and I don't know what would replace it.

The idea in my mind is that you'd write a Perl program to do such
changes, yeah. If the code we supply contains enough helpers and a few
samples, it should be reasonably simple for people that don't do much
Perl.

The patch series does contain a few helper programs to write the data
files. I haven't looked in detail what can they do and what they cannot.

3. references to objects in other catalogs are by name, such as "int8"
or "btree/integer_ops" rather than OID.

I think we could already do this by making more use of things like
regtype and regproc. That should be an easy change to make.

Well, that assumes we *like* the current format, which I think is not a
given ... more the opposite.

4. for each attribute, an abbreviation can be declared. In the
pg_proc sample we have "n" which stands for proname, because we have
this line:
+ NameData proname BKI_ABBREV(n);

I'm afraid a key value system would invite writing the attributes in
random order and create a mess over time.

Yeah, I share this concern. But you could fix it if the Perl tooling to
write these files had a hardcoded list to work with. Maybe we could put
it in a declaration of sorts at the start of each data file.

But if we want to do it, I think we could also add it to the current BKI
format. The same goes for defining default values for some columns.

As above -- do we really like our current format so much that we're
satisfied with minor tweaks?

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#22Andres Freund
andres@anarazel.de
In reply to: Alvaro Herrera (#21)
Re: WIP: a way forward on bootstrap data

On 2018-01-12 18:36:14 -0300, Alvaro Herrera wrote:

As above -- do we really like our current format so much that we're
satisfied with minor tweaks?

A definite no from here. I think especially pg_proc desperately needs
something key=value like to be understandable, and that very clearly
seems to be something we can't do in the current format.

- Andres

#23Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#21)
Re: WIP: a way forward on bootstrap data

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Peter Eisentraut wrote:

I don't think I like this. I know pg_proc.h is a pain to manage, but at
least right now it's approachable programmatically. I recently proposed
to patch to replace the columns proisagg and proiswindow with a combined
column prokind. I could easily write a small Perl script to make that
change in pg_proc.h, because the format is easy to parse and has one
line per entry. With this new format, that approach would no longer
work, and I don't know what would replace it.

The idea in my mind is that you'd write a Perl program to do such
changes, yeah. If the code we supply contains enough helpers and a few
samples, it should be reasonably simple for people that don't do much
Perl.

It would be good to see a sample --- for a concrete example, how about
creating a Perl script to do the conversion Peter mentions?

3. references to objects in other catalogs are by name, such as "int8"
or "btree/integer_ops" rather than OID.

I think we could already do this by making more use of things like
regtype and regproc. That should be an easy change to make.

Well, that assumes we *like* the current format, which I think is not a
given ... more the opposite.

Note that we *can't* easily improve that given the current tooling,
mainly because the bootstrap-time capabilities of regproc_in et al are
so limited. We don't even have regxxx types for many of the other
cross-reference columns like opclass references, and I don't think
I want to build them because they'd also have bootstrapping issues.

According to my understanding, part of what's going on here is that
we're going to teach genbki.pl to parse these object references and
convert them to hard-coded OIDs in the emitted BKI file. That seems
good to me, but one thing we're going to need is a spec for how
genbki.pl knows what to do.

I'm afraid a key value system would invite writing the attributes in
random order and create a mess over time.

Yeah, I share this concern. But you could fix it if the Perl tooling to
write these files had a hardcoded list to work with. Maybe we could put
it in a declaration of sorts at the start of each data file.

This is more or less the same concern I stated upthread. But the
impression I'm getting is that we expect these files to often be written
out from a Perl script, so it's mostly a question of how we teach the
Perl scripts to emit stylistically consistent data. Then we can use the
Perl scripts as a kind of pgindent for this data.

But if we want to do it, I think we could also add it to the current BKI
format. The same goes for defining default values for some columns.

As above -- do we really like our current format so much that we're
satisfied with minor tweaks?

I'm sure not. This will be a big change, without a doubt, but I think
we'll end up in a better place.

regards, tom lane

#24John Naylor
jcnaylor@gmail.com
In reply to: Peter Eisentraut (#19)
4 attachment(s)
Re: WIP: a way forward on bootstrap data

On 1/13/18, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:

I'm afraid a key value system would invite writing the attributes in
random order and create a mess over time.

A developer can certainly write them in random order, and it will
still work. However, in patch 0002 I have a script to enforce a
standard appearance. Of course, for it to work, you have to run it. I
describe it, if rather tersely, in the README changes in patch 0008.
Since several people have raised this concern, I will go into a bit
more depth here. Perhaps I should reuse some of this language for the
README to improve it.

src/include/catalog/rewrite_dat.pl knows where to find the schema of
each catalog, namely the pg_*.h header, accessed via ParseHeader() in
Catalog.pm. It writes key/value pairs in the order found in the
schema:

{ key_1 => 'value_1', key_2 => 'value_2', ..., key_n => 'value_n' }

The script also has an array of four hard-coded metadata fields: oid,
oid_symbol, descr, and shdescr. If any of these are present, they will
go on their own line first, in the order given:

{ oid => 9999, oid_symbol => 'FOO_OID', descr => 'comment on foo',
key_1 => 'value_1', key_2 => 'value_2', ..., key_n => 'value_n' }

I don't think I like this. I know pg_proc.h is a pain to manage, but at
least right now it's approachable programmatically. I recently proposed
to patch to replace the columns proisagg and proiswindow with a combined
column prokind. I could easily write a small Perl script to make that
change in pg_proc.h, because the format is easy to parse and has one
line per entry. With this new format, that approach would no longer
work, and I don't know what would replace it.

I've attached four diffs/patches to walk through how you would replace
the columns proisagg and proiswindow with a combined column prokind.

Patch 01: Add new prokind column to pg_proc.h, with a default of 'n'.
In many cases, this is all you would have to do, as far as
bootstrapping is concerned.

Diff 02: This is a one-off script diffed against rewrite_dat.pl. In
rewrite_dat.pl, I have a section with this comment, and this is where
I put the one-off code:

# Note: This is also a convenient place to do one-off
# bulk-editing.

(I haven't documented this with explicit examples, so I'll have to remedy that)

You would run it like this:

cd src/include/catalog
perl -I ../../backend/catalog/ rewrite_dat_with_prokind.pl pg_proc.dat

While reading pg_proc.dat, the default value for prokind is added
automatically. We inspect proisagg and proiswindow, and change prokind
accordingly. pg_proc.dat now has all three columns, prokind, proisagg,
and proiswindow.

Patch 03: Remove old columns from pg_proc.h

Now we run the standard rewrite:

perl -I ../../backend/catalog/ rewrite_dat.pl pg_proc.dat

Any values not found in the schema will simply not be written to
pg_proc.dat, so the old columns are now gone.

The result is found in patch 04.
--

Note: You could theoretically also load the source data into tables,
do the updates with SQL, and dump back out again. I made some progress
with this method, but it's not complete. I think the load and dump
steps add too much complexity for most use cases, but it's a
possibility.

-John Naylor

Attachments:

02_prokind_example_populate_new_column.difftext/plain; charset=US-ASCII; name=02_prokind_example_populate_new_column.diffDownload
--- rewrite_dat.pl	2018-01-13 13:32:42.528046389 +0700
+++ rewrite_dat_with_prokind.pl	2018-01-13 16:07:49.124401213 +0700
@@ -132,6 +132,19 @@
 			# these operations in the order given.
 			# Note: This is also a convenient place to do one-off
 			# bulk-editing.
+
+			# One-off to migrate to prokind
+			# Default has already been filled in by now, so now add other
+			# values as appropriate
+			if ($values{proisagg} eq 't')
+			{
+				$values{prokind} = 'a';
+			}
+			elsif ($values{proiswindow} eq 't')
+			{
+				$values{prokind} = 'w';
+			}
+
 			if (!$expand_tuples)
 			{
 				strip_default_values(\%values, $schema, $catname);
01_prokind_example_add_new_column.patchtext/x-patch; charset=US-ASCII; name=01_prokind_example_add_new_column.patchDownload
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 7b77eea..0f2990f 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -60,6 +60,9 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 	/* is it a window function? */
 	bool		proiswindow BKI_DEFAULT(f);
 
+	/* kind of function: n = normal, a = agg, w = window */
+	char		prokind BKI_DEFAULT(n);
+
 	/* security definer */
 	bool		prosecdef BKI_DEFAULT(f);
 
03_prokind_example_remove_old_columns.patchtext/x-patch; charset=US-ASCII; name=03_prokind_example_remove_old_columns.patchDownload
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index be8f822..b76dd72 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -57,12 +57,6 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 	/* kind of function: n = normal, a = agg, w = window */
 	char		prokind BKI_DEFAULT(n);
 
-	/* is it an aggregate? */
-	bool		proisagg BKI_DEFAULT(f);
-
-	/* is it a window function? */
-	bool		proiswindow BKI_DEFAULT(f);
-
 	/* security definer */
 	bool		prosecdef BKI_DEFAULT(f);
 
04_prokind_data_end_result.patchtext/x-patch; charset=US-ASCII; name=04_prokind_data_end_result.patchDownload
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index ebef2bc..fd4ff11 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -1046,13 +1046,13 @@
 { oid => '2334', descr => 'aggregate final function',
   n => 'array_agg_finalfn', v => 'i', p => 's', rt => 'anyarray', at => 'internal anynonarray' },
 { oid => '2335', descr => 'concatenate aggregate input into an array',
-  n => 'array_agg', proisagg => 't', v => 'i', p => 's', rt => 'anyarray', at => 'anynonarray', s => 'aggregate_dummy' },
+  n => 'array_agg', prokind => 'a', v => 'i', p => 's', rt => 'anyarray', at => 'anynonarray', s => 'aggregate_dummy' },
 { oid => '4051', descr => 'aggregate transition function',
   n => 'array_agg_array_transfn', v => 'i', p => 's', rt => 'internal', at => 'internal anyarray' },
 { oid => '4052', descr => 'aggregate final function',
   n => 'array_agg_array_finalfn', v => 'i', p => 's', rt => 'anyarray', at => 'internal anyarray' },
 { oid => '4053', descr => 'concatenate aggregate input into an array',
-  n => 'array_agg', proisagg => 't', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
+  n => 'array_agg', prokind => 'a', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
 { oid => '3218', descr => 'bucket number of operand given a sorted array of bucket lower bounds',
   n => 'width_bucket', is => 't', v => 'i', p => 's', rt => 'int4', at => 'anyelement anyarray', s => 'width_bucket_array' },
 { oid => '3816', descr => 'array typanalyze',
@@ -3103,13 +3103,13 @@
 { oid => '3536', descr => 'aggregate final function',
   n => 'string_agg_finalfn', v => 'i', p => 's', rt => 'text', at => 'internal' },
 { oid => '3538', descr => 'concatenate aggregate input into a string',
-  n => 'string_agg', proisagg => 't', v => 'i', p => 's', rt => 'text', at => 'text text', s => 'aggregate_dummy' },
+  n => 'string_agg', prokind => 'a', v => 'i', p => 's', rt => 'text', at => 'text text', s => 'aggregate_dummy' },
 { oid => '3543', descr => 'aggregate transition function',
   n => 'bytea_string_agg_transfn', v => 'i', p => 's', rt => 'internal', at => 'internal bytea bytea' },
 { oid => '3544', descr => 'aggregate final function',
   n => 'bytea_string_agg_finalfn', v => 'i', p => 's', rt => 'bytea', at => 'internal' },
 { oid => '3545', descr => 'concatenate aggregate input into a bytea',
-  n => 'string_agg', proisagg => 't', v => 'i', p => 's', rt => 'bytea', at => 'bytea bytea', s => 'aggregate_dummy' },
+  n => 'string_agg', prokind => 'a', v => 'i', p => 's', rt => 'bytea', at => 'bytea bytea', s => 'aggregate_dummy' },
 
 # To ASCII conversion
 { oid => '1845', descr => 'encode text from DB encoding to ASCII text',
@@ -3815,229 +3815,229 @@
 # Aggregates (moved here from pg_aggregate for 7.3)
 
 { oid => '2100', descr => 'the average (arithmetic mean) as numeric of all bigint values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2101', descr => 'the average (arithmetic mean) as numeric of all integer values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2102', descr => 'the average (arithmetic mean) as numeric of all smallint values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2103', descr => 'the average (arithmetic mean) as numeric of all numeric values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 { oid => '2104', descr => 'the average (arithmetic mean) as float8 of all float4 values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2105', descr => 'the average (arithmetic mean) as float8 of all float8 values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2106', descr => 'the average (arithmetic mean) as interval of all interval values',
-  n => 'avg', proisagg => 't', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
+  n => 'avg', prokind => 'a', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
 
 { oid => '2107', descr => 'sum as numeric across all bigint input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2108', descr => 'sum as bigint across all integer input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int4', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2109', descr => 'sum as bigint across all smallint input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int2', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2110', descr => 'sum as float4 across all float4 input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2111', descr => 'sum as float8 across all float8 input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2112', descr => 'sum as money across all money input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
 { oid => '2113', descr => 'sum as interval across all interval input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
 { oid => '2114', descr => 'sum as numeric across all numeric input values',
-  n => 'sum', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'sum', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2115', descr => 'maximum value of all bigint input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2116', descr => 'maximum value of all integer input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2117', descr => 'maximum value of all smallint input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2118', descr => 'maximum value of all oid input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'oid', at => 'oid', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'oid', at => 'oid', s => 'aggregate_dummy' },
 { oid => '2119', descr => 'maximum value of all float4 input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2120', descr => 'maximum value of all float8 input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2121', descr => 'maximum value of all abstime input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'abstime', at => 'abstime', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'abstime', at => 'abstime', s => 'aggregate_dummy' },
 { oid => '2122', descr => 'maximum value of all date input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'date', at => 'date', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'date', at => 'date', s => 'aggregate_dummy' },
 { oid => '2123', descr => 'maximum value of all time input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'time', at => 'time', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'time', at => 'time', s => 'aggregate_dummy' },
 { oid => '2124', descr => 'maximum value of all time with time zone input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'timetz', at => 'timetz', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'timetz', at => 'timetz', s => 'aggregate_dummy' },
 { oid => '2125', descr => 'maximum value of all money input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
 { oid => '2126', descr => 'maximum value of all timestamp input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'timestamp', at => 'timestamp', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'timestamp', at => 'timestamp', s => 'aggregate_dummy' },
 { oid => '2127', descr => 'maximum value of all timestamp with time zone input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'timestamptz', at => 'timestamptz', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'timestamptz', at => 'timestamptz', s => 'aggregate_dummy' },
 { oid => '2128', descr => 'maximum value of all interval input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
 { oid => '2129', descr => 'maximum value of all text input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'text', at => 'text', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'text', at => 'text', s => 'aggregate_dummy' },
 { oid => '2130', descr => 'maximum value of all numeric input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 { oid => '2050', descr => 'maximum value of all anyarray input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
 { oid => '2244', descr => 'maximum value of all bpchar input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'bpchar', at => 'bpchar', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'bpchar', at => 'bpchar', s => 'aggregate_dummy' },
 { oid => '2797', descr => 'maximum value of all tid input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'tid', at => 'tid', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'tid', at => 'tid', s => 'aggregate_dummy' },
 { oid => '3564', descr => 'maximum value of all inet input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'inet', at => 'inet', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'inet', at => 'inet', s => 'aggregate_dummy' },
 
 { oid => '2131', descr => 'minimum value of all bigint input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2132', descr => 'minimum value of all integer input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2133', descr => 'minimum value of all smallint input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2134', descr => 'minimum value of all oid input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'oid', at => 'oid', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'oid', at => 'oid', s => 'aggregate_dummy' },
 { oid => '2135', descr => 'minimum value of all float4 input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'float4', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2136', descr => 'minimum value of all float8 input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2137', descr => 'minimum value of all abstime input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'abstime', at => 'abstime', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'abstime', at => 'abstime', s => 'aggregate_dummy' },
 { oid => '2138', descr => 'minimum value of all date input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'date', at => 'date', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'date', at => 'date', s => 'aggregate_dummy' },
 { oid => '2139', descr => 'minimum value of all time input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'time', at => 'time', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'time', at => 'time', s => 'aggregate_dummy' },
 { oid => '2140', descr => 'minimum value of all time with time zone input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'timetz', at => 'timetz', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'timetz', at => 'timetz', s => 'aggregate_dummy' },
 { oid => '2141', descr => 'minimum value of all money input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'money', at => 'money', s => 'aggregate_dummy' },
 { oid => '2142', descr => 'minimum value of all timestamp input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'timestamp', at => 'timestamp', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'timestamp', at => 'timestamp', s => 'aggregate_dummy' },
 { oid => '2143', descr => 'minimum value of all timestamp with time zone input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'timestamptz', at => 'timestamptz', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'timestamptz', at => 'timestamptz', s => 'aggregate_dummy' },
 { oid => '2144', descr => 'minimum value of all interval input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'interval', at => 'interval', s => 'aggregate_dummy' },
 { oid => '2145', descr => 'minimum value of all text values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'text', at => 'text', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'text', at => 'text', s => 'aggregate_dummy' },
 { oid => '2146', descr => 'minimum value of all numeric input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 { oid => '2051', descr => 'minimum value of all anyarray input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'anyarray', at => 'anyarray', s => 'aggregate_dummy' },
 { oid => '2245', descr => 'minimum value of all bpchar input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'bpchar', at => 'bpchar', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'bpchar', at => 'bpchar', s => 'aggregate_dummy' },
 { oid => '2798', descr => 'minimum value of all tid input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'tid', at => 'tid', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'tid', at => 'tid', s => 'aggregate_dummy' },
 { oid => '3565', descr => 'minimum value of all inet input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'inet', at => 'inet', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'inet', at => 'inet', s => 'aggregate_dummy' },
 
 # count has two forms: count(any) and count(*)
 { oid => '2147', descr => 'number of input rows for which the input expression is not null',
-  n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },
+  n => 'count', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'any', s => 'aggregate_dummy' },
 { oid => '2803', descr => 'number of input rows',
-  n => 'count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => '', s => 'aggregate_dummy' },
+  n => 'count', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => '', s => 'aggregate_dummy' },
 
 { oid => '2718', descr => 'population variance of bigint input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2719', descr => 'population variance of integer input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2720', descr => 'population variance of smallint input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2721', descr => 'population variance of float4 input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2722', descr => 'population variance of float8 input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2723', descr => 'population variance of numeric input values (square of the population standard deviation)',
-  n => 'var_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'var_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2641', descr => 'sample variance of bigint input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2642', descr => 'sample variance of integer input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2643', descr => 'sample variance of smallint input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2644', descr => 'sample variance of float4 input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 
 { oid => '2645', descr => 'sample variance of float8 input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2646', descr => 'sample variance of numeric input values (square of the sample standard deviation)',
-  n => 'var_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'var_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2148', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2149', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2150', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2151', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2152', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2153', descr => 'historical alias for var_samp',
-  n => 'variance', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'variance', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2724', descr => 'population standard deviation of bigint input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2725', descr => 'population standard deviation of integer input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2726', descr => 'population standard deviation of smallint input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2727', descr => 'population standard deviation of float4 input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2728', descr => 'population standard deviation of float8 input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2729', descr => 'population standard deviation of numeric input values',
-  n => 'stddev_pop', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'stddev_pop', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2712', descr => 'sample standard deviation of bigint input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2713', descr => 'sample standard deviation of integer input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2714', descr => 'sample standard deviation of smallint input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2715', descr => 'sample standard deviation of float4 input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2716', descr => 'sample standard deviation of float8 input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2717', descr => 'sample standard deviation of numeric input values',
-  n => 'stddev_samp', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'stddev_samp', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2154', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2155', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2156', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2157', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float4', s => 'aggregate_dummy' },
 { oid => '2158', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8', s => 'aggregate_dummy' },
 { oid => '2159', descr => 'historical alias for stddev_samp',
-  n => 'stddev', proisagg => 't', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
+  n => 'stddev', prokind => 'a', v => 'i', p => 's', rt => 'numeric', at => 'numeric', s => 'aggregate_dummy' },
 
 { oid => '2818', descr => 'number of input rows in which both expressions are not null',
-  n => 'regr_count', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_count', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2819', descr => 'sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)',
-  n => 'regr_sxx', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_sxx', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2820', descr => 'sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)',
-  n => 'regr_syy', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_syy', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2821', descr => 'sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)',
-  n => 'regr_sxy', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_sxy', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2822', descr => 'average of the independent variable (sum(X)/N)',
-  n => 'regr_avgx', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_avgx', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2823', descr => 'average of the dependent variable (sum(Y)/N)',
-  n => 'regr_avgy', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_avgy', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2824', descr => 'square of the correlation coefficient',
-  n => 'regr_r2', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_r2', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2825', descr => 'slope of the least-squares-fit linear equation determined by the (X, Y) pairs',
-  n => 'regr_slope', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_slope', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2826', descr => 'y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs',
-  n => 'regr_intercept', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'regr_intercept', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 
 { oid => '2827', descr => 'population covariance',
-  n => 'covar_pop', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'covar_pop', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2828', descr => 'sample covariance',
-  n => 'covar_samp', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'covar_samp', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '2829', descr => 'correlation coefficient',
-  n => 'corr', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'corr', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 
 { oid => '2160',
   n => 'text_pattern_lt', is => 't', v => 'i', p => 's', rt => 'bool', at => 'text text' },
@@ -4756,31 +4756,31 @@
 { oid => '3499', descr => 'aggregate final function',
   n => 'bool_anytrue', is => 't', v => 'i', p => 's', rt => 'bool', at => 'internal' },
 { oid => '2517', descr => 'boolean-and aggregate',
-  n => 'bool_and', proisagg => 't', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
+  n => 'bool_and', prokind => 'a', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
 
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
-  n => 'bool_or', proisagg => 't', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
+  n => 'bool_or', prokind => 'a', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
 { oid => '2519', descr => 'boolean-and aggregate',
-  n => 'every', proisagg => 't', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
+  n => 'every', prokind => 'a', v => 'i', p => 's', rt => 'bool', at => 'bool', s => 'aggregate_dummy' },
 
 # bitwise integer aggregates
 { oid => '2236', descr => 'bitwise-and smallint aggregate',
-  n => 'bit_and', proisagg => 't', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
+  n => 'bit_and', prokind => 'a', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2237', descr => 'bitwise-or smallint aggregate',
-  n => 'bit_or', proisagg => 't', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
+  n => 'bit_or', prokind => 'a', v => 'i', p => 's', rt => 'int2', at => 'int2', s => 'aggregate_dummy' },
 { oid => '2238', descr => 'bitwise-and integer aggregate',
-  n => 'bit_and', proisagg => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
+  n => 'bit_and', prokind => 'a', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2239', descr => 'bitwise-or integer aggregate',
-  n => 'bit_or', proisagg => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
+  n => 'bit_or', prokind => 'a', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'aggregate_dummy' },
 { oid => '2240', descr => 'bitwise-and bigint aggregate',
-  n => 'bit_and', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
+  n => 'bit_and', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2241', descr => 'bitwise-or bigint aggregate',
-  n => 'bit_or', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
+  n => 'bit_or', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'int8', s => 'aggregate_dummy' },
 { oid => '2242', descr => 'bitwise-and bit aggregate',
-  n => 'bit_and', proisagg => 't', v => 'i', p => 's', rt => 'bit', at => 'bit', s => 'aggregate_dummy' },
+  n => 'bit_and', prokind => 'a', v => 'i', p => 's', rt => 'bit', at => 'bit', s => 'aggregate_dummy' },
 { oid => '2243', descr => 'bitwise-or bit aggregate',
-  n => 'bit_or', proisagg => 't', v => 'i', p => 's', rt => 'bit', at => 'bit', s => 'aggregate_dummy' },
+  n => 'bit_or', prokind => 'a', v => 'i', p => 's', rt => 'bit', at => 'bit', s => 'aggregate_dummy' },
 
 # formerly-missing interval + datetime operators
 { oid => '2546',
@@ -4968,7 +4968,7 @@
 { oid => '2900', descr => 'aggregate transition function',
   n => 'xmlconcat2', v => 'i', p => 's', rt => 'xml', at => 'xml xml' },
 { oid => '2901', descr => 'concatenate XML values',
-  n => 'xmlagg', proisagg => 't', v => 'i', p => 's', rt => 'xml', at => 'xml', s => 'aggregate_dummy' },
+  n => 'xmlagg', prokind => 'a', v => 'i', p => 's', rt => 'xml', at => 'xml', s => 'aggregate_dummy' },
 { oid => '2922', descr => 'serialize an XML value to a character string',
   n => 'text', is => 't', v => 'i', p => 's', rt => 'text', at => 'xml', s => 'xmltotext' },
 
@@ -5044,13 +5044,13 @@
 { oid => '3174', descr => 'json aggregate final function',
   n => 'json_agg_finalfn', v => 'i', p => 's', rt => 'json', at => 'internal' },
 { oid => '3175', descr => 'aggregate input into json',
-  n => 'json_agg', proisagg => 't', v => 's', p => 's', rt => 'json', at => 'anyelement', s => 'aggregate_dummy' },
+  n => 'json_agg', prokind => 'a', v => 's', p => 's', rt => 'json', at => 'anyelement', s => 'aggregate_dummy' },
 { oid => '3180', descr => 'json object aggregate transition function',
   n => 'json_object_agg_transfn', v => 's', p => 's', rt => 'internal', at => 'internal any any' },
 { oid => '3196', descr => 'json object aggregate final function',
   n => 'json_object_agg_finalfn', v => 'i', p => 's', rt => 'json', at => 'internal' },
 { oid => '3197', descr => 'aggregate input into a json object',
-  n => 'json_object_agg', proisagg => 't', v => 's', p => 's', rt => 'json', at => 'any any', s => 'aggregate_dummy' },
+  n => 'json_object_agg', prokind => 'a', v => 's', p => 's', rt => 'json', at => 'any any', s => 'aggregate_dummy' },
 { oid => '3198', descr => 'build a json array from any inputs',
   n => 'json_build_array', provariadic => '2276', v => 's', p => 's', rt => 'json', at => 'any', proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3199', descr => 'build an empty json array',
@@ -5195,9 +5195,9 @@
 { oid => '3525', descr => 'larger of two',
   n => 'enum_larger', is => 't', v => 'i', p => 's', rt => 'anyenum', at => 'anyenum anyenum' },
 { oid => '3526', descr => 'maximum value of all enum input values',
-  n => 'max', proisagg => 't', v => 'i', p => 's', rt => 'anyenum', at => 'anyenum', s => 'aggregate_dummy' },
+  n => 'max', prokind => 'a', v => 'i', p => 's', rt => 'anyenum', at => 'anyenum', s => 'aggregate_dummy' },
 { oid => '3527', descr => 'minimum value of all enum input values',
-  n => 'min', proisagg => 't', v => 'i', p => 's', rt => 'anyenum', at => 'anyenum', s => 'aggregate_dummy' },
+  n => 'min', prokind => 'a', v => 'i', p => 's', rt => 'anyenum', at => 'anyenum', s => 'aggregate_dummy' },
 { oid => '3528', descr => 'first value of the input enum type',
   n => 'enum_first', v => 's', p => 's', rt => 'anyenum', at => 'anyenum' },
 { oid => '3529', descr => 'last value of the input enum type',
@@ -5550,13 +5550,13 @@
 { oid => '3266', descr => 'jsonb aggregate final function',
   n => 'jsonb_agg_finalfn', v => 's', p => 's', rt => 'jsonb', at => 'internal' },
 { oid => '3267', descr => 'aggregate input into jsonb',
-  n => 'jsonb_agg', proisagg => 't', v => 's', p => 's', rt => 'jsonb', at => 'anyelement', s => 'aggregate_dummy' },
+  n => 'jsonb_agg', prokind => 'a', v => 's', p => 's', rt => 'jsonb', at => 'anyelement', s => 'aggregate_dummy' },
 { oid => '3268', descr => 'jsonb object aggregate transition function',
   n => 'jsonb_object_agg_transfn', v => 's', p => 's', rt => 'internal', at => 'internal any any' },
 { oid => '3269', descr => 'jsonb object aggregate final function',
   n => 'jsonb_object_agg_finalfn', v => 's', p => 's', rt => 'jsonb', at => 'internal' },
 { oid => '3270', descr => 'aggregate inputs into jsonb object',
-  n => 'jsonb_object_agg', proisagg => 't', v => 'i', p => 's', rt => 'jsonb', at => 'any any', s => 'aggregate_dummy' },
+  n => 'jsonb_object_agg', prokind => 'a', v => 'i', p => 's', rt => 'jsonb', at => 'any any', s => 'aggregate_dummy' },
 { oid => '3271', descr => 'build a jsonb array from any inputs',
   n => 'jsonb_build_array', provariadic => '2276', v => 's', p => 's', rt => 'jsonb', at => 'any', proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3272', descr => 'build an empty jsonb array',
@@ -5735,35 +5735,35 @@
 
 # SQL-spec window functions
 { oid => '3100', descr => 'row number within partition',
-  n => 'row_number', proiswindow => 't', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_row_number' },
+  n => 'row_number', prokind => 'w', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_row_number' },
 { oid => '3101', descr => 'integer rank with gaps',
-  n => 'rank', proiswindow => 't', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_rank' },
+  n => 'rank', prokind => 'w', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_rank' },
 { oid => '3102', descr => 'integer rank without gaps',
-  n => 'dense_rank', proiswindow => 't', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_dense_rank' },
+  n => 'dense_rank', prokind => 'w', v => 'i', p => 's', rt => 'int8', at => '', s => 'window_dense_rank' },
 { oid => '3103', descr => 'fractional rank within partition',
-  n => 'percent_rank', proiswindow => 't', v => 'i', p => 's', rt => 'float8', at => '', s => 'window_percent_rank' },
+  n => 'percent_rank', prokind => 'w', v => 'i', p => 's', rt => 'float8', at => '', s => 'window_percent_rank' },
 { oid => '3104', descr => 'fractional row number within partition',
-  n => 'cume_dist', proiswindow => 't', v => 'i', p => 's', rt => 'float8', at => '', s => 'window_cume_dist' },
+  n => 'cume_dist', prokind => 'w', v => 'i', p => 's', rt => 'float8', at => '', s => 'window_cume_dist' },
 { oid => '3105', descr => 'split rows into N groups',
-  n => 'ntile', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'window_ntile' },
+  n => 'ntile', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'int4', at => 'int4', s => 'window_ntile' },
 { oid => '3106', descr => 'fetch the preceding row value',
-  n => 'lag', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_lag' },
+  n => 'lag', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_lag' },
 { oid => '3107', descr => 'fetch the Nth preceding row value',
-  n => 'lag', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_lag_with_offset' },
+  n => 'lag', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_lag_with_offset' },
 { oid => '3108', descr => 'fetch the Nth preceding row value with default',
-  n => 'lag', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4 anyelement', s => 'window_lag_with_offset_and_default' },
+  n => 'lag', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4 anyelement', s => 'window_lag_with_offset_and_default' },
 { oid => '3109', descr => 'fetch the following row value',
-  n => 'lead', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_lead' },
+  n => 'lead', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_lead' },
 { oid => '3110', descr => 'fetch the Nth following row value',
-  n => 'lead', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_lead_with_offset' },
+  n => 'lead', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_lead_with_offset' },
 { oid => '3111', descr => 'fetch the Nth following row value with default',
-  n => 'lead', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4 anyelement', s => 'window_lead_with_offset_and_default' },
+  n => 'lead', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4 anyelement', s => 'window_lead_with_offset_and_default' },
 { oid => '3112', descr => 'fetch the first row value',
-  n => 'first_value', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_first_value' },
+  n => 'first_value', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_first_value' },
 { oid => '3113', descr => 'fetch the last row value',
-  n => 'last_value', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_last_value' },
+  n => 'last_value', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'window_last_value' },
 { oid => '3114', descr => 'fetch the Nth row value',
-  n => 'nth_value', proiswindow => 't', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_nth_value' },
+  n => 'nth_value', prokind => 'w', is => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement int4', s => 'window_nth_value' },
 
 # functions for range types
 { oid => '3832', descr => 'I/O',
@@ -6010,49 +6010,49 @@
 
 # inverse distribution aggregates (and their support functions)
 { oid => '3972', descr => 'discrete percentile',
-  n => 'percentile_disc', proisagg => 't', v => 'i', p => 's', rt => 'anyelement', at => 'float8 anyelement', s => 'aggregate_dummy' },
+  n => 'percentile_disc', prokind => 'a', v => 'i', p => 's', rt => 'anyelement', at => 'float8 anyelement', s => 'aggregate_dummy' },
 { oid => '3973', descr => 'aggregate final function',
   n => 'percentile_disc_final', v => 'i', p => 's', rt => 'anyelement', at => 'internal float8 anyelement' },
 { oid => '3974', descr => 'continuous distribution percentile',
-  n => 'percentile_cont', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
+  n => 'percentile_cont', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'float8 float8', s => 'aggregate_dummy' },
 { oid => '3975', descr => 'aggregate final function',
   n => 'percentile_cont_float8_final', v => 'i', p => 's', rt => 'float8', at => 'internal float8' },
 { oid => '3976', descr => 'continuous distribution percentile',
-  n => 'percentile_cont', proisagg => 't', v => 'i', p => 's', rt => 'interval', at => 'float8 interval', s => 'aggregate_dummy' },
+  n => 'percentile_cont', prokind => 'a', v => 'i', p => 's', rt => 'interval', at => 'float8 interval', s => 'aggregate_dummy' },
 { oid => '3977', descr => 'aggregate final function',
   n => 'percentile_cont_interval_final', v => 'i', p => 's', rt => 'interval', at => 'internal float8' },
 { oid => '3978', descr => 'multiple discrete percentiles',
-  n => 'percentile_disc', proisagg => 't', v => 'i', p => 's', rt => 'anyarray', at => '_float8 anyelement', s => 'aggregate_dummy' },
+  n => 'percentile_disc', prokind => 'a', v => 'i', p => 's', rt => 'anyarray', at => '_float8 anyelement', s => 'aggregate_dummy' },
 { oid => '3979', descr => 'aggregate final function',
   n => 'percentile_disc_multi_final', v => 'i', p => 's', rt => 'anyarray', at => 'internal _float8 anyelement' },
 { oid => '3980', descr => 'multiple continuous percentiles',
-  n => 'percentile_cont', proisagg => 't', v => 'i', p => 's', rt => '_float8', at => '_float8 float8', s => 'aggregate_dummy' },
+  n => 'percentile_cont', prokind => 'a', v => 'i', p => 's', rt => '_float8', at => '_float8 float8', s => 'aggregate_dummy' },
 { oid => '3981', descr => 'aggregate final function',
   n => 'percentile_cont_float8_multi_final', v => 'i', p => 's', rt => '_float8', at => 'internal _float8' },
 { oid => '3982', descr => 'multiple continuous percentiles',
-  n => 'percentile_cont', proisagg => 't', v => 'i', p => 's', rt => '_interval', at => '_float8 interval', s => 'aggregate_dummy' },
+  n => 'percentile_cont', prokind => 'a', v => 'i', p => 's', rt => '_interval', at => '_float8 interval', s => 'aggregate_dummy' },
 { oid => '3983', descr => 'aggregate final function',
   n => 'percentile_cont_interval_multi_final', v => 'i', p => 's', rt => '_interval', at => 'internal _float8' },
 { oid => '3984', descr => 'most common value',
-  n => 'mode', proisagg => 't', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'aggregate_dummy' },
+  n => 'mode', prokind => 'a', v => 'i', p => 's', rt => 'anyelement', at => 'anyelement', s => 'aggregate_dummy' },
 { oid => '3985', descr => 'aggregate final function',
   n => 'mode_final', v => 'i', p => 's', rt => 'anyelement', at => 'internal anyelement' },
 
 # hypothetical-set aggregates (and their support functions)
 { oid => '3986', descr => 'rank of hypothetical row',
-  n => 'rank', provariadic => '2276', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
+  n => 'rank', provariadic => '2276', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
 { oid => '3987', descr => 'aggregate final function',
   n => 'rank_final', provariadic => '2276', v => 'i', p => 's', rt => 'int8', at => 'internal any', proallargtypes => '{internal,any}', proargmodes => '{i,v}', s => 'hypothetical_rank_final' },
 { oid => '3988', descr => 'fractional rank of hypothetical row',
-  n => 'percent_rank', provariadic => '2276', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
+  n => 'percent_rank', provariadic => '2276', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
 { oid => '3989', descr => 'aggregate final function',
   n => 'percent_rank_final', provariadic => '2276', v => 'i', p => 's', rt => 'float8', at => 'internal any', proallargtypes => '{internal,any}', proargmodes => '{i,v}', s => 'hypothetical_percent_rank_final' },
 { oid => '3990', descr => 'cumulative distribution of hypothetical row',
-  n => 'cume_dist', provariadic => '2276', proisagg => 't', v => 'i', p => 's', rt => 'float8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
+  n => 'cume_dist', provariadic => '2276', prokind => 'a', v => 'i', p => 's', rt => 'float8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
 { oid => '3991', descr => 'aggregate final function',
   n => 'cume_dist_final', provariadic => '2276', v => 'i', p => 's', rt => 'float8', at => 'internal any', proallargtypes => '{internal,any}', proargmodes => '{i,v}', s => 'hypothetical_cume_dist_final' },
 { oid => '3992', descr => 'rank of hypothetical row without gaps',
-  n => 'dense_rank', provariadic => '2276', proisagg => 't', v => 'i', p => 's', rt => 'int8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
+  n => 'dense_rank', provariadic => '2276', prokind => 'a', v => 'i', p => 's', rt => 'int8', at => 'any', proallargtypes => '{any}', proargmodes => '{v}', s => 'aggregate_dummy' },
 { oid => '3993', descr => 'aggregate final function',
   n => 'dense_rank_final', provariadic => '2276', v => 'i', p => 's', rt => 'int8', at => 'internal any', proallargtypes => '{internal,any}', proargmodes => '{i,v}', s => 'hypothetical_dense_rank_final' },
 
#25John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#23)
Re: WIP: a way forward on bootstrap data

On 1/13/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

According to my understanding, part of what's going on here is that
we're going to teach genbki.pl to parse these object references and
convert them to hard-coded OIDs in the emitted BKI file. That seems
good to me, but one thing we're going to need is a spec for how
genbki.pl knows what to do.

I don't know if it qualifies as a spec, but here's my implementation:

Use dummy type aliases in the header files: regam, regoper, regopf, and regtype
These are #defined away in genbki.h:

+/* ----------------
+ *	Some columns of type Oid have human-readable entries that are
+ *	resolved when creating postgres.bki.
+ * ----------------
+ */
+#define regam Oid
+#define regoper Oid
+#define regopf Oid
+#define regtype Oid

Likewise, in genbki.pl (and I just noticed a typo, s/names/types/):

+# We use OID aliases to indicate when to do OID lookups, so column names
+# have to be turned back into 'oid' before writing the CREATE command.
+my %RENAME_REGOID = (
+	regam => 'oid',
+	regoper => 'oid',
+	regopf => 'oid',
+	regtype => 'oid');
+

When genbki.pl sees one of these type aliases, it consults the
appropriate lookup table, exactly how we do now for regproc. One
possibly dubious design point is that I declined to teach the
pg_attribute logic about this, so doing lookups in tables with schema
macros has to be done explicitly. There is only one case of this right
now, and I noted the tradeoff:

+				# prorettype
+				# Note: We could handle this automatically by using the
+				# 'regtype' alias, but then we would have to teach
+				# morph_row_for_pgattr() to change the attribute type back to
+				# oid. Since we have to treat pg_proc differently anyway,
+				# just do the type lookup manually here.
+				my $rettypeoid = $regtypeoids{ $bki_values{prorettype}};
+				$bki_values{prorettype} = $rettypeoid
+				  if defined($rettypeoid);

This is all in patch 0011.

-John Naylor

#26John Naylor
jcnaylor@gmail.com
In reply to: Alvaro Herrera (#13)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 1/12/18, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Pushed 0001 with some changes of my own. I'm afraid I created a few
conflicts for the later patches in your series; please rebase.

Attached, rebased over 255f14183ac. This time it's a single .tar.gz.
Let me know if single files are better. Here's the renumbered overview
copied from one of my emails responding to Tom:

-Patches 0001 through 0006 represent a complete one-to-one migration
of data entries. I didn't see much in bki.sgml specific to the current
format, so my documentation changes are confined largely to the
README, in patch 0004.
-Patches 0007 and 0008 implement techniques to make the data lines
shorter. My choices are certainly debatable. There is a brief addition
to the README in patch 0007. The abbreviation technique was only used
in three catalogs to demonstrate.
-Patches 0009 and 0010 implement human-readable OID references.
-Patches 0011 and 0012 are cosmetic, but invasive.

-John Naylor

Attachments:

V6-Bootstrap-Data-Conversion-Patchset.tar.gzapplication/x-gzip; name=V6-Bootstrap-Data-Conversion-Patchset.tar.gzDownload
��ZZ��m�#7v.x?����~;�j�{&g��xt}�;��Jr��:�*V5g���%u�}��&����p���*�=]|{�$ppp��\]%I�\�~��]�-�W7�����v�Z�}�mo������������u���&i��i���4���H��H'IZ�o��I������v�n��y�~i����d��������W����<)�2��M�$�n�:-fM>�����f��������Q���r���i���$����$kG������������������f���������m+V������o'?=���d�����������6o���I�$o~|����f����������M~�&I�U���d'����N�R����_���|r{�t3�e�}?��o��������ly;�]_��?/f��m&�����%t������O�W����b��������f}��by��|;�����au��������z~���m����&���&_X���z�u��M��h����������zus�a�L������<o�/n��L��F��a��t�v��4�����_��r|��mW���G/��3��}�t7{\<|<�n����P{j���j����+�?o��i��M�d7����(g7�g�������H�V�6��^����8�w;�����7onww�����v2�
��k�koZa����w�|~���mqS���%�TE�d��7m�m~���*�2m����������L�L������7W�9ip�\-n'��O��d-��|�{�/-��[�������b�����~������z���-�o-���]��nvs��x��n��=?oA������������h���b971�o��������rxw����n���N�w_|t�~\,�������=����1�����t��������U+��o��o�������So4v��0�Y�*�oZ}|��h�� ����`�\l�=��{�|~xx�uX�������4N�
�������!XW�]�B�#BM���%����������MYI��������&$��>#(Y��dc�BP�WA	�<BPNJX�qQx�Q�e_��o�W.��)^����k�.[i��nu�X��1�{X�vZ������>:~*���h	�"$���r��t=MB��eh=c��2V�W	��%���I����Mr���K��%=2�]�|��K����}l�����L6������������N��`]�W��t�������{�/�O�-q�?[�����:a_�%<������;A��A�fx���z���,�e9��)��"����K�<v���@����7����Z����)�9}��4E6���-*r�`~'`����������X�G����������p,+�x�4N(�
1��U(8�Hc��;�4�N���������p�q��e!���LN������`����;&O{3���������0������O}�x���>&���P���~������X��"���������G��q3?� �8������Q����0E��^>c��S�:�S�/������q�)��Y��������Y�yf}�i����f��%���L+D�J3-�h��i�����D��g�8��H��nj�0A$V^M��{��	����S��Sz��k���~��9��6w��v�;x��N�������YJ�x>��Lf�#�}�#N�V����d�Z�7����w�����|�c�s��k��?��F=#W�qedN�("#�?���W�=�c��Y�f�WN]�+f��G!p�c�q��������~��
z�Lkj������$���G�a����v=����,&���������g7�eI.�iV����b�q�0����?��}��k�W���C�����v���?��?���?K*z�����@L|���O��s�4�!hF%�E����g����7�97��Z�c"x���<'����m�+��;Gm��y�;e�������6�i]�C��*v��1�?[�g������n�����g���|V�8��O7�gk��'~��
}��4S�(�WO�}�����N�fMBy6����Q������L���s��L�����������6N������4��}n��f�9�h6��bcO�gu�e���H���i�>���6^0���mL��>���x�6�UY1�{��${�R��4Ml��8h���AF��~����*�`0�k�	��gZ'��{)lW�L3���^6��l�����H���~`��aAh?3��HAA��uB���(&.�6�B�``�i3|��\�0#��B_����p%�����`9�N$�.d��8�8`�����"!w<t�I���*���tm!��j���Y/��:(4���)E��������A�%���.l6����-A�/>7�����Q�	�c�w�����������6���|d�C�}�CN��Q�
�c�R-����?���J��~T�����
<5;���n�3r=Uv9�c��P����\U3?*�������Hf�G�WN����}$�o��?���=Mh{nd������]�o��?��>��?#�!T�T����Co�������.��#T�D�v������s�iB����%t*d��%�?���}n�%��7�}BE�n�SV1P>{������v
Ew�\o?����'9'�Z�c�z�T�����s��.��n�"&���9�5���>��Ok��iT���1�u#~�O�������m�P��?V���=���o���������n}���>�Ao�����g��e�y��4�A���s��L��>�}C1��T�i�Q����?��J�q���=zR�U<��2�gd�����k�-�cZ�/=���gl�\5�:Q�k�/9���� �q�vg[�S�6P�
��(�&J:�5P����?*���=�>�C���vf��$2����K�:��`>��P��d?���������\�+Uey��	��$D��	�p`�0;���<�c�#Bi�qb(��a.���-�aM$"� (>C"l`p��WDL"����qfg1 TT�;�.;���P����p�!���]D,i}o��������	��G���v����[*�Y��,�7�f����#s���(u���\����z������N�����j��M'�!x�1����X��s��6��K=g��{o>b��N�Yh��k��nW�����J�p�����c�6��}�v�r}���V�b?��.�Fp�/!Q1E��kb�K����-[�[x!��)e��\�r���Z�u�B�u=��N�O[�2�����&!h1��H.'j��M������3H�0!L-d%��������W
b*����*�����������L���{�����X&u����5��1#A��^=�)4���N�|���4@D�jK�3���aJ��������W���.���=��*j�.������8�.��G����L�x�^6�K�>�e��v�0W�������	�_����Z�g�����5�6�`Z��
6�_�`�b ����1�p�F��\2�ZQe�����������7�Q^:pWQ�^m�q
�1c�8:dYQ����Zvx|2K������W���������v��h��O���~=�L6������jm	���K��c�_�/�M�+k�
��u��B�uw����*j��"����qG��2&����l����[�a:�b_2�9e������3����5��R�������"��n�%�yg �3B^m��b7�������Y�%�U����Sl�7��n$rS[0�p}6�'!p���Sy[c�7A{�U��s.dY�E�5�6�@[��$�!��U>
A��*�^��Lia���Xp.z�@F����
>��xq�~��A_:��9������8�t ;9:��}/`�	�%2D����/ j$�.v����
S`�ui[�5co9�5rC��Q3�t��U3r��`|,��*y�gc8y��U�X��������#��1� +�U�.	1I?i&�0>������J����^`�����z0�'}��_J�3^-��
{�����L�x�PV�["��jy\`!Q����
�Q��|���q�kw(c����,�����}�=�/YT;V�{������TY�k�n����|���WI�$�\a�8L��(�KhP����Cl>�(n���z0~�K;����@E������/�6��vK�������C�$�������d=��o7��r����l;����&��8v��by��(_���~E����O�"C��Q��H�N�<�&��,�#��.�J�e���E����j
��_9��I<_D,>~|�OD,�X���b��������X�~�]E>���r�/���S���q�Xg�R��H�����q��z��
�'"�YP�X,�����i�*��pD�K@�q���Zj?��U.�$��\8B���1&�x����j�~�1�D/w��=�l���c�z���@����9�S���3s�3,F�;�~�0�u���Bib����C�{��s���c�__;��,F���6�k'�\�����w�e8Y�|���m����m\�V���j����?�^��flu���m��f;�����7��'�4����;4[���s���������y����V�ulUG�L[K!O�����$eT9��sW� ��������2�4$$�~�"���-�%�?�Bh��=��}����0� �$�V}�z����U����[lYl���r?'��,��e���}�o�*��]brZq�<�n���j�1��/�����sd)}�5��_����4�16�n�|ft����c�"�&~�%�����lF�&p�c��wc�3��_���8����F=>��/�*�9-�Q�tL%z;x��V��:�C�s/�����{l��{��S]-�	C��Q
�
�r�	"<����	6P�L ���[0�&��
u9�Z���B����'��Q�hV�0
��M�
p���4-��jy3�f���5i@MN.��q�
_�'<��z��/>y�7c��}�������r|w�R�}Q;�;��S��1��ypRp��U./=���)Nw,���`���������������o��������w�;c�q��%f�Y��&����!�E�
�}�P�}�U"�(�����&����}�L���a��v�x��c��1)�������~
����pyY�)�NHLp��<��\�t�u:dU�t�v�~�#����c����E���U!�Kz���2�U��![6��Z�������|������j�~��]Dux�?�4��fBw�M"Lzl�]�������x���.��v�0w����m���/F�af���5� �'L
,7����*>Ry�����<���/!�
�-�W��D�Q��X*�������y�hL���qK��YI4/lO����\�V.`��p�P�h{i>���U��1�>Z+�z_�/��3��_�����|N����WY�,LM�q8Y�y~���WA� ���p�p;_n��*a���_<M��Y�&�m���<�G{Y�U�g��W�b��d������Ry9�{P�2�?�����}�K;	/������|�����i�{7���_l'��6���������W7���au�����������l;�v}�M�O��y��Is���,�����I�$UQ����r����/�Z����U�e�������_������U�VO�CE���n���d����v���������n��x8tZz4��w�w[�X������=��������gqh�|z^?�6��m�k������������$?�����*�|��f�2��B7G:������-!��7�V��dU��d�h���[:���Vu�t-�Af*�I�#1s�f!Y�4E0K3�c����z�9���,�-��
��e~��A��Te�?=����2��f'�B��
]HW��7]lv���<M���b��� 4�?f��V�*��-L][������%��!�2m�K�K�/�.[��Sd ���l�^B�|��������-_���	�2�9�7T��%�?hn�k8�0@k	��%�v��21sZ��M���S��-���c�9���w��3>h`��.����t���#��KYp��3�K`������ 
g�+�a�x�g^^aKF����e~���,���@t1g��=<pY��.���/���f����1��eAhL�V�|���4�qb��jK/g���`g<@�b�(�f���[���B��7�
|�"���7������������d��� u�;X���w���s������%�x{)��C�Y������,�Ac�>tY��jt���,�U�>t%Y���/?�DK���-8�L���}r�����{9�B��R�f�c&���l��oF������/1������%�{���6U3�Xn������vj�h�:�Y��3z�u�;��5s;�������p�����A��+���]pz�H/1���;E@��@t1+s��]���G����9He�	��t	Pl��$���������0u+3�iX�SF[��W��c�:%g���������3DGV���
D��U*������*���Etd%�����* ����=�����9]q:�4]x=aj:�$������X�0�����0K��I?���EGf5#g5-g5%g���������(��I$��_DK������h��{%��_DM�|�����i^����9=�MNY������:T��'���,�vU	���]W���������X������^�����B&�/@�*3M�.dU26�]��,d�0t!������y�v�x�9��9M���0u��pY��nU.������u�0u���R�M�?���K|�&v�PRX'������R{�%CZTj?�aH�J\%C�T�H]�0�K�,�Q��<�<��Z���xc��>u���Pu����b��Nu�c��V������A�2UF���9O/�D�s����hx�<��
�������t@E����M�g��U����]�g��e���SV�2���*���F��J��G�0d�J�H��Q�*/	��9Z�F�C�h���Zf��!��E+w�������U7G�ES�n��~�E����XE��(W��)�.}�J��#�3G�Na�`���R�>�1sTjs�c�
���Nx���fO�a�N��a
s�]R����{k)k���NP%dz�~������dv����uo����D^[�-d��({	������,dy��Jl!�3N[h'���Z���9s{���
N��� 59�@�-M�*� u3���������,��{
�R"i�J�����J��3�.�e"	l!�X��.�������=���7�+�ia���rVq"���t����!+L]ER���E��[[MRA�Y�7��JJ�0)��
��T�P	U<]HE
�����T�P�W<]LE��$�9���V�fT��)�0
�,sB0u��B 
���B0
i�H�~r8��Z�t�b���� eRJ�e)�P�2)%*"�(Ca���qae(Cq�D�j��*��H�Uc�@d���#��)��73p��8nn���fWV&��-
\{)����|f��
)����4x�P:-%�	���
)�x�����]H{NEB4t!�9
XR���(3[����{����k330]���
L��a��r�I`�����}v��.,���;��H(���}oMY�\� �:_X$� ���������0,���1r�&����@c�� �e���v��(h���t�3�&���9�TtT����X(*�,��}�����ICK��A�/r��e���/B�2������(c.�H�V�2�������\	����W���|�5\x�8���;�E8���;"�8���S�����?o&;�����$2�N��V�Y.��]�2t H��y8��rm)��N�(C���"��(CG��G	���@�T��
Q*:nf��+W77p�	�0p����[����R�����d�^e��B�1�*�~���W���eL�����(c�5���:��zu=a\C���O0��^]�P����k�W���1[�+������X�(Cz5�d�������p�!���[�(Cz5	�����@1[W���\�����>z��[�>��
�4p}�t��kee1"����G�WE��KQ��U���R�1{5`��p�1{5`G?8�-��n
��K����x\�^ul��q
{����k���|�p��G�J��~B�!�*sY�eH����b_��z
��w8��z-s��jVY��)d�Y��[�q�������p�'�k�-
\"��
�i��O�"�\�l<)�P�@p�p��"�\�t<)��fm)�~yR����S�������B�F��f���i��
\����0p�Vni��d1* ����p���@s�h�X=)c�{N�(c�F�b���5 �xY�\# ���)k@���X-�F@�q9	�k�b,����,VY\����b���bO�X8���k��*���Y���h�d�NS(�X�d�Nr�k��#���:IL<�(8��t�����)�=��i	<�HnP�3H������3HS	�*�;�4�S�dm?���Z{E�R��0��v�*����D
c�V�6N(��5���o�m�IB��f��:� �?�W�e)a@�q�kYJLx1��b-K�L�3�XK�s�8C��8�F���@�4�L��+Z����M<�3���<�s��x�=v�\�v{u����?�l��f�(�
#���VBg�q��V'�K\	��/��\	��/�K]��vf�Q�Tu�^1�+�i�0����NL6�W��a`#}�<S6�WT���Zg7���5�U�XT��'��������5y"�!���T1��i&tM�cH�fB���0�tiWp�z��"k��I3�5y lf�:�(��N-���S�b��i��T���6_?���6N���V�y.r$�cD���%��cD��!�)c�����D�_�1�B[�QgM���]������B���i63`�J	��
X���a����aK�~��r��e��c�v��/��xWFh"c��0���DB�1���D&y&�3B�:/!���Dm�:R=J�j(U#4qY� �a�&v��Fh��k�������`X�M��SG
��8_/n87�9���&\��_��"���q��h-����Z$�'�����i�b�!]Z��7�4�����������q �pf;�d87��A�0�]�������e�z`�������|p�I�8�x�����_�.�A�2W����Tg%s��]�4������G5�����g�#���<Is��"���H��`�:����������2:1'e�|��!]��L��7B�1#3`#�p�1Sf�e��ld�����Y�����+3�@d��bL��!��/��=A��y�����e���
�5�Kj���G��9U�%	]�q���'��E�F$�%�R��H9�gH�6"�Z1��:m	u*���M�O�d�^=����V��#����v����v��\�v��\�v����y�4�n��%�Z;Gj����<���|���LQ�_�}�Y�B�C�T"�)��v�Fm�?�����1���@�
���h��x�>� ����=�	���Sn��z��Ka���
r�s�g2��gLqfBS[�3d����,�S���-*�S�[�I_+v|�s7�,�6�i�TS(�n��.��6k��Ea`C�R�����r���t:�����!����Zu�y_�G�0�R�B��a�M���`�e:
��0�I��y�$��'���Z}A������5�Q��C�m����D-tT�����:*Q)�h����zDI�u��{usZ��r�/���)C��e-��d#��(��0�;K���cwCG���L���se��_����$����<Iw4j�suX�(j�s���aT��h{z~��,��KV����eJ^���F�!���ld��2�����E%D��M*��%#��	����\��9�X�/H��8�0�Q3�a�������sj��:u2�Z�������z���9:���&�N��?-��\�$E��'"�
IQ��"��e('�\�4e(%����n;T#tG"k���O�/������+
�1P�u���c*�[�.?�f���
���\������)����S�X�3�Z�NE"�R���ME�\�8C���T�O�����T��@��������N-��k������������H�.�+.
`���+������������1CJ�3t�H*�^�8#�5OE��g��TD��q�N!I������z��k�����0�q�\v�W��`lW���lW�����Z����iIg=��V�Z�3f��"!>)���*m��Y��G>
���w����i����W���p�=�
��v�)q`�ju/<�
��v�p�����^�|P�O��6K�^����5A���V���|�o���8 g�^�D�c�8C�����b�!{5�����!G������q����W��J���v����C.`��y8pis���l�~�X��?L�zu�m�U�������+����KP(\����Z���_����.�}0F�4��B��.���$���tc�t���Z�3�}F�M�r���	���T��������k��1w�����t����>q�ZE��m��)C8
&L'S�s=L8M/���'����t��vej�.Y���]�PS5eQk?�B��4�,^F��{uq<��W�.�[2h�!�*�8�3ezfW�x?�V����#�����9}.��$��������lI'O�-�	VH}��]F�;���n�n��o������V��L
L7�{I�y��n�4�f������.��X���$e����J8~<�Rq��,d���JY[�H�
��,�2'�<��y��4G���	������c���������"%�����]���d,q�#}�F�sy]����Kv���M�A.*�����/xr�L�tM�w����(*�u��q�Z���V;t��4X^�B[G����K��
�Z��+��72Z�d�����f��c���r���J��O������v�k�)9ur�N�����+S
�e��jR��S�Wv'���2g��g{y����SSb�?t���C��d�OQ>���'^zt��K�\zo��[�l�������d��C�F��(X-�+�z����Z{�X-����!�s����]��9��5�h���\�n������S��R��������%Ud��*<�&<)+<]����]>�u���b��'�X�S4���+3����������#z+[���4��7y���)��R~��$��}�|`-��\�/�t6;�f��5D���J>;c��y��7�����`*���A4�R)��4�%�
'����~�2��N���}��p�v��B�����4��U=_��� v����"�G��'�pA���<�����p�)���\������HV��jv������a
�r�W��g�g��s���\s�r>QPs}��'!����4�n����@6���[���p�����5TEx\��@6���
`n������3�w�dC�A�z�|VK�o*�����(��R���-8��~�����~[9%��1q�p��"��9nR�!���(�j�KF�X�����"���(��/E�\QP%Y�"\A������a����"Ld�.Ex
��cK/��+tP�fK!��N��eh�vI9���xYS������d!����z���J
�T|��P�v���f:j!�����z�yj�s-ePK��A�t��j��62���Z��NU�L;39v����B�����K37���X�8�q��{�E�V�%[U�����bTL��SW�z�R�!�f�a��y�L�b=�X�%u���#�]I���XSB��1���tZ����@��WR'��@7�'�#��������Wcm��5�W�1�J)�	��n���:��"�Q�����sMtX��	�jl���,���Z��������v�6��:����"��j��k���[kG=T,!.�����L�~������f���j��.Q@f�*��F}A��r&��� %
���a$lRPG�\�0�(h�����Du8��c����a,Q � %
�T�a0Q0"E�&
�r�"��D��t�(���&
F���D�e4\�{�g^:�2��tT������F��c�zz�q�1T-�ZL�]UOo4�0<���7g�C5���>�j�7��}UOo4�T�j�7����pf�@\3�!$^������7�D����2,��)QPy��������rYrI�����-�x��P$�"���N&�"�1i���S�R��&��		1�����		1F��V*�b;�G>���1F<�T&�&�s���"+����,}���z�
�����Ra4��+?&�]�KF�+�f\ye�\��Q�g���"IY63`�������1�����xc����f1���gH��
X���6����`
��)�Cb�u�
@\c���P�k���8�k��R�`�������f�r�����Y]�'{��1��c�Z
�(�&E2n��X�.H2o���$
y���Wiu��z�}����`8rf �b�����!�f���CVn^�/�����>K*/�z?��=�eg�F��%��u�����gD���,rS�gD������]�3(l��<�-`=�=�Q�e~�W���y�����V����c�un8pa0N��K���|�u��Ssuj�!RG�!2��#uXt����yE��W������T�\�(�Zx�Ld���-<U���-<U.��Hq�����^x*���#���������K83�+��������0qA�^�������z�$=@����r���k}T��>b������;��w�]Dnqz�.����HckU�����F,�%{ �rx���_��k.��W�,J7K

}����$���p�r�1{��i�g�^�e�B!���R�9��z���	�N�C9�E6��Z�l�+��Q��
{�vYX0�a����|�W�j�|�t�"EGy%r�g�����_E���,2��>����<��H�)��z��������y�9qF��?�_��Fd����
}��8C�p��{�r�V����{9��*�Pj=V��z���Z{E���y�.=8pf;Va87�	<�0��;\�Dd��v(U�H����} "��I�{3��A)�{�A2F�gl�9�W�3��H�K���:"G�q�V���8#�)Z����8C�M#R�-�rn�3I�9g��	M?c�!��BnQ�z�Zv=����e��F�����8������U�����86����'�zW��|��6������l/J��B'�F_8*�}f���!8�-��t�7N��<�}g;E�H��eNQ-�3"���(C�I��B���Q�\�z1��'��c��>���X�QG�Q'f����ak!X���8����Q���������\��j��_�k
Y�4�5E����)�_vM���]S$(�������k�R�&�����k
����l���{M�ac�����zB��H'����r�D��IO���S�^\�0;�og�]�$�����B����%<����:��R��9WQ��\�0"�U5&����5J�W)/�/q�T�m�CP3�A��S�I�`S������W��*������*����8��h�RG��`���������r�l�+O4H��U	Y!Q�%��J�
��=1�PUBVHl7�U%d��^�3T��D�
^w$�e{�L��+:z�G]{���l/���
`��p���W�y�p�>��9�*yp�PJ���h-��l�jC���}����m�����d���9o�������R&����&]��?���&��K�����x����|�$��=�5{pj����������@��dJ@��i�}���%�N���-zj-B.jfez�"d�h���*��/C� ��:��/D� ��J��/E� ��Z� =@1��:��#6|�Y�L��<�-�������HdKEr$��$9�R��l)J�D�T%�"{�%G���%������\-����`9);��1V[U�1tw��%"�1S�'��1b�2��c�@-d�j!����"��c�aoK�1t��� ��B8��p�%��������K�������Y�G�]�b��rQ������w���\V��O�m<l��ux(0l��:���/�a������g
��o�uy%0�ye,Ur4XJ�z��JM����Nw�i��?hl������V�l�o������i���Y��c�T�c�G�8�c�G)dxB�!�>��B�!E&[!��Q��Q	���"e�J0�|� �c�G�BF}���g�G��C}����#Y��y��l��9��(��<�`5�p��aX�Gi�v4��(�
k�(n��5|�m���>�+U��>����|�{
�>����|����,�sn{d^v�-j��N�����������m��'X�0�2�i�f��(#&FKyD��!FK��(^�2b`��E����-e��2�(#��,r��e���R�:]�1�[O�K�.��������[Osm���W*��������)��_���PX�B�[�q���,1ps!���u��f���I77p'A����tRy���+%
�+%��]/q���������P�)C9�
��p3�b�#���q7�/�9���pS�r��m��Q6�/G9���`s�g��k�=NM��6�<�b�G�L�8`�Ml1���-Vy0o����vy.o���������}�~��a���7����������|F��H5�oe�4?��]��NK"������[�!�fZE"�4��0�.D�g�)u?��#�L��D�������R����Z��Lhw��Xjf�6"���Z��:�z�tjip������������G�]�����5��ABR&����I�����L���Bt�YQ����B�WR����Tn���X+���R�DFY ��q����i��f�-D@�US�������4�R����S�����$��b��J��x��������d5��!���>���MR��L�h�6��
5��u+_T��������d%jDKitUO.��\�������e:��NJ��=4���#��AC]Cp!��������v�P�&\�/�w&��~|��KjO��C����\|!�P����"u���WCm9�a(��PgO8�c��E$��-r�Et�[������B�\>�����@�_���E�:%�Bt��Vf��p>|!�{X��.2��l<|�;���`�5x.���>\Kx����0hR^DC{q-a���a�����p�IYJ�^�Bku+���"S��J
��9�*����|X�{��L�a��]������������v�������L��\�_��=�b<���nQ�.u����b��E��`nDt���kK������(�`�����Bt��F���U�P*��{k�o�X���>������r�����
��A�e��~�S�,�`A��A�lg,jf���?{%H�7�E-�2�Z���5��Ux��`�rY�����D@�i��05�UV�����k5����6N�$H,�^���R9�B'*Z��~c����T��E5�_�'�������]��8t,�����	�j��]+
�����+V����sT�V��>�r?Q�������ih?�U��������O�9PC��Y*(�H�bH���|�aj�������B��O���.SB��85~j�����pyb��O�q�� ���W����[�c'/��b��}�����e<_l{�T'�/�L��6���m���>�����DG��K��<�[���1n�5���5�n�4�����������-�
�<��;������3HM&BU�|!5�]py�����#@��BzRj��_HO�l=���)���y���i=�8�]��'S�6B4�����@@uE�NL@���$s�A�)�))h�A(y
tIM]Y43�	C��4���"�������B|U�v����'����p���*[9s&c�����M] ��}M�V���.���.������ji�����j��������������H��������x~������"�28�6v�0�LN��"�!�S��Q�1dvJ���2���^j����N/5���e���|�;��K����������������^������#B�~R��E(c�O�]�26��*�})�~���"�!�S�����)u��c������c���.�����T���A��t��]6��!Ow��=�en ��t���z��]�c������1�����A����Q�K���a���S�qK9q0��]������q�qs�����+�@\c��uP\v�U�j}VW���zVW�� ��"��1c�ZUS���:g����9����������6����O*u~�chG�T��chO����"��]�Ru]"��}�!'	��\9n�@d���+i��� �^K��ia�jZ�I� �^O�.�a��Z��_U�����i���X��P�B5�"�!*��J0���!"�!*u�cL��^����Mr� ���Q���HVW�����
��o���{�(k(P��9�����-}�y��oE��[3�L}(�����$(c���r$(CI�L,�'AJ2db9>	�P�!I��3]��r`�V_�����a����@���
\�~�p�m�b����r������/M�R��Kc�����y.��PFtiKYf��P�j>s���eD���e�Te(#��������d5���������|������M(nn��t?�[���R�4p]���9���|���������'A�I���e�&�*������T(B�2f�&�n3)7l�.q�m��m;b������(�k����|��Iw��5l��ZO�zt��yx�,VKV��	�`��e)e,IP��S�B�
�xL}�"�������S�B!�D9��u#O���������Cqkw��AaV�m��k

�:a��
�V:.�W��w7��n��������5�Iw�q��=)�o2�!#=)���
�����y�� 
�����B�!S=	��MI���#����6�O��W(8rf ;w������vPd�dO��#����L����_��?o/��Z255-�
�V>�	$u[�il/���+B���@���&C�$u��ilGP��1��U-�(y��+�\�}�8�lL�d�������B��F���|s�(�&}Q��m+2{%������+��v������}�@g�����t*D��[�f��5w2���\����I#�72�$
�����(C:�%;���t�{�Y.v��ih"�b����&b.v��ih"�![$
M�\jG���h�WD�k>eHCQ��6��D���R�44���!
M�2�:��&}Vr+b���)/C���]�)C��N�]}IcqX�3�eHcqX�Km=I���yq���#���&b�����4-.4c|����y��0Ms���il"Je&�Hcq�`�/il"Je&�Hcq�d3D���G�$�M�f`��46��}DO��D�:�[�46�a�t�iz�lo,��`����2��`Mq!=c��]b/C�Z\"L�4��k-D
��R���HC��\j��i(X�K��"
k��=��������+���K��G�dgI������0��w������,�� �-zs��v93�cdCG�
����Y��K9J6~"wC����,�97���������E.
d���*�A�9���$���c��g�(=���A�Qz��"�����<�m<%$�
-Z���m<��%�
-Z���m<��-Z4w��������adc=-�1����A_���-��s� #�x��dc�u��l���N4���o���6-z��I �L�i�Z�
K���g�=��$�
K���)-�W$�39�7x-��)$�9FoX�h�����	2�����������m���W�  �&v��i,�&vS�i,�&v��i,�&v��i,�Ry�o�QnZ>RYk��
�2�"��_E6�+p��l�W��	���dL������Z�b�U�X�?�W�R��H��TmYJ�6dHC��,�R2�!U[�R�
���-CN^�M,U���W��u���#g���E�s�m������6eQ��@v���s"�a;�5b����ZKU���Tk-U(#DR��T��iH�����62�!�Z���������W�j��Q/93��[�Q��@v�L`��@v�"�24T������byO�c'�82����Ul#u��iH�6RG���Tl#uN�iH�6���"
��&�U�������f9��Ul�>rF�d����s��ba��@v�X�4�]*v��8_/nhG�<9�f��#.�����"�Y�b.�i������,�Rj'�i��-#�G8�=M{���v�o�>xF6,X��F�
h���[�s�(�a��������2�Rr�MKZ��7wL��<"
m���R��ihs�T�!����i-�[�HC�;�!G��&Uz��G*k�]2u�������6�Q��@v�V�0���F.
d����ly?��$jC��S�7����D*xk��:�C�4�e[�Rw{��F�l���H#Z��i��L�4t�W3���H#����e��R���6Z�2��/�,c��F��hg�L�KLQ�"u��kLB��H��$�qi�[���xc�-�B�%��W��[$���y���^��|g���+�����$Q�\Gvfq�����>p��@vyL8rm �
Jp��@vyL����I]e�+��!�f�o���i":��,�-'�1��[c<��9����mNrWX�����fIaNK������������t�����U2���2��E2�:D�4��f�T`Q�4��f!'l��L��*k�m��W��!g�;��"��;��"�;��"�2X�^}�-�����3�uA<���[�h�cD�b�"	��V-���#*��J0F�i!��`����TLK�1�*�N��a��
���)�8+���ZB��[�yL
.E�������U(C����X�m������ ~��f:���`5[�����:[�����:�;��V:�;����:�;*��6:�;���NU�N�����,%c�q���H7�8�����;#��'7����/'�������N�,W��v��=?=��d������n�����e�Of��IZ�(F������c
�NU<}2�[��.��7��������b;�}�Y�|�w�n�_�������WO��f�O������vr������v�a�&w���������iU��o$U�v�����/��j���'W��eZM�8����o&�~����z~��������q���K������V>Z>?v����n��w���f��t�u�1M��p-�����n����oR��i3-���o�`��&+g�U���
VL��k��&���Fwg�hfg��m�F9�M��N�b�{O����L�
�`��!��9a=EX�al��Z�T�f���eZ�4z:k���Y^X�'��h����F��	x��(�o�?��O
Ho�����cZf!��"�7��i��z6*4�|���6�%4�I�)S�|���N�VO;�(��i����L������>������4�9��6��W�RM��6L��6��v��9���TS�M����E���m�&3�)3`,y/�`o$[�N��G�gD$�����g�K���i�?!�:�m���7�CZDtkP�r����M$7
��Q������Edmk�b3�'P���;V������V��]=2���X?�&{n|i���pM��������$a���>���>�P���f��m�	�d�L���$/�2+�`8m�����\����,k���<c�X:�����
����L� i����G�I�����q
�c-�V��X�n	$��r���8"�U�#6�]��Av��FR����g�L������\Md|�5H��"�j�YyE�����z��
���Hm�.Y�$������'l"���n�.��~�6�[�Y�.(l���:�jK&�V�J��@��~��:�(y�V{b��Ze�����/�#�Y^r�t�V���jV2����'L���������[��S�f�L��2E���f^f�������}��,�y�W\f5�����ke�"�W
7�U�-l�Gl�o4���3:O�G�V��XUhK�$��o�6��i��na�
-Ng�*(��+G%�Z��w��X������Q!�!)����Y]��R����hW�SE�T)@[b��rU*�q�zT�2��e��o �b@RO�m��&	�'����n&te�����=vH��2�(Xc#f�F������qYT�:�]�ef��S&�#��re�������U��QF�YE��)V����N�+Z������2�(Vjy�S�����X�Ll�aE�,=�eNu,E&���������E-S���Uoj�@\C�����������H9���I��2�������mA��=��%�S�����aHVij\r���D�uW1y%�+���� S�Af�M�@���������
Tj!�e�t$�V&��ue�����������"�EN .��!M�0W��[���������������?�Q��4g�Q����+S��$���\MU�A�����6-�;��X�#q��V{���C�9����sH�����
uHt6�"c��H�U�P�
eqN|���>������t����uE����H�����C�z��rE���[��E�U�C��v��+����'��U��-��E�U�C����T���+WZE����1���^�"�Z�kh��f]I���=�mg�"��91�L?Fv��+W�w����l����3L�6M,YE�F��:���%/�]�����h�x���m�`�����
K��X��sf|�J��N�v��R�-�����ej�ri��-��Y����Z��MrY5`�CQ�u�O������`&J�F���%�j����Z�M�_���E1t��q�N���m6+���v�4^1?
�����Z�����WS�E�U�E)R����S1%���Z�,�dO�X��3'�+�k��D�=��I�R8(U�]��eY���Z������n��s�{Rj������T��4�C�<��p�j�+��2�V{�5����0[J
��d�F{~�U��s>���gIn�_�V�����8���b�#T�Sx�Z�?��j���^���aW�V��5��c#:�d�����q�e�yC�e��L������$�����e@���A�A�+��rj�rv���'h��	��:�\5�3�4����2�M���"M�=%�Mg{V�A{��p��<`nD�U��H�(��y#:w
mn9HD���2b�C7�8)���e�,(�j������Jf�U����h���|�y�X\Q��lG<J5�s�,{�J�������z�V�#j�]6M�V#w\M�����V�Ir	��6~��� D�V��Jl�
���V� 0f��A(������/�0>��S���os*���8c�)X���>����������j���� ��1(&�m�Bw��2�!PLFZ�R��Q���`(&��C���9e�����/n� & ��}�b��#pDAm�P���6�2�ah\TGS���p�l�@1KJ]���Ud1F�Z]�/G7�2��@LFPRE����� �������~�0�D(t ����cPQ��`4.C��n�)���0�����}��z��F���wf����>�����1��
u���~�y�!���e��������c^�������
b2(:��v�$�:8�V�m������R� �����JhN��Q��m>4+
b�n�	_A �zx��<����c�����5����o`�c"���(����X�7��h\[����������E��]Q�J���"��������J�'����7�=�����#J����#��
C�"���*U6��W�������~���b����.Z������R[Y�P��g��c�6����v �P�e�9-
���zmZ����{mZ6����&��osj��Y�6+�L��b�0*w�GVZ�������Rm���6}��T�>s�m���U��������MK1�P��2$�f�k�R�(�������)�"m^BnM�Y���6����f]��u����i�s�����+�;�����+"mz��6=��H������yU2mF��l���k���*��b��f���Q�V�^�����Z-{=l��k����2\�Z������!�'���7�o�7s�k�7s,75��j�pm�(�k�'����r��d��/;���7~�e\�Z5e��l��k����'�k��������jJSc�CVJ��4ia-+�P��$�6�E�MS�����4e�����j����r
�T��������4c�e���J��f��P*���D�$����!X\�<��C�8�.���B���tsV3���d���X���~a"���������1��a*�����_N�ba}�aq1�,l1,l1,�q�b�:�R�Q�@j�N�.�������C�0���0���0������v�l�`��S��Q�@�beah\,��m��q1�04.����T�Z=�����S�(��	��q��04.����f�����V��*V��	��~���I�C�bah\�B�a+�Bs|�[���b!X\� ���`q>~���`q>���nI'���;�'�h����k�4�vu���Z���%Z5o�YE\X42�Yg�d�P�}��k����B�b��B[�P�U�E�&��Z��0d/���^9�P����� �j���R�!��)����F�US�K��\��4�R��U� �Xi��a�5�&��&B����r�X�}a��#�j_���ky���9���9ah�����%z�@�l|�@'s#�3#��8� �[�����<�[���>�T;���7�[V����2�[����MG�G�����04n�	C���04nY�����+v�Z^(g��V�%�/�jo�k�� �jOjK�X�=���*���*jK�O��.��8��U�2m��T[��j����Z�(��)E���T��^��RY$)���=����.�6�S�t����6-7�6�^�6�R�����-P�2�{�e�0�L�=��2������o�i�/C6�]�MO��<�9:=�E	$Z���U�	�����h�';�dZ�IN�k�2QDOny�XN�j3���k<�6�^����j����k<�6�^���k�d����_�����6=eH�MOi�S�D���U�6�uw3���'C���04��C���04��*��JY�j����8�9���C�8?7��_�`]��"��$�_����!X�����!X���cUa}�qt���B�8�+���B���WO*����p7���7�H������#�H��� �Q�=E�����t!X�����`!X�m�c5*�����C�������������$���W��������-���l��o�=.����������!TL<���<�=I�h�f���I�E����@-�v^N�e+��C�������w$�?���~Rg��������,�@�,$�^�) ���h�s
��M��|�-f
 H�@��)� !S`9{�sC���R.��3��	 ���h�s��M�Xv�Zf H�@��	� !`�������������o����?�Q�Q��R���h�oVH��7+$Z�F[�Ew
��8������]�%=���/�qt�-=�����8:������9���zz� �JAH�*!A���O�\�_?��L~�d�1���-���O�[m���v��_?Y����d�*V��\��f�[	=Z��-
iP��VB���,S����,S����,����,��W ��!r����W �����)������)������)������)�����,�|q8
�����hQH�z�(��-f�x�8�8f�x�8�8�ax�8�8�ax���)�$�+���qH�+��Oq
��Oq
��Oq2��Oq2��d����&��
f{X�V-�Bh�S�
���PZ�&�zA<XB�L	�6$d��\����U�HU��/��gi�@���	-b�	Ja�c���W�� a�	V�� A/���{vety�@���/��������r�S���_�� a�� a�� !����qP�lQ��
�5�A�o���7d���2mB3�V�*��������� 4@,h>�X�A��Q�
���9��
���;��a+vx�� ���rzC��6�f�O�R3�����
�+`�X3��z�0�����3`8+����i�X�3 �
b��`v��.�m+5���fO�����sB�M�9!����i��*/�*/�t�9�aas����������6'rn��\a�>��5'D���"mz�	�6�9�����������9�aas�B����fv{����I�7{�k��Q�M�9!����i�J���V_��	�6'0,�9��nL&^+#j(3���I!����j�kR��L�CS'%�Y�/|&��L
�(2)�9�g`�k���X%D��\%D��\%D��V	e���A��*�aa�����uB,�7���ji�i�x�Qs���*O�6�����R�*�f�k�r$�P�E�M���R�ihRYW}�F{��Y�&k��)q�]�^��k�n�`q���Im'�A��IY'=A`�T��������v���Lb�\�M�(��j���j���j�:�J�#�Z{�gw�h����a�����=�'�,��W�������lh����U2\�M�(p���9e�Z��2B�bS�V��UAj���(6eP4l��h����m������������������o���3��4e/��>
�R �����V=�����.���"�J���J���J�:��&M��(����J�:��R�b���H������k����mA(�5E���F���~kD������K����o:Zl��h��w�~h�����kUJ��*���Z�ZY-�h	����:�%�����:�������:����j�
����������Y���-����E�[��iA���h����o��M�bR���i`�V�4�g�B��U�������g������g�/0��y8�������x�����Z�lh�+�
�����[��dC���X����o��
-��"-tV�����=p�X����%�����d�P���n�V=��B�b�n���#�Z{���F��d7��%�Q4��gqH��fV���~h���i���i���-*�P��+�EE�
[TP4d�\/��
�	ZV�A'�G���P����P����P��z��"����o=A���E��
���g����=3�
sD�������V���T�~�D�Uh�4�&=�&=��0��
�'02O�������.6��J�O��j���j���j���V�C���Si`4��B�0[EC���3{hk����MKn����V=�V=�V�E$=��e���[DP4lA��EE�N�����ly?���`���c�Ti��;|K���z�S�V�}x�����T�����u�����v�/����v�L_�Ys^5%��T98���^�&E��E����h�p�'t�p�0�qB�Z'O��6Kn�d6G�{���Q�}"���}"���}"�*f�(���(k���}��a�	���'(h�\�>p���b�z�������6=m�6=-�6=�����I0����G�P�Qq��z�^e;0��0,���0k��l���c�UJ���vqw7���_l'��6����Z�v���l;{X�������������vr������v�a2+o��b��m�^��xO�$���������/��j���'W��i5�b��_�S�7��v�XN����/����\�����j��|����NnW�����>����b�v�'�����Q;���x���x�z����?������?�����������?|����3q2Y��������?�������o�����6�O����������|���o�������a���Z{o�l;�}>�����a�v�n}Q����4�l������a�xl�*=������vo�[>?<�;|���aq���.�������/��{�>�b��O�4������o��?������������~���alE�q�\lWk����a�#���x�;���g�v����e���������������O?}����H�j���fm���v�X�o~e���~O�pO���O�n�����>�?|��kG����������~��w������M�
���v-��ur���n.��XE�n��_����~��?���~�{j5����_��]�n�2_���:Yx/����e`����M���4����oo����5��v�Zn������4�|������}?��4��m��I�E���d����z=��hYQ�e�u����u��������������t���}������{+9����(_��������������|���~v�]��w�f���������VW���,�t��l�m�=>������a�:	l����f��V}��!��f;_�<��K�������v����n��o��1�l;^1$�o=�e�Qm�}k�|z��{����o�oo������^����<�Y�[�o��g������a7�Uz��{;_�����l�]�s��_��6_~8��7wQ��[G1��h� (O;�M��]C����6�OS����`��F	C���bJN�f��~��3�|�J�g23���:3Df�!�=���>���+� ��.>����u��:~��f\`f�%�'���q�%�f�;����PW��uV\`V("��������VO�o�|��]�Iz�\7o��U����!�J���W�O���o�>�z~7_���v�z�;���[���y�������������:iG}��o�N&?����vr?�N����7;����=m�V������������}����^�=��2{�o���q�}��}����{�l���N�A_��o��,=��X����!��{������9F����;Ea�jN������|Z��fY]��-b[eC�5��z������yC��j� B������>��`"d�>��1��2+H�/��t{��q;���m�l�'�X�N�TY)������X��^]�JPM�u_��0������2�������������c�EVQ���>"+���e��	�59���}l�f�>�Z��n

�Z���	��|([MMj)�,m�J�L���������o������������?�������} ���Pe*�r����}<Y�g�V�m!� %�zi��}+I�Z�|�~�+��$�S��H
�w�FF�l��G��U������?~�S�W�����?@���R�I����M�/j����Yp�����@=��e_j�=��g[Oc�P��C&��d��		�m����r���N�D8P(��pH "Sf�n�?��Xx����,d�i��dtM�����9�������:W���I���O������"Pz�,`�Orq��J��WLzX���)\zX\���F/Q��JO���6%dA}"���q%�Y8u:�U����W���q���+����F36��qv3�
�7���	��|	k+�/��s.�)��d�
w�����#��1�@�S|�aqI������������{o�!�d�����oz<�y�G���@w��������Lf���}����v�0�����e�]M6������;V8m>n�����i_�5���A]o����v5�,�������l�c2{xX�2�M6��zv<Oj�+�UOm'w��c���B�����c�/nvz�����d����+{������n�O-�j=��g���{Om��~���j�����lu7o��v���g�����S���v�Y�N&?��5��o�
�nu(
��w���<ov������Q��?d�"�-'YV��,�tQdkd1�)�r�C$1�"M�\���~�U����o���C\��1�2�G�j��A��������G�3T������B�RvC�Z
���0����3$Eu��]�R%z���M�p�����4&�7Qb	�=�������lJ����F��.[SB�Ja�|q��v�;�yXzn��!��<�9��I�������!y���7p��Z�����O!��v�A&�K=P)�1���=�X��~��<�r�JO1��cKU9z�T�.�����KJ��ba~tQ�df$���8x��������_�����TZZ����i�����F8h*����|6�4��"|��:@�{�{I����u��|���y������%���;Id�
�P���]�t�5=�4'U��<��
�W*��+�<63YA��4�&��nV��`/9ZCe����4�"�����C-�"�� fC4e��}�m���R�u��Xb>1���Y���}�1�W���V��n����1M���Y�J]���!�r%2��[��"����b���;|���e�R���-E�(R.��;����W\���|w�����'����-
��}v(���-�g��b��XR����-��5C���e����D����<,��G����<����u�W$����8Tq�����j�%B-	�#*�&d�T0���$|�
�\�7�����r(	w�O�a	g�I�g��)\-4a���p��;C���v����T}��x���6�cK���l{�mW�D�DV����f2�����W�|���/�%��$\����!�cK�B4�������+������_�e\��/�8��g!+�,��V�Yg%.}��E�����-���J2��Dj&��~��~k	�S"Mt��UP�	�%�!�n_����������b|������p%�>�t��}����r��$�/�#�s��(���L2�:�E���eKl2��3��r�[��D�nr���f���\"��7�alA��6��KXh�|	3���g,���������Y
�tvEPqR��[��p�	h����{���l�\�!4��nT�3�H�@\._���g�r�m����`���A�8X&g����d~�����bA�^J
���T�['�,���{�V=��a�7	���I��v���C%�L�A�7��RC�d ����	-����{`k>*�53�������#<D�~���)P2�f2�x9�)
(I��c3	
����� k2�(@5^/4
����@���h;2�\�����7u�{���pZ���j".�,�z$�4�v�
��
��d��"�kWl�������FFQ`*��D1Q�~|20��6�n3��(0ks��{�
���A�9pzY��8�U�����R��t�j��~������z����[�����jr�^,w��N��������M�}|`wg�L"WR$ ����������$M�X�����6����	g�L?����^��Y$M��`5���IgC��r����A������e�d|���N�4�k��Az��Rr>*���x������
e��>^#H;�����o0qQ�qW��N��)-��8L����S�T�9f���*�t0�$����O��z0��4!�`����cw��r.��D\-z�;���K}�XI8�����
A>����.�����][:��J�9X�1M���w��q�z�bw����*�����6t5^���?xhTw�H���2O���^v��`�v�p�������l ��]�y����>]���>��#H���NT4��}����hIq!�*����]
G��X8C%q4F���6���"�VH�d�

D!))4�������f��F�@T�dh��� �v0d�a�����&�
0A�d&p��w��:��-�A�+�v�p���
H�\��P��a.X�������}���;��c*�p���o��|��th����{�����0����Y�sE�%=W�%O�yi�w%I���q��=A��M���9�kC���6?�t���Ex.�E�LH����{A��Y����;1�����;�r2[~���u��KI��_�����uB��}�p��)C�w�Z�c��d��{��|]**0���
���x�#H�63\����N�]����S����}����}Z0�� =;��y,������a*T�lW�na���ZF����u�9]���h���qruu��Nf_m�7_�����:^�U+�����95�F���pQc����|����m�\g��4I��xsuu�����/�[����U�eZ������_���S7<���ww?�=/o�m���u��o`��V����AN�}�=�N�^w����aXs���m���C�x}3[����\��{�g���[����C%����������|s�c��f�x�����}k����9r�����m����?�������{�?w�w[X{���?�z�y���r��02�?�I\(���w'�yu�����F�-�F�-��[Z���1���y�
��������%1����O{�w\���{�����=���~�>���'E^�Z����y�����Oi�7��L���������{���"����P��
�,���`�p��S���\EL�z�?svf�mj�?)��<d�^���?}B"��;��u��dt����zo����b�9
�p�x-�S'�{�{���������4�v�{���M^���-������mWDWk1����B��L�"�wm����������c��7�v-�z�){=~��Y��A��1V��J�/c�?���+U�����>����X�AU}
�GP/��d�OK��J�}���.z|z��Gh��nm�%{X�c��5�c�;��Z4�^/6�^�f�>�r3���c���1��R�!�4L{�6uw[���"7�m�����=�*
�h��Xo�FxRw��55W�]�����c{,Ut�al����+��_��N����m���*{�'��r[|n(���<�W��i����c����c�S���V}��2:����i�jS�*9x������b������K�sTz��us���i?�\�f�p�I�rzel��y�y�gMfOO�v����r;Y-�������d_��������(��A�j�fM^��x���zo���C�]at����W����$�-E�W)�;O�y����������V��$1�����$�����jy�>�����%��C�>���g�vL�Z��P��������e�H�������^9�������	=�6���!S��qn�������Q�mg�

��8���[FW6;����aiV��]��M��1���}�;��vi���G�������4��n�����n�����5���qN�#�,Ov=,�����yCl��N?]0m�Uo�t_�v���;c�����f>���v|���-1pq#�6r��
d/0r��=D�F��B����������J�e�_�:�z�H���������8�=E�w
��a�������H����{��>�"�1[T!��u�j�4f�`�3V�0��GY��>\t�S�Nb*��&�/�YC���3S�f�J���Qo����0{���Y���s��uYHi�0����	����Y�M��wu���.�����~���'�6���9n���Q���1�����m����Ej*�����+Y�si�/��2�z�?���zo7c���1��H�����3�:�_�^Pg�}h���kr��j��d��e�"+R�Hy�ScFM^�Oe�f`�����|�������k�	������n���l`�b��
�B��s�N��3�8~���>��=�&�����s����_nQ�����K9�����O�
������V�}����0"�������yD�~3�/_�uyU�O����.m(g������wF�^���\~
���T�����N�����mr���E��������xz,Q���x�g�g�c=no�����qG�R���VI��*wO8��/_$�H �d)�}rcg�fU%��@�������_������i�Q�/B@�#��5-K�x�nT��QI����P!@�f����f��n�9Z=]T/[��a���H�����%�/K�zp�=�	�bOX6/>.�<=����+�������.�A�����\%����vO��4B��nV��km7�ev1	�(R���Pc�Y������s�[E�}���I���P����%���Y(���I� ��UB]���f�����{`��V�_�Bg���g�L�b�N��:�
n�_���/+���P����f�1O��u_����s�Z���+���.iyis�s��ek
Wh����3�#B��]%#e�&����w�]����2SQm�f H�F�7�[��S"��\��mF�8�L���yi�1��G)8�hI���8���6�Zv3�����s��b�cr�2�PHn/w��\,>"w,�K������`:Nd<�P������,��*j��������RJ����v�3�
$�n�bqK�����s�����F(7L����-Yv>��1�Q ����Vo�Tf�����5"�Ah]tgax;�����5��+���R
��I��v����"*+��/�t<��(���S( n����Sn���
:B61
X/�n���K�W��!6���������K��1�e����yN
o�����;����i�f*>b�1`E��lj��n���nR������:�G���G�jf��d~�+�a�,�?�n��> k��w��T�8wk#l���Q��pN�}�|i���G=Tw�6���1���^5������*keb��,���G�x�	�R��}�F�a%R
��u������%�/(���`�AB{p>6������\�k��f 4_�L'N�Lt�|�c��j�U���P�I+�o�|-���e����b�����6J��E��7i�����c�����dt�:�L���Nu�i|:1UH����,�N��/e4�R�dS���b�6�z��m���*$(�}LYnWD����PF�3�(�1m����{��XiD!����r�D���7q�KSc�^Hh'���ce���*\����L���UO��:$@���7t���>�����G2��L����}}��B�a�B7�GrU��T)���l8#�/Bblg�x��d��%ER``c9���Q����t���`V��9+��8�@����9��@�+�*�L��0�t�5 DS�n�C�������!B�3%��	�vz��8P�F�!v���D��$i�9�:����� �O/Wf���"$ 53���%J����x���3V������(T@��
��M��HC.Y4�P!�B��\w��5=�Z1���#e��0a��.aXk)�������n�o4��
��:��'n��H�� QWa;c��J�1�=��D�6 A��I��v������6��AB��$4]iB��,���������@��&vZ�c�����B�8�M=�L�H<G�S*"�>�B)�'���P�����^�pC���um�l����i��)/�U�*,�>�@��������P?I�@�* �>�U�a�Np�����`�:wq^2 �|�~W a�\C*���X���&@�fd���;M�����R|���H"�b�!T�)>*�3���x1�$�*d7z��j�������]=I"1IHD#�"2�:��Y/[�O+"1IHD03'����f�
l�&�HT)@��\�e�D����f$�����5�����B�b���Tcke��`%Q%I�/U2V��#�USj�$�V$�!��R%c���������3�i@#��f U6VN���}l�iw�6
hD!��hf�t���E�}���"���t^�#��b$ZkLyda_bJ�b,Z#g�a�P��������j�(�4���|����G�f��[H�|���J�Ar�uI.\�K����N�e�yI���rZ]�����bKP6�����f�,��+��L(�+J�f!q^7V���B'�)b	���7R�l�C��c��x��T�;x�8�Q�f(Q�1V�u[���H��Y�V�d�W�|�:�GUs[���-hth��5k������<j���l�&�d(11��jL�����]�A�n�!rs0�&0��d!�j8V��,tt%Hf���<$:I&j�~����C�`�Pd�a�P��d�����:���
�IW�fl�zT+`p��GUst���LX
:,YK��	&G�st��@Lh
�Snr�����3��$��R��h�m��s~�Z���3�	$
S�����s�%���8�\��[��S����P�$�3�<��U�%d��g�M�-C�l�����`#�$������W������S9������M�XNw�RF����b��mBL����Z^+��&C�0��$��0�!�N����aJ���
��2�j�g�c�`0�!����D�Z 2��b�5Q���lB93)r*���a6
��5���F4;��yK���m<C�*�)L$���z���@�;�I{���	Tjy:�yP�Z���1�i�iN#$	C�����w+���V!*��0+����H|��9"9�g9U\���x���xJv�SJ���#���'�U�����[m���0��Y%	�g�)���t���|��O-�*IH>0�!��S�bG&
����S�d$�a���v��9he�(�@��J�e�4j��P�q+S��%Y����.'��gbTkB	�TQ�`>!��oVO��R7��P��B\F5J�l#��.}��&$)����n��;2������tb������`�ls9	M�T�@R�9aN�[��9	��B9	3�S?������P�����d!Q��AW�F5���`�T������)���n�!�A��3x��t��ygu6{d��
���`a�t��G&����|�	(�HP?T���$�%��.8������	g����������\\����)r���[l��q*�d$z�}u�Z����/��{���qQ���T��\VPZ�J��
����'���bCP6��Z��n�z��J���������{�J�V���)y$�k������q��
���~�R8�MT2�U���lB�d-�������r�����i0��m������{�Je����0��8t��0;��s�R���9�!J2�0\Pn��PL[>�a%q�xH��9^$��/Q,�@������!�������[��;x�%C������
���;�	]��4���DX>�������4j������%�t�j�����*;���������$��K$KN^--ts0����C�$Z�����_���?_\���B�q8E��9�M�<�+�+y��L�
�*vW>L��9g�jS��cv�~��g�a�PM����q(�Z2*�|�+�����q��=�}kJ�B��z�p����?{6�iJ�B���}$V>����8,��6�FM83q��bB���FIN�a���C����U4�\qp���`��Gq�
�$iBUw:�.�n {�WEY�_�4�LJ�B�C��o��EY��8���������7��k�,�J���{Qz�z`��`t��(K���ZxP9��������4�������>�O ^�?>SY�x��T�$�M��?���6P�������(�D��K��t�~js��udS!>���%�(��6��M<�Pq��%W���i�U���l��!�dX���o6����7���{����w����?_�����:�Q�x���.�J�������r��c�����}��/��31�����i�
����H��`����{��=<�"9��O�������%h�nRXd�F+�|�i��������?<��|]gq>a��#zD���������X���m-�6�O�[�F�_�\�t���!Du	J�;�0�qC/�q�e��u.�������L��}��v�#�*��e��"}���&�k��8.��t�h<'U�t�
���#Q��c��K@ZAzLDec
�����(����% �XJ�t�����qR4��>z)	H;^��Xuv��8N@�&A�������*��SI�	H��Lh�[��VA�xL�Act[�G�`�M=��f��8����D[�xL������H���`�L�xLEYs�s�dS�0�BA��`�V��p���lu<�I6�0�0��O�z��i����1��='�+��H���~K.�Du�:���I7�}������3_����|��wQ������������yB��L]��H�@��F��������y�~�lu�b!}��9!!�5?���	��2u��%}�����,qF0!;V��{n���#Sx�����B��S�{����K]MUK�B�����:r���6qs��������a����*AH2��
���j�Fj�tYeC���,`�U����8<|�
�����(BR�1	�H���0�!j�+���Pp����
�2�P8��5�����JEHS�XU�����7�����J�
�4�K��XL�h��
�}Y�IB"��s��6uq�m1��n��r���O��������	V��V4"��l`�X���f�F�2�
Y�Q���!�w;(�L���iiE$&	�H��,���P]�>-��B�-�~��"��cJ�g���������"EW����-�7o������:
Ti(s{�}\��h�����Db�����������T_��e��[����w~�7�[B�����"$�q����(���f* i��[��H�M����iiE$&	�Hr��P]�>-��B�-�^gn�A��m$��t�y??n�FH��-��iS�i���U2!f��U%������.���j�C���M3!��gtSS��z�����[|m����7�����p@B�_���������%��T�����o��14�G�|o�Y}`_Kr5�a�E��S\_y������b_Pn�>�\�����%I�;���At{�!�z����f��n���U/���EO�>�����x�'��"H>l����A��y���l�eo�e� ��}�^��~|i��B�/�b*��r"�%�R�3M�m���iM(A�j��I��<�������e��p�`R������d"*����>&iJQe�zMI�*�{c�Hs�)}��P�,$@���,�c*��$v\+Sr���g�L���v��W�(�.�������G�%��*$+������w+��L��A0���}:0g���i$�ZB	:��`���5��J��Sa����5��@�������/T6h�u%_���RX��m�u��KM��������Z8�V�Kia����t��!�"����h��s�p>�12��e\9��RB/����%�
z�}p���6�!���j�]����L"�C���y��y�gT�������u����`& �0��H"� G�{���Vq�O(r;�Y�b��Pwbp��dt��
h�b�[�7�T���	(�>�4���+�����is�@���v���S3e>WG��}�=�:��������S=�ZfgY�*�=�:b�g���^��3 c���b�<��}H7�s�w=g���F3�@��	{B�-Zs�|��hZ�Y�3�UHR�G�Y3��\�`g$,��<-�UHX]��o����e�Z 6�����,$4�\{q3��ax������t�Mn�QWN��?��oR�o���Xd���C)64wD�w�\`�6�F����B�R�T��1����v���n�*����������D�v7?�z��A����u���}�@�/d�wF����*6k#���4�B8A���'@J.��<�����j�K��l���=q���?��jF�-�U-ku�����f�G�8L:��n�?����@ ��*��8����������Y�_q���@ �
!����F�����>>�,H�.�#���Z�Z��O�k���
w���������������
]@�0w�.��T
n�����g�d\q�}���� 9���Ed��� ��v�T}�����(�����DO�>�n�n����T��R\l��-�E��O�n��/�����PB.�������[���:��2<31]�����
�[��
�t�?lv�f���T����~Sn���'�m������m��g��'-�$aHt0m����rqFp�vJp�89��[��WfJ)��I�0`��=���"Tw61(8,�E5EE�I�-?�6��������,��]\�5q�E�X�DG�c�% @v1�5q1�%FJ.����{�_�a�R\�1����,u}�a�`��k���R		�s}9j6���Rk��R�R	�s}#f6c�!=;CH�l2C�����&�[��pZ�/�{F�V�P��U��5��T�R�2�$�lyp>i��$k���:kN*I	��&KS(��hf�����;r�fbQ���jHCVp������0%��~Sf=�R3TF�C�B����Y8y�[��U�T�@7Y�d�������-����HW�q�E:����i�e'Nc�zj���q�E:����a��*�f���P2�����N����-cq���AE�gU�o ��R�g�EL������s�Rk2QHB��=!U|��7L������H�$z����	�)"�@�$2�uY���l���M����DF�����4�A�,����������(��t]�\�"n�B�I�u���mv��#�jF��4,3�DV�J�0��F���@��)%	Q��R��}".�6��`�*f]�5�UCL��W&4S&W�d���� ���U����e0-���F>&���V
eH`����dA3e���25r�h������k���ym�<_����jH���L���m�F\8�2��+V��&VCR��h��603��%����kI��2$0�9%|��!��4���kI��2�*����4��|�P�u��IJ��T�\%5����o7�x�,#z��Uf�P�p��^���v���F<����V	P���7}����������$~r���
Pqt����R���l��*;����T���(E� AA�a?f3��B����k!���z�RHB���� m�����JJyr�ms������������5�������5�M����-����7�@�:��4��4������X��"��g����RfVb7������b�V�l1���n�,������������k�.*�Z�	����������7�8������ El���JL��g�hrq���;s�W�P=��.�����n�O�H^A����?<�lV���o���������w�w����?_�����J�Q�x���.�ZE� ~�MI����?�h����lN�3����:�3�G8�p�S�����(RV���<O�P?�A�o��p�!�`:�v�"$����b��O:�e��x��tx�a���n�V��"�E��AZ�]�+kNv]����;��C������|S�`��u>�m���& ,f4,�u^��-�q=1\�����n� d�[5��`\�r�	�T�����DF_�q�ym����O<W���G������q*��"H���C����v��&E�1����&�����w��k��bI��0�L��zV'�	��������n��ts>����a#�������Nb��C�:����
��a2���>TS��@����@���!��}�p����r�q��o76a���%mx�g~��TUI�qs7v���%m�K��RU@��Q7v�GGy��.�:�������?c��O5����{���7��|��'�*l��2e�YO!�z�cOZp��r;c�����p���:z��f�yYRZ����Y�-�Q������6�n�:y��
m�H}�f�W�s����X�!4w?��a#u�<S�9]��v`c���6���fjq\�Z�g���t�������gj�[�S�'����T�q)�6��J�fj*������lB��t!~�� ?��G��|Ac=�
�X����s2�����U��/�9�;��b��iH)�
�w@�x`�?���*e�3Y>�2�}e�����9=��y��������3�\5�"s{�c(1�b�E����[�\t��J:�@~x�_l�H��J��/����>
��k�i�>q��%�/�7�����X������?^ �"�[�$�_��K]�,W��<�"e���3���z!��p<F,>=�aq�+�������C��^�����.��U��&\�L<���[.�0�8w���#�,��������s�s�ji?2�q���m@���#��K���B+�:]��������/�2(����8|��6��n����4��(�W�9��g�5�$�O�X�zu�0����R�.��]@n������0����LD<��56��X������o)��,������/a<������{y��J���M�rg+TB;���j�4�����H��"��5:�$�&�t�I4{6R����|:��m
�{�����	I�����������nS#���EWF1����G�Q��Q���U;�	��%���Kk�QJ����:��S�l:4I�Pn���9�C&"5b5��M�\I���ta�4���avf:�J�5%Q�#:i�X,lI�vr!�f������0L��p�J��%�"�k 9if����&�2
*W��4�=��I3[.R���F�%���! =if�F*�4 N����Y�A����-O������S�I����;I3[�R���oJU�u������T����T�i@��R�s�4��&����o��u�-~�7����C�}��i�'����Y�~������"����.�#.6��eu3U@vW���W:��j��*���K��X��������N�
%//0<�O��uY��5��5���|��nZ!f�������E#Qr�-Dp�c�>qf$���N�
e�CG��L���N��=
�i�@��F�pur����!�p���?a�-;�%0��s��5�|�;��_�
���J~�u��p�u�_�\�,2Ec�&Dy�W�;�+�&�UN��\��r�����9]��:����{�N������w��b����F���p|����?sA;#j\�
Q3�-Q}T���?FM'��y)Kd�*;%b
�xt����)<q��%j��t��O�`���E��7:�-���yF-�p��Ct�s�.�$N��'�@�����-��t�}=n�#���J���P�n�Y�����!���
{�8�M�.!Z����a&Qu6@��Uf���&~����p���~�*7�n��V D:3����z�j�v<��C{�h�?��k���������<�m��Cevm�L�?Pc'`���n�<]�����(1+����O��^��q��A�YB�(a
���Us
)9e� Y���o6���`A�����M�{��
�g�*F�'�&[$�����3|A�&jL�uys�T��-B���Ys����������D���P�!�f%�VA�B%+����������K�S������C���I�B�|�R)�Y�����P7����|�5��
�Y<q�y2�	���d
�Q��h�.�k�;(����0�I����]X�����Du����x����K�E&==g��*���kN+A
a�0������]d��Q�����ds* ��v�)*��/����*�����J0c@~7&��q�K��n�7��/�������YC+?�,o�&!��MYr~f������3�7%XC����y.�L���ej1u�mh�f��l�|2mO.I��X/QEyI�b�>0���R��%������ XC�5��>(3����D3;�����g�!���<Kc�e����UpoRI����<^���1��������)�P)�^��_l��l_�l%\�xs��"^�{��r],w�U</�k#�#;��3�����"{�g6�)���%:M�v����:�[����>T���Al�������\�Ap�����$G:5q3V.�
���(t	�]�=����Nt��q�3{���R4����z<t�2PW4����O����L�h�x87��Jt�m�nu�������V��L�� ���$��`tD�H��H�X���J&>P��;�}�o�
���/af/R�����3���:C���`���^n���*��3;P'��>J���g�g��g�B`Z��J]ra _���HDB�o����(%�.�����,qeo*��f�D�u|�z���]�����q�A��m���s���i���%�x��@'���{"��%�?@���9$��-S�o3����l!�����q�E��l�
������m����)��oG8s�uK������r�U�h�y�G>'�P�0��~���
5`�����;��������kO!�H�M���B%m~�~�-��K>q	�=�J��3ur
�	F�EF���\�oo�[5����1�$%Xe�Z�Z@�~-�n.o)�%X@0�%��l�J�k) tIvK(�R&\��^��x��Z��0�R<J���R6x��'�:�M���T����&��}D�.�������J�0R����:-���&/��)�	(~�J�\%����h���n�����>����6����l����S�B��v'+���pv>q��z�]��[{J]������~.�s>��sg����lH-I��d�
�H�,����P�2��L�K��d7U�H��C#���|@���R���Ek��%�"
���i��|�C9�%.�kN)&�q�Q6�����?S�;��x�!�4��e+��
�R6&S��
���r�����D����V����G{�'0�qU8�}|?������<�#WG6��e�F�h���C��*���8���ys����~Us��������1�����"�;����	��T��?�����Op�D�aXh0����-���jP�&cd�	��r�Twk#1z���k(�"�aA6�`� �N�
��W��N\%]HX�����tvi
�I�#���3���Y(�P�J#���I���C��M�EPp���jwd���K���7��'9p��9
X�������j�T��r�vO.Dk-�X�,���R%�e&\.f�[���@�\�R�A�@�J$�}z���ZR����$A��Y��fm9�
�A4&P��e�|_d6��g�|��#k#����X.���9	�����?e��w���w�����TG���+v9v��|_

������j��(,>2�&x�)�_�H�J���
����m��S�)�����R�4h4���L�<c9�UK����L�
,�Y������������j�T� ,�:FV���>�����I5%S�i��c_(�����4�)�*XN��B���r��'`95&S��i�-}���I��<��d�T`9uK�,���r���Y�&�J�@���:Aa�\�)*����M�82��_��d�D�
]���a�
%�m��jz�hz~>A��v���e���@��<,;x&/�?�������Mm����"����%r�n8��B8rT!��`�j'����=M0|���!������V��YC��k�%��C)�T#���^�L�U5�6��?�Uv
�l�P�H�R��Ju^�N�������g�#4��H�|���H�9�jk��-5=2r�,�F��������H%�3��A������|!��$�S
K[V ��LKn���-LU������NTW�$6vFd�u�����\q�Q+�*��1Ys�|�|��6���j��r�9�mL��8��)������T�0,4���BK�V����1��s��a��,��6&>�]���X\�6��2�QT��}1�a������-��	���4��kW2c�*vh�k2�+�&�&�a��W}��7����6���vS��0Q�2
g*WN�j�����O�-�����~<��QF�I;^�g#*O�Eltr�"�v��B�V��H�<�)$G>���}�E�q/��'
n`��& ,4,�L��c{���%�1oUE;p0��6nr�f7v���q��#{���h�������`��V���l�������0��U���={���C4��d/�x�Z���3�d��g���{�L~Y�� uC�{�Za�+�C��|f��)���U���;k�	��!�}�+�(�hM\�q���5�����6��z�RsB	:�|f�|6�Y�UN*��'�js���������f�(93�a�%)93�����G�o�aOPX�C��1�^vF�!F`&.=c�G�t�����$?#�xgIK��3����w�H����cDC\��������q��ns4��<�����*��t����,MGv�1�bC\����8?zb:�_�y��l#P�B��5S�g�c���25g����jM���j�����r5�)�A��H	�I�\@@<������k�|���<U�>y�3�Y�7��i������o�y</�`��]-�$XD��_��GVTHJ�L�8�569"8�*�#����������+����DL��K����:nDm.G6���L;���BHJ���T1BO
t�|t\s��M@Xh2}�:��%����u\s��]@��++��s��JU"�T���T�57��D�>�'.�c�^������u\s��]T@2���v���x�Y����f�>���_�o� Z����&%���t�1�
��;��nyw�O(/�A�'��))7�L.GX�����G��)e68?���y��
�})��N1@��-��X��;��|�%O�`E
1�vO�@��L^J�fr<����� u�J���M5�
�9���])��Nq5%>�}}������}�l��9����>�=�a���q�uJS�8d�|���g�YH�]8��S����t����`���H�8�X1y=�
E���2�2�s:i�sK)q�7&R��eL�E���[�0�����$V�D���|!D��:a�;���(y����7�*MX@S�
�>5��P2����<�k/�����aQ����_Lv5@��`��*��u{\fsC�6�z��N�$�a�c��z��L4��RO"����YD��E�^���d�������C��ig]�8\����_���5�35Z{���C�/���oS������������u���P!�����r��X.V����~��>���p�d����������&�EV�C� �t!��8g����Z����|��7$C�Lh3�������13%�[�H�Z��}���4��9�=�9����C��1,wofZ��
�(3���������w�����!��'y�]<D;�>M�\�d���c�kp��%�~��Z����Y�����~���E��� �5������{���fT�l)(�����3�=`��c��SJ�r1z\�����l<��,�4i�������l������	q�>DeI�\�D�!J��h�H�v�O��t�	"�z��=�p���NF�?���n��lB�+>�p����d9��������D���6l%j������+�+�������6&��J�c����> P��2�s���]A~���|���V�,���a��.ih�����:@��� �hS���:����u�|m�:6�R�m)���$qXn0�v�|^�Y�/;&5s��;���+#f�7�O�'����h%�n�FB��@B)��zJmd�~�Y��de7�aA����v�KlU_��*�������~�zJ�����'�JhvI����S�+��
-�_
=����5O�b��x��gu!�����j�|�L�2H�	L�;Lh�C* ��q�C7�R	���@qG-�HeU��l~�8>=��}�OJJ�G�����8I9�8,�|����3���Q]�l����ob&e��-N�������[���d���ms��Ni���� K�8,�1S�6�*]X`!)01����p~*F�a��nB����������>�����i��v~[���v����*]Xr�8b���)�,p�����4C�����#��e����R�R�=^��^\�~��6�dhA+E
=��V�*)��. ��~����k/��,/�jXl��tWk�G��k9�
��l>��T�_+W��5��	��g�,@T����v��P�����/�t��dU2��1���@�P�9b(�B��BU���u"�
|��q^�r�C����|l�����.A��<��p�$B��k����u4b�8L�����L�R�p��
�z�����p������R���~��hw�Cp���p�n�F�8y�n�(���(\,��O���H�%O{�[Y����x6a��3qk�'���z�\0���x6����qk����*�Z��p�������5{���)��������;�%B�����7O����U�|�x���:�����4�)$����H��UVSw�*�)U����7��j[Dn
�B��[RSt��s�I@)�l(z��Y,Y8�O�V�i���m)�~���������S�O���x�!4�&qq�-[�IX�`5s2���E�F��r���W|,���
�o@
2��hIA���rL�_�L���qs��K�&_��r�M�!�l �	,�dX��:���4tdH���|I2,�I�L��}:2�������K�R���_Q3�A��
@\���� ����y�1�W4�q�!}J�1����4lQfh�W:�6��f�����HD�a�1IL��-��DI��C�%�*EXFt?���L[N`#EI��/�%��$,�	)/�-�0:�/��YK�B������fL����NP���z����D�,�Y�hD�^:����C
�md��|�i��� ��VQ;F�:S#��|�vD"��M�����t��G�K�|�v4�a��Q$�t��8�������kG$"	���"��;�3�w1���`�,:� ���A����|�f$*`���>�����
�O�B6�OG'�t�P�����r��Y�L�|�vD"���99>�%��%%&���*EXFt^A�Og���7e������H����
�}��0�M/�������3��
}:#_�JPl>]3
�h��D���l�|���|�Y�tO�h�!��w��g���6���YK�QUg��tM8\�C����)�i����^J8��*)�Y��C]�dq5��j]L@ghVIBB
{�����B�����*IXH��	�����b��U���
�^�����$��_�wQ����G0�*���?���lP�g���3t�}���u�����u��r�(f��+�s��?'�l(z^H���e!1qa���g,t<uN:��+f�V�����:�(&}�abB:�l����)����B��<�{Z<�����,1��d��Y�s��od��^A��v���x�Y�O���f���������o������?�Q�x��A�� ~�M�������X����:�����'���#���i
p�����%����������!�I�1@pk��k���30����B(@wS�E<F���;���]���F��2s����'��6 �GaO������C���3��v���FK����F�G��/��Oj�J�Up�/�J7�%��C0h�AH�0��%��N���/��:��
y9������)�:N>uf')�gCb�cq��A7h�:NGuf#!�q���R-X�G���N��q��3;�`�����>��I�AW�b���W����}�!�g��b��$iW �Fz6{����F~��Cb)Z�����n�	���J�k�*SA��(O�{q��E�/���@~�Y��d�������_���h��gO����.����0�����9��o|Q�o_]%��T��Oj�i�>>xI���$~���Q��g�����N @F4@j\������
>�=q]�`������mb�j��o_w.D�=����c^�����m�e����N�������p�5�P��{;Q<���Z�+y(��_9xzV��q$4Q%�6s�.��tl?,�BZ��J6��0��{-�]�,����E���\�p��CTa9�����t�2L1^L�%I%���u��tl?E:g����LP$h��u�����x���R���.�-���
51�����K��(b@�O����R�a^���!B'���
JWnl�d*@�>g�����������B_���%��`�z�9[���l��2��� @�iy��-xK�P_^���s��v����@��o_k�]�����b����sUuk7+#S�+]n�[*���G���^Y����	%���F��|�&,%�t���b�������G�~ Xf4X:����J��=.���4��!�A-V�H�l6*	F�b�c a�� ��U����K���l6h��m$xC:�:�#!3�R�+4�:������6gu$2�.u��!Q ���.�
%"R�}Q��'F�1uH1]�[�����S(?�aw���@�t�B�6L��Nteo�1���.�<�nb~yDEB-�J������ ��n� ����w���Z���1�Yr�CR��N>�n�F�",%j�]*����j�u
wv���
�������=��C��[p��:�e#mJ���*/�������0@7�U����>�K�6�kE?�l�����z���:�!�����3���S5�Ye�Ec�������ZQ�5w�y���8����A��N��+������WSm�*��%b����������7U��q�r�e<��m�7���@w�'
�GR�������8�
���%K�:�)���T��&�y4�� -���� �$GW��%���6
�F�]g6���8���D���F�,�d�]'wA������D��Nk�|��Nn
"G|�e�b����:�,v_����(�������������g������2C:�)M!��h���D�R��t.4���������){��J#�����\v�Cg6��;�GS�,����K�;���8�N�
�H_*&��g2�h=������w��� r`�X`4e�b�\�L������z��^�3���.������~�\����/�yy�����:����)��8s��n�������?�(���8P��M��f=��*��.	/}�KFL{8i^'��(�'��T���8���{u��H�q3���?>6%��X��N��J���A�����26%�,�X�#��f_��a��~���O������`-y����	�N���v���uO�dg��]��\-c������r����/�K��Unr�O��^��]�����V�����2/�B^��'un�W�-���g%�z����]���,s��g�������3V������?�I`����U"i��?l�O�%�����D(~�e�����O�����S�������MG����6��nV.�Qo�^�����.���R�������������p�{Kp�{X�*���R����8���n.��~r�G�����6�_,w�U|)��x.� ���@ ��_0� `�Y�� �/�u�?;�C|�����.��|�b���v���x�Y�O���f����W�5��_����������"��g�RN&�*�jN�'��M9�[Vd��(c2R��:���F\�
��C�_�~���7���B�I��W�=m8}����b�eN��T��N��
A���7*j�O����| �/���T���=G~qn�
�E7z�M�vY���+��t�x�g��b��A��>D��������3�,R���v�	t�O�I9FWq����'����D����/Y��h�!��"��_U��1��d(�=��9�����tR�d�a�NS:1'��f�Y�)�9�sg��/n>����v�c�}�C���~��F�����(�q����o�<���� ]?�#���*f�2[�n����:�I��s�7���B�kq��k=�r�='
W�r�@���5�|�B��h��$���i���cS��xFR!
�(h	ly>�����!hI:��Z���9�t���J��tj
Z��K-������=/qU=\���s�
q0���8�0>��r�+m�����O��;
)`M>�c���xJF�(yp&�&tb������gdO���g������fk��J�`7�%�Z��$g��������0:99"�,Ru��M�!IS����^�#�����T�^�$WK�d}z�zi�N������H3��\K �h}�J�n���'����g�������Y�t��~�C����I\��P�R��XN���LR�2�<�:
X@����7�g��4�!��,��eP���2({�JC
X@�qE�7@�s��CD�b��@�r%,(%)+!��R����f9#����l�,~�Y�K5#����z��e��H�sBb'��MqC��p��b�����kW�&B@��8m�H���M�$f���#�No�� (�_`�������������)���N��z�r�x�a-1���CE��^-��M@|t��6�%�Z�*�h���A;��<L���W�T�2C��JJbq�����]A�UO����B�����#��O�U��$\M<�����
#���>DU#��,�����
W���>DC<
��
[:����.m��}��6"�s�td#
^����'�D:�6|��6 L`y��r�D��x!���f�V+�
+���^pP�)��x������M���r��*�j�?���U/+��K�����f_^X�����t�N�s.�	*��!M����q)�`�%�9�]�l^�N��)nJy�~is�:&�����A%�Y{�.h}�>�B��]��l��F��.�N*�h�� �������D��CPD*�$M�����������g5�����@��'��x�Fp�}����C������`/a�K��u����F N��*���
� `<P����Ns���:���-T�������t���M>�B���
FD�ct]�������@��Z�HI���+�a,�M��m�+����YG��������#O��+|���kE��,/x���>���Q�x z-��l�aL|N���I��|��g��J���&~P7�Nm�d�3�
��@��6����
??��B�=0S�pf����V����������@���s#�E��V��`;2����v`+�w�j�g�S*!3�n��O����u'��1��!1?m�]*��d��������D��j<N\�jc��}�����b�!!��#��j�>2�UjZ0���Szf���D��5���>1��}@��/�k�V�Gj�Z�K��NKwb��m����Emf�:7�����If�`k�V/�0�J�[`��%h���Y����Eu�C����l$E���TJJY�������\-HUo�Fu���>��}����)	�����W�� �?���m��??l��>X������o��/�|��E���z0�,~�)�4RFl@Q��9Xq���wo<J���OZ�fe'\���i�b#�#;�
��� Il�kE]�������(���Q3����*FWiF��-����I[�WX�a���,���]\��Nr��(�Y�=�%.p>���7�j����Y��l&���]����4����t%�3�3�����q*��"�����6����h��o4���4��/o���7�U������}������~���,|gH�N��&�M��F�P=�(Xx�$���@�����|>��sU>�-�x�YOk5��Q���[�y������Sv`��a����M_��!�����9vL��j������Iwc90.�[4����8���"�t<R�������c�6������Q�Q����6����C�����:�o�$]i���X��O��_���A�
�.J_������D��),=(������[�Ij���ct3�Fp]jS"8D��I���� K5�F�R�h�|�����1��@�1LE�PQ������]c3&��k)]�D�>�Dsy��?0���o"�yP���EE'��<��md����]c71V!�:#�t�Y\�5R�_�t�����h�
-���zt�t*�V��q�R�<��������O����s���b�"�N�l$Lz�[��n:7�A��/����7������o�������GGmXM4�L�j@�jN��yZF��bft3�����V�q'm$@���bQ%��k��u�����D{�������8}��FDS��@#9 g�V
���oBib%�G�m�Ntl��P���;���L� r�J�r������}�����s�[E[���J�h-���bP�s��g�G�n������+�#�:����w?�z�]��|���*R��i|�����D�F�q��x?���q�F�m�
0C���� \��H����rHi�Vz!H���Hr{r@��oT���hacC���u0�r��m�o>�s��@u1l�
�C����|����&���� �a�4C��@������~S�����P�Z�����`�M|��5�w��1���Ny(�0�M
�{���pRl����sb���l���X�"���b����C��f�1��Y9FiY���|�-c�)�������|�`a�)�P����P!M������[f�	X�����gv��D8\0�zt���@�y4����^����������>�[a�Ust�&�p�1�������rC$��-���
�L���n
����$qXt3Bt����x��(���bj���'5ad$<kE��J���j���Z�S'q������	��Iy����\��%IRs'���&n�;���n���������(P�W�_���x^�x~������Qcr��`�
�K-��A6���`���G�!~��m���N��z��!	�qH�1���A���"��G��Y�_��y�eG�WK��,����:���#�8�X��>C���9Z=���.e@.�_��C����:,E�~*E��^�hH����c�(5b��m����4����rrV��4�h�Z�i���j��������(U�a�O�����`�
���5�
��jA�� Ux�	�L,<q�KC��)��+��1�g���H��72�V����WE~������2Nu�T��j�[mt��6&�UXq6@q{n��H��^C��X+��$!����$7]�d��d���|Y����$<�tY��x��g5�{����������I?+��\����A�����vk{6���o6:j��K;�f<��^j{>m������o���& ,�3`��&�3��i�t���+�:�	����[��yK4
���j��{�;����Jvs�={���R+Ut|�j'vAPy������nok�Nr��a����C�_����������c�^�������p.��xa�l�����:���f`�Iy���E��j���s��j��*���8!�+
����W+���<�$|s�b�w��"<��������;`��`
A�Wm���������L���m�������m���M��j�"0�������&���I�R��f���!\&1�a;F�W�1=7�i��3�t�E����PR�:�Y�IN��Nq
����������}��a������e�v����$����_.����m�e���V��/�����.z\�>��6J����]*��}
&�t��O��,�,FAJ�x8���/����/�����/_/�?��I�E�?/_�.��M��9�G�=�������Fw%���}�|��7�O?��y�����P=�����F����
��PC��-������2���2q�����8b^�_���v����~=����>��9�
l6+�;8���@h�����W��6�]<D;��8��6b�dnk�G$�G��_?�~e��I9�t�<����@�H�2y��.�rr�=yC3������w��92�b��;.��+��g���V������<�������_��^����}��6i'�lv?�cv�x3��e����;8���L���*����Ff8df���	���w?���k+�%��p;�fU_�7c���SY�Dev+�)/w��C����	����Y�L��;�-��[����Sih\���{�������N�3s��S�C��2�Y�,u��~���������+[���`hUy���������1��!+/@T�4T�}rSY��K��
p�Vq��������F�+u��1u��5���x�l~��+0������P(
g:O[���VQg���~��
i,n>uM��-X�DX�������d���R���`�p���]�76����.{��g����O�:�O�C�V�'��6��[2�/Q�T��J�����1���6nk��4�����qVe}D���)As\��RS�s;���|��;k{���4d_;�������N�Z��p4�|�{�
O�7�����iy����d�������g<:d=�����`�c>K�/�R8�� q�%t�����
{�2 {��N����H��-���V�p����Si����+�TV_��4u�|����kz���d�L�a�;�^��4��0I��FJ�����e?:���T*G3R����f���a�qqL)m��v�b��jV���2�+,����Mej�WC�m;�]�xv������\L��*�9�0k�G����9���KG�\�g����O���D
G�_���|�w�U��4j�-�.�i�Y���)�x���I����3��x�����7�����w}����~Y��<�L'iw��M��W Ju1x�??�;�)��P��"���Je�T*g�d3r��K��E
���BC;�L�~yDa��/c��ny��������5�+4{}M�����)������_���|}�B?����zJ�|~����{�����_�.�cZ��h�I���xW���<����d�P�<���a��nyL!�V���Jb���F2�]#������%9��^:����������-Id�"�e�m&;�9��x���/�Xn������K&C���b���`�Iw�X�lsN5�&D������s���`zM�Fq(��`�L����.�
�-�^S���7��*/����]r	j�3��m��BE[�sz�k0����x��f�E�j�/';:��x�����t�SM�H���3����RdO��ml�=��M3~���>�������wa�����z�o�L3Wi|��x����~�����V��0��V$��u�e�Wqj�?�;'��L&����SV��o������o/a��7a>�Z��9�sN��`^GU���4~�B�H�5�����E5�c�4%h�����Y8�Av��fQ?����v��?����S��xa4��\�vx]�[������p|q��lx����7�����lS�}���7_�-�.[��f�\��wx�%���WL�R�pxQ�`�9/���������W�{j����rQ}���e��=V.��}�����/)�7�T����m|W}����2b������rQ���}�T�9�M�\>���m��V��8��9���W��=H���V	�k�����X/��>�.�I�����?^��O����j^������A.-���������~7�����[l�w�{��������k��r_���������8�(9�H-�S����z��xT;Du�U��`���
��.�4���[Q�r�k8���u�s������t�ZW����rMC{=���xS���\_�\�.�����������@B;��y{��^O�b��``�u���������u�Jo��c��P��in[}Z��TOq��yTg��
�[C=������	�����zv�P��?xC}C}��,Ls���V�z�P
o�"Q�\'�7�nA�������	�������1���U-������.�.��������N�����P]��zs��]2����,l
�z�=4H]�^�
�u��Q���WW�2��&[�*���Co��|�!3>�7��&�{p�t���Wz�}�}��,L;0���]�lR!���3b����s�z�[���	��U��$��g,�AB��Vo��[c���nn�
�5�74�C|9��;%�9N����d^�q�l���<�/l���tL��Zu��N`�[����i�����~��#J��Jp\������D�����7�t����G��@��
.l�4�FA����'f����ur,21��������`T��$�[o��b�3=8,p!���!����
�O�7z#}#-���
>D�0���fdP|���h���L��{v����>�t32�3y�M��L������&�}+�:nF%%o�]#�3
7v�hf�����L�"�������m��7��V&����I��������C��n���s��m������t_�t��qn�,lc�Sv� ���V#��p��L�������V�H.�\mK4�W�K���������3B#����y�����������������'By<_��@�D(f<�K��s�.�!=8���
x�B�0��\��sv�x�M����s���a�s�d+<�R�<������F<��o�x����>_��@h':�}2���]*���s�:o�=�
�xf��$���s�c����<
�v�0��r�vx����yJ�z8_��@f1)3��+�s�,t=A�������y�����#D�gd!����<d�r�����Y
�'�Ywvt��'wG����5���rI���~8$��}v�#z����h��:
���;����
�xvc�'�iw�:_-���@h`�3C�(�g��;����
�xvd�������������>>��.���i@(���r������3�3h	S������2�{�g�}�p�������F�nn���j%�K�r�����v�}���Lb;�5C	��#s	�:���V�����4=��>�d�GuT3g���|�&\������+�Zny�[
�e�nJQM��������zAC����Z�j�7Y�����z�3��_�(�%�]�iq-#k�z/{�"��k�j������#��5-n�8�*���3�M]�(=�5b�z0;���c=�����S��������9����u��~}�Q��G{{�mt7W������������	��5
o�����YlH��7tm������b���o�~*�����}t��jp��~ju�	��;��	�S�+����9����z������J.o535D�7��Ky�.^<{�_��O���"�
����)�>2�5F�>^�z��,O����o�O�p������m�����]�i���7?�^/x�g3���{���]\@!v�U����2�d�	R��]�� �
6�x%���N�s��^[�������e����%�uA8���W�U���W4��U>Uf�i����F/���T1�^3�f�E4���v��"�:��U#�~s��n�$���������^g�� �A�`R����j����D{���x��j��#��w�=�>���,�*��{�P�����Y. lQ�i��r�Rx�G�I���+�W������/�*���T�0���W!�x�����)<U���%������ �q�L���	�z�n\]�M�4�F�^�|�@�i�}�bW����vu�6������G�1r�>���gj�D`��xo�{s���Q�<4�B#����&�M�#���+m����E�q>�Z�@�=*N�7'=��Vb��&�WW5��,XV����T)���Q���r��8|s���em�O2^!�������8���.ZxH;����(�}|(�\g�`]�
��kG��#��>q�����<��<�s?a�����A0��KaT�MH7�p�2�����e7�j�����6�6D#�+��6D�Ix�&~��[�dL�&�I�����f���&M�����X�*��	����>����M$�q
�� �����r���tV\��p`��iMS�
����
���[������w���	�6F���p���D��7���vwF�U�����k��3���!��7�W2���<pB���FC��!l�'���h��vl����mv
�I�F�:�����%_�jo��d�ef����iM;s�OlB�i��9�����?�Y����t�.�Qd�9��(������4�-����H�h��]
��*��}�{��3�H&.6�^�C<��HvP�\�7:g�Yy���\A���&�xm���A���=��H���W�~���(jI�ZW�����-[����p���
�~!`�:`��;�px\\�0�
������P�[�?xX{XXW@�������&.�-���%x`{`/hP���.#�����]>��Q
Q����,��g��p��oo<��fy��
��|\��D��8����y$_���G!"�|X����t�9%\��$�yD_��V�aV���.����%�3�=���M�D�8z��<�]����\���������b��`����nl�F4��B3��KK��?c�%�����BcHt���������_�z����o��Ok6T�j��'2��[��a}"�d�*�k�S�r����A��Uh"C��/������D@������H�g��({<�-��yP.��D�<�"x@{�c����r0�v9�ly�@e��t@��������.,4�Z�)�����F�h�B�����������r�4�=����@h�
�#��&{�?Pq|�B �E������J���2�S���v���������bM6 kN=��w�iv�a# �=�iNSNy {�����Z�k�Yd�$p���-r�����F@>o���$~���+d/FA(o u
L0.�l������9~�]��-�%����(�l��#���0������H��Fo#d�������9`8�(�FJ��\;�<3���;=������N/08�4�i;�9
�5��NW����g�*Q�N��C_���t�N;(|�(���4}F��Ao��v�A�G!m������ �v�j���r��vZ�C�+���yv��I����6B�v��4�{8��<}*����#��~o��yWvZw��1�����5���NOt���]��xr
��~�	`�}���=��TV*�@�f���J),%�����7�x�\��.����Vh��;/�X�v�j�]t`5�%<o�5����0|B�M�r�vO4g�b�~�@h`��MP|��j��1{{y����!��v�u�ed�/08���SM6�q�q��c
��	��(>�OuW�x{���s6A������������z�@&���.}����������E&�
��$���Bp���q���q\w*VlW9�3���.I�{K<�*����WB��8���o����Z�����~H�(���k����{_p
��8���#���h�����^��`D�i]F`�~��V���8}����'D0B��(#�����E��x�1�1
1
Q�����|�����������
�+�`F�qeFx����<�=�h���H��O>���=�q�x����7�7q�Xy�|����������/��Ex�@8�xvB��E��7_�������)+��.��>�����
	���D�]$,�0��6}����M�5d��
�y�f�%�+����B_�����
KI
F'
@��4��.^�^�*��2�Sy�R`�@�au������
���!������Na?���?�����~BX���o�|�C�z�� �������E�[m�d��{�����\�{�L��,j������^������#?��Q��n{�}r��T�M�����1en����N�r�=������>2��H���3�<�UPs�y���	j�_�x����1�`�y6CeQND=;�/�����V\�~�����&�v�7==zD_<�!�G8��9_���D�N���������	�X.V�3<�I�����$r<-��f�=��?�`?�o��d����~�X�cR�
������4�3�3S��XH~���_����w����`E~�0�k���8��Ln���-�|�|�|�V��Vn�}�~z��KY�C����
��U
�8�
[oz�Z�����(W��
��6�/��JY���fu$S_#�8�B�Zl���E���Q�T�T�T����x����R��<����mj�P�w����L}���������@.���HM��HU��Y��������VA��Fj��F���8��U�F�cZ����i�)D�__#���j���j��t����+$>�������Q�D3F21q�x����P^Px`�r��s`� ��Fj�k���%�5RR���Fj�Q#�uag��ta�yL���+���*\I*?���pZ�Z�G��0��i���
:��.�������MbUxhoT48�E����
N�
���O�g����|�p�����7B���f�W�a��A'���Q��!}=H�s�"����u� M���A�v���!}=H8�"��`]+H)�vl�6O�� ��8��)��so_E�m���>����	���\iw�������<����x�[��
�0~\�	���^1����#x�VO1F�"^��-���',0����%���+t!�gU.��_��=�=�������+�%T����j�����}��
�2���	��:�}h����uvL��z�cu�P',0!��`[���`�N����w����Y�W0zX�+%jvo7��*�|X���$�����__nr�p	.2V
`A�:J�RQ���f��e�������_	������m5����,5,<b|��O��<<�NVJ����lp�������\��CR���]������2QW#�A~�	W�0��
��|�.��V��GAB<l"����#���^�D�?��
_��R�/�>"���C�
=Y��<�����)��I6���l5��	��9Y��L�}��.
�G�/�w���+�~G���,�Z����r�D��o^�|FqN�q8l\]>��~��i��|������>Y>�~�2�����O�.�C�@0���*����x�5��<����]v�o��ey�m*"x���L"\���}�!JD"|����'�2�h�@0�������iBpx
Zoo��d��]��"��m8��gH�����q���K��N�]��%M����}d�21%{������<��\���(��<��gg���k���~�.��F�`�xu]S�z����^���;�Wr���J����y'{�qN�Y�o:��������9�l
�S�����g���B[�r|IvWk,z��N�����D�cHp�baS���`?������.^'�m6(��`��~H�-����j�������J"��xtM7�?��`'2���!�t�u{jy���e��j[������#�^�����v��6�f����t��^}����6�^�&S���A7qvyx��G�G7D��t��C7q�yT)��xt+���g�r���<U����[��N�}�����|���\���(
$x�9r&�6eDg^�s&�
��s&�U���h�<���L<�t3�L��:A���E���xt+�f��TWu�n����R�3��Vl���#g�A7qVyT)�n�n�v;A7G�D�n���,��G�#����E�����<�l�!Y*;&-o[|���w;p/x�o�.#����c�������������&�(�w���?������.��}\���=��o����f���N���t-���f�������;�aZ�
���������;v�����O��M�f���`�,�;7��<Hv�����;e�����xHv�����O"A��Y��7�i�
(�O�K[
|���	3�o���O[��O������7����?�����
,v�c��}p��[���Q-��f���l�n�^+*Z�l�=s��9q5`�q��q��.��p��p��f���z����J�31+n_��G�C[����N�ULp��;������V
����	q��i�{?��Q���y�D�0����A~�2�����E�����9�qL`"����x>p�����Qq���������=8���W���`�7������Gv��zJ�u�����
�KP���X���i��]�2k����TW�5q�s�0�[}<�U��b�����&:��WM����������Pp�����v!\-n�wy������g}\��D���]����Va���>��	j����a������8����5�5q�X���]���=��27jVmY��-6q�X��7gzhCh3�eVum�Y�o�����fn��,��3�q��E��V���js��i��=q�=�������E�@[{���*=�h�����=M�d�=�9�k��/�H}�"G2�����������H<�!�]�H�9
����>G��
��"G2���h��=��9m�.�6G�Dm�y���H<�!�]�H�9
�u��S�#��V���js�H*����w?�$��2�B�=t�%��IzU|�}��� }�"�f����3�gO<��;)1a���]7���?�'P<�t;�2aI�h��o��9�n�Nl7W�	�n�����Q<�Ut;�5aI�h��;��L�G7B���UoB�[�=�3)��
���:����4��m�������L<�t;)9a����[{z�s<�Ut;�:ai���[{��{s<����n������o���V������A�Fw_wV9�:��Nl7W�	Fw�q�tA�����T������)"6�x�]��n'��)Z��ey�<�}���E�X7�_�}���x���\=���:�(�S��-��c^��U_���I�'X�u��^K7*���@�R����E�3H6�q����k���4Sf���]���X�D��d�R	r��{�1?-1�=w��w�������8�&�;~�`��%�s���-�G�/�I�!>�_��S�vgh'��P��a�YY�~�Vsw'<!�@��P����D=X��c��)gF�����
���c���T��Y��Z�{����L�/�{W Ox��'���2r|���_Fq�)_fz���H�:���T��w9��b��Hu���Co���w��H9��"��=k6}�����b���c�<ln��h}��w{���+��q�����q��?��Q��3�~��=����!
 ����jEU���:~2����<�z���������|�L�����=<��_��f���������{	&��u[�N��6�������~��k6��C�����O������{L�������f���g�Q�Q_A=�W@��3��������`���G��:��h��_�$�IE����=������1E�?�y����h������@�2��w�Y�P�F����NM@O�>�%3������e��ci���U� �w>�G��8���fd|S�c�S��
�H����\���H�����
�ZN�]�
B85�zE�nl����T"�"-o�$�/F��lv�b��F�x�m��(�;2<>��	*����C|�2e��x�>�8�[&�x�|�Z #2�����������~~\�+AE	��_���h�LJ�*���������4��Q�����+�u�#���U����"��N��K�����5:R��W�V�2`Q��hm��[i�����Tu�������>�7����2�
�qo(�\P���|���Wjv��@:�0��k�j�����>-��m����e���������	NTVe�4����i��<�=�XCXpB��2#���M�������*�+���qiF�����<�=�Ut;B�TW�T����#�#��1�,�4#���MN~P�����V��#*���|aFl�C�7_��`���N]8��L�T����)��]���������'�z;�'r��b�e"����~j0��`��p��#8,d��/�!���8J�� �x���wW\�+�I���a�
 ����V���q
���"�M�����6�_���)���y���%6��`E>\�����w��pG���7��0��7�(����������S��c`����{�O#����1��!�#76�So��a�{";�  8a?�6�=��55���10�So�������O]y���������������z"o�D�`u]���%��4�s����o�u�wg����>pdZ��������b���������8������"���Y�}�}������q p�
���E-�=9���W�"����z��
>	ww�-�e��=�dO����"�����������lF'��K77����k�������c���H7L#�P �UT�A,l�C��U�f�_<D��_��i�?�B�P������^p
��m��=�G��k�}�w�JC;�O�Z�=��ia�\L�3��>�%�.����e0�6m)I�>��)L��V@�����E���:G�~F�7�����wg���l�<����so��������?���������T�Om��]����kA�7����<F���d.�!��4 f����9Zy�_��T���,P��sv��6
Pp
)�MCV��E<�����I���@�CT��Y���qK~�i#cb��j��o������Kx�j����~0X}L��	���f/�W�)�����h��u��d�S5�?{o��������OA`����%�����w���h�����p��+�$���D�"U���~�������DQ�RVu`�vw�
���ddfd�M���&��7����p�:h�t#��������1�7t�'�D1�����8�H��F���pvo�A���58�+S�~v~��q�WX�(�����8q��b����������nF	�5��h���%�����^D���!�Dw��������1���:\%�8�P����@�FN�Mb9�r6�������>�q���l�RdO��r��/��{��.�N,�,��f��$�*��L������[��t�4�{�Y@�����?�������h�a�Y)��$�d&�&A�b�J�����������p����b�����*�9F���o���,���	S	�OY�6�`�
c����h���T%]3����J�3�
��r�9���[���_�\64��E�{�d�pgZE��V/�h_����F|
7�����eC�����������&�y2�xX[H��ex��R���{��71�Kp�*T�*��/������rCH\�^���d\_�������t�.�����O&�����J��f\�nHsoI�@��b�����W����X��(��������Kb�'7W?w�p�1�����+-E���k����~������7)a�%|����Kc�:�5��������|l������#��/.�����}����m>����E;��4�������<������|9vN�x�u0Z�������x"��!���^���>��xo������0eG�:�9�W������5�)�d�o����BWy�&�_���;�#������~����t
r�����|z��F|�����{�/l�9F�t�]'��7���������t���_7�2E�x�����<+�@�E����D������fO~/O>����M.�I����f����g�������a $���\x�������X�/��/_���M.�I���/0_>����;J�2����:!��m*G|��n�;�5��{�ry8����������X&h\�u0*��q������x��A!���>�Z����f]W��;�o��o��U���A��u>�l?��w��o<��,���������kD�.��/��#����k,S��=��<�����8l���aY�#�����x�(w�����#7��B$�W��u��e���Mu�%��{�z�]u�-xX`y�D|����_tu��`�������}7�V��7v/w���O�uV��1��{�y��\u�(��_����3jht�w�b�����M���@��:���*[�p���d���z?�>u���`�~�?���|�������F��4�V�HPR�=&h���y����<As�	����a��+'h�*#���+��}����I�!�����Dk��k�����������s���pX����E���G�y�8��������X�������'�It8q�"'w����k��M�!�Gw���	ta�C~�_�0������*�������*FB���������������$~�IUI��ba��TPj�����1{�	���=
ee����eq
�n6C7��@�����]��6v/?5�h-#.:�;����^^��3�8��7��B@?�q��>��~�����;^f�!��@w�wa��������p������IV�n�u��@!����X��~����1>r���]��i��k�}�L0������/��@�pn������x1�L�N!��I2�'-�3�&�I��y=3���!��M2�g8��o�������7/���B�s��}�����i��8��k,��@�:���[���z�g���@o�g�s���
p�74m�@�����!m�@��-���%�
�@4PzhJ�!�-�'c�������8B=���0*��g-�)c��`�W&�L��v L�,��y���^�8P2M3��0���2�fze�@�4���t�2��'=�������{����y���^�8��iJ��Z�+���������%������2�Pz?�+����15��������uR��t����QH���-L��7�8������J�z���T��S�����O�&�z�s������
����}�%���j��_����3����d���woD���,�q�E���c�Q�����M��7Y,��M��M��5���]�[�C���p�JS3���Az�Pi��I����B�����7������#^���*�p�S]�����)���C��L�T?g!X��
i��@F�����tu
��^�7j���{���D���9wq�p�=�]
���p_�r���^�O���l���/e.G`�S��w��e"'*=������_w������HLq�~3�S<�#	����x�|����w.�JU����U�Esa9�����dh�J��N�iI����\ze�@��y�-@#�s~?���A%��<4��+��{���A!���pS�HO�7�����p���N���_W���
�M�,v>�����~��!���}��c�y�8��
�j��/�,������,f���������{�$<��$6EP^����z�z���
o~��Z� f��Asu�\�M�u��(��c(o��o(�uD-��%����K��?v����
�+��%?LiQ3��
�~��8���9X�
��f��8G�A����Y1�7J�@�`&�Cd,>|WYrx�#aw�FG���7r/�@��lh���p�Zz�������*�H�k�&^'�v��F���;��f�q$��&�����WY@���j�"��.��.F+��r����j�5Sh�j�ys'��j	r��������|��L�|V7L�Fm�������,\���i����CgK����ikS�0�o�%�'�
Eim.�����
�d�RC�4C)��E��7U�9xF}s������se��������@��	����e��O��Y��'��Q9Au��f��c�d���������>}u�;���.��W����bs*��C�./���V�<���}X�Q�E���/�O�|{U\p�]���c��a�?j&�"�
�>�{J�F�����K�J~���$�������������K���M����c���K������G�q��~����Z�����f@k]�m��=�|��s�^�}7���?�����!������>9dQ{�	E�A����a��J/�����zp[���om��&pYTF��G�8�u�B�	����e�,�����
�zXd�)����l��Mv7q`[�d��iUr�!�D�76{�`P5�1@�d�m��������=?���9�������5��F){�{x����9������y�{gd�F~��>�r�}{�gC�w�����@A	ue��Us\#;6�]���A����{8���h#\��[�����#�:Ld�}����x�P��{����H���f�^{�N~��M:�`�f{{lck��pW�?Q����
�%[��8�.����#�fc�,��-_��w����'�\Ep�j����i�y+����.<fd�MHA���d$���������%�=�?��<j�=2�l�@
���,�N9�����������:���l�]%�w������A�p��70�;Mez�	��K�uf��,	��:�}l�\�����n��G��3�v1C&��V���U���g��	��V\r����&���%e��+n�����4�l�b��id���O�1�:���}�QR��I�R>{0����{�]�ig�
S���f�u?m�����mL���,��.�:����bI��W�/�����%U�&op�������l�"'H�	;<�6>����w�>f��Q��a�cK�������A�������x3��.�\P�AAY#|�����m��X�B���|S�[�x�\��D�	��#��\��E�.�^XSAJya�3�g������6�$P�#���yS������U��@A;S��� �]��O���.���1���
�����.��L�*�~K��j
���3��l{C��{��-���3X���~�Ql���r�~���TMI��U�-��s���1h>�����DG��p�d*zg�'P�j�u
����<��kh����1sW�����6|J�<O�T�
`��?���k��
��*+�J��\^�h�J��|�����0o��Y_��c\���PcA�ta�R����h�N�E$���vQ�=���������?d#R^|�%��������n$���B,��$��J�)�l6��
ihP�X���2J�1���j��6�i�-�]���_�`��.�3��\L
F�
y��"�q�L[S���2hZ�t+o�OQ���Go=��;�+;�K�8���(�����pZ���Q�1��.�x�@��qG�SP��H':"�;��L�.��Z;"TP�!��d+�����u9/��+����^��^%�vI�2�q]��2�b��|{��/�b�������
�5/�x�S-	<�W.�x��P�KgV0�4�����Bw��m��pw)�A�����(�[���5�Z(�i��}~fqP�����Iq��	U���ArK%������*�k���
�l
9��!����e�����n+)/1]D���|���)[�\?3�['���C�M�	�A�L%����r�j��3�0�"�}{��W�pG��i�����2R1��e	���Ma�0XF���k�PG�X��:���CIu0��+�B!B��`���*FAy��=F���d[�r�D��t�HL��4b+�^���7��?��;1����(gP�U���U��1^����D�z����w�Fp�~��u�BDY���j�cS<�8S����W�]Ta��9*"��&54z�^E��o�*�i�4��2��9��������Va>s��>��C��'��z���C��JW�Ji�S&�j5���3����2���Y]��X���U����A,�����@E"�-m�����L��)�g���c��NT(_ZP�r���b�',������r��s����r�p�h�$`�p#�G�����+Y
w��r^
r54�/�������ZQ�?��P�EO�K��"sV��/De��"*����nG��Q�
����(�-EW��x���L�y�R�7�rwJ���D�����@,D������)e��d�}�
��{\p���#r�^h���:�������k����q��x���><���M�
�xir�{�����E�j!U���h�=-�K]U�����/,�ZlK��Bi
�>��K����0?��WDC����{k��zK���-G���w��cA��]5��8up��h6�}9�x�r����P��9��x���y'?�����/��^$�X^+��D.����Df����+����!��R*��n2)��U��3%��_��J+����^&�zz��1'��i�_-��s���� !���t�9�1gv�~P-��++��@U��2���]�X��f��f�������f�9����-���3kl�:�L��6\�HElBo'�#y�!��7f���m���W<B���q�v�J�p%��1��0�
�1��Om�J�!�0�/��%���������M��G�{��3��������`�!\j@��ZU�����'x����M��.��,��{�{�{*a��N����/Z�d�y2CH�J��VT���]��X��@Me����*����;��_~	s��n���7�(���c���P��0X ���#��X��i=��$�7��������;YTS'���K��������<W�\>�g�5�m��v�x�������g�n�v4c@�o�H�o�����v5+ o+�u�\�������v�vK����������\:���Yxx��r����rw�����`������lhw������KU��^}>9���\.e��c�x���������8c��_���v�������f���Xb|c���)?��
3n�qK���^��8���qf������2�O��������7_,�l�|�D�� }Z�����6�7Y�"���F�-��E���
����pA��n��E�h4����H���n=3��8��p�2%�H|.���I���=���m>qp�"�u�}/�X��a�Ku�f~���A2oL|e�%���2q177?g�	R��zd�L�L���t�> cSq�6��5L�A�W�,�
Tc��h��uy;,q�c��aVa���S������9'������s�j����
f8�Q����L�L(��>��i$�0�!'�0�+J��O?iaI"�o��'���������MZ�F�#q��L�8��i[��Y���f�MH�4%��jd�Q��g����p��L���k���4�dxh$�O����f3���j�*��Z�p�\�����)8xY�����;�������X�g8��s���(,U"���Mv��h��x�N��|����q�k�)�V��A�6���!H����+�����*�.P���{j@��J4�w<�h�H�k�c�6��*�o�x��pu�"��o����Y=W��W!��N"�j�g�X1~gE��@���r��U��R~�t������x�i��K�����E���s�_��+I�j8��h�x����x[J��-��{�������������aE�k�bx�Fc$����&{
��.��\B���eYZ��	�\�|#�(��7���F6Y��[�L��|z�}�&�;��^)e���=�fA�����f�o�{[�"O���'2�g����{��,,xo�
������
'�7��{ox+���>��T�G��������#�[�	�������-������A�J�����v�����l+d+k^�M�k(�.�vc�l��s�l#���mxg��i.�\�@P�Lpt�_��J�������5��x|c�
��Q�y�<s
�&�#����5Rr��%�k�pm�_��o�I�o���k�5q������L������k��Mp�B�m)$��+��%��8vE%����U�1��RFv��8������&%�g�����{���":���18W$��F3?s��c��X��������������������{
B�k��1<'��wv��f��W�TB����~1D��eo�;�������t��][��j4����������K�����c�yA�}J��%�/?cX+��V�qQ:�q|e���g��Gs�mAS����v��8��D-�#��{�z�#A��
V��p�Y���](0@j�V������_�SLP��mv�>X�Y�F7���������rM�B(�2������u����e=���
��h�`�V"���Y�)����y56����(�����o�~�����{~?/�����o��������?z���{�-��y11�f<n��������y�=6���.����k��_c��9�P�j�<�>�9��C~/�Go�G.����]!�a��E65�s�<�9cmk<nq��!�����Eh���v������{�}�jD����Y�,��U�d!+R|>�����o���0$1Y���u��Xs�IM|�d�c����c��M���2��M&p�<��"�K��'�'���L/?���y"��<��w����~�,�����]�	m�������C�Dq��T��F�Su��<���'0����&�1��T�	�~���w|��Q��@���!]�����9���0Xc�?g������Irg�y��I���m����Q�a0���!�Pg^~���8ly5��a�A�ye��3/%�� �I�i��F-��&�2�G����OW���]*�gqG\{�e=f8���������e���?�3Y�����y����(�U\`����M�7�cH@|���p�	WEL��8��#F��x+�,�
����(�R����_�@�
O���@�h���W?t�t��������H4�T��`�'i�E	>���[�����^
t��6/����eF�0���t/�ro�����>z�������}8����p�W�#�T���W2�w��tz@!���7:���M��	P�����+���#�R'!sz��y14�����5��6�S�
�8�%�)���M����%�0����C�[>|����aS����U,�:q��������u��kCa���	��C�`i���������OM���3�
������9�B�c|����<>��+���a���{*�/X�j���U-��p��f�
�P����.����:�i��*�=��kwY����K�w�l��'>��6�<E���G~I�G
�&1os�c����7���A��@�re��s��6�W���F0N�;`<t����/�Cc��S�O��.�S����"A���1�
��ZF��1c���;�o��n:g�)��h���u��i��D��h�M���@$H����!�l*s8=�;�o��W��u�
�_-�a�o�	����
��Gm����7p��������� {ZFq�.�c���;����l�Qd�Zz�2����g/8��R�����"1��.�+�e�����qM��G38��P%���5�JY��Ig�s��P�,�^�2`�9[��0�<!K���w�='J����$��-������|�Y�8'��'��7��d�����~�7�.*�0K8����������#vg��cR�Bv����������z)�|����L��)tl�e��qA��U�]'��I��>L�@��#�����S��C�2{~�R|�`
4��F�
�W(@	�������zXG�F���������`g��F�	"
(F�J��H��f�����AR��r���LjL� A��TZ�[e������
#�HC�7V��#=nE:���f�W�H�V	�F�����Ag����v�\�J���=�`�i-������Y���{��W|L"(����\�1�FV��Ig����}���'BA�sc����y���(_�H���D3�+�	R�K�tT/����VO�!���f�W8�\Wv	�Fv�������T���B�t����qX�6�&����S�^~c$�$���g��
D�W����&T��<?�:��_�����K����wY|�b��m��� qX
�D��SK�z%�@9hi(Y����)�w���^��x��bk��Y%K��A8�����z�8�j���o�2!���fq���g���)��UB�����N2X�V��mu��
k7��HPb�X����5����)��L���f�[��D�&�Y����*Sa3Bz�M�������pe,�O�����
����
��S���pL\�Z�e���W��_�i�O&���,���R�����
��N'��sl�Q��;r9C��N��������g����V!����{�'�����R|��<���� �K���p��f8�O=���3���^� r�4F����_*;��6N[~7�V�p0���������FY��bG4�F��w9�]��x����[����*�X5$��(���RDS]�&4�"<�3��"�����|�O��f�A^�Z� oB������Z���?���;���)�[�#4$?��_�����j���h����L���� ��|��������X�q_[��^;p]��
���72���dux������XO ��UFT�r�}�G��-��^EPY�v�\���:��)�w�����qi�up���5��I�����u��4���vn��JM���/�0	�o~�'n��a����=k�X����E�z��e�����]�t��W�P�^����\���m��z�4��xQ,�D$�����vR�j~�o���+�������O{�x��� ���[���v8�/DH���&���O5�C�����Yr(��o���Y���p)��6J��'���U�<����\)*4���Y���������a	����_=	��*��=����p��������{C!�U���h�n0o7e��l.u8�9�:/��N�jY��%����u���INp�nl��C8��{����z�){v��c���?u��C(H�WLw�^��Mf2o0��g�l�Qa����
f��4��8p�E���^�h��qA��j�s��%����pE������;:�Wf{F�X$c�O[#��	8|��/&|G��e�FoD2��gG�<��%go%����G�2���M�rJ�sx
�8�H1z�����L��=��m9�����&>FP1J
�d�
5��3�:���QZ�������pL�Z���tL�(-�HNy/����
O����SP#��r�2	�������b���q
SXd{
h
�����eq�+��!���'�.��
�}�O)&��;��J���5�04��Ac�X�9��4}�v��6�0��-q%�v{�E����K������j�u�6�G#b�&���q�OH�J����&����a����mh{`�������b��P�S�>��������<��EW�A�:0�����g�t�9���Y��5�n3��6�'.�� g^1�������Q��������rY�\�yY�������WA���8���lj����x�JD��I$�v�_"4%��,w	"m@��6���_x^����kYls�9��K$��6_;�5�����f���sm�5�v����}9��N������J��)�<G&(������8w���s9��*������+Wa�F3�FN@���*w�k�&��mlZ��vQ��5�����;66��������*y�k�&��ml��{���(����������76=������{n
n�����5���g�t���8��.�\N�O���������h�u:�+���L.y[y\������������C��r��/O)����	t��1s�����&�L.���:��?��+G��7���4���p�[���E�[��xr��i
�I���n
n��dr�n$[%�+O.2������Mkp���]&������L.�?���b���b�#mtp�NF�wp���<r�'�-���v��P�����#xz��
�$'��`���u�14������`v������
	J�s��K������������vpO'd����hoG�l���u�R?5C��i+��j�������|����N��c�����*(gW.������a�s������;�7��"��e�h�����C1�S(����������b�3� d=�p�������|9w�=�?Yn8n�e������+��)�����H6�*:���2X��{v�6!�
�����t0p�q�"�u�� /Z/�@��)�R�/=>0�L�A��-��eR��*,��v�-����\�^[&%)�R�o=3�L�A��-���k	��O��|��f�n����B�W��yEa�z�W�t8G��t�5��
;�M`������}
�6�p�{���v�������#����Tz��~�7�y��G(����4�[/.�w��������%&�tu�����;�4�.�s;������n�Ii��|pS-�^�'���,L�X���@X7E�R�z".��"�D`��@���uS-7�qO�"�D`�' (vJXO�Re�z"���"�D`��@��6����D�0������9R����0�����_^�OVO�L_��$���W(w�L[��g�ja?n� �/7����uT	X..Z-m{Z�F�bImxrux�'q��_�i���D����.k,��u�x�������1o�u�!o:��<�S���BM'"{�8���K���8�j^�f.���C45i�x\&��B�4F;C��C��K���������i���(���s���>�}�����>�"�@��s��A��\�i�\��	8��>5-8�;u��f�W��`f��Q��5�z����/&���{�{FQ�������=}[>�F��I����������s;�!N��v�]�(�I����������<��5�������u��#�'�A��@G���;�Gg��-yt���V������=��#�'�A��@G���;s���#�[
]H��ZAG�\�w>r�����6����H���vNi��F�F�[���o�k��4�\;��+0��������s�'����p�p����]j�a�K�Y�%^�cn���!�)������Tjeq�Vpx����l�K�����C��Azj[a�[2X�x�"s��Z�sj�����O�qJw��^������|PS0����<�yw���:��;{X)��B����SlK��m�v����k�`Ok*��U���e��,��^.���|'�t��[�Y�?���9�!�x�]"T�9$�}�	P����i����{��������g~c4(>�_�%q����{���/�&�c������	1�{����fO�'_$�v-��`!��p<�UTY��PaY���8��~�Q!/��c���X>�az�����g��u�$C�;N/�_�|���O���<3
��h�U�f�~����g��;/H[���T`������������)Ix�C%�C����>�#��u\��{�+��3n�r�T�W�?��
��Y���Ld'�/�<lN�53v/����%��=K�j�g�e���)X�	Yb-�����\����+`�)u�J��*�X�b�F/��h����5��KGQY5�W{�M(g�/�.XeQ{��?J��P z��������W����[9\����_����t>G�e@�w��w�79�A�������2*������6v����!
1>0tb\a�e��%c%{)�����b��)�P8H��9��J�8y�N�����'��7���t�Zz_5�(dg�n�r2�=A����B�IH,(���"G���
��-(GV���
H��6U�gW7�SM������V���&�������6D�hlv�gRk���%�IS0'+��Wy����Sr��(�eI�=��0\=<,t��>�TN�#*��X`�l��Z).e��T�cO:l}Z��Ji��	L�:�����(7��-&a�CA���X�t�3}FSX�;VB�,��mj��<o}=>��0d�a* ��=���/ap@v~��Y�������2�uk�s��u�>����7�����b�F�!�E��Q�f�j����[%�a��_�"��Qo1���FmC��{�r����0�Z�sYE�II8"�����Az9|��2]�*�w��wX�7�8���L��pZx#������*�,^����A%�"#�U��d���7U&�]*��Nl�v�AE��w�W}��0�/�SV�
�%���7�������?=���/���fX��
������M�7�V~ei�nD�o��L���J/g���q�����`@�Pi���cn�zZ�����F�?���������U�=���_��������=������|�hB����7��C�)�����O�wP���%�p�Yu��X�"�����)8������� ���
���������E
nD>woilHU��1^�52O��L��*z��k:�Q���5�����+�	�Q��K(U��AY��2�'��T����9R���K����,�~b�������o������hB���Q�:��0����y�R���4��P��)
4,����6;�
�����d'���I���L6�
Y $��IA�?�}-���7�h��\$b�!Z�x��/��co1�i�������
�����v�h�h/���!r��/����`tV���%��!�}������Q��!����Q�F�E����9k�~��M�����/����6��0�x����K1����H�/����<V�*��E"l������l���-�����;d#PPm��,w�d�S���Lw���jn�&f�
z���0�g{��.��o�����E�(���-_�v�b&���l��f�
����n�*�!��n��y^��� Z����w���q|���Z�xdz��e�g�-3��evr'�o�a�"���C����UbV�%��a���DY|��P�HG�����N=�/�����O�'>�^!�k��X�>���g>�{��*�we����%�V/��=����'Er�5wx��Q��M
�-h�g��1
���|���3~�bG���(����&n���U���V/�v-\��I�M��i�c�/���{��r�{��p)t|AO�/�"�����d>��I^�8P�|�)<]H���|d��(#<��|�u�����3��0�<P�\��I����s������������y�hy�f������6-3�+J��F�8�s|���
G���
������r�-y%s��ff�re�*�U���������}�~N&�48���+&����sl�M~�����%�W�-# ��>q����)�WL-�,c�g��p��,�,��Y���YFX��}>O,�����>�����{by��`,�H�i~�����%�}#e���1<��$C��#e���2�2>}���2�X�)��g��-�n����x�����R9�������/�C&���F�P������f�jWWn�#�jU�<)x,sA��P�./�K��I����)���"(��hN�������q�|.��/�v^��7�V�<U���g���q/7����^~*"���V�a�z� [=!�����p}��A�-KS��6,E4�]D3�@4y��!�D������NQr�w����PM!s2Y�~���2������f�?sy��i����~=����e�D���[���w�5^/;������p�xp���@�F[?��=�K�_��z@���@_���M���d��'����=2�7C�<���
����OZ�����l�_y��9���PW~--��1"hG�W��6������
:�s�VpF2X����3���@���������
�Y���;[6�l)��q�a ���p�&B�4}�v��6�0����N�C&hU5|U�;�����vx����5�[X�����>�������9:��$���=���>u���txL�����3��}�:d���}��U�k�9H�?Y����ze�����W�{$kL������P������?{��#&\�r��Zw��)����H������`�/�Jb�^�����
ux�t��*an��W+r�<���\��{�E�O�9_e�q����P��s'!�����������(��s���O�(zI��C�	�-zqN&5T������C��x:��6u�[�B?��qo���|���6�N����n_>�)m�S)q�,���@�P�B`���Gm\P��@��x���&�_[d�������"�	��_���]K�����������p4x��m�T|�p�w/�b�=G�O����4��[%;���T\���C�%���Ku�0�Z�4n��`��3������!���wD�A�j��n1<�Mk8}�<���$�T�-�K�Lh�2����f&��il_���M�����dA���nR��`	q���j*T1Zm�JO7��=M?�pG�����d�]�FS�g��,<<��+�x���Us������N���xA��&p������"*:,���:&r����=����,��)��,�wSuluR!��e��<R/4����f���*�R����`$?G������Z;A��8����b���,�� ���`���l|Fe''S^p�����5u8�������k���'l8x8��p�LW�������������BFRH����q_�s����.�Du����D��!�T`��/��_����A��� j�X^���q�.�x��.���x��A��=����-��_F�u�z1#'�������+��l��/�''
��h�������J���
Lb8�}r|��
-s�I+�Ma�I#��� G�������E������*h��/)Z������1�U��S�=��}�������3������n�2���w9����������
u.�����Xr1�;Stw�	R��*�����F���8����Q�A�2������&tg1��{��l3�U����G2�����H+��2}����K����u��6�t��4���`��6�7r�h�sF���b�+8�}�98��^��������|2��k�V��;[���c���}8�W{�a/�q���R��0��0��,�/�U�����v�|����Y����U������R�A5�>�S��c��)������8�+��?�����Hy=�B����Q&`���f��;��`P���;W���#�FC �T�� 
����&^��C
������b���Pp{�R���n��:	5�*�c�@�q���|�����'�u����L�a6sdG��N���7�z�-���lN��p��RK��Z�$�a ��y2j�`k���L</�R` B��x-��{�T���*�BI~+��EL</�R` +�_X�����I<�-K;
�	2�`�oN�d�s������<7cR��V��6�W�83^���@U��������8L?��8��(�����|���	�V���^_��O���mu"����#���)L��;�>��[���S�{�8WM<6�o�o����w&��&�IV����k�i�>W�oO�\N�x���/���h�� >�&�p���Z��bt�y����{��=�����I����c�+���~I�p�	�6���{������B/�:��bqQ��^�!�w�'9J��w�������	�����Q�dP��BEJ�?�������
��!�y�����{�G��O��P*%���f��Z�==>�?�]]C�=b�}��6H��m� ���}�C$O���Y��h�,�%."
����������=8�h	*-��/����ft��V�~�zB��	�S4+��zB
���_TI�h���&0���\O�.�$8��J��>$��2j�
�O�P�~��A���EU�� %�B� �2b'���s� z;~�F�����T{�^��� ����rC��L�z�>���L�G������	#~�1}E���5����o_c|��_����04�j
�I;���qq+^|k��#{���nqF\G|c��U�g��s����[	T6V����3�^�.��	t�%`���55�O��b���k�)R&��;{�������IVg��������Y(v��`
s�M�H�J�
F���w�1�vl����/=��H������<��\,�m6��^�T�3�Z�6��U�,s#WA�}��K�:���M�Y�����+������>!q�v@����S���"�\q��n}���������ngA!����R�>���R�J�������:��?�gjT�`d�����,��j��.u��b��RA\����������)�>a����	�pdt���A���
�)�����PP���vu4T?�)X?���v�n���4)hg��v6�O	>Y�,�a)�\�h9jO��sw`��A8����u�^�ff7����|yg�//b��~�~@%��aj���h�/���[��%�|�%��Z���Y�D>���v���p�h���^�&P������D����N
�6�mqlW����"VQ��LaB�6�p)^��i�_c����X���p���SC��7��E��7��������/i��Ib�.��O	a30�'� �<�[V���to|~��5�
�Kd��}��jj."Z�w`!�T�\@!��_�Oe��S���A7�e����4�B&"M�}��8x#��{�d>��0aA[����v��L-�c�=]���1<���z��d|�������$���|���08��T�k7�����|{J����/w$b:rAG�{cu<��e����`��������	��AE?�}|�����b�.p�U�I�U��:m����v�25��b�M�K
����b�3������u���cG��*�${?->g1���o��wo��Gb*T��
f=�T��$�	��&+����a�]�����=�A�0i�TB5��BpK�e*T���������X4G���<<&�62*��I`V��'���#���Ec-����u��h�j�kP��>���%��!M�G�	��A�����zf&�}�Sw��&A6�y���z@��j��Ux/��j�f��9�{��R��������sb�G3q�q
�~���������x S=��9�z����j��:����H1nV���21�+]���1Gs2�]O�]1W�0���z�������
����N�g��&i�8[Y-�
�d~�\���g���)��l��p0v������"1�;N�,�������t�?h��J�s���L��~{�7��+M��4������0�uO�X�S���o����JkE������]�������"���<�+{��A��P7�1�G��st4��P*��Fiv�}�-�>@{��kQ*�(��5����|<��T�Q�����w��(�e��A�A���Xi|a	\��K�G���x��#�������
U���f���zd5h��xN���Y,���bD$�5���%y=Bi`����7���4G+��_�`m�p�e�UW�2n}B�t0���:��H6�RA�.�qkZ+����)��Sr�~O�����X,U9�j�Q��xPSp)�z����X���P�Q���i�YB,�D���#���R�AM��0���c�q�-&�g�
X�
j$�P���_Z3����&����nyqz��+�
���	?\MV�.�:@���!�&��)���C'�����A�n�K�5E��y�*�X.
P��!\S�!�����;9��?1�+�<`\(g��N���*��"���TA����[��Y�[�������m�,h!�����S��}�p�����j?AU(�*���DdX�M�X�t���
�b���?<����D���kr�R�gS�Y���S4�����tYCA���^��@Q�Q<��>J�2X���;>r�p@���^�
e�<�yN��3���\A�sa���1����s1���sM!��MR�'8����yf��k"y.l��<E�
��i��3�Q����ewH�����<%�H\����?�����d0������)�96���B&���f��hP0���u�}1n��Yu�p��wg������3%Z��"��w���H��z�x���e�/XJA����b�N���Y2Am�W�SG9�
W?��H9��>�Q��>�_S�A�}i�����<�p�!.����[�Wv�p@���1|y�e�Zu��}����{�wom�2�A4���!�����*y�[�A���$�A�$�A/�~�^�|'>IvA�-f?�?�M>Ze�����U�������o^�� ��T��:7���2
[f���s���!�O!�/
�N���G��RW���������,���5��~�{u|�n[���I��Q����N1����#l#���Y�����f�5�U*(������-�����[f����V��d��K�6��*�����mf[c[�������lC��pY�������E�N*��f����nV=����;���B�[V��J��4|�x��:����w�w��O�(V{�^5�I5�����w-1�:����T��T#;��{��%�Z��z��j��jd?^q/���T�TS�aR�^K��5�X)��9��'���s9��nA���t�1����^uq���M�]��:�r��;p��)�Q�*�"[(�Of��|B�o������<��Q���/L�k���L���N�B%��y.<��?`�-�?~����a��^�6�����U���/��3��K;�{��~7�w4+�5�������	\3}�����Bj�����)��?�g�����A�j��E�U���2<��6=�wr�4�37
�/�huM-�����6E�)u�M��%��Ni��o_5C�%�a�(h�.�^���j/�ldY�*�^�`��U+�|7�)G�H��m�GH�o�w-��]J��U�*zL7�m�����MI9��S��A��`�ss�z�+���#[>�;2��	�5�m�����Q?�_d���&qF�8%��P5>
��9cn��B��4!��A+��6���3��*h��S��l�,�<91����
Z�+��p�/d���B�3&�
�+$h���n������}53~�����������Z���J�k�d��Z��������}9s�x3����7�n_��rp�x�Y(V�����}�r�x3�������"�pgpO�P��$_~�
�wg�CS����th� b�4�qO�\������t&�p��:�#� :~u
���7xA*���Am����<���)W�X
^*D�M��4g���&���,�W�1�wgY�u�C|Hm����G>����GWa�Q��r����U&�s+�}���dk|����8��-C�,i
i�����y�@����d��Re�T��Z��i�T{BS�A���Xw�	�t�hI:�T���k�����W��[%��o(�����^r+���\�U��n��xFS�r�v,�+���c��gws@��fe����j(�����r'Ow�uZOhA���KN��k�c1f��Y��o�1�}hw����A���/'����X�����=���/|���p����8t��l�T{4�������<�s7��fq�,���$���6�3��	���
�|g|���O��������^�<�,�kg����^����8���S��7s�h���D
P�v��Q�*��J��D�#��4������r����[�������&3�<��;�'�xe����]���F6s�d��`�-x��7���l������l6����%��������l��}���v�������7|��v19K�Jm<R�����1����
0�[��g7K��1��N�k���Oc������L�������
C}{��At(�����[�? �����!��b>!�����bN�8P�"���x�gO�������q�r6nC�chS����s.�l'nl�Q��U�v'�gDd��*�����=�A�v2i6�H�}/Z��{<$�"�6��g�m�h`"��]L�����Y�����Q��J[���LY�IYx�C��Kq��,h���p�9��c����)82�
����)�l�R��z�L8�j��p�2%���e~;�_0���
C����*%���e~+��!Z��S�m\��4D��k�r/���%��VO�!�]��f���6((�������?x����N����b��nNFpu�*^�=���0��0^�N,r�mMp���W�t��|�����Bhz����� {���v!�����������ES}>3�e2����BX1E�0�7/5����Ph�b�_t����._[Pe��#�Q7����o%^�*���G����^�>����l�wyw�h�c��5������ul����������cW7]|�
)�n�CW����3��<r�S�8���\s6R���������Stz��b+���HM5����<��Q0c���G��(�4�������*��m����������f��L{������9�{�b��+���Cqvv�bo\}����m�x1vG�ADilv�J�k��1����)�;:C�����?�����!���A�G��/;����?�|�
T��+����6S��Me��)pZ!��w)m������
�}*�����/��T��'~1�R(��G��o����NA�b��&o,u.�vB�]�]\����5��]{�hat�� [=�_������~��4����m�+���~B_���U���Y����_�Y�Q
���g�F�D��q�y��@\�`
���E�@F���E0�����.\�_�t���(��f�sy�`
\���SJ 7�~��?���_����x�W��<�g����c(7���7����9LX~��JBU<#�8���dD�O�EA�R0E+��2E��L�(cvp�f}u<��w�1����T�qo(�w�aL�aN�|�5�-��k���_�������{�9�5f�Q/Z%��F�}6�}���kq��J����fAvD�rX�pA��)x�h�5�����eR��4%��9����e���� �;������b�[ �^�z
w���YVf���"��u+b�&�y���������_���(���D�_sM#���[��V8�C�����]G����[�Y�[���m�v�E��'{���U �Z�����u�K���M�H�;�%U�u�-��z~��O��\�+%����y��@+�R{�m�������-�����8�$�
n�a�,���*y����[����`�;��qA�j�s6���S6��H�j��������>	Z��J���\��jN�
O�������d�bP�o#?�8�����9E�������(;����p��.�W�L���
=��;V���-������SK�=_�	��u�c�����-���x�=7�5c�b�!�zc���k��+�&�}�[����z����V���{��Uo���+�����X�{��Uo
3G�a��;�w�C���W��+����2������D�q_��1�
i�x�)s��u�k�Z)>e��d��E�+��I��r������I�}����\o����qLwS��,O�Y�I�������_��3c2>s�L.�]�si��e#
��!�����qiQ�a>8��(F�y��b�\t��u����-��C�����zq� \ �3.>`������*��W3.�����+�x&���G����!�a�Y���0x5���	9<}�����}J<�������z���
�s.��{�������F�3�7�l�E�qex��0��w/!���i�t<F����t���n���&:��s�J��s`�t�tS��4a9��4�������f�?I��_���{g���?�2:�?��n��yU�Q��R` �-�V�zO�uq��\b��^\��3�V
�S�$��vL������0�L|�U�l"	���x8��:�~F>+�����:���:@f�11h1O�:���W&����h���NC�
�9�g���v�*�4}K@�$�G��3���;-�D�|K$wd���'�z��3������zF���5�i:�7 �#���%���0�L<�����fO��5U������$�mW~��3���w�M*��p����GJ�GL��D��
�T��~7����'��Ipga~������X�v1���.����07� �[3���E�zA
���^[<�s(�<F���)8�8E<R�(HW;���|v��X�������%/���h��+�%�o�92��T�tg�m��B
;�PM���:���o`���C��F� =�v���E;lE\��k�p����sXT������O<�T����]���?/�!�����>�D�K���>��_B	_����]$�)���X���[Bp/��� ��L_��������b��\/�!�WB�ST���|��Dh��R��CP�{6���{�o�_���R����w�}g���!����
Z���u[���`~����o3��9�<��yL
z�������_�V��=Pw3�����R�^����x���ofZc��}C�tT#����Q�)&Y��N��l��d�#=mC�53�1M���]:���-�������'uR����C��5���WLF"�C�����q���������~�E����� 7Z��E���[w�~qs*��*�m������Lfg����2���O}��)�12�>Arv��`������������/N����7������|������E7<���[_?�`�
j���ik��W2���2���D���>�C�����^���he_������k���x�EI�z������i�;�k�������~�>����|:�����[��|
���4��<[z|(2������
n������=�!5a}69�j��g�gpo�6�VA�d��1�7����
	T����>3�&�p'�q�oC:���f�U���,� 
����}���������)9 �UGq��+�o��@Vu��I�8���
�w�`]mS�o���	�L�eL��������G.��
T�Ia��.U$g>������+���aW�eS�~���[�w���6\�99k�?R����<���0^�3/-�.[i�5�)gT���xU����v�I�����,@���@-�v,�m��>9�s�m���;�~�p��*4r{�RA5�^�����J�g4���v��<��JW��a�����&��N������>��4&��
*V{v
h��^�t�g�R�:�����,WAl�����o������z���?�����T
����������o��iWro;��rz�r:�@N������1�W��Q�TOT������I��@W��k}��e���
�y����t����k��j�-���h���P����e�,E�M*�k��� V�s�����0��Iv�)�<p��k�R��0��0��"�1�]
<mDt
�uW��DD*��,��c��#������BHT�fw%o1�rQ����[�������?�Ce��$����d�:a,��ze[j%��K���HDRq�����D� ��W����$KI'�t��X��g����U�k#�J5�b��J��az�?_�,Xf���Q�'��Z {:iylS1pH����b�D�y	�qU.��ke4Z���� �<�wd�'OPxN-�����d�E�Z���J�
<n�
m����e�6Dk`��lj�_X+.Fb����\�T	�����p%<�B~�o����B-�H�+����v�����b����|]�������}W5�p��[T_I��RNZ=a��`wM��m�U��_Dp���p�BK���C\�0>�����@����d�{�0�3�����}%��yL�g�b�L�~Z���t������Y1�|��q���eg�|X
�0uv�v:f���������������e-��@�+
�c��m�U��x�WP��m:��D���_�����k���^��F��*��`����(��^|�=���{
?#�V�e�sV������,(P�����1M�dhV�f���"������E:v����x�����R�N��l��*Y�p(=�e�~q]9g��((H��*������v ����W�����L1m�����6+KQV�EY�B-,�rNW�TI�o�-E�+%�j�U�f��$�P����Boi*��T�
�C����,���{�2b�2j��HE���"R:��P?�@��j����e��*z�������9T��b%\��k�$��Z!����a�v�P��M��dU{�m��I��T#�R ���F"ir<��P��Kic)7��hl���)��
,����e�u�?*&��rZ4��,��L
��('KX7u��>]7��q�TP�&7�1���Q��q�{�b�Z$vZ1@%i�LX#�j���L#��t[&64�K J[�A�O�8�����A�O(o��R������	ft���<��_[� ���{`�`�l�f��#1E%@4x�%��B�O��ecQ6����K��A�:� �/��R�*�G6d���p�e|�v����2�A3M(+=�W�D�a|b�L�}��%��R"_��z ����L�ZS ��"��)�:��f�4�Me�O7�q����%c�)&���W?wG
D�W���
tL��*�������8������g�<��"�re���4w����S���=����M��B;5�\��k �1�����0[�E[�Bq�3~����S�]�M_���9�1� )��I�@hGf���K
��/?d���_�0�����e1�B/��"8�����=�)x��	�� ��6��b%(�&�x���}�/�=�6~V�~���c�DW����~��Y@&hu���1��	%�����^�)Z�����G�L�����#��CXE�Cq�uEi�R/y�E�E]��|K|�e��8��<�{��d4���,W�9���_:)C~C\��`M���V
�:Mw1����/?��nE��e�E�k�+"�B�oE3;5N��l�]�R^��`m���V�:�Fs#���������=���`6�u��xi�e:��4�y(6���B^�Z��������
�	Z�v{l�+������SU� 
;����$��� o+������S~���.k���p� �):�g��[��&�jl8���Qu~nP�<�j����&��NaA+h�"f���Z��1���Fiv�����7��`M��aG�.$
�GP!�ZX��/�UR���fX3'4���%���#�g�CsS�B^��.�N�U���$�$R��d�o�-�U�i:��q:_��b�����S��:���L�O���Dv���ox}���e�����F
��O�\@*���J��v�
u�N�w/���v8�O��?����'�B�!���U��Y}�_�Ds��������>R�#pp9o�*�y��7(�-glB!1!�$_�L���Y�D����`{��T D���nt~�����@�r�����H �FU�JU�^s���U�� 9��q��*e��M �V2��eOa����&_�T�#]�z���vy���N%�N�����;�e���6}�|�l�A�|�����h��������������������j�K�(k����*���R�f����V���vD��/�a��(NEX(��������u�
������(]��!���;�
���_9��N��"t29q��e��5��M�RKE*��<����X2�If�]2x}"�^����ie��k�o�G1��Q��F4��j��@s��hx��n�G9z���K{���[�zY�-����
���;�	q��w�����)�c�R��1�~;��&�r�,�=��[������������~}��~5eW�GN�������u��s�]4�?{gn�aA�-��:mg�f�X�����A�/l����� {S=�VEV������_z��������}����_��O��/���)���_����o��N�Up����
"1a�/���OD+
��(XmTXEa�*Q��\������?��'�O���?���	-�*X��u�e5�������"��VE�����%����q�K� �#`���>��?}��_���o��8�-�K�&��A,
�W�&���'.P����`�R��}�6q{�������������U!�����
�I.�5�_%	X��\G�]�O�$NraI��V��C/��O���>>��+���
�Y4��oq�<`�V��yp���8��=y�]V����/�?�If���#�D���=K�4���np�,��o7��%���eq[���[h%.�&����({�X;~��p2�=�/��V� �Y���Cw�6K�g5����P�_c9VF�?�1�6
�2z�c�����
u>C�Q����PF��C}���k����_�:m�.�2�g&��A����0�/u�}�
e��o�>���^�Q����[;^}�yu���
��]��1���� mJX���P
�'�����pZ
5�Z(�vS�ZrU�4V�����
N^�"�� ^{���� ���v�5�D������.N��hd
�0�*��aL�\'O��)�,k(��Rs���(���I�T)xD����5u����1�(�\�3���|f�p
����& �DY`����k�ZF���F'�v��:��}iF@F�O�m���1������<��Ge�\�q�����1���iu�C�yb��p�pb�+���#��rV&`�-���A�vx21 ��0�h�
2�h =�������P�e��CU"^*JoL���C����T�=��]u�9�Pi���
�jj
���U�m�x�=�b�~�J�6,m[SrrP��@���d��$0�X�2�����*��
���%������TX�_��z
�j
�������l,��;��X��:
=����Td}� #�����[i������L�@����G�r�K��w��a��]����c����w|�[�fl��������mj"��(�d�&8�%9��Hh+��VIxX���-���lv�|�EC���Qi�%0��w(�*P�fFB�ts�����:��=�a\�A����A�����#�����f;�}�F��Bz|xwb]]��b^P�A���n�������h�����Y[4:�����m����R�\,�D���J�h�����V=�y>�`��������U�<��m��5r�F�oH4���4��je��yU���8]�G��\�f��99��b�7��	"����%�M�O����g��3FA� q�)�������`�_>�I=\�N��O�����J)=����w��S����J�.X����_@z���HU�x��|��S��e�sP6�/�>V����fV�D�A�
`��0�F�W,D[i�<�'	O����.��0�$7���x�1�����ry�
��d�L;����O����� >>��x�>F�v���g�c�b�o��]�^a����b�^�%E��\N���w�E~��o��y.�N\�����[�pZ@3!5
��rUC\���!0kp��\����-R��)1X����3�:����Y;�#a���g�u��x����h)0X��Ob�u��f����T�����!s�uP��v/�h�~4�]��&���p"��E7��r���
�����[�v�]S��v�q�������+��f��}�Zl�,!��	��&��eW;����"F�f"�a�����l+����2��8����	��!�$u*�k�)�ve1��QU���8���8�$��h�SI��!��t�rNc�KcC���[�c�_��(������]Je&��S����N��\F������bbhO�s:�V�������N>�� ��j:3�i�s�sJ#CnBn'�qN���y�$���rr+Is���v��g����������m�$7�C��`���=9Cn@n��_���9r�a}_Nqd�
���8�	��!�k�d9�9��i����R���w�c+�~�>�9g:�$�����:�/�u4f�M��wG�9����n��m�m)�q~Q���v��n�=�|G�[����8�$��#��A�u
��Nk���Q����Y� �@?��bF�s���R�\�E�*X7���r�P�fC�5������1MM�	���eO���'~����R|c��~y��:�u���f�[e�G�x�mY��.I��'�[��/��/���l��f�>az����K|~W���O)��{��%�W��.�?_E'���i�*��;t��O'����D�76�A_4�	�>�]�f�~�����]1����v�=z���B������?$b��G�A���=l��Xq����+���GE���s1��� �����X�pz��-�Vw�=�8�`����l}WN�d�u�i�%�Y;�#{Q����\�xk0kpdj}W����NP��
pdjuW������o�fm>�La���ZA�����<����N�$���T0����t���v����w���������� V@c�N������}�8��qPo��v{\��=R��������~�CA��s��cV$�W���\e��E���he���)�9 a�
��$�]:��s��{��f�����=��M&'�Y����
�y3��b��WR.e��yN��1^eQ�*������L���9
�p���t�
��I�<��9�CS+�WX"63z_�
"i�&;��h4����i��dK��!W�)!8�����fJ����0�=��'g�	������30�,���7.�g����wG��5� ���s�)o�X]�s���be�K��>�S��{`��v������)c����u�4��]���};�7N�����[oZ�y��)����!T���s
���*D��M�Z��e�=��]�aOy�'�d&;�R$��O���o�vY�
��~}����.�L�QB�S*���
n^��q4T�����o�� 7h�VH�T �M��9�1GC�l.*�������Z��x��*`V��G�%�j��f=p����qA$	�*Q���4t��'AO-�U&��X�WtM<%,^xS!k� Bi��u7�t����/2��n�qrZ�7�pj�-?�X
h"R���� :�~�H��(�rv�\]��sL��Y�a�b�("�-�Z�
����V~Q+9iYg+~�B�I�b)7K�
��;�u�<^����������`3F��Bo���I��M.��##;	"EQ�P%���=��j0�����?7�]71�'�~_�gH���&�d!e/>��r�8{O�yN�i�/�,��EuZ
dP?!uQ�'����-�e������x����	J��q���!�6�������b�oY/��HX�A��oY@C��)VB��Os����I!����l����|��|�w����Dd�����&]I*�3R�A���kf���G5�&)a��:����}�o���Q�����d�
[e��Cg��vYlV���1���d����9
��h�o|���o��\k�A����Y�a�=�)���4�h)���:;��go�R�w����f��2�-��Nzv�R�;����~,�f�F�C�/���;��{<$�b�G�^�,����m��%o��.�U�
'�t�'��6hE�s�������OO�J���e���q�k���9���d���w��U���ZZ������P*����`��>��:Q<_m=�v4�@�_mQ�&J���5S��<���q�>&W�&�?zy�;���'���TPR(Ec���kM�����J�q�p�����|���Ba�\��>Iu��"�����������:�����]���hX�j���Es)R0U0�0=����%�h�����6��s��}�����q��}?��. �f"��lG�����n��gjv�;4�P�
��l�i��U;���z���DI�Me����H�L���wy�s�S<u������1��8�G�n�/^�������E��%9C�C[]�h�e&x����i��|]$h�i���(b��Q��8E�}0�:�����_>w������n������?5Bc���7�s!�8����m�2�ub��X�Hx����$"��q��M��O��I����������i$���>aD����HF3�LL��4'��[�"�g����G	����7���C��g��k��{A��'�V�h�&��p8]�\;��	� m��}����������W�Z}��u�wU���;�I���;�f%���y�q(��&E|W�v����!l��#=����P�G]����M��wAL���#�WM\R�=�[�7����k���_��f��?���S���5�Yy���{
�9�s���[���#pP�+�z�i�j0u,G���\}�gyw�E�W�@5��7�/����h��BU�V��k=I�9�r�����O��O)}����
j��a
X1�Q���0%{�����1r���W^�8W/��B���d=w���L���V{(�u3����_h��6xK�h`���W��fN�~Qi������W�({O������OE?[�7��aP�u�=�<�,��O�e�V������'_��fV�y�4�E����&SFd���������vw�h�\�G���v�l�u&�����������E����h��^�v��L��x��d�}&=>z����������������gb=��l��O?�l<����m�[l&���
`e6[/�s�b>�0L�3`����}Wm2��L:u��(����<��XCgb3 ���J��������9;�.�������S�OzL)���h���q����0+z��^q�����m������wwP#������|`��T�@T�����z� :�/�..;����UoF&�.W�2���M��"�#~����k�VP�q�!�C�0!`���|�AN��#P(��1@�ec<+���zt�j�����N����K�OX���h�����5a�3����6�k��i>>^��{��W����Q���>P��	g�������$�!�(TO��G�s��EaH�E�����'+��g��.�����9��?e����1��Bp�/���e�C��"y�2|�T
u���
�\�o�AG���o~����3}|���a��J$%
�!��Af�O%�J/������d��[A�"�X+a��iZ�h���mJH���P;h�c��K�����u��~�"~[^����G7�����G5e�!�Bpx�R��'E����Y{�^�����w� ���;rpr�YE��~������D���A�D���	e��8��A�����/(�����C��^����t�l�CU��~TK;��g��J;2[E�k���i��J��x����]����=+�5H��Y�
�6J[���}0o��R����h�Q����v������7H�6J[���}4o��v��q��68��J�����fS(|�Vxr}B����m��0+<o���Wj������
^	����vM+|�V�>|E���e�W�0���]�
���������nYmT;�]����1y��0�����MY�
��vT�M���k����M������S1p~t����r��%�F+Q�J��4�DK��u�oKo���QQ��[�6W(d.����+�����GA�������A�\��G�s��4aH�y{��>mN&�/����S#	H�%�v
����c| bK_N���X3�.l0[1�h�^���3���i�^���~T��s�4�|i�J������+*&��P��D_
���������{����u��������&|������m=�M�����+�E/��#0�g�K����R.��7������b`�`H�� o���U���������z6��8�O��DtK�v��?z���!&}	���������|�����d������	S;�{� n|���|����C��5�d���euD��G}�(<��^�\�v��u^n]��{B�~�O�N�������7� �@%��~:y������Z��zW����{�J��|�}t���"9�b�,�C�4���86H��4�wi�'i��4lh���40������B�*��s�j�ZK�E��f�Yk���F��s�4����hR���
cP5�B�N��A�~�����q�:�`���v�Y��ga���Tv5���5?K�OIy��H/�:������!Z&�D��O*���W�@P|n���������y�C����%��G��t|���ta:�r��������{	�4>\|`Y"�`�7��t�e�I�l���pp�����@� �~Sm���gL	��W����H������JsV�d�A^���MY'�*`u�:{Qn\������B���l`�����Q�*�K�0)x�q��6����������g+��9y�]�C�0(z�yM��]��BJ�_N��GK��o��M[/5o@���W��r�.�)�R����#�t�z�CF�KO\U�'
E�dk��������P�5n(K�_���H)�����t���m�I��q��S58�/C g�������i��I�� I>�k�K����*v�3b`���g!�da�����Q�����;������|�������V����+��7�����Jm�q�k���c��F�O���Cy��0�V_$J����8�eeaX�U��&�k~�g�]��(}{V~t��%a.{@���m�t����
�����c&��P��������=��k
�'�)�����fH���7��rq��:��{B�8�����P�@l��F�8SK��Xh�?j���Z+�}�Q��iFan����/��
t�����5L_�z��Q@�H�7 @������K,"�"]b�K��f�U�q��JB��[N�6ITmJ�$ /K��������h~�T��8�-0�����Q�g����+�S�J@�E���h��]d!+ �eW%�#����j6��{8����sL6
��Y
��uH�S8:,*
���0(�Rf��_����E�����S�z+��Rf��bZ�Z)���<[y���j�a�"�\���9&�V����ys��Lv�H�*�
�R]����e�Y��Y�@a�d%�:�yY�_����)���(|{��lfc~-s�/���{�a�r_��e��8Qpn�@�h]T|)��
u�%����3a���k��y���$�Q�yW�������/���NdX��o�7#06wn��V�X��`�]��l�UvbrN��w	E�At��x'�� @�0�B��!��2,�=�R���x�����I
�aV��r���&N%�7���_����3�Q��F����wt��� ��D%��8I����g���(�v������N��I��0
������`$y*3T��U�Q��J���Ln��xY�B3���?P���������2Y��0� n�Ns!���l�v��0Z0H�����)��u�-~��]*E�W�sY��z	��S�b0���I����
P�'Ki��� "���J��������|����B����?���Z�jc�����"I�mR����g�%��k7M�RE�|�HPM��E������|4
�������|PJ$|�U�8��U�:����'1F�J�l�O����h)}!���Byt-��@��g�Y-�B��i{&�Z��*����T?��_;�E���p	/�"P��Q�!��@�7&S��L��D��b�V�[�=�b�baJ�U����y�m��_��iFY�n�%=EW1�C���n/~�T�>�`�a��i�IG��#I,-�B;N����u$������i�O�J^��Ly���������0&��m~�0��f��N�'���s���c2�,%��w�������
K��'�7�i�������#C�2����b<No��<2�.C����Lw��ZqN�S����ST�B��]����$ix�������������w	�,����|�Q����u	r��q�%L�D�?�&�z��c�K@���hf?w�/��[O�����o�����$�0U}�iUo�}�{��2l����bi@������@.T\Dv��,�����8��%���D,�1��<��Q�Q�<��eB�RZ!�N1AL���N�[���)nd]�C������Z�'�� -8��A�alE�i��0�_�o`v#8�@"`"l�:�N9f��d;?	>S�%!y5hv�]��0���<��� ��B���8��4���� #��Ud��p�Z�C�#����X�E,XX	�Z���*v�GY
>��x�E����y?"4l~����D�0������Tb6�u�x��_T�PQ��%�e��-���W�{����F'�eg)����}�]7��� 2�1/kc��&�_{WmRi�|!%HI[�#���2�W�;�taH���8,��ghZ�r?
>��'��(�&�'s~q�/��=�-L_����O4�_���/��dV�4�4�"L������tq�d}%���R�q��{���9>��Q�*U����!���w��b ��t���q�r��\����$���W���(�(p���	�E�S�[@`ly�ys<��C&�0����"��"����]O���t�k��a$)�4]O�+�H�T�Vh�����R�:K��8_��
��D;�`��)�NZAq��n�	���l#����!��)�SP:^���	�0��~�q���A��h$�����7�(�B������q*�>S~q��G��>�������<��@{�)u����y�����]\�t����$b��'~�>��Iy\�'l�� Hz�X���>C���@���
�����X.��hL`�G�|�t�7w;(����jE�����t3��;"F��wea���UajC8�l���9��6�*�����,"����}�QNt��A��W���~DU�S�����%8�@	��q
���<A�bx �`�*�O#�C�
GHU"a7l$��THU�@�!��=�U1������*p���za`j�{��=�ruzae�����i�r����1���X(��a<��kqA�
���1/����2�Z�Q [	��u�`+R�#"yDd���
���f����!	H�zn`����D����s�RD�D�qg\�'��0
��$��*l�a�c���b`'�
6o*�G9Z�Xr��p���[K
�M���v�j
�p�t6���
b���1�s�@F�K\��#�*?zO�b�V�\���U9I��fy�Te.8?��4a:��m�������t�,�����S��!)����v)~����>���X5�Q����Q�[n{��:��`��Q�]�o��*��@���
�j�?ZnD@{�o�7��P?��V�t���k��o 	��������D0qv�����hS������W���R�Z����HjA���Z���#F�����-/o�c����,�}�5�_v��Mtht'�E����@����4>h0O:����[[L�xT�f;�K\���\�
�����Y�q0��4�i���0����n�5\C"���
&�c(}f��b���]_1xeL��:�6�����?T9�;%
L7Pf}�#8�( i�\D�oZ3I �B?zNN��y�?&�����w2a)yFl|k�t���Zj?P�
'�p�a��R!7o�q��T�����>������k��T8��E	�am�K�ALWCwd�>\qS���]�sg��)�t��c`;��j��z�@�G7�Yba���z�^��X��A(\��
������'�p�cX�ly���j��z����,��Z�hccN��6��7|C������9���`�<��=�����I1
k��k��l3z��&�v��c�0�����$��0�x�����ET
1��;t'��F��AJ�F�r�(�uF��������(b��u�iC��~*w�|B�j����}@����N�j5"�����������d/�N�o�H����7D��\��"NCQ��y�z0����`�7��{��w�1P��Y��0��c��� jYX�F1�����&5�!
��1��7GB�4k���# 	
��C�Y��wE�}�KA�Q(��6�@�tjn�v��IE��ac�P�n�������2v�9E �qX����90T�74����F2�����8���#���$�C}��3�B����Z7����]|� �(	�d��>��{>hO+�Ft��wms!F�u��lh��-�/{���	r��@a6�}T9�oR�����y��RD�n�����(p�0�B�|
�O�5*������v��BP�F�kJ�Lc���ghb�URgY�r����~��v=��.��j��e]$�nK�����
������S���ko�^��f����&�Vy���]���W��WS�`����fy��Ck�5eJ��C�?�jeO�#�;��@,�tN��X"�nki�_���������~��#��\�#�J�<CA�#����[�=_������e��'���1�k��4���.]e����*f+�T�a[4a� Fi�9����FzH�,���@6J9U�����T)��%4��J�g�������1�1}t���Std�%��='t(���B���M������}s�����|Z�c~�������n��������a��R��F��\]A�����	\�l|��@5y�?P�����#�k9�p��y<W�������y�I#��T!�o�������T�iE�3���)=�E������6��z��E����`R�k�^�,5?P���Zjk����R��Q���Zj��d��+]�0�qYO=����B�3��	tF�f�V��(��,��6�P�^���0�����r0)j�������z'����
�?`Q��5E�?P���Zj[����H0BQ��e9��&E���Q���G�oP������+����u-�a��M��lv�4���������%5�q�_�FG����7�1�x'�����+Y�b��bl���4X�N����A�m��1�axyp��Q�����%
pr0(���~�x(^$��q*Y��Q%�W��������e-C)\���Z^XZ,:-�����d���-p��B�Ij0��.S�V?N��-P���--��J�����������--����
�kzZ�5fdl!h�����������dN�������-�{ZX�������	TA�M�����kHN|��{����w����TOC���?Z��[Zl:-4����������d'el!h����dhX���A�;Yc'�zA�M���`����"���dN�������y-O�|�3J��8k���b�(��=���x�"����S�b
��)\��"����)�����}�<4��_uG��L9�E�y���?d)Kx���(e�R�����I����iTW�����C�2��]O������Z}[�gz���y��qTaH�b��e-8;=�5��U`}(�5!j=_�W��/��K@�_����GK{�����g�p���6�����jaIt�p�5X�e���y<��-�����Y�%t�"����G�H6��i�r�����
���2I�J�.�d����E��8\� �W�w�u1����2\�9�]�B��2[�q\D���-���@��z�Q�5��.�*V��l��_����&YN����8��r��y(7Y��Mr0p6�L[�|I��D.VA^mpN�{�(��P���h(*��A�E`k���aS�.d�
��u`*�ZpdI��Y���9k����qtj���t�P��P�!��ha���Ak���AC��8gcrhv��)�qg`��0�����5te�G<����vb��2-����:/����r�+=�%��i[�c�'����������b `e$�U�D��!9;�Pd���]�����-���������9��t����r�i��##�Q!�EG������qHX��B����b��E��m�b+w��F@��<���~o����#��GS���7���s��@���M8���.m@��(2x�~�>���z��{�^]�{|�j���{����lo$��j��-#;����z���{�z�P7*���<���V�T�.�*��f^�s��������]��<5>7�;j��\�m<�����������Vt��y�h�$�a��;}S�5~�Jg������x���lZ6��	���E����-a0h�]�a+���is:����I�Z����~�|:���mNiQ�p�:���ij�Z�>�K������d�������D����)(T[�<{�s���&C��]�	Bt��38.Gh'w�.�znL('���U���Ct�7����*W�����$�����;tz�S76�7&�t}��/���O?�,st>l�}��a�K�ad�q�c�p��|�~:[���C��m��T�_��6����|��]��5E��</�V7+m�GE_	�����5�Q�{�g �e�G�e	v����C%�~���ke�~���HH4�H��|�]�I�Q���%����������u������~g�J���L�D�0Hp|oy|���@������9���k���^l�/&z3[�p���~
����0���5���'�_o��=��m��U����B��6�\0�_L�f��C���.C�1x��=&����'�IJ�V2��%�����ny�������#���S�~$�@Zh#�C��t������r2b�@��\bs��0������3^�0�b����<��������%��E�s�����!�-�^�������1���u��s��^���p���N�6D�i��=r����\�N%�%
�N���#/�K�>����1|��Fb����Lu-������.�m���h�e]Z�k���E�h�oc��u������}R�D�${���2A�l���2���@�z���yA^��a����/�i`Y�z!��@�H��@���k~��q�{!
�^�g�>Q����_��[���w�����.Gz��v�X`����?��&���~��d�����udd��`�����%�LK|���h;�<�4/!n(F`��a��F�0��z�2������Ww���4<����|?Y���4������Dd,"3�n�������|#=��~mBHe�'1�4};B��@��H�����^�d�Q1���S�V�	aR�$i�I���a���>iD������n�|73@�'K��7YJ��*\�.�FW��B�8,�#�����d��cfG�a�H
R#S�9����'�7z���u�p�H��#��:�]q������tt;H���wnDp'C��j�S�>�{�.�[?���/A��~�S�����m�'���t�08i_p&���8�
����]�0�_[R�))'��FT������S|M�����]���gshu*u�x��RI���o���l�P�����A'����1�-�~��G.��8��O�����������h�v�{�y���5	��������p��4;����.x�r
.�_�0��D�[���?����e�_�������_Y[�|���������R��B������9f�x#OW�|
����$����5�$�������\�OOa�d����%H������{�8<m���v�e�����m*[*�<Ug����t��6���+\�w�FQH����4�|������G-�P����F�w�]�������&
�u�$tw�g��I�G�+���i��,�k�����Z������_����������������7�CR��Q���10���h6r_�cV�Xk�&�gpt�e�[����a>#� #��Gv!��n�|p�P_L�������O��k���D5��������O�����{���@�����_Y��-�$^vN��������}���N
�-����_�Q���]�-Z}�M���E���E#?����R��|����e_��B
����3�Jz�W�����o��;���Y�l�N�Rv�9-_M�:��6��3�ur��|"G,RDn����d���v(�R��\M;��������u��_�����[���o��fU1�7�! �;� ����d?1Z7$o�&NV�'�D���Ny�uE�Z��j7{T��!�z��+$s��MknJhXA�>���"x&��	!���!T+I�mA������ ?�h���{?���$�z �BF�2��4ZFjqX����&%�J���kBT���>d���EJ����d1QrR�4�
�i������t�Hx��C
��&3���23��F=�[��l���}Iq�}}	w/�t�<A��L���P��$�
����E����l�TWa(���liI�&X�"j���i�-���A���%?���B��$����*�*u�Z�x��������>Z��r�;����h!Z�"��w+3HM���:�
_U�<B�%�1j��6�G�J���d�<A��;��]��4�6�cR�!�mV]RP#H�E��{���wnL�8M�c����6�@�v=�����������<S���M
-�i=m����	H���q�L$Gj����P�g��1��$����M�Sfs��rdKZ���+�m��Z��k+D3G2D����B��_�� /��Hs#C����������O�Cn�����s����.y
�6� <}��P�UpL�A�T��+�&���u�7������dFK"v��oe�ufCAO��Z��8XCv����`M��rV�\���0J�]��w.��|/���hI�*;����^�)���	2��)��� ::
�JN}'C�4,�����c����������w2s��J[�����&��?yp;��M�����':����h��lo���B�4eb0�v�(S������Zy4V��X~5��t�
�2W�����&*��s��^�v/��L�oD��+M�Xf���!���G�|�������pp[������'{"�����2c��A�^e����k��n�,�z���D���Nb�������n�^�j�N�.��"PT�>,3���6��:�^"J��i�������2�";��71�d���i{�i�wO����d?g����#.w(��<0�H�`#��Wy����hu
k����'����.��#���=�@�������iS��]�.�hZi��i�	o<Y+������w1��h���Gl�>���@�9��cH�g9��9F�l��q�f���d:Jl��J5�o�O��M����e�%�O~z+���(�%b �NF�O���
���K����U��gs�L:���(<�G��G��?*�Rl?F�����]|���|�����Qx%3��>���+������^���|�o�`L^��en0����s��y�
4e!����K���������|�9}	��Cf[,QyU�\����>�m�����<�iw�&���n�}~)����,U�#3�/� I�BW���!xm�5��&|��P+6�m��B�"j��z	�������4�-E���6��b�@���0��@��`v�\DI�������E�R�v���+ni�<u�N~����%i|>�1'����"��/�0�^�}�h�����kx_��JL5�<�o�%r��%��XwN�|�V�|�-b=&|�U�v0)����[mk�a�Mc�
JC��z,��i���!"�y�K+�V�e�K���m\��
n�"���5��j���X�0SGR`���h�B���W���f�5d��F�����id��6�K��QG��\�:AI�W�Bl��{��e�tb��[�N�yM!��IKd����F�3����2�
�R`��T���7
��E���/!�e{�4�Qv1����ua	��}��y\�����<_���,oGn�Gy���	���yXE������u�iq���-�]3T���N��A��v1z`��Q�(Eb�(�^f�r7��x�-`E�E���&���������x�\]z��%;"CoG�itYM����������B#��a���eGR���f�-��W�A��@�x���q�:����:?/'|����]��bt���7�V2|�*���
O�C����}�|�!P-t��������!K�,Y?�Nq�A4�da�G�
�	��C��X�}�|�A$��R�g�
"i��!I-$�-��kIZ�Q9I�� S~����	�j%J��e���
"K]R��&���/�����(�&
��-��{
"Ik'xAR|�r�|r��@��x����� ����V�������=$�������5�$���
{
�:n8�?n��	g��v�������u�<Y��L�l���n�C������O}���q��7j��RI�:g�A2�*��/��3���*��VM"QX�EK"Xoe�:�l6Wo�������!'��OI7�h}��p��7���9��%�p�����%H��o!bRt���c#�r`��|y�	�YQ�����$���4�O
F���Z��T�yS����B^�w�3��,w�k�X5/�D����@�6#A�%NC1[��'
t�7�&,J^H������-���hiW��gyJy�JUb'7��e�7����)��3#Z7G��HA�R����_����z������� WG��:���:�Xl���;{B=J~�^DzfGpN_@|�+�����Cs!$a�q��)�O
��������k�%\����_]���C�+��d��JiD�E�OX6{������<�k@�L���W�x�����Kb������s��4x�+8��� ���a	u�
dd��������!:�&%�6��J�G&-~�RB����i��#�0$#���L��Y:�+
C�TM�!��Y7)��<�FVy�@���y���W�d��V��!��r0$������4�����0��?*D}�Q�}E}4�"X�iC���J����E�[�f�"u�VD=U����E-�����,�L%j��(jYFEm�R���P�(jY&EY5��$�����?~>\�T�=�������T�E�3���4�$g�PA���s�2]L��\�g��B�[zMu	����
l��m��8��.+�����5	�7�����<N�5�Z\>��v�C������wT�n���|T 8��R����ed���V���%�DB��@.���H���"������&)�,��`&�n���iXt�2O�P
4}��fn��-��t�^���4'�y����	�� ���7�m�H��2J�}���4"�e�
��f+��]�� �����D� S�SR�i%d�����(���:jR�9���R��w~�-���_��L����������1�e�GM��6�M�M��6��i����%�>���
,����a�l�%���0Y�HK������B_&�g����c���/�O���L[r�+}��V��7y�U���"���Q��~*�g"ix7�L�� 4����w��u��)<���h�XM�	ye�xHZ��n�����}7����-����z1�� @^R=�.�NM�>�X�l2Y���'�#&���|�.&�U��4�K�(&�cRuj��a �T�5���2cq�����������UC{
��W���(h4�W���#���#�'����x��������9�g�(x�]>P�U�|�p���h�>&�1�S/��r)R�X6�����)P���eA�������%����&����~I�~����}�#�s���E:n]P�M:Il3!����WV�A��U�e:�x�w)�������H����pV�sdr��BDa�Rd}��xQ=�,{UN����G���i�y=���;d�J�]�������ij-fM4�*��\��_���i~>\�3'�Y�m�2�J�[/�����s�L����������F����� ��Jll����l �,n�,n�)6|���n�a7q+1�S��qV8��J:������3���(�����o��|���1��O�S��xA�O������!�J_� L����.�Oly��iuQ!)!��<����7x0}��*����s6u���T�-�B�N�Y	���w���f����4`�����]�{��)���'o�f�E>n_jc����8�+
Sgv���SD���|X��4M9�&X���%>��(!:�%9�|�'`�&����a���U=8��ke#kSFC82�<�������P)�p�n�hZ��c=�9�E!�� 5�4�W���{,Q<��}*��gc,�����T��&����<��B�$Y�_	��2|D�c���:
G�S
px�\�-B��;4));.Q=��|�f[�
�qo�5�H�{c�����>�H���D@h���Une����K��RM����b��i[/!�P�G����zZ2"<jYo���>k"kQ"a�/��$1��L�������W#����R3U�z^"��f&�6e,����m�%o�p,��Mk�;.�R��f����fcW�&�8V�Y9n�(
.���~��%\T�$������$��e�C�'�P���ko[��L��_�h;G�9����3N�l�-�>p8��� T?�#�0�a�p���i�'�+qQ��aI!�
�Q��j�
��=��V��-2�_��,BQ4���R����Dz8
�1)�kCq�;�Ex#.�s`z,��T��_Y{��4Y����#7.Q������S�t�TT`�4_L��	�o��4���eo3�z���W��U���{M&<�%���q(#W�����/����o������
�����4��it�K�����6;-Q=�L_��v������`g#�r��n�@�����n��������bN���[�HZ�����I��&����!l#����q���F���2e��I����C�F�Wmh�i|�EG������I��_�?I�9�r�����O���:�����;�us�,@��
�9�bd
\��O�e�$&oO�gZ��q{
�}uB`/�<[of�MY��E$u�����A���/�uI���G�7���X��(T�^t�Ym7U��
��F8Ec��/�������v�]+�.�V��XHr���������'���7�<�Q��9��a�_����������0�,A�h����p�^��L��
�#o�$"��^|����#t�;/<x�o\D���)�P�����V��e�������7(���|��BF�.��������;��[����}���[��`�[�|�4lM�����o1
�Z��d+��5lM��F��]G�CZ�e��V���I��:j�����V��n�:�aP���m�aV�0|�>�
����Ki�/A\^C"�S�/IV2�=�/��D�7����3�bd�aO��7�P����|_$$?�(���7�e4[O�V�x4�]����a��S�~O����O��w��Y���kH�"��5�����}75�#�)/;����e3�8�r�3��G��hU����F�m}�m�K'�����;��,f�bBIh�E���2���z��"~\����)�Z���,�p���H�������9�uq�Z�-;`���@XF��^
��=Y������X����@�/H�O/�;�[����^hT���������0�dN���Ot@@l&�A���m�TK�!x��a�Vl��E������9e��'y����������|ca8-P�&@q�9.U�$K�f�B��[�G�|�����nn��� �� �o,r>.���g������S��JD��
���a�r5�p�xU�;,1��*�P�"���V�S�S"=������J����IyP��E�!��*!���il\�E�=j-�}��y>��������W���{��h����r��h!�����Q���9����6����}K�`�Ys�������b%��#?���x��3��|�^{��|}��w"���#��XUA���>H�����b���8U��J����G_������o���<mq���^E8�������x���T���~8�)'�,��H������K���\?���~I��J����d�����0���"0������}d^�?LW�	`�[������j�~�?>�x�Fa�����_��p.��j�!���?�����v��xH��e<����?>����� ��h����8N�W�6����-�����a<��hOM��.�_��i�GY��8W�%���$���w�J*�
������;�s����+$Ao���o������U�Y�c����y�_�����N�xX}I�%�8�����l�g��B�`���t�l����������Sz&��$�� �����~��z`�A.�/.A�����W��w�����((L�CB��)�<dNp������$�dS�����Q��������lOA���@Rb��(�h��@������;��t����k|���$
N�1����Q^uL5��m�H(��]q������8��7�+�b��;�>uX�D�F/�1����?��L|�kxI���-�?d�����vG?I�����&�'�Cq=s����L���@^L�G}�����/���$jsJj�Fc�(1��\���@:��\�wz8���������[���~�\���]�L�m���������y����r
�%y�{	����AxxI3�	Z���-y��rV�������T�z����{U`Y��8b���J��V���rC��b����$��dnT5��Fr���qB� �ZEb0��x����+�a�4
���R� ��,S�iK��-�$/�����v�fh=���chr
M���G���1E�~�����8���_���2.���$<;_"�`�}#W�������l�2�,��L�����s��K���C�U��d�ahZ	(�J@���Z����f�/�eX�(���w"_TH{#��`�����f[��;�T>�4l�
��JQ��+�[0�p�f���p�H��������F����)d�d�2v�7�������8�������BG��6�����4�Y��9@������08x?���p7�����2x��O��Oo2��	�9��bQ��@#���KA�ZQ����x�&�t��C{�S8�����(
��]6�� �������#���eo��my
R�m���}�+���d�9���{$Y��'����33����%���;M�|����
�H�
�Q�����^d��+�������|+��%8����\��!Oj�`�Sj^<~���� [��f��[f���$8e[�o�������
h"�6�~�6uv�f������3������N�m�=��|<.��4j>~��O����}i2�>�7�f��mL�ud�����bI���?T��������Lz�~Y�	[���!y��Kw�e��� ���|�4�F��I�M'"�L,.��n��/ ��;��r�&�������z^���<m�0��
��+G�\v�P�v3�0��G'J��D���AF��� �/@�F�t�0)��� *"*Jm��Ey+��!�h|.~_:!S�	�AdDd��0���V��W�3d��NGb�� 0�,
���w0��|3������?������oB`�6L���
�(y��Rt�u&S�
�AlDl�a���X�6������4�%��R��w��<R���(�`Bj��,��^�)�4�L�����$A�8A�l�w!IH�H�Zc��{X���N,�C���s�t�	��@��!AA�4����=+�JGO��4%�+;�����G)�)�b�5r������NJ>GQuQB�d��0
��6�S��H�;�cS��AlDl��0�S��6\8{����!��@eY��J�a�Wd�x���G� E����n�K
����s������"<�&�a#������c��!-�l��S��'���ZD�,��MH:�
�6L�|�a��L���;?����'�\^���cX���r+_����{�E�Rd�fi�R���@�08�[�/l�Wf��r
#
q�g���H���aa��7��t��_.*f������#/��YY���Y��I���B#�\�C��|���g��Q��6����mK$0������pi��D�;`��(L^:�����,t�W+Xp�A&`��'@R�Z(N�����*_�T���.'��E\�o�6T-uo�)����xM������[��[��/����?������������0�����$�L��,��*���$�n�WlxW�^�
)$�1��Q�m�?�9O���y���PV������?����4���Y
f�d�cT�NT��S�%�]��B�n�E�J0��-~/QLJ���^|������nxl�]�%� ���&E�"�����\@��h>y����y��v��������q��Y�7l����(k�be|�E��0�j�C
�u��#�z!��_/!!���#�S<�d��<�;P�� R���l���MX��L�S}���$AGv���2`�4�O�\<���>��HR�!;P�7�+x&�Yr&|zX��{J�J��{��k����rm%������0��:�?��H��W�}UE`U\����6�)��
-�(�c�#�R*�x��Pn��2���I����"�61�N4Rk��.MV���c�1�:M>v`*����3wY��eI�E�5���7S�-m���F�3��h�G�g�aBq%�m[���F<(�	%��1i����?'/11����� ����D���+\��9����}�Or��"�`��RJ�����=n�4az��z��"B��A����W����d��q/�{�k��!��=D�73~�L���p	�G�]z1��4�J�
�-�� ����MP��{����-��j��9P���6��Cu��!����n%d���k0NC>*$����l���Xf�GB�M�/zN��PH�����j?+��!T�e�����7�8 
���Cu�A@��G�"l$���ED�LF��a4����i�&����{��(]��W����z�HR���������c�8����u�Q~��\�_�JG�C�0(v���)�x
�4}�%h��`G��w��I��@x��YFEa~�,���y���P��?��r�h�/���4xg�����&�����#��|�?���!������>����*2~�;�'4J.��Rop.���\�TN�_�G+Z>���07���uY�(�w������=���p���9��n'I�'�>��&�Yhne����j��8]udI�H��A�6������0��B���e��������K|����	�MA/S��~�b���&���+Y��-�i^Y�5�����K�*���p.8�q6��p����7���73��=����6�(��%����aG@O���0e��E_�I��;�`{�4]�q�����x�Wa���Zc�=�<z��~7GQ���<���3���/�H�9�R 1�
�����;��l5���1$"%�{�hZ����K����?&[r�]B�������)�A& � �,*�Z��q���}|y��OO���b ���)\�,��Eq8�Jb%� 8����^rv�s��c���������������0;f=������E���0�wD��8��P*��Q\^i�{���A�4�@����t�q�+$�N�eG���1>��������v���9����Y���1��R��~�����O�$�3W���wS�W��:�����Y��+\����M��������5"����doA;s;S,��q�f0�`5=��y�
����^�qO1e!�G=�Uc��UN������M��Z��+�^�vZ{���
������p	~J>�����8����~^����������`�
[�I��x���/� %J=r~��������(;B�x����{d�~��v����D�f��K\1M�� ���������d�b�2�������'��)�.dxu��NpD��[���.��;���w&9�?���G�{!P���v F�������S�0/#2:������j������d&����2������4��[���~=�.��1\pH�	�.C2~Y��r���g�Fd�4(����_�v�����b~3`r=�3G>u����|U�����'[f�R�-��|�E�G�G7F>��x���w��=Y�S��?}P�F"F8���c�I��aF"�VX�Q��8�W��N�!6>Z|�;���S|k�/��xl$<6���F�G�x��_�/�8�Q������p��G�w<��h�����]|��^�Q�p�Yy�"���1B�5��a����C��K�����-eht�}[��	��~���A%�@�E�y'r�������X��U�A��b����\X�b�	��c-z��b������_0��\�@0,�E�>��G0��U�~��^�L��	h">�X��L0��Y�)8�B2���X���`�_����j4��
\�s����1� �SR� D6���d�|�P�1c��u`�_���z*�]3&��eDC���w���K~a���p@![�e�C	�-������k���?�G���Y����#��������|�_��h����=D:p���l��{8�X�
�"w�vX�x�V/#�m�Y���t	�X �	���S�l``,��0�M`4�57�# ���Y@zod�i��g��#w�Z2����Cq�_+s��s���;�dc@���R�?z�/�Xwv�5x|r�2�py�����-4�C����;��\��������?�.�����~�
c�v�;��q��hq���v��J�e�Q���B�Y=T��"0y��?������0��EFf��E����,���]�B3���,r����E>v�B\�f�#�E�=����C#���,r����E>v�BL�e�#�E� �����v\%�Y��f�;�F�,�������E�l`��l��"�[n!6t���"w�!Y�sa�-z
��,��p��"_�
�ptKlBV0��MVd�/4�������"w���Y��eq�,r�����cH�Bc��o9�Y���?�\L�P����"G@0��U@zg�/4V��,r�����D�������f�8r���N�1(\#x��?��`������O���#�?�$���5��h��#�?����5\�N�8B���b�5�w�.�F���'^�5����?�/~O�?�	����?� L����d��DO����I���}}	w/^�R.�o�K�$aya�Eq���.3��)�y"�l��b����%���7(�L�UE�D�
��( 0hs5��D8������%!�_���b@�������d���yg�W�_����0{�$����Q�}���8���3\����Z8�Y�T��/Sk����w����L�ER��B����@�����V@�@��GJ�c�c�v��<�c?�D�&�6��7�z��Hu�R|�N��;
�r�)��fn�����#k%�d&��L���q��]�@���(����Zj��~+!��I'��4�����N�~�o%d|4i��������P�q��C��|P'�(��L�S����uU�Ss�q	N������7���L:�=��1�0�gp��1�7]���^�$�����C?�^?�G���a:�t0R���.��yH�x��p!7dt(f����!�!���P��������
@F��n�%���d�������3�L$�=20Bep<�1B���+��[3;�dl�tO��{61tulD�� �t��;�B�8Cj��c��LQ�%w�_`l��Y��8��������K�
_T��C������Oe9�h��#Gh0R6:h�xe���������aq�)�v6<���#1�v;jn������e"h�����L��L 3?Ch0�6&h:�k�`����"��3���?���`�cg����L/���4"�)r��`��qj�eI.�I
�G�{6d�d7!d]�$����16�.9����q&2�.�.�$�p�j�c@��F%�M0�c�L��(��`89����A������p.'x�3�p���Oq����x�0��8gr����E�L�� [b#���YD��:���8=���L��lsJV52)�Fy����y��'"���������~�>{��?����
If,y{C�,b��}L�*���u�H8y�H����[3D��Bt3�J��
"���"r��u�&���f(
i�*�?�[���(�j�O��uC�tc���5���@c|����z�12s3fj��
>F�F9�kF�"sKdn�g����]|�E��.���]�p������$�6)��n����r��&D1I���|~S�F���R�>H����������|�������lU�����"u�9N-�[Q�o<{�L�/���Zf����|��/At(S�<��u�\���wXg�"��n���
	E�Y;�E�`�����7h���H�q2J��j,5]Md���[�=�)�E���S�J�f���E�Y%Q�����g�R>(C����g�W&�d�&�`^M��lP
~O�U��E�T8*\-
?�U��M�8JA��eaE�fG)���1H��tI������"��r��s7��M0P�lp��2a6�GB��M$��s�TvL��\�g�w+���Zd�Z��l��@4�6�l�$b
�6�p��Z�A;�������y�B0fs���t��y����aJ�@��GEu�I#���]�8�E�+�nv��nV��V�c<��������Y�o������R�V�3=�<
z����z���0�s�X��D(�alr��{�G������.q��0����V,��~od2����w�y�0J��X�{�@a���Y_��%~����7T�=?�,n.*����f{(>�+I��}f�Af���(~���gv?���)�x�����f��������>������Q�P<��A���8�^6��q���8~�?���||G�6�^�xGm����������������0�V��_O&N���0�{����/{L�>__���1ns'���Q�8�*�j����19J?�����~���C<�_/A���':���h5�}�%?�������\��iI�	����������2����V��W\����J���'��^uaA�y������g�5��U������m�Na���"���jU���3X�����&��A��Awo�I��Y�2����|!D�������V~_�L�i����m�;$��F�=/
�T�9�l/#/g�.�|�y���kM��G
lR��(��P4�M���2��ih��;���.ZwxX������j�����=_G�M�8������I�[��M��/����U���$A�n���bw��s�0'��Ym������~�F��I��IwW��9�nOc�\���5�3k������Dnn����������^v���y�*+O?2�dl+����H�U�9_���o�$&8��nR8c�5�)����-�b�f{bV� ��7Sb��g1���1L�;T��
�{�]��L�l//���d-�S(?xK�G�8l����2l�UW������sx�g��/&�z�I��[>�.�4�ga�h��U=�}�0�'W����w���]F��������|�l��|�Y����<�;���V������on��3�� ����f{�%4������T���2��f�e#�������|�{�#�������8������M�[�m���n�5����r�UC������=7�����m��#F>�����o.	<Z� |����(�?^(����{D%��@�3kc�]�p��|?��pxScs����|�?��D��!B�v5+���W����$���X��w*�������x>.����W��3N���������a�=�GYl�o)�Dp�w����C��I&��Q>?�jU~�}j�> ������%������/�+�^�G���������GK{��~��S���O��%��9�+0s}`�#�=7�����w���2��R�zq�l���}��,�]���#-!p.�pTP������|6~H;l����FB[�����vnLw6�V~�6~7Jg���9��\Q������6�@��o}�]/� J�f�������� ���9��t'j_B�w7�������|��p�y/0�����P=_�]��H���}�� _r�b1���P�������_��L���!pn��OS���c3����>����[A�6
��92�r4Drl�2m|Rg���9��\����A�t�"���7��C",p����Gs���N���m!�B7�2^��a���������m��?{��W�������#��,�!GP��B��Dvgm[AZ�S:4�
���i*�Zplq�|[���a������A����6�C��Lm�
��>�L�9�3m���mL��N�� j:�Mrj�(C",p����Gs���N���m!�B7�2^��a�������c�6�d��|>�Q��v]�HA�DyX5J4hl��k���@���!d.@����i��CL�b�� �n����:��9O��AEI��B�F��� �V��0taN6f'�h�v�!����G
:/����\�-������S���EjL��Q�t�*�?���R��X��2���������!�$��C�"
�[>�����m�/
���
�s>g��Z��Q�$��Qd��6�����t{�!��0#(W[�Fc������"���9_�<ty��7.�g'i;=��"���5y������o7,��9����`M�~��5ton�66��0h�^M]�'���%g�B����>�+�*s�
�B���r���r$� ��b�Y��M���@�~@�Er���=�UW"Ap��Y/��k�J�`+.��x2�m!�&h��w�n�L���Y[�Ei�Z�.�����m���]������T���]-�%���jU���wti�v4���D�T7���St�c�t�>u�v��`�������Z*^kH��.@�0�o�a3^V��Dx���]a�?
���22 s�������a
19CC�d�Z��p�i���\'����$Ok��&��UA&�����0taN6f)�^�L���u�v+��y���r�m�M��t����Bw�.Rc�U�����P�t�6���:>	����A~�4a������f���BS��� ����mn� K��`�,g=�K)f�������Z��ma�*h�]�L���@A����S����/S�Z��
]��P��UYJB7�T���C��n
�,tRVy�v�~���I�t&RG�u/9��-���x|���{#���Z��+�CU�"�W`wt>l����BYT�9�UX
����v(�.ixd����u/���	!<������1��z���i�������I���w;6�sC�a:N&GU+r���UA��q�����F�p�Z�ka+�:TP����� ����97�<��Y��������5T��[��������x���{J>�%�r
/��Kc/I����/����d�./�9�������O�K�$a������m��W��3<S}xfs���d�)v$Q�c�oZ���J|h�I�g�bg������/^.�+S@�>d�$�`>����)Sy5
��..�!�b�w1��Td@&�a���2=�'����3}=6�2����L�8�����a����*O~�S��A��Ea������u������32�
0�����h������5�s����G�����Y��_<�`�������7�K@���
,���g6q/����t������E�|������������`�3@�����U��I�O&�9�#�����1���u�r+�t4�
(�q]��%b2��[���<?�{~����O��.Ah��
z20���x�NJ���3�{
��}���QJ��|��z�#����4x���!��>�w��f&x��oYaX	M����R�)�$��7-�� #K��������KMHt=�[G@��t=q�m!3�P)�.izd���\8�b)��|���FT��~����#��b/���F��5e�(px���LT�a���5)be������0�����G��uO}��~��_���=_��x+����I����;�g��*�lpf#.�����-��<>�������4����|�G�^��`��Ua������>�������}�T�:.��!����������hG1PH�B�����^Ov�4��|���%�����S�9*V�0�e�Zy��&	��@�� e����B�0�n��I��l��\�Z����yg�L�;�����������a�u7�d�%�r�2��F)-�q�����p	�/�������?�{?�/�B�8��t����I��SH�o����4�����=N82~��g�K��/{2�A,���f��O2��z�����d�� �����VuGEY���be�IK��|��&����ns�C�&P�����0���Y]�����,Y���DP�;��G�����T"_�7�%aH�\���o������G>y�Q�h�Q���M�r�]�:��9����
�u���~%������&�����Aa�9MJa�����v/������m�.���7���_.>Zn��^��r��0�q�]m��[m8�
�Y�h��P�����-Xs��~A�a����k��_������f,����!��mj��M��w����&�^c�R������f�9��9��%N�����X��{	\�����EI�8�l���EM@������v��v���)i���YpiEs��	��A�n���D���|4�pX�4�����l:��F\��+Z��Xv�W�n��C����Y����}+T�W�l_�hDCo_�8��AC���!���7�~�e��Cx�},�����i,_����M}�
���7R������L�@{o��O�b�%M<�n�}���w��|uC�������T�i{.4���O�k�z!���k�V�������0$r��f>k���\�������.����M[o����{&�|�{�����h����{�|�87�=�
���^.�e]�o�s�>��0wG�~/��^�3$�zd���������%8b|G���/� ��it��\g�b~7��8,�Em�t���/u�+�1=�����,��OGk��0�s����
!�SQ�e�30)nz	v�(�{�|3u[��2���h�������^���E����P�C�����%Y��r�Mk^�������ego������n����� �����?�N5V@i5G��x�]���h�A�0�x����y�5�P�N5�2�=���gz�~7en���m���N�M��L��g�l�Z�YwEu��R��tA�7��Y���iy��h��c�<�O�
[�`��#���
��&h�oe����$"A�0�a-6�d��.k��Z���{�����������W���e�i��^��8�?��ww
��x��H(��a�������_��O
-��<�(&,D^,C�tftPMW��V�1H
����(E��uV������s���o������{�'���t�K�
��`!<^�Wv��s.��%�	��I�?�iI�H^dN�%�`s\����:l����`*���
-+�W�%m����������TJO�i�;��������/��p|.��Iv���O�5������R2���.����SBKI��H�c����x�������N���[�(�aj��z�c%������Q����zW�]�Q�����(�|A���z��aR�B�f�>U������J��8L��`q<��������R�V�3����B������,�z�l��_�:I�9�r������X���iw:#7��J?�:L!6��d��D�L,Uc|6p�������k�lU=$[q��}�S�O�<�R5�g�G�zT}C��������^5�g�H�zT}C�������~��D�����6T/�oV�K�X&�U����z�#��FDU��o�i�P���Y��i����H�U*�"��R��Zl�@tsF7W����!�1��@��|�k:]x��sN�
q�JxZ���U���	V����i�zG���X�{`G��x��i���zW���q�������I����Uz?X�,�g��*��8�A�+�nu<s�4�2���F�w��J��U�Gv����@��e�L4z�<�eG�x��a��;2y"&������T�5���u���0-{��kXU���i�Oo�cT}��m�~�����i�On�LT}����0����~�Q`o�qLT}���F2�������n�#T}��-�p"��TdZ����&��A�V��\�fU���$O���P��l��
��M�=vd�\4���+kru6����Y��S���Jh8��m�����s�6��/�c�gM�\G�!����p�4�'0�!h��b6{�M�Br���!A�nP���po��1����-�7���p�1����}��!0���p{�]��]C��Cb3��.}��&(�[K����W�\�s��;�Lk�j��AU������B������BA��S�!h�}j�����@0o��� m�Q�C�v�� ���"A���@`q84o��� m[U�C�v<� �oZEH��s�uH���t��{X�3�~�%A������5����.���!��L8�~��g��r�����W��+$���h!	��l3�f+�b�NDa�kV�����T�2�g,&S]�S|P�]?�0t��^Q���kAz������9�*Y��v����M�}��x�I��aH�|��F=�=��O�4�V�>V��9�7�|�}�:�,Y��Y����(��Q�S`���gS�IwN����iT����7����z�F�mY���vS���6��f�P�fC��wy�d�@�m�bC�GW-����^t��L\Qa�����F�}������Aa����<r�%�
Zl�{2"���a�7�,���b?�I-�],v�w��m�bo�[��,����%���4����m�g�q;j�%Q�HrMk��Y�
�j�]�7GK~K�^!6H�������S�5���4����G�tA����G���X����������DP�Im���S`��Tc�2
�R4���i��q�m^�����jn5Y�m�5Jz[��w�_R��-a7�L�=��,Yk�Q^�_"�Y4��G#��h��$	C��������l�5�+�[��������s7n��v��i_�
�X�$W�
���A�4��I�nS3���y*,���%���]�����R�q�]��#��5=�X�$W���M�=�V@��c�r���d��`Y�m�=lx%un��\��{Pf���4��C��dK�$������F5��Bz% m����{�v�!�=u/���Aa��zO�\���:��1�17���d=��[T�!us������������v�'����[��Q��wCcn�u�����c���&!^T�I�wK��;���k,Z�wF~����X���;��dyk�X��0J�L�my��3aH�\�z_i��5/�;���_98�`T��-�
��5�1���1Ey�.48�,T����a*��mV3X���F����rf�h���)pM���w�f{D�iW��X�$�C�~��*[��I��aH�|��F](b�4�K���U��UwV���:�n/�i\c��: p������;'p+�����s�����\c�m�-�
��R�n	���n�����@���Oq|D�m[��I���`j�Y7�)�������&�-Z��Xl�rzx1v�
d��5�3S������h*V�20���������)f`��Z���U�Z��L�d`u�+�oh������C�,������5��X�|C[}'[�^,����~b��H�BcMr�����Mr�����u������u���;�j�2+wl�n���*����@��m{����a�V�]M��h������v��v��wN�Nf��a���5V������X7���hN���aV�l��'�LZ��Yh�J����>'�L���
������3v{/4V,���s�o`�GsH��	sRg��6���/4V0�{�U��Uwo����*b���K����>V���=S�E��Y������Fb����������;��Ua^�Cl<�Yj������~����o�GsZ�,
sZg�6���,5G���]��]w��Y��>����,��K��F�n���&�G��9�3�j��������i����������#)������"��U�b��g��4��[V9�6�d�yM��9�����~k���
=kN�������s*�a��v�[���$�o��T�F�n��oF��9������M��tr����������o�������X�
�g}�Si%�*�������r5QXxG��0U�"�X���7�R�K��+!V#��Ug������^	�"��I������

�m����K�0W���9�,G����X<Z�;Yt�v�K�0��!v������]O����[7���:5��4LI�7�+w�� �i_ilm,m�]l��x��0,���<�s����J���v�*_�'�T��!�������Z����X�m�}N�to�.	�����	���v�������(��h��������<�����#����q�f�� �j|����k�i������'�[�����0V��oY���f��4C���=��=w/u��i���@��Jcet�����k|�M�EP�!���j�;��fK������]"�����q���#FN;JR�Zc���~�Rw��7#;�Y��������<�y�����m��l��*�0?
����5�;�}�_��[����*C�ak�)����v5�����E�X�,�m�]lz
�sZ�b��v{�u�Y��5�?�h}���h�����T9w����0�x�iM��}�c�5�E��@_�����y����v�,v����8������������������Z8�-�},��a�okh/4���o ����Z�������Y���!��-k{�����j�h��d�����0��!6��l4�Y�Ip@�n[�����,s'���0$q�U=y�]��Kf�������=�x-z��m����v7���dmk�����m�}�=�-��?{����m����_����I�=�~uK�ov���w;7�>����Xl	�f�"e����T��~�p@� A����3"P���spp�0��n��}�����jQ1������Kp�`R�'��@~�Jc��!y���~�}5Gy=����-T��>�dt�17���~�2��{�B^
�}B�
�W���$z�n�~�}5�DA��I:��v�GW����_T�=�ezn�&79�T�	}70��������~�=[]K�-�T,�S�f�]4Y��1gYT�}�E��F����|��S��������{�Y�u��#����{9���[��!���j��2=���k�UVUc~��Y����� �j|��,S����\�X����'W����0��N��=x�d�=���eQ1�����;�n��w��}�=�k��9��`l6)v�����]����&i\(XO�e��w���u���_�o�����w�B��{s�Z��5f2����q�������A[�@W6Y'�1�YT�=�Ez�;�zpA&�=�����n���u�n�}m��^O%���wK����=E���,*���"3���S���)~7k'Q����L��c\r)�;3,������:�oI�D�,�<�t^�\_7~;����*�����������n�7��z�C/�K���i��k������K���`����q�B���:�v�S�9���{�����j����B��������t���?���OUnzJ����
�0��n�z���z�r�p
����K�Y:�wL����n��-EC��^,4f8�������\^�zM@f��W��G�mR�k�v6�co~����n+ieuB��Z���_��_����?�������~����0�3�c�?�bo��>
��K���0r�����R�������^z�rP,���[��@�E_�4t�;��i����{�������b%�N3����W����W������C�IW�h��}�9NOj��[���T��l!�*��T��-����2G��9�8r�
��t!�
u�W
V��IAC�	���x�e{�C���u�c���R� Ug ����A����*X�J|��J��������>��N	%��[�e*�Ba�2z���[��>�l�j��!j��^�2l����F������-��'n�g��%]�3��� a$�����-�D�J��.�{�B_uF����xM[{��N��b�E��m����i��,l�TIn8A�V�������.�f/"���):���yT��}��d	D����|�.<���a~rM~���d?��x�����������������?�>%7����-K��o�|S�s�Cx�~���$��Zo�d�g�FmA'����9U5����)����Z��*d�{Mr���]D�'��>�Y�j�
���8����P��+MOka�?%�&x��3�3H_�������"�@�R�P�����.�[�%����+4�^!x���}��G��R��e`���e�����;�}���f���5B����ys��~��H ��&�
����p�'u\v�^`��E�W���d�E�W� �N����>�q.�;���q��sSl��</����ju����^�
��2���8X+[�0Nz����S79�A�����J�'y��K��KD���t��d���8&QF�T�����>�$fIYNbzC�V^f���l[Rwy;�X��E�T�0���^+�G�"����\����y.q3�m�o�,=j��gL��%���[o����$���*��_hY4�(��=<�zL�b	K^+�]*��z ���D��a���������T���P���A��2([6���nM��a����!���!9k���8���I��*�2���gn	�l�'i��������we��K��v�m7��Z���$�0������SQ�}:�^�����7@�����#�O�j�3>u9�gC<9%g�Cv�|)�Rp���"W���	���+�q��_]_�_m;��/i��?���9n���9����g���wf�����`���	D��k��<bE?v�o��A�j� ������?U����F���j��s���9%n
���8L�8hC��t
mA�>����K������<��]zn�����no��wJ��wy�t�A��`�V��
��N��q]6}��-~<�K������+��2S��wg�2!>'���+S��~}2��� �]���2�0��w��p��q8:�g��!���5����`U���p���AD�"����<��a.7<?X��7�^���{���I��0tUa����V�T���d��I�����[���?H��2�Pm�>V�R��At�(��f�Z�����<�A��Q�7w~�����C����Q�����0���`3���`����H��n�
J�;{JI���s��tt����ngve/4�kx���T�I���W?������?~���/O$��R��GL����������ls�b�"���3!�&Y�^��w�j���(S�w`B���������V���<S��$�*	�Y�,a�1�%�s�6�PL���U���
N�}l�>�����>��>�7�j<�:��f��@M���l.N*(���L�?�H�����h"��E�LH��E��q�9$FX	nU�&�!Fk%4�@#�D8i$F���t��C�������J�9"F�n��$�m�;6B�4��&b,��������;p�a���Ab��_�L�7].�j;�F�p����w�`sLO$�^����gg4��t�D����_=�L���~�;�����>�7E����F��)SCM�V�����d5s�����Qu���(1��x)i&T	Ke����!M�/��X0����0fw��w�.�ko���F�Q��F��&��ht�#�7��7IGG}�lG��& �����z�z��;�s��"�iE��Dh�T��	���8�8��h��.�oq�!�n��(������C@B>������������ �
Ds���D�
�����|�4����<CfF��O�
Rz�a��@e���.��y���y&��l�p/O��x�vqq����t/��)�o�`p]��M���M-i�Lv����Z���ST�����@��;������#��DT����P�Y��>��z>��>1��x�t�d�E��!#/#�H�N�����_����A� ��`���@~H;�GG��z1}Won��^��zO5���Py�_���~q�_����v��"�����an���dL��%�z��DI��!g2_�n��!-�l������-�4�-|E�@�0G�Tz&�3UU���c�E��G�����))QM�����5�X��C��1�����������=���$al���:|]��4z����N��u��t-�����%��7�����Q����J��]�lR����Q��mA�vtmC�@b�>�^������E��4$j����[�Y��%�H�.�B_�
I���-mR�@�tS�$(qH����h�R���P�(oQ���mA�+�9Y��:"��\N����[NW��V�!��z�r���S#��(tX���r���^d������Or~�����/�7��rF��O�,�Q��f���?�wW��"5C��=����$F�M�����i#J��:�,��#b[�����K�=��(wv�xw�pDt��k�������i2��5s�����&������e"\��Q�V�R�:��Ht�?	
�~.Mqq|�`��vZ��P�H�4u�z�-�A�`�I@`F�%\�j�qZu�f�*y���N��v(Ep�P/�P�J1I�\��!��H�o��O�n������##C����Nc���(����d
����1Z�[w�Z(�b
���ChQ�������f��P�a�j������_��=�q�( 
��$k���$�o
��l�,D�0�$_?!HA�0�#Pnl1]��
08~��h����,��D�i�3z�O�ON�������k�,'������W�yJ:��1R��Hf����j���\��+�F��D�`,'��(�����"���\��\��MS�?����{,�����4
^k���R8�P��'.� /T�k�\$�v�t:�P�1f���
�����06����I_�S�X�D��,�6,
��#��Dl���@Z����a�1Z�c���������p����1;�����~&�!b�B��a��%��9����5h���I�6/��F�!���CF���������R���,5�8���V�1�����2�������Q���>q�qV��l���(�*q9�&��^.��E��!F���xfu���`���,�@���9���0)�N�f5�����lP�(rH��2,��(�d�3_���.�w�7.���;��G�i��M~�_��c�p`�b�6L��
�o,}w.,�C������H�P"'����=R�H��������\X[>���e"]�Y��UVq*-(|v0(�/2�����y������I�x2a��t����#�4���d,5���D!��@U��P6K2�
��@E�c�+����;8hA�L���E-��.~q�Hhp�����F���0���4J����#����?�}%�bL���G^��z&^�y�$}�X9��N[���/�@����"D��3K0�q�:�,����Qv�u�i�,�n^"k��������a�)p��,.$	i�a��G�"<������������l���������a���2<��t�V23��6���ND�9bj�� ��
OI���;��;l^���A��i�8�9Qp��I�$aX������Q<�l@��58�At����(�8���>e���a|��C�zm�E��G��Y������	GJ���t.���K�MU���_T������qbt��%�,�F�
�|B�>��&dxx��-R���a9Q��0�o\�tPL.873�6w���soV�	�&8u�������i�T��0�#�b��X�2���,%1�����O��D��,�v���i�~[�}`���C~L7@���qp�c%��e[��A���k�
�J8�o��y"C��m\���|���>�E���\��	���s��%��q��?`�����d]0�L��c�#)a!&# QV���!t�����C���	������++�62��M�#����5@�%��dZ���!;C������}_8�4�SVq,��n
��?��7�R���'Y�/��"�j��=�~�����2���s�������"�]p�6m�T������n�����T�:9��ivw�l��o+w�t������2u��,�+hu.+��<�*� 'E�Nv�b�5@��5T�5�+zq'�pN��������C=9����Q��I��9��
}�T��%Rg�J"��t�s*d�z-O��oT�A\�Rm�	p�����q����y���#��B��d2*|~d����;Q��>R��e�A�K�0@���{^V�%+���R��)Y?��/0�up�W^���QcYy�c*n>�C)�����*��;Y��e[5�vU�����z���~��j%%[��b
s����!^�����6^yc�?s�?^�m{tf�U>'
���X��l�F������d�Q��O&��CPe�*��Y�����(����7��������/x����V�I%f��lF��������p���	������!�+���I+ClTj���`~�D�h�-�?#��^�2K=v7;���@���n���7���J�R
��@*R0�-�8wr�M��?��:�����]�n�L[�d9�s�%y���*�pL�",H�g$�*l����K6@�d1#��I_=�E��J����7]��l��y�@[�R-�&�or�:��3��o%�2~��QV��1Mv���fI�$�����6m���6]�O���<o���Y'�8���"C�%�n�M>��d�y����<��CJ*���Od���Yu��N���+�g�x'P~�^r@����D���RH��w�G����g�� �
 �3���d�[=��j�Ce��|V
�u�|
��L(�P����,��'����,��P5.��s>�C�kGa��"[�u
���=V�e}_Wy��|��S��}����{o����Z��!���
x�R;m2�L���w��N���5D
O���T��&��\�h	G��\+��������z�g��g77�6����3[����h2�'�iK�<��1� X��z�f,����5mV��h��Q�Y��=5�D�<u)[�QN����mEDOB����Q�����W���X�� ������I|�}�
fY���JpO�j���fRk� &��d&Y@�-��L�Main)T�	SK�u7y���f.�����P	��/����W��9�g$"���[MmB�l_���:���uv������}�'����[�&�(���?������������+e�t7��"rj�:�p�m����8�"�fy#84E6�7w�HA���7��O�j*���d���ir �iG�4����q�Y�m��<��s�On�\������}6�C��T2��S��t�o'��#����,c�G6$'�.�Iq�Y�_.}��$�<F���d�������������{��9RU�0yR�X��vtk|�A�o���]�������{�x]-+�>�A��g����s��������i�Ev��#���N[�xr��L���ch��f�>��Kx�e��#���g1qr0$��LM}��s�\��Q-l<��2�15�wL���c�:�<��|N��[�Z�x����m�aR���t�n�����5�Z�x��my����s?}�[�����=�T���� M�W�����^\f�e�eT��p���)pG��(i^,Y3�)��K@���SN��,v�go}L�f��87]G.N�b�������8��_��EB�����,nf���"�qA��p/�C��!&�rG���;��������Z����bq��������0BF�V�+q��G,O:+����K��b/BL'`$��<��:�h`u�v����R�]'�T6�?�x�
����y����G�Ih?)�:]�C�V�a�?�����D�(���"G�k$���y �5�4@��h�|X���H^�����,v��T~��S�����}Z��r��^��|���Q��(�s���at����s���NV*�|-���\�{~�"��
�6G�p�
w]0��Z�~�����X���>�=����!�65)��aq�_��(��?���_|�����q���m]��'v�������s��-{"��$5R��*��3�e����Q�Gv����� 9��iQ49�"�,��	?f��]>�N�����SJ;��A��T#�����0�f��@^�,��k���C�H)��tKw��&��#���.Z!��P5R�k���b��'���.g�����P�P�S�q�lQ�$�h�3.-qr�I�c�F-	w��M�����b��k������5����
���?&t��u���2�#�S�r.e�VN�c����+����>13H��������g���Cm�j�D�8��(��=�/L'�����p��]q(����C��1��^��r�X��0�����M&�W`]Z���������8YA�s�u����8-A�.��_�40�� Y���L�y�u����-^�*47��9��{U�p1�B"��^��Rt�P�S�6y1�����B�c
�|X�H�������F�rF�Z��dh�:FZ�����[��rN�����}��{Y�j����4��2�X��{����:��^�a��Y�����H����*���r
���L.]��H�u�V�a��o X������l�["Wi$�\KFRQ�X�E�y)����b
B�����s ,����]]tkkQ8M/�3](��QO�;����:T�����������w|�w��G��69�I}���lj�df��y��f�C�
��b����O��H�e�YiSZ~���#p�c2�����hY�IlJ��\��zw�������Qaw�K����+�@����4�.,L���[2C2'�R��c/�-����s�G�78�aP5��Z�
�4����llM��T�p�#��������V��/�2��il96�/�e�fJ�I�����
%4h�'�C���(�o�Yg����^�@�}��p�6eQk�$�r��zuFc���1�'�����(+���f��%<�������7c�d� ����"EM�z@sw"l����M���e�.�`k��xi�U�$�[���-�
�y��������� +
V����L�1�����!C)"^�z��D1XR�BoM��`x�Q6�rG�D��������V�h�-<����������9=�y[������9�|&&����g�_�������C�;��9��h(Y�����Q��]5Y�q������#z.������\qq���S��V%n��Fq��&�Ml��N!n�+�������IqeZ7�NQ�{n7/����{k��v�)kE��-�������s�����s��yq�z��f�-$�E$���_A�~�� '�B����3�C�������h����B��Rj~>Nl��������*��ni�@����� ��x�$,��������us���%gb��z(%�g��%�7]�{��B�J7�	*\w�>#1&>Z�Ld��c��w��yY����|wd�����
�'���K(��.�wW��L��*u��.���)�y�7�7��E��:��b����m��|�xM�w=����,�������k����AG��f"�������LDA�t�-UO�U��d#�gs>��p�G�H>bG��I�tF"W������d�O���,��q\�I$��<�em8/�[������d]����'GQ�'����h�T���+u�Y�"��O���l�n�fu
���*�,�Q����p"b�T���E������tm�������Ue�e�!��4]N?��jV��b���]�����e�i�u)���Ye��N�O:��>m�����1��R�6�WI�0+�A9V����cEu�?5�YV���r�;7�g��;<�
����BuVGT��#.�>�y/��
	����W=^��NVU=f^"��e��3���t �P'��S5�^,�������lCE��
�l�
I|�y)a�Xo���8:n�=�A?�_Y1�|hy{Fm�L>%a��X�Q�m7d��
G���mo����wO���ru�G�2Ys�:�u�=�H�pnzzro��y6z��n���������
�V8v���s�6������-���0!���y�
�p:b[��$���dE�jUaj*ZP�����L���N��E>�hA�����e�U4�p��
�jQ���
'��e�U4�d���T��G[�:�.V�Q4�X�����h����G����N�U�$�tu��+�o:��S��4����p.
��=����V.
���!�w
'p �������9V����+�;9�c+���O���ZN��g���{});G9��(���&��E�+���e8e��g���dV�x53��a�yL��=�~T����hD�.������]��;�9��!@����
��!/?�d(��\��9+���`8=��Ih��d���v�W�,4:��� ��2�Ae8�l�]����tE��s����y���x�,o���HEEk�+U|�U>{Rz|��u�&>DI����b��x.��@��=��e)���������|��{ �GB�B�t��m�g��B��/D�� ��tCR���4
^<E"�u�fKp�G��.���o2�t���O|����i�L��2=�%=���@�Z�q��� �2-��A��=����ixe���V������3�!Y��q+���u�o���9�Gf�o��#s�g7�Y�T=�O�����#'/��� ]?yY~x|�D7�G�������$u7X�����Q�]��"����!J����b5���V����Ng���jtb.%s7U�EaX���U�l�z7�8���w2���x-�)��f|����c�%w��d�u��~���]��q�](x�������<��@�W��m�-Pg��w�)����R��NG��-���]�Ki�I�\��Y�u�9����Ft����K���v����N�#�r�3��&U�S~!��Y�[�����r�!�kl��������tXt�%MR�vT��h�~�\cC�-�/��4�wP������`"m�jn�����R��p��Kl�s7]xN�Mo���;bC�����'p^j[�[�SDuR�����r��������Fu�6��5_�Yu�\7��V��n@������5�n��R�of�{��
oB��kV����mu8�Du��4��v�����mV����V/�����7���P��)y�s,�d���{(�'���A�D$��x����_uZ�]U~S�8������([>������O�0��c����Y���Y8�Z�i���u�c�Y�4�%�0���W]n"�������r�>>Q�xuIl�v7�asK5(;�S�tJI�l"'M�"+��+�R~�������M��M'�$F�y�^��0�
ok���U�t�^6:�}�$^���L���VW��u����N�?������2~yp!f�eb6-���y�������2���\�����#�qi<���*�����S��eD�	���M3���c���a��a9�1��1��aT����s^���Q�)��.��no����@�Sx�����Zj>��)���:x����w�~�R]��[$��\���M�.^�`�g`���KshS>�����v�N�4���_m�����*���]O��W���S�t����
�6��f<��c��d��Fq{�6z�h�{��I�Q�Ch@�����������q������7�'��</��
�+;���G�Ds�+���5��ptWr���f���
?{q-@���|��?����9�zdaN��r��9B����+Uu���D�P���+�,L��W�=�u���)�;pFU]n:�U��}��6��?������&�(Lk�.WP�������'+\�QWn�KA��)�m/%�������z�����;�~��K���}��=;���d�OI��ttpt�A������������]�����R4W���>�3�
A �8�#�U`�[>w0�p�!�G!&Z]��f�sA ����?O��h8��C\,zB.,F��?��EG�������>{j0Y��4C��4f��`����L�1�DU�!4���w;��"q��dt2���u28������O��T|�KbG���,�r�c0"�����Y�Z����\�1�b!0��`�4���<������m��%,O�w����0�a~U��I���������5��-�-���?��0��U�:�,���jX7������)��
��p���=8>u|'�9,��PL�&1�x�WNG7V���?�ie��ym��E��V&��Y����&�v�V1��;��"S��v��bbC��a��m���r�(@9�k��j����6��Gj������bA������i��.r">|�S0]x��a�A�S�� CX�`����e���$4E���i;�*L����Qi�9�5�[��CT�?c?�8*�#g����7HD���!�Q@
��Qu+����[�Z������h��#sv<�v�3������>j�"p��8�I�d��wVp3}�Z7;���4���9�nE�Y7��
�����N��u�8��dm�yW?�t{��N� �m��
�2�h������c����{oB�Hf��"�����������g��@��N��+�a2�U��YV�o�.Wpw���G�T����J��\T���8:���R	�0�n�#m�Ei��6}�u�X��wz,k#��#J[�v�
��&��yTJ����-�^�-I;��k��{�;���(m��$��io�K{�#mF��ei�Fn�#�i��d�{��!��oS[������Q����u_��,k�,wx�� ~A��j}��m�H��w���F�^��}���V������(pH��W�s����d��?�A�#O�8 ��6��)����se5���IL��}�'ofy��c���S����1.���w
���������>���'tTQ��9��Ta�,�&LG��`��h0{+������0�30R���(s�J6���3��
	�lP������
_��2�>�>>��n� b�~2�v�o��UD�E��NFW����9.�Nt��eW���<{��IIy��<"���GE���Re�����<%��U6���oa��n��d�N�@FQ`V|$(%�0'^�B8����d��ex��;��-��Ph9��%���u��k?�Uk���	7����*VT���VTfJF�G��F<+�Q�o�wtF�4����\]�y��2���/�n���{a��a(�9��q����
}�&��)���)��\�����W�;O��*��5I���9��������	|���4	6���Je�����w.�*�y����}}@���l�F����z���q'��x�:�����(���br�+�1�M����9X�D��8�M�/���<�~qF7���4;�[�	C����*�#$/#�z�W�]������7[����*��!-�!m����vW+�9�Dq�'�+��A0�����6�<e��~���'������d�)���a����E�L�*&�y��Az@�W��!���H�0:L*5a�4anv�+Y�]*>���Efy��8C�N��.)`�0�1�d:�L�  0���lqa�H5�4��a���?�X��$����O�Cp�1I77���71u������ar��f���qu3Q��("T�{s��Y�;�M���c����4��`W�)V��_R�"��)�l�<�^�/�����>�>���1��jA�O1��^��4�u/�)e:��
vw5|�
�c�?�F��^H�l� W�[&?�<#%�@&L31`fV�	��p��qm��Wa���F�	��r`����#8����'|���_��8TP���X,���1^�Z����A:�t��c�P��a2`,*�Y��M*��\�f-�
�NL��$�qp�h�a��<l�[��5#���e^�| �W�����l�Y1uZ��|@��������u��4�uW�f�i��S�����Bn�����0�n
��{�khF�������N�&/�����E5����^@�jF����(H�	�M'����9Q`��s"�^.jr0�n@"��wS^���9?GT����%������7Z����������=�)wuV�J^��
y�+�0DvQ������SF�m�-'#�Oo!��M�YR�N�Si!�2l�0�F��U�H�K��X@����m�$��X
�O�
K
Lq��6�r/�*���\��7��#.����Q����\��qGH��@L�-��n*S~��(�m�@]���}b���N��z/Z�o�����G;��'l�0�%�����Q�aR���O�����3~��� D��X��|��O��0)����v�4�O�TMA��xIL<�
�{x�6��=����d!��`�����Z��w�n^���\@�)UsS�������� �Y������}D�0������/�������8����:��~~��,D������Tb���_��S:D���M�'��M��.�*�a��l��:��@k��@�+�@,��=���6a�'�i��9hA�Da��`s�`�����x�h�#`��E[��y���d�!=dh�t���,L�F��������>Z�: ��&��i���T�AN�v��1��Bq�G~'<�{9_x��lw7��jy��do|u2�?���}�t��4S����+� �
IC:F���\:Jndfn����~q*3Wbp.nk�5C`�������H�mZ������eT�y���	g�J4x�i����%��a��0x��&3����]�=)T��0�j��7&4�lc�%�
?����9���J��2��` u$��H91�Q!u]����
�����l��&'FF�`r����H�8�:OhB~�wP��B��M��������S��]�oY�����*�rr��A�u`uUH�����]�,99d�Y�*uq���I�,��_�99V���y��%;`f?Jje�vA��:�I��"2cqO	v����s������������������	��~v�BI)N&W�R]CN�r���&'�.,a���XJ�8����������(`�GA#1HD� �������C�n'B�M��4�B�� � A�g�!���V��17'd�$&���Av$M\jH��rC��k���Z\�?�X���;���PE�~.�P?�L��D��@��5f2

:��0�
���Y,F�+Fq��MT��"�����������Qf�^��j�L��3S~x�3��8�L;+�1WL����2.*�M�[�]���u��+����8���)�����at
��� ��B����Q��R�SUz�!OvTk����|J*��<o�D��OYUX~��
4L���=j1����D���l	�<�[
m�H�W�P��j���wm�d���f~��-���~d	YR
�+�<u�x2VUQ���#r[*��!MI�S�H�����'���'�D��W_��/�~#6���#�@Q�2���A3�P�c�t��)���?��O���7|+��B!6X��/to�F��!����Qy�\��|Jq���n�oS�E��zw��������5��+[�3l��/g��zJ���u��W(;u��TaZ�U��A*�c�2���~�g$���-�}���~���i�W%kn
���u^�K~�O���,wt�-;�wP��U�]��9�e�:�w�(��/�	���G��B�{����������s�i�������y�����w����aC�z����%�u�q��S������c/�>������x�R��q�&!�2�	�{�=>�;���=/C��:fCx��_	;���]�K	�A�F��Q�sb�N�j���T���p�����p��l���n����rT�T��5�e���_�?wW��s��y#pN��;^��`���%��4
^Y"���=��x� L3�f�\��<���se�_]E$���L'���(�v�u�c������v�{7���Q��9O��L|Z��������Z
u���4�Q�y����s�B�����s|��0���.t��KEC�V�����&%[���V�����!^���%W�K~����[�b���6$��<'aP�����K���-Z�'�`���0"-&�;���Wc��2����>�D�a�����n��L�5O�����[���F=������SLP����I��A|\>��;��FU���N`g�1`�������s�K���D�nG~��=g����s�����=���Dl9�������E��2�\w��}�LT���e/5M���	�sa���
�rr�8J2�_+�T�_�����V7o������.����s��5�")�(;R��0��Qm(s�����=����]������!���,9g�$U�1+0�N�6:���D�QeJ�t��T����9��aF�4���4��5���<�#������x7�����e�B���I�F0�mR#�����r����R�K�Ic�Bm2�c�?y�i����4S�=LW��6����q*����bQf�����$�)�����PZ����4���#Y?������);@�]k}C���\l�����"�6�N�Hf��U~���%#2���W])0�X���Cs1���Tpn��3Et�DdGb��bv�X"MW�[�i��s��1�`#�?����5����6hp.hp��[F�d��9� >����_����~��_Ui��4�-i@
*�����"|��+���O��
�U�08��{��t3s���1��\�,���LM-b{���@l��\�9�������h^1�������,K��B$��|l�([��$Qp����{s��nn-����v���I�h���-9�6"�P�~:��opX��j���.���]T�z���iU��>��n]$�,c�n-�������L���F$�R'x��W��;�Yv�k#W1�-��M�����]��p�s>�����U9*�&I�[�`�c�.����sm��l�l8�5���Y��Y:!	���"3[@���5zG]*	�_+�q��XS��-���kh���I�'a��1�YU
.E��0'_���5���a�O�N�:I7u�q�S��}�?Dl�gY�]v�!�b[�A�4����
J�(�r
�;ctjm�I��%hd���MeQVS��C�4����(u����������"���5���M�i���S��mR��-kt�����H��Qx�e��t(y�2r���	j��$�����?��j6��L�D��u"��II�9yD��!xPf	��O%����+)c����f8�{K��qG�	��.
�<����38x���W�:�'(jA��
W&�_>�)j�\�z��FQ�������������S�p?"���b���Q�(j���!��yQ������Q�B2��D]jV���������C���$�I���z�G��\���?wY��(���,u\��J�|&�S�=��^^C��JIFU^khe�b�xL�l3�73�v�U��\qQ��8���[���'B7O?�;y�.L�i� �q3Xt�E�S�Y7�-���T��f��^@��ztc;Z��vTax+������-&�[9;_���[9��5��w�qD��6,��*|������������";�{�
+b/
7*�[�l~�(�X�s�{ne$�-���>_���������}��5�aLdG�2)�-> ���n]���0DT��Hd�r�����G�_o���������������t�Vh� 
b��(p'��(S��8�
��Iq�;���I6����&Z����LS����M,��g1hxXqF�5lz42�@Z��4��[�p5$��1��I�������Q��������j0GN"���A��:4AZ��0��
t�.s<��#���;��$QVae���&�� *8�9i�s����4��<B�p44��X
C��q�9��qb�����#;P�Td}�4�(=�gZ���RG4�=��(���Y����i��D�zC"��B���������o
$�<�?�(D��/+pcg[[�n^�9k�~^I���.���tF�gt�t%���7{X�rq��i����d{��'G�nR��Y�t�;_�i����'�/�����u��	��[�,,��PK�p�kL����,�$�v�Y����7$���c��[���/�2��X��0{�H]��]���K~���8#����sa�'��AX|��A�BW!FYh
6h~�������.$�����?�8�o�Y���$���H���KhG��l�^��!��5-C���<�R������C
�'4vO]B�PWu�(�����uS����h:Y��iQ�O����.����4�h�*~\�/'YP���n5����\�)���:{�VV�_��w�<���+k��f�C��8�
��<Lb�����I8r��A$a2�@F�M
89��[0x>&��%0�/��u?|��,������4,0 T2����+��<���	�m����_�`���W�
:5h�����a����>8�����,���a��0�
��������%	��0�$I��%������e$��L�����mS�e��YF?��#�����a:r�CMG-;p���:��"�����G�a���f�CD������V?�q�q��Tx���s��BL"W2bQu��Rl���w^'�]HmM�����N�Je\�{����
8�(]=�&u�]�!���t���3J�:I7^�}n�%�w�B���
'������d�5Y+���T�KX����c�rN��(��[���4���������,����kQ���e��R��X�YU���u�u�����5�v��l��F]���Z�����o��5�!�k�����D���l�"�5�Z����zk^���TD��=��D��)	r������Y�,O@�q���e9+|I����;��,^�}�4��=���w�����=���v����/
���S�A�@���%�UbD��P���b�l�JWG�*1��JW(�N��S�Y����e�uD�+�n'��)�����
.�^P��>���b:&I���IVp��Q��>���MG)���E)�� #/���u�����K�_���%�
�A�N�F"����$��$�����IR��A,g�4���o��F�{�QRj���L'�-61�@�E���O����-���;�����f����&){�7,M������{�c���:�	Lc�
���|;���3��NV�f+*���$m���H�k�O����.��^���SK��Xv������&%Q�r���l�Dv���C���~� ��j/!��@o����{~K�������o���w��
u�=��>���m_��W�b3����%��LU'���K����������MN/��8P�P���s}E_-��%��jd����`+1_�#m`v�%�k�=P�c�l���W������6��@���;����q��]g(m|5d�=[�G�Nn]<��_#6H�+�P��w���Z�[3������}�'k���!.V�
YC~M.U�vT�����,vzL/��7����DJ>��G-R��TC��;��)[�5a*~++�Q�-������+u'�f�!�+[*c���6�N%��< ��5�"�)��DY�|�VRr�l�#>b��5a�XSHt������i�cI�l��M{B�;q���&d9���DdY�UH��lD'\�2)|��K��a���#�&��*a�
��	C����-Wf���7�Ga��,N��������b��7B��v�C��C�#C8tJ��������EY����%�����}�&�b!}��,K��(�"V�*[�yS+g�h$a�����T�mp��'����[.~���
'2
�lx��
�y�~��h��o��x��L�E�Qr��n�������0�75])�A������0E�_$�������DQ���y"�U6�X����h�9M���7V�����i������)��s���yp�O���'���s��C�������g�-����M2l�����,�3Q�
~u�BO���$
CI�Z���5��i
3Q����� 1�!
�#k1�������s=����!,8�x�al��
-�0���I�o��� �����h��������'� ~-�������
������f�[ov�"?�2����w�u�z
(M��&d5�=�~�'��JsC����%tp\���������5�l/[.��_�:�-�R���v@�V:v��:��#u���K�Un�?������=
O��%~��|5u�;o�aT�U������d����=��H|U�rn~@�>]^W��
����b��^�Yo������#��39�v�yQ%�gw����wX�M�
�W%��RV
�I(����{
������&P�h��8	�[>��V����p=������f�$�"�����C�oU6|�s@�ea����r:�g[�u=�0^G�,|&�}>��@(x��U�I��*�m�2�f:]���>���}&�xtK5�G[��?��o=�8����#��tH�����h�x<t�����CIG���t���Y:����qz�P��>��b��y���A�m��t��
���yE]x�5�Z��3��B��z���y&iT�%��Fi���0���mV�+����Ag>���~�;��K)������e��S=
;wX��n�s���2g8������W	��sm�����^����1G]�-)0=��u����;��:lt�u�f;��J�������r���+���;E���\%�B%�
�\yWF%�lV�e?��c*2�[��[Y����r��[9ZD:�#z)(p(��(�|x�,����S���4�>��Q���;�0.��l�JW�����4T�5�+�����0�j�.WO���p���[~a8Kk�v��3��S���S����!����Bv�6|&qy[�eGR�#(2(a�.�((�(s
���)�:=�rI��8o���mZ��\�]0��.���0���U������S�'{O~=��mJ�"8��c��Q�67>V�����Q��Q-J~�k�����/�W��p["�a��2;����FQ�E�6F������2�)(jQ�VB)#S�D��������Em����w?��������}��Vf9K���1yq��oO�~�Yn����4���U
 ��EB�aT����2*������t�m����p��s�
l[O&���U��=�����}rn/����<m��[�BP(�X��y}2���l��MY>��j���`t*8	
�
~{Wm*2�q~c�����U�y ���� 4�������)���@��=��k���0d�����^�!�s���������9��J���o�c���:������a\���59�}?�@���|���P��9���8���Y�w��*���,��?\���\	�TI��;>j�����I�e$"�O�a��9�<��4��T��O��HEb���r�{�a�_GwCk�a��P=��O7���@C0�.���	-*��0�y���8��u1Nv��@��*���8j�c��D��C�R��
���{(,��Mr�f�9�<#�A����s2238���b��9F��u�u�:���A���0�m���#��FD��H�B"��� ���!D��u),��M6#|��1Jj=6��#IIL��VLJ��9�����e��]��b�J1��8�P(�������?"�CG��������X���B4.�����B�]�������?@W�v�JBI��p\��r2�����!>��G��6��?�P"RET|��r1@&����� 
uy��H�|2"���<�M�����<CJ.L�t��������!F����4�D����� �c�?����j��g�?�K#�b�}�"2�:�A#�>
��������	xlqT��y����Fhx�
�YB7XU��U��(]�iO�-���P�9_�9���m������n�'b�ec)���[�A�:"��D}"a�B@s����,[��������wk����V��Kf���7h*N�b������������&����XA\8��l+Z��3�z����9�>!��^ ���8���vB8��v��
��j+��"?w��mE���<����nk
�|�:b������MZ�S�j3��l3��Gs�a�f@���f�X�]�i��w[K�f,��t��-�������1�f���&�����
��o3�5~n�����^iQ�]�W��[��'�88e+�8�A;1���_����"�����7f�xx���djv�����5����3��B�eJ}z%Az�K���f���?�>a�-UsW�����N���|T�%��� �����$���|�m����<%*�0��mc�V&�J���g��n=M �lx�G�x>
��IuIF��R��p��x�����;���XC�#��Ek�T��`m���J2e|@�LX�q�����=�a������c��p���v������]��� z5u��<�
� ���������`v�d��m%+��8'�3�Y	d����sQ�	y�X0�Y����#!26��
�eLw^fY^I&����������f�bM02��$�d���,#\�q1��yA?��}�@�b��_���SB����O�8)�V��;���U�G-�Sw��a?�l�CR��|S��A~��<%Tm�"!��qD��
#2���@��CJ�(�sX�iV�P�V��2��`#2���21MP�i��(|?@A��>�B�#�t��'�����$���<L��H���C i���h|`b>X��7�vX>�
�#
6���?X��KNe����{�v��|N����Y9���>\�rv�lo������CON^��+86Ah@h$q��/��y9>o?� "JD�R��M#r|�~ "8RAJ�(�7V��7��p��Vp���h c}����4@�g����8y�����J��C�w�,�� v�}0
��Dr�`�����)���`�9��`T�ih�^�A����87���JL�3$�r=*@��!�0���4R�S0G!����d;��[��@��d:�@=$/0K��$�b��|����2��h�����;��|��_0 /�x�2�0M������`��	��PA_M�Q:��`0J$� �G�C=��4����+�*%��d����{x��'2��&���@2oK@��O��`��h��]m��-e��]��x��kD���b3���n��p7���u��8V��L��A�4a�'5!Q��o1��,Jr������[�$��x����~-��/�C����_��|�/��5=D��2�-�������k|@��O����]����|6�����d}
o����������Y���&���&��fK�Lnr���p�����EYlb_]m��S����%+�L}���/D�!^�x�uC�J����������3��>����.hF��a�UU%�]W�6���c�1SS�@@b�l_��!M��-z��/:d@�}�-��G��nN��Q%@�:br������of�7���_��of+����]tr��Hw��[v���=��&��;]v��C��������;"��'���_�%eG"��O;������1:dO�9���\s�T"�Y�Q��=~C/^����.k������^����8���>f�fRy��cV�=����1�n~Ou:^�+o@��OV����~b�r���&;=���)*cuU�a�'�Z�m�?���Or����~a{&&v�m$����X2{����B-�m�
����a�'��)�W��I�LJS��5]���:�~����9A��rT���W�����XwC_��L�:eI��\y�3]~�$F�}T��]��������{B>�_vb?�����{��wdZ�{����u.����u�c�	*^zA�Et�^�R�6�"���H�K~�c�s/(�;Q���uR���)��V�:X~s��Hx}o<��D�<w������&�{!���&tv�A�r��j��������,����\�T�w��ja�.�����N�T4^?M�C79�����G����OP���g*��\����5mD���oR���o��vA�9+�������*���,{�2������Y�����)x�A5���?�[���?�p��3����dU�';<�2�}yt��,�'b��l[��r����Od�>Z}��K���s��`�a������+kRC�������������3:R�o�B�
I�/X�Ji+����^�=�@�������2w%%�0�I������o�V����~Z��?�kP���Y�����A�I�(������X�� ���
��YS�eC��K�h,�E m	�drq��������	gg�?/
�|���2'�8������!?i�����n0�9`������L����U"���jxp���>y�yFe��b����j���jr���J%4q�-����@=,�q��1!I7$%����(�)�9�(�����mP�r�W�����o���'���@�e���R�Y|A��O#�:e�����#@�O���;�!������I+DE��'v��]WL�>C��e\���
M�"H:#������g�f���LS�r�ec���R�Xm�l�Q[��	4�kh�k*��I�f�7�&��k>��U��&�B������e�����Q��9�v�f�hHw�����3"�4`>�l������=�Xu���/�ww
���~ 4E�,9=2��OS�64|���Y��	�0>$��7T���}�UJ>�B_����W���L��U��a)[�cW�t�
��<������$�Wh].�M�7:�q���H�H���!eT�y�/ns2����w�Cv.����j����>��1��x�9I�������3I������F������Ep!71@����sF���w2(��l��@��Y��u~z�u

�?��Y�Z�q��������U���_�6HBkJ��6��3���68��������6.�ej����A���*ad�M�E	j:I�����0�����j�U���G��24��r����av�l���M[H��hz.J����bl�����W����vL�,�;�=Z���a-�*�Z�A�c��f���40��Ff�
�������D�a�l���9����X�Lk_,��u��O$g[��q��.�2P%~`k���{T�27���������%�~A�����w��l��Vf
�[���A��P��M`?�R���-���ryO�S�E���[���:d3���2x|��cZ��gFL��U�7-�}��}K&N����N��l�N�W�z2'i�,l^O��u=�d,�x��S�-XA�Y%4�����aw`�zV�jYE��"��sTh��I�vU��~lNE����1�0��^L��T����P
��a��N��{ OcC������c����)�y?6����h�0�y���z1N���P�A�����?��i�!� �������;d�mR�~S��:���^�������a����8CD��tPvI��N����Em�BV������h��:�����
�V'2�i��� 9��(�b���)�S�N�(O��R�K�B/�)�j=�">q�D��H�g�W�8�!EG(R��2EP�'R�'j�H�$yA�#]�T���X�� 	�W��:	A���$��A���N�����C����q9^)��r��NcF�s:����?���9N����p5�H��4��uJ��0�����x�7B����9����-�C/E��V;e����D�i�Q��`�nc�������x���u�n��-�=@>�>�U���K���K
��3KP��Viz��,�d���%}Y`���.Pw�	T��t�Y}�����/o����N�Sp7a�u��1w�i_Ex�C�i�	v�b�'&l�����s@��0���kE]RX���MNTN����
�*'U5%��p�����s7������xyR���u������t��%~�&�t������������tl}�CJ��dl���a���s �'���v���CH��A�}�e��C��F�z��=�������P|BBN���'��6�x
��~�8����MN������,��c ��D�@��.P�o����{(Ba��H�")$7��)��]C�P��Q��������D�)	[����Rc��p���!MI��E�.�����g�@��C�r�:U��jW!��j��+���+�,c���TEY�;z��e�`�������i�mvz��1�m�W����$q����m*C��2�5�p�d����a�(�,�#,�k���s�yG��BJY�/��5�������.DU�H�P��t�4��:��� qB�JQ[���]��2?|v(�x>���h�b�R� �H�$)FJE��pt�A���Q��2G|:��.��>��
�3�=%��\���L'��#���{+�u���dp`f>��nf�7L!����p����>C������c��i\�%%�$'>u�o�������H�Q�9�tj��'�s�+,^R���n�]�����>b:���?}�M�"Z/m��[�=����{�����g���B��E�7>Q��Tc�j�o���&%Q�1�z�R�!�W�(��POz����]������i�y�H�Dqb�tQi���k~`"���v�S\��w�fO���)��08#GM���!=1�
���K����M���G������in��-��!
���G�g�����z,�L<����%�H��FZ�_��_E���{�K�.L?�?y������'�#2. ���t��
r��~Y�sw��-��l1�g����r������c�����3���4��>ch��nU�~p4P���xkh���9��[*���U�������-*P�S�m��D�M{�+���	_��Ty,�D�0f�C2-hY9~���d���HXU2}�����&7,obp���f�I���n�@<��m�w?Nn������7��El�$Z]���\_ ��h���.��sG5����K������:��Y�'!K�<�oh�������	����i�g1�U�����cB��(�V�|@J6I���A�?���a�ZQ6}�O�����������H�V��[���+���;�za�6�}�'���=�P����^�G������;w�Ht��Nv�0���z�����6`��pg)�g���j8��De:�L����/�_�N��z=�~����p�zP0[V���Q?b�0n��O�M���aM��C��p�����d����&�o��W�V;����C�wAyQ��S;���Q��m�=
�$�4l#��zV�0��0��	��z�!����������p������!���%�~��
��1cg/���1�������v���������������{�D�]���{
��qU$k�''k���(	����Q�^�� :T���_V8���z�h�+l�1�
Ve�������	K�g��9vAL�e�J����;v\][B�=���Kh3,���a�/�[n����y�[���'��8���d����G5b����GS���y���*{D|6H��`��%�,��ER���;~Y^M:�4�C���;�'�A�*���W�1��^��;)O�Y������r�P�#I"��j�[>���iXP(+7!^�l�
��iy� iQ����=����9�����3>n�O����2���t)�W
���V�A&|DE��#�s��-���-<(P�"�h���~8N+���V�U���V���-�s���� {*������������};��>0_���~��u
����3dt@����~�U��k8��A��^$��P&���BqE��7��4m���~
o���!��|��b���J ��ii��h�y�&���?���>z��oC:������a���e���eu���7���cw���Ty�r�@6����~�8	fv���b�������7_|��FM������f9��(���Q�1?}�����{������}I�R�/t��{H�����~������yHT����wyz {����=QF�Tv/��S=�����GrWB/�]	�0"q�q��>�>Q�m�����& [���O]~f��<���v��j�Q��1���Da���mR�J��bIW�/�1"����S�+�3�>��!o~:��������1�k]���t����sy%#����������e�7$U��'t$���p��l���*��xt�W����$9c��Y��G�z�4<��,�z9�&�e�{��K����������9�It�����_��Jl�c<D�}2�X�oo���"��y��`O6��_s������5D������x*���xH��sX��
�c��9!���_�U�+Y�_��Wu�Q�Rod�D}�uNRY����{��/!��(T�����A���J����B"��E��W�V���=#�x�����%V��v/��[��_�@�|��W?|���.����E)�E)��H�}J�]�\4!JY�r������D)����	��OG�dK�oU��jY����)^���_?���/�?}��������
�x���:pf
h�}j�]4�>6���g��)���������?%����3�:��f��<;E��1��%�[l� �w�w�������~��H�3X������I�|�w�<��xv�N-�/�\�z�H���l�)"7z����gS@�P7\5�B��E����
a����V�sP��{�yaUgI�i���.zq��W�E/m/`U/Tz^�J^��!
/d
���������e��mH�b&�'�C
h�����
��D�V�Plumu
�mu�I�V��/�����p�x����V�PX���s~�B��;�q/j��v@��cP�� a��UG��k
&��zE�	����o�w~w����pw�y�����[��DOlU�3�'��/��.��.�{^H����/�n[���w|�`�O�Y��R��T(��=�#���OS���~��qSiJ9��+�����M*�s�H�p���9W�9�+��t��4U���E!�P�/����f�����6/`���y5�7�x��@��6,�����oE��2���B�kP�kT0��90�F�{$���,�x/���
���f������`os�u1���!mR7;�Uv������J��	����>4Ol�6�(����P��� ��d|J?����*�k��~��<yU}z����N��*�H?Aj!�wz���g����*meX"
��@^H7�Cl~��a�r+��VR%8k�3�t��b��^�M�
����u�_�.�{3��~[l@~����\�-|+�RG�u�������*f���<�
�?����N/�f��P�:
�����=:�6�d�����=d6��l��i��f!��;�������R�����go�@����b_(�����j�q�>!����x�8�0�4�r=M3��h����t�����mW�X�7�a�{i��=�G����<��!Ir��|OG�^�L5c����V�\d-�^}���;d9����S�#���{��?��/���>����u�������������Oo+�^���Y
��KAR@[�M�EA�����x�}H���b5����}�#7#�p�~��	��,oA$��v��3���t�KAs�����[�
�����:���-r�>�r������9�$�x���`m�0���y(��N��$M&�{o*m�4���_?��c��"B��,���HJ��:f?z�����,����������.������o��<��������I�t]�DR���rH��c8�� }��Q�P~�+E;�v���������#�-��'N/�"3�q&}k4��m
���/��XO�,_{��S\�^Jy|-�%���Fw=���?��H����f.��O~�"��#����j��!u����D����yJ��'���o�����J����E^J��gl���%(��R�^�l���Xd�����_^=wp�=%%]t�wT	w ��U�����R�G������g�q�{���Q@����_���ki���(�"1'}�����9���C�Q���/�o}�B�*�4��"i�P����Bo��K�F�p�wm�CXL��������?}��7���������'l��>�i_��
o�3���B#�-*�p7�J�n����c��i�o���7�O���7?|����������!�W��#r���kZY�d�u�Qw��_����?��|��������?�����w*�6������?��Pi�s�RB�{
��a��������Sx
�����X���eu��3??>+��g����]u�'���(O��v��vm�������~7�v���+}/����7���*5
Z�+���z]�����y������������V���3���{��������:�W4�[��;��'�����������;����S�����"��mD��.�"im���~��w��%��-.��@.���d�������Qx���������f��@G��SD<��'D|7�,
�����zH������+����Q����1�W��gO��O�p�����/������X.$[)���v��e��=/�u��s��eX�����V�C��D%��"����{��4�>����7���]�G��3�s�?�0�X����`�1��������~��wUR����^�������mo���o&H�+\�L�(>��/�����(�t��/�����L���	������*�z��s��eW �}�=-��]<�(�Wm�G�������:Wc�V�P�V��@��u��aoC�Tb�FE���Q��9����8��Cc��g>����}9AO�_������J_
�O��:���*;�o5Pe�vX��!vM��q�o���������-����]9�7�6���|�k���2n���/��O~��t���[�S`Kh
���X:���\�=�5a���c�E�|�������9����t
R�Y>��G����*�PyPy	PyBKh����[T9m��;�������VU.mMY6�J��f��%����{X����W�����(����,�9�)�Q&��i���a9����!�o�;_��<�'���NKbW���:)I�\����W���+�P^����
�������?��o�Z�=K�.d]$�2��������iA��/���B�w���-�"���k�C�[)o`^��"��Z{�X��������^��Y����Z���Z�����C�wN��)�O�����W�P���������������w;�b��S4���F�T���]�R<����<�+�8�k�4�+������9f�����_��3���uDX |M�7i�	�	Q�{���_�t��g�����+�S	�k������Ka�yt��u�nX����Cg���d�f�GG��3vN���9�����#.�y�"
_�D���
�`�������?|��
�F��/@��|��f�����H:�������m���.z>�W��{���5��E������N�hf%�g}N�U��R�v7�&�g�	���7�@"H�b����Y�~�d&@"al��M9��4V�.��^�S���?�1�]�u������\�m��zK����8�����zG��������wh�S�~�'�i?�������o��V�K]o�EY_>������Y��,������BU���]=�6e�)�L��,�;4��y���
f~��SUB���y���=�Ng�mAo������3����hz��������;�s4\�D�����$�7��`����7�����rC��^��YT}3�/��b�$���/�w.6�WV��1���j�	��*�����_=��!����/�+yM^���/+��z���Y�~�+�O���q���K��+W�s�,�/p���).F]wL����H7oyn���OT�'cl��B��U����-��z��4����wF����X��W�in�KO�Qn�?1��<E�{:�B�AV��o����1�Se�}_{���k��\�e�n���:�N1\
�b��k���T^�f���������e7���K'rr���qv�������O3���W;�X�*���bXJzJ�
���0k�fmb��e��m�#���~�,�]l6����	��Ozy����t�:���N����~��U�:dk~�t���wYK�b���'��j�`�'��'X�	���+���i�Q����:a*)v#q��}T�����!%=��9I�������W����%�z�L�����O<H���R8�m��Prbc�e(yUXi����5���"��;!l�������h�N|U��e���St�����S���*�����!)��B:+'6IF�)>
g^����`���-.o���}4n��q�C�M����7����f.�'��/��)u�R��KKr���Q��FL�/�G)}�?�K��<� ����x��%�/�8�86������o�-���c����.l#�b���94<m��������.d#�"�>�O}����*������������*��q�Ut�IE��F���XLU���n����E�C�
D�M]O���5�����H�Qvg�0�F�?RTW|}�����y�]9np�-��A��S��1?����>�����I���?XU2�M��(0�������Z��~y��--�Q���������[)�Q����{���E�jz��T�;���O�������RO��y����G�sU�O�SM��%n���{��wf��AM��� v�j�	���i��]]l����h�45k��Y�x�R%n�.�oo�����~B���]��n����!����3[w�JycC�V��c��
�V���	�%�,z����,�.[;�J���z���	�%�W{�t�~Mu��g����WY?��.s\�����E��LY�����)������~B���b�U���{��	8������U��pn\VX<�����f}�ur�|�����i=���g�|������[�������f]n�o^�v�*���,�]�8N���)��L3E���c���A%��y/���h�L���'4��V�M6i�c����t�X`uP�'�j��X=�;:�v�}�������������a�n������|���j��f������}+ks%!���r�uz����TY�l�����X������JU���T���j����A����[M�;��T���m��~������p2A��y������i"��r�Z���dI2}H�~�����e�vr��=!u��j{���z���u��8,o�5)|���O����Wp�N��E�������EW����o��Heo�F>���>4�Z�����<Ub����'�I+�m�	i_���B$�}"!g?��s#�=2����+L���0G�_o����W�\�/�
�
�,��It`u��>��T�w�to�d�����X|������y_�v��������=��!�>����.y8�7��go���dY��:�O�����1|;�P�	������<G��y�G���D������x;o^���ghm�E��GUJ]�?�PJ����O�^���_�����*�)���!0�m��2��Ad�y��l���e��<�	���D��bi���2�&����,�z�h0���)E�S=c[|� �};PG�wT���Q\���y�c6�w����}|���?acx4����3f&w��z�b���T]�CkPb��$e�}ML������Vt�o|~��zZ��"��_�r�����Sj��H��K��Sm$����`�z�
���Q����+5��b\W��I�}������2�����o���;�{\a3�A����w�x��:�}��l�������9l���|����f�������{�Im�M��@zrR����T�����)J�Z�����a~�������&�yL�|m��r�kVTcB-$����Ra���Vr�j��
��>K+�wF?�����������o���T�/O��������������}}���c��>RB�wt���S�,S(���c�x����-��w�"�_�Z ���P����J��!$����y�3"F�`a���j=,��=N������F���;$�M��r�=����!"#i#2�&"C�I���u�]-���8��G��Z��
�}/���wN�3����^yU]��-����L�_&�D
%SE���S�2�z1F�c�O?�%T��:�VN=�*OJ�6YI��F^�B5�TB�D��
�z?W?[)�z�jO?�)��=���.`r1n'c%�{<�.�_���Zs���=<]��h�L@9��:A~�?���'1�����4���#���f�=~�*I!:����v��n���Tx(w/�v�����(�x5�Q��=�^��Z���D������x����B����o��U}�.�\!7D���Z[{L��7��t�nuo���:A_&ceh=������|NVk��n~�y���G[��?�����3�;\��}�,�����������@L��I���:m�N�u�vu�y/����W/��~^�<�E�L�]%'����z~������v^���u����6�d{�/C�$d�)U&�]�1y��B%r�����0�_p��'a�$
�!������W�T�5rS�+i-7��v��l�/n6����Z��J{�'������hK��"�e���vt���vN�������i����a�k��8���XB��S:c&w�b<�Z��W��L%�����J�8����e�'��Db�����1u�?��Y}����^����o��JIh�-.W�����f�Y��m}�V���;�C�<|�E�3(������&U���&@d\|�J��D����q1G�5Vb��O�'� ���b;/7�$��R����������(�o()���\�y�]\v�L��>{�M��5����<#��nZ���:�����]�}�o\���|�����5�����v�4wo>Q�Gz_}\��W�7/q	n^=�/.��q�J|���'��\����� �����=.��Jr�w���o���l4��������v�����}q���j7lzW����
%��;\n�7r��m>C���������7:�=H&*����A�1��Pg\��)�>|������b�V���a�^z���-XZ�G*�p=��Je���,�i�;��L�\jK��i�U$}�d�1���j��@�_��7��j��L\m!a&��<'����dB5I�N��)�;�~��i�n>��3��q�3�5�I�rmc4N��U[����r7�<�T��8����������:f{�7�r��u}�������0�u���:{g2?�,���t���������VW����������}�U'�������_m�y/�����wWg�:{�tV��n���g�^=�K����k���}w����z�V|�A!{/'6M��Sj���T�){�������.6b6�5����ni����a����S���uu%<h/�wVg�����m�%�z�*��;�_�����R�v��uU���O�.�X��Y����
���]���uE'8�>+��u���o��=��A:�y�/�k������*-��)y���F==d��]���r(������A����A���")w����w��������n-*mZ�������/����fW^n����}T����-���{��x�a�jH�
�M��E����"���=�]C=�{p��$}����-�2��k�k;#u���v��x�F��w����B���o��m:��C�o^���7���d[�4��e���6[��j�s�8IX�	�I�d���K����Au/��P���6���c�[�I+�%���^��V�e���)�j����_~fB�A���H��V�������{w<O��H��7���O�_����o�J0�mv�w����U��T����`7�P{��y8l�I�4��
}�����.s�Q���f�nuy�m���bi��"������A�>��8���#��5o�Cj���F{�'���7o^����j�	�^�ui��AF$[|�H�z������SR~�.������8uI��"��Tr�3��l2�6�R6�
���<�NR�[;�,@s�����=_E���I�w-uM��Z��r�^p�����[����<9M��jC���������9K�Z^����-���h�?��>�]�O}P���a�S�N���cS��[Q�.c���C�����N�������*;F����1�>����
�0uBF��p�-��^��zY���
�N7��*,1����'�m�*;%l�Yq��j;y8�u���ZV�����qQ��m��6\��,�?_����p�����E�����
���~���\M#�T������+���w�b�h9�*-��cR$]w*��s��8Gss�H%�����s4>������)#��{���+���gO����z~�{�)�X���|x}��d�)��F��Z��I,}�+���������@��
}�z�sjD��K�yb��T�T��Oz�gz�	����S���_���zX�n'M�g�-�/^��^={��zgU��y���][����M�|-�	�"��j���j>5\��<&�<��y��4/z����-]�O�(�����ZY�"}'�������@?���f�=;u�����v��UY�|����}�j�~�[���u�]-��z�9
���L���Y=����}`�������S
�)}�����TX��{�r�V5����\UZZ��ovQ}yg-Q������SV�>�Y�_����"�$y���a���U�F����S
���������SW�h|�����-�k,�<S��~(.��c������t��${����;��pc�F��
�������X(|�C��{;��,���e���t��s~�5���{�����~��l���1��c �=����}�5
���{/��E�M����:�R��s����|��������}����l{x �=������{��P�\�S�������v�9/������n����?�����������js��v7�bU5����]T�V�����vweq������y��gY=�~>}Zs\�����m�v�z�K�����l�&������6�l��h^5@S���(������k�������9I}��������t^�I����W�mT�eS���*���dh��o~|����f/�K�n� �����F������}�7D������y�p�����?*��^�z�T>��[�T�a`���:E.�����W/^~���bWnWk�$R���S����DYF���I��*������_�3�������NT}�7��u��	��\��s���5a8.>b�2�WbG�Uk7]tGp��#��>���b��������h����+�D���������q����e���
"����+YpQDf����w�_��X�<���S��OU ����8�W�v�s��LS��8��2��x���,��F �=7���{YY}'��	�������y�sH�&j+f\>�r�)�����G�'x������hk���9:���>���d(�������&��P�Sd"���ot\�s�.�~�n��X/�_xp��n��T�����������o����o�'$�j��������|���<��&��wD�������x�������GEt���h�~������o��a�D�t��|�
)�����K���DJ�$�?���?���������N_���lk��d���P��T�g/�����?<���^���r�>GQ<�����>�d?����/|���[�W�8��}�B��>!���b�K,���������~ �����3������_=�a?1�c$J����_�����/���[�>&�����'�	"�/^~����>�A+������v~�9�'l|�
�� ��$5��q��k�����Z@���� ��t�<EV,+��xA�_p��J������9�H?�h���=����7�������=�_��o��!F/��D��r�	Ao'�-��-!���K��.O� im7|,���T]��D���x��!V�4�nW���>�P
����tum�H`]�%���
����w�T�^�{��������cs�4a����@ �+�Jo�����.������Q�d�${��<�7�?O�G����UqsUM?�������xq���z�>������8of�On����-GE0�dQ�3��c��h4��l�eQ�&�$�IG�$�f��#��0��vW��UQ��y��}��~��~~"���vs�.��h2��U_,��,��,��t�N��d�O��y���-������&���h���QRu��������(z9�x��F_�u�n~{zy=_]=Yl��~�me�~�y{%y�m���������������h:=z}{��bQ�>�??={��D?O����8��������6/K#��^J�FJ=���W���\,�)�_m.��uJ�w�6*7Q3�E��������|�Y����M��W�jw�hs�n~��Z��:�JmawO���wE[�������Ia�24�[�bU_~|RY��G�n��r�^\�.�/�2}ysY
���'U����T��%�����s�_�l7����Ey�E�����J�(��<z����fq5���?���L��k��6]����iS"SE�f���Y����E�u]��$��,���$^3��+�(n�������������h�T��Z��m��������g�j��>:���G���w���e���KS�_������x9K��'O.�e>��Q\Y�,������jS��(;�Gi�k��.IQ�-���Uw��|I�����_I����w�(��p�n+�=�����l�6����n�sVoF����jD8���A&"�8I|`�R13��\L/�cs�b>>b6]����G��3��'�����~{V���#[��O�����P���$I�zBIL�6�5���nv�f�!k|�����q�[�SJF�"����\��v$��z�y���>�xS�����O���>!����(�FH(=��U��)�#J~�|�[�G��T�������������@�>@���z�Mn������T�
�����`|��#$4���{�X�r�����S���O}`����� �{o5��0�{;�{f1�g�%���������C�=,���>�H��f����3�q�[��)}��=&p�{�zN�y��=bC{��~N�y���|��#$�>���	����g:�^R���d�R��jFOA��}o�D:���\���zr�2���E��g\P����`������=!���N�N�Ge�b+��0�jy��LeL+Baf2��
�0�2&�5��%�����|�|���%T5>,��a	U����F�\���BJ��q>��M�__��6%�c���(X��Z��(X���L�e�����O���4?!����(�FHh��o����D)%�����:��x�Qm�	�{�U<
S�S/�������W�rkN4���	��G)}0BB�5�xm�N������D3�	�9DsBI�d���=�$���v��L�r��X��\N�+�����x�����m�����P���Y��@��@�F�:T�`D@�u<�
��
'SI����M)�H�3�3A%H��^���Rg��^���(�^���c�Q�
I)
I�S���Y�F�������j����G�.���������
�bJ��M2�jS�3���������7�0��83M;X��x�q���N�l~�X���G��~���{�q(2~����~�R c�)��z�R����f^�B��/���X��H���nx�1�<T���C�y���1�%�Pe�c�����^R����G��c�����i���?x������h�Y����h��0��������?Z������>������7bAo	�.&��������(I�-�>�:�Vc#��lD@Z���
h�B'�1%���`�������y��*���M��?L���*�S�@�%(�Hfr/r�cEmCxZ�6�gEmCxZ�6hY�����H�1}(6������|����. ��Hi,������d�c�^�_��F������:�Vc#�����sd�3K�u�X���Qg��7x���`�3<H���D�U0X-��'�l�������#~��P���Y�O,-����e���xX6��z2A���6hT���D�l��q����O���cTS�l���)��������dEJ��wD����O�n�o��x"iIu;,���dP������������&��~o||�m~'t��q�0�nw=9��n79�@���L���
�}���'G��lP�=��an���)A�`�AP2%� (@��	�}qC9��H3����'|�>�U���\}�7�&o��+��G���;����c�I�gG��gB���g������&`(^`���fa(^` �����Xs�F���q1o���a���L���`�S�U�0e�03�lx�cPN���C
S?���H���Y�/SF�;�����������o`�~~�+W��>K�X��H����
����r�������&=����>�.���[0PdF��#E��Hs|@���g�O������`Pr`��bPr`+8���X��B0h�@�I�Sa��r��5�C*`>.�g�{�q�<��\����R�3�\l���=~���i�O�Q�������!�$���OmFxF`(��d�������������1�����|���7
2n
p
�!6np�wp9�
�8��`��'�5j#����@����� zj�)ez�1$�6.0$�UL6.0$��*&����h��rMI�k�����$<����������Z�B���{���ddZa�&�fn��M��U��f��M���.'��+q���(���5��P�i����SB=�}�R(��y��94�uY'4�$I����<��
>.�d�6������B���vp��t�K���:�7S�F&<7iZ�S�%<7iF�VVtS"0�j�D�{���	�up4S"���^���Y����.2��0L��E�@�����pa*���� Wf�������(�%������F5�	��r=4�)���Fip3�ke95�c��a�T/[T��]���!��IJC�����K')
e��q�nI���n�V^�L������n�V^�L�����`��{��D)cN�*����k�ufh~���^gj����P��`X���.����	���,>.��.����	���,>.��e��K�'�Hj��R��3HAX�� %�89������t�$O��7�D����\60H�aL��i8F�C|\���tJ�
Rq`9�����\���8�qs�Z�aV%b9��a�!bh2����Hn��HH'!!}�	���X?�['X�E�)�[*���`�c��<�]+�LL�,� ����������E��
C�"VBO+X�������+4iG�[�����D,��t�������]60X�5��b��Yc�.60X������d��{��?=R	O�������m6=m��%Vd�@{2|	������|1_.��a��y"��i?�f%1ff�&�hTx�)�5�l`��;�s���,G��#��aK�/�u?yB����A����A����p�V#��F���u��N���*nij8��M�^��)��96l`��0l�1��$�w'*E�"F����o����������
��!��51@LJX��l��^�T)'�H9�x!#����^�Ho����1����^��xi*x!#Nm����-��
�l�����Y�3��5�:u	L��T������<D�'j��u�]-����`G�b#�����Y'���s�Sl�3q�3l�K�<����W���}x$:> ,A����'Sz{r+�K�$bPnh-%��N�b����
�<�
��:rA�����(���_����bfJT�A�@)M��8�r�#V����@n�����D���Y�3����,(P��dP����|fZ2Q�W%��T��6��V�Dx��I6.p���^��0���q�+��R�rq�'����R��q����4����Y��tZ�(:��w(E�CA���*��|�hu2%��%����r���8�z��N�^�-�3l��<��n�U������������Y��'��h���,�P�� ����\_��������h���+�46i���M�E,P��7�$8����LPp�#��h�w���:�~��^y��i��C���AH%����Uv,��h�kH�0F7��I��<60��Q����a�������A�����"����D���P[��)��@�C��/�W���%P,��}	��u���	W�Mg�
�3r�a62E`3Q���<T���b�����jt�x�c��Uw��]y$h)������Y�/s���Q�UO	��3*��)a���Q0��
?�$��(6	G���F����sQ%In2g��rY
N5�����`���8�
Bg)��G���t_8�~���/74	���0(74�������n�G2*��D���Fddn8��FMdT�h�EMeT���P3�h�x�c�w^
�/����|�������[)�s\')�r��$�POy����/^)�{���92=I�)y�L���O�����
���\C7,z�>np
��l\p�U��g��G���c���#<!��g�_��d�f`z`Xf�e`zx��]��,6�%���7'�L������0!�'����Ne`C��pJlp���c��Y�����
�o������}&�;�������A�Nu��Uf9����ax����V����%�&����E�w����`�G��Oy�{a������[��C����b6��'2��:�����_�f�D�_�lI��LogRnoW��1N$����}"\�\��S�
��Y�0p=���f>0p=XW%�;�HQ?9Rt���~{V���^K2�j�eFX2�V�e���L�����W�5�B$ca�?ms0l�O���?��`��[������3l8*�`����H�>;�>���?k��-�C��0-�
C�+a�m,����}�Z/�Qg(j������
��`����.��G�#�]�xSk�V-�:��1��L� Oz�J�U�+��NSmU���jU�b/Y\��+�'<2�o��/Z�+��j3/a����uC<#�9�<�3���������S;�5�]
K���S������#aw�������Y��\.g8I��8��3w���4qf8a=Mm�k��Q!W��Xd���r��`O� �����,k�����JP��T�2��B@LB��&6������,6���t8T��T<L���+���E��x�tA�}��6��_fJvR#�5NPQ�Ja��>�W&uR��c�(�Lb�X��m��(�\b����m��������-q�[bQ���n���d��D_���n�E�r���R��Rr�Alrba��*�0�����V�kU���#TT�P�YN����S��a�������w~FF��W�@}�:�k���Yg�������1���	����]?9�w��:�o����l�}�B
!1}"(^B��D>���e}7����^����������T��bQn��	�������9��*sd���>�*vxDW�����7����G���'�g�+��:b����IA]V�&�g��w��85r���C�Qw�R1����
�[�����c�su�Zw���h$�-��%����5��D�����<���+�F�~%z�SF��C����Y��1�+��B,~;d��H��|,�9R���kc:zy6F&�Ju�tB}�GB���T���g��d�>�#w�������IH�'3��p�� ��t#w����f�^��n�=b�!7����]5��gM5�;l0Kq�h:f��|!�c�#C���r|@T���Y����xFQ�`.V�{B����� ��H�W	��A-���������g�����&q����!�w�s��Z��5RMig0���^��2j)p
��>�������g�O���x69�JR�h6��h���5bu�(!�*R�Q'� :�,���)A����y�~�����pNL��$��b���8C��CL��4r/W��r�? �����LN�qpB����4���I.j"�f~P������5��:��:�Q'~P'2���TF����2���L*��
.��>���I���zR�8��'\9L;��*op��
��6l_v�Mp�6�����R���?TS����!�i�V�M0�~��P4R����P4r d0�6���h$c�4Xm$����P4�9��W��#���I����M����>�I�g0�h��{�lVku�g$�NL�I�D�C��0#�����Q��UN�4�;I���dX�G���l�8�;3���mps�~������Xl�������c������!���L�w���R�	V���v*��O,".PY�t$h)�q��������Y�/�<�`nVpB�;���<P
���o	_ER��:��0���	�c`u�27z?m����E�>^n�CB8c�E?���vq%�Lp��{����Yi������T=�����~��	K�1I��N����u����Ax��K����_���W,x��JP�w��`%���C+A�E���W�x�p%���*+A��K&.\	�$^�J�'SV�<���� d<�4M����S��_}��}?~���)5��Qz����x���P�p
k(^�1�W�����^C��.�0����P��J�`����`��Z�`�`qm0^����n��/����8Gi�1����2��O����i}�
�X�#��MeX1{�lJk�?�`�����`'��33��}Ql`��(�L��:�@q�3&.���8�a����y:���3_�g&���?3�w�����rXe�V������f��+���
g%���9�0�pF2+���
g#�����0��LdZu2�2�W���f ���GV��GW/��5��L3�@;�7��g�*�Dq��	@��!�9��,OB�`��$!k?��������x|RK=�T��gj����e@j�o���{f!�i��UN��c�Xf:�$�O�)�1v�r?`9��X>�������3P�����sk��[%Y�J��=�g_t_8�~�Rm�"F�a�Y��!�aV�����W�������H�������$��klo����?��x�8����Ox='���|��-8���-�e�8I
f�<�HbjEa��=�����'�q��l�Oc
���7x	����h_x���m�n��������'�Wb�l������-��3���X���d��w/^�*;s�,6#�@�t��
�����?�<)��K�a�%��|z]����t�"t���C>0
w�X��pj���`,�r�B�����0�a�D����:H�r�#�����g��<����j8�=���p��8��~�:��kB��A�!�b���z0������K%KO:s��y*$��>��?�
���`���l���fg�0�����m*����G�jv�<=�O�5��g�_x��/;�P4$��Z4$;�d4$��n�`?�Q�$e
94$��5^d\����Q3��g�*j����b2�XC��q�����XLC��	��&ZO�>�8���?p���tA[��l4�9G��'?��~�#]7/��o&��W����A�a$��������|Xv8O��T��W�u!��L4������Y���T��O��������-��#��s���h������SO�tV���i=�p�����PK��8�
B��i�T�#���-�gj0��Kc���|!�y�-|0�Sga�#V�������W�����<Xk��,�����Z�?�����T�������������������c���y�
>�����Y��4�V�Q���&u�U������������2uP��U6=������ML&~�J>�0��i�x,�bc���.�N�����!h���0�	��nd��d��_P����P�����)��	����0�@�'�X�u�Y_��a*m4�7�t����$���Z'X�n�`�Y	����-��8U��}�C�9�GG��Gb��y}����)�g�j9%0�0BS0%0&���3e2��Bc��E�QN��;�/^�u�0�6u3���%7mp��q��H��m�s���g4���i���w5l�c������1�7�[8`K}�o������:��~c�Zs3/�#�3������5���i]D�������M�,�5�(���PGdM,�#�&�Y����	GqD����"[�8Z��Y�"(E;)"0%Hl�S��&@%Hl�T��*P%H	l�U��&`�K��V�4�M�
����Q����H�����Yg��� :�J�K��	6�Kkp����=�N��E�N��M�N��U�N����pu�!�knCt�\������0���~o�F���T��	He�q����AoT���Q�o�F�����Bd����1n#�\'�]B�5�EkL_�!
w������W	9�J&03��ae*7��<X�6!'X�:!'X�>!'X�B!'X��BN��+���5w
�k.��S�o��Z��������������s�n��9���7����������&��6��`��Q'���:�7l���P���X�������|'m,&#�N�ra���8��������&#�k8������:7��S�l�����q��l�z�d,������K�2,#Q���l���J��G��������8gZ����@h:I���:4�l�
N'{���S6#�[S���WO�:_����������:|Ne>C��+�M�����sS��.��Oq�8*N�:O�
X���k|7`���L{+n�����K�+n����Y^
��h'^a�����3'��M��a|s2���_�7'������i|�r���,���������_-���]�k�]����������������=N1y�U<��8GN��P��{AM��j&��Y�P���3U<��]��l��m��`��~sd���K�h^�5��G���1	7Zx2m(^p<m(ZxFm(^pP�@+�Y��o�H���Z����e[�_�P	��@�G@%Y������f^@�<��L����P��_i�O�1�����pd�#�P0#��(��kE�_�� �B��X���3Jp&�q�
R��-	TVzL��1e����E0�E��<TT�G���������p�c�J?%P���@	�^�(*�j]��V����&B���L#���1�*���1�*���F����b���*���FkB���g�|������
����f�|b��P3PV?�:��A�D�O���>?�����P&^��*�U���@��I5
�/u��N�)L���ky�Ae����R��\P?�rQK)A�a��(��J�S���S�����r��P�ku,T`�&���~c��*kU�_�����e	��V�PY�R;QM95�)
X?�Q�������g'�(�~v��JR��I�Q*�SR�O�;��2?�@���>}�L��r;�Ga�CTy"����Q�R'M1����n&�N��w�m��XD�����p&��I�:�0�`)eR��2+XP	GJ��;�R������(�%�D),+!J�I3�(eAI)Q
�J�RXRJ������4!�W�������(
������(
���R R����UiRJ����������(�'�pISh�`%D),)%JaY	Q�A�Y�R��XUQ��XUQ
D���2_�*MJ�RXVB���R���%��z_)�5����(�e%D),)%JaY	QBI�@�:�<X.�]�6a�~r@���@��s�D����9���_��rs�&*������H�������3%P���@��A
U��j	�G��[����;��#c�T������M���Oq@e�7&�@e�Gc��T��JJ��H�~ 4�zyV��#�=����ez��xX6��2i@Wt{&��p@,!�%��Y�9�r��|d�n���in�nh�jVo��r��$$�%���w�����e2e0����d��
��4�����6�2����������9�2M�K�����sX(V��A�LXyP7�q2a�a�t���vs�����������:����z��������m�-����9���������f�g��~3G2qA����4���M��Q����4a��&�|"�	+���K���6�b�G�f�C��v<<R>>R7~�?8�5������������V��5��"5k	��Z'h��5��Z'h��5���:��8&h�?�Q��67&hQ��67&h�M-'�F�6�F�BS�-4�F������]���>�BB��x�����~l>����O�w*����"sz&�|���������D�u]��P���v|@���g�O�;Z��K����Vd�[�(�hM��bMRQ�SQ�S�������5a��y�����2aekb�$�����L��JT��wG����t_8�~r����_`M�/�&��XFDkr=_��K��h*��1tB&#���;�g,7�pS�k�S<������r���D��{w�;> LJ����'G�M��%&e�@�2|	�Ia1)�$��H��N����*�ij��pq�k�Q.n
pM6���\S<wp9����S���f�d���D�&��� l����
��� �����M��rJ�DjO�����X��udv2x��y��Vx��y1G�1q��22��x��yaW��������u7i����O�poR�������!H��C�*�74��MX�W���f���x���V��{��q��K_������J���	^�d��l\p�V^J.R�W���
���u'If�.����3�j� ������a����0~�CT'��/J�ez*��G��'�}�����Z6r����l� �}..��������c��	���!/)h_��	�}��`]���
=�A���4(7��%�w�����2�E���|��-��n�p�i*�z������Nql�	�F����rld�;2�A.2�5��g#�p_�0�zB��y���;O��w���z�&8�r�&8�z�&8�r�F�(���,��E��Yc#v���F�����k��|
���'T��#779�F�c#������ds
.� �3����t#��q_9�.�!#��E6d� �k�1@v����ANzx.r���9���\� ��[p�����CDn������qmL�����`*g�8���r��'\d0�c$���u�`����nL3����i��5��\zP7����
������62�A�r
���'�C=h^Na#���s�'�[��d����8�A=�[��d���<ld�������:+�����<��\d��0n��"O�qOx2���h�h�2���"'��5h+Z!;ImE+d����2'�p�@�=4kGJ��f=�]L8��Y�Ql��DEA��NTl]�DEA��(I�}��������
@��@��@TRC���Vv��u��0l���1��!K���C�lG=��S�m��h����@�@b�27-��P�G������Q����
�������/8�nP�K�������B+��A/�B+�>G���n�R���g���t�,�Y����6�?UA��M��	�	����F'�'(�F��*
k>.�'�������H��D,��H��K$��,����+P*����pC���va���"�mFfZ.2�va���"�mF�^.2�vAC��;����.Ej^�'����l��f&�R��(OR�X�IJ���<I1�k���@OPG��f$Q3�O�2��#'����EN�y����d��/y�9����Wr��c��Q�F6�0����D��#��`���39��h�E{r��9���6��V�����9���d�!.r
�����@6���"�2��m[��X��G��a6��g��Y����S�A��1��d����l� "M�>�y���Z_�B��$�L$����ssj6r����FN�Q���@6*?y�9�_�,%I��#��3a��g���pC�0(9��rC�1(9� Fn���o���jc!�Q,�|��(��S����p�����`L������������s��u=��T���w|@���g�OV��@[2|	�A���_`Z���-�X4����l,H|�	?�03�	e#'���p�S�l�,l� -y�9���nE�~qd�>�~{V����~���@	L���F@	���d�����ET~�)v �Yz$O�T�����Q������lN��ENed�j9e63>� �0y
�M+�|� ����I"'���.4�-��9�14H�� PYF��|$@��'?-���hZ@C%����9�R�����GJ�	>�~���+g�_Xw,8Cj����R��7�*�d�����!��'+�d����r���C��*����@7�4H��a�Dz��q~���9LOe��A�t�T6��k���Lq���kfs��7�o�vk0CR'��m7[�>�������d�J9���.r��+\�1@��D���`�WG��gb=�}����7\���Q�
W+%�Fn�vq�����|"^}7���<�D�5��x��t�G��96�Kk���`�2�y��;�a��}�T�5/�`s�<����D��|$[F���� ��1E%d2BW��P�����^���|�z{V��{������9zpB8N���	%s��?�'�S���p��P2~����e��� ������*�����q�~)����jy]�����f�+�����M{{ss�1*��vU��w�m�4/���c�F��2�3��QB���p����f%-	a��|�h��~�\�{��_��h��n����]_.���jsY;�����f�d9/��w����C��]�&�wO��F��l:���h�U-x~�az���c����yr6�'����������v�E�-�3�L��_M:����>�o��g���a5���~"���W�o��x�"	�h0��+OU�2�"L4@�j:��.Y���#Y���\i���.�>�5=��Y? �Di��!��]����$�5K����!�m>S�
k��Xi����D��4S�]�k�����<��(�S���d��L��:���L�f����X�JJ�����:0�6C2��m��&LW2�h�S,�M�Pm)���@���bl(��-�b��*�3c�b&V:V�
�V���1���*b�d������J��k�1�C�V�j3����>R�m'�2�[P)��)+�,H(S�Rn�re�� �u�T��Lyfjo
Hm&�"i�)7����L�-7�������X�\��h
�5�U�
���c��r�]�bM��������+#��v�N�rq�`�u����;$"��C:����62����a*�Vj�*a@�X5��[�w�n����������4�C���D��B�d4O�a��I�V'P�h��t�x����������x�HI�jbe�n*���+��H��Z6E+4A�3���\��*I*,�L�����P��1��Q&Bi&i����T2���f�!���v2�=ZA��T��@S�q��I�"��q��D�-Wz2����1����HZ,�BKT�2m�����T��F4�8V��t��!*cqL�>���"�D\1K'�|��D��D1�$O%����I&��Mg#qp���I�B6F��W���h���j�����z����v;����5O��������k����C��������GxM��Mk�*�fs�6B����i�X�moO�]�lZ3��N-"���b��Gv������ZhV����C��{�I�=d�3'!7-C���V�{a�y-M+�nM>��5�B,�EE��~Y����,za:��{���S���<t~I���&_��d26-�{���{R����f�����*>��`S����5����{6x����{���{���m�+�
��(�l��4�[�}2l(�u���b��DD.����G��zB�[���z�&��������*x@��zBk�#'6�vIhf� 9����	��VEOh�T��
�[45a��d�)dM[
��|1_.A���G�����7|j3D��s�O�O���'���+,�Q��v�r�yrL{'����`�Z��1�G������Im�`�?�r�U������aFa)��7���l����
K������-��������������}�K^��Zg�����f^VVt��+�;���=j%e�]o;��e�����b�.�m�H+���-#y[\���=<���
@��R�K����bBX�)"k��a�Im�4��3���\q�(�+���d�L����iG�B_]�/i��8�S)�)S��R���t���%8���~��QT�l�������-U�w���*��4pv��������y(2��6�TAj2��������6���ytD�4m�5�"��w������9�f`��_d��������0(O�!Q�b�U���L���c�r%J@�$�y�e����@���	�x&���#�34����"M,Aq������� �L=�)3������L��gC��bq��80C���/��N� �@�hbD�@f�@���������,F{X��NfJ�����	��E�dG��3,����9V*q�b�fXl$H�C��gBX$7�5#��������!���-&��kH�n���L
xc)m���Ni;����!�2���a���`���5�x|��8Z2J�zr�T{�F|��X7����z8�M-�����VG�v�@��["FCr�!#�;���W8�8�<6����@��RC���d{�#LL��pf�}�$�N�U76�%��J$�@�1{�L<(V�r������*���<d���JSD{���`�f^\���x*
�����z��L1����Dl}����>�j��@�d,�[�����eSj��Sa���#&�P�s�1�����E�-��S��i����H�M>�Z65�H<�cy,@���GS�����+�����m�������n���1���� jJ�?=S#���#/D�t�d�:����C0m�nT��&�q�����u]��:/�vF�������0vr��	�k�\`v�(e<�CE)��r9�lcv�e��r�=E.��=RP����Sl�~��<�j���S`d���A%��!�CL�~e��X�F =��<�k���-h1S�r���
�[��D���K��+��'�7Sc�����v�Q��X���V�CpQ���st�D=?��Z�'[���OS_x9�I���9sj~i���_:����X����~�����A?���g��er!B.����;c����*q_xf�=E:S���,��h|����O�*>#�MK�^������jU0��}(H���aG�<�G�����)�c8�~��z��N��3Xq�HWb2x�c�mY/pjF������;6���=��#zov{djo����\�J)�h$��O����>�0H��%L�H�K.V
G$.k��K
��bM,5���5U���j.V�c4��5S��0��"V*bi������b��!l,�L��2QaI��d"�61|���p�xm��J,5N����G�yX>��v���VXB�T<(4��8��k/O&xX�L����X<��a�d����	�*���N��]N5��
z*$y)-�hj��Z����P�hc��jdm�����TAS���b�i������h����>��)�^�a��t���Z�)}�R�@S�T=Y��b���Lp��
�i�z�@�����4�9b-�h�r,rr,H����N� \,�c��s��N���bl,��c�\��X������8V/�`c�9S}�.���s�/�
�ZWw�V�h���#S��;25{wG�|;wd��sG��>wdj���L�@���O����{jZp����
&W�l0��e���������>^n�������p���N-/x����|�<��PK|��.���}���~�lZ����^����p�(���b/p�(��VF ���Mj��+�����ZX�HA��x���`<RP�2)����OB����/|jA�>����Z���O-���� ��|ox�������p'|j9�>����Zr�����P���r�;2�8��L-U�#SW���2�;2���������i&�����W���o�G�>v}��?Z���
v�,�vt�ug�]�i���q�TS]���)4���GS�Fd���'J��M�Se�?������IK�GSb���j4�����o��4Sw�-�`/djLD�6�������	XJ.��	jnW>��	X�
.��	����u��0Nx��O��H�	�Z��U��p�����1P��?j���@
_��!
08GCF7g`j�s��<g`j�s�FB�f^�w�Al�785R�A�FN?��H��Y���������T�e��M��>����%�hJ�M��>��Ej&=4�4�M�H���k�3�"��X��j�V6l�)�����?�b��X������baV�?�R�2s`b�3����R�����2��0��
2��'��>Af�L,����6���������=2acb��^���N�� ?�����p��V�������zZ����x�h�x4���=�4�9I�X���h+U��ace
��9l����hN���X��O�"l,^���xm����=�g�O,e�������W�:2P~�?����@���(�Xep����[���)��6�C���|j����b��v�|��~p��P��7�E�F@���(�R%���.N({��r�=�S�O����<�k]S+&�As��8R3���&���<���v��.7T�vC�c7T�EvC��e�������<��|��td/x~��8���k��Q����W/^V,���nW��g�����C�$\��3&��)�F�4�B8XH�eN��
t�S,>����T������]B��)��[%�<4�7�U�P�����Qz�����/���3����	�� �����_W|�\�X���}B�n?t���C�Jm?t���I�A���d1oY%���XO`9H\�m2�c�b����~�\�����~���.��}�KrV��5��r?���q�{������bK�YHTk��t�v����k']�];��'��I�f�N�m0�v�l�Y��f�����l0���*�4��	���7�<�&��q/}�����@r/}��-����/^�@w$�K�N�x������@�5!��qt����6�do�)$��MDr��($�vr��($�vr�($�vr�($O�O8lf�	<Y?�����	��AO�&�<1� H�h� }��	�xBT�������6�do�)$��MDr�($�vr�($�vr�*)$�vr�*)$O�O�c�hO��&�d�h� }��	��A/�&��a� H��i��A���p2�{��0�$�� ��8�+�M��-6�t���C��m?t���C��f�����d"���V^YH�mYo[�������q�S�7�����+�=��b��eTr%b�(�P-OF9H<� �m*�%��%e/������lSj���wW�9���)��x&u�;���)�%�L,��2�����"�=��7;|��Z
��:Pp��������Y��&���Z/A0�Io�)�E ��3
v��%��G�%�zH/��CzI,O����^�'��Qx�^���:z$���:z$V �
�9�(Io�AG�����rC���������5�>X<y�a������������)�le���+��4\�v������B�;�>��z�����oO�yX\�����������V�i���H��oG�|_���r�^���1�\b}X����oO�yX\�����������V�i���H��oG��O��#a�u:����bq���p.����������3ktg�s&KIw`�{��X9�X�E>U����x������<,���3?��	����}	�G0�p��7�V�W����n�Y�r�7�����;�0��`v�x���q�RK����,5(����Dl�c�)�����|0�d35S�$�����i��AI�OJ�|rPR��?(i�JBI�WBz���N�0_��{	V�(��Ovc6�7js�x�6�;r_���,�WG��g����������;��p�bx����U�~s[�~���2�T�< �_H���D���u.?��X���z���C���A����A���r^�$Q�v�H����J����w `V����x-^��.$������B��h��0��k��^�-��n��v������d4�v���6u����h4\6!�G�������Z_\����u���������$�P�V�4�z
���"@�D�mj�u����=4h=F
Z�Q7�}�vs��4h������^�
�k�9{+4�V�1��f>�v���������a{o����������(\o�a4D}�����Uth����~T�����2���Csm7W/F���n�^�����f�k�i@3�e�b?�^��!@?sC�4z$��a�	�7�]|Q�����s�xQwe��y~�����qrOt��67�h��M.os����}�R){��G�����3��9rc���;���>��?�"��R�~�s��h<����s��h6�����,	�d{�z����6��}98r~����<�I�Ovv�����\4�]�����V�A�����`�e�����fa�C3e6�y���Z_�=���M��^a��d����]6Wv���z�}ud8|�b�4�pp����#��w��jFa�.)�K�#���op�x��}��mO���wG��[�v�a�~q�a��q�����-L���G�d6oTj?�p.��s�x�����1���_��O����+�������y�k;__Q�����s@���jU!!L����L�w����;��E���b��r�f�R8x�������|��j�:�3_l�i�'&���=����=����=����(�
@E	s*J��������n
F@��d���'v���z.o�����z.w�o���WG��g����;��ppG�p��F��H2sMt��������yX�Q����������_0h"�7�U�R��zuDo?�������p?t����;��lwJD<�BS��~�\�{��_��h��n����__.���jsY���|W>Y������G��������t�|��]�..���x4�d����s3����3��>���gY=n�}��6o/�)}T�Aq��~�}����Z-�������"�_]m~)��-���E�\m�EY5hk�����������n����6c�3?�~y��*:���?����R�v���u�.�7���Oj�o�rs�]�z�cj���o/�nVw�������6�K�h�Y�7M�N���(�o���w{��I!M������`�d� <+W���<O�T(���#S�t��3cr�J��A��i�fK�IE�t����W�K9r�9�F��[�lv���8�_D��U�\2��Z0A��0c�j�C8�AX9� �g�G
B�Y�l�U�X�C�;�����4"!xP���Yp���i���Q�&E�1/L���Z�q<����rt(*��2�Qi:c��4O�t��"U�#B-���%�2���^Q@��t)qY��,�2He9��R.0���{lE��5Bv��f���@�����YN-����
r�p���Z�)�h9)�����.�O<,g�T����!r�p���&Z�)�h9W����a7aT��&3�����L���""V^/��GM��h1q�A�z��1a�<��J+2DL�Q�+P��b��s2�ANl��vt���N8������uZ���b;��%D��n�^o��G�x�NC-*(��\�;�dv�Q���"��,M0��z#4*>�wH7�v���w�EQ�Ru��2���et��\qW�'�l�x���*��0Qy�U��s0Hn���w���%���m��������q�����7�z����~��\W]��90}��_5a����{}X�����r�non6��A�Z�E��]�u�|���m��,���_�����q�� [���x|���q����o��-NS�Z�~�o�,�5���\\U�����}%��]]�W���B�j���r����l�w��]���~�_}��s[\U��������wO�L5P���HE��$���uV�q���������"��T]QMr�-$�G1��,��(���b����-�(��FQv]Gb�� B�1����$#��vm�#d���s����Hm�'�FA��J�3
2�$#�]�
���������l�`�Aac�.�8M2�>4!w���g U�ED�B��@FUqq��o���[�M0�V�B	�@F�1�����!O �C�O!L�{�
#��Z�J����N�Z����l�)�`�A�`F�'3��v�^����l�)�`�AAe�.����y�#4��&�|�1�Ew.L]����	�C�+V�0��1Q��:(��LC�C�(�m���[�M(�V�	�PD�Q&7���m��rN����G�|�2@�S��JT�#�)&�R�T���<�<���N���d���K9Q�P�N�����,����|K>���(���"Ls����P����q`]G+X�Q��Z?|?��s��osSl����z���P0�p�0d��.���su/��&Pk
��;P��C�p`=��X�1���>t�{�r�Q�9l��9E���Z��������a�-��|C)@}�;
���Z��'�C�Y0�'�3�����e"�����Ui�Q�����7��C��r��o������`�F�*�	�4�^��/��������c�N[F��|���!))3��\p*���>V��J���S�!�,���tC
���u���/4%�>���$g8m8M?�=��r4�S^����2��Oa�p��CJ6o�Z8����B��x#%H49�J������B_}���i�B�X0�63��
V�|b�,�M�^#",�m��Ch���F����z�W!�L��QL��9;n�a���m8%59�
�9F�U"����f^�sA_�N%�;}qI��2���dD�����:V;��$����Z��.�
�����%#��rFRtV�:W�[��[�r ���h;s��c�IN)��T� lx+
]�wx��"Nj�c��-���K]���a�u��,MJ�����*oml���>�eL;���������fY�-�E}������k�eTn����2Zo�&/�Y����`�����j;�E
�l�c������47�����7"O4L�N����
����+M�e����4�C���._7�zY��b���3,]��^GiB���>�u���O�;/�ru][>r�w�v�(WVv����=�J]�I'�K8U+�W2BS�[�T���%�:Sac����ctT�Z��-�xW3��6�;�
�����J&������=#pM����(u]�F�0�Q�����b3�{���1���x�����������Q�u���R/��^�Lp����]���8u�� �"I4T�?�K�R���9w�������$7���n�J��� W���Nx���������W'�g�����C\���e.�����5�~�J)H�eo(5���Hi���~��~��������(e)��Yqb&��/�"����sdMH������=�����g�d%��-%.��W�))��x���1z�n��,�7)��
�";�����t��v�K�����'}���v�����^����,�����L~0-F���Dte��f����ot���.����:r�.%7���^��;r��V�z5:�]��^lW�H��;9l�
�U(���1�n2B�f��G�6N�<-�='�6�L����I]��2�I��j�N�XdU'�)V�2L"����s\)A���^x��3|�:!��'�v{w&u�.C�IV��2!K?���Z'���|��``����!w&�����;��Oc4x�"�fS
Q*�������r]�
���X��CR�y��Of5z���>^n��C�u�F��z��(������C�m��.�3���	�fb-��f7���%���bA��������=G�p��g9������jl��������_~x�M4_.����E"g0y���N�Q/���7��wr���������*[�Bq�l+GR"�\���l�����ot�9#����M*9v����(��x�0��0Xa��Z����mS;��RM��qU���	�}�S�g@��2������V����s�zP2W&�rl������Ng��9������.��u�)����7����XTur�L�p�;:x�D�l;��T�P��S
��
�]��Rg��}E+b�i�����<��7��W��b�����}�-����c�n�������hwS,V������*��[�4_+��r�����l=}�'��,������Ok��7�_VWW�����~������\��f�xWF�]4���Z�����|m��_����/�E��U�d�j���5�����uK
M2�:����tV�=�����I>s��`��n�C\w(��f�m�"T��r}�fR�rvd�-<+��g����g��oW�pw{s��VnJe�j���7G�?���X��'\��e�c{�0a�#
d�yw,,�Wa8DVd�B����`d�,�FX�#�T�`&��?�H���H�����o0��Za��H�p	��� "��N����XX#*��/c�}��,���3D5Z��vg�IN�����(��Mq&�DK��8�����Z�i.�xP�����8��`�M���gv���]������Y6�Ufl�[������0���5�����
+�#��������rX�o��hi?l����~\-I��|$>�������,��]�:ZGG��n��Z����dke�d]���v���*��mk����k)7_63���:>!Ca����omE�UR��G�����Ty��`���������G���w���e�+��n��r�^\�.�/����js������Ms������._z�Z/���I1���>y2O��r����h�e����Y\�?~���w=�g��D������xWl�����h���D������z���vuU�W�t����'Q�������Q��?��vW�Ul��u�Y�W`���>F��f�|�^���'�nHU2���F��guF��C�U
v��w��U��|;��g�q�xs<����z��D���TN���B��'�2,se���H�����V�Q8S�'l��g"�'*p=5c��Zmd�R�:Y�������x������aSU?hX���%���L�j��e�n~{U����
��
�c�u�e������_*���G��t�5����"��c��z?��gS�_������Dm���O���)(��qH�E�zm��B��|Adj�����P5���	�i��J��E�&U���xd��N�l=8��PF����(�l��uK�<�����n���9��W-g'��_}|��x}��j�~�����|�����?���m����2��qh��#�-�I����Xt�����6�2����F��,��P[����1�$���e���&�WI�F��,�6��j��|%j��]
SS!��?��?�������}4�a�m�1��G�G��66v.!��:`��C��9���x����;���3�yXv@��,���4g�hA���l.�x����\Q����������=�nl��o�*)��J�f��{��M������Q��.$lK��E�Yb�����h�����s6w��E��iD�E#�Z��Z���H������H\��R�^�9���;$��0�"C{��cQG�[�����"��^x����M~U������Rk��ES
:,{w��G��������&���g�b>�4�,8	�v����:7��||7���������c����l���E�h�C�z�a5�Ir[A����-�z:��v��4u�I����/�ZB�~�f;�?�m��]4_G�����,����|��:�w7����kt��������>�6����Isj��f�)v����f�\����l��V�y�+7��e5���R�
����
���l���
V�a�kO��q�M��\M@q��~W|X7eT\n�����MU���Y�
Y��/��5����*��zU�����/���z���zE�7��,��UGx����Gm��"���]s��+�X�'c\�BYyd�������(���"K�u��9������jw��t�Ev�fl� ��Y��Z�G6V=��������q�������"�Q>���\|'2�b�v�3�^����$��Ey�vg�y}��F!�Q��M��*
;S��hX��?��$Q��������z48,��XT#������$���o����5����J��$��[-��
��s��P��Xu����&�;2]���V�}��Sb���_[I���}e�E������"*�o� ����X�:v������E��Ni\��T�G���$���-2��[�m���
��Z`iN+s5�$i��Z}�
��I�`5�H��9dm�"�������<���7���������QQ��W���i�
��agL����X��Fb�4���m�8���6��Y��d�
e	k�h%j"]��H1"��6���=(�����.�q$i���) ��VC% qK�����8��Q�j6gN�;S�B%��RP)���7�H�"���U��-i����#�������BX'�QV�����6�<(!���J}�C�>x�B�Rf^St�*����`59Q`��]��%a��$h&�	��
��n���t�;
�9�a�}X�u��������v��pioN�����8����&ID�2�/A��v��u�'M���QF|j����ILH^���,��o����Os�3��Q�]����6O)�\�:��I�i�(���R��	:�6O���qg��<��a�u�B���j���O�V�mT<�����������N%��e�j���E�������Dn�Y� ��.8��V������T�,H�%����&�=���&���=��a���*���nv������T����f���
�^m�xB'Sn��D^�c�6�0��U���=��)�3�S����@�/��hH=�g`�t>3_��O���_g?��7�1f#��u�������3P���|����9������w��;���$���X\�j�4P���\M�O���Y����p.����u{�����|������~��G|������������
�Nh��91P�����Z�#����n>^e��{-;X�����Nu�����`�H��I2�j�����r��D��q>\6��i%���{JX��!��3�r�|&{�7�i������ �%G�M����������RL��n]d���if�!n�c���6yV�u|[�Kkv8p����(E�V+���!����.�V�
�X90����
��"1S��$�^ % �mr��v�*�6�6k���������f���(���\`?��!���qS��[���U�
�$u�DyF���L���IB�s�Hs���������5�
^�����6$
K����D\_�''�SmH�5���4�a���d�l��6��	�j��?w�(� .Z"�X���$1$+Y���T�I,��T)�'%$�6IX�D�L����X$-�R ?2p�6������������X0���a.��F���u�[8��2�X�h�<6�W� \�s���Z�|;1&�����>�W{#�����?��`-��	����T�������U7j�JM�����H��G�i����#'jL��$�;����������=��!�_W�����1�OlVc^�{�~��W:��t��E��z*��a#��`�Hk3�g����%��n�L���y�c�FvX����<���?�����zW��=�Z���a��4e�3ej��m�x��g�jl�����2�6�ek�2A��,��B�����#M��Y��f�`C>�%��ML3q�945[|�������l2���l�	�����f��,J��&*Nf����i%	&9I���;��j.2��S�:����i��������	��'hP[�	7�?3a�c:���-��f���
#�m[�'ly4��s�'��i���2]��Ts���)��{�7�5������p��6�@���/��f�p���p%���t����%��P^]�Z�����3�����0?��A>��u�
�+Pm.��=-F)X)���4�[�����T��#�hl�m�Pvu��JV{� [�2RN��Y���)�M�i�a�5p���p�g������K��o�[l��G���w��mF-Y�/u�O�MF��G����anJ>�K>��s>��R>lO���n�f`�Lj��X����� V�`Yk{�bV���+`z^k_VlQS�
|	n�S��K$U����pQt=aL�[�]x@�(U4\<�c����e�����9���t]��}��#��`��#��J~t��"���2�� h+y���;O���� �+y������(2����<��I�"�
X���"����`�T�����1n�
�g]rw���0^�<z3d�+w��)�"��Z4i��m��Q�4�l�e�G[5m�����b����o��^�
4d��6�f����+�E�����}3k���g�E��5W�r'��t+N�3�k��t�r��%��&�NwX��8m7��=�-�������~Va��D]� ���5�uc��~Z5��v����U}�.M9�p��,63'�i���+cS����	k�'��sg���4�]����G�-����X�M������2@���88��W��ET���jc����L���5^V�8��jGRQ�w1h����*��.�{��{���v�Fg�A��9w'���t�i�������9���h�}��s�	�l�}l�{���'�|�*r���|~��~�&M������e���������w,�/w�,.`�_������������s��OE;����S�����nK�"7z�W����~�/������E����j��W��z�n�e5�G��]��[�����}�dX?��M�R�_=����&���6��*�n��9'�����c���cV9=����VQ=+��x�D��M�u$kS�]���ZD�o�,^�(���L�g��_'�_��$q����`�����]�Ar�D��B+r�2E�lg����R��o-(yI��iNp�d��vz������`"���"���v\-7�����k�b,^F�.mx��AnNG��!��8h��4�R�Iy����Jyk/�`3N�6����W�
�A��i��o�`82��p���3Km���R3�T���������1��@��qpL8�u��h���ZyoM82�C��A�
�0��gZVHx��
.g��'z��|���R(��U�����3�*X<�(�WA��1���X���k`��H��"��3v�,�E\�uE�)d������b�|]G������=�]��W�PU�I��j�\C����FSe���
�]�����09M
",����@���R���Yr�:������� ���U���9�@�hQ���
���c���Ftq4X�<��^��7a����tBQ(�hSo[�����<�/^��S���P��H��Dz��^��s�'cE���GC����yfF�x���DZ�k��]�'="]����%Fv���=R�����1�SU��3�~JRd$�~
�k��]��2�����q
�K�D
r�zO�����`iz=X�pg���i�P1H.���/���t��]E���]���0�I~���eG1���0���m!l;�����8G����'����� ��9�V+�hHcE�S��
���2�c5�U�qy�q����yf����?�8W�*0�����^��e��A��o����������n�������7��t1NR>��/�"U�+&:�i2�!�i1���?��&����;d\M���?]�����<��j>�������C����������V�1��JzO�qQIN,�p<��P�ck����O�,m���y:��������&�����c]����<?��]����#�[�T<���	)�wC�Q�J�s�		��U���z+��Ny^��]<�j�W.���T��4�����l�������I�2Uq�(��zBE>H�5����������_#>�>��zW���2TU=Mk�NV�>8�SF
�Q����v���I�P�&���������g�\��ly����QXfzB�O��r&��<4�X���NX�=����l�z�@����������X�9��s�+� �����1��3`���6��O��*y��^�G�$D1���q'�����[i�s���������j�t*��VOotdU��Z���[������0I�|o#I���7�����K������x�V[��KW�o�-������[���Z]��<��8�c��i�UY������V�x�X�#9������%1�~������K1
���X��;#���)v��/���:���cn�����l���Mu�LO�VJ�tO���C�E���1X_��1X=J�n�d�p/�U��(n���fn�4�P�Q#��D�9��&�}U?���3�����zG��i/��Zi-�a����^����j�e�G�q���|����(�!OyIj;>���~P�{0�]�`����
��}W{	�� t����y�bE������$&`�� ����1������R��t^%0�f:�y�0�{�����p�����R�G�M��F��),�sr��o������(��h�gEz��$FS`�s6��>�w*������EtO����@�T$������>�{*�f/�6��.�t2��o�7�G���	,���@�U	�}��CH�+���5�����>������?�>T�U�F*p�����&
NR�+�l�k�i_�h�A$����$�
���AIj��E�G5�c8�Gh�Y)o�-�����q]4�C���i�Q��^
���>�UT>��i@���6��c�n�4�ET��T#k�qI�Qx%�MT�BT�4��wQ1PY��A8��U���������
_�
_�w��z����)�g�C�^�S��W
�W,�s�����_�5�����_�/_��V]�Rt�Y����0pE��m� t�@�q����.��cB����`K�jh�=T�
�R�c���g"��������b��@���,�_�BA��9�!�;E�e�si���UZ�4�/��"��F��;k{~dX��z�;H���Fb�Gt<�v�'���A��0�G���9!�A����5�E]���5&�Ww�!A��#�y���9pTu���N�{<������x��P�	4v��=QPk:���{c���v�������	�,��'�[�|k�|�O?U9��^:��c#����K�����7�>�?U����|1��dz��.7!����y����NM�Qz�j��`g8���,b�_���?�U?��f��8�y�Al�HE�q!M���pD�Z+D����h�67Z�u6Sv��LD����,��qiD�S���W�`%b�E���nj"�J�D�-�0b�(m���EX�X����=���7��U1�w����UM�p����tT�-�wq�$�fQ�K�5D�P����9��0ls:D��;���	���mM_g������N#5�����4�eW��Yr�l�����tY��Sq����)��������zQ������E����E��uN���Z�� K5V1�����abUk�����I�0
�B���������:��������(��<�/�d4$`4��>���������nyzQ��yq�������_��7M�Ha{%Mo��8��Rd�h� �T�:�$��<w.�F���_+��>������W]��4���Y�m�����M
��7E��'9Q��b�������aC�������z�����n�/@���,C��z:��s�d������8�u/��f�<�o��z��
&��z]�.]_�pu_gb}/�W��gb�vz$v���t�i�`	`�������dI_0�����Ra����r�����P�n���Hz?�����2b��Vwyc�u/?�<M����>z��{R4^>e�cbG]o���^�ds����K�?��}���"@�=���-W�
���ahU���d��w$���T
��E��)����#��\�sI�g��C�����0���jDD��o8�^��,�\@z��{]4��hY#�H�@���w�"�r�U���As~H��a����4���;������DNiA%��@�������7��\V�4 Cd�m��
��eF��e�Ti�"�Y��A�Baix����L��9��
�G��5�����Pp(��tQhpd�x�a��wb����tI��"��Z*�oqG����m��#��-����qZ�M|�����oI|�-����!/�	���UA_F���c�8����wtrDXcF�����q:�T�z��.����t�\��Q�b��Lc����Q�"��(.xWA2�@Fl������}��3��hz���y|~�d�'(�������{f\�l�/&|;�~c�o��^
5���|u�#7n��!{l��
3^�0e���=>d5��6�����`�&1
{
�	
Q���z��Jc�g�"n�LF`�y��=��w��/���-��	c�[��$O������=����v�q�N�j�������
����I~���#��Q6��_�w�3"�����Q��}'h����W6r��~��n������W5���A;��2S��F;mL����f
�5eB��^��� :DZ�M\73��<lg��:���vJ}���
�+;��m�)J��A{W	jp���e�����>yh��4��N��=���Ni$�b#��� �H�T����q+�S������B��e�@:������tX�N��%b�I����{��
�u�+���T��*	 �,�R X�����CV�A+w��J:�u0B��w����u0���'-��xZ�i@3������H��WL�i�?Su��>�����j/j�������~���7����D����8o�A�n���t��y��������i�-��2��35�S��oeF0� /�HF����s���~oX�~�L]RkY�����	V
k�2���i��^�7��g��h�%���>j�t���6�s��aP�3S������=	�I:�����hl�gf!�\��s�$g�>�!_��g�����f��~���7���;�@����|fO�A�L-9����g�O��e����4��3{
��j`[�������K)�1}f��q��=a�{s5��e��g��	V
kD�y����f��YW=�Xr�>s��,���3��<��'��a�oT��5F���>�%.�t����4?%��;��[��[V�2��E7��M/W�_W�U�`i���~��;]$E����2wFE�}u�LT��*���8���m�j6�eok��(���N���eDs��ho��d�[���s���O����VN=��y���m����S��"5�)��h�&�P��MU��S��w�����~$}~����D:��9�G��x�LU����N|�|$e^:js&H%��pi�<Uo���-VhO���Q��@��yv���i�Y�u!���f��4�:��>�S}�T�jA<��Z5�J�����e��&T�Q70�������?Y��f�A��:"GDVqIX�����hr������[��$�y��	���bFH���@%JTAC�hbs�^u���j���1����0���/}���9�L��XS)���(�D�m�������0�&J��Q4������_��Ax!*�-�u�aE6��Q#���J[x�(���pQ��M���jtP�";W<4�H�:b�P�a]����g���{`*�W��NN)����
5��f��Mv����l;��|�0��P���L�ie=)��L���UO����O-������5Hl��5��hb]����p��.k��x"pb�~j��p�N�N6'V�T�/��C68��`����~�rs��Sv�]�r&KB�����V��cu��G�
i�v2J���xZ�����i�]/�C@��f��`*���>3�K�0:��)�����Y���~p�k�H��*}[���m6'L%��\E]Z��:�"w�����O�;�K{��
����hu�9mU��#s=l��E�?XK�()�8�������E�+W/U���0H�������P��$�����z6R'���~kZ�q2�ti�)^��L�����������3v's�`�����0��@�W�:Sn-��Z�7��)�v����.����t�\�����?^S��Gb��V��>��a|��A����2f���'KjM�.j���lu���E�����~I��E�_E�Z$y	��7x���6fT������*���
��^��U������x�M@�P����a��@~�rD�h�+�t��<�Q�D�7?�u��Q�mBQ���#:�51T�:xQ�x���?{6��}��[��i�.9��f�f�<�����n���������<���l ���M��i�[e����k�!���6�x��,�[`�$'v�w�9��\��Jg����7�3��"�Oz�_�T�w���[����l4�G~T6�����z��E�k.��,�G|�I�`�G��w����#�~�{v�����#���?��J�H��v���-O�������������IRT��|�lL�n�U!��9N��%@���T(�&4��
�[�CM�x%\/��@�4�������[�9�8�9r��a[%]�I�@�^���_K�:Fz�	��\��oz-t@Z'R�3iI�N�����)��]p����Qj] E�c��Y�C�'�`+Q�5j[�7e:`���h���������X�����1�o*����~�"��Lw�Y��������Q�.
V���
����py����l�:<��� ��k�U�5�C0o�;zKi�]C@�8�u�b�p��z��Evv!f�>j��i���eF�J�-x.��'� �h�������h���b)�`�s���:~�^�7����������^^�y����|����?�����}v��������]��q��]V�c��������8i��jU�M�L�l��i��D�Q������\=�LM�vwK�l"�x2`�a��?�,>pQ�BE6�d��z�7���-����h�����V|���O5��LC���� �	z#<0�������-�������������70��!�q�'�&�L���������x�:�N>�.�'��8.�����K��f��3K�_���?P���1\�.L�����n����vE���3|�~Eak9|�����!��)W���4�L�5cw	4��i��F/-F1��\���������mA����4B@�8����x9
�>���z�����Y��7��L��{f�s����r~0���
����F��A�Q�)�Q�c*8���4��^4�u�X���]=\��"���t4z��b�4���N�����{�*q�]C`�H�e�c�u0���'~`g�]E[���B�3z�l�0�J8���t,�HPt�.��$�w)A�89�Q������\V��^1��eK3v^U~��%���u��\�s(�5��,�U.�r+���x��"�J��Jr�q���Kr�������h����O��;E�����:.�Y��	.Xe��1��l�e+��"�#z��=\�u����%��PUK�u��Zg]���V�s����de��n7}�j�������FiD�x�l�X��e��B?@�n�v�H�lLOY��%z�������w�$V���[���!�I�A�.Q��K������J
K�����@pn�����������uu����/o�����^�^Z�T��4�#o5�i�& i��xb��Y|��'�e���M@�w>��~�TZz��w�����3S��m4��$�Y`��p��L��$h0)��F�<`� ��V��$h"��Z�������@��$`*��A�\ �p��L�nD6���E��i"w�i2g����2@tB�v���M1]6�S��"���#~f�����_;xb�8��o�S�����0;�~A:����H���K-M���� ��	��QD����.A~�Y�LW�$�_ 1�$a~���X�Li�/��A�_ �����_��_�!��_��Xq�`	����/pSL�
�T��@�H��x��F|�T�kO,v�O����SA�@�`�����	�9E�>p��.����W
��h�Np������������Z��h,F�<��w��C��i���Qe��q.���J+^�(����3C���^�VCK��m�v�������:=]�0��V�|Q�C�g��m����d�S���&��[W���������/_�`zc�t�����7���=x���=Jw��'�q���v�cC�<�������l�2���0�?<;d�{U$�dsq���)�b^�R��nvZ���W/��m�?��!U����������Y����7�����b7u���?P�!����m��f��z58}���_�N����q��3�~3[P��J���/���f�%�v1S/
������FP8��yz�)��5|��+�EzS#w��r��x�WM�Q�I���UEa�Ye�Hj\�oEjaM��0	��'v+A�\��R%R���D�	��(f��1
������#��g�{m�����N<R����3��m8����������������0G�f����[IG9ZD4Jk'^�*������Fl�
VE�Q
�����j�(}�6������Fl�
�F���N�s�H|&
�ENY�6���C���)�KO����s��������`�&�Q#.����7K�nNU�!��S��8�_�n� }���d��%��,�s�jI_1�1�!C��	��jq�r]?�F����"h�o� ��S5�Y�������0�E �����\�xp>U�W��V�����q�(����zW0l� -|�����
5%[I���!��9�gX��("��r�(~�;(eS#���$b�;,k�-�&��.rY�����:'�F����0���Q�.�|��5vdv��dK'cw���{�����L/v��5���'���T-���*�]�6�Z�~B��y��e�*�n�����91��n��"�����j$�^N��yi�������p9���.�.��$g�B,���[�.6���������+�����R+k�@Q�T���Z��(��.��c�j���y��t�)	!502^��I����mi���v��N�M��=�Gn�Sg�Hv{`�oE�c�t�W	���uSCZ]��x����l��r��������������.��������MQ�SR�����X:��gi�b:L�2(�:��E������,W�D��b���Y���0�Ga��^�2��Y�!us1�?f�/���;eKPc�K��&u�,������e*�T��
SygD�4��?=h�������m�)���~avW�G+%�v��rP�>(��X���6/�6�;�@�L���L��Hw��w��������BXV�
PP����R������m�(AX<�T���q��<�
�~^�
�u�*@�9��������"��ma�Y��2��xV��^�Jk�������x�OO�5gV���w�/R����3�'�����D�h�T�J7Le��U�r�"���{o�NC��6l�V�IEe���O��!�}�"lei���0g`��/���M��EQ��:�n�=���Z��|���F��iN��gh��t�����w LY�
�s���
��tC6^g�J��-�<a�E����sn����s�,���`�����npJO�y�v����{�Q-\����x�)+���d��8o9��y`�=w��2��.�����0Un.����/x�L��pD:Q����X�����&���e�T����;��OH����c6��.tL���+��MQZ���J�[7Z�D���������Zx�������Tb-D��zWOk)V=GY��
^e�*$�&4����F�����_������@1(�����\���I���	�p�@��X��S�l���AxA@Hhj�+4](�g.��/`�n�!\��
E���wiG.^��P���M_y�h1T�R�~C��h�0�0�'���_8��&.l����~C��QiY��_�pq1����Q��[�cp�	�*�
P�Kc���I\(����mB��g�`��Jid��T\���:���C|������ ��:���P"2�c����
�K�w��4,9�Os���=9�ru�s�����@�u#OXt�%�<���4z�1k�)���-@�]���Q�;h,��Si9����2�YS*r:��L��-��8Q�|��t���z�����3���-��rB45�f%F=����v�h��};�"�Ek;.��&	�^u����n%	��_CQg=��Z�VbQ����{��m��V�L���=#��4�e��-X*7t�Yx��w����
�k�����E�����n�Z]U�F��
d�����y�US�;k�%M��	���PS�(w��)vp�GS���~��6��xg��=u�M�X3�'Hw�fT�������z�OX�gs��$rE���E���n1�h)�Yj�����"�����S���ZF�1��3p|�}�ej��9\���*�.Y����3=���&��Z��8�������DEO�X���M�	:u:tE��@]�snZ:��&�J��T�](��Z�����w��jd�aA5�\��[�Z�������^��V�$i��(�F(�)�f(����'+���w��=N4����-�xWt��;����Q�Q�2��a�zA=GY���]D�������B��e��^xj��-��������KK��i4�:����<�N�W�y��Ak��d�*�&���V���^+�L�U�U	�S�D[�zQ� �7��W����^�\?m������W�_�����������y����z��������88d����a���9�|f���z�������@@���R���N�U����Zr���L7�S���#Qy������3m�?��A��
�6\
�rw�>��(:+�����H�eM%�����F	;��;c:J)�ABP$�@��!����z��������	��
f��*�\g4Ns(#@o�kw��jf���Z�@�(^�`�WR�������@��z�x�b�[����+9E�
�j=������)�m��J�~�FC�]��+��jG�^m����fk��-9�����
>����6�eE:)����9�w�����1m�K������x���]�x'nl�$�9����L�3G��\]�K�{
����}*9PeT�[�����Y�V�*����	��sue�$�����#�z�w���n���V��y���O�P��+����#�-��R�wL?��3B�/y7G/|~6(�6�Je������Y[~L�O��
�B`����_��~���\�<�W���<�Q����E3�U����1�e��xHGp��Z�S�q�h4Ly 7Jg���Z��N2���������U��CP%sS^I9�69������;��W_��?n�N�v���|�%y����vm��J/L[&�D�- ��G����L������R�G�D�g���x�k�4�S�,1��	n{+���%�]xR
�K�@��uf���9�E+����^��Uo��g���\��L���s��L�j_��&���z�!h�M���W��q�1��EX�*�R�~���������d�pY�G���OT%��j��7�
�������!��z?P�w� d7D�.��KU������<R:�y�������N$m�n �y���E�MLA��(�9XDq���:�2aP���0)�)�Gy�Aj?FP��L#����������*^�����6�(���O�,1�N��Q�7�`������*�.����Wp���	��(�/��?��o����3�vi.b�7R�������Y���c�{���q��������x�9�������������������d�(o�4�	����%.-���}�i�������%V|������NC[G}�d6c������R��j�l����~C��>�{���.�i�]���S#�/a���wU�����4�0��_�<�z����L�LG-c�^p�V/e@F���S�WN>q� e>eG�����C��N��Y6��<U�W;������25 p�^r��k];ec6��\
�>s� �mAg���5�l��dG���kYR�=R��:Z��j�-���(Q7.k�dM��E5��S��B��XwWM��&��������6�4�Q��^��#[��������u�e��0F����������h��{�s��������1J�%�{�x�	7�#�h<^���k��+?5�x�`�mK�h���h<�=z�����J�/��Fma$j,^K�o,��K�1�������1E{��������M��*�4��F��(ohAve���K�7�:^���l����D�3�^��Vd��F��C����n�(<�4Qx���8������$����C��?�B6Cn�z�U���+��C��H�����I���F���=F`�C����'�A��q�Q�H�|aIP>�X��F�R��Q������/��	�D���(|��t�_��&C��px�Q�8 
�EE�c������a���q�#I
��}1EQ8��������i�We�����Q�p_hQ>�Qxn���W��)[3cF��XQ�/�(
�(<7������'�
�Q�������r��qp�i�����~������kR^e�����o/���������A�x�\|�jV�Z<aGl
"������G\G�S�0>�����4�������x�7%F�����|��}Ae��a9w�8�a�
a�b��c�����<�Z�������Zz[�<�V�6�.�o��rV-|l������R�:���mlU�N���D^����H�	���y_#,�b�}��Yy�������"�k�7��
q�'Y^"S<������T�%��*y���������C�U5���$��Y��->�s���O�a���t>1�4���x�M����b�n�u4�2��s�&,��ETh�����>��w�X9i�����������^<����8k���	��;�����+~�58�c1��P�8�}~b��z�J"���8Z|���
�`w[m��n���������C�RV��yfH��Q
���D����j&�m�?���_t�[�2@�n,Qc���1P-1fg�r��F 
�V�XkG���*��gBp;ycv��+h���������/�I��Fv���8���q��az���#����s���u8cvd�+u���L�k���^g�dE���1;[A����ACp���!^������5P����`�	�M�{�4�9��c��~YL�p���U;c���C�e��jU�����z�^}���>&�r��(��	)����@��z���N���\��
��q�F������X���%�������(��F�{C�Bvv����x=��H�.�3<4�?��'
�Y������<�"\/]��������`��������@[4-���1C�q`��
3
����V�~����h�u�1C�H�$B�F!5;(q��x:�2o����r����I����U?�(�b�)t����b�o
����M�������,����m� dO����`U��<��A_��8 q��<�#Y� XU�����xw��}���r�en�E@=8�����A�{�E�9?����������W����@���kt��u9�z	��kq�����;�V�o�Z��oY�0�]�X7�
�3Hd��uSZ���Q}���K�.�l���
p�"�[��^_'������}Z�-/A,����]N�gz=*�
��n��c3�2�[T�r��Q�<�h�4��V��V�D�T�!WH
���Y�"!Z��0++�F
YjB�L����������m���tX�m"v�4�����q��3�|3J��&J��*+H�����?wu��#��k6T��j}Xm���2R�;�����]����IG�!�\���y���`������k��F}�S����=ZZ������U�k�^��������Q�4f=����7� �<��~/Y�@5������e�����h(���jv���%Z����S��r �V/e0z
G�4\���2��DW���q-.K�ya{HZ�U���Q,m�s�3�2�.	��nc��D�7<#����G�����'�T�	6�x�����j>�1�(�2�C����
UOX`i<�>J9���,x�T���:����e���h�b����|R���>�7��c1�L��"��K��`<F 
���B�*D!�������
C4��f)47c��ed�G�;c0��#�\i���|�����]v���`�k�f�F�KC_�x�,��V��������
����6�/A�-Z��aQ�b���
u�����j8r-(D�uY�Z��r��~�i=�e ��K/�)4Q���`��"����#�`����"8B$����?_S��{t�����xM'�*�9����sJU>UU~�m�������*���S9�0���9U�e��T��g����5f777Ww'�^+�Zgk�C����"���z�@��4*P)�RA�"U
n*	TANI��R,t(R(����* ��Q�J)�:�i@��YO��*�g���Y�N5<�\���5S�D�e��������.��?)�1[T�������/�P�����|����;��s�w����]M���j�����Q�	�[J�6UPlf3pO�����B
��Ww+�yuG[�u��b�jf::���>4�L����l�*eK<w��V���*CDw�Y��!��T�cXA\�����E����MF�rDt�������y`����qNsF�����)���Oa���yn�;8f�v�������0I�J��b1:���BQ�$���B^��Q��Z���z��w���������)�pQ�w�Pp�����q�G�#�bm�6����L(�/~�R�<3%y�������?��8���S�����l2p��O�������Y�d�%���������-�"�Pu��7�w��f�*�K�=��3�P�hN����S��6��h��~X�V$��q9�2k��\�.��+e����~��P���WP;�����*u����&�Q���{���-td|�*�K���Q�o������AZ9�m���y���&nwE�s`�%��9��^n�����h�E3��h�o�R�%��#�"��w�L;!D�N�J
\Q���I�<Q���@����2�[#4����B�[+4��'�;Y�A>!T��%(k ���Ns
�Q������P��a�\H�%����*�bW�3*6��������rf�l�(��fg*TdV������V��k����}&���)5��f,��jt�����=��E�,Hj�8�"���_�UC���~�
oO��`�q)��E�j��A�8 dj@#��8*��zM�:=���QO�z=�)qonM�Z-��A:=���Y��A������?����W�(a�����F6="%8��0;��-����[.��������DJws�%2������Q��u�=������J\�����N��A��'�M��.I
WTsO��{��-���ZQ���[
���
��=���{L���M|Q�)WA	��|�NE3�%)L
�1U�?I�n�s�S��jH*��Z-�d�44����)id`����0H��IZl��������?n��B]YJI7��%F.m@l@�5M5���X��8�>C�O�����TR�����@��@�E���O�|Q[7��o��#���%����cN&���
�^����1;������O�B3f��(��	fSt�NK�� ���*S�?unD���kk�QWb�����
��6*m���rL1t����vi�h���������&���3,�	U-�u���V�Z�Z2�Xq������/m��L9��^q��35��W����U_��f����\q#��)��^q#��A��~hd��F���7.��V����l����5�Cq����2�gf#M-�K��L��|�"�-a��T��|��v��[}>����^|������]Fo�����4Y�"��;A�?'����r���9<��Q5����y���^���Uh��j���"s�v�=B@�Y�F�^^� j"�/!��Y����fA+����7"�{;T0�4/�pF�*�q3�?���7a�2�b�{'T8���W<�F�*	�w�\��5a�{y��	*|:�����
�$����(�6�	;g�J���O�0K|'1�/~��j������1��qU}^�"��g����`����\K�j'��Y�@�������(���Qa�i�BC�ja��95-��=�B%U5�n0��ht<�Q�5n4:��C��G������,c~�S-j���(Ki(�Ei�L��)$eoE�5	���D������l\�>��0
8��Tfht�kQ��^p��7���&���Z$<
�U�������\�S�K��5/`���r?H���hBv���E�c�6�h�d�m��
� �j�4-Zs]�s���R�Q�?�<�t6 ����Ap�|,�cF�����D����7����=TC8vE��q`��[+�T�*P;��*$al�&���x�����~|���c_��g�l������n8
�{������r���m���i�ZO�J����y�w`g<W0�$��z	�h��~�~~��w�s�
�yfu�/��W�k�)�4�����
+���R�F�^��*$��B��:�l�	vW�1C[oC5�iD�7|
������{����${����#>	����� 5Q�*�Ac������zC����u������!�q-�����C}V�i��ST����l%�7����@
�+��.������:~�^�7������*�������^�D@_s'����zw�'�����2s�� W����U�!�`N
c�`��1{�w-j�e4�:�������!s��x:��F��e8���>���B��v<��!��`�c��61��{n�U2�2Y�X	1G�8D���� �NM����|���l�w�~I&������j�/�
��,X�s�_|a�5\�(OfcCF.�h��:
,�S�9T��!�I�1���v��k@���Fh����A�Eu\!2�r��"7�n"1�]�Dmy`I�
15_p���4���9�Y���WE��&�T+��V�Q��B@�:�w��R�jP�!�Y�USN�������3�_x�l:����RT�����hH�'�x�#�`��*n�e�f�:t��a��1{Z,��������W��r�~���HOmVI�C������z�]�3��.O�����d��.�����.Q����Z�qs�j��n
h�.�(��W���j��z�}����.a�n�'��S���u��,����'.��0�(�
�r��>����*��A�����{)����)`gA���P(�s<>�������-���sT����gH��Y����?�6�|��:5�����0��<>���w}��AV��$�y�z+�w���C����8N��@��HA`��!@��E�
���`
���[������W�U%bO�@����h>>�����T��Pr������u�����Y.���v�����I��d��sTA}��h��9u�x>EU�)�]��{�Z9
�#T1W�{Q����wb�������A�����k{���Q����\Q7�z���i����6B�[S��K1�����g�B@�l[��������,�~��o���J���w!��:���������O���U<�#V���q�����[�������-���@G���5���%Gu�Z(V�Ti�.�#J��lg	5��DU�����7����O���%
M��MU8�Rb=3�^������'R�Aw��g4����v���D������o�7��{������R�J*��]%������~��N�e������{�����V����j�L�
������>_?,7�`�8��wUN��1����������r��{2�l?�W����5K���.����k���^����#sf+�"��h���EA��S+5�P�k�r�z�_y��� �*=H�)*�0�UJ({��:���7;�
��K\1P�>x�&�C�Ev�R.l�Y	��f�M��L<X��$ ����M����7��E����L
�.4sI������'��7o�?M��i(FL
)�y9U�����X��P�������R�7���$��9�	T��@�n�]����T��j~7����9C�dWy�_�#�����H���y������U��%}�Z���US79�9"��8A�
|���~��+�
�#�I��X
%����07������XAPRT
�XQ�����pn�*J�����8����.�j�[����F��r�X�[���NsJp>U�|X�����T�1"F�<��f�e�2��*���������z�L'j�yZo���`��s���7��-�����������qD�F=���u��i���V��&UE�a@I�4���d���	?B\�x����N�9��y]cF���!��������D���1y��LY��bf��S����QO��hU���$�����^�������pY)�AYio4AV:e��*	{IL����$��g��aH��=��N��+Q��o�:F+��"#f�+�d��1Y�t�f�+y�Md�M��*�4bv�Rcxv�Z��n��j��&�C��u������r�d���Y���������w����D���E~"��Tg����9�4���4�������
e]?�q����95������+���H�[��{5W	����2CC�]��K�������f��w9/[��M��S����%1����/�hac��R����{CU����[T�q���\�X�G+��(I��j�
��Kh1��YHl_�A��(E������3��6c�3M���	����N��f��G�?���m��D�4�Lp=eWfU��w�r�ai�\l�2���\��o�{�#��R���wJ���[A���`5~+����6�%�����o��N���^.\_~�/T �P�VT�~�r����������1Mz�[}A3b��bQ��V����� �9��(1Mz�[���q��!�o�������	$�vj�J�f{�[���q���u1��9��x���`���9H}������=,���mXF�[���TT�
b�a2R1d�u����h�k���\��(�5A�����J
�}��ji'wo��n�
�IN�����r�WI(}$,����f-���t>�j�S�mTV��x�?X�hRm����J����2���{��[�Dx��F����V�";���P�h�I�%��e�U�"���h
���|��H�0���efRL0IL�2���S�e�S9�F&�e�W7��u����r\f<�|"_f|���YKp�I�9�H��IY�".3f=�T��u[f�l����2�n"��t8J���.^fe��vJe��{��r�Je�%�����C�e���t��T{�^f�/*Zf<��n!/3�����8b��q��TJ���_-}n�^f�i�1)��Y�e��'@�hc��Z�eF��"58,3�D�T�D�������2 �x�	�-3�]f�w�����J�U_����P��� �IRU�{T�0�O��TE��*��W<U�]1��E�@��xc�w��2�:��1����0QJ2�S)|���(o�f��cX)��AS���S���&%�������_^s���-�����?�;J����pUrE��s��{����b=Z�QI]����\qT�yQ���d���N=�+M�@;��B���^�!�ADhOH`��G�;���%~���
��������!�Y���C�i�t������9:Y��R����i�<�sg�*��T�Rr!����Hv�A)j�=?��T�h������W��!
.�Q��=�������!�X��+E��K����W����JC���$��n���AZ/(��0���>��2O����^Rxi<�`�����\�)�{42N�B��HQ���q�8H�M�\ty~�i�!uq��xZn�0�N��z9����g��~���R�{��wZ����UP��8�}���/o����j4W�|@��@��H�KV#^$*w�54D���9� �p�L��jb�,f��z���^:/��<�P;��������F�qPN���u�p���w�7?�[� ����?�$.\��x��@=�"$p�Gu�����7;x�W�|�K(r
��a�-�2j�����c����!DkSk��/4
�-�7�5��Iy�����3b��g��kiCcG��*�S��H�*�b`�%�6���de���W�������OO��c�e���MyAe>��d��l�����x����w��|����]vT��������|L2UU�>1���O���l�)�x��[�r�w�t.IA����i�����/�W/��)���o��{��:���?�}`�sF]#{Tg��0��@,F8��=VR�BO��%� ��Y�+~\W��3��� G���J�\�v	Z�>i��5���!kV<A�R�D�(��W���7'>?3�;��q�j�
�������*yj[���/�i�a�NO"S�5uJn�q�	�[:[�V}����k U�f'�#���W#r����\��m�R%��N��L�37�c��c}��d�����6����;m���{�J������X���*����*��)��p���%�������o�+0�Dk�M�a�mE�H��?Q��B�|-��)�v�n������$+����?��wq��(Gh0�7���u����M�H�d��kG\x,�)�����-v�_2���_����z��-};��D��M���N�cp�m�j}ab���>�Y(��@Kp�&0�<��=iP�T�1\p�zi<h;���;���)u��j�`F.�Du�K�wz��Q����=�(��{�������m���S�����>���!-��O�I=p~/pl�)��w�.C%dX�
sJux?\�������@\���|����_������$f��r��O���q=s�(���(2GU3�7!�L����S�-��>�s�sa������t����|D�)�����6�����2�{��e8K:!���*~�rqI���3�&x'^�t�{����B/^���6��0���)��@O�R�#\n�7���=����>X"\dk��X� 0�N�!>z�(Hc7#tO?"-�����o_���(7E\�(�H�n��k���*�F���!��D��4��S�Cn�
A�`�����)��=��m�Y�~����T��)�qdW���A���p�]�{&G�_L��V.p��S_P���1����1��nC�P��
�48��z����~�x�����N���h�!�p���3��%�����k��q@�y����zx���$f�O�D��b���A��sR
����7���(���G��S��G�y���\Rm����t�%�������������U(����?�������s�9�o7����I�:�O���}xB_��2�����X��?`��6����&�
�,���B�@��$�L1k�����e�����&�����#F�����6Bx���H"���d �m�y��>Q2�I�j!��?`�M$Sx&�WS������6��H T��F�+��ebSp�%z*��f��-_e�v��%K�{�N,{���r���vD�(Z/��>�n	UYt���B���
6TK�W�4%\��
B�Um����[������M���v�Af}��������
B����o�)��7\Dl��%�N�Q����B�@n�D��U������.�`q��"S���m5WG���L6��.So���m
'[���/������B%x�Bh	`��E�r�:�{��p2�7�a��w?/�/��q���v}<�w���}�����NA`�/��N��)le�v�lo�V��!�n�-zD�;;�.�Jwa�����s�rk���
d��.���d�4�[��CpCx�c!en�������<>��z*�^�3��q$�������pf2����O+Z#<O-R]������R'��Ru$�Vj��p���}���RL��-U��]��X6A�[���������q~d�8����8AS)�]���6Z���7�C�*��N��X�-���:S�9M�����l���*��k�fC���#��4����j"d����eA[u�����^NFe��;Q�j����C�0,��E��W�QU^���v�b���0IU��T����k�P��P���������p&����aP�eLu�W5c/L���<Q��0������������CL�����X�#}l�w$N���K�?�(����H�1��L 8��� <����S��q���S|$�GV�R�;���+p�����ZV���&����(yj *�����x���L?a�0�����7��������GvS����a����������i{���O_������7/�����|�����^�qC�EII2g7�w�2�s������(��S!-�V�'�S�^�>��SYW���_|�e��E�j�"�D��	��^����������
���j�!����V��vL\�p}�\�k$�(����������y*��B��V�Y���n�"�����K7��e��-�N��b����<�w�W������������y��������Aq�U��jy�v��!j.��:��7�2���j����	%���\m9%���d��a��w������"QA:Q�Y`��lL93ORpq�7�(+w����d�lPP��e����Og���l��G�������6�Y~"
M��7Yn��Jo.��o�=��?eK���U�Xg���N1eL��x$���xqO}I�������)%������z������R}���1`R9
���L@J"�&��p�Zc]$c{Ly�f��]��c�G�LaG;����rG�>��7(��D�dm�8�ZH�����{,�y�f�T�^T�R1�"jm�����b�1|az�S�f�F���
q�������e��z�B����������L=_�z�<���I�c�'��xQ~B�3�UYjT�����w��hT�Z�U����;m1����{x���9���(���B�
U��_����s����S�U����W$L�DT97����������@j��h����
���9B�H�J�Z������&��$�EvX��4Gr�n��&YGd�6�{2�F)�c�U�c��y2l$��0+�n����7��<^����L������V*��o���������#�?�g��z�G�g���;�G�������,:����?��\m��;�|y���>e[�}l��J������j�'���C������������b����3�
�@��.X_�B�����{�Z�x��M��U�:�����/����_�%���_�)h��`n[)�N-b�q`2.�9i��K
�wW���A��\��K	7'E��mS�3�vi.P,
a�=!(��vL�����z��3��6��(R����M�����]RU�n�-�C��q���}�rQ4��.��Y�[�*3���y��4{3������p�n�6��q�I�������y����*+����l���V�U�S��[�zQ�z����S#��yC �>�wU�^��@�4��W_��k�������C�{T�����K��|�Z��>q��'���P���z����:��P��#����C��>�y3k��K���S�v���k����!s��<��a��5�_�w$��.�5I�3���=8����9kS�]#����4���]���H� ��MM�0��z`�|k���0�#0�#�7)${��a��T0�JH��������0������������j6eM�����j�!!���b:�S�K� o9�&j�E)a�D0�$/ePF"*�z��6�9���V��o>Ds���aD���0��f���W������ "|�
Q�1��!���_s��a�F�a��$����p_V��K	�3%�tY�g�:��3��1�����:|:~�Vy��Z��QeQ�[n�_�h���y+��b���4{�
f����=�m=��n9����YB}���<0O��=���{��cB/B�����p�T�P8`L�����K8NR��������.#�b�DS3������?f��u�9b��Z
����A:����k�e�.�9b=����5b���4IY�W4����Vh>��}T,��i���P�+ht�;��U��iW%����|:����0��W9�k���� �f����e����5��@%u9�m����|��.(>�R	V;��_��$
�������Q�1��:�4��d�2�l-�\��o��SO����(#��`�%����@{���R	�'�4�IG�eg�uQS�h����Rh�Z��7�( ��h���Z(�:�������yhqI�A%����j���Y ����!����GpE�6;����S�,F-FJ�Lcx�lN�52e�����;2�H�{�,^�0��3C6*+	������V��d��
����1�����j�����b���@����G�s-Q���~c��k#�di����i�E��^���An@������{X�����i��~W���>��X�����z�����A���h�����ec���������!u��W���������1\��(�o�Q���?�~;h����g�'^���o>y5��!����;a?�l�
-X&_z�F�R�N��Vs�_���+�s�r(E���xCF@�Y��lq�3v�z.	�B��B4Wz���!�;,L�	���������^�:E��F5<�A��A��PC�u,0�H����m�+�1
�j��'�����>�5�EZ&���>o^~����W/��^��sJ���
��3S������j~����RN1U���p�^����M���R�i����+O�)pY��TS |tH�I_x���K��?�UG�K/0t��6������	���������*�B���w��9����5��:�MD�m��,�<f'�uJ�:����16���z��{�#����������x���X����B��h��]���k��d�7����O������v�<�?�_�.�[��O��������rw3x������zwK��QJ7���r�x��^sBu�?�x����6�����
��'V�y"t�����s��{<��'�X��W��������=t
��$�.4G�����x�P��W�����0���q:�Q���O��#�Z�}�5�w%w\�	<|�3����G���x��y�R�5�xm�Q}r.M���/�.�o�����s�$�w~�p�w^�{T�K<��������y��.�2O������*;��{|��q�������N*�;IS���=j���UF����W��E��F_��pUPsh6XZP$���W(����_ �}�4-�hn���������//�~x��d�C���i��nVZ`m�8J6=�"�/���K��Z����x�������[�P����r\�L��hO�!�RS��L�/o^�x��
��
����<�T��$����R/��]j!�R��K"h�-�@
xk�J��K��������
!�R�A��������/~R�������������l)���D��T
H3~#@��R�D�8.L8~����/^����?�����K
-@3IR�
�
�<�S��!~�m:;��ZJk�� ��.�}�����X#�D�Ee0���
)O�<8�����t���B��-g ��Y���{N�z���t�zY{���;Wv_�����1�����s]�u��)�:�0�^�g�Z|�������S�8��	�^�+T�1-%��pF���c*�������-�4��G�Df�0JcJ�����aYI����������]x�t�XY�Al�,Jc���c��g��I
�P�"�P����hC�qgd^)\�<T�
^���E����P�2�d,�E,�Y
���k~y�?�UV��"��nF
�q�a@�����7�\�T<��B��E�����n����|1:?���6i�r�����F���������f��]v�v+p����J$�Uw�	.V��lW!��(d���cVv5"�j��I��m9�e����mQ��:�S���i�?�������[g�^��!����(.kI[���h]U������_���	����T'c�N���"�u��v&���$����C	]��	V��pX~�I/�I\l;%��������7��'I�2�%�|�~��^�*Ig?�TS3����}6xw�g�Ri��O�w����@�s��F�!(�&��zX��_�E�b������#F��in�SmNB}�*�X�y��q�r��l&���Fp0^��o�t����k��k�%�Z��]��vU3�s���q���:�Ft������"ejF�K�v^����d��#���)H��aC2�x�T7���<��4����T��%�����{�L��~���������1���>l^��/Z�����O�7��,�B�i�M�Nh���������F����r�d�� j1��b�}h.�/��(�	����������d���VM�T�R2����[a.�O&��o��w��Q�d�'�~��h��R`����V��U�����	
y�{n6-�����R+K�T���V5�~���Q��(X#>���x�?������=��&l����p��0>�������)vuz���s;*���&�y�9�4�>��(X��I��&Z����_�K��%��Q��������a�5^
�|����h�=����jo����r�)�}��
�����Q�fE�*{1���"Q��f3|*���h�@�������7*^K�$����mR`��K�km���[j��MR�L�d�,w~,;N~��x�?T���0�T����j/ 9X�$�K����^�!^��n�P�gHz��x�Q������
}�D/�<�j$V������D�2����(�<}z�>
���o�����&�&�)����7w�W��w��z�����ip-y�_�����`5^,����_���p<���f���<}�TF�_���+!���O��d<|U�������g�'�����6;��������kX^O�m�S�vr}:d��G�&b.$\����%?��%�S7��f�����A��'71�? �1�?�~������y����^�������L��#W�_�@������/�x1v�z�<8�FC���,�UpZ������/�|:eKG����2�� h�1��D*��)NdB��i�>��_�S���G��%?�P-�C���6���LDB�
Q�P�������o���o��gd�������n:QD�o��b <�N��Sg�o�����|�ku1�����\�`�y����y������������2(\}���9	M��">,]�+J[�!���5RH'��r���qDZ��,�V�@f��X7kDN�dN5�5V��@[/5$���_����2�tu�/(_�o��f=�T(���h��(��#By�����QF����y�_|�I#�Pmh�0UF�@z������C�:��;�3J]8����z��B�u������V~C;a���:3�P����N����|�c�E^��?���p	4��` 9�������p�7�Db�Ij�vD�xZn�N�9SV�n�3/����N�Z�� �FW#����{��<8'�����
����2&�:����O/��}��G���ny�}���4����:��i��������R�����~�9f��O�T�������?�jVK��(M���L	EK���?�y*��������)\?:���5�"K�:\i	Jw_l{Mh�E��� �l�LX�
%,]�E���1�$�4�.���;f6��`V�3l�@��?�%���(u��^�6�S�u�y�7]��T8��^�?:ey��S�P����~cX�E�J*��\�����Q�']?{�G5�4�
GQ�� ���?OT�0�]��w���y&����.����p�4��EGr�L����������)��t5S�*��.�@v���lwo���������3��jI�t�
���>i/�+B{*�����,a!
��($����LZ������>;8�-����"���-��������k�&�N^
�	�*M����	�=Q�a=��\�ol�
w��t'���oct�_�\YVzH��r���?��g?��A��L��������[s2��h��B�t��|h	g��7����?�T�k��*r&��e�B��DX@�T���D��D�n����h��b�i��rSP�]��KC�t}`\h~J���>��O>4?�|@+|���	�;�>U����K�\�m����Nf�����.��(�1R%V=X�?�<�����;���.�����3J_j�'?��g�>.$��
M�)�����=�����}�G����C�S��td6Eb|h~��c4��f[����-��x��KG}�
�S���6+���{S�I�
�5��tU�s�>S8�%�:{���w]7s ��������~K9������3B?���uE�����F\�I\���8��uCv�Q��-��t��s�������z�������p1�V��q&4Y9M���i���D�^�����a�25m����f�8�V_�]g������i�
�����x��b6Jf����(��~>x���F�������#�+��o^W�����7�����<����j.�����k�_�N��e}�:�W�����������`o������?���\�Dsy�._k�n?X��E�E(B0�F�V�o�a<�J���C)�aj����\`HM08~�x��q$�� ��APJ�vLs���&�;~�x�����������R"U��$@�='*+������u��6����K���)s5mT��.($6�?y����qY8(�D'Q0:���HF������������~3D�kD��,���P&L�q�nk�E�� p�^�;�����F{X��
��AG#[��I��,�H�rg���V+gO����<�R����
v���B����C�E��$�r�H$u���#��J�W�6�_��qd�V����~R��5��0����8��vZ����
�}+��|��!@�s�|����������yc�����O���� ���� ��7�U+7�C?�o�$�7�A�_0���n�y�G��v��xh�������0�U�w������rP�g��3��46w-���h6@�M��4m�
P�s:W���K���
U9�������R9Fjr0���	c�Q|g�r�M�9-A����b�Q�(�6���p9����b�Q|g�rXMI��\�|��#�|��c�&F"�1�I$<&�/��T9"������F���E�c:@�\<��Ql�+��t1�p�cH�f|��x�J��K���h
7[�:��p����9��{��u��)��u����u|T�A%���bIb�TZI�	��/D�>,�c���c�r����rL�}���a�4������O�j�T�z1����p���r��'|�Y���������P��5���A���M��[V������W^_�%������j�P��Cv�},���E�g|>	"����)��JR;�'���'��OT�2D�_2L�Z/2�~�����{o����s�&��6�����O�&0$������ U�-�-����w��S���;�����"N^�p����n2��?�n�?��� _)���A�_=K[���7a;�3������U�)"���)h
A���������j��n���+����N�����Gg�S����F@?1���W$V4n�*|��O��QB�/�0,����lt.���
'����{i�C��*E��s�p8x:�J�!�~-.�;�W�r2�6Y�_��O���������C�Y�����.;,O������n{�T2�(��d6�������[�L9�������u�);�6�]����K�Q�X���A�fy7��fyZ�>�eDG����~���mM���X�L[��j���!��{����>sNsi��|
r' �I2�-F�������z<(D�������g����������	�A��N�[yt��M������6���*:}����Ru]���Wu�}=@]�`�4������D�������he3�=����`,��������s�����Bz��������hd�����'c
��(AY�F8&){k���[�S#���[��T��|��
1�X�hJ�����������l8�����U5k�q����~���m��Fg�������d���a����2i���?�fs��@�=���a�R0&�q~��[70���]?W�o�"1N�%�$F@�  J���c'e�O'���+��`<{R5)
�AMT�~��B*&��$D�����	���������:���/p	[��u��Y��]�\?*[��:���h�v����9c�o[�������Te9���mK*���Zv����������'dy������{8�xbn���_`wl�p6�;_S����M�������}t��>� ��PFB�p���S.������{z4�N������:�oe�q�b�7s���U��:�\;}j��c����"'�D�n8�;~P	���i�������C�|��o����1�;��,^�'G����mk��������7�|���?��U�L�/pv���Z�C1�c�wc���!qx`���}4���U�gfe��B�7l�>����Y����L�������d�&|0��] �x}��G����8�``����r��LO35��#�t�zB_f������w��#jk37��@v�kyBw-O@L]+��~K�tOz������p�x���Yh]k. >��
�kF��a������"�k�[���\�B+�W��Sjkm�4��5����bz��`2mefl������|�t9kIk�XL[t<��$�%_�`���|�A��gm����C�EM�LO��N�u�G��5\)��>&�x�
}$)1h�g�]+[m��#��A+>�Z�V_��A+>w
�V������1h�����
^�C�k�V|nJ	�h)�|l�
Z��( ����}��L3��Z�v�>v��l^������9���}���;%g�Y���W{g��A���
���}�+���t_,!m}w���=iog���bO��R���%%���w�5�
�N��9,��Gy,[mGw������KOa����|���=Y�z���������j��9�O�,[�WX,[��H��]y6-��6��H��'�\�J��`��y���
B����.4�$����qm�&��=��oZT5�<F��(���EZ��1�����6�s�Z2���L��3FF:����"PU�w��T���k����)���O	/4Xb30?��a�&��C��� k	`ep�O����CW�����0kr���[vJe�$�[%�}o�'s�9�����7�Z���c�x�R�s=�mj���n,[��)��4G�*s$L�.5�����ul�����v��c����!��9�B��,�9�����C���8�����W�0:�����������
��aV#���:�' P��#0�����P���t��-M&�����I�� ��C�!���u�'������:�O�� G��3�����
�\s���
��|��s\&A���"U��7u1Ax��G�(��~�i���o1	p`}������*'L.���3e�����$�CK� ��r�X�#��H�I9#zuw#���m�5���!�U�8���<V�����z���Xf�`.
6=<�Mf�rp�YQ�b.)���H�/��,\��l�0��&����B;l��A�#`��v�f�=�{�q�B�.�4��:�,��O��55�u��:�<�p�k�Yh�6��3#f!���Y���m
����)�%C��G��VQ�����&u��������8\�a��4#�p����0:��� !L��W������2�M�O�a�!�k�T��i|S�B�p��]^'��]�1����*�p��g��I�S�%�LG�����!<��<�^Lb�K����������������YZ!
R����!�<�>�c��[�o��C'E@d6���(�-�j5bm7��#�A�+Z��W����^���w
�(�p��or=�p�/<�TdJ�1�-y�V0�?�������E�v�������,Z������HB5n����l���oq���K�|�g7�����/�����������*�$�Kv���|�(���/,,Z�`���Wm6�VDC�� ����ev�v
�k_/&�n�����#�g���v=�YKL��ke!j��������R�a��{����P�`r}�������?�5ANMa�%�SZ���h�.�qF��m{����(���[���OE�^�����
g��������\���85�	�2>t	I(���KN�2�<O.l�����'X�a����)ZY�P&i��a��|�u��h�3	j�� 0�����Nal�g��?�Z��J��c���*��
��;#c0��%4el�
�&����_��	� ^u�����������
�@���Ai������N�iN+EqHjS��.��G��������2ZJ@_��z�g��A7���CJ�0tXKb��~��������r]�#M��=W?5���,��Fa�X�3
����h���u��u&�
��Y;���,�����f��#��(�ae��	W��7�:�U�2��0g^�������L8
kO��1�a��	�`�\z�S>fB3,3�(�%��Y;���pVHikVX>f�QX+�Vw��/lu}W�Fe
��F�f�k�;��f
���
������ �dK��u��j���,S�0�4���	���w����#D��DK���	��y��ey"��D<G��D[@\�8?D����^��������ETs@���<�Hn'a�y.	����S�qHr����{���<��N�B�b�c�^`�b�|�_!��{����}�6T&v�q0��[Z��������q�u�5�CM:����N����Y��1����~�X���l����c�����c�;y�gA6E��<'��;�n�z�����(��6�����us���1L�cg��_�ZO�dg�0�����c�5���4����JC1s�h����p��K��5��X77��)���}S���#��!�����)������Db��&����a "�z��)S&��&�8�=x�C��H>�#�����������Vz��X�}l���f���X�}�=��|8<F ����<Z�����g��m�3�����9����g�D�>�<�m_���0|�yfH�k��{�c�3B�6��!�_|�yfH�h	��<�=z���ka�9?W*��
��\-(G�/�����:�jAy|��4(�6 �r&�2
����n]��L�fP��@�n_��L�������e�;y���f����������o[�EX^6�fP��Aagx���_SD6/�`3(��jI�f��
5��P������n��S�8*�'�<gMoA��#��������%-���������P��f���������B��O�����a6S`97���s�N��V����f�\�G��^����F�
�x#�w���s�w�[��>��"�6����:
�D ������K�Q���	��{��A�����C�G�4f��a�"��S`�	��EV?]g���u�J�]:+����i�{��5A�������U���V�q����vJ>���EpM���������
Y2�>��o|��*�C�V��0���-��!���;��5{V+hW����-8��x��\BC����pV��^�r�Bo��n��Y�qA-���Q�x�@k:.a��Sn�?���������&��K ���KvK����[�1(��K��sR`���q��y�KrOT��b�W`���>f�p�������z���Zl��	p���|�4\��k����f�w��B��"��������q�\��A�p�B�P�Y�C�+G��A�A�7���s#�����5�~�c����2{�=��W����9	do>�jj(����V�C
B���$�zeE�z���3��B�����>p���Yv�cvy\o���|�be����B�vr�d�8�g�X|B}�u@�*�p��NT���=��`Z�m�i��Ga,5
W�0L�Z=
 �L��m1���(�	dJ)�!$S�Y�BYkP��1+��ix;������G�l���]fU&��b���,����%�0��4��[��K:+1:��3�eR�mS��Jwf������'q��v����wx��2�|���J��ep�Yd�@���3y+C���_�+
��t��+e��2z6K�����[��%����u�.�����[��:'�v��P`�E��[�6AMu���[��.�MuN�mG�������Uy��
���1��
��X�G���m��+�y���.D�hE�8��i<���U���H���\�
���M*P�h}�@ukK��W���#a;���iT��!9�Y����"Xi��UM����M��;�:���TC�'u�
���%]m"��K���e,#�K��o���k��u��U���=��%q�����b�h�b����1��-W�-os+���K�~D�'U'�&�$V��Vu��yT�J�Ru;��y�����|�6��
l�Pu�������,�u�:���j@�hu����s��"�s�KM�����H
��T�������<~u�i��.�?��K���WE!h~!��0?�*�<�2��%F��^K�#
C�`:d�����~��
 �d�����I��p/\U����R��W@��u������(��)���)���o4�g����O2�����H8�E���.l�Z=qsw������}E�nO���{���P/1���3HR��9���n��SF������EcG�)��q�2ym
�h#�FW�c�@��Q,��Q=8a��	�E��#i!�:���e��G�H1Ju�XK�D��fS��M��V�8�8�zA�����/oo��*Qn/Eo�8���T/��j[^���te������1u��R��^��[N$�C�+����B�+}���d���������w�(�E���u}�D�~8�)�+}���k������/����kPoM��x
����k@������7M��[��W�h�&���J3��O�Z��+=��Vqo��p-�d����Q��>��N�0��:�����|-�F���"���nzY�`���1%�����izY������eM�eo7^�/9���=1=`D/������8���B���7����2���a�#�k�YY��� �Bi��4�Q�Bki��1��;�4&�!D�x��kK�D�;��	-���x'���\b9t<ZZ�����G<;m~��zq!�"A��p,;��PX��#}])[+�'ie�Zq����h��w6�!�t0,bzH��������'��D�EmL�����3�+bt0,bz�������i��~G��.��r���e|������������Y�d��n7n��-OS��D*���fQ+x}��]�[� ��2)�u��w���IJ[���;q�N�������/i�\�V���� �I�@��mMg�]�i�0m��H����Z���:�������m�E!aMp	�h��mMa�kW��$u	D��\iC]�T�Y1���8f����X����h��ng��J�����@�Y���X�k�p{\�<=��|�#�MY���XK����<q�3����#C�"cX���G��nm�%\�B����������|C����7�;��1dZ��I��V�K�����_��>���C�'g���X��l��g��M���
c�l4���mE$�\D[��=�������w�����/>�O����C�<}����i�Q|�f��Z�e��#��n�T�h���1��T�g�|'G���Q~�p`����~����o?���q��kt%����F\��^�qi"����ZB����p���c0�!W$�c�]�����3\jZ^�t�����cw�f�AJ?p�Y��k��#�Lj���0�[>�(�j�2��5��eF�a�����b�9U�-����fW��P-�����@@p�z��@|��@�W2�Q�����G�sq#l
d�id����r�m��^����@ mQ�P�Lb�C���3k��q?;m��P�����E@��@��LP|�^ma�P�����E@��F���Z���i���eF����D���r�[�&�
�(\T{���xD���1iWhI���
uj�HW'���PK`�K�5z�\f���h�2KA�]�`A�%?*�e����(���.o�e�Mu���l�>��`�p<��P��wl��j>�^������zs��S�P�<nw#����
����X���6^�'IX@�W��"�<;0^�N�������&����E�"�E��z���_D��c�1�~��e����z��["�9}A��r'�<c���f��l���x�V��0���!�� �d.���?�c �� >�������������[���_�SpIn�$�� ��di�%N0:��q�w��Q"�A/�=*�����9��A|�s�v58fI~L3P��~���f?��Q���)�M��h��v��t]7=����7����4�E7����)fi�#�p��>��O]�4{��gB��K]���hq*�)��io����[A#"��I�F�X��-t��]�f�!�0"�m0H:��;������ ��-H�p��0�4�c�A�F���)��N�~�N��=%�<9�erz<�$8>�<�������2�A��sR���K�����F/���f#�o
J���U����)���������^y��B�[����I	
��M
@!����LJ��R����������*��"(�!�.�@���>����h����@������Jrx��! ��Ak�FED��#��>l
��rv;�z5��M�W���R�zj?�,�����M��<����k]�q�d�N�4���	�(O��[��Q&���.��26�	>�Mx�����	�-��(���-�2�L�Y�"5��n�A_��g�a�<�y���z�O��R4$sNo�,��X���D#CJdE-%�`�J��w������3(���I�G�GY�����2���:����xILe@w�^8zj�^S=���zGJ��;b��k���Ki�G����b� ����u,(,�f]0�56���1@
��qt�(�9`T7�w{��Y��<����A^���22��`:��vt��vv
0����+ig������V{o���9m�k��@9�C^'M0��H�BZ�$��K_p��Qp �u��:���Km�Q��	;��BM?w�B��xz3�����R��:�Ap^, �:�Yu���jaEha�����Y@�Z���Z1
a��VO��kr��_������{�p,�����/�R$�������(Z�n��W
����K��G"���vI�M�e�3�+?�B]��m/�W.���YtBE���II�b�T���}�����,(p����������@(��0J��o�<��K�O���v��,:�'lC:�r�6o�Di��G�q~Jo�%-_������L�8p+h}�p_���an�+B���W�NArIdV� ��Y ?h]��#�s�4"R�6���������H���y�C}�3��l�m�2�;V�H�
�F�-"��c<�u)E��������D�~w�g�������)h2�V��������Ru(����``�)
p����*s�8�����@��&�on�����{@!r����)��H���vQ�4+6�Gt�ji�5�\���^(9�Y0���N�.���/��zEN�V���������X�$�(��M��S_n������!����6��H)n�p�����
3;������0Io�h|�U�3�����vY�B��9O�G~+����K�?�����o��"-���g�$;r�x�D
�5h���<�2���zJ>y��������c/��C��M����Ur,T�JvM�{N1���Z�����\�N�s���}NnI����5�ar�|���������c\~+���V������������J%�I�������-;�Z���'kK^�"V�"��$L����WS����}N/�z'f=5���;Nlp�x��!�0��=���)�@�����wx��S1�$�1������Vp�K>��1\�YP���G�e������{��F����M ����c��G�1����5���'�����1Q+�XPM>���]`��Y�p08������wj�������K�a�"�~@D�D0 
1���{>��YnI�MTe�����$���������]BYN�rL��4_��o��>AY�����w;�V=3����h�h���D;��j����������x����B�j7e9T��
(���q��D�l��h�����y������#��gRdw��	��Y���(l�{�O3J�a��F	k���%\D������Edwa�;��~H���<�.�vw^�P�[��_O���0����6�A
�>I����Im���4��KjP�
�7���B�	����'�!��������L�! b�S����",�K"~�������)^���X���:9�W�p=�F>%��ffCT��6����1.y"%b5�!*m�D��<B#��Y:]4��'�,C�qi�ZNa����Q\�9'ji9X|�IM>��3��
��4&D'-:�I�I
��]1>'�U�#���q�O^.�sl�|9��8�\��M��#� 	�{�V�=�]L-Az��:��.�����I���u�v�{J�{�0�L�p����)D����d��X5�\��'c�T�����|"�6RP���6��W��P�v�d�Pb�,����Io���o����7cPO����%��CL�S�x*-_��I$T�q.E7�����������qX\���vke�\e�
'i.i�����a��V��WV�V�8,e�q���kpq�I7�T�n�v���D��b]C,�2�a�E��D���|�����%�M��4�G~'+x;�yfxn��E��f��>[Y���������Fxm��H���p��h
F�Q���>.��'=����}����nt��-�9&��M2}��h��p����`�e�@u=����QNp�!/?8��"u���Sm��PB�&J�`�B8��A�`4j!�����-H:��i�|��~��?y����g�� �h�n����NKmp�����+��+e�'�&+�E��	A�P���S�6���COO��LPpE�����(>��(����G�I�V��`����G�I�V�C�`�2���r���lzD�z���F��{������������_fU���[�!�J<*�M��X)���n��"%'�zi�L������L��}�-���pr|�,����]^��Sr|��n���$�`�_�m�]��S4��������j������-�Y��D��~�l�� V$���5+@`k,�
bI�p ��i��
���SN�-mo�I7����Z��
�����5�hkT�7>.q#k��(�FM��&�A;�RN�=���	{�&�9O���^3�`�`��0(�E��������%���v�h7��=pG[3����z��.~�����=aL�
M��g��58���p|�S������IGgF8>|*�p�:����1'��x8�3���&��������A8������
� �����no]S��3(rX7/N0�eD��xq��^G!k8����q���pX��IN��Iv��I���l�$�%;p\�����������	W�]�\����������*��5{��2E�1�� 52�Om��G�g=���]-Q��r<���'l6]|�b��	 0��q�W��������8���l]��ToZ��2�kr�<��F�|���!(�5)��y)��Z'����N�G���R0��44;q�����$~�/����D�t=�)'`qhByG��3��824���UP�����d����G���'b-^��W()!���Mq�T��+�~ ��%��T�k���/�!D�� ��#�D�E����S#�=�G����E�S�B�@z��*��:u&�������6�H��f=�ew����%�6'�8eeM�o���u=/*�4���Cu:�`��%�[Y�=i.�����FV7�TW����58��i�
$�������A��l�S������L��M��h_����~�JT�S6��CX��P	J}v�$�����D��?UM�/�,�^D�����
�Y�D��R�$?��v�>�Dh�~�93I�2L
��4LO\3�����e������
�#���vMC5����*f�v���7wq��C��yP� Al��5m�0�o������BeGco��;�<1��@�E�A�������2�\h@Cs�z�1���[rph-������h5�N�a5@NUf��D��\�����}�U������h^��
Q�����q�F%���/LQ��L�����`�5�*������Z%P��U��x��L�xh��yG[���c!�P�S��c�P8c|
�4��g���2��+_��L��u�O�
1'�`�"U��:��L��W��G���U!���fxt�j\�5�>��V��
$��+���t0��Z�2�h"�A��
"�[�h�`����Nx�������������gy&
���A�����["7s�l��
���$�B��u�"B�"g�D��}��~yrd=�E�q@'�$f]p<e���9���q/���)�$e�M���q�/$�{x� ��a�!�P�=.e�b�8e��8�	!�4�$����vp�$����o����aa{6*�X+���AQ�X�����k$yp�T���~ V�F�1�]�NC������7���Y�@������PA�|��e|;�_A������,���p��$V	�+�����`w��&�#���l�8Z`����P���ke�3>���
kl���������4�B�$M
�S<t��O��Iq��"���H�Cm�.�������L���$�}f-��)�������y�������\���yI�5>�
��k��!�$�Y_�;&$b�9'�����]��0�W�X�R�?��e�X�i�3�&k��9�"�jj��Fm���j��gFbS�\��Oc}��.�|3��i�>��S5����/���eX����F���A$(1�%�'�SR~L�[�
��������W�ym�55@G�V�eH�r�g���'3JBR:�u����
4�(IMa�1B�^s��;�t)o����h �q.�!Lp���d�!luI~��>��5�;�u9��#c���'Xg����9�4���!�H�����
�{������}��5e���lYu3x,�(������������ ���B�I���(J<_���Bz����C��5�z)*Q9���X�J�Q5:hyP7R���X�,��de�N�~P,���_���������-��Tm�b�����q�)�el����D���%-�+#����?j�6�)�otD
ID����
fR���������o���'����*�@t����Z���:���4}5�f�pB���`�D��d�u�����*O��}��������o<.�st�IA=�}zr�����O�2��G�B[��Otg�_tt��+�1 ��h��]Hk=V"���.d��~
����7xN=%�������1�������/���M�cT]V��-�U����[��n��U�.��K�N�=�$x�����W��/�5F�K>�/��6z%�!>Si�����f�E-(��^����{R�o���p���y����~.?_K�C����_��L�X+�;#�����$yw���%9'��`�.-�)�h�����������	����Hx'G����A�m2d�T�?i��0��K�-T7��i ������h��6��k3��`Cv3�,[�$E�*��Z�����
C�e<�eC����!�~��2��zb��J��,�i}o�������)�����}�s��B;jX���o��`������E�������i�������+U�����1h���3Y���S�t���������WQ
��^4��Q9FpBq���-��r��>���!��K��0�A���P��	�g��sX��+����6��H�9�
��5fL��?0���CX����=�Zs��i57�\g�\�L�;t�5)���������n��:������
C89D��0p�
!�"D��n�->n���������	��=-��P����Th�ht�7��V
?�����k��8�Oer;%n�oTG�i|&������H�����E��K�a���X|��een�$8�-��������=T�*�H����[��V��Lc�VE�~y�I9.�!7
Jf�;U�����A��jt�QX(&������������E$'r����:�3��ix�g���#���H���L���J�����g��uk<0`�jqV��H�=�g����-1���+����
���!w����x5B[-����pU�a�:2Z�P�e����^����a8~�xy$!�gu\uZ�?�>�\�t<>����*�f<k
��9����?�g���U?~����l5<^�x#s��@mp�WM��� ���h+����u�E��4`���yq^�l�TK
��f��K��Z��Cl�IK�Bp�����};���[�M��:�_X�CB��y����]��&/�o��,�KUMU���������Ctr6�tK���~��0�Cf����s'��'�(��n4����k�b���2.�>�Z�@�`m�4?^�C|:�����)����R7��[�A�M_+Hv���4&]&��@"���I��dO �5s�@��;�b�h3y�K^�a,��-%����8�\d��n��y�p!q1N:�����Z-���,�fXr])�����������:��<uM�����i�=��b����T����R�[�0����7��T����Zv���RSHE�6�yp�H����Ln�U*be�h�l���}�2�W|��-�B�������1; ���T|9m��r���3Je�tA�\��R�F\g�+f����$���������d����-�l�*�M�b����o
��9�zls�6(���
��O�?}�e��!}���	���)w�k���m#YI���-\������t0��\(7��a����;���	NQ	��6�������oM�f��=����Zo�4�(8�4w���4�X��(^vh*���+����ZL]S�[��������S��[������������Y��g���}�
�-���Nf���
��o���c�a�/"�=8�]�`1h�v��=��S�GC0�a3���$F�/���i���:V�\NU��nw�j��{�*�"�5I�di�o(�Dt�1���j�6����S��|�#/]>]������C�D
���LMB�@����OEu��Yu#�7�HW	�n|�'����[m�lM�L�����qc�Tt}�UZ���u��@���n	g��c��9��B����%{�*o��q}Jr��)~-��6������p�n�K����������hp^u����vnz`q�cv����)I�ggcE��!�Qv����������Xg��"L
�������a��7P��(���"�p�o�����y3�C ������P�E���_,���/��A\9|;4�:2i�o�>9�
�e�T
��K���8��z�������y�n`�A(�<�$U)��Z~�
;�����M&t���S+0�x�l�c�wt2��}�Q��U&{���$�����^���M�
�M�h��p�����#�V��������b�:7�,����o_��GE��<gyy����w@�t��N�y�	T�N;?��C���9t����^>�>ipz����B�>�|�����& �	�����:��
��MLq������G�1
A5F!Lr����,@)�MR�_76N-���K#�����yq����
>Z�F����]��,h��N*��b�H�����@0�v��G����D�f�|���5��>�[PsBC��a�M�v��	����I�y�0<�uOk�������'���
���������1���N�����3Lv'�����!��Uue5}~N��tL�<)��2����(��k���U9���F�������5�K�V)3B�:���^p��[��R��1K�#27[�����@��.����k��~tL�7D����Av.�nB9�8
{&���z�5h��(��9)��������
����_�New��������/z�������&>8fE�[XPh��Lw���A.7��<-��5�_�_�_|����D|��@]���>���)�"h�'k*���R�dBE�����G�������z��
�'��c7����~����������K�i�����B|���lo��A�{��7������/�/��\�I���bF�RN�����p���Y��YH��g��O<}/�������2c�S�/�p�U����9�2�������S�m�����$k����I]=������	Q���"�y-����Ydf�1\�-/���p�ROLHPp���y�/ 	*Q������y��JAr�������9���A|�
��8�0B� Z=�6��Ll��"9f2;u~~t�o���0��~6Qi _�5��5f�V��-���e���Q�dP2�9�L=�k�.��3�TX��+�a��q���<�f`<KA*�9��X�T�^!���F�4V���t��
nnUg�0�Z#����7M�����(D�LR�����8�!�`�%�[eM��S|�� �<�O���!LU"�	Y������EK>�
)����uY��$���>�����a�����oK����q\�]Sz����3�(��SA����o��1�-����y��I\(�$

C���b�9�zi��RH��Tj��J��9(�5�)�a{B��X�h[���v�6h�������,d�5��)�y�6��=���f�>�����g�7����\�����Y�4���
���\G�}�����m�:��G��k�6�=�o��,���o�������T��e8a���29zHj��
��(�0oSLO��	����L��I�'O�:�k��N��)�����x@������,r�!9���8{J�<g����MLk�:�)����~mb�!���m`{R���������B����4e�����$��\%*�������n�j4E$i��Y%�n�iK���z{��Tfi��O�:�zW=���6���P��Y������.#��q�;:u�zS��T�E����T��<������<9=n��Vj"����S�j(��{*���>},���4=�T��Ev���+��*��Q4�EJI��O�5���\��N�GV��]���������5O.�H�Y�GfV�$�������6F|*��HSk��bK`�����������'m2��hF�iN�rntmQ,����h~�5�P��mzz.�.f�Q+���P�ImB�f�������Z�����Y��`���
��D{7�-����
 T�t�*��}�=
����	��Z�����"n���e��?u@��_�2��HI1�*��<
Y�H>�p����+��v��?A�Q5fArky8/G�Te�(�t�������!y���+}�/�>��N��|���}�8��6s���Y?��X���(l�M�����q���%4��I���qcP)	A�T�t��ol������Z������p�OM�����X��t7W�
��Vt{�����L.]��j����U�U�gE*�x���8O�LvO�������AA��+���0Z�D��_t��B���}�&�{�y��Z@������h$O�Y��K�f������1��qzS�������(.�I�i5���R��3�4��������{�Ws	<����,"��5���n�}�(����4Sq�*!d�me���y�|�9��6�����b%�X�}k,�7�����
��e
�P�_G�������M�
�_(�������.$`����VX���9r�����e�~����I9�?��B�w��u>K��������\[A��7�,�
�&�w?>�,���'T�����i"���	��3��a����$S�g^!4PCn���S���h)��reqJ	��������Ch�l����s�����o���3UD[-9�������C���xC�� >��M�w�v�(������q�|��������Q�Jg��r]��q����^�b0Cc-�6,�
���?U���i\&��cn>q9g�t�$�JA	Be�F=��������y�K,o�%y��r��������`+��&�FAt�'VW���S)�������	g|����sP0�6�vB[�h��nC�� '��HS(�����6���� �`�).�.�9����
"��K2M���M
"�vh�����x���`���
�j�
��'�&�����\�$N{Su&BiO�$�de���*�C-e[��I��������H�!��������Qhy���h��T<�ch�d]�5��������?�^ ��!<�%B{��x�����Sd��!����<�����=�%�2�qa�;d�18�8�C�F`�w=�f��F�X!�|��S����f��p_�/�����]|��+K*4��XGn�������*�s������[�Q�@f���I�Hev��>�aV����>�q>E g�[V���??� >�YQ�kQ&�&�h�u�U%�Kd�G^5���C��k�����<$����&Q ���|~�|�����s�c�2�Q��=OeX��=QiNU�D���K�W)W�%��+�F�����IM�
�Z���������B�-��<�m���#~��@���U@)P���t��p�����/38���z���`~��.T-}����o���vy�����i?1��kE��~q��k������W��q���7�kC��Y_~��
��..�v�_b���2�0��k�~����0.T�i�r��� �ig�C�z��|��H�;x��&��n��������I��*�,]�n��~i�~k�C�-p
kaN��X��{[�q���Yx���dk]8bl�;�|�����a�y�0v��I�Cfg�3=S9v('���;HzSP!�|�q��������]�������wje���� ����N�|6�����P$�P�WvOK�F�j��KW8�:�}
��������\J�������L/��l�*$.����h�P�KgRe�@E`��p����"�<�H�`";zk��-p�"��0����AC_���n��r�]��1�l��u��:��jLKD��Y��r��{��?��������Y���J������hYa������pO;ICV��JCT�?�C5m��44~����]�V}04�����Z�� �S��+���4�����R�����*/��L�N�~4�]z�k�*��s�^�	vM�?����vUZW�Knvf�W�-Q�`�M�e�J�<����2���iQ}co�BK7�A]�n������O��V\q�W�f?�� �J�H�*���b���R��g��X��������n�>����$O�AB��Q��#cCP��0�zvy�Q=���A W��������A�"��o��Z�P7�@5�<V�t���G����jH���6�^���
���w>��LL���M�5I�������5)���y�*�Z���^�?�\�{�m����9wH{����uo�!6=�:�x�pM�f���$AW2�����������}��[bY�)���+�����jk�p50�/�5������)�h��X��� �5����"��
.iQ����W��kw;����bT�?hB��+�du�r6�=Mp#Nu�(�����E�YM��&<�b6���B�*^+�MB�l~5�Pn�A?��(��Fq��&����c|���%=���t4��Ox�m�V�6��z��Io:���m�"�������"��_d�J��'<
B��ph�V]{P�����<��!E������>�"9Z�H�� |I;�?Z���-�$�'�Sz|\��/8_y�/�a���p7��(�X7�<}���w���AC5���#��XG�{�|�u=j���=��_�RzKf��v ��C�p��N��<�
���m�9:�;�@�th�5�1�9��~p���P�t�
����;n��������xIU��5�����B��;�2k�t�~���s,����c�H�e��wQ_P!��P�-���O�����Z�=��5[$=���@���	�5���!>�gA�V
����?j(:�+����z��C���5��SM��oEk�7�oNZ(;�9��w��q�r�K+�"^���1��	d�1���_�D��7��fV�E�%gP�\�.��Wy�u������9�;Hw/���A���F��(
�;i�!�PQ�
�F�����HN�����wK���-5d�1����@3�RG��	�,?��X�BxY����M@��6������p����"<T`������
*�KH�5=���SRJK��� r
���C��'��"(��xI�@=����$��o�k\��o���$"tn�(W�IN}�X����P��r���;��;t-@�pS���!e��a�z��Q���y�s��z�]
At�����]����h��������*�^&W;
�0�g@���@i�Q<&U���@��3 `RF1����O��W���mS?~��N�U���X:��xW��uT{PK
)sF[�A6�fAsi"d}�������q����������y���������������9�?B��6��Y��r����F�N�	h���A�����
��.<AA��#�`��!��n���W�����WN��JEa�
8\��-�Lj��	��\�������b_�Ly���!�=��O4a��j��7�j�\�ot�!�����
#�_u���8��{0��M�=�iy�4��`���a���eR����%$x/X��[�z`b�E�r*
����P;�����!YH.���x�(��
2�ol�<,[�\:�f���C�#���dN�y�;��-����}��4Zb� ������B�]H��#m�-U�%�"~����G���Z���B�#�*j���x��T�c��5����D�c�(+�<+*7�<T�=0=����6?*�.���xPW��+�'��[���zw%�7�,���z��"�����t�a���Tl���Jt��7�-A����@c@(Ch��GA�����jr>�	;��� t�t9�E���v�i�l�4:���Q6Lb�LZ�<�t(��>���������k��5[�;����8��=�rl;�*��4��6��us��ru�"��m�����|
���������b���'����s��m��T���c�C���@�R�3U���������r����I����t;�a����c85�L!NEq�Z/�w�HK�������� O|=�=0P�Z����6�s-<_�a���k����0���K��L�O���I�g�m���ED6�����ko	�-B�n��SG]-����n�)��3��V�AcGu�t����$
PN�m��+x����2���B�������!4
�t������fF��p
��=����t�bQ�v��sx�%��{'C�W�1�l�h�[���y�S��4NAtD�q ����"�����������1H�K��h=��PQ����HH:�I�)
��"��V�L�P��@g�A���@�[��Tq�����pB	���*|�Y��K�u������L���&F�0�X��xN#��%K�k�N74�"9:��� Xt�{�VC�%���[��N�05!
���(:������&:�>R����5�=$(������^�����*��F�+�A�{�3
y��c����v"���v$H�T���`V�����P<���L�#����W�(y�z0r8����z�B���{]���3�jf����o���]���P���7R��i����y��O����<;3����)�����e�3�f�6
�;~k����� T�ii�!�M�v n��-f����y����$��C��tb���������x��5u[_.�l:S�N�������������
}�����=�B������@��~&�h9�5� �:*��|\Oi���	r�2�n�[�2������{=��y)
����f���N���L��ItC�Gy��|�_��R}��%�Nnu��)��w0�R�}���� ����l|������:T�5.�2!������A�I��+R��\���"?T��vX�z����3���VM�y�	���2�����?^<��M��BX~6�/�}�2)�W�W�P��Au�+�^��]��z��^�����~����
���,2Q ����H~~���7����B�S-�����2����^:�F�j)��'��%.
#M�iCcjJ�h��lX�K:�!j#�0Mk�`�AM�$��E�jwU��������_�����m��0,�Y$9E���k��"�V������P�������D�o(��Y<�$xz��b��Ub��D�����8t�i����u����*wwB�q~�HR��p�.\t�_Vn�Q?�����<��������ST�L����;���<(}�������6��z��c�H�������z�2yw��PE�K��$����?��u�������NLR���$���9�����R1��_��U�����/g���~�fn5*l��aZ%����MAE���������O�z�
c
F��L�G�$�I�����B%���W���
�#Q�=��3��������2Z����k��{�.�����~I��L�"6#�ElD��H��u�����4#Ya$��H�h�"Y#$����H|�A��l0�u�#>��n�.IQ��G|y��X���}�Xp��8�j@!Xp����Tv�m��s�|�h�5
b:�4��S�.�cE�p�$!h���b��H`aD�U�� b�������vD>T;��BQH�*
i�E!mQu�8?*������d�3U?)2��H���<D������O|��$�q��k�C|!�W��s/���J2 ��(��<�2|��@lMZ���:4�����<
�^���#�(��~F�60}�KzX����!��H���p'����
E�#��8W0�M|�Ek%��=�q�fJ�[i�����#a}%^��
��'}A�'m�"j�_U[2��G��y��h��G�m�y����/��Ut�E�#���vmDK#��=�l"`4�Y8)Y�SS�4����u,�2�[oD�i���� 6�a��
`O�W�^G�a����C@��~�Yj�d�XlO�S`��N�S�T:*j��+Z��K�Q7�P��	�F������@�R������?}�R7���!(��6{�f�MM��%�����s����_��'�z���23t���t���4/������U>���zL�e���l�r(A_������B���%s��B�����p�D�C�t���h[�����2	����*�
�������>��v���1�P>���6\���?����<9'�������*������w�K�~� ��5���A���	��W���]?D8����NvB!8[H�X}�w$���a<��h���w9��#�p<���tRr�&2���-��Z�{�
��ti�$�8�!�|4=N��.��)X��Z��]GF���c�{p�(�&H������|��p\�������ab~�������������"��O�%.^�jYK���[.��[-��$c1�5`��"=���1
5�u��������wF���1��o���o����r���e*�5=��y�l��������;�v����i�.��<���}y��DJX����������K-�cyk�w�U�?�SzI�����El�N����.���������)��$?_���k����|$_����_��F��"U��sP<��0��v����#M���b���R&u}��K���F�f�%������F�����Vl%}�����������>��>��
�(�C|O�����I||	>�;}�YZe���pi���^
Y���=>5�a%6i~z}K<��'W�I�!gp���p����:w��r��X�x�����$��d21��y9>��2UC�X� K����x�/;���d4��h��J�f��O�<b�p�N�J��������/nj���wW`�9���k������n�������#�e�:��b����No�h��n��6���;O�4
�7�x@���3���rs����_,�_���������-9�;�c���1�-�x�Z>�ls�Nc�/�!��l�uW���������+"8��Y�"`���g\�Z�r����"pC����S��q�e2�k�Xs@k������|�]������J���R"�����Zy"z�T�q�i��H2F��.f�o�q��j��W���$q0g"aL�"�R��
bl��d�*��*��*��]N5��c*F�-��AHR��C��U;�C�+�f
\cs}��hmd��<
)�*vJC~r�*��=��{���&�v��4�>���W����f�����V+te�9�XVe���[��R�X��\,�HZ���s��%>�Z�.mL��x�PL�_SL����,H;&�mW:d���I���
�{�<�X����������g�I
����3V��A��}|�W����o�����P"��%-��U��D���*\����Vx{\�&�����)K@�����V�C;&�@'l������(�w�D�C?�LP��)���hh����G���Z�!v�6��;h�4�I����T9�y���b e�.���v�b�qx�b�k~DdZB���j�_�%/��%�wS��k�����P�&m������=}D����1�]���U����Z�:/KnG������T������I��/�J��4�IuW'kmh��xN����=
wA������BUr���r���~�|-d���_�(����<lQ�<�hQZB�D�K<"��:g�rl��c*��S��oS����e�
u�#tHoLx��kekz-�8��1����43N-����Sd��� ����>H����6&������.�:��'BhT�Xbt�:-1�\�����b+3����5-4A��%"�h�V7��8,. ������T��eD
�U:]2��P��G �����~����,Qi���O0Yu���t�����&����L���s�����6�|��l�������F��F��M��C��.L��Z��*�s�	���1�YcbY<���$��b��� b�"M�P�|1���u���8G8�������Y�<)M�L��n�:��Q��m*Q�v��(&�
5���2�P�(^�2����&�=��&\�jSF-h�����&��~���g'kK��$4ZH-���uh�,j��W�����Qvr������E��67�`j�f�+��V�4���Q���R��O����	�TF�s|����o	��"��^S2||���i�u�F
�pz;%���SU{�����<��4G��Z/�a�x!�T�IR��8A��w�u��v���=�v�=����X��T��~J^G �g�S��:P�P3����V����mL��+����Oi�b��j����0;���OyF�@u�*�6)v��M�s�r��g�Dt�B�W��rWOB���_:�\�����BBn�i�+������m�6m�H�������E���J���������#���-�j�J/����W�Q��
No����]��v�p���U�l��E���P����;P����I4 /D;J�yfQLh��3�8��q)e���^�K��g��V"d�4-u�@��X�9���cN���h>�����E��G������m*�R��+lq�����
��X��f��E����{�w��]�!���k�I���R���_)������k��J�����w�7o��K54D'���Xy�AU
�T���F�6~S��#t@���7���u�:����J�SGI�Bk�W`�U)gL����w�A�����P��w��3��Laj���%i'X�M�#����}_l��W
2y�d�Q�o����#a�^��
���?��z�(���w�������?����6�Z�a\3�
<�\#Z�5y�D���<�����%�:�owP!~;%�����iqh���T����R�����Ix��V�UN|����<)�j��X��@|��Ypd���.)ymg����=)���]�����9����a^9CSa��~J�cT�w�z~B���V��G�uxn�W�	�;�&yN�l,<n����k���o��O�@r
���w���o��_��O �jA�@k�-X�t����Plb5DOI��)�K0R��E��=����)��F%�T����w�!��o�������������,�c_D����� ��	��2 ��:_H�|�
�8-�[�b-����������~���~���$��8��D��.> ZS��/�@��O����'=ZS��4��o������_(���
KO�d����g)�
�u2�Y�D��>��/���{
��!���'u�S�A�di��e�S�A������o���~Ov[�Z����Q{�6pWl�����Z{�6pm��N�?�1�����{�����G�r6@m��N�v@���A�h �=����h���|(�2���z�" Min&+JA��$D��{�F�#����4f�������T���I�>�����=��)�tqI"vj�1QS`���U�E|!u���%�����@<��/����EL�ZW��(�'??���s��e��9^��W#b��9p��^R#��%���eA��e^��	�2y��O�����T���g�)�x����J$��p��
!
�,��A�Q��A+��l��D�� ��b����������r
��QL���L@� H�<`� 84I:�[���Q�Yg[��CsLp�C�/�s)��N5Zp����.Q��(*��x�m1��#��]=Kk7f�C�����Z�%�%�J�y�0H*���F��%�"�9����=-z*'��2<K��,oV[������h�]��[.X���\��xA
�SK��qS?t�b�d�����z���������K������I�]�'*������2����*�G��AQ|���P��|+����kv"��������;����������d��Y~������<{�����V�'�K���^me���p ��������X�.����[5=��v���Y'�I��;�
fh�`�>E������	���'m��R�Q�v��o[@;P(��5�t�S�e��l
F�-V���|>-e2*�L,+NR/z���
ahA0[������o�f����`��:��3� 43�I= A�gA�f(A���|���>�`��V \hU:���������m�r�����D����t��{%m"�N*k������T7�^?���|��s�;��@�~��z�G,��%�7`����z��	�C��.1��M�;t����o����B����X�y�W�nX��q;������*r6�M}�������R��3U�60���)j3��������G.��|��I`�O���y8/���M?���s��6��|�b��P���'��0
�$<�ls=�D�~\9�q�\���sb��o������=��8g��{�8TM��%-)��>{ �l�
t#2�WmS�����&c��gc�������
n����&�%�����c��v�7�F?�d���Q��\Z�q7�%<��?�m^�	��k�?�k��U�/�?"P4��A�]��-�����qP���E���<n�Q�`�a30���	6��Z#;�at���v4��u�q_0�."�M����9D��i[�"�
�0��;�!�!��X&��4��%P�����E,�#P��N�@1���q{�v�	�Ei��Y�.�
1��-3��&��Bi
e=$��'B(���=#e��,�2�����
B���kI����Xn���[e;�i��l�%;6c5�������~xo)�e&m�����o�������js��vO`���T��������2�����9B��u�%'���r�cpW������$�UR�����y<���t�J���%oa��A��V�x�c����l��>9�<4U����!-)H��� ���@
IH�O!y�P@ZQ�<y
A�����&!��%��H
��c�!H>v�FH�
�'3�%�J��1#��z���`<��������2��~b�\���!���a���r��b�������X���4"�j���A����`�k{����H�N�4�8d���
i�U��3��Kx����_�Q;&������OOy�!s�)8�����[V�Y�������F��?�=bM�IW�Us8����FJ�>%Pm,�������&�D?o�zw�/���Bd����Q?�$����k���H���'��s[#W�^@1�b_&�1�T��&�\�e��U&�� ;4�	�b?b����LX<�s|M/���k����O���m���m_H����O�i3[���d�M���P+���q�O�"��qPI�X=����!H-%����@����[,�ft�������"���Z�'��v��^����c����3�h�7���fx���t������m/��fm���:�@��,�l����d;Q��������~�����3E�E~�n�Z�/�r��}���h�����S����e��!o��m.C.)������_�o)j��=��`I3d'���1Z�YI�b3q�S�������Q���Ok5Y���:��f?�}�xIQY
E���P��~hy���
�'N��	A�b
,������7��H��'�)���E�Uh��h����A��83�q:p
#�E�Z*�����[��I��AJ`�&4�%��(�.Z�92H�`��������m��QRg]�����+�1b]l�kQ>���0���R��W���q�-+�����D�����v���f��]Z��z	�.���P�}��K|;W���
K���b]���0�*�b�!zh/���P!��5=(�yU%���>W:���������^
ql��;������T�&E s5UK�,�Z9;�M_5���oe���L��}�^�CHS��j�����ep����U�T�Jm����y���rM�3Y1���5��GT�a�����JunT�j����_�������,�Uv�C����5���,^�]'���$�}���aP��$�:	a���x�8��P���|mm�n��n�����
�u�p��	���u�6;nN�##��5J]���	��:%�+��F�/�
3���;G\���������?�	��L�r�u�\�`��Y�)��r� �u��?�g,m�=����������S�lg��h�h��w��=a�TVx_����^q>�����@���������-�]�)x�f�2��epI�g/���\�0Z������Y\Hlg�kUGw�����iUm6�f�#(�4�����q���Yv��'
�wm�������@����pG\�o�����L���Y�&��'�P]��k��Z'9J�Nt��pM�_������S�*�?���e����� _
�������VO��LN�/2��@b$*5�H|��!�;��X��Rq�VCdD�:!0�!��/q�����C0�b��X�Q��$����C�I�w������U���N�
��jR���K�D�+���p��Aq)�z*�5�.�@��+����3u][�/&}�A6����
�8��qV�B�kmx��O��@F��L���#*b=�I����}�����"x/����������������^4uV��"��q���9pe�}�k�QF6@���W:��%����ka��
8���
+�k�e�)> �/�[�u�V�C�h6���
G��p![@�����f��|��]zb��D�~������M��_���2�|�n���|G���q��cZ��)��%!D���^N�����i�~����F�9lMu�����FJwM�T����.��q�g�6���]����
�M�"=�Zb��O�����i�t�D
g9�6���4s�0��5����/���!���h9������8"Kq���K�g�X��JC$�Ix��_����b�n���#��i�(�=!P��S]%4�0^�Q�69�)���������@�>�p�9��j��c�p�c�(R��%���+��L�?�/}?&�}h��$����{N��x����+Wv`��r���Ib� ��bx�d�z��B�����6�e���Q��cj5��mO����i�?�{
��q�b��A������;;�?�`P��X�(f��*EH����U.��b]0�rQ�����=���A�h���l(0�|@0�`���c��4�C���sJ�3���p;��;�kvz\ �B�]'�F��	�rij
'M`�.��_��!o��Y"����al\L�t1qZ�w15�@�K���o'��:2����G_���=�%�2������}��K����d}k�6�@�+>�>A�J��\G�&Q^�s���������1|Anauk�^�0��4��G��:}������
��).���R��fS\$��*iB�2a��MkP;���fYu��@�m�n�����G��4��4�Vx����e��	;M
����A��������a"@Q��(oU�1�O�1���������)����<Vq�������	�K�	iu*r��d��P�Fg���Z�]�r-YZjT��S�Tw�$�8��E�&8�����n5�/�EM���LI���r�.�b��Z?��f�.$;��30O��K�jf�TjJbe�D4�$���hNIDCmAI�II4��E58Ap�}�N�@�����M�t4���f����*p�3��:Y�����������Vr�490j��/?��r�o�}��e�G����O�y[}~V���I�qx���	�-,�������$�55C�84)���6���8�-�����;J�S���E������CE�y��=��O�^;�'g��,4#'(�
N*�������g�aQ_@�&�v_��z}�]"�mD����@5"�<D{����MK���.Dcr�__�".�m�;��e'm1���k���V[z;��5����k���xu���)�tcf���+n�B������2���d�I���Cqn��P�W�W������v����p�|�w��
����(d�"IE���������P�Cv�M�����#������'�I�~���>I��QX��$��'�r��c���=�.Z��U��Y��z��|�����S2f���X8�Bs;P�+v~��U���cE
w~{�����?��&�+rqY��3��F�zL�)��z>�b����_�����j=+3;_br�,H��/�.�u�>�_m�feC����`����H�PT!%�^��*��hZ�A*-��D���4V�4�C��W}A����Pq�����6����_ ��L�#
4�C���U|J����c!4���@��5
�{W�-�� f�

�� �z*�Q�������*��5�������*�1������^�P,��XLK-�S�������E����[))���}x��?��/BZ}dr�c Y����m�Z���J��P��U��f3�JPc@���"t��hc��#+� ��I�'=�u�G��6���I��d��D��<��(���_2Q/p��LG�`�G
8��BVB���;�r)Z���Uz�����h�q3���)J��������d���9�B�o���k�
'r
��'�r��"}����=.�n)_��T����hG���P;d�KM�>�a��u?td����3�Ng�Z���t�s�LX ��'-��5d�Z��:��]m5�'����4�����Y(nq���)��U_��i|����-������"Qd~�
����Q��������?��'���f�h{Z�7�'���������+k�H���M�z�����a�(a�����
UrE(��Y}B�J�_�3if�a��\<-c����4���i�����K��jq��V����P'D"R`��������7�1��G�J]+Pp'�'b�Y$�����2���3  c# ��
NH�_
Ml���B���T�O��tgs����*���>K����).����3DZzJ{Ug���SZ��D�}hj��^��
o�f�*C^7'�������e�����e���������P���Y����=��#&�;�g�����J+�dU;�����oU��<���vm}$vxf*��=�I��l�xIJ�)����^gEac+���J�9%�&>I�TL+9c�3�qk�����nT&C�bv�8��G2�{10p���|
�u|����8�y���@|����
w��f��9u�v��c\$�ew���41���8k�p"?IBK[	U�e�?{o�$9n�	~�_A�i�������E_��������f�u�#;��1#���f�Q$#��g��/$��;HF������A:�<�p8o�'����K��A���}g��7�	{�����%�K������,%H� ��H�������p`)�����������o�,�A,��<������p�=�#���q��y��vPS_���Z��KJP����@K���������N>�	��[.�x-!��O��E/)��epp���'x�������:;��k-�G���k���I���49������$��e(��>���	� ��`nj5�rC$���+��J����v�u|<�.����������_�f�	�\�Z���<�y���<CFi�
����i��;m�]�o��u���W��M�^y���-Zj�~�����+V��C�k&K!�j�U��Q�e����-����;l�x� �z���[��C�0�@pb�f��p�J��i������Z�����>���C����O�e�}:IVap����k��$���.|`�5^?�U(6=�����q�-��m���R%������5AL�q-��	
���H�A�[ #����T�M�pt�c
�P=�����Np��g��Il���	�aG��{��
"�NP�j�t��P��0���"������U~��y,t���	
�tD�p[�5�q�E�.�;[���t�Z����D
�w67��q�j�����[����v5���$�>�_�F:_i��=�U������ ]�vO8�?#����|k���Y�.������H�)� �83�|�5��#'�F�����X�mv��s�sJEO�v��a	�_Ac{[��hQ���1REo���n<���YG������O��'�A�����g���z�@��^b2Z+�l0&�&�T�xA(���T����!D������`�4t;b������h�1N���vH����2^"!}M�Q���<A$#}u��VF��IB)8����*����zn��\@�����M� n�����_�5����F��G�+.�(60M#�H��l-��b���W�������d�@�d
�=����JV�
�
|r�Pd�~.�����
<�@��n��~�	�v��0�3
�a��CFgz~|"]�[6J�����x��:�9��o�<mm�6���4�F��`�[z(�-�7��v�G	h�\;_h�K��z�C����v1����|�������Es2�e�n8����=\���b���b3^�������riM��B�~5�s.�u�AX���������
V_��+���@������3]J���'�J��JO}��O� 
uN��)���<�����o5k+5�bIr�`�w_�J���P	R�@�w��f�W|Ai�$�x��H�_+1?&�z
�t�x����XL�#�.�>�Tj�����p���cQ��6�%�tB���
D�����x�%wW	Z�g^C��X�g�E�a��q�b�!/\�r��&JpU��H[��? �2��7q�s��y'��n�&e�V�W���g�:��>�n����by�a��Y�P�jB?0�)��Fh�-�Oe#L�����r�����6*�2`�b�0�������*�#4�>p��i�FJ_��v�O9�s������#y_X�4����D&��8�������D�/���U�_�%�r��1M����8�F������L;��\��tn�$������YQ�h��J��2�(����fE�iV5�/�������e�M�r2���e�9�z>�!��M�"p�~����wf�z�Z4o�����.���D�h=��'v�g�~v���$����%T�sQ��\����
,"<	�0�x,�E����
K�d<����<�0�x,+S/��X�d<�������Ivb��l�9���\�*�@c[��XF�d,#y2+��-F�d,#y2+���eOf�2�'�a��=?co2��Y��=?co2,#y�>�������.h����;�)�D%
�`o��>���4A��Fo�u�JS��km��y�7D��f�)��*����E�J�Z��\�Fsl[��=0+&�2�Z���;��vE��q�b	�$���R���m�_]Q�����V���~���+���W��;���{��w(�6�L�Z����=���;�}�c�'\�|��#Y�Vo�7��|�����I��Ss�����������Bd���*�w�+M��Z�R��PjmV��;�*�5��$���$Ms�c�I��Z��w����
�b�gQ��ybJ]=�3����y?7z@J]=�5����z��{bI�e�qh*Y�|�.�������5����E����Z��ZC6��z���5�U�������I���y
���[����L��,9'Q���Y�:�����������l�����:��s�:P�+���f�}�.�x�s�sH����Kn�uQ�]���L���.+Jn9I8j��������w��[A����4�������WDev��D&����,�3��rvP�z�����z�x+�$�#7���*��NE'��Tn���8}�9uk������N��c�W%�oI~L���}
�d��]�)����	:��H��b��lvD�
����,x\�AK�TG%�h�$�^kb{C�5*�e{`�����/���<�)���jRC�	����j����[���m��'����Z���N��F���xd%�MU���S;��b�<�oA��o�E�������~�k��$L�1�R��uv~�����Q��?'���fz��{�z5SU��	m*����0Jk�1&����_)�v_r�K����A>�����Q�^��J��D��q���[��r����F��;�y�R*����Oh�
�~�oANl��H�����dzO��|0�O�����v'������r�������:)�/�#����;�����p~2���x���@���o|�>�m�v�]/��~��FG,�	V�UQ)^�xb����p�x7��e�j��3���	�e�<��Z��j������s��q����ATSU�od�R�g�V+F��JBN�09�����h�T�{��t���/�R#��[GU#�q�K#m"���
���u��SAU�9Z�[��7h���j v�
��*xxc@��o���5S���Z�������^����Vu��C�Cu��.����v�_���{w���p;����
\q#� �x��V;:��H'[�k�������W�0]{�1n��a������;4�*�7u�
{��I�v*��>�j���;%WV|���"���l����BEk��[�j�s1JU4D�	sh[T��8}�F��Ej�Zd�p�F��r5�y�6�M������T���V�?U��9��E����#���:�y�
~�DQFb��oS&��F
�pN�{W���y�3�����AI�`u�Z���#8�o�,�XT��UC�6��if�����h��`c9�������D���"i^���xs<i�b�:9yH�?6
d�xn�S�g�{j��1,���,�s�=5
T��;x-j�-�'����"�|,v[L���oIC�����}ddBdc�c���/���#SA�����o��M+8������U�gqUG19�Il�\��A<}����0nr� �9+�?w��	��dQC�xk�-�S��1f��P����1h�������8�Fp��[�Eo��v������"����d��;���������-�?��\��/>n���t��b���vB�!0d������/"I��i
)�@����
(���C
-K�r��tD��045�dn{|_$�������vPL���4l�ad����Pq�4F=#A�1t`B��[A[�����	��6�L�f�Q|����9>���@��?XG:�#��T%�r��(�/����6A��Lj� ����#���|��*����f��LsfGy�C�\�j+�V^�ci�B���X�{v����Y�����H���X>-6O��������^|������c��K������3����O�w)|-B#����N�����V%�{�~���,=
����'�g������O_��>$oL
�������O�qY�g��[��	Y9�}:f)�Ne��kQ�����k�����������*U���7�:�_���5)�o�i]�O���L��Q�)�����fCer,����������/}�~�+����{�'��B6��k+�/���t��oC|�!*+��L��"�g.V����<��P]b>���<������`a���9�"���TO��y�u�F�3�T�
�x9	��
�L2n�q_�����g)�Y������g+������3�w��g��4K� ����{����H?��hA�m��L5"�(��=����8����p��i�`MC��/I���Z��m��+�!�*�R�����^�[�*~�<�����s�5�����Z��G�n�`�����|G�a���:g�fXE8*�����ee�R�����}Xh6����?��rLX�)]M����
����{��6���6^]�����3
�?��������$�I�KuV-2`��������fA��?����_WYQ���X������"��mD|����6�(_�����kk�9)�n��AV��[R�!Dk����������@���r���MH ~�ig$�8��4����� om��
� �w6��D���o�K������m]S���+"��������!�
�|Y�P��y�Cec�_�]�����J"��3����$\�b7z�xB��!!�oL��(�~e_ �6i��!p�K�!YX�X ���
������g�"���x7�ww}yM����c��4��b%��%-6Y�� 87�9��05&I��}�Z����
N���ks���G,���X�����j����1Eu���=����]�yB�
AS5_��K�,v���J��}MM�t���'�dA�i������c�����6��������FOH!|�����i������q����!e`��f�H7O��]�l]��w:���C�p-��R��X�R��Vb^*�;X�3���.�X3��7����2�u�)��T>7�0<��u���p
b����%`��/�W�9�bUx�t����}��m����,L��r@>��m�%��	�T�-��=��m�Dv�S��P�{`�n���1�^��0\8Be�%����`���X����'|V��gX����Z	8Y�r����SY\����]L������kH1��Sh����x��aL>7!W�0,��)h��<�V|�o�������W&��\�/{4���5.�o��~&Xj���������6�QF/��=�As���7�b�������;S�Zha��� ����8/[��|�V��=*h���A-�Q8.�� �.c���e����
;������(�p�Fe�\�E�&��� ������o����t��f��P��b���x2Nh�X�2T��'����rI�,��u�DI���8v�b������LH	�}�0%�<���$��&uRR�@��������`����Z{�~��Y�����u!��XS���M)��u�}�3�a
/1s��'����r1$������!�~����G�[u���P����crN��59�|-����u��D�g���F�~/j�j~��8f����&c�����c���������=��a�yYDb���:_���O%���y(d"��G�8�8/��!
�F��#Kb�#���u;d&��E<�HRA^
�����T����^Y#�'��%/��/�����^Y,��]?����W��;��_��!8�7�l�i����&��3�D3����Xw�!W[UW�`�W�Ou��l�3:��Kg��V�i����5�s��,�����[�&��^��9��P���=��`�����q�����sRL'�uM>Y6����y�5I�s_���+�E�x`B���{z��c��n:Vr#��b�c@�W��Qg���r�`+:�������S#����s`{�!�uQ�Y�|M�7A�p�=F�����8Q
hH!���~g���${�(.pj��eXiR��cC�J��<_�_�onn����f9��!d8��
��&C
�������K�F!'��c���������F�)�	�6����@J�El�0���!�+2���d��d!���qA�R�7�B^:�����h�b\����B��!$������G��/��P\uHB�k<3��d!�`�7>��
�xl����@�|���ley=��qY�r�"
+7rr(�%�E���O��������rP�����a��@����d��
�d>|�7�)>QR��
�2�zf� �/�M9j��X�'gW�|�X��C����Z�'Dt��h��/�1-]yj�fyt|,�J���[e�O��:��UZ�.�D�U�����.�Zc~��9Kd�$b�t���C�j� ��]r��<U����C��W�������%,s�N&��{x1m�",�iSk����!��Y��������C�]�tl�H�.�2�~��}(j�+tl������U�v*t�h�lP�����`�-a���_��8���I]DU���:���"����Q{����$?'0_H�C?��/�N��|?4�Z�e�4H`�
�fQ*C[�!��|���C��#���)!����b
���S�!����+�@����mh��(�%�����+	w��C� ��G��n�{o������I&���t4�dh�$S��
4��t&��fa��L7a�)h��|24a�)h�����O��[�}:�I����#<:����"E��8�-��
�����v��i����K,65H]��� �jl*F�����9�b��wV����G�������Iy�����C�*�n��?Dv���B�-;�s��?�	@�
W[����
�{Z���1�O�����eq�j����y�a��"��+Mru��'l'c��/8�>�Ob��N����e�I�/E�a���oM��i7�>8��G�x��~��%�2���!Q%�1i�T�����O�Y��[�Ni;�e��8�����}����S�~g����
T��]?�`�<�����&�V��V��������~Y��[I��M?@e���mv��t���&��i�g�����������Y��%�T+Bk-d�Z�Z%<�}7������[��w���g��7]~��1k�&Dn����<.���V1��U�8&�?6q��~����Q3Ya��1j���L�
�*����LI�?�b�LE zX���1��W�&�R{5
��|�K�������J�y,�@l]
����v$�p)*r�>v^���.�Ccr��$PK@��[�P{�6�-��5W�-O�J��[eq����kR��q��������I;�m��!�iim�'�T����>�8�I���6�O��?��DL��� �(EEl�XeG�c �E��P�Yuu�*����uN<��gi�>c�����|�p���MrKU���s��!�Q�����p�����G��[���n��cL��v��<�
��<�B�j�ZTiG��j{K��#X`�����`A*z�}0����`nq�h����Q)!K�<H��Z�6L����=U�eX�$�F*7��52=ff��L(W����{��Q�z�L��[����G
_0rM��K���[��������V�<�b5�yj)U]A/
���e���%�\���_e�d���,.}�EW��4`��5�V��L�RQ��c/7]�*5�*�va
���Q5�����j<����bSVo}�u
��4�i����2��9�FBfnj���"�L)���p��������L�Iy��|�n��P����2�U��Y��1g�5UC�tf6�v��Di$������ap����	#rNq!JW���I�����
��gr$$����a]A
	�>���#��t}Ns��r3��T����GP�/Qee6��%%8��F�,#���d��������-��X.`L�����:D���)���CJ3Q.m��eH�(�
D����0� x��R�;���XM�X���kF\lC�M�������������h�5|4&?P&����tc��i�O�����!4�M��R�b9!,�h�����B�����+�.�7!	?Gs 	U�|V�_��s�3�$?�M��f*��}��G/@�`�8���A�p�����h���P���*�C���GgZ�4�pW�:��7�7_T�akJh����E�J����?���w����T��%�b��X}�h%�R7������!�U�_~��?,�3��u�7'����|������x�G[��FH5U��V�;w�����m4�3|?
"�\��s
-�jz��{k�Iw��Q4����z������^BF3�A*��r�!"�����'�=�BJ�P�����.'��YA=!h-DeBN��y��
TkZ������f�����'�c����T�!���G�!���=+(���z��{
T���Z�(m��E�/\�����/a������U�VP���+0��W�16��0�,y�zr�cl��a\[0N��1���0n`�#�<�ac:���qz[
+"������R~�~��^��E��<�K�����)Ob��y,���`B��O?�����UY�;Y�p�S�N#,pS���m���D�J��W����J����&��%�]������!�k�P�tU���7vq�Q[��&{��%�����������Z�p���|�4�v��������Yd�I�	�*���8��ja�/�c�Y,l2&b��sr����_����X#M-�4`jj�]�)���q�{�29�����;�o��7��F���9�:��`O�:(�S�Y!�����q�'����p��n{=[W�H���H/)�h������;[�	��k!��;���U��0�������#�j��M�l���C$�y�����R�|���w�������4g@�O�r]r�2`�T2�U�.L�$�������k\Mq��_��?��q\��}���F{UR����j�[�k����~I�����Y� �<�
y�������������,{��"J�����^Ry�[\��p��	���CS�C��TtF�x]�����O��g����n�p�S�S��[$��uU��`u�`:���������?fH�b�����R5�l�*����c�����_?��c���>X>�7������W��_��O|?��pt.��'�N����'H�_��M���qOUq+��s��=]����$�]��Sd->��'���+/i����y�tM�7���e�7��-�[�&�#��zyA=����w�����Z;eQ[����o�x1�����b'��|)��mz�~�U���J>������z����$zH�c�	k��0Js�@���
�,�o�>�E���i������7�`���%���/����G����i������@�9�y'���"��O�*)Eg��N|��'�%�~~�o��������IF{U��L�'i�w�<�����_��c��[�N���KT�Wur�����_r�������f��c=�F��lv.�t�~2o"$�aC�$X�J|�d���k|N��
pOoiY���kzz�]h��:f1����]��n�������IW�1����}X3��W�5�_M��z�O.8
���7/��m>n�Z����i~�Z��B���g��<��x����?��d�������}G{�9{VN�����T�A��5����$���-Sk����p�Y����<���-
��;����_F���y�e��_�eQ���}W��.G�:\O�B�w��K��5���m���?h�e��z/I�O�/�� C'`h���8Y�q1�i�!�N��R|������AL���er�WB���K�D'4��d���y����3sA-���K�����Wf�0:^d� <��v�stm0-�~��ig�;�$<v&�.��N97|E�b)�^���C���#v��lfg�S+S�����M?e��d�t��*�9���5�q��wf�{,.��?�.�~��`G�d���Ragp"���
���-
�=���'����y��R����Q>w������u��<�oMAXP���5�8��R��YS�����0=%y�y1��O����R����b���oC�6�����
7nHp�]����-���K�'��O��W��G�@I��;��Q��X������������,c�t=�&�X&�$�����P���+��q+�? ��PTCZ���$�
��Q~rh)�t��!��G���./���LlF<�������[�%���v�v�7�?���O<qj��aH�W���rqr���SL5�5����q)��������$CfI��i X���l��������Mkj�����c��M�oi���.�X�W_����������
���e��E�&-�T*#|�
����������������=�F�*C�\'��GJw?���,9�����q��s9��� g��0�,Mr�wBs#�~5��e�E���-�/�%���������e!�fo��\�Y�]���G4ri~�Y�����M��c������%���7:c�>��6�����:�����Z�����S*����:*V�����(Q}RL!�N.W������� �F-cWN����[�J�Y���F,"hw3�^0�(�t�?��0?J���<��,so������1j�wQ��������6q���Z������`%P�rH� ���iH�TQ��	y�nLQ�q|��0H6F�sm��1��I�W`$%���1���3�����u.�:4K:�
z�!�-�"�\o��j�R'�%��.k
�����E��6����fN]d��X��������C���v5���>�_���5�����Jl�{E��+�O�U�]f�ODn1���:?\�zE-�!8|XA:<�V�&H����e����^%�,�
g]�*�'N�g~��fM��[��%O_��>0[=�����z���$�k���K|����j��o�~�������	����|��G��=�'50R[S]���7.���
�uMi�h	�uqX9�K ���pE���P�
�aJ�/��xp��1^W��a�v�\�%��6�M|�3��F����}w�Q�7���9��l�],"N�d}4o���,b�5���z�!=4��G�k3
����3@[� MT������f�Z��n9e6�PM��#��VPi^���T��q��ez�s��[�����+�xp\�X�%�[����Xr��d���u�O���C9k��)p����#v1�� �g9���4t@]n������
X�UO�&�hNn��� 0���1�IU���l�r�Z]k:u1���.Mk6x������X����j��_
�>2l����@Ws���T������vI����Y��i��'_������B~����^F��I���%�`��������q����+R�j����X����$av;�_	���7w������L�Y���R��h����\�l�K�����O�a��u6�8]K^�[��
���&�IO-�S�A�H���L/gZ����K��p��\�H���0��G�<<�8/>x��k}�sq:���'�2��|�s��<K�dE|���x8�w��A15^�;o��hvX�����������_@������^�	?�l&��J�|=�8��3V�W�CZF���C�1<��I^���9���#U��r��72���������Me��mv��u���o&�_�?����}��e���w����)>�) ���[�t|��s�$rA���:���dmP�Z������w��L�������*%�26MMih�I��<��X��F&tLsMe�Ox����������I���g�=-{eY�z�h1�[~'��cJ�J�k���KTOf\>�h�x��T1tn�f�5����PqoM�<���?�|1"�~�-��{��F�/W�@��jX��ma$2lmb�`�N�X�� PE���v�^Z�{Py:1�X�"B~=������m�A��V�"������w��j������L��.�����UY�\����w�X� V�����,�[���]���f����&�^�"6�^����-��w�h�����twD�b���������c��O���Uz��cGq�Z�~���{�}��>�KW��>}��%��������?-��A����i������
m���&�j6j��W�S�C��u�����&q�)�4}j�w:����!H��Y(��+����~>�����})��Y�&e�q�_W�������[K��&3��s}�i�zI��]g�Q����X �z����<H��MM��o�Mi�*����w�����v������1����T�J�|a�������[>����� ���9���I��@�re���3�����`i[�h��j���k5
i[�%��z2��h[��)Ms=����M�.A�(�C#���������4M�����fd���*�qH�F�:��n�����eQU��"��7���[��[� �6z��A�x-	z)�]Y�(b���&"��F �/h�r��GN��x�(�
�����:���n>��3��JPH�H���m���y���G~0"=����'�Q�{I��Xr�9]_�yf���}W`/���zy��D���M���G*#t����F�z_�����%���+6��;Cz2$=�R�����6~Z|�O/Kz����C`�3��y��>��z/l�D�"8����������z�D�(�v�����O H�nX H/gh �m���cC�		�j�Ar����y��E�w��NS�{Y���,��47��E�\u+MB�����/,1K?1#[�\s+MB�j4D�Y!�������_��dL����A�5O��`��X��{��{����r��?�����pD����X�k2�iw�K<!��;O�59e���d*��v����S����� ���Ac����"�n���6��Wz�mG���^R������	0��d������5��8��a�h:�my��k��������'8�+D��|=��c�}���]�&��e��eu����Q]��i���Lf:�����X�7�I�dLg���v�?&����;n�Bg���(>����4�ZKHf�\����r����Y���Y�%8��\�y�g����d�C�	�,/W~b��e:'!�er)��em��/�L�n`f�\�������N�#�@NPf9���e��S�of9����2���������;�L�tpf�\����v�5H��V�Y&�4$���!�����<�f��x�Y^!"bOf��{�2��r�e�W���Y��Nhf9�v�g�W� ��Y�-0�N��������������2�!c����"���Q�!9e�
�)���7�L7���2��r��.��S��NhN�S��SF�*_N9 |�)�K�SF:�9e���������2�`�9eres��5��w����u�W��s~�^�;����1~���?�������>so�I�����T���/�)�{��
����R^��w��E��|��"���]?9��"#��������w��_��1yx>+�;$m-�������2���q>���������d�����{����).OL�[*>����	>��E
�������)�j��-�B��Td�e<R�������B*8k��YEf��c?����[X&�i�����n��jk�]��~M�Nj��3��zg����6��v$@�����U|�f	5h�BPZ�<�cz����u�-�����I'���N�7�hy`�NT��H>	�t$>�]�FK|"��I���
��5B�(B�]�#	��<v�-
������i=�
>`��v�k�/MM��(�,�ef�^=�!��������]��`j�}�X�Xi��L
�O�E
a��6455�}bHaC����~07����ey��C��U����]�V����[����6��=���spq���V^/k��F�
���J%W����?�n$������%q����;/FX�\����u��A��p��h���'�3j0m����i���Fk��~��mh��L��
/o�.�u��>,O;.i���D�"
��>,;.k��t��t�����7�#��Y�!�����#�Fqj[<i�.����h@u��6p���P�����C���z�M�!u�����7e���������23�{{l�6_#fj&�fJ��;E��L���=��;����\������~����">}
��f�������eEh�
.Q]�~D3���{/��E�/W�s���k�~�k��4~f��������.>F�"��������|4���=���%�@��������\���������|0���b��O���*r��J6�;�b��������M4���a�R�/����U�d�S�������J����9k����`�(q,��t����X�e�$��E�������a���t���,�6���q�%qUj:�O/iei��e������N���=��w�����9�k����������"��V��������������Z��5�����������p��x�BK����d��E�y[*;��n���CD'�y =���jZ��L�Y�p�k���C����
|�?p�^G*��S�w2Gt�U\A1��H�A��G���8O�� �beG1�E��Q��{�T�'�mg�X�b-���|������UH9v��9@�z���r��7[L@u�^������),���������6��7��P��qy��b��H�������TT\��U{m��i�O1lv�v!
� HD�~��h�@�q��=����hJ���D;5W���Z�B}�
����t�f^S[�d��Z����#����I���]p���3-Y�y�x$�<Lc�S��V��f���F�h@�Kv�G�=�����phsM�ma�6�B[-�����a�\�d����9��ha�mm��B��kmk�&nk��V$hr�C�����H6h����e�MR������2�b�g�Td�9Y��B[��o���e�eqLN�2G�u����;���q_���kw���.��lhp�-�v@+n` a�������Z�Q��0:�
Z����&%MeK����70�Z#���3T=�:��>�X�o	��������Duu���I���Z���D]��60���nH(�g0R�
�
��$T}���Y���T.�����l-�(eo�[$�A�pe6FKPMd;�cWM]k���"�W0��c����PI���T}�G��=���;��� ����&���7�o����+1��� @FH����0Am��e�n@0C
P�3�O
[����0��n~
cA:��$�Pd{��V�n�)�q
oY����PZ��X�66{Q�Pg5������(M�I�5B���
o#d%��m\Nx#� 0C��g��!��%7z#l��I
����q��q��5>�Lp�;�4���������:aC,�!�bj�w�&8x����7�i�����-h�t��ja��/6��qY%O��/ir�R����Zr�%'|�y�������K���D�l�����,�R���S�W����JSH������3��e��s�o���5�/�v"�����=�������JW'��FD��2�@y�^�X�W�y"��	�`S�i���*���e��f	_����.���5���������)��O�k\�/� t��)�}$W��,��� ~��
���>@��n}�F*��a|�NF�KwcL��)Cs
�[��A?����X��Auz���[�QT���R�F�tF���5�6�Is��}��J�:t8���o�r��k�:�	�%�f���n�5_��>�A +�Gj�k��r��b����u�BV�~9Eta�vEj��.�5R������6����q���S���i��=�����f�.F��]x��R�F�tF
F0�IM�]8����Q����O�C���'����n�C���|�����]l|#�,��7~����u�BV�~9Eta�vEj��.�5R��
�<|�<"��1��A=.��Y{��2�"2-��GX6]����hT��OuT����������6�I[�g]T���3k�'�!��u��Kr���!�Nk��}��@VB�.|#����\b��k>�,V~5E\�KvE��@������v���b�taP���I0h���(�n}s{*��c�������d�F��;8������s�;���1iB����z��j{'�=������t'���j>��|Ni�^����*�F������C�&L��z�CVz�z�����) j�r�s����z��� !�x���URY�e�L�eW�(�#
�5��v{d���J�/���}Jc#
��M�qx���]_��0+�;�I�&�r�g�Z+�S�5���D�Q���l��R^�2I�r=K����W���&z����E!���I�f8�q�����5���z�E8�z���Q�9�� �c�Li��#����|��Kc�B�o����"n.��F�P�c
	����|�U�����5'^*���kQ�uT����lJ���+�{����.@G������5'b[z����
�V����8������&���$;g�Bk���r�F������1�e�b3�
���#�\]UQ����*�6S-[0<��c��d�C�c&�U�^�4������� Mh���,{=b��U�w�'�Z����S������5���L�6:y�GU@�
�K�O����(�y8F��}1���"�9cV�\��&*�>gj��j�C�������H���j(���s�=F�I�	-�oR��g����1�d��J�w*�t#���(���}��V�L�z���I��D'��:�kT�3G�-N�����R�Z��M���:��Z��<�/�t�������C�h��C�����F��r���X���o�T�3����H�Vg+Xe�����&��I,�qf�8�Ng�mn�u[o*�B���ft�Z��75���KU	�N���-qS�5G���Y:���:���4�Y�lj
�rx��jK��uREe�������^W�E��Kj�����5)_�k}I���X\�eRUi�k���v�U��rw�b�1�	�^���M�K�:����,:����\^s������<T��(����?�����u5a����W�&�P6C+K\����(N%k��!K��m�=����%=(�@��U_��2[�I3�K����Q�E��n�~����4�p�tS���:���s�S1��s{#��#�\����m���-�+�6�\^L,�UA��<�Z>]%Yr�#����8�F/����O�_?���8���A������N�XAE9�u��m5��BQ�q�,Q�|w�B;��/Dq~��m
�4��	�����{
.s#f@i1'����$�QV0�eR�������4�O��0�U){��%��i�� |������K�����BD��C��-���$��KR��o��|+VW��CS�	Hj%#
V�]Yh�0w/��1�Z��)B�;����H����X2�-�lW��:��^M�`��B~�n'nR�����S�R&I�*�=oi�>�YZ����
E����$���k�7���Y�:T&����rh�o�:A�:x}a��8%���Y�:w[���*<L�x���.�T�o�N>m�������;&�i[^�S�;CX�{Mx�� !\�y�I�)3�?h���]c���z���Q;/�$Z�&���,��Uk�������e�OI9}q����h|�7<�5s%���X�����=��<H�D���AD����*W�q����!��W/��;�D
���2.!��0M0��w1>m�;��i��^���6���9E&���'����q^�D�����tx����1!��i^��e�W�e1DUl=� �l��(�yCfW�����y��	�y�C����K?Ty�&v�8/��j-;����N6��]?q>'���]{�u`X9�s~��3g���7H{� %��8{��=�76�:`Y\���A��<��C��E����#0:P
��
��=g����������f.u��/`��33j0�]�fx�Tg`7�:[ZwaBks�����1Zr6���A��[`�J�������k���`t�p�)F>���3&kJ��`�t�����(.������l�t)$L��-���N���� =-���mZ��a6���zM2��r6�t{q����1�]"������S�g����`����!�Ac{{Fl�6���29�� ��~q
������n}�����#��7�"�����l�N���0��l�dL�\�su`�������inl��d9S}Y�g��a�:-�_���
Gg�3H?}�:��S=bz�_�:Z8UD����W���+��O��
��rc�����Z[���Q����~ey�~���Y�K�T�~��������r�������)j��4�j��_��������?��G��>;���,nY����jW�a������R@�����Uf���O������HZ���N.�8�2`BP��lE	+:����8���5=j����������O����������1e"�z�B�W����������|��*��o�YT��MzMJ����JNq�Do�o�:�$U��[.0i���������}��C�8���j��"���+-��.D�B�u�{R2%��4H�0
R�yBHA��������$�iaB�����!-
H�����!����O��[�}:�	{�4/��Z�w�� �IW��A�U�k���]q�T2�hT��yz�x�2�C�k����������M���'(�l���O�v��)�=�7�^``�������/ ��
@���]�A�\��Q�a�0�������uq��eH��kG�tc!�P�fm��L	�(�iCb�z:HT�DH[�yJ��
'B�Y MixT�DH{R>%$�p$�jI���W��dR�_��L��zz��nn�/.g���Y��� �����:�F�K���(��������Jv8�1�Q�S��f6`�<0�x2�����HO��s��1�Q�����e���U������8Y��?P�;��]�2o���p�%�$:Ic@4�[x��p[%���9���n��$�|8G�4aq.����q��x������HAyq>�n-��12R>�����8��T�������q�T"4*\C��	21ff�a�G�SS��kD3=��2�p�8��*#��5��gPa8]���q>�n�����8���9dpD��9Br�V�}����JU��~[&�$}K��[~�%���{��\�l[@o�W�	�7D6�
���X��G�Zp��������@�.��5�&���������i`U�H���hj��7@U�j���r>����va#N��U%�+�����f�M�w�J_�0M�	����^������&N��5x�n��p5,M�5l�F.~M
�uM�z�C
���\J�f&��j0H]���������X%M�2B��_�(����.+\=��.�iBr��B�����%�<�M7�>]�	V�|�������3�h1���	�8�hd�&��9�Z����4=�[`V�-���������x;s�"Dd�J!�n��8����!5���L(��=G�R6.�P�)g�9�����s����0D	��e���kg�t�Kg�&�{����_�D+f9�@�[��pv��"����]�!�k�	�k���s)���|ob���w�����%+b�8N�o�D�D�
J�^]���� (C�G����>��E�mg��I�D�
J)��1��J�V
0`\8��k��&�r7�� Q������%�d�7�y�N$0����?_����G���l����p�`���Gx��������@
�`�&gO��!jZ��"�y��(g�H�)�U�0M,�p�E'�v�,V
������Yv&�!���g�gijp�!����g��=?�����aP��C28���:�w���j�H~����!#��`�jh$�rv�_�
pz#���8�����!
��(�+���"T8�TiG����q���A]�g�\&�kYiJX��"�y�g��
W�
3D)-6���n^KN���x�� ��s����/�4������$�vt#hM�5�9�u�.�JC��s5D�������|#h���%Pt���:��s��Y�s"O��|n/Hn�=����k�:aC�e:� ���b0��������Q5���j^p���g��4DQk�@-�Wv�7W�p�&B�������;(��B	.h�z6 ������0�����bYd4*�L�z�2�w��a�����G���T�@g`��b!17�/z%jh�������u�(lg,8kj����LZJ�a��7��
8A@�^0��H9����t���@h��[K��������Q
b�&D�|�� �-��Ct�a
QS����q��������*c��� ��K$em�Qy[�+3�	� ��r����}o�s�wFW8S!"�w������A,@4CT��3�x��,@5��]d�J5�/�#�@h�E5�8����y��;�&�{� g����"cGg�Hc*��hr�R�����D�����%6���U��D��=�q]���������FVba].��!��}o���@�����m���w�_��Yl68�P%�wh:rM%����B���	8f�u�Zh���W8e�o�'������J���gV|��j���G���h/�����!h�Q��3@��#�Fh~���V�����D���m�]��m�����������p��@Xz�.�v����o�*�8#Q����!
�L�����Te8�s�@�J��B�;@�������S<_��pf���(M8#^�E�i{�4c�W�3<������I�@���@m�u����hc �iD3a8{�,�����{a)] �go.�
�����.N�38*���������zv���`T�wv�M���6c�A�@c���f"q/��+b���;���^�<N?��W���5��8��C�2A8��K|�O��F���;Hf�J-���-=X3;}yv�D]9
<��p��8���8uC��@i�s�V2`���2a&�������}�~�v]d��
�2��(7��_���,���`����D���t������AB����jY�O�lKr��4d�g��D�^0��9��Sm�=H���S�{�@[�����D�w���O�yc�|�����P�1$��#��nw�pZ2����i��1D�:��aB����l������+���]��������:�|zK�/Qu�^�bw�s�%�_�k�����+��uT\�7�Q�����$���E�KG�-K������p��{����]h���Dbw<����0�@��<ND���Y����WI����c��$o�Z!����(-�����l���T�=a&}`�*��_����8���f|z�J��������(�OQuM��K��"�������*b��	����x�1���.V�E�?H�S�U��
K���eYt���.����d���\U���{%
���%`��P���K�9M�(\%Z�Y7U�1���6����Q�E�����q.��J��N�����x�����Z��*)�������WH'�he�T�J��3���L����R�B�v66{8�_�c���5����WV�J�����r�^��/���"�2���@$�6���F�U���v�eq)���O�c�~b��e%O��|�4���y�<_M�c�S����bc�������xj��+K��o�[TD�O/eq9T���z����	#�Z�������C�?��[�C)R�oZ_qM��x+�����|����������H�iux-�S��%���4��w�#�`u���N�Q!�6-o
J���
���g|��%����kk|�[�
�^����E���s�����U��S���|����n�|5������*?����xyaU������iQR��] �q]x����v���C`����oa�p5���-�� 
$y�N����u���I�7����eZ���bq!<P�����{~|-���UQ^�l$~��;��3�x��_�<O���7����G����I��U����BcY~�gXZ!���z�0���hU!F�d���M��X�>J�D���%x��$eVa��a8�VgD
��b�������E���z�c�YT����:����=�U	�y� �8���������;(T?p��l�"��Oc�T���L��:'�<��O�|��s�������/6��sx2���t��:�����N����o��!4�'[E�dEU=l�s��������z*��_'���%�H��5��c�W�wQ�YQU��zp������Ns��d]=
��u?���?�1�0�i>����V4����+����O/���T�_�:{
uO/�+j~�6V�����(��}t��;�mb��]��7�f�1e�ns����fc��:�G��`�u�;^S��Z>6���$���|.�3{��r��P�{,��8�R1Tk����y3����(����;�mX�`�V�W�*���n$a.�i �E"^���I���x�x���N�����������-��C��h�mD|~qt�;����d��euyK����,wW�R_i������(y�Z�b�q�����.��$���b��M�]tEN����M-�t@��D�����S������!��kR55���_��X��|u{�|K���;9�7�OI���o4Rw �E�������RrITF*�4�J��`"���zN�/)3(��l�%�Yh9��5�Sua��������d��:�H�	*�U�w^C��x�]Q-)|!�����RB.h#;��6��(����D��8����K	�H	1�`B���F�����$Jztb���J�6�1B7�@BBL$����DF��p����lD9�[��edi��1�c���D�W^�������KZ���]�'�!��}��L]��z|�pn�5;4����gq.k.R�!g��Y��*_o6u|�`u���?V-l�rn����4mm4u�]����)����Z��N�S������V#Z���N����L������5�rq��M�|�����O�T�#�?�Ae�E�#�0�L�%���R����oi������*���I���*����8������u�k���{����~2MK�>��r�n����:�=�[�^J��v�DO�����}����l�A�����"^�klex�� YJRZ�����^H���5I$��@LI���U����]s����/H,.QW5_]x����-�������j�Z��-u�p��dO����g�P�����/�6����o���9�g�Q�!��[j�p�����3��9*���OVf��n���[)��v/�;��S�%��%��@�&��K�t���/�Ni������Dx�
������8�g��� ���-#�LN�H=u�5���\�ke���OMP{�X,�� ~f?�G@�E��LP�ij���Q�CLg���������v�z�50m6C����2��\X������2�I1��jN)f]��.��:�����r�z���	����hD�g����J�sT~�|r�e�j7#�7a��������#�2� j������c���������a���:���B;����5ab�wt���>��"��_D����5K�
�P`CO����^�`�r�V{��~��1M4x�������aB�M���J�n*���\p�x��������-�$�ok;k�������t4o;D���
�@p�M�<��y��T}xY�7�B�{�k��9��C���?�i�=���Lf�A��P�J�-������)p���\��
��1<�������r�������
���<�_c���V������\����L�bGh���������g��t�;�>0�����|����~��H����W�q�V
O�T����k�O�����}�V��H�S�C��v7���n~\"z�`5�#�Y�la�[�����9	�8�K}��Zz*�W��U{��v�=���LC�a	��+��7���3��NZ������*��N>N��>t[EU��E\����6D5D_���Y|�-�b�y��������������*�2n���6��	�������Y0���&!�W@�C����-���w�`/i~��*�z��!{�A���L����P\�i�R7ic������RKH���A,���:������&��/��%��Q�?+�^66�l��!DPS�:w����Visw�����Q+5����p�x���&A��2���>�Q�F���dPI�����F��.%��W�U,�,�?Ger���<�_=YK��< �����oI����(�#.G[ �~w��A�_��D��������P���E(�,��0����0:*�E!�
S�b�R���#�&q�/�)a ��(v����l/f���G���������������~�������V83����c8��(���66��{@��E�	Ty}���H��j{r5AR�T�r�+�"
�F����U|���=���(�,���'����������"��X�QyX�<P:�F~���BP�����P��
��&
���-�F������s�������S�V6���A	1�v���Z�"g��m)w��)t���^�j>����Bqk��������p������Y`�mr�(O���o'Q_5$��P��Y`��q���\MsX��6�;���H�C��������D����_������;��,��9������TG��r�$*�2���C{Qx������=��o��Gp��N�������^��jI�SV��o[�0�4��]���K~!����@q�,h���ofxqm�;��	A��N��/�v,.�6&��;��(�TU����6J���I���w�����,=�5?{N^�]�������g�SG8m���kY�nGq�7���(U�4�u�8��hU�C�h�X�J�:�kHqbm��k�X�ja��"S��LxW��+��Y&��P������):�.��i�(���x[�!I{~����^�35�A_T �B~����X��m����h���G�Y��$o=�h6�����D;�SC�5h�	�AE���E)T,���_���/��n�t�}����"�0/��uQw��d�����P�G
js���p:~�_9�/~�|(����8�R���E�����s���:��:�D�%�:��9{�oYV=��Y��T5��<'u^i7)�TC���9���������<���V��]
��[V:_�����wQ��A�2B����l�
���������d��q���f?��g|��K���cq�k�"����^~����R�U%m%I��|��X����Q���5��6U5������z>�Ym
�(�
���������<��PE�>JP<���D�5�O�fc7�����MG{CGZ�%n����?�{7~�&/7Z}���S/oGT^�����X8��zBMQ�HFV�5��O������e��1VM�� 4����s0�(�))`G��&T���lJ��c��=���4������GY����Q{V���������A�d��)j�k��x��OG<��i Gn#�a�61�2����
��L�?�7�@S�x�4��L�Hx�]L>�k\�F�Wq�[Z�O�JYQ����6~��� `�I��-����l�MB�d���O��9��r�a�V��A������l)+���}���)�n����_?��������������a��	�8fMU;����f������������K�|M�:���58�G��N&w�x���>��
���0�
[S�J�)�[�r��
6�����4
��7E�7��u����V5�v ��N�K�'b
g�����d�������b)Uu�O�����'`�V�X�J�"8�}�����z�?d�>*��Q�,�8i�C%�S�0Bo#�/Q��J=�d�P�����?nYMh�
r��f�M������YV'.�����+�������DTj[w������.P����S�JQQ�m��c��I���T�\�|�(�c�BI�vZ5� ���@'����������YW����+_���y-��~g�0�kK�F�nTDd���)�Z�V���@��>J�JuCD��Y�/��L�`�mb�}��	�a,JT[���P�U���	��SHfO�s/�����-K��E���g&��\Da&���K��w���*�}��!���Vm�wTi~�����6����u5*��w��:��������.r
�r��E%�^<�;��,^�4����
���������B�ts�i�z���2��B�A6�8���@;���z������&#l�^�]��4;�$��C,!�r����x� C8Q���L�Sz�� R'��Y��������W��&�/�����o�Cke�j���U)��=�u%�+�Q��{(�r��.�������TzP%)�/m�bv��vw���KZ%����oe�i�m������jM`�m�d���b�����"�(�1�e�|�����g�,^��5tn�U7�pv#P���3�Y��*%�\�bl��`W
n9�,�QM�[N�(�k4W)�G9OBL3��+V���A�2��{� S<
N(�FL�����R�%�;N��T5�g�,kMB�ip�������N4	8� V���LS/Qot�����0�3'T�$�=���>$�&d��GET~vN~�f�qp\�hQw�C��y�p�>�
����^M	�4?%_!��*XSs��2
O|����@����V5a��>'u�t^X:�������P������E�I����t�P���~�_�Qj���777r��A����	��C���D��#�R����;�d�F�{S(Sz{�5�~X@����fz�q�8(��+�Y#6���(��I]%uP��P�|e!���#�z]����`��z�c88E�5O����v$�TFz&;-Zsw�{��V��c3��K����rmR3K�3��D(\>�w����U��&�q�V����<����>�k��/�w�u@1z����L�Iy��O����t-�r[d�w�{oa`�~`t`�"R�w�|*>U���z�����o���u?>� pu�`�N�p���h�or2�i��z���_�=k���_���)k�`e���=Jb���9���d�/�mr�!]�^2c�&&�%����(�����[]����6���]*��M������VW����@�(%��ov��kq'�����*e}�C�>P�FhD���K\rwK����k�Zm�<e}�B�:�������wy��p��"|���d���\�2a��jg\rv�
	����Y0�IW�3pA�����L�'H:����|�O�t<����<�~�����L<���0�x<{O>�~����hQ�T����-�>�������x�����"SM�X�-��:��`�-�����;|���z�Xo,��W>Z�@],i��)��H�X����o�����Q���F<�q�j���I��r�F��/p ��c����}�|�
]vs�]�'�o��A��|�*mS��y��|�3��@�.Q���l/��z0��p[ ��
�t&�9P�,�g�5���'U;T�~dE���]��AzW��@ B������)t@JC��L�Bi6�|
��l����fX�������y�IS>)��;;=V��ww���KL�1Z54$f��F[V��5����/|����;�l�����(��;��<,@�r�"7S������L�,�I�xW)���������@���3g� �y��7f^k24��2s���"���[�&����G�\S5�B�V�����c�l�p������5��Y�#K���������{���1���������Q�������cI��F�CG�����_���o?�#a��&���?x����m�#LQ�����/<��T{r=(�7O$
Y�-W(��J� =��������1e_G��g�%����7�/�a��������������k��uh|!���v�D�0�]�_�{^���q�,j���M6��do|x�7�D�u�	�$��Tz�����JO�?�rI#��&�^������u]�A_le������Pr�pMXj^*����#����c����8?'�sRI�\���RD����%pIS~���<*�SR&'s������8�py������[~�:�t'AZ=��@��9@Yc=��L�Tc�vF��U�J�s�_�M�4[�P�C��I��,����$�vI�)�Jn[3�Rn�������[%qy|������������u�����$�6���D�����2~��A+�6
�q�9$��d�	���k�ZI��7����F���h*�9U��>�c�3dr�g��zu%������:h�Q%6o ���ckB��(h��C�i�q4��n
j;�v6��T��[���4��vc����8u=���z�	�y&t>+�|�yO�_�$����������sp~�9�����s�������0��L�Ih��d"	�s� 	�w� ��HBg�<H�g�H3I�<�I�\�F2M���� QC3��HW������T�V'�Q���Jg���������*��	�
�A�|��]{Q���PO�]��$�4����)��)B���LH�
�B������0�
m*&�����$=���j���k�%w��s�3���D��2j�	V�!�g�(:��OJ��������hG#Q��Lk����~xI3���eN;��[����;-�c<� �O�	w���"��`�$K����A~7��[���Ryc�Y���*^+Z�e	�bm+��7���q9%A�����2�]`���O��S^tD_�ny�������cvf�sh�W����l�:U��F��{�F�������!��L��n��I����i��"��9�e�<�q2JT�R'��%_����D�f�����*dT/��7�J�|PO�p�b5�"����#U����z�qE�)���M������sJ7TE�+{�TDyQG�1?X=�&$K�\r��s��z�p�^����^?8��Vt68���%M��)]�uXk��.� ���[1U k0����������f��~,���Au��W����{e�)��l���F�y<�T��o�Z�[������?��2p$C�rf�E���2�*4KN�.�~
����">%bNA�]O@}M�?W�,�L~@�=Z��p�z�``��-O��UP�Y�4����"z_�c0U���H�p�'`���s�����0�5>0�4w; ��h..V�\��K�V�7�sd��/sRP���uD��c!h�R��#|e�}�\<��8%K��,;���*�Pd�*=O����V*��
jA�v��?��/nSL��;��m���vhi�C�1���\�s;��v��@>z��\$A�.�;2�
�Q���pK����RA��RC��k9t
�u��p��ri�1��&/1�I�3���0/W��������r��]��y�����eC���k8��Q�p��-`UGd�x���k[�0AWv�����y����B
���8�����G����������y:Id%U������������Dfa�
��d]k��?��Ux�;�od�H�� ����
�?4Q��5�|�����4zs���;5�{��8�n��k���'~�M�Vf��<4O�����H�
m3(���T�������U��7u6B���| K�MY���!���u�N��l}(V���.p�P�!���](,����@(�Wn�PX��C�QL��,���P�G��������v��`���CHb�N+uk�E�������C[_��BZ]C��������Z�i�"Qv$5w$��$��&9������b�8?&�����W��CW�#(j/K��D��9��xgh�b��2m`!���.��8���p�D�`bO�����H�WD0�4�u��������1�ce_����<��[�
nj)`�,J��m�y-�D����[����kw7�&�_K�"_��m��{f���Zmi��q�I�;{v��IV%�l��+�(����_D �	 q�e��-Qd1�xn���2���m�Hm���#
�~��=`���$+&@�_�|�U	J_�d���w��]��{O�u�=�E+
�.�3�����uf� b����T�V������P����L����AD��C	�D�q
��r�#kG��s^mZ���N�[�Q����c�v��N�����+Y\�rQXy*���	�0��I�������7M�����������hE�<�����r-3F;�97��ES�X`��D;��~QDs�k��FC�����VB^������H�z[/k��c��J��7���<�O�T:*��S���r@�]��rS)�1�Y��4q���9
�<"*�ud-��N����p�i[��_����/��;����2�K�5����W{���y+��|�$sDIW�����WC�Q4=�j��a��.h����8!�o�1_}��W��f~�&d��_�D���q9�G7a�dBy.��������]����f6f�q@����#b
����������1��G���o�w��9����Bv�t�����>��w���
q����f��6�z�[�_F^v�,0*��m�"�
���0���-��2��!��CB!�eQ�U(�_8�?����9��B�6|j=�s�B���
�Z�g��P�����X��V�j-Jc���_�P�C_���O�F�I���vm�����`�y/1@(%��73������x�9Y&�Q�9���z��r3���|��M�^!��K�(n�sv�������8�.��������o?"�E��������-
>���oTJ(|���1�a-K���z�i���%�� :�9=|�a��	����N	-���hH��LP]��L�n^��g�A4��y���
YnN1���R:�h���������s�/�:��Y���X����m/��Q�ys�ARD��zk�
�I*�7m����-[)��Au�g(���n�+T�)���'��O���C]-����]C��,W�K;��c�
��Kb`4�:�I��
�"��ggkH%�l~�Ya�9�}
t��;#�5�
5����g����4v��J)6w�� .w_R;sh�E����z��O:-%*xT��
)��Y5O�MW�u�����F�v{��z�~Z����)���]F�^�K7�q�����h�m�\����)�����'��]�����l���D �����C{�v>�X��N]�x���m}t=�kmy�x]��J��	�:d����(x� ���k����f;^l?�,��f�Y�5���V>)��LDU^<�d�j�Tp�P�.��z��l�l��[�R����*M0�~�=/Bc������4��_������2)C.	/vK��hW(�E�^�����/����P�<��Bn���a�"��e�>��(A�f�r��^�6^���)������Z$�}�e�<����F�
D��=���:W�f�&����6k��@v�J��xl�W.���\L���V�
�6�6��W�V����,�<w��~W�[x���/s��Ka������P����E����T�,���6W�{���
�4����tQVzQP�����R�P�$A+Lv7o����3 (����|��b��I��������Q�"����S�T��NM���;�Cx�;�6^�R��Y;��a�kK�rn:�3���V1Ne��:2��y����'�S�����|���		l�<A7�}>�M�)']���y_���&!��{"|��
��?
vfD�t]�����������c�L���9,�V�Y~2P$�f��js_�0e^u�oV�����������UA��uE�����;���0�U��\5r�k��wu"P����1�3�������c��j�-M��j�����k������!��|�U�F\"����������'E��^);�I%��O*^>B%�����'^���Fyz�A%bR�uL�
e���h�x�")�4���y4�,
iR�Q��P���_*t*�t��s����v��W������Nj�>���b������}�����D�����pN��S��EU�:�\���sII}M������z�N�d��c�g�<;��~��vd���w�"uV���gl�;���/��q��h�6�����A�q�.P�����R��V��g��&�1Q�������h}�9u����=h����������]����Q����9����������nWa.���S�X-u������6�%������2H�/�jD�B%��)g�<���t��Q��������_�`&lkhk�+F6��a�%-y���9�D\�����@I�j�T/�$^���wi�W�$���4.�4�������B�!�����-R��OT-�\��L�Q����]�UF�xn��sq�CP��;hF�6E����9.�5-��Hf���x�8�VO�=�����Z�R���
���<N�E�_�N�\=�*����a���g���:��"4����$�q�l�n�v������������H���C�\U��)� L��L3$��?V��"��?�)������	0�]��r����E~cK<V���v���n��P)>�J��7���=��@r�LD$1�`���!����5��_��l�}��k����Q�v���MI������6�t���0���#��Ww�j�X�&���EK_�[�K:�j5���0��og@��&.�qt��#JV�SPL�SH��,�T�?	I�C�']Q�1}��?%�������U�X`����q��@��"^<X�b�����oS�E����a�D�8Y�v�%d��GD+��u�m�������wN���������V�KW�"� ��*�s�L5bg��j�r����W�{M��Ge�� ��U6���RZ����fHq53�����o���~C��UKWM}
�S�X�F���ag�L��?��R^;���F^�'Z�3k�|H����h����E�p�
���U�W;eDij|�z��B�*-���������	���^�~�L�~~������d����|�tY���gwkwJ������s��
_qVo�N9'�^\.y_?)�n
@yI��O?�^����v!n�;����[�����y1!���q(�v���3�]99���30�:��%>�\`H��SZ��m���i�<����|�	�&������-l7���Tz��;��P?:�U��Q:�<
��0-��"���tZg���B�?`BaQ�/���`�1�,�������P��g�G��~3�����;Q��_����G%�3�^�3��Rg��
E�� �����~�B����m���X����H��,
���G�t�]��I#�G��3�d�����K�Og�=�����d��/ �G�>�G
�/`9e�H+����e�H�(���_z�2}�7��u�^�;T���]M���X��j��JG�|
U�h�C���}+D?=��W�.k��N�^X������M�Pj"��F'���r��T�����y��z_5k��{���]�O�*T�%M�?A9��Q��tP��SE$B+���5G���pD�*e���6�����\^N��=���Jg����x��U�������1h��f'����5c��v�����Y�w����G,:���������l��SC��5��G��c|��w��g��29J�K�s"�3	.�x��Nlx=�^�
��-�9p���iy7� �N��Awt�����L��tn�k���t�n�)����I�)�\�JwN������S�U~4c�y�8�i��c=W�
���T8������>l�
���x�x^G�W���Y*V�����}�M�2_ ���|�Cx�����E����Y���
5<�U����P�@v- �lGE����K����J�U�����J��"���c��E3Ou���u��E��x�c����m��\y�����e��e1u�NyW��x�������Xk)��zA���>fo����������a���H��_Y!��Z��������m�����Y�GCz���f�cO����~���m����$����>�2tt��P�&�P,�7�w|�T���I�{D��3��rx%C��p����EkZQ�%�	�DI��Vdk�S��Q\&RwBF�
�1���������q)Tt+D��R�{��3�J���Y����f��[!����J��
��Q��t�#[B�3��]���)��	��j��h��{
P����X��W�b��z����[}t���x!}=
��w|�;�������~W�-�&��0�����A��t���p�^C1���]�<t�u�]GD�cG������Sj-����$��`k�Y�bV�j����(0�#��Zmd|��4	�R�I�p"��D.�mHZ���nU-��w�e���P
�n��c�B�Y��
Z�*6c�_w�td�e����#�f
�>�i� Qhp�1L�G���i�*48�(�Y���b�4�Tmp	+:�<�M�\�����3�6
�[��s��{Z��'5*S�x�D���K��L��fU���9���	/�����h_���S�*/������F��i����E�i�������q����Qy���Y�e<;�F��;/��e�<�����������_T�~�����w�N��k8�������C����i�A�X5�
&du�%��w?�If<�������^�L�*�p��s�~^45���ho���W���:,���z�\���^�����Dw���F{T�|��D�I��&�Jr���@�+��(�?S�O�V���#�m�zwh����^n��@�j���"���������	7o�L��g��7�F�|S�������[f��5�7��xh�������8���`�����u�9�������=�s����_6D��!Zr"��hS��������)<,��|J�MpK����������`�8���13�UG�C8��
����5���z|lq?_Vm��������p�n�y��Y/6�����2<�9�����]p��Y�i�F^�$d3JF[�i�Z\�.~_�����3�\1=�>i[�\����/
{�����Z��7�����|�7gJ�8��Q������!� &\���W���)��1�j�������8��CF�9l{'rFz���E�rR�w�MeBjT��U�������z� ������:�:Pb�"J�^u�]6��f<��cp������7�Z#���D���/`sz���X8�;�VH������lI�Q/p��H3�B���0�����N����GW��V�A�GH���c�"�����6wwp�TV��GD��C��������u�U���	��xF6�)6�T�w��r�Ao�u����*D\O���0���K��>?j*_@j18�����*�DT#?T���"������!<�&�`Tl�X�w����
5�>��W�k0>�~>BGD2� ��t@�o�G�"i��(J�� ��3(1\C��
W;T%�����G+���V�:q���pOs��Veb<NO�EN���&)Sx����8��)���w7$P�E6�2I��;�mwPW��I�����UJM*]����������.�L���i���2N
�u
�U��������*�����(�_W7�W���}KI�I�	�%6��s�Rh��~�x��a��D�c�4�kRu]"�l������Z��_
u	d�����H�����pb�i�3g��c#�ia���5�'�4����GZ�aS��
�z�<��c�_G��
�s28�^�8�"�&B�����8'4C���r~h��Dh��k��^m4�y���Nm4��x�����h�0����P��f���X��L6�N�@bu�p�Ak�R���|�����
:}��E�BV?��%nB�[����)��������x�0xQ(u\�z�X�2�m����mub.`���������Vuv�4c.����������U�4d�0#m��k7����.�U-�Z�}��u���d}��>���fw�Y��.��m���(���*�_E��cH}w+�.�_E������)�W��F������F�U�KYF}�
/eY�I�L\��p�]U�e
�5�����?�9�����g#�������L>�H�_�;��������4�"������:�N����"�Z5k9Y��������)��+���.^8��Sr��.%1��O*�8�"��������L:\0�(1��t8%B������/`Ke�� �)o��S%E�i�=���(Mq�������(�iuiH�P`�n;J���,r_LN�Z4���.��gPy����&���r��r`�P�8��G��R~:��f����
��0P�����e�h�;;��^5��9?��S�j
<�T�
K|��o�G�zDm�(P��TJ��S�S�9��u�������������%�?m+��O��c��z�@�Tv{D���j|�-=���$4�e[/�d�yl�O�!����U��n<�$���	Wv��"��jA��h�z�|X��Y);�&4��=F"�G��\��i��6��Zo����D�Y	�����q0�!|r�7�O(���I��|�JG��q��(~�q8���W����ej����C������k�'�����A:}�},X4ww��^��i���
�$x��U���p\�b��"���KV��T}�l'���j��sh�F��KVh_jF�8u�~}X�d�P@~s��"�"�j>�p&����
t
c��za	��K�/8�(��!�oV$��V[�� DQ��c��!�������`�� �1�e�V�����rtJ@��sl�Z|���������5��5$� ��aNbI�P�)��-�~���k���&����.�Q��KA���H�9�G!�+����uH��[����a�p��Z8*���e���cg���2��M������~m���Y���jN�D����2�����cg�������(���#����+�Lw�p��'���^VR>'(~�rf\�-Fp��X?v��q���8V�������F���.�����#�Br���!+������$�#u�B�dt���?����(�Y\<��B�r�
J�tY��'������z_��>��M���C4J��TW���f��ZTOR.H��;�Q8��l��A*4 �#���� %2Ht�;�as b6�����0���#a�O��v����Q&*�b�#Z4��L*0�����4���~R�J�\���)�����c��cl���GC��i�D��k����tp���
����e�f�~��>a����UOl���i�����SR��p�me�mUs�j������~�� ���-�����y��1����9K��M���-�f�i��D*i����?_��qp�o�j�wu�!�`�i��)R�h������y��g��-\L�l=�D��������9���_��@����8���������f��w��2�C��j���=�������R���;��_L���9�+�$��Xqr@���\�������yW���1�����Q��#��	����S*q�EB��"���G����gs��o"������c
���:qA�qd��p$����{������:�s� ��:���$��gx�� 6�D�����*<�%I����������{�g��n��Z�����9Asy|�����O�<���;>CM�N9#o{��|�A"]�![���8�����\����a_3����N��:�A�/"x�ry�{zU��W< ���=��c��w�_�����]���-�>����.3(�I'��wP��{��s�Gl,�����Af����L[g���;����AO,�+�~�O$��l��
����sQ���a��|�*�><�xR���U�3F>��g����7��� ��}�Wx�W��85�����hA�xr�Z���HL��^�{��mW�����@�l���z��U��n. �����]��g"J����"%�X�6[�`��r5
�wD���E�N_7k#����T��Ku�`~���]>w�ZR�����ki�p�6w���������,qr������o���c�<��q�d�ZT{�+gI�h(1-���W��
�1�����HQP��`�W8��m�����a��}����M��-lPw��p��#hI��nj���r��^"Ff�z=)�ct�������b�'�����v��������&x���E_���?�����!��n�Y�����@w�����c��������j�T�fNM%Svw�!���	3R�ToO�0�����H3��N]���o���7�N���������]�M���SZ)�8z�m��NTZk��5�8�E����S4�dd����t��,���2������ xa��7�>���kq��~�m�P�o��U����cgJ�>�kc���m�l���g1����������2�b���oI�mu//E���YO����=q6�q�_��EQ����R��P-��A���Ok�"n�
��;<l�R�,9}+���G(]�����������Z�.�����WRn�Z��m�p�~3�����jU����X���d�����F^b�#D �K;;���8�53p���Y6�A�_�r4�o��^(v���[��`C�ty�ar	
��9y;]�	��C����a�~h�fO��������#K�$�i��qV��/z�a�mX�������?E(�V��a�~j���}u��2������v�~_��}yf����u�uG����N�(J�I�6�=^Xa�@o{��+�Q�j�]]�$H%�R�[��7-�����I/�=�i���
x���a�y�����������c=?��{�YG��x��&'����tT���������5M���V�K����1��j��a��+����}����v�����a��p,�zW/����~W�W{�rq2��d�R����=#e���-'E/R~�c
�O���T����S����J�V���Q�kc|7�D4����
~���>���'�k�Y-5#�"$f����������t���;�[o��Q����<�����YJ����j���z�?6Kq.�:J*iC&Q��S��$7�b�
�I+��lqX��7�O�Y�F}�NB��^�D�7� �UvI�R�����cf���l ����# �������9��MZ�=�RH���l��z�$�J������b; ��V����w(�(�k_��~1V}�k���FL�V�}rq��L������'����}��4N��S�2���������%�����s�B����q��W��UOC��S���)�cB�6z������/�*����@i��tn�7&�/���_D�����LC�Lv��#�R79�����'�����@�A)��?�E����kH��=���A�<)�wc�s4&�j@9�Z�`�6Hd�/j����{0�f���U�&�[���9�P��'U�H������L���%)�@�����;~�a��/=�m>H/���\���eO!��a]F�$���n�w>���D������b�����homG,��#{>e��i���q�F'�.6����\TM�e���f�"���
���4��\;��r<u��v��fv��*�<�S��m�t�������v��3���D`���,���s���g��y�������k�����V���D�:b[�S]�`�)����}�&��z��g\�+�<����N�������0t$���~#!�R�'n�g����Z�l.(�J����\����0����pw&��
�}�1��=��S�ZH�N/_��?�6K�$G+�K�W������T��������PW[��']�Z\(�@�^�/��w5.�g���������+��Kz�������(]����j;���xt��]n�z��?
G'���.���%^��7�L(�W'���z
��<���(�:����t�Q����U5��v�c�e��&|+q�d�V_�7<"y���i�����S:#�'��][~���%����NA�62���Zb��)��*���]C�7�3��5���zJ}�ESmac�W(*�xxBu��pj����9U1�oP�F>����z)�=��}Jw�ct����?����n������L��_2���Bp|y��L������Z@�*������p>;���d0�k�u�[l>�M���w�!Q�K�2��e��+��@R����0�����2�qW�iUm4r�|�L��e*�BH�"������p���7"� e��w�}�0���;�AJ�����K�����@��<���^-U����db��,��� �u���K���8H(�^ E�����K�6�!%����z.v�>���(�n�9�a,7��v�B�FL�����PEL�u�����O��X4��� e��
�;���/p�������g
 ������Z����n6��m_��������_����[*/��=/gp)�k���?����������(s�]Fq���|�{��3!@W��Lk�aE�����_�q.��T|���o��c��WF����� ��f_C
&�n������sh6�������'�},�p��
><�d��a����dN�-�G���2L��x XD��ps�i�)�C����
��tW��z'�r����S1~�m��&i�B�;�h_����\��aj����l�9/)h�
�Q��P��S��Q��������<����IQ���-}��dH����)���������b��*�A*O����y'�#\����=�g��}��=SK�f(���]
�q��/p�2\��w�%d���L����b�����{fL@�]�V�@�}n6(a�>��z�����-���Ox�C���	��Cj����y��\Qig�����[�6�O������Q`
�������D;�Mv4������#Mi(���O0�J����i�i6|���������:�G�F��z�����F�5���Y�tow�������\����
���W��y��
��������lswG\�i'b]�7|;[�?wc	GA}�3�=�f?���D�r�^���l��K��i����ta�._?���|��?�n#����$&�A���������3��H���h�f��5��4�����n����v6���}�8�����������;4;�p��_���'vN���	�D�LM6	�G�#��1�R�a����qU}����j�����&����zv��������=|���2{�G2�m<��\H�`DP������~�@?��U����Z��	=k48��"��K^�����l��n�fx����:-~���gE�V,��w��;&B�}���{����8�"2t+U�jMhAp�4K<����k_B��|C`�0�#�H��ru����L��O���/M2�4,�Oh��&1����&�������T\��-�9f����U�t�z�-�����?��K_���[����������}��W�����Y~���f�������5$�d�����l�-��&�i#/�X���2����B]��\���"K�5�Yr��{�+�C:6����/0Yq���-�b�Z,3.T���`�G�$�P�~G�zg">��nZ,!��O���g��qTR{K��vL���J�yI����1��p�J�,���g�g��A��/��(�T�9���Fw���=�I�u����������[��z�=�~C"���J���`��VEy{ssW����s�y�����v���W_}�R�7�����W���o����"�_D�����`���<<�J>k�`�C�B>�{�4�	7[�0�����X0��d�V<�?�ye���[B!`>0*��M�$��a$��X��a�$O��'�Rgy��)���.�D�J��]��Y��/N�
��2v(V	D,����@d1V�T�nP���K�/�~%	�����]H�i��,'�0c1�o ���tQY������N	>CW����`�_������=g,��^��4}W�5J}�(?Y���/���&}��?������=��af�o��������kX������Z���f[����A*��4 �FE���aB��Xp%q��a�Q�Qf�)�������Q��yX��l������7��?��Wv�e���6��y�U���	i��tZL��E���]�&n�m�
�"���� &����}��F����r���_�k����U�,o���^�"~����C}����zN�IYQ��4�}�_�$~��������/�}���1���(�����=p�������/�4�2�������^~�%������o���=�-�E��$���������������nI�!�W����T���z}���yF��_�R_iq^E��cVd���p����	c4
��+��X#��F��V���<p
�j�A^X�q�J�y����nQ����Y�=�a5(r#�a�0[��[p}>5��d����M����+�
�F8������cY���,�lMF�DF���n9{�LM�lCHR������n����{���E%�V�pa�W� j���j0[.�5[�APT������-������P�]�����[������~M��>���+�<����w���vI#��Q���'[�lq/�H;6���q�2������^�9��w7�����M������5Y+�����01������@��*����F�DE����4dm�w��Y>������_����!�.�-��<�#DF�Q�����q�k:�O_�pEbdf
�;'�z��\3#]�Ud�F_��R�]�{Y�?�h�n��Q���N��4���+\��F�^����B��jGo��9$_QG#�3c���W�7������$���0.��(`��\�H|C+k�����;"#��V��0���>�@�\�����x��e>��l�-�F����f$�0�"���-�7�W�'A�&��a�/���
���`Q/k����/��a�N�?�~���M�j����������������I`�+�"#"|����wA�K��$ 3azZ0�
AX�k�?����wo^����;(��5W$������	�?}�������?����?�����������������6���,Y��
��i������|�^b��n����n��/�=�m�����f� ��]�v���/4QM'�v	3��C���@F,�v����f���-�� ����@iz�a���vm�����<��������������$r�Ni���7�,h���jI����{�R4���:����h]����-�J&c#�������-\������������m��_��E/�B9�z3k���[n��Q������z#=�������G4����`8a�]�[BQw�������mYd�����t� ��}�"��#B�>��N��������a��_����x�.�B6C��U�=��?o0�i�o_�#,��;�Tj������������V����mC�x>l�2�C�>��%d��}=}H�On���:%n��f���|���7�g������~�GG�j��F%������/G�r��_=�J��:�����6�����8����_��O�� �+2���n p`�?����[hf2`�M�����O[��=xzSJ�!�7��_=��W��9�����w`�u���������<���[�;W�
�E7����*B�I���*���'R�+<����>>���`_~���z��?����?�|���?�&����s���/_��������?|������A�qS�2 ���������X4P
� !cN�A����Y5�V�I��=�n�O���' }���1|@�"���u2|Ff7��R����f�8��.�v��p��'i��;[������K��EL�����;�oSA�k:�t�H���(0W� *�8���|�����?��jQc&j|���(j|)Q�5�P'��d���Dx��?��e\��	S*���%������^R��;��5Aw�������@j�k���s��	C�5
�
���\���'}�m0��g��Ik�<��#�P�8N��,&�?DbH��Y/��7�d��2��Zb>J�W��^�;�K{=��4�W^
c
o���8:�x(�-���Hf�1���hv�v�����(�a���1���"����C�E����K��#����3�3�\�>`����V�R�)����"F"�Ng�g#����l"�{����R�(G��yG9Z��(��oU}T��(��n��:���'��p�dHI�u������$��L]��bb�q�Ue��c����JRS����&�S�F�gS�y�^N9��q=x�A
}�����9�Y�j-]j-������M(GMc�:���#A3�R�S�d�+&pV��V���X����Vp��������u���oV�#c�Y����>�f�p$(�`�sB�N�,8�u�C�����u�aN��q���B�[[���$��K��Kq����/���:IR6�:�M�\E�,����9�mM��xT�����[���Q�"�'pI���0�5����z�O���H��_���)�����C��?2��C$�z��b�{!9-��/.	��o8W�d]/�GO�*�OL�&A���Q�,���z�a�{/����`b�2����A\�VqI?���Z.�(������a\��X��JS�J��x�qI?O�Gu�nuf��\��@N���������3�K���J.��1s�w0��\07��t�������8���<���r�e�O,]��%�!�j>�t�o@��|@7�������!]�!����'��.���X
�x�U�����7�K�QX���q���)��}�n��c8^}����.�
��l�DK�?1v�o`��B`��=�>��v�whq������%������������5g�wxW��N��{�1��0�
��!�T>�x�w��	�hV���/q
����z���a��Y�g�����K�[�%���y�a�����������j�2L�j'�:'}�����P�Gb���V�u�3�R��������
]~��a�[3l���l������XD��G��fb	2��=���2~,�:��b�n��Uz��S�G�g�,�4�/��7����]9��6b�����N�����[���?�D��a��,�T]�x����-`nIT��Cy��=�������4��!����zJ���������+:�n��)\�����]?O�T>�H����W}��Q���^�}������x��i��>V�>���G<uk�[Qj��~K~+J������2��7����C}'e� ���d��~#~��/��vB�Z�4p^�%�5�8��3�S��xV���{�(7;�������_�uN��<����z�O'������s]W�	J3QlsQ��p'e�Ql(:q�)q�R�����1F�Nn�"!���:����Oy-�S8�+D��S}�
��:���������@�[�2k�uV��~-���������G�[���s��ih������6�a�F,�8����������q&�%�]����kU�>k��f%�1;�]#�:��[E���|S���4`_�G���*�~�~�8~�����P���9���{�HOO�)R�����;�T=�|F�7���Q��A�]�������r���Q��A&<c5�����0�5����%R�"R7v<�L>��v�Z8z��K]��!��e?� ^1�e�t�5�o���"��3�i���-Fp���r�;����r��d�`�;�lY7�Bq��H"�#�@�'Q���@�O�m�f��ik<y	Wi�'CHO�NT�O�������x8Vo�����O�Z����6�]���q2�����Vm�jI�$(�6�]��1w�����j�W�{�Q�t?k!�N��qw��^j��b�����R���]f���f=��q_����xC����3��J��Z=�K�']^�5;���y�>�f�r����+�i�m
�����G�w2���P��mI���vD
Pp1(��m�"<�Z)%ag��`��g��T~2����nc%QAE�����6r"4r���;��K���?�|d&��}�#��nGh�Jp(�8����5x�*9M
�c�[��zq
o5��������=���M����'� b�@�z*5&�&�lar��7�z�h�9�|" H�@o����M��Y�C���t�Hb�-F�'F�����~-�:,���.�j�2<�Yi�I�n�b����M��P/<��u�s6I>y��@u����[k�@�������5�L��\2LC�dr�=c/�p6	b�����
�q���������7��{���c�Z���>���O2�E�������N��1����]t5���U����	E'���������'���
�?�%���,�#z��K*����?���R!i����4��j��<m����������o+�i^�e�UV��r��LW\
��?J9{_���������F�y�y�5�{����m�U��,�O��ZW��t��U:$+���O��
��%����]]�I����w���/`r��n���*A?������wo^������&%�+��Bx�y2��]��X#�Tm��O/��i�.SUW���=q��	|UW�]���������UG�UUiL�[Cuk5��}��Ce?���P5�a��[T��������N�����JW��d%�z������f�>�G���������d?o��|�\1*��g8����~�r�'�]VF775�x�8$`	�Ai����M�W���<�D�'�����fz^����7�,�+8@=x����-�>��j���
Q�����E�Iy���l��k::�v���g�f>�t��Z�^b�Q:��'����L��(h'�l@�E��gq�Q'Pt�Xt�E��EgH��p�{�i[|�W� 5�� Y�VyBQHCG��v�,�0���C�;�P�a�����,Dy�H�P���<���#yF�K�u
�=$��5'�9@�9Qc�p�,��!����"r����������5��#5�n�u�!u����p���)�)7[�]���C8���u����$�3�KW0�2����!�L�4rp�! �i�H#{i��YAi�!�QY84m�z!wh��u��JGr�������"��aa��!��iT:5u�i���Ig�#5�D�Z65�)O-EV�f!DUra�4��~�!���9j!�����N����:���=����:T�@���}�B\��
�C@��C�������@N`���SZ��<��J$sx���c�b�2�&�Y���Eq�h���9j4��hp5Ej��5E���
���6W;��TW��/e�H���ev��#X���#\�@��G�b���"�f�"�&r��c"gP�Q&rF�g"gX��&���#(QJ^�`����9R���N
D���p$�����Ntc�Pd7I�,J����ev�3P;��<��T�g�v"�����<{z�����I�'�$��C<uL�
�O
cPL�SZ�a�Sg�Z�$�!>sD�
�i��Znl5�{Jn�Hj���M�;In��5v�<6���4��)���� m��� ����A0��1�<����e�4��4L���.�Ai�E�#�Sw��r�]�H�#7�U�#������h&h���h�M3�����)���:���)=O�PLs�����h�S�m���M@D��c��~33-���1�7�6O�Pz��<}J������7�OH9=�D�,������&)Zcw_�M�2�U�%?���*���9h�2�&���*q�S�<�C�eBQ��9a�:"1�pD8�a��GJ9��rL=��b��d���A12�f��bd�}����%���A������vz
�nI��)����	����s���n�=GF9R72�,���8)�m�sP�1-E��rL��2���42H�r
y����E�g�+3F�GL9\���,����#�v��sd��t�]FxJ�}o���!Qr���Ur��&(9x�q�s��R�_����B�*�W�`;���J�)��U��s��Nag�9K]����,u�Y%�����D�{�RWe�9K���'��h����T�L�/`��yCKb�)�q.�`�"�y�����\b�(�q^N_81���4RhLf���e�%z�%�,�G,	e14��%�,���KFYR@��|�
NL�2���W3/�I,�=�w�%���K|u��E>��z�����W��N�t�2��_�&6/�1e0#�3$�����R3*<CF0)5�$$��Yp��_%ILK^CL"K	e0�.1�����%1d������
�5�A����Jh������5r���i+Sb���w�yj(af��f�w�|�����c�U�%�,f�Y�b��"KJY��"KFY�+���R���@�HId&nZt���t���(��c�)-���5P���tb^n��V�������X�Q���Ei\9�U�j��Ei\�9�M�Q��c���B���w_����gG,1e1g#������%�,�s2KFY
C��k��jO����i����9����@N'J�\9v��n�t�|�@N�G�!&����b��'��f$
Ll]da/,��h3)1�Ym���q
0�
�b�_<Xk<�#��HoV���-����)��M������o����i#�G��H�/��MC�����#=��M�(��a��tFK������T��aD
M���(�i�*���[�k��7+����[��D�>CzS�OS��I�/�����x2-��t���(+sP�b:�*s������t��0m����fg<��[�d5�_���ui}�H1�0�)s������)���$%sd�#�c���{��I�1B�3S�Fc��g&{���������:��P"�_=��W������~��c�%2���.��vL}W���S|ej;bO��������d5qF<{���&�MD��)��#�&;�8R�a�F��(��	w�X>%0��Q������;��+��X��ag�y��lo�:��H%��v��
�i
�H.�����?��B��o
���.t�Rz�W�=�U*/ER�
Ju8f
�#��Qj�.������0��s�c7��6_�$:���8��_��27M���r����I(�����v+�Z�lA�����l���)���$E<^��eS�Nw��@����u�����w
[�=�"17�E������T;���V	��I��1h��B�]�����^{��4U�|�m9�c)
��0R�a�
Aq������?s���,��"`��_��������j~��9�L�����v9H���/Ef�=�M�xk�.5IJ�f�����"�.N�v��[]D9�w�*���|��L����
�b��?
 d\��f_����@ I�/`�B.�E��"�9�#��r�������G����uh{�r�B.��<+���P�3g�X�����^��4g���qrb5yg9)����cs�o@�y�+=��@��H�� ��u��{����>G��3}���3}���3�����D��@B,8�Q�C�S.�{#G���5�8-,s�:��\�����!o7$H�LY�_!����E-��`	2Z���$z\
� ��@S��4����rY�	��j���l<	wD��`n���{�.������U�P�6x�/��v���[��~�n����kI�/����&xzt[��M��xu{j���Vi��<=����Vxz���^���n��#xzt[��-����ro���#����-wP��rof����en����&q��O�.1ov��q�%�yt�����)���I1e0��3������)��l�<CF�V�3�T$s��
�`n^������hG����B�sE��#p�YZd�:���/pt�C��#�I�u����;dm%I%i6����}�R��B��)O���P���'e�:�#-c��M�m��9����<$3e+��"vf:8bIh-�
�KJk1�A�X2Z�r�SiZ�IT����HL��2`H��8�Or8���u
��t�Of�)���d���N3�XRdIL��,eQ�0��>Y���u�$���2�������H}O�P�scO��;�;�kIr\p��8A
�YT���aJ�0b�m_�:��B��0Z��B��Pw���-�xk(��"M+#����Jk���!��^�)�_&%1|�BW�JS�,1e1����P��a�%�,�f�Y2��<�F��DN���������@c��,m�z���C�F�X(��U�E���5b�)�!������XJ�b�qy�8�P�Jf
B�mY2�PuF�^�o�j13/��a���a0��R��[�qf`1�5��g���@��2<�50��|��e��e��e��e��e��e����GeT`!�jt'{
�1��\��L*N�)-��D}F�--�i;$�q������`���l0����~����1:�A���/KbS^�KLYq��%�,����%�,��b��Q�!\:�[�Iep�Nl��O"rky�P^A�3��<i�)�(9��8�*���b�t����A�m�0i\�5�K���:t�w�O;y����O=y����O?y���OA��H!�GECe���X���0N`����$H�x�N
�#��;��Cw�����sd�#w��)�������W�()G���vg�9���;�8`���;GL9����6�F��t�b{�1��fX�5��vX�(������5��b,Kg���X:��4��Bm���������Y�UZ��������.s�]v�����=��p�]J��'��0O����:�O)�k�qH�M�}D�M+}L�MK%}B�M�=^K\���vX��N����H�^	�v2�JA����Fo�a0W��Zsqe�����7W��b\����3�q�gF�J��F�/��V����U�v�����f��>��&^*O'�U��I@�i�A0�,�g�S���0���)�����)c5M%����t�gjt�	t����1	hbbK�S��b&��S��U�z0e�)�B'���������8;�co���[���(0��&L������&��n�(��H#�xb?d����5y��1�Z�gJ��x��1��!��1&�S�|<���3&w�"�[��w�����S��l6<0%�E��������{01�H|j�-Bv�J�h�x����C!���!�o|9s����19����hsgb�"wj����\�;��-��X���[���u����9�����"��<�����YD��N�<U���w
'��(��Fg��S85k"B;9��)H������OM�-�C7x���������a��(�{u�hn�28x�������D>��LE�P�p����>�����3�*rL�wX�g��3���1�a����Y��o"���������gb�D���cJXM��!����F�<�f�r6�����W�b6���lusLx�����r��3��&+4S����`����T�U���J�H8�����5����!Y�%���5X���!YG ���ut���J�D?W�<���*��\%����Dn@D�E��TLk,�31 ����a�x&�u����$�NDy&�5�sJ��u
�<�gb]�p��I�Bn'��t����#���Vv�;���X$��X�f�y&�YW�x&�Y���m��������dR�&m8�o�k<��n
S�-���<�����G���e�P��N K�}2�;\�)fL���1%���)��2&��pLc��{����4"��a�F����Q��1Y���di	�)eL��G`��>���/��d�!�R!���8&f;���pL�v��!��l'��G���N(7&��/m�Yk��H<)	
�����
����!\`*�OMQ�����.K��\9���L����^��_����C��W1z�����%��y>�g���#}�g�k)FO�Q>�,��~������?��Yk��Q ����/�3W��E����D>dZw;$>g���x�5����j�9t�gCRO�2�
��>�����+������%�%����$�����#�e����3�uy��/�o��|1����{��y���D�<����eo/�"_��<�K�u�Y�K�uaM���uoHy�����D>���k�"s��Mm���t�*���\�}�a��������Q���_�MH/>��R\8��C��
�(����H|G���I��� �"$�s����wKG�RJ~�t�/��wKG�RJ~��n+�1\J�v�_[C�d�������o�|���w.E>�w��\"���G���1������}?�'
��R��a�C?��
��m,�:|.i�C.T,��4+�1����"��@+�1��k�"l�(���G�%�	?�d��X�����D���YMM�K���D������m4�*h��CBPRau�_���S-�/a|�����2>�|Z�����E���S��W"V�����!(����H|�L�ur*��c=�u,������K|�p�h�;2J3��{"�6���"��������g�|���=_�c�e=-�1���K���UmXx����
���:?��b�g5H�/a|6�$�������2�g\����w���I�?��yi�]�c�h];�������F�)���P#��1Z�j%��1Z��c���=�p���x������ 12Qm��dF���������l�#39�Ld�������T�j?����4���>b��"_���~F�K����|)����/c|F?s����/�|Q9����K���^W��b���C?F.v����R��r�W�=�r�e���|�9�+�\%��v�T��SS�R�������M�m��"���]b��`�9,W��a�6����}��\p�y�����!C��f��]�����(	�����m:�c4;|�C�^4w����f/�����?A��7w���=�������k�K���y��������V��f~���(^��{��4�����&*�&�Q�i�����^��������o�	��������|�"~��
������o1�m����^��on�������>����%�jH�4����8mpC�;�fMZmU�����6+,��K���zEZ��y�R�#����u�]�������-H0�H�j�������n�.���
�q��WY_�S�,n��.�'R�+"���4�|6�����eCf�/!f�����d�Z���f/�=#�I�n�M�$k�t��]���pU|�kR��G�3N~�/!������y$�F�j2�y�(��jJ��2*��]l�[�d���J���EM��Fe��EI����-���D��������e��T%j�8J�V'�Z���������>m��%�i-��'���B�T�,6����F�/���.g��Y�M�/��OW)(1e2��Y�65��T��@=cx��D��KK2e;JtX�Y�<�YW"��|L�mH���|��Y�)mB��Hw3�%T6[i�
:���{T-��=_�B��u&��R�"8��]��v/���Q��^�!��
���Fp�^4�����_�� +��m���T�8��p��D��=X�B��������\W�H��:x����]�$�i<P����=�\��ii���XV�$�(G��<���������*��=���fdT�z��������(W"(��N�m]i�����)�L'�*y��x�j��g�!���P|��*;s\P�)�U��P��Va��|��Z&�C
)�!����T��Gu�$���K��z�H�}���;�'�(R�XE��$S�����#�5)r�'y��xEJ���D�D���w�vq=��ty6
�&S��T���cSM���A�j�7���T=�����X����k�,&WG2!�K�
�����6
��@g]�$�_�f�zY@�����S���2%:�o���gg��N��0���4�@�mY����Y�.�Iua���V2�T��)��i����'[��.V���%t����������5j�����69*(K�����)�@:j�a,O���@r�j"��v��b��|:;ICMc���LuS��jO�x6]���!b~�q�D,1jMh$�b���g�`�N��AV�
Y�"Pi�=�TOT`��`P|]V��*tXj"��Y}Q����������������������{�@��XM5z�V��H�!��}�D��0�[QG��k�G���L�=C@�_�%��b�JF�kD%:�`�({��S����#R�Rg��A!�u�I�T�z�8�z�[��I������?���$,��W"!�]�,��h���D~�������GK	�z$	 T��"aI����p
������q��F��p�:��g�����;�:xF/�B����<5(#�uJ����h�Ak��R���3��Z����&��$�d��4�#��I>�)#>gi�G|����|���J��_KO��Uu�4"��T��e�����G���z�5"���cD�������2L�]H����R�v�H3@��L
�g������	�o~%e��u��!U���[��M�Nw���EH5�F
���]��1�;�H��&r3 T��H����D�5���6�;��8Du0N�b*�H�+�������P�)c�z�T�oE��o��S�L
]V�l2)��i8��x
]��I�����@�Y��I!2����I Uo`��)���se�H���wy�;�#J�J�c����2)j��c�����~�n�5!����$U�*"��g�.�H��������� ����Sq��|����]R$L�P3�	�)j�e��Z��8z��|��Y�����$B���vo!���y��DB�������P��BPF�W%BTF��BTF���G

���2M��#d�����KC�����_��QK��2e�etw{��f�zMG"��P�pa����S T6�D�����a��*!T�#��	����FexBger �8�~��Q�W���c$�t?�0ABM��	S$�w}���
f�9B���Yp�P#���L�����Yl��,6G��{K���M|_S��������6��7��u�	�����.Z��U��U��U��U��U��U��U�D�QM�"�"�"�"�Zd�j���EF���v����kkG����J��J��J������v����kk'���������$��&Q��|�x3����s�f�9B���f�2dc�{��m^9B�����W�P#�!Q:����AGh��#4K�j��9��)�q'� ���(�Dk�^�5* �Z�Om������~)��IyHyHyH�K�h��UDV���5�6�O���E����Hk�C���Ps�k,!��q�"�Y����H�����:���<^h�B�5k!���i�Z�2Ixe�GQ�j��&5dZ�2�v&�M�LW)'�Lii	���"��%DZY�����3`���L���	��We�i�K�m���sY#Z�7T���h��N��O*f8�6��j�i�!��-B���_^)�����Z�i�J��f�DZ�R��.�c�<�j��EZs�/���}��<�hKyKyKyKwy1����H�(/�:����y����vG��@��@��@�������K.=,������"J�(},�:K<��%h��v����"ZGy-b�u����
�������V;]��E��D�Sd2EZ��)���L��8�+��$�Pbi���4"��iDZ�F�4���d��J,m"���D�5��Hk����.QO�&�Y����Dk�D����Y�n�E�Id_�h�%��-J��haL�	>&x���"��!DZsC���	�K�J8<4aY*M�@��<i��@��<���S&�t7#����>�9�M��7y!\�����U��f�i�V!���B�T��+����&ki�� ���A�5[�$/XC�V.L�����r?���[��r��nQ���1�.�\Y��������i>�����������d��,� �~�������X��X��*������EG�,#�����L�u2O�
r�Xm�z[c��}��:Fft$�����U.� ��_��w�@�T�L��8�vu�4�����`�y����7�M��^>��n6{���%�}�1k�kR�mt��@���8����a��W���5v%���M�CQJ�lt�����7�%�;�H���D��w+[�r5�fa3��L�(�ze77wYw���`V�@*4��"q2���A�p-����"��(P�gR���������n��Vm�a�[L&Qh�{������7�I���Bo}�y�q��y����)z�?4�%��]�]Vs���������%H����yM��/�[R�'���Z������	�0R���D�
�{4
�v����,�+,��������}]o	-d�n��p=���:�
��*�.�-�������@��/��~�������~�Y��������\�� ��E��O?�{�����go����7y�����&������H�*��
s��,�#U���+{���^���w�7?��z���~���Oo&�w!�T�v�A'��&���~O�n�������f/�a����w����[�?�����'��,��{��-�����j�
g��Z���-�����*go�}�����?���.T��q����u���V��d�wB�����f|��?���10��5�t�/����+��$��{��E��^�iZ�Qys��,
���+�8vu4^#W���q�i��� ��W�_!1yM����
���k]��@��`�q��C�����#�C� ��f_��b���B'k���`�Y�n7��v0<�Q�t9h/����N7���`��	D��������7w�;1��Z?�J�����3hi���T�nMz/lvO���v��I�BZ���6���������sh,n�\�n������:����h��[^��h��,,aW?�a�+�V����^o�d�F1~�w�s�AE\�b�I`��
$��
�	�������4���Yj$���(1����$7��bt��Izy�:%T���RB� 14AB�M��P
=n�UJ��i���������FF���"l�����[M��$�
EEk�������f��Q�2��k���d�4Aqz�"�yLD�L:�fDP]�3(����:W�f���i��Eb:V
�78/���G�w���%�����^�u;�o7�;�=��Y����N��(�1F������F���sZ�8��wd0�A9���:d�b�q�d��o6]��l�$lY�����/����+����H�m�����`qX)Ax����	����YV;2Q��t�j���d�I����%���JT��d�0V����X������C�]�����6dzJ�Ud�D��'��z�V�PU��>��5w��=
s���2l��F�]�d�`QtT��\�Y�����0xa�`�=���)������}5GPW��IydO�I��A�k�[��7��8����.�$A.�VI�S���t�ON�!�RJI��vYB,��tjW�A���]�4�c<���		��������*3B�,�EFd3�Kl�9�rH��o	g���'6�iU���F(�M�J{I�P��bW�J'��P:�HT?���9��9��9��$�U��Q}�fH���m��*���$�U}�A(H��lk@��>dQ�VfV�U ������<�T�IqQ��X���8�����D������H��&L+��S����X�HZ�HW��@vDV;J���l@��~i�#Z�M}7�l��*;�gro�;X-d�9u`����F�3ji&��V��j�>X���F�����%v�!�4�N�'�~�)s�� �Ih9:�)S__����4���N5H����
M
�"�v��FD+���@S�2"��B�r��D�K�LO��xX��w����+���������j
[�(���k��\/��|�J�&�
��+X�)vC&��
h.PWWU����e�"� Q#J����zQ���a~�R��n
��B��z��)��}��{�S����HwJrm7�T�jd�����C��D��s
C�)�uK��k�Qa�b5���F*|�$L�r��?|>���F��i�-T}�s��C�1�7��UR��H�k��Z�!�Q�K�����]��3��!�D?H�5#jS�'��C�R�XX��Hw�v�i�k�e�������X\2A��K7���.\�� j"Z���K�0*�����U���#�� C|�>��vBM0uh����bF�X�H���`��VRj(	��u�4�au��) ��R��%��Lih!��:�nQ�=A��D��:��*S�K�DP]����]������oH�Q���� u���+���H'���R1����{��8rc]�s�W��������s�m�e������$�������JR�.V���Z�x��d"l�Y�=3m�E6	 ^" @��^\�5�n�/r��/�;A$��"$���h�������A�+�~������<01�\�!=��J/�#��$������L)6�P-
I�`w ��N�^�����_�iW[�j�/��D"�i��a���?X9H<x�DI\U������]���d}p�A���!;��X�!����7/������CE�!w��P]��v���GD�1�_�����@�k-�[�	�#y�uM$�0��F��g������(��u�x`�m0�}����n{1-���B��������%g����ch%#������9����6������'����p_�)����f�����U��]q�(
��1��k������="���/g��V��T��5�v_h�{_y����>y��OO^�r-NfK�N�%*oEXNy@�M<�C�����A�Rx�7�,�6#G������_��I����8�B+&�&&�:&=��7�wgb1������~���Gu�4|i��*���,4m5�2�z3�yi�H5��9��W/���%
z>���Ii^�N�������M�wM�~`�r�}��q5�+��t�Z�Ct��sP�

F�>}���C|.�ht����2?.���<��2��� �&�!�����#Q�� ]� � ����o�!K��%��wK���l���C���/
5���q���oWP0�M5��� Oo��<V����s��w>�����B���Y��ibC�|�����a��8���{�D��� O ��������-�=�� h��C��e�/�'?��@^�"��T��k���6��[�����?��������}�=�8<[�O����{�l�5���n+���?�����Z�nA���-�~x��[�1�����2~��p%������~���Z`:�H�/,H���p����/=���K����@���'���'I87��M�a���&�A
��D������+$d����x���^���}������������������z��$n�"���q���X�P1��z4;��y�
������De������ \fvs���~��
��q�9p�����Dh3��c��_�o���W��P�jh>���d3S9���GM��)�t2`�V2;/���\{��q���v<���x��^
4�w�����������������.�H����#���sV�_�=�!O;�Fh�~���z����C����:(XD����H��K���_�~��g�x}����|������Y,�1T�����[?_~ni��E���{R)a��e�����<��v�1�R;�(�t[�51�6�1���l��5|W�j���Q�n�:�?��W�-��02�c�
��q�Q�dr�����p�n_�R�����/\d�7)$/��������y�x��R��������g?������'
�b���b��u�,�b��+?��l�i���MIW�lj���6���������wd����J�G��V*���p2�V�2�4-
)����M��/�z��
L��[[�[�)MS��L�^E����WY�����H�hF*��.R�_��FY�8�>�S�`i�*�7�"�?P���rY-��
/�h��@�����aU��{��r^�x���^��=z.���G�o�����Hu&�i���7�:��E�8om���wh��oy�?\�\�]�H���������2���U�nQ�]��e��I�/�8�Z�id�1�b���~����k������}=]LQ�����������V;��]1"?y�w����na�����6����@��%��L�o�=��iw���o��	�z����/�D8�����Qe�Y���_�LF�|����0�*��7�����.p>&b�E�
3w�����o�Q�,���J�-��Kf��@.��@\E>��Y��a����VCz�*��?�S�V�_�h+�KI�4�L���4��rH�����������7�����)[��� ��1�]���R���cLi�jy$u�+�0���bdxF���a=����k��]���zG*Q*�L#s��)b,5���JK%D2�*��������Z^��v��6��K�y���/
jRP;� .�%Z��h���	3���G��r��j� rQ�_���	)������,���cn\��z��(GR��k~;8���d��p�VF�SHSN�3j�Rj�8}@;�W���q
���r�����*I�(��WLia)�������l��S21�y��>�Y9�X\}���c�+Wl�Y�c4%�$��s��%��
����������J�?���]����|�J�e�����e`V�e�P8+hX�?{��i#���L,�]$�N�2���m��0]��V�����2nc^��7�
C�yS-)!���)Mb���G��kW�k�t������w{���Eo]lS^U�u�����w���Ea]�{@�{F���_��T{����XJ?Z�Aq~�W�,�����6�W�Na'w�[����DV2�����(O*�e�X��������<Z-C;Y�����T�MF�����I>�/�c�X}�W�T2��WC�V�
~��C�x���5�u�=�#�[e{����^�p;�c�S�o�x�r�c}�&w��X�|?���sf�,���I��V�uZ:�tL���O��}�S��P���
�()��|YT93���_\�v{������.
�]�XFs����M�SlpIi#5����	�*������|���nSV2#
�Q���Cbp�u��p	���,��Y	� �K;�"��J�(����J���<����;j/�5e�DD�$q&L�,\ZJD��A(�r�rQ��E4L��;"8�I�v�K_]�f�U���=�����\�P���Yl��8�r�������go��{�@���
�AS�R\W��d��5.s?�[���1h�T��2�� ����r�����c�M�(�
���|#	G����^<{������i��o!������]��9�i$�fc��$�N�=&, ���
����'�3�$b	������
�6<�q����zy�)�������|��k���4�/V�/����u��p~�y���h�>)�C�Y0l�-����,��l+���
!K��'76�n���7��DS��@Xey����Y���������I�����/N���I���-�\��6^����W �?�������A� �)��6(�q�5z_x��1����<ZP�2\�`�0����q�#W�aK+������_<y.@=[1:���e��#�%�!�
�U��-o�e�3��O ���;b��l����Q��������g��eEd�������?���A����Td���I*&V�e��q��xY�v/��2X)���>h����?%\�V�v�-X*�G:N��*	`�������0E��C.�q����e��C����-:Y�
���e�rf*���V����h�F.�$*r�_��$������94�����KS�j����v�=��>l! �b���F���������i�`�K�\~�[XCw�i��qj_���[�����?_�y����0�q��t���p�P������u!z�����7o=��p�M"_C�C�����f��uZ$6���^������=����|�u�M���7�;c�����	�UV��e�Aa�)�4��WM1P��Ud�VM�_l������,�M�De�8SS�1`��_�{�e`�%���D�IF-�xC�4��O
�cjv�a���#����"�-�|�8VJl&e�`Ra6^����.�����z�Q~r��o���2ssd��v�6����
���Xkg�T'��z��"����'9g�8tR�x1>����H�I�����P������2u�DS;
M��������Y���w��p�!�c��+�����y�Q]�u�3Cu��K��;=���!�v�k�++G��2P^��*��|��:�����2M�Q��P�`k�|�����Nz�������/.._�zy���A�u�=�$����C�}���w�u��h���8���������?>��m�gR��k�Z61�G������h+g��r�$�Az}_Y9+t��_\dx/~hh�)�p`h��xvZS0���cN�n}b�@���A�qb����������
�AG�� ���U���[�#[`�|^j���m4�Rb��3���^}���������~b��������Sr����N}���O�C��[����S����p�^�������3���Z���a�
���N���"����J�������a3V���
������B9b�A�����G�etK$T�DY��\Vl!�)������ �y���z��P^W��v}$�,Y��-������y�T�yz�'����,&����E
W����8�PyXV@��&��V��D}�9H�9`�
��ZBK^������,������5[e��B2����ZthZ�<�Xw���r���}����q��A�u�=�~����d��WK6�C�
�
#���o 44���%S��Eo'�z����o�H�;7D�hB�d�|����	�zx��7J�B_��AF�m����[��b��*���tC���i*���sX3�cy{w�GO�����<z���7o���������L	X���]�I�&j����g�u�T�CuF�}�o�����=Cu�z��E��K[?����<���b��)�G�?���a�J�a��&38��[w��{HC_����V<�V��
�&�5r��VC�+�6�.�Bo��#!��a$Q�P���y��8<�Ms�-����!��7��qm��~�[i�~f�JK`
�����X���h�7��K�WJ�U+&�
��,�:nD��(D��k ����r����0����p��j�qP��"�'���v�uw���#���#�
m��oU?��b�u����r3���W�}��,�����>��eR=�����z��Ks��Do���S�C�7���~M����B�:>���M�}��?���7J[�����6��A��G)X�(UO�(;���n J�P�����n#T�
����~H#x*ZP������W�@��`7;T�`����f�3�V�����:<=�������>�����%�5�������\]J&Pn"���T����~J�u���U���Y���������b�o�
��p�
^��z�����������N����wC��2��5��6��}�����&�t������F�������}'�N���$���	�)��@��P�1�l���n��@��j7�tM$��b�&p/Y�D/p"�A����h2��4��g&il�I�D�@��+lv�t���C�>� -\Y�j��glj��#2~���vrs;�����4zb�������i(����
�.lHh�}:�OCC&>�DhG>��[ie����|j���!L�1�'��Q��!�8�p��Y�����70p�������<��)g���k���C�/RcM�&~36u������u������8�o:\mH]L����7���2	]���j������'�	��r����%�8�j����i/^a���@�D��4
��^��7��B_U������TM�����a�~�o:>�B��'�2�.)������\g}_���B�G*P���I-]�b>�y!#�N������O�8\7��>T�������4:?/�*V��u+����X�$�6A�u�_%�7B���A�L��Y�8Q��R*�f0���~�C&=�+������3+�qx��z�����mI���w���O-=
"�������g�t[Y0����ff�K�^�|�fS'�(0�fHxvW$�B^��^zfw'���$`��w�P|j����A�<�u]��=`X4ac�x�3C��|���~��B�f9���#��������*l����A�`ZX�������j�>a�'�(�����(�s�"8�}��w�����k�^�`���-�S�S���P/;T����������G��@O�<DS0�y���a�����/���o���� �fb��������okd|�/2>��Jt��XPiY������"�wf �7��r#�"���eM�k%�I=�K
�Y$��2�d���j�h��@?F�sKF�U�B�,��)d=|��V��Y���KaD� �"��Y0p���4u1u��p��4j$ y(,lpQ^N�F�>@Q*�%9G�9�"�~�r���*����$�)�H�������4�p��D.�O��r��AF+�D.��W����U�HoN�T�F� ��2A�6�Y���J-�c�
�1O�1#`_�3�eF�s��\6.�s*����K`5
�h]9��U�p*��(.�(����F����t�yY������!C��6�x�v�v��g��B��,6�@:h��Kp���?����!��z@�{���w�P0�-N����/�u��	�j&&9�;��������	&$J"
�k��*�/�^J�@w���������	E=������>��H��0��c�'�s����=�f$�K��������;c�����1
_k�����Om�����Z�t}Ojy�f��p����z�����`o� ���2%�#�6�H/�b8��'(�M����������	<P0A�&�W�4�����9�0'>L�_�)��XB��| ���"t���+lU����
	40��9���2���9����S��=�}�FM���);�ZSz�z�U%�4_jg���/tG����b�r��,`1�S�5�B��~���@1�SkH!A���(HL;�j�h��������������\�]��z�3H/3j��p���������j���Du�ue�w��^g��G�g����* �!�%�B�#�(���q#^�!�CX���Z]$7��a���z�$�w�TD2Z��^�����W������Xy����z����<��v�#��n��n�_�(�2]d_0�D7����t��k`���C��>xX~w�A����@��W{' X��;xt�eE^�g
����s��������s�����������E�NA�5d����.|W`h
_�vCX���fv�.#
^Ni
r�����m65y����wt�ZI����>�!�5�����(�w�H*�G&��W#��2�����1���&�ghL��I-F��,���
F���@������"7�	F��1�\&s!Q/���"��kQSee[�2�X$|?C�$��'�+F�7����{/C%�P���F#"DstCc���n�����,���c�&\�p�c�����f�`B�h����A��kY���+���%�Rp���b2�b��Df�LA�;�&���D1�4����t��
r�8��
*�o2������0���N�i����!B���^�]g%��"�U��\AG6s#�v��/��S��$m�,I��Yo�K}�������yP�1�����-�Z���D������N�
n� �_�e? ���&��AA���o�7�-�V�@I�
��A��+�h�j
���U�N���:~�*��U����:"�!0�8y�0	
�:%( �"Q�S

�Iu�
�yB���&�X-�:&���80{n��,�	��ct���$�H��9�8'A���� (��3MBC�����E�TXR�����/c�B�~��4{��j�~���g���F���
yC#A�������vw�z"���!�3�?����g��s��f��$��+J"<����%�z�'�I��$�S�xJfi�zr���i���,�=����+�	h��$J�S0���1i��S`�'a�6�4���D&��aD�����A�L�W��;?�n����o�����b��M�<5�����$PL�<
WGR�M�qdv=8c|TPR�S�1,����1��Z{��q��z�7���S������.Hlp�xg$�`�/��.mt��+w}~�+U4h�z��;	D7	��pQ=�"cH���	G
�H�������:���QI$��6GI�=�j�*��+]�C%7��t��$��Dg��I���1�6m�A�$
<�g�s��m�R�T��'i�=�i�fJ�&����qi��Z �g�����i����� n��S8I�~G�
'F����5IS�zD�E��+�xf�I����C��!eNu��
�!�f��,�gU����v�|bf���K��,@���P��p����#o_N�Y�?�����B��0I�I���Ud�0��4�k��c�t�p6��!*�8Z��[�v}����/�F�U3���
�MW����x���y[F��7��&��o�GS��� �q�v�s�E{��VP��6�����h�����������������p4�E�s&����\��P��h���	���}[����P�BP��F�����������`j��]�]b\�T�Y}jNI6�W�j�(�	�K&�#���t�4����MB�d����6F$��SJJ�{7<H\���a\!�i���w9��C�L&"����&�s��d%�A!<�[-������n�vK}#�Y(�}� d)����������?w�,����n�.��t �� ����
Bn���&$:qk������vw��b
�)��V����E�oR�\l�z�w
B�����]�?.��1W
�~��&%�H}�]C/G�������F~M4��WDg\b��!@��s�
@~��u����ww���i`:�k����	o���0L)���
+������N��X3 ����!=�d���	D����������)�u��SHi���T��!o��f�'���TfZT����&%tIyT�!�6���w}8^�~���)�
6�=�}W��dbE2���O25��{��Xs4t0����^�V�
{��t�:H7��-0�RF��P6
�J�������6�)���I�=h����W�I�9������f�11�d�~��$�s���)��
'F�p��h2����$�����Y��� G!&h�T�e��F1��SB#C�� F�B�uE l2��D��|	C�8��|qB�/���F3s��"v_�T�����>�q�my\��P��a�$�{6\�����,�����E:���zb���?_\���������|�j�``��4R�_�t�����������A�B�y|�{c��A����u$:p;�@��6>��v<��9�a�Jn�:4��7p;2\�K�y�S���r����#{���q�1cj�#�����_�LIJ������
	@� �){��u/�6������c	C�8��|��p7C�h��W�bx9�h����2DAN"�[
�q#���#3l�5 B N6�g��Z�o""V6��RmJ��43.�d�R&���rfZ����d|�6=����V�K�f��ie�H9�S(	������'3.�d ��@N�@<�B����<��/�'d��{��
rbn���2��M�����47��mz��T��d��pi����0��8$v�7"r�p�4W��)H��������~�
����t������Z.�D��������� ����p�c4E� �������x������f]	�;yX�����<0�J����a���+�qC�}X���+��8�J�/����������AW��t�#t%�+��Df��te�7#t%��T�8-���hj���7S���Ja8.�����*����������9/���Cu3��HD���	V�r�dXu�<L[�+&'������39E|�������w{������wG�\qx�S�JOw�>g�<���������o����W���-t
{�?@�&����Q~�=x_�������A�������������F�����3�5���N�!�H
�v�Ab����n��&lH���C��a���O?�sz��nH�����������i3��]�5�� r*L���B��2�� r*L��0p�s@�o��26<fM1��� e5t������,�B�b"�%=6��/a*�)�q�o�kXK,�^;G��3~Q]��\YQ�X�\��l��bJ�g
��bJx�h��xO�s���=	��1j�����4Ev���b"��B��d��uE�R[���!c-E��.�X��������]���$z��xj��C�.�T���<5�T���������v�&��]*���>Rf��,���G�2����Y����.Y���	uZ&�L���=T���'������y�����L��+���O�d|J��*{]?r������+��{
kX�b
:�������lv�,������B5_{��w��0��#8J�.4���m*��K��}fx��a�����?H�jY����W��1OMZ��I�=�����U�?Q0���)�[{��%���_�5_`i�U�4K;7������P�^]������������a�(7������U��*��K�h����.q��z�#=��h�[Y�h����	�P��pm�
�vMw�a}h]�6��}��!��a������/)W��'�y`x����"%.�?4 ��\P��ixs�C�<���e���8AK�,�)q�9����~��E���[���6����^�FH�`����C4_+$�X��1�-���]�`
�*�" a$:���!R�E9b_	Q�����NGC��b�0��)|����q/N`s
��B#g�+�	�,|�p�~����;��~��E�ec��S_����Y@]
���]-h��7q[�,h����FQ����N�/�V�huN�]�����-��>������������b�u��<�6�G��P�����
�D�^C��Z�z��h��AL1��6.���s��~PL��t �
���A��~7V�T��m��!�z�2�X����F�RCqC�#5�
$�Wmp����\@Y��>��T�v�j{\���"���
�(���~b�r�������[����������U��'�&��na��K���H���gM�8Iq:�z�W���a?�X���Aib,���v�}|��49�6Og�|�7H���?F��|����� ��
��u4���`�	o�SN�C$o�)�~���f�wu7F'%�`���R\�#�p�M�C�
)'�`���OO^��,nE�T)�,v(�;���q(������?# �������[�O�gi����f@
��j�!	Gr��(6��zc�749����F��~�����)3�^�Ln�m�S��Kn����@o`�	ex�|�e4/��>�H��H�z��6O^�~��K4���!}S@�������#�@�p��o�����,���Du��]� ��U!�t����2R�4����L�g��'1��l=H1��sn6�E_�B9q�T�q~.� g@�`
������\*�%�w�A��T�]���v�VS3lz>��(/�I����#R��1�����h���1�G�3�R��������s<�i	������DM1jH�Q��(�n ���x�$�������i������*�dMuV����F� �z��P����x���RCH���Ohp!������3F~�HCi�Q`��lQ�&[�&\u$<���Ug�Z��>"�>�%
0�Bk��@"BC@Na�����6 �:��f�Cn�k�PK@��l�4w��Y��m?�*�)�>����P��t�����R�r@�9���DO���C>��D��S���@�6u�$G 9�:�S�ju� 
����D/j��&"D�l
Eys��)���CA?uNxV4�^�p�:���[�2�[#�3J�[.���[3B����s��)�����zGe��{< 	��F:�	�N�:%�6#�Mz�%RNx���jA&�:!��4?�8�����9YgN��-��,	�<9�;#%f�@��
��k������z�����y��-�#�7y
�%�)_%��SPa�B��kq��;5��E�Pp$JU�����&���d�Z�B�	�`�"��kQ�H�9�YM^d0y-!i6�1���L&��%!��''1y�����4��;��<4z�������\�t���Y����W��������<��_xr:���5"�++�S���O���N~Ss<�;��,�P�Nx P�j�fHw�;H3���P��V�s�;�yS�g�R@�`ge&���7�@i���B
�M����o��%�������wN� ���`Vd�o��^qV>#Q�1����V�j�Rs�������h�A��%�Y/E�G�@��cT���{�<{�
�`���pX�(�{���?I=�����0�\;RbmV�t��-JorE�
� �{��=��
��5����9�8�H�	=�Pp���(Vt,�(�����=������cy{g���_�a�T���@q��D&��F�h�B!����o��Q����P�� �B}.�>��P����B�����z#�y���c�X���y#>�*��9��~��W�����������\!���h��9��T����IZ��������\d�r)���Q�����l����PS���EF�����My5�Y�[d6nm4	Aj����EF��FRWjTs���l���"B�:�UqF&U(����aD�B�f��1�	M�V^����EF��j:g2��4�K4��@9��E������������1J���(zW��V��T�r:a��U4�Q�JXp��D�������mp����F&�<�H���S+�nR"E��!���p�YFX�o�'b��t�5n�o�h�D�9u|���y��l{=
R����j��C��R��6�H7���!�p�m� �%wah�9��&���I�������dJM_��B��;f��`D����P0��N����8�Xy#9�c�����5����F,	�<�x"�`3"�K0"��E�;fD��A�O�j�EWm7���%Q��i3�������\��\r`�
4r6>3�� �����hlTY����F�sf���|����<��@�sv��H���lD�����7H�����4?[ %��u(5��&�����U	���A��"���iD�r_�&�TC�9����;�t��Sc|�U@ir:w��L�����R���!���������!�����l���6i�f(��o]���b��F����6X�d�~���)K9d��{���'�f�CC�!m���(,����]�-�v2��F[�=�H/)3�h�Yj�sd��y^�=�������z,w�J���	�Y��������m��M��`�&��9�x�as��~�[�i]�y~���z� sH@3q���C�9�M��Y3$����j�kMk�w�rj��:��$i������!Y��������V�4��������DzMr���Oj�r�\[�"%n������cV��-��6|��Dr��{l�X����-��F���4��ig������C��f=�r�������Xa ��O����i&���P-F��C��4S�q�g����I��Z������
/�M��b��
����s������a��0E���o��I�G����r�;�S��&E�����{[�q�����\�6��!�}���������������8������L�4��=�0P��3S�����m��\f��@I�Y����H�T�d�F�~`�cO>�q�$�cAO�)�i&��W��3M)���������(:B�3����s�	��n(�g�U;�m��(��{k	v��y5�\��"\�D��<�d�����{�d`x���4�[y�����m�S��{�W��K�,R~�����#E�����E��� ����]��v�������L�v�f��"�DG�9S���Ys�HF
��k���i���-��MZs�|�Z������L���R�Z<Mk�SV�i��W��&�8�tKb�W�����'O������>��}Hb�E�]P�}�m�,W��$^���������g��l���GR��314�Yw�$���r�0��`��R/��cCShuMD�j4�
@���OI����|�
M���xRm}��>Tp�B�#�����F�.9��R�cS�#/G�d�����$���=���T���D�@eY_8�X8�p<�$�b�"��~?�M;"5��&�5kMT~d
�mk��zUKF�,'0R��v����Qc��Ja��V�'!L
�����oz��'+r>�NE<���N	Z=z#
U��������z���-Y�/��*��9��������x��9Y����������#��;~����{
��\�y���e�����������i.�ox�C:$���.���C�?����r����(O
�$.�����Q/��].��8`ML�j4'z�+b��&��������1����gb�Q��
����`	.���{���`p�Q��o{O8��;0��;m1n1�Z��
C�<)���8h#�s�{W�5�}%X;���J��cm���Z�jd��������$	<L��K7�E���:����h��|9����x��	q��a*���V;��f��8��J�+NF&5�y`�R�*g���o$��@����X�
�����1��#"p"@�x��r��d���wZ�|������q�a�FZ�^C��zP/���]I���|3�_���"IQZ�%�1��2/8���O��$�aX} ��5u�����a�;�mz12��}2�4�����u��7��"�{8�U�~����>�{�]����)��:����N�"���;�&!ow$,�����h}^�����=����������Y�����t��������w}.�o����Hh���,�o���h-��GT��d��\�xD����,�o���GV#�s��%�]����`N�p��6\TL=�f^�f�a��'!P5�%a��o&�-�HrIw�+�r&Kw���:�����a2�?@�0k�{�LqL�O��(^f5��=n�#��(z������o��WO|��+�5��}�wn�,,�*^�K�J��U�a��m�������k���\z6�;�\C���?R*�>���&M2<jKD���iFu��Ep��s�@z�i�rY�?r1��6vu��q�yMDyY���9��S� <�Jq�U�P�y�����@�����9�1$�z���S�8��r��%3�����6�"��1YAX������b��-]MG���6�����/���b	���&�j�����y=u,�&O���j�
������]�����V,^)��1��/�=�c���9�F���}�
m����f��9?����A���������=��=�=u��7H��(1J�0�H�����+���WhN�:��.���]hQ�������r��1�p�G�q��4���iha)=��)���7�
-D9��s�d��r��O`W��"���`7�tK��a��dR>�������4�)f2'�`���`��y0�h�F$:�~����r ��(���)=Hf��G)a�[/S�s�2��4��8�N���
����$��NS�#���OU8;�i��}P�fD����i��	'$HxV�����z!A�I��j��z��`d�8q���o��`�� ��N)��w��?�)���4;�#�9���<��I%���umN�����P*M]����2T��4=Z�������*#��N�!ux������y�VL�����gw�:L4����X���c3��)�
�q���Z�����d��{�Z�D����c3����IM�<�� ����j���� �-��V0%R� 5R0s�`J�rAh�`&�����c����I:�"5Q0�@/��'
f�rQw8�S��������r������*��3�q*�H*������T��TT+��
����F��:�R���(�S�5����2�J�y|+VZ5�0��O��4?�Q�C��0�W�P�}�����V����V�&'�4���
���4����Dx��V�������Va8�J�H
�������#���H�"S9a!�Zo�>7����{H`��g������I�:#@R@��KF������/\22�t�����]"��,�
5�q����<=�>0�	����)az��>L�K> 
��&��gz]��!����9C�X����:p�$�9�!D�`�.�������&b���z]D���&��Q1��B�0�T@��E�,��NU])���#Co��x1�4=7��h���{i`�~Q���>����}���m6���fU��d���+����6��l���<Mfq�kf�y��o������XE�������+�����!�7�o������6�SX�(�m�����e��/�Y��2ZL���&�a8x]F%Cx��>R�Cq��4�f:I�bXU�I�),t��E�o;�N&Ux!D%U]l`�$����x��<��
��z8��>�H�xGWm��Dw�~-�rS�2P�8G�L2/���h�?��cU����c�SL1o��Y��\�(����,a�2G��G}����8#��>�V�X�`�����H��,� ����Rm�������P`�-�.����`��OO��f��v��aR;	�`�M���A5����A�$t�����1t�U/
lTOB��h�T�����GQS)��4�=�k��~���>�����~�t��������`���y����|�g���c�i:�W�-Ls*E{(���-#*����G�j��a�s�����3��e���>���\�i��G�2�1BV��h��kk����G|�^��G0�����vt��Q�.��&���)�����'�)���z�>��")h�e�U>:�WKy`N#�x
���Q����h�e`�P�`l\���Q�NL"���i��$��N��1O���@��S�A��=q��y�����KDE{�������L��%��oM�'wc��!�l*��IZ���|Yz��4������:�C��� i�3�������[O��d�`eh���{�M�7�,+C����eg���11O�2���3��x���8��(c��|{����oi��+H:���
6��I���o>��������
�}�Z�
e<�OUT��v�S6?K;���op8>L�M�Es�>��h��3hN4#���%��i�@9��m��1��}Y��&Z��K�J#[_�����1E��V:g�;[������q_��]�����RKO��_�8���������O���}��� ���
$�t�y[���6��;WPn�vw@��f�H��[���f}E����2���5|hyn�I�B3���R��F���b��f��r����G��g�k�u��2K=f:\3��t��o����o�w2����}�Ii����������L�B �8�	�)��M�]����h�'�_?���1)��'�T�f]�a�W����������O��x���E��o�Y��]�l �!���F~�=�S������6^�q�A�*sn*��,?��j�+��w��=��xM�)8*a�
}\+�dY��������'���!r�o ��InR�c���u(��U��V2�B�zJxv��a�����-�>=�p��V����_9��UINc�,�
Z�F����eU����{����g���X�J5�Q����6&������3#

\�
���N��9-�"�dHa�Ixky��UPo&����lJ�lj����N��� M~�U����y-�0#� rf����r����U���!=��"VPlF[���C�c�_X0!02�/�FJ/����������E��������4D�#���f��Fe�8�}u��'�,����#�����a����t����c('�A������l��Ngm���L�����`g3�P��[nj'�Q�����_��{�E�O])`��4����I�������K8"�Hx�M�"��,�RO�##�s����E�.�>R�1�-�����:VKF��'�
)2C��."�"��<B�"��\n[�*E��\�*E�:/~�FP:��X��I�p������K:"����g8�[�*u��O�#��|��~�I�@2�{�ahP�.��: �r�A���T]L�M�C��lb$���$TRBuj�>>���p���5kp�z
Ni��W��#��'�o��m���C8#�Hx��&���R{;��D}N�Mxr[.���'3kn���5�����ON��	����"�XD��k2������8\����h;���J��������e��i�G�`T�WK�����xfJ=�=<����bx��R���>.V���%\S,�x	Jm�z|��D�!f�e���ELBq�	
Sk�z�2�'C��F�Q�?�!��G6j<t���-�Xn�x����tM8"��K�r��gV�x���������2��`!5��*i�q�����'���j�Ui0�U����3�k3-��2m<�R�'x��e�P�~������@2��b}89b���d��t��,��X��������g��!?�������"A�j@�l���mY��$d3��!RBF���Ap���������l��<0N]:���@�G���u�������W��6����w��P=������o)tp}��������zy���=f�Xo�>]�@�wU���<rn2�T�5�����b��D����������
�A���������0�H����"��/o���B���Ig�eT�0�X��Gu�H��:(�*C��yJ%L����Cx���x����wR�c��S�����	xP?o�-����c����3��/�{h�i/�J3|�1$(��S�������O_���%>f��)@������qT3�n�p>��F�~�G$��u��\z���T���6K&��_��������s8���/���E:@#����INF�yU��t0��A����F [��n���������H�c��������L�s]����G�S�\����g,�>j}^��7�I�kh*�p����������(I����pE��J�Y�>�6�9�?W��������
hf_6�
��P+L����S,���_}g�,$���5����l�e�J�5G"yn8��a�>�P:�����%%���[Rv(GD�(O_M��a��C>����g*�?��?!����?\\>�x���F�������r�U�����^��_�<�����R��Nh<�M��6�������[�s,G������s�=�ptY��	k���V����s��-�o�09�� ��=$��YV�1��p2�-p���e��n��w l}�����9�b2�����a�|h����|����@�Y�<�
���.�>]��aDl��A�����
���o�p�����3��yt���.����k�Ws��fY�:�]+���r��(Oum+�Q
��ee�NzY	����$�*&�B�u�A���0�����iz�r��Ff�b��/Jf��6x���;�
<����W�y�I����v0;r�5r��{�d����(�wJ��P=3��?�fN����n7R�,�MM��'��6�QH
����u���K��m����e_��������N���k�]���3u&��L1������rw�w�������_����X��R�R��/g+��r��� �K�s��������[�"j��6�c2����<^L
 �aF�bF��-fv�A����/I�a-BJ���k>��}��������@}X��X�Sn����o��AH2�dDjuaq�8��@/?���XJ5B������J�b~F�� �Ab���B]9iT�����S�+;�����'Q�'zu��Xa���w���[W.����j`�5J����W�<�3�I���A1�1���9%�>���Q�E&u"<C�}\?�3����N�!�?N8�Y���H��X��{q�a�q��~�IB�9CNm7O�������SE���i���*i����0���C�0���w������1Y�����O��XTM���SF���l�e��del����w��9-�����a@�D	�'N����%5�����z����o��c�j,�)����'�`4����E��+�g�8cQa��������*F�@Q-l|�]�����H�G+�*�[��q�%�$Q�e8��l���M�e����������.^?y������`��������_���o����~U}�����n�������>�����e~������U�q��'I�,�>t&��_����P���_mE�������q�}������<�+�\����/^��x�4�8@��M���i}~��~}w����)����z�O\�q!S��w�
���-�|�H:���9�/����F7��W_c����O	����w�[�����U�_�g��w�m��K��E_���4�
r6�Q�}
�3�H���Uu���Q��)q��
~+�F�]{�m�?��N��\V�H_p���{���H�im/�b�]�%Y�4�"J�������|�^���-��R=��m7��a�f�����+"��x+��L�k�p��h^��T��b\W��6�����������}}qq��'��6X����az	�����z������+�}�(]��U���j��o�vQ
�����iGLQ ��Z�=�W+��MQ|d��hP@�"��{�����\����:~��2��������������h�f����+��%.���m0���~��s�3OD~X=O��x{��EW��E���i���1
6��k)��n$�u�[��m�,W+'������,���m1G��O��u]����PMJ������`��G_��p�����"��yM��n^[��z�����w91�`�0�R7<\1�����#[�U��aQ�j����%9�U�x;{�u}|[U/�o/~|����n��Z?�-W�����ckp�X�EVyV��>��e�T��2������6�}���H���������|\���S�������o/^��4� T;���Y���g�$6d�~_��������CL���[K��OO�������h��X5��P����Gb�"���bZ����5���-�z��W������x�~�����5�;�f!qtu�X�z���f}�n�	'F�3&�����Hy��)&��H�mk�}cN���A���c����+��Hkw
x9T���b&��DBUcA��j���fq�X[5��i�CQ�~������u!�u����/�Z�5q~���~���<������jms�g����f�����}	�f����NE����f����������m��X�M7^�fGT��s�ZA�k�B=�kf��_18���zEI�����m���lB,`��HE(r}���Z�C(D���s%Im�7����
�V�4cQvz`�@�HX���_41�>n�b}�.u�@V�������D��to�H����D��&�0q�[��0�nx�xX������j����{O2Y��V-������*p�����w�@�"���3��od�G���i	��:���P5v����1$b����5�]�\�k�PN�"�������>�������juy,�6�.�`�0.(V�4�����0]�W�V�C�i��*`�����1�`��_�LqVr�a�����iH*�%g������v����Nr�v�"#�t
Mi��EHLB�M��ly�5��BS�6�)���S�?^����j_�?-��h��0��C��{�J��}�����������#�����^B��wlx6��Q���v��������:`���X�W��7�i�r{�Z�O H���������u�7�m�gl��5
�p���k����<c�5�2�����
�A�f�R��?�i����O����n�e�y�����!��ch"��U0B5�p QH���DZ Q��+�����?�z�����3��-����O|a�W~Y1�)K�UX�M|��~��2�1
";��*
�s0���MTh����;��?�7�o~�����7{��12���a�[��1_/��V�m�}(?�C5^���V;��w�0�������M��w{���w�/ [�_�4A�=���<��R�y���������w���7�?���K���n�����=����a����>�+�X�}��j���q�>8T��T9�3���{�_C=�5~������a�.Ds�",��B#�Y�'��;V��U���'��g������n*�UKL'�������x��%��z�-U��H7&2w�����f^]���XJqt�N�v����-q*7��
��x2�W�
e@�Q�
d�`����_�(�u�����Q��R?����)T�\�Z�?H�>�*�w���
[Y��m�pi�E���`��� ���
n�m��|w�����c�{]2���x�C�Q���>��->	
����ah�wxwu�����Fo�@"����kB��7��
Y�/Wt=�=�;ce��D���o^>BXL������c�iw?��SD��P�Q���oL�������c��NJ�*��77����/��Pq]��aE�o�����-\��V��C>��"�a���z}��f]����-�a��f*���G-������>����
d$��l��[�0L��p�M�-!�^����3� v���Q��������o�jr�~��;�
|\w��%���v�����|��+�-��m��<��5�S�&����3�(������"���{�$=������?�\{�}�z��0K���7"1�7�"
H����_��������� �FR>
.^������\�K4�����li<w3{������`|ws��i��������Nd���������p`-��6`����;��xC�y�����k��4��;��a`
v*k)Y�DQ1�����+�L��a�Gq:t�=��!������T.G�xQ���Nf-`�����~v;��sk*�'b�,�] O�rS�����7�>��a��
f�b�J�5��NAT��Q����SWB?��3�G��R��b=�0�1/���i��	����=������z5��.�$1
j��"_�1�nQB4&��|���eE�q2_��C��W�������r_]�#��|�8�	|�[�,g�+���@g�9�x+��:i��.G����N����F0�5�����/������L��yx7����G�Y������b{g,��s��q��-���
�a���X��#�������/�Fj�<W��������sX�:s/��r�	�3�j�},� ���������ic������.�|�n�N�n�����bcy���b��2_���f��v�>t��
|���Tx�Z��5������{^V���u����:S��3�|���r/3��]���9�q��u���WP6�����������Y���b��;Dc�0v��Hu����Dp���M���M�.H���|(�q4NI���,���t6����y<?�����L[8G�sNw~����r>��'{���Y�X����
`�7x����00����
iz��5����w����vq�^0cn��)���V��M�b�W���f_�����w8����a�S�qws�Zm.!x���.a3�e���t�G��-��U�
��
N�m7�S�>�I��:����� �[�������o��b��
��Z���}�;��f�D����k�	T^������S��[yPz ���}�M��<��~}�����h�}��&Z5���<p7�����w������C�U~wcR����AI$���c	1�j�
n�7�y�s'$�����O�Y�o��Y���#��T�N�n�[����Yg�d���]��z=�������q3���>��J2Q=���&}��;�CI�q��L�����f`B����u��Y�8Q�������i�p���u<&`����O�����u��w����LYqyA�K����0�.��^��1E���r�|��������DFzgB�N/�����r��h����r��!����T@��6�U�r�+�A�:�]�R�%�KP�&�yxt�,���x���-���Q,v����L��5�	��r�i���a��1�u�&%"���5�	�����T���AN����������	��7���[Oll��o���,8%�i-��5� ��(��0��ER��F��h`4���n!Z��M��D~
�ad�1�'�;��6��8
#:V
Rr6@7���a�8�@�g����)9����?P��4i��Da������n{yw5R�}k5G*��2����|8A�c=�,+��<jig��EC�$N8%d�q;�������6��'&	b��Iiz�� �m��S������������a�� ����:�)r
�gD��/�4���Ln�\��bqM#���3<qM#�������������^��ed<��!��y\������8�K�zp��B4��������D�p�]\�9������Z�?=>F�_=o���<����'�����w�
��W_����/p�W���x���]'���:����leA�_=w�#�E����
�:�W<���#�\����mG�s��3�z�@����su����q8�������q�qr�����zx8�������>�\��4k��!�����?n���i��#�9��#���?��k�1�����d����6s�X����Nt��"�|�#�������n����fp<g/�^c�B���5Vp$>7�s���V�v��w�v���=�����t���?�w�)�_c�F�s�@\��<tc3��^hw	y���%�E����.�\��������"��,r�X���6�S���(9%G����
�x�������/��@f�P_�:>����x�"`	� �2��R�z8e�7^�������Ek��!��;8�w���Uu	�@������%�z�������"�A�pY�PY�w�Scf���67���y��mR���=���j��5�=B����!�e5y����fW��7�\��*S�!�D���X�����d�A�#�v���a�zQSr��!�t��#�OF�t�B	)�Uv_e�D���)/����w[����������}7�����`yux���#���xY.���������U"jf���Q����^/�?�-s�x�#�a��D M�[x���z����!
J��I�����x��b�J��?c�N��i�
�kf�|��r�SP��,���O�o�xZ����G�Q�M��=K������6�I>�����	�%���B����4�#��q#������&�����D6T>��qF������%����X���7�d� ����&lF�3�p����9Q����Y��#=�Q�9��J��X�mT/f����8fL�W�F�����D�Q��:���V:���8��iO6�&����k����te|���oW���Q'fi�b����J��t��P�8���{flN��a�C#�3��K���-��:�0#��rm�/7��1��h{���o��<`�t��<�~����oM��`���{�7�@�b��Rl�105�����ABG�������
�����	Gl����v�#��]�����U�����c,��<�����
��lf\�������/�B�n�j��	N�H�w��.����[%pifr�M������{�%���)�K��#��N��G�W=�F"5��h��\w��;q�{�{>�����;%�ck����p,�K�<8(�)�~S���-b�^6O�pu8�o+���C-�.)�j2f�k6J)�o�as�y��6w��:�@���6c���J�&3
r$A��g�C���4���kiD�=J3|X�^7o��[@�������R~�#8�{�.[�6���%��6�Y�}����Eu������hpD�"I�p���X-�����e#f	s!�1������)Q1�Rh@�-�W���
h) H�������:r�W�@jz_��G�,H�ip�us�y��F~�Ww�vJ��!�����]=����9"�Ww�{J�K�!��]|�w�
��q]|(��n�#��������Yh9��%�cu������:���U�)E�<V��Q��8%�]|�w��T^s��qw^���Zn�M���`��#��v9���(�KW	M����t����[f�~6����ZP;���f]��?\W�O?�6�{U��u��E��C�u�2����������:��p]'���c�w�Xo�:������$W����.(���De0[�s��^��l7�{�/h����w�XW���y��������)h���6URb�������z�>:�����e�sI�����x�������*�����K7d������*�
���(�p�ci`
�a����	���[d`�o�KW+'�;u�8��{2�C��q�?��<�c������"�p�]���J����=s)�v���q@��S��u�sNg�L���r)�m�u�9T�V9vk��J\M�������s�]�h�|Ir���+F�uY!MBc���1:��������]��4����s��SHs�X���g��8rR�v�j�+FW�.�g�f�bt�li����]�(]�����5[�o9V��1�k����2i;��������|�3i��@���	�	���Grr������Q�#9��h�wG��K)��h�wF�����Mf����t����2�;������h�����Y��9i�����Y�s�C��Y��4�]wg��:�2���������������������^V���/��/2�K~�A�����������;����v���^��}�9�f�w��qw�/o�����g�U����6��	�e�(�&�q�m����\�i.�h��Du�w�a�p�)������B�K��~�e�e��uJ����
 6\����9�d�6�����/��l�����r��
-�������n��bm-F������t�}��=��mW�G�\.��������0�c����p�8�E�\���[�dX}�(��l�������yXY���Q
�}~W�����;s������tw�����G"b������=��5Dl����w7��MC��Vv�����j�������a|����t��_�oo�������p���q;b.
C������U_���K��r�c�����z��X^��]yS�Bw��6.;��Z�-�,�J}�B��C�N���')��)}�@���iZ�W��=���z�F���[���]NF��J�R����'u��y��[n��A��4��Q���K6'^������U��<c��Es'����.���r�)4�2����:w����suW������ns�m����Q������:�S����hdQ'F�@P�Y�Fk���GI	(���'�q�y#(�D
X�#A�@����(3V��L�#�Q�E���n���y ��o�D��[��T�#�18��RU��`����"J���Qy�`[j3\
@m�M�'O�Ip"�)B��!�d���i�����=br�wz`�ty{7�IE��������Rgt�q���W�\��(��>������������Q�>-cw���K�:B)��x�PX?�Y��u(p���~������ful<;���Q��w(1�E>�V���H��0�c��)Q�w<B�8��H��<c�Hc����=���c5c�`Z��6�������z5�bY?�+��;1k��F�Cj�a�������������M����j��qD(}���_����indR�v�^>.������^`w��&3kh��-i�������������zC���]Z����/�����XCk�k���s((�5�PC��5�P�}�eyxw9r$��9����t���O�3���g�I���vm2����\r�t�����+����X�l�a;�qZ��1l�pX�I�I��!����7�����5Z�;��t�P�XN�+�
��yy��h��T�'��1n :g�� ���q:���a,��
��"������1�\"�GZr�I �)��c� �2o@�����. ��=���z����X7x�3_��f�C����q�Rf�e�f&!;�
)G�!u���y�,]0��O���B��9t4�k�1^;�5�N!*sc�%�{�z�;�v��?���O���iX���B���d��i�����Z�"��*f�87l1&�5kW�U��d�����F�}���Je�u���n�`���3�qc?�q.I�^���Z��8HjP���&����u���~����X�0�J��b�@������ 0�e%�����{��F�'�w����d&i:K"$�����tk�d����m�����$�L�@���J��w��x�����Je���#��#��]o�v�D��/N��7��+���"��[�����&�����C+m�`#.x��mO�k�m�!���q}�����6<ry7j���6f�	L<��s8�&(�-l����n�=�m��T{��\k��v��6N�u�����i��J	#����6��lY6m������-6�8�C��������p���R��5N�u_��!���q��1R�[���wm�D����B���#���1R����EA���5�o�C�5*�8�l��= ���B��z7�m�K�NQ���q��js��m��>2��%f��7w�m�����{qcx�^��G�4����i_���z]�H�ooq�m��)-p/pT��8G��x������\����o@�*�!���V�(��i+��j�
7x����J��x��Y��O4��������H6�������{���mok�[��Y��a�llqQ;���
��������fs�{p��6�oC<��
��;_s�����������70�����a����UN�k�����~p��t�Ud��U�+����Iqv����:v;��:�����2M����D�jr������Cnt�w5��e�  
3Pj:I��\���;�T��"�2�����"">d}Ci���qh=��z�S-��������"x�j�%~!Dx*3"/�3;<b��@D��7��q,��"�^���C�G��lT�E��"�-
1
t�Qe�x�����?�B�'x�1�s��g�������m=��K4.1!u��'����u�mm�-��@t,9�{��m�ew">������2w;y����2:y�����h_��5�[}��@�e?&XZ�����AX�n;w������.��o:�
?Z���*=�f��e�?J��l����e�M�fX�����:�Z�~���	��x�1��_+�"��k��a���y^��n��yG9�i����T�zt-�@��6�D�Y�(��%�(}hT5��@+F#���q��C@��A�oDD�X.���	��/�a�M���������+M<�������%�G,��Y��*,w9h�z�I�7��+�������+�'��]dj�
������w?�
����9^i��*�Q���|�
~��*��|��3m;t	�Q���5�F�uI�9�qqH��4��})�����A����>��`l��Mm��R������	�k�-��&�:�D��:�)�^w�Q�O����Y"��P���$��I�
��C��B�����v��?/��O�������I�%��C��B}���h��[�����l�S��|�����~�#�q �<��P�R�\�"��=�����R������{��6�P����VTc��=�@���2Hf�*cf{�@Gu���v�*��b�����So��(&i�K�'�}��������[�r�������y��`��F�|k��@����D������_��k�'�L��ZO�\������j��`�S9y��\��i�I[�A��^�U!��
�&�+�[�c�-
 ����$;�i<KJ�
%|cHa�,��,� ��^��a���A�,-�����B��Mm�jj�*�i��RZ����m�Y�j��i��j1�!�����bk?<4��@�r:���T<������V@\����j����{;���������+b�H�]�=5������
QT�TD:��\�*5�`�C�
>��TT|����,����������[��A�����[qk__��:���i�?���i+n��qY2�eV������!�M����4W��MHIc�$�avU���.�%q?���
JK�j��hW}1��w-
�J���w����Z�8������P�R�"��x���I�`����Z���S"�=g`�L���"+������A��a�
,,��f����TmQ�]��6,q�B%l���V�v�7�-��}��#oy��E�?�o��I�q�9�$l����LE3���e!*\��xx��������>�Y�q:�]zc
\q�w��c�EiRQ��&I�%��b�G����5`vD0y�C�$��BJ�q.��8��f��gU��/��5R�5�.E<�[�S�h)o��z�������~��#"�I66�'R�9q �7t�U.CoIh��jG^�������A��49'U|y~�L�)��?c��u�L��������p�ja���p���"�\���ph���alS�Q-��[��1�������!a��X�	�Vm���mM[53�3������p��]���e��8S&X���a�A����D�{������	��'�n�V���qu-���9���`��(�����Or����0�o��F%�
��@�[Uax����4s��sG-�ofNK�I�-82����r�s�kp���X�,.������H.�Cw���AZu4::��K(�����_�M��Eo<E��P��}����R�O�6��y��	��K���X���+O��%��&B^��#���a��bwa��_�#�s�xz>/��\�,.
�
��)e�<}q+�
��?^�q���"
l�0����F�#����bN��Y�
q����2f8���s���Z�U��6�f�����F��!��m�t�B(��x��5���Y��,Mt:�;���%�Q�M�"�G��T�'���+��z�f��g����6�g���3�6���I`�_A�[���98�
-���f�������7�ZU����r�������sP�\��.3T���Gi�N�<=�q�����C���V[�s�YF�����y-�g}��y�Crd.����>��2�\���S]v�N<�eB�/�+e�)y�Ej2��fQ"_�.��2������9Q��KL9�G��k�w���]���I���Q�1��\)c�E6>7�
QV�R&�%��(>��k����W8�xf�+��;�T�db��"V =-�x��������������T�<�x�L���V��,����b�>�u)9&��ar=��"�$|��t�����B���\T*����+
�?dJ���b�����X*|+�P�GQ7��c��2c�F�=�4�'g�,����\EW��K�<��Z�0����O?������
��������tbUn�Bg-����
_���4��Dd!^��Y*E\�d�kJ	���C_5����<��GCo�7r��8���5�c2�i�_�u�M�R��(��O�3��������������g�u��������b����K�#�t���	1Pb�Vlr��#�BL�zA$���"RL�z#�]���WZ�][���;��.�<�B�W�=w2�#�|M��i ��[��v�n����k��(gp�5�c���Zn(V'�����?�����u�N��J&>n��� E)1I��[8'�p��'��	��E�4y��M.�B����^��l��J���9��������em@�o�5@�,�4�D��\�-�h�}p�hp�&&�������F�:�����r�8k��P��dy\��E{�*�#m�C�z�%~���yU2W�t�����W�U`�7��%�cTEOQ9{�-%g��
+��:����6L���F���<�����)�� �����
!.d�
$����oN�1>\+/��0��/K�Br���#g���B9H��-�8��RR�H�>.������o$\��������y�z��-?��%�
w�Z�-W	�v�;��pq;�-aT�w�]�F�����g��F�����2p�0�c6����vk#�=��B�'>�q0��(���ks�������b��9Q ������h�&C$/�Ef�������$�)���h����!��v�v2D��]\f�.�Eb����-"����}Y)���������UF��#��~O5Y>����!,�F�[�;VwH��������I2�;6��0m���5
��F�����ma�^����!/��@T��V6�� ���g���ye��t����T�k
X��<�TCX�����3_v=�E����yu0�&$
+_m
�W��hV<� ����X��]l�0�dP�m"�9��A�����D!SD�.�o,���@�&� �x��'a'����#�~:9���):���W�5��5^r�o7��
<�&��W����ok����a5*�z_����pj���v�s�� c���z�5������	wZ�WuJ�N�"&!���%Fot��N#k
��i����U�4�bR�Y`�=�y�>�����Q�=�B���1���	�8�X�(�@��@a���[���E��n��>��-+��"~����F���������A���qYD��9�Jg�	�4V2l���Q�����%{�)��26���r`����
iX����w�����N�n�xI(*�e���a.)dK��y�����8F��p5��^��Ri8��C�90&��J]=��+�^mgoi���aR��:;s�x7\6���[68o���H�|���I-�m$L�e�"*5Q�21���]Da,��C���#n��e_��/FR�SL6��m�7�$�=9)p]01rt
~M?c6DXCE'~����@<�������\�g��O��$GRG�`N��AhNTIF=�Q-��J���B[BJ�{xB��������B�'`abq0�#U*S�� �$���/�A�
HzA5�PPM	��
S�	�,M2���v�(�Y�!�=��/�qW�y>�m��/QQ2���a�:��v#��9�2�T�7�d�0��+��)��fOr<&_$S�io�����0�G���w�'�������-�5��|s\m>m>tY�����QC��5\_�OAf>a~�|��t-��>�Kfo����+�F�v����<��}�>�����������Q�������?b�?�8�It���4���q�*A�a��6����&���E�n2jX�.�5�vu�,P��v"=�|����Jb��N�FP
auY����FY�$��X
%1
p'���Vu����p]������,�eA?Qx����1��p��J~tH�)B���/y���N.��m��~����p#��W�xK�=M�%P.lx�=���8��F���\N��D&���)�:��0uT.�a9[���JO����s����r��z+����5�KT@p&6��(�J����4R&��r[����"�J�(��C�@������H5A4����� r����M�/���q���|i��3[��A�Lv�gR\P�e���$s�6�F�3|���?]����+o�����2c���8��.su��$NRB���1�Z�k������F��Hw%jSD�4��3�j ��O�X�&e�k�dzh�hs=�S@��!���j�{�\���:pH�D':~s�������c3��d"�,��X�c��V����)� ��"TJ���O�o�Q`���/u P�#\_\F?G�c�	���2�3|��>���6<<�e�]�K�����VC�:z}8�hXS��/Fl����7��X}�O�/i~������+�`;��?s>�/�������������c.�����xbSc���8~��k���R���I���=���o��D���Q��3��~��������$��:��/��t���D�H���������VX�6n����[���������j9c@{;�o@��q��	��m�h�� w���0����Ap��B�<6b�F�x
������}�'��Z��N����=��NO=���5�M�����
���o�(�Z���w�&��a3t�����m&��Z����e�s<���<w��r��>Y��mF����x����&���������i�xJ���]�e��260�GPl���TE��kW�����E�����`/Ee��	�j�Y����M�gAL�9��|�|��w'gn�:���P*����^x]�l�J;�
�	<%�6��9z������G6�C#e<<kI��6��cg��H�K+��p1:��!�4�'&�N�Ke����JE`M�����-��ux����U%,~�8������������F�tt�u���,������u
�:��#��,�k��l���sh��>������{�I�hEt�x�������6b���k���$���5���4I�eE\
���%�${�"���k�0�QN�/�~c��q��D��%����n�9:{�S'���h�5�� ZorW~����A����#�-$����pr)MR-[<� �-$���Ea
���QQNk�\��\���������lp������h�c��7h<z�T�i��1��l<�KJF���T��0=M�K�d��0������Z!�PK���=�77h�����7�<k�S���6B�z����B=x��j��J���-f���4���r�:[�v���������x�_���[��`������c��-�O�����pC
.�^�F����B:���Ja����mD��S��7��M��iE������S����	h?�lo�/3���d�Y��Tf�vn�M2����^������������������%/���-��Z.y7i�����v��J��-���p��7�[�T��%wa��}�
��2>c"Ki8�iU�^S��}S��������������O��w����w���"����������#�����g���Th���k����p����i���z"SZ�9��XF�|������w�n%M���$fu��DM���U[E��?�l.�;��~Dv�6�~��a%{u�V�������]����uA��������� V�3����.����&la�Rn���\Hz��j���Z@/��5P���2�}��9Y-�hj�ME�K�*8��q!�{�u���������I�E��������_'K��er���{l)�/�)�nyX.�p���S�O��a���"�r�[%��RN�v�kE����3���X,i����j�%���A��5s��T��K	g�^���������������<���
%����9����xW$�U���ef���i5d���Zt����f]�
Y������#�NB���w~V�)/1���_~�:�q>����������Fc�����Ir�1��[\�R��S�����|OXu����-��1��� uA5C3���
#�I�:�xi3p/
qKH>MO�l�H
�$�$?f�(2$�(-U�;P�2��>�_=��L�8i���*s!����d�I�U�<��y;�kQ@q�����"��,��/�����t�Wf9�u����;�wO��������B�[�Y���c���%%9�7����sLbivwA���P��)�U���H�[HwNw��L�6�53f���F���;�U��������~ww�����b��
���wUX��G���k�����_���M�k<+
���:E���<&��1�1[p��+�C�.�y��BU8��;y�����7�m7�������g�m���y\��WDk�����z.���<D��#���&k�CR�zB��M�?��?���H.�9=���W���X�Dww��&Nlm^N�CTEi~���������#\E��[�C�=�QY��|)�	���-���
���M��3���Ey��[��+�/L`y}�LA�����_�T^��Q�����<c���y:�A��l����������V�u�D����s��wH�< h�z6i���|��u����v�Izx	�1::���7Yx�R�!����<e�1�,����P^��}N�k�k
0����bu�De�/#�����0a��AHP�WKCJ��*��p7�(���
�I@8nq?d/���@�({�^o��!����$��������t��-N�}(N����jM�/)��,T^��+/2�����������Vw���� ']�y~�m��,���Y8����c��nv�?�k��A�.YR[R�.�����5Vj��'���2F�lZCbmK"buo�Z��
k�^���U�q`c�|J�k�o�:���P�lJ��$<�+�����H�
��������g�i��B�d�hL ��K��?-qN��"-�\��}-���i]EL���6���� 7d����=��^A]���q
B��_�-�t�R�����x]B�L
b����u�L
��,B�~��3B��Z�C@r?W
@�~HDH��a�������v�t�f���[D�oBHZd���E$$�Dp���������A���FXDD�Ed�`�l-�K+�":���Z�C@j?�5���������wAXC���4�t���6��yr$�����
~k*�r8����]K{��%�w���t�\0%�*OB<t�)_���}2�qY���x��QV�Eq>�>+�26�����y��|�b5,x��z����8y���k~�����!/��s���K�^��T��[Y\�����E����-~x��\�{u�b8o��,��z+�5rR�;��e�����W�<�M
������������K����;��w ��\	p��vnp����+���#�Ef��%@Ed���Y}���oF3p0��*��eF]<<%1���t~9��q�����	�������F?�aTC+�"�]�m����*H���=�r����t��cI�kJ==���a7s5y���]����/R�w��4������4�7��������;��? <���/NO��������2���������	Z��yZ�C�U��'�,4��i|^��r#��������}<����E\�%/~�)Fo_��P�:��+,)�������a�lE��x�
k��&���Szw����HJ�L~����c��ru�?�	'������:� ���J��b�����Z����q�-����K��+����5��-�"n�nxs��@>�W7D�U��?���O�}^��H��Qy�:�NkS���Z���>:����j(�w>���|�	h���L�:�R,Dw;u#��.��_{��������;����:m��Mx��7���`����Y7���)�4a#S��,>N�vrQ�������l�V�m���%_,����k��s���_0#���Z74��O�?e�V��K����^�K�P��v�Q�oM�b�qr*u{@���L�vl7w����}��������2q_���$�B� ����41�>��XV����8vz�����!�m�@��R���>�O�}�P���8+��^v���9�E��]v	d%�]�,���'wE��|c[.AH��OQ33����"�^���&b��sT#��q��4��0�,����F���"�f�y�s���c��B��|��z&EY��_z���Zw>��{Z��p9dN� ay���������(xx�1H@L���!�q,�����b��s�`����<��*�z����������H���'{x�����`=u�������������O�__����u���t5�'8`=��������S&��(��I�:�Q�:�3�SB����
2�|���P�%[b��U|V�+���ol^�^b'gB>�eG���c��v%����1&���:Yb�]�WP�����
����#�d��+��l�����%W�-e���H���=�������7��<�E��5E$y9GrEb�����_<�o�G�b�v���7"GoP��zwj����+E6[�z��9��&.��5���I��kQ}������*g�&0������b@�����$��P�F7PL����Rk�MH^�q9������&49��
��������\��U��L�[`���	��k|��f���Uk��n�m����b���W�@)�pSr�O�"�����M�_��r'��Yz�����_%���\����e�l�_�F��~�����U����~�� .	E�?9=|b��` Q{{�Lm�|���ICL���m����v��yL�����t�W&��Q��|;�w�F	��
E)*��a�E2��Zd(�t3_�.L��t[}���i�U-�x	���-��q�:�Y
���CM���0���Q���
u�a`���e��a���v�-��W�����@fk�6Z���dmf*��~q�U��mN&T����&Q7�ox?^��;!���7D	�N-i��jbF�������<f��g�)D^��9��j�����g�/j���3LT>����E��1���P���,D��q,��i�$�{��{%r>Gp^�X��������9.���IC�P��M�'<���\mp;P8��i
����U��<�2�3�_�6]����?Z��}�ol�O���zk
z��4��5�)�Ak��q�9�����$�d���*�:�_�q���������j=5wq-Y>M���C�m��� S1#���3��s��b������������am**�x��)�{%��h^i��p#�L���U�4)���	�l�o�ZqpG�GA�|�X��|�T&T^a^����
��2�����FZ[�o��W��}��Q;-���D�x	�.9��DL��a�p3�{��/93�{>�	)D����)��1�Jd�-_���\^_��6���a"�;�l�
�~6<\�c`�T�e|�+Q�L��f�r-t���>�t&�=g��pM#�Ix��,���'@Wb��������v�A��o�����^�l��s��,������>O�>e���y�)��z|�'a�����6�*���7|����������C�'OO<�?�8n}�G�nz���Y��w	<n7����Z�p�Q���.�{&	�C�,�k�n�y��>:�X�hRJ�.��B��2)T��B�s����\e"��
!��9;Br��@�A�D��^&��_���������q��3���������.�fS�f���a�2�%����K����AR�B��8���I3c�F-C��4/c��j<����*tF%��Aqt����$����3�j~� 	�����3�
9�	
����9��'����OD/��99�T�S\��$� ��)x��y����rET���D�'~9�y��)�m����U����W������Au�<�Vt���0�g ,������uB�T?�u�-\O��t_�����[�D��� *�m
��;���@�(s{�*Q��j���Y�D�A����������l�/��z��\�x����G�
�.�5�M����QXY��,���C!��X�X���bD�	���:�
%}%
J���J�5�H&��s{�	�SkR����w0�fU����{��	�����5;B�[�.FPOgv����m��:7A�tdOS)|��^���n@�q;���	�� 8f4��n(t����gB��uC�y���:2�@ r������������	dO�\����hz�
�r �����K@���h
m?��O[� �
t�wY�Q�`U��x77x�cX
0FE���K���������(����B�������$�7�=��@��g��8�da����P��,zb|��%Q��S��IL1a���%���W6�;9
Jj��`����ePR�}�:-���S$�lZ>�B�$��>=�BIM$�4�QG�%���@s�AL>uO���%��-2X��V<������a���$D�":&�r~
B�0��>�����CL�����~�B��o�M��
b���j�m����'z���9���s�eO�����rB��+:�z�j���j��S�?�������������s���}�*;[�B ����@�r0�y�C�)�:&���(8�����'�������9,�O��@�<�`����6�)��h?��1�L��,��FZ�V3�����c#��X�q�"5BcT������]��<Y:O��}-
�������T���C�m�����������Y\����"M�xw�l"{�f�KGH^��� ��EtH^N�[��E&5��fa��A������}JXv5g�p�^K1T�;c|�	@��
�����H���~P�A���D)b�����	���#��o��pG�"�������)0y�u�+��+/��p|Z��"�z��,������;3��������DU��
���0|���Z��F�+���v����\W�B�(E���j��=�O
QKf��L�}�L��NF�"�{6j�Y��>���8��8;������1�!�	K����=<����*1*���Dmjs1��v�B;Q�#QS�QL�:����2h��o
4e�y:��Z@�A�4M���g�����>��dE���t�E.�w�z�!��G�(T,����R��.���i��������C��/�#�?�e<U��z~����������D��SR����B�z�"W(������"��d���h�����$��(�lU�4!(�C%��U�]X6�g�W#3t�(yO�����!K:EF}��������*^qY��\���,�$�Y)d8�<.y�LNO��l!��5�����4
���\�������~���|���4U/]�8���q�� ��\����
�SH�C	�A�e���'���3��E�j����@$�RHp�~E����(8CIy��B�E��Lzl�,Me��8�D�B�oK��$�R,�G����j������8��G�$�$�*��`'��~�_���[5�s�n���<��������G�������9������+���W���]o<�~<D���������{�y��[�w��Tvg�o�y����`����dP(����IU
jV|;H��F�d=���G��R+�r�h����~�G��kY�\q�"?f�|
������,�6{����i�r���u�o�L����!�a~�I�r�+O�"�z���@�M������@���wZ5Hd-�������)��*�;���.�?j��z��8�E�G
�Z��^�&��%������S��@ �2�c~�z��? ��@��#�����	+�]��, K����(8?ZB�n�Gl�y�������IeBM�E���A�0��8���M�u"�C^��	@�e�������g�-����;��HQ�>���`�����~���NT����u'	>����Q���s�M���2�'uc>����Q�x���+9�8��TT�1l�Jb+�D�6g����D��G��	<6�1��Svxf� �`��k73r�@3o����:��YZg"��yF�YK;=oC�z>��l���2���{�VZ�yA��;��������
��N��)�#����]HF����_ ��:��SW��3bW��+��|��]���$��B\M^�a����k����*&�ScRN1U��
����z�w������P��vh������!("�����UTJC;�'K�T���Y�q<t�������lD�"��!��S��U�����/ir����z���
�=�\T�(�s�F�>.�e�*�s\�i������a�cj8�/���	�N��?���2�oi�y�F������}}��<����k�����Xj<]���
Z�vQ�:����B�5(��`�z��^�'�2kl�B�f�`�96��R�F��R���;Mn�v������V�x)�k3�`���R�F��Gi��� D��e�/��Z��"�}�yH�x�?�r��Z�9D���,^
-�Ds#�g
������R�����BX�zy3U/���.`a<6�������O�p�UDp��w�����)I����K�2����kO����7���������S������?�_O��k��1���K'I���{�K��!V;���<{(�K'CA����N("���\�!��_�Wk�����c��4�)0���]/�Y��������ea��bS�|x���]�*J�_b'�/���0�+1�"�%:RT������ �G�\��'���y����d�%((
<C5���%�?SHX�f b�J�>��f��GR�s8���1�9�F��q����X11�[��{p����;����{!j�"x#���z����7�VV��Ip�t6��zh
r93�A�O���V��r��V�
���M\�O��Y�mM������>����sc�nE�o�	��baE��D��T���:1�}kG.�!��D�J��D&�-�y��F���4��rHk1�!I���������������0[[1#��'�>g��If'v��u��|�+�}w�����ty+����X[�FhoB��5��#�v�4u����w��y�L����Q����u�,� ��H���C�b^�;)dy�������k	��v�1��v��5�xzj����%5~S�z��Z�HM���4:!v|�!VI�p���pOo�������fCoV��W������A���UM�dqIm4���q��\�#w�h�T��	��Z����%M*��ZY�F��-������Oo�;�`�����W�"��������l������)���o���]	}���<��������T�%t���QQDo3Nw���Y2Ks����99�O�����Y� ]j�}q_��%�@U���6S����)�.������B!���O�`6���|����9/�\^/���W�����BL�ST����`J������)��{�5��J�������������E���I5����b�u�5�"O��S�jB�z��O���gRL������������xR���-����2�IF`&���d������y������*Mb��ag�LrM!	��	�������e~-7����Vg[�T��}�w�\�����U���(H������������Nw,���,Od+�����na��8���;ax�mCE��/���"99�����H�,��`4o�Y�L�-�����EfD��9���I�<M�[����&W�Srr�wTNc�#�a�����o�5�<9�4C��3=@�\�6����N����7���[Y��w�I������|�����/�i|����b-�t���&���G�=	�4��V��KA=ki��s6LH��B5�kL��o�Y���"���3!O#te����ml7��4L���XLIl�����s������>���\b0)A�����:��'�3%�����6a�����~Z���@���c3r"9�x�a�B�D���z����������&j�"<+BN��F\�7�����P�d����:�R�6/"8�������>��b���D
���b���V��V��|��Ek����XAJ^�U�.��O��a.������
'V`�	�7�����$J����AF?{��7�Q���o��!���w��K�gUo�����0g�%� L>C�����j?���m�
�����1���9HR=��l�����N���}&������=���|��P���56��i�m!���� �0�����'hw�FE$���7�G�0S�V�����-�P�H�_W-���Q+'�8U��"�4�3�~t�Go��H7�����������)�+�b����?��G�e��B�$�R���k�E0���[s�#C 3��qR3V2�����/��U?�l�]:�E���6�)���sp�q(Y�|)���,�?���C)	�K��H.��go�������C�V�A�|r�V/q��M����<��-�=��)L��%i����|�����$�K�wZ���?�������p�������e��m�"���r��C����Z
�<������&�����M*��#��������q��;��M`��o_�2�Z.�z�T$q��S�fl����{u2�I���
,U9v����=��B%����N����6Ogo�������3��5K����j�j��A�����{0�0�������V�p[���� �����u���������������I_��3����)��w����F�������w��a��1�O��;A���#3�}�op�����������|����j��h�V\�SeCl�L��T7-�Qy��1s!Q�{�pm$��eS�������~��������3��v��]���&e$��'�	A2�I�����C�@S�����_������w5��u���5uQ��s������2�����S�4�5�������f�n��S�4�-�Yz7,�B�+yv���IZ����������������N���t[�Q�Gb/f��m��������`�h&��$:��D�n�6Q����D�!^�^��s���,jmx��D�
V��!=�S� <-��Zh��
��3�N�����*��K��Zh����K��Zh��*���AW �-��W����x"�
������y���!R�%�S��o~S�j�[UK$@������I���>�@"�.��VN�U<c�lDU�#�8?��t��$V���7�3C�.t[��|I�+�$b�E|9�Zk�c��B+������j�lQ��d��"D���N�@./�h��P�l�v_����/���w�J�� �A5��$C:�y�^�?�%����	�)�j���Da����8��6�=��B`Q]��UN���$������ib����F�1A�<��O�����+� ����*���e�_��
�B���x�*|����$�<����C����P[;�[�������o8	�v�qS�uS�1s2k,9��MY�:E� ��d�����,������-V>���Im^�#m�so g�&��(��{w��H����"��Z���Qs-�������
gM������fd`��y1I(�������E
?:�Q�'|������Ct<"(QO)pO/���{^��0k����1��:)�������	D>8�1(O���� c��-�V�rT�5;]6�d*`.h�|��o�������33��".D.s�c(l��d��
���9}t:P�:J��F����PX��m�=[+��m�P�@�����
J��w(J��o/�K�1B(J���m�blP�c���������
�1;�]����#���������@�:�j'�Z���ZD�����Ip��}_�Q����Q>�M	��.i��<%����B����|r'��t�
�>\8��s]����c�i�G�q�g��qM�!�<����16~���#�F�
I�A�C�g������p�9�s��9Tj*�������p��'��c8�m�����1�ag�N�[�p�Z8m;+��zv����������b�o�`�g9�s�`b���D���'d�{g����1��)�b
&z�U^�c�=X��[py
������bk�����N��1�i��e\ma�t��)!���r��?d^l�}j<��
�}���
��wO7��S)b���N7�w�-6N7���dP�m�7��]��j�����x�Kct�^��R�4.]��KyU�jy[��3|,���[�0��������6��p@v��Fi����X�m�)l��������~�f��%����yX�m�)l��������~{!]�;1i���6�-PW�z���Qq��& �x�7����|�|�M���M����(M�!e!��`/�����X��[t�i�r;1/��>�Kg��`r�C4��9�W6P�,�kC�u{����������F/D���u�q13�%�JQ=p��>�7�?�)��n��S�R�G�+��R���x.�E��Iy�@+f����S��ZD�Y�Az���I��N��j�B��Q�>��9�I	��H6L��e��a��+��Ll�Ql�
�@��-4�
|��f+����9I�,b���^B���R5I`��_�}��������7���2^
�XAS���0/� ����O��r��)-va,x�N���z�y�!���=L��x@�T������
�&�e
ShU��5�����X^��rS�:G*. �&x�?4���+K�L&K�W��
�B��q]�����������W��I�Orw+���/�MH��O�P%����=����(x���\��m%.P��;� x&��a6b���p-Z|��rV�^]l;��	&��	���(y��**3{�����-��3�
�,���55��J����5���������J��� ��`�7^�#��I�NJ������P����3)���� �+�V�g����O
/�%>\��!�
O�V�%��n ��Z��H�����sS����tyN��yv}J9T�~���UdE�;2H����9.�s,W�3nq����p6����"f�^(��g(� ��������n��9.��:v$����af���g+���������^���%��YQ�M>X6g���������
d8����F1���E�����jh��|�����:��A�%{Xm:]�q�:h��f��/�Hpf|�����o���Su�b	HW���M�e{�����@L'a�����I�m�8�������!���2)v*R�
�����'M[mVTBJ�T�vmJ0aX4��l���wdD��?��3��]c2JQ��99����.�u#o��
AS3n�����</i��8:\��t�-:��l!�0Cs
[���-�Y})jw��c�k1L����e������j�N��J^!�)�>��x�q������^$�����b#g@��_#r����
�J�1�Tw~���-�M����S��������-z�6<����e��A��N�����i�!��\���ZU�C��7�S��VP7�tR\B����y
�U�[8r~����V��v�O������kL|����O=���D�Mv=dmd3���U`w-�{U*��?�Gn�C�(�<~��V�H�S��mp=G2R������FT�3�����}�C������gf�~hb��@x��
`�A��A"�����/�
���������?��?�����s�����b��>��p6����R^S����8�����a�=Y�+O�ny��@���tl���Mb�9���)A�)��� v���L!��`�7��ajI��]�_�Z��9�����az�L�:6]�v�7���S����9���d�e�L�|�+�R��j?~S"cD�)��1z*�i�kf�&drhN����
x��*@��SH����]�WU&�l!� j<*�����<>��`���{.n��(U�f�>��_�����Kh�b>	�hu����H���\�������z����A{��{D �B��6�42���,��zD�q���f��b�
�En��x@�!N����&�����JJq�����k(<����o�����DX{�W�����<�,:��6H$�&v~�����	��PkZmy.�6�3�Pji�-���>�KX����z�����F�[�[O_���i�ZMj��:��4J���z-w�H���xX��0*����_^
+��0�������h�1X�0*V}i~L^����Q��,���#�U�Fs���=tM�� �>k	��Xy�r�sQ-��_��A�<7��3��L&�C��	.�xYH�L����k�+�d��/����t����g?���L����Y�E���)I�ugT$���^�1S�i���L���%
>7L���<Ee����R3
}�t����$|�?,�&L&�N3�{���������X+����kar_Z �A|��jK�	yRIK$����~�����crJ�rD����BT���eck�b���"�Q���}�s[bP�hf���������tW���.f�[)w��?od�`9=�yd�4�=T�`N���NN9���J��^��c9�)�����F�J���b�7������,��W�T6�JH���R!$V��bJ�����"����6�XK�}���������v�^i����tF�Cr�^�O����� ���4 �I]&������)����������$e����lJ�[@�oS��3Z3Bp��F�=�
$9it�E}/ZH����_�u
��"���-�|�j�[��8N���7��A�����ZH0V�=T�g�������q���{�*�bG
���edZ"E�r{��eT�����������y��
��#nR
�uHC����d]���w���$�.�'D��v'�do���J��,�hTx���P@G�[,�8g�B/�����#+����b�������������O^���9��$;o#p���D���TVv��^��~n�op9�*:_��!%s�w�W��o~?�6�����c���F���
$�:���M�������U���f��LBm/�3F1n
��Y0���0��&���K��h��il��pI4�m�l#���
b�N#"�������h
$0��6|jkGc���H�D'c2��)TN5G�2�j��"3�B'o�W%���r�&P_T��bb5���.:2��~��U�O�����@O�4��a&�a'��|���$��2:��
����$u�N��z~M/M�V�Rf&��`):�+z�Az�'v�N�C�z�8�k���s����oC���9�S���f��+e�je���)����yL[�b�/yY&O��;xdT����l���y��W���}[1���m�E�<��|�&mC�
�E���P-�	����D��B/���������������s�c�6�=n��~�_��������C�A�9�Pe��Wi�����������
�5���Y�k"�#�
i�F�We|��3�x2�4~�_�i
�2L�=	�3"�&)�����]�G�����2?.�F$��<��*b�_�1�r*�,��a���E���Ae�����#D��X7���l����	��a�;;�7��=�}��e��9=�"Q�SR���!Y��v��uF�`6����"&u�,�����2D(�*���#�S����zcFW���dJ�f�������q��.���L����c�i�>�9�K�1y��� 0v����^sb����)��������M%<���������[o���'���&�hC��">��������Q]��a��`L������)F_o��{��Ao�e�D�v���p����6F5$����l�F�=5��w$�i���u������M��
�`����>�h�����`iK��FP�s-��'�8z������*zK:S�����66�S��l\���i�,�' :�����w���d�xdk��0_�~{:�c+�wj!:T�
E�5����[������(�L��*"E�yN����b�U��R�k
/�Q��&����!TBh�"�JT���|�QY��+����4Q34�wO
�G�0f�j��b�|-��>:�gD��:@��yD���X�������O��W�v��OI?XR#��Kyr�����V����o�Z�L��oo).����9Q��oIc��Di�KL�q��$�	�K~�-�c\l���K+��T
M����u��6��
�xmt^�7��
����o�d�K�\�,f�M��h�	Y��d?	�Qf�%Y��
FS"��������������[c���o����K�a
g$ww$#9��o��ch{(\^kXf��;�\��4 r\(�v�a8�+��l�s���������=�cF�
fe�k���Q'�����~�-��%q��6\�.6��J�a�c��vr���^��S����Ns]2gY��^�XKJ�lg��	��O��`1g����m��%i��n����i�){�����l�L}b3?��l�[J|w~J3��Z�=�S{V�fh�]/����a���<��6�;�je%�y�������b>S��B������������������r�_�����u�y��L���@kw�i#'��.nnn'��&����y��l�i�(q����B����
��w���h���r�z�3�'�J�������
{&o&���w+�B��\��v��LM�vs�A�#9�'s���psLv�n�5[�Z���ik{�M{��om��dF����8b��o3�a6��������m7��M��hFv�@�.�&��K���<����j�Q/=��H�D<��'n'\��I���Ue$'�YMC�*�jF��y:���"q���<�%��(\�K"z'u.G+�nI*_����fI
;�e��n�f��2,?~�)�aC���c�w������6��}+-G�������x=-��@���R�5�����,��(�<�tB��hJ�2)��	��A+����}����d5�Y-ovk��!W���3�e�AjsG���-�j�SL����TV%���
D�Z�N����"�������s�J�U��Z(�p"a��������}��q�8��������&���V�����BzB9\k����������\�
�$�\y"�����T��Zlr?�Uq����v���^d�6���z��7����*����UMg���zT�Z�����r]5����;������wD����t;>��
���$3e�T������b�of��(rV:�E~v~�/��5���:a�� F�)z�-�)��E%�G���Ie��7S������83���L��V�i�GR*��=�7��&����������7��6b�<M��!}m�������w�����a���=`�����OK<���h����]���x�h�X��{���OB�:���=�qLH�a
�r���q}����4��q�Y5\����x�6\��8���I�)���Ir����CJd�w�l����{7g���s��%�}����,���pI�%�*:5�x�Kj�>t���6�����}
���6C�U�Q#CXM$��!�����JM#��&�#������ y�Vj	l�0Y}�!�[�
���b�Vu����7Z�7@�Cx��Y2>��W#6C���b���!L�Rm1������^�
-���h����!�����e�����va���,��\@:�z���F�����t<r��K	�"��)l��P1�������zI�%9����H��#DQ�1/=��D������K��&i�Y�7��}�|ww�c���{8K�����S����(=GYOo�+|�~��O�xm^�`J
��@��������L?��>�>�~r����5��������4����m�����;tL���?\��E�+`���S���x'oLs�Y����sCW�.���qvX����g����&���������@�&=��}��c�)��V	d������V	�w�`z-��
���Y�a=�
���Pcu5w����I�Ag�O��oB�Wnmyz=gv�������[��|`m	�'�W���}����A'�D:��*�\������Y/��z!L=z1g�t���pGY���	:
S����V�P/�L��EF)Ev��zI{Y��&�42��(�L�M�t2�O���2��p�k�^��%��1��LhI:2�Cx���*�����1�Y�����51�,��t]��I|V�Uk�1�N8��M���jm.��]�����7���{�t�c5���Q�8��}��k7w��� �k��������yo��b3�*��S#�{U�N:�.�s�b|������Do��R����qp�1�mew���:��'L����/_�:����1)�$;T�d���~P��~;w��}#i�������I�Gi}2�V�����p��g�F����/��+�m����.|/k���@gG
�l�~.	
��@ B0/P[��>g�$.� Xy�p#lT�u�a��Xq;����tPl�v�%���N�H�.�Q)4���m�����yjX�UT�Oq��p.QV�r��N�D8�2v	���98����'�}�x��1�sy��X�o����P��-��zIy���E#�o�����g��������_�?���eI�R�H��+�zr��O�5P�-�]II^}�L�3P�^���������W�|}�c�����G��_1�����%�j�/�Y:�7��@[{��n�J��XbY��5i�l������Tud�~9��4[���~������<��}�@�H�E��/��^��~|x��
��N��#?l6a��"����~�	�-�V�+j�6�]��$�\���e�����g��C��K�y!�-����z=��>�~�B,��C�Py���Qv�RG|���;�Yws�]���(�V0]���\�F��Yu0 ��'(�������[���V�eg j�_�lE:�#��TL|-q�v�eJ��
mm0.E�N�%}�
 �on�������q�.��d��h�������������<��}���`w�=���������,������������`����o\���������LIK�Y�{��N����<���<�?����Dp�G���e������E_��w�n������uI��l������e\�����rI����<A�����x{�%�>~e��Wo�X�����zTQQ�g������o��:���&���x,��/yYq���/����]��9����P�2����R��Cry���)�J���|)��~�9f���]
O�uI�F�Y���������L���2��	����]��MCO��k���#���z�7�����G�M�*�zVTDgW����|�W �Z��6����+������i�dl#�����l��fdA=G��4�`q�z�J����}�Q��?X��� �dU7�2�G�c�r�$L����v��bd�0��2{�P$lp�O���|�?�%����N���O�����[v�8��=�&�����4�L>��4d�!v������/������~T7f]�X L���nZ�Z>J`�����S����Q��#��f8�'�q�`h~��T��U�~O�G����\�y%��C#�9lc�����?���Q�24��������<���Q5�����Q������������A�v�J���k���m]cC����R����mdQ�Q�b�&��������!��-r��>[�A�%c�Mmf�w#HI<>QnF1y4������2v�T�&j%����8�B �-��1
�����zmC������V��/0�9{����oV2R��L������23�^��Km��R���isO�E��I4c��Q�X��O�n��p�,�x�)���J��K?��8�5��E������/��!��D�e���{����XT��5PJ�/b&��k�8���(
�bIz�7�_|J�d��@�|h�y��@�eE���RIj�o4����w����=|R���=a�x��@��3q�~��������0��l
%�	�2��%��Z3t�#>����Jx��)(nA�J���	�d_1s�s��0�EH�	mi�p�?����[���1nE�`�{���:���
y^���8�:�Z���~��t��$u��~_�"��[7 ���%���Y�DW#�0F�k���}^��Un;���k����^��U�u;���_m�;�����M�����D�%�V
�I(�C�
KX��������,�E~q)f���8�0a^YX3\�<:�����F�V�:�2�.%��/��Z�<��?�$��Y7]�B
����&bY�4rg��KT�O\�������Q4�����#�N�<��jRR���v9!5�(MVH�P#����Xi�\�t#���y��&�v�v�*��E\��r��bI�y�0Y�7v���/��\�e\�F��vM�}!/"���g "���v�]wz��}/I[���-^f]���
�(����uW�_�2����&�bSA�W����s��I���9z�
{)��"��:�G���Z��o������T^xX�e\����~��n�Cn������4��>D��o8�������7����E$�V
;�C*��t����e^��n(N��
��q{��/y�Uh���~Jamk��C��!��	��z�%���qu�, 1wY}*u��5��X���8���|*�����y��h��Vo�o���[
9�k���$���NL;1�q�^*N�..z&E�3f�:&E��D=
�;ZU����O��;�#�V��PY����"?��;������r^���[�9\[zk4��f�Z�����m�����cU/:��9��a�|wsk���k����'F�@�X��"�����=|
���U�F[���mnm����/��F�����y��2BK�6��&���A�s[������I���}fx�yk-����������c�sT��q����>d�f��s��(e�&b���2��q��������\�lw����������}�\":�-�������bj��}.�Z|�WQ��F�Xu���W��AS������\������J��FVH�U��
�c�������-����������#e�N�lx��p)�������;��cTy�V�\�
��������S.��� ��rw���S����)��;=�����kd�$�d�������\�+e�,�d��Dq�7�����	���;����X���1uJ;�F�B�8:�5�J�c�C�H�ck�z���dO�2����
�=_�U��:�g�D�X��:n��H<���|�g��a@(�o�����,�RK�PbhZ`{�����_��P�����6$�)����������EI�@;N�o�? ��{i�]+�(�Wp���i$��C�Qbk�
d/�-��p]&#����������E�"/���!��=�4���CIvJc$."2:s'
*�f7{dO�="G��,�M��������5j�q">������?}"2j�p��MU��Nq�J��������1��5���3��-zS�x���}��Y6i�
�%l��v�C��S�E��qv���f2P��<���b�=%YT���,D��+ ���y��+,<��)s�&E�!I��Y��T�Gp
��=����1��	uy�5�$M!OS�9��iM}���=�l��p%��Ms�[���h
!}��j�i������(�����Z���v�.�n
���Od
z
�%4x"k��fK�����|�4���OFx�����R���F��SG=.��7}t_�EU^/��I�G��t��5��S�i���y,����� z��&�Tk��6<���F�z9����y\zv�dbxO���w����d�=����Z'����N��u6��Od~���l-�o����[�i
y)�CR���<9�Qq��D����(�b�C<{7r��&n
������L���K1K!���mE��=-�=-������V�r��:����C��b�
a��?	-�a8�'�t�Hy��O)�s>$�
��~���a;��V��5F���%�����U�>Xm����Y�F��������|����lm��Fi~�P�bp�~>Y1���%~�C���w��>��f���Gx���LU���Q�(g����FWh���Q��sG��������<(z32��fy�Pg���q����|�lv�E�13hr��Rir�b�d���s��.Q��2pR����2��G|�\���[�
�����Gi��P�5��?)Q��740�����B�.�F�D�|���o0zX��A� ��a-3�_DlJ��#��B�g�$��[��t>��0���=���9����?|�;2���q�io^&�8���HL�0��P���A�I��3}v��)�3L�?��3��g6m����N[-����D!�GlH^���Q�\��4�,(���a.C��Ad��kv���������1&
�Z��H&Y����I�I|t�Yb�i�����%*��{��.�"wA%�VF�I��s���O�)�7�a���l�2�y�El|��2>��>���7@)����(����$z:����A��%������
�l����2���o;�ZD"�!�8@4���1
�.3�0jyLuj7��Lw�L�����Y������jd"����uMf��(Sg�F�m&�>����=	7��K�A�����F{I�P�x�P��:Nh��.���U�'��%�o�<{u�a��_���t��	�����LyB�����u0����H�Q��H�Ow�zN$��������������r{���e�����%*_(s$_���3�
�2E�{�|�PW����MX�����F�:���	)U��R����@�6��ph�@I�8����
�?�Yy=��O��`�P���T����G��������W5�;���������N���t��
iFw)���M��%�&ft'f{��� 8��%�hKb�F����M��2�p������������2��V&�������A�D�@'������fq�-��\Q���ExR>'YR�)W��~&D
����/�X���|x�
|�����1�qOC�C���covM ��Dg}����|j���M#F�3�7�X���J�fX����]���/0�7[��^������i9���~��f�=-���#Vn������nI�p�R=&��.�<��A�;H�<�^J���G�D�+Q����9&�m�#y�Z8���!*�/��>�C�7������A�b����^oU#���c�6��n=5��}M�S�Xa��F�>H=�����G"j���&h����8"�[?T���q��l{�����G�N<����"/�km�}\E�����	N^����H$.�)�T�O\S�h"�)E�#�n����jr�`g�����>���9a$d����{������n����v;�j�B<����7�Ch��>K*����������?
�w�j �I$i����j���� �&WUN�PC�j_[p7LM�e\A�l�zZtV��%��Kk%����>�0�?������O��
L;7�.�F�+.n���3�<w�>G�R������;J�7'���(rQ>@~�y����;&wW!����Ls�1>X%�r���_�m���:h��E�kG�w��m���������s����c��i����}U����O�%�GU{�X�S^�=2�r��}��T���F���l�va����?2��g3��9������vc�����	F�'�
��?�I?^����G����s�Rd����p#��v��y�&|�lB��O4���i(|���2�9�[M].i��3��M`Pa��#/��W�'x+����)��kg]8����O�;���������z��k�42�W�����x�9�1��sT�������e��Q�����{�8m����:�=��@�T	9yR�k��L�u�?�R�k1T�q���c0����fUE��[?�t���IQ]��cr|�R���:�����~2��� ��3�]����1~<�_V��?���%�^��EW�`��&lqU��U|�Ut�R]&���kn�t�`�@T����lbI^p��w�Y�����"z�����7or9��.}
l�����j ����:F��=�����dk�hHdBl��l�|�
��#��U3��RL ����_��=;4�����%7E�t�!:�tKhYOq���'��j�������Nq��o5)M�]Yf��\�<"�:]bR����+2��9Y�1C�v��YX_t\*=U�����_��5��.��0k�����
��h�K}?����u}�Mt-g�Zj��K��#�Cc�����s�^�w�'(),����]���rK������0�a�Q����r	�3id�H����=����i��"�i$9�s�x!�cD���%A�}��#��_��Tr��n��h��W��W��U)YC�������&�N�����qs��t����.G�I�x���>���LS��E��I������fZ�:T/�
��	"9��;x�<�������Z���2��W-���70�4�^;;����$c��S|��l�1X���O�y5�]"X����Z�4{������>*�<�W�Jj�l�#}q�
�3�,�_��\*TDbl�tQ�;��y���_M$������}�R�,�����~�sa��%>*d*M6�#��L%dCY�s%i��)���`�6
���o�BN��5��XFZb='e�8�7�������=Z*�Og[��d$������I~���+*Z^��:�\=�k2�
��o���&�.g�N�k\DU^��s����=<N��I]�J�:�����DI��]��]��u-m�)�d�������v�����(=%���X�n7b� �NF�uKi*����	>��������q%5FNm���kh�s�b>&$�YipPC��a_���i7��t_�0�Y�+�1�X�uxu��&�Z&> �F�Z��F�����8���K������8q���6���+5�=�q#K����t��?0�l����/Jj�_#��dI��X����}^='*��\�@iu���0��2��8�	��_�<D�!N�:��J0l-_�~;��1��a�".Hb]��@@~����[\H�����HE\\����!h��l^�!���D��tS�5�`}�uh�88��z�Gn���~��T�Yy�kD�)�_|�7
@u`
�y\pg�|�B
��${d��`���W�������[;mW���P
)y�^���E����i�=��c�����%���ckR��g�N"�*�yepqF�6l� #Q��T[9��3�Qm*.?���uA�e��)o��i�#��6%�T�:��:@�KR��/Q���A��6T�g����
������9���TW^��+����cUG�)��-2^�����o[�m�����p����l����'4�����.FvJ6��l�{d=l=De���L=�'�������C!��)(�$��k��o~:AY6��p $~���������a?1Zcc�K�"��
=����M�bo?Xg2�f���S�����A��j���]���:m<=Z�H�m��F��f��YH�
�y��=72��*�i��w�N��
7������z�U��ol��w��y�������$Q���*�8��������ZMF3`�_���l��.`&������~q��;8Z������}��1b���%���4�5GJqrmbM�m��m9MK��A"�9bhOn���j���V�M+���I��c��j������@��7�Y�1Fk�D�����`�r����/���������_��7���s)�4��t�7� ���
�-�C�"]a�n�E^��,������t�( ���x�����������r�;z���1����xf����:��m
y�rHkoG�yY��l�E�j�2H���W_���c��/~;_���l��2�9~��B
G��3|��(;�tu~O�c2z5��_Qr��`{���!o��������AT|��_��������KJ��#6���8��(��w\7��-EJ0�V+���
]v�e����i����,i�-�&t|]4xG��&J]�@�N� ��.F��7���XU-%���n{��'�\[��f������MR�~\e)�*M�7}�	���10M�� ���3"��M�����xw��%f���(�{�2�c�=a1kh�QKZ������O�p�����6d�q������	vi�r�ta�s�^��55�/y�/�k~xb�Ex�@�.7_~�l�Rx��_A��?���BRP��#��?I.x�����J�����N�6%�O"F*�C��Jv,��l=��T�j�<����,�N�C�������W������|.�3��������S\����������W�����PmXy����J�n6ie���b��p�?�.��o����~I�t���`]�<���"�����'�19��3�*7����rghcU;Buw�����X���sw��,��j]�����[�:w����t`OiUa�������A�Tv<5���k1���?-���(�(��X9`�/���C��ft(���$���}R�����`��q�zTQC�3@v�)E�!J���<4j�w����8��4[�==�-@�9��v���}�v���UD�>P�j��;	Z��{��~�pk2�/p��Gx�4~�Du|���n�H�������k�r�7���B
kv������6�
9�����/�-+O���vz��;H�b������{�rX��3+���AT&_V]�W
�����HV�O�2Z�B
��
�E�ZB[[MX�&�j��a�������6��bDD��f����]Yw�<�6������i�i�f r���4rT��8�	b�}!
��$W3���l�tR6Z�J��p��|]3$�^Y�dh�Vw����o���3�+���,����@ck��R���������Yo��U}a<�4$n�E�I�9�w$��z��h���z�(�z��j���z�*�z����u���1X��������c�0������RX��,�����w��B�w�����w�!S_�`���`�w�c����MX�^�����Rn5��;�w�aD�wl5����w�t�X��jw_����e������;d���z�V3"��z��a�c�fr���1@������W:F��J���}�ct��Y������1�UW:4Uu���q/8������!������h���W����r��ey������QW�J��c:�#Np�!��q)0�E�R��/O	$�{�����3�T����������l,�
��V��V��O<G���O��Z��*a�V'E�������Y���,�A&S�gP��&�n�cT�c������z&v��Dw�*I$1���(�Q
Q�i�B"����dak����$�Y�ZJ��$����U��$����E�Y������m�H	y�>�A��"T��������^w"�"P9td���^���2P2t����}��!(�3"��3�z��0L���o��x�(��A��m=���>���)�����w�I�&�����i;c<wr�zx��1�;uUM<�>���_M<�1��K?�����/�#�L�-��H<"�|6Nn2�����i�g���k$�81G�v"������@Q��v>[�j��H�qv8����(�tN�NjY�*k�Hq�O~/��ea�g�x��2���;�f ������������q	wk{&0WY0�����O�K���s���	/k{B������B�S���x%@�!�5g�J�]@�`
�(4��ihgfr+O�����s���\��g:q����2�m��J��)�$��X��I8�RZ�r;{��z�����5��9Y{�]h�E���z:���5&_h��"��`����/������w�����|�'��<�$������.������`���?W��"?�U�L�EM�+K������*����cRN#�����Y��p���Q�"��N�=�R���m0������v��"�� �<>��CO��e������U^M���jli��;�������"�Qa��#���r�1$���|���t�k�������@O�������������E�!�?h�>���0��>�#���+7l��f�+Y8�K��1 E�8
��)�3�� ����5���f��zc)f���_}VE�>L���1f���j�Noc��3{^��3���������6&�N#�����K�(�;Bl�/�d��������/�U�hf��2/��v���1�h-�L�t��D�=&<����0��;��1X��w���<
"m,�F�������`��ym���'G�^�B�^(��N�k\�
!����3r�p���&�.��Bjn	���a���t�pU���TTA���[=�M��(���F�h"�Q����9�V��+j*�"ph�������m���6(����G�wgZ@B�}���HhY^��$4��ZSKH�(�����E~���"N2(e3�A�#2���+����|�����l��z~�����@bG1yS��!���.T��w�qBwqBgTY��A�Z�V�Z*&<�[���*��u��8�oh�s\�
��,ZP�*��p�^F"�j �<�������OB��#Cv	F��[=�u��Z��.!C����4�B�X�{8�s*�<�D����is?�����#jL��D��,}\���w��C��5��|��0*ff�����F-�KK��h��h�A1clh��}Z0�]���^�6����.��i�����A�nv�i�<E?yi����!��������
�����3�����������'l&��}x��F�,������@�L��g]+�h���(���U
�c���nM�+�I5J��v|���QQ��N��!����������������P�g���y��aV#XQw��XN�:��5O�qh����>.�E���4|��
�M��i�e�f�Y�$=����r���m���HKCk�O���K
cK��{�j���s��g2�XJ�s�������R�p3NvN�~��x#`��M�a�����yh?�_�Ze�����0��D�'G�$�e%A�`(����Qve�p���QQ,c=AL��v9��M��p�V0fO�B���E�j2�R�	H$��8���@\y��5.���>��t������2a���QL��pYI���I}I0/�h��Eaj���� �L��,#��B�3L��(5S���E�.F�`qL~F�Qv�E��gC�f�E�^�G6�N����0P�A&=�0#�I��]V��bD�E_�K*���(L�B{����I���Ao���o)�B���E�.F�`q�MY��K��`�'j6T�����6m������B��"���fI	�������?T1��^ZfF�=$L`��%��
�=���2PR��(t� 0��E�O�w���
r�}����1�f�@�b�
�O�����!�7�E�'(�d�7�;gi����Q�C�0O�l$�=Dbn$����@&Md��<��i�1��]�(����(PC��.�"�����l�����sFwT�/Et������,�i��������-��=1aFDx�}��[�V���������H������$��3�3���6��{_�-it�{,z��4���r������&#�Lv���Qd�}�9;[M`3�i�bK>~^}�5\����V��g�f,-�:��4Wj�"��5���/��%`�X��_�R1���"03��:��L��,�_s�n��x�V*���E����z_������������:$
��JWw���%S�����[i���2}�����r���n]�&nr��4����,t��/���T�c�[smh�&����jwA������<�������&PW?F��T�����w;.���(-��f.�X��:���s%H'��6;1JP�)��7�@��RPi�R=�j�b	�I��ta:������#���+��%L�jq1|S����{�C��.��L~F�8`Y���
v��C||���*��nI��*`�i:sZ\�����St-���z���.R"����#�N�2���F�����>W�n�WQj����v�n%�X��3�`�5>���m�r��2�m���#��z����ssM��J��YX�u��Tx���1Xu�v�.��9�.-[A���������V5��2N�CE�a-������������K�d_|���UQR1@�����C������Z>J��:�����#H1pu��o��2�q;4����C�^�jr;:+��d�:$Q�@���N����d<����<����ri�.�������4��P������n��.qt��i.�[��G�DoYR��,7�)`��q]B���%z��1r��
�i���Q�����AKa�F��k�c�D��Z�`�Ei��{��p��7�����
�E<m��=��#���?������c�*t���L�4!��I�%�v��s��� �!��G�������O,�����7����'����B���> 6/��I!�������<������?��
�T!��Bl��A�
f���X���^�#�kT=�t�I*9FLM�}����P�&T��eu&��������K��-4��)�QFs�it��O=y����}��&��i���j*bNk^GS	(w���n��j���!�t��i���^1?l��Y1g]K��gW�YU��L�K�S��We�8�d�d$��jf�x����K8
Cv}�.M6�a�N�5C����#pl�K�n?<���{���Q5�a���aW��Cu~M���������q�b��.��<�-C�m�gm��6�	dL�v=���g:�y#���.���������L����[:�>���O$�O�*p�p�P�5C�(���.����3�A�B��vB���!�^�k]��X�M�c�7�X�k��-VE{��T�i��,kZ�OK��gV���>q_�u�C�S��C��s����?Q�w	������)N�{�vM���]��v��h�
#�=6w8����,�v���P"IZ����E|x���6h����APO��<kf�S	�y��!�a�u=�O�EJFq��*G�R�^�HZ�,�t	��Y��; @�n*w��Xpu�?�������G��a�1�iAq/s��
����Jm%�6f��%d���g]O��w�������vRt���u����h��J��o$i��Hf9i<����Q����R�s�o���?��}��w��3��������12��~��?��?�`Q���k������$��������S���9����H�{zc�����O��q5vm��c`�LDH~����dw2hQ�$�J��{���z.�[Ur�����m���U?Kt���:4�O�}�������'�p���V�q@rJ"c��Z�����g7�h+�O�3.��2n7���7������h���M�l`*n�x�>��������*p�c�,h0�!9�h1%�]�����7�8�P�a���������x�MxwG��Z�wiby��:��x?��7�;W���f�Q�������E3/�P�=�{Q���i�P��l�B�Q\3�D����Z��g<�b��2N���s�X��.���M��g*a���M��g*�.����gZ����m+��(�Q�&�5���e���������8�����J8�=���Y���{�7��]�q��>��O`3z�3����s����=���y���������S�����ri�6�Y3���z�f��9Z�0����2�8�z�=�\?�9��8��@0Y
�w�~&+�������!y��@0Y�����}���.x�X��.&k
��+�2�X=�E����b����������������&��������!�c��'�������r��V���a�=.)�qv���q�7%ze�t�-�U�N$�s��D��-A�������<����[v����1���v�~U�MK��iG��'sv�'s��!��������t��^@��U�	{2�V?����b�q}��abFrL��|��Y@�>�w�'a'��j��%�v���a�o��
�$�8w���b����X_�jG\kf�������C�T�H);HO�R2����N%�!o�U�.C���HOSj� D��1��mx�6m���
C��rO��B	���GQ�5C���c��;����~N��_:��Y��ab��(�
���@���@����(���rMG�<9�
�>��9C~w�_��P��'a�-�(!M	!�eot(�nwX�5hW-���1d�����W�C�;��k*��5��Z1rM��_:��<�g)X�����1��k��w�j��R1��ox�$��qt�Z��%��yI��9��QJ5�>��[:�\�Z�u%���n����6���5 6UF6[�t��3��n��]�j����!�tH|�
��x�
�w�
�����F�c�6'[�c;g��D�Ws�?W�������������1����!�A�����&05
C~�������T-1?t�����Pm=�Zb~�.�~��.�A|\B����G������H�� ��.f"xXD�.�W_�j���"���=����:!3�F�X�c��'��3;j'*�L����V�Z{*�����!���@{ge�<�i�r������;���H���������U�^�1c��lG������3�����o�J��M��!��|���Fe�i��]��!��������	2^��pGCS����H��qO`�@�J��7u���nv�������I��@�D���'0�+q`����o7a�m�����I3��|@�A�G������;��*[/I�5n�t��7K��K�,���pB�W[�I�X��B�j��-n��n��!�;�]/TW]��O#G^�PO��%F�"EC��@[����oDB������%������PB�|���;�jg�2�\��%��6nF�.$mO�[_�������oB���(��7f:�!e�{��]_��sB����8�vx6!��4��n�q�+���4d�xn��h���Pc���g�|s�H�jk\
C�����za��#J��
�w����AY���!�����)(<��|K�D����,T����.%C��W�k��� 4Q�2`p_[
j���i�__��c���C
�!i�a�������F-%3�YB*#��Bu���c���0�=���G;*�,�q�_��A6t�v�
��6!m���e'�>��3�����,YmZ1d�g�}�W]!cf�
C���i1�M=*�,��1M2�i��9���1dz�0�/g��Y
3�wv��8�����sHV$d��-�����zT�%c�5;��#a���qh�2�6Lk[5a\���LG�Kt���B��C���%C�=�s]��!�t��Y3b��M*o#���!�A���e��Y^@�a}�Vs\�P$Y��w
������A�%��c)�eU$��A�D���")C�m�u��Rj��DB�����2yq�#.<ti2�v��"/��	�����?��Q���11`C��k��Z��>�\�lDM��g~�����^�`&�R����c�@m�!��9M�-4��9�_��v��F�E�%���kW���+q]��_�/�d�,����?C�qK�c|������/�uI���I���8�4��������X�n���1X�����I����"�8��UVQE��3�T�x��2���Q������%+f��~)"�$��$�5F�k|HNI|�+$����U����q��E���7=rj��O[��<	sX_��C���O�TX%�L�����,��_it�P���x����k���{�55���tD�G-��:�)��m-4h ���_��6�w+���{�i<d�-�pA^"
�$�ili��l��+�64���o���t���U��l�?�����Gg���z��i���k{z���T��}�S��}���=+C"q�z��������O	�(�\r6���V��%Ci��?"��������<=B}l��1���~"���)��z��JuLx�ue���8��KI��nl��g�>z|,��r�e["�r(3�4�X��5�p���t*c*�cY���s�.��9J�����X#	��"E��}Q��#���%1&�f�dB�2�mB&�����*��9.`��d^�_ZZj�?�>��iHT�f��"��[ieyE��C4�����u��&d
�����)��8-�����x`j!������)�����ct�37�:y ����TF�d&?g��s����R����Q�?	���:+~&�dP�]
g��-���[�c�~�=��Ca!���S�2D��?�������N_�$�ne�~�g��2U=1��H�#9��+�~{�Nx��`������Q4��k�J���#1D|�C��y����X	���tD�Z ��/\@��OA�)f���1�#��z�q���n�\�3��^��_�/���7����]3Si��;�����n�1l^����R��h�ct���6I���g^#'\�J�2�t��|cq�Y��\�gBNZ1��)���(��fXG��4e�����y�
�*��Lh�Q/����>G�������Z�}t8�.,+�:	��aqvd���������k���w6���*n�4�<�RL�$�R8�N��Fjq8�Y��Gw���T=��7�v���m�].
P�����F�2EB���������������).�b�u��S�*�@Q��l�x���D����:������1���L%Bf�]���K%���)|�0��e#yR�$D�p����Gt�.�@�=+������24ly!�	�f���D����g�v��B3��u��T40:9����VD4���&�5P�F����������d��Y��:�H=,w�j
"S)r��� ��>:N������KR������k�|�n5��4��������t��w���5���j��>_�/a�_dC�W�����f7��|��o����|�#|����W-l��N�9��M��z�W/1o�:���G"Mg�T�����i���#��4�=Fe����c��\�KBp�_�Fa��
���$�"�mP�����g��Z��{�2�L���A�[S���t����������&jH5�ze�`�����QY�������� \Q:}�	(������7��/�9��$3��L���0OD��1�^u�y~s�*/�i4�k�EE}���M��T{�(�yI��	(��XqH���+��j�7n}�^�������Bz����X���y7��m��E8VG�����1C^TE�MN<��R����G"��Uj����O	!0����I�f-��������m�H���-������@�^���ls0S�ask�2	h)�Mw ���Y�����nm�k��e��]f�+���'Kz���7�Q_D^!��l���{�����2w+�<'e��S�����������-�&�������|�g���H=��C�yk��J5���x�b���,K�����(�^�UHO>�����S=�KAr�������&��r��pJj(.���e�VQ������Jm) ��2R
����c
0@q),^���|c���r
=�K����.���*4����u�!��]����!�KGU0\�T%��@gpu��-����[����z�'R[���k�W��u�PR�X���fv�d��������_DM��w$?F�Aii��O�@7F{)���8C�4��;V�*;���@F�*��OM���Z$3�`�C��>��.���(F�A���;D��QI���f�X�"�`�0/�c��$��VT#>�E�Jqh�o�����;g#���?��~��r�(�]>���	|�>�-Y�{���8��2��e�X�i\�_�
V]���
X���Q����m����\�e��k�Cm
��a�n
r%~krX�w}�cLFys���lG�j~�Wb\�$�De�]���X$��=����$;�w�G�����p�r�H%:�toV�����>n��� �H�SwGQ�b�8
��C�[�[��:�X�����J�r���4*m�m:���������6	8��k��1���
�h����������:JL_H����K�����it��~$�V�'t��sR����UHNQ�IRc����R���?B�`�)������i8���>B|�&���=�M�c���O��iEu2�8��E��&�JxM�}�w�Lt�����~OE`��J���"l%�6��\��b���{�����h��i���U��m+�}���{m��)��m����{}��"�"N����c�7�P���Di������a�%��R��4d)�d��v�A�)����X��`�8k����j
<�v���v���h84���R������G^o�����Yq��-s-����\Q���a�����p8��F^Z�G�/����n�P�|-�_����R�IGi��u��^�@	5u��p]�����?��;�����n0���l��H��<���B!�2���Vi���T�[�����!����_`u{��
XY���<�u�=j!�-9�cP��Zj�uZ��P����g�&"��=Gir�h�V���8�~OFz=�q�M�k�oZ%p�
9������\�����	��yR
IX��b��+�S�T{���X�j���i�m6M/�Q� ��Q����<�Z	#w�d�C^Gga�p�������{Q��f��9tH����,��R�ZT$���������^K��a��q��q�W����7C�<�������(N�����?���~.(1�y��"?����A���ya\�+{��Wt���HE�P�C�:�o�)�����n����zK�Y�4�`EF���5=j&��L2����!�eF��dP�/%�#�������[}yx�/��f��+���;T�"�"�~�M�%��Z���$:=-�p�ELl�v��>��;0R�=-�]��@�8��g�az��4�f_H������0�n5��J��V�o��J",z0���������R�'5�p��,MO�����#~�u�g�>�Ug�P����%���7��C�:[�{��6���	!�+j2�_R�6�l��sW��h$��2��$t;�]���Y��a�]�:�5����n�[���[*���,���a�N�����FX�y�vR+�s��v�#�7�����J}	i�������R��_��_���/���_|���*<������df���U���R~�1)���/��o��"�HVe�3����q�v_�
w�����������<{�����h�Ne�I/c�k��l�����4ODC�n��������Gy���(;���IRZ���[����3s�7���M���!�l�nR���������9����]����]�C
�@l'7�!��v2'2�T�s������~�b�����n�0f3�'a��������e�n^"��aDl�����;�+�
S{GnArKF\vn()���&=���9��	G�Z@�Cl��Ak@b������E�J��b���zD���`����Z�%�Q�H^�����!�jL ���FS[A���3�������'m7�����>�y��V�;;�v0�l�
��@
�N���x"0�3����1�!�M�]o�^�L�c�[���2��2�A����_�������V��x�X�X�u!+�.;�����`qdD(x3�,�c�`|�%�qO�W	F
ch�b$C��'|�O��y�v(*T 8��>\�b���Q��P����;��������)��\-���Y��J��4f�lz�����?N�@���5J
Z��C��
[@�V���1���(�&*���������-.��"(PQ����5���h�/y��&��C��"tD�����^r�-�X�%��v*�iBE�6K�f4�P��P�6X�D<��v6X����J�����5���/����*I�K�,M���E�M�u�n;�ik�����FpA���������8���p���p�d����������i�p6��)MC���Ao���m�����a����c1P��xt��n����v+�9����k�O���L�����~o�����p�z����:xB��v�����#
Kv�;*�Z�Rp��	aV�rID%1��-�����B+�jd�����\yO�iWT��
�/�0��|��*%�0���:����4b"���!;��AN��,���}#���!��
�����(i��8S����)xK�
���$+t9�V���(���M~����c/�v���-����:�;���i��k~��R1l���J6��%���R���M0FX����<zg�;j�m��4;�o������nx�h�����!4�n&����v+�L����N��U�7���mg�
��u�Z��?�rw~����k����+�@S:jp�����w�^:f�Do�4G���G4��80�R?��������B~�����[�c�T;��O�J8����@�8�S�l����BY�e�D��A/}7�i%&���L
���$yFK2l�\�&�h��5LfkI2�J�E���]�f`\J�>)���]��-J�����I�4���Q�EU���y���< 5��=��S���)�z@��0N����1X��z��j��(��Oh9�X���<������������#��n��������Fo��>-��z�:�y�Fp-��1�[C��t\�����������)r�g[X��!�������7^.]�K�����.����d�������Jv�����e��,�q�2��$8.@��yI�|��4��p���@�����
r�V��w
O���#�z-kX8�w<qH��2J�X"Ns{<kGjTx��c�8�]�"�%�#�4<�J��[2��Wx7L'�6���%b�!<�\��jy�n�s����Gk~Y��U9v:R��=�e�4���2^H�a��N0B�q�
�����P'��s�
=<{�p�3��s��Zx��p�f�9����3t�h;��������!v:����]����x�,.�x6�`T���ga���)��:[�]�0���h���b�K��q�16�j�
�5�|�`N��r^�< �:()�g��a���%�(?6����>7�C��tv�6�����0�d�`���C��>+TIf��
�NIQ�F�'!�CBk���b�5��h�C��)9�������Q�9�x�6$+��<[����+$Z�R�?����r����%�3v�%���3��dF�������cLnL���\[������VW���z`�� �X��jL�1bZh����m��v	����#,j���~�S�e�'��n��d��r}6�����P���s]��Q�hZ2&
 T�"f���_EB����[� ]W��u���	tL%�|3�G�c�6]:y��%M��a���9C������q{(�n������7m���-{���6l�����1���U�����fwL��P1�Y������.�����`�A�A�"�o]V��XE�t�vg`�+�+��]���N�A��Wb���;����r��*v��w�.��u+����%����Y����&���`�6w���A��"��<�E�4�_��7>��H�%�AB`3<Jl{����RI�B���K>[�-a!9?U<N�e�HH5IXq����
�zy������lf.i��1|n�z��!�����������\���iz]WA+�)#�iT�]Pz8����x�������Z�������5��,��������-���
u0J&����,.�{��w������������'&W��[�5���C���� ��L��y���+����d<����eB�0��yJ3U�IdP���5�yp�>�"�������NN��
Df���; 6���j�gW:U!��4��FTm*�(Q��w<MiUO��s+�+�)��KYo
�w��)$;�LP�X���6������2�u��?!�V=����������������fe�����Q�����U����R���,Zg!���Z���:�+n��!6�K����c��f�o�,��Y�W���[���R�&��5Mp9�:������c���n�D����B�0JoqPNT]����9�)2�E�\��3�8��j4<����K����m�N1+���/Q���n����_�`l�/��.��5����c�(�/Ek}�?�9�t_M�h,��9iS�5��F���,x��������`��nK��
]�2���0��F����"�P4h�����n�c+:"��H��A�v8�
�������
��+��fq��z�YA���x���������|TF���]��\VG�`��\�3�D*�����;jY�� ���1�����D�����:��wg�x_�}��2��{�������x;��L@9����s��[~^T��w�/O�(���1����p�"��z�� ��!�Y���v�/��W'bh_<t�{P��US��3���aT�����C�VdT�����32�'2�yDF�Q�	��< ��(�|�t]�3�O�������
N?��;J�x�_���t�D�'CGx
�����]���:�01���l:���TD������e��o�v����P�y$�m�f���w��G�AQ4�t�nA�@����R��0q.;��0���jF�������[Z���s�����v����R,��pv�d�1"
g�&�(�[v{&���b�Ri�Uc!hX1P�g�|�_,2�����O��qH����jZ�fb<
�sE�R$n�����Z�D�a���Z
�98�����q@y���d���<�G��=�aRO'��2�rv_�Kn�a����wAT������6�{4��v��e��6*���"�]�NVG$l�RhxP��d%L��wc�V�j���K��{.��bU���K�4��5v�0(w��(��V��*�X����/0�Xe�*_�����j{�Yq����opM�����1��9����fa�7����?r�k�������]����A#�|�J�D�/����5	|��\��<���q�����Gp��pd�GOIo�G���gz���������%��|x���Cv��~���F��V��c�'����C����||�h�u�Vp�jv"X��z�pS��(��j��f��7��?n%����T�B������u�`������"X�g@[K���a����}����Ayf�p8.�B= ��b;C�XHu�,��@���/P�U�!f������?�w� �}:v�C�����>O����IT>��P$W�>�������k�XX������L\�m�Za`o����h?��@�4������[�^�1Q����:&������
|��(�c����j����WU�@O��u���1�^�su�jj�B��f���1f�K,���9���<�jd�"?9����F3���]e��Kr,�:���WMd���}��S���{L��^��2P�JJtK��=W�E:h�%�Q�4���=���=�q���g?�)<
7ca�k=�ZG��Mm�,[��L.�4�'Y��E���Hg��E��b0g�G|�����]��B�5����
*-��]��J�^H+,'�1)�1y��J�,����nvu�t�.��=�).�[q+�N���.�E���M6
���>��S��M��t���'r�X��
A:���W�j�Y\�q��]������XZ������)<ZX9��
����"�E1�c�ll�������QW;�(������4���V��C�a5z/�z����4�����G�!B=x@����+u�i�$0Q�Y4���Lg�+�7��C�� �00���������v�iA3�%	�X����&5L!]��������*���,�tMx&g���S*�**�����R�s�>�$X6�k�A.�V�0�9=�L��6���+��[��N�+5�X�t/Z��|[�$��p0��+u^PY��h�QZ�����EN���x�0�H�XV	
��5�
�{�;���7K���I�@��${��@_[h'�P��>]�i���x�n6���e�"9�iB��P�N�n�
h������v�)�O��c���!���bM!N��;�}�^^]��}� �4W���(�^�R����Uq�=5q5����-��_#�Xe7���h�
Hv]h0Y�g�����`S�$��G5Qd/p����	�8�M���PZ��rU��'o���!C�w��Kv*a��-o8�9��N�l$J��Z#�w8#)������4	��a��Z��>)C����Q&���n�=Zf��&���#~���,~�����U��*�r7����hz-�xw�YV����)���i���W��:�&kM���8^��;��s����Ayj�E0D:��_�+;��������()�6���I�r��6J��R�\�Hl_�@]�0t1��4����7��ow:����\u����5�����{6�fq�,�<�xpF
���,*��B��"�Ya��-;LU%s|���dQ�����Ebh��EpA��	3��p�i�ao�].
��-f���:g�a����2�Ujt�C��O��]���r��i��QpKR���ij�V4b���O]���cN��]
=7D�)?(��x!�q���Vvo�|�v��r:jI��d��"����ce�����9f��������>���!s��_����V�������z:T���J�oQ-B����1�>���gN�[u�S*�����:�
6K��vK����9�@n[_r���u����d	�Y��*'��m0gi{����������'4r}`����21%�����kf�>���g�
eI��S���B�i�g�u���4��S�,_��DGC�����)���G=6"x��b����_�����{��P�K	6��y��3l(h�s-�}."���n�!��T�wOI�*yBQ������;���e}�7�[�T��	|����DBYW�y�A�y2?uCB��/s^%�>
���`�	
�A+��\%8�}�MqzlZ\!����S�s���J��r�|���3Q���a;�.�&�����44:��D�*RwM��)Jx��R`ej�R���q��u���s^��8D�b���O�1���zKa�_����>9���.[6�{��U2k�,��<\	�6����xdT�+����h(��������b�����|&
i������9;j��1}e4�����=4��js��L���&g���'l�j� ����B�4�����/�`���8)K�$����F�
aSp��d@Y�Md���F���WcY���)��t5�#+:6�`�����C�Ma��N��&��aSX����p|��,�&��Fa�ST>!`h�}��<xJ:l��S� ,��1V>BUg�g�R$�-9D�����*��U]�0�Y<K��D�i�U��"�r�9�G����.-9,��!�i�*��d:������5
�[�tqa[�8�\���H����2�Z�^
_��9��M}�z�D�O��vA�%1���x�Ud��e����,��-�V�`��j���#�}^��Ve����
���UF:��B`�qS�����*n,)��':*�O��:���Y���v�~�$��D�Ek��=x9�����7��B���4?�����7�F��c(��/*Jg����r�9������G$�tqB��Up4�g�4��k�{1]5 '"M$���,L�s�r�~�1���V�`��+aY�j���kW�+v-������.;�J&[t�o69���\�������)@����*����o�����Qr�����txd_f��|�+��)���
�\��F�%-����I��� �fD��E3��b���SP�j�9C������5�����Qn����a��n�3X�Ug��O0�t'����X
��~/u�lQ$�ON��,������DjwH���MAUg<�7x�55��-9.o��>^FsPL9��v?bj���$4����a�>��)��EL�I%L���:�0���M���4��C����������2����<'e�H�@�=MU�Z����:�������/�@���c�B$QE�m���g!�U�����9��KB���t=��l��S<l�>!�u+��l�"#���-�KiH�� ���6=�_�;pR�a��;���(��
a��;���(��
at+0�w`E�Q����'Jt=�#��F}Q��1�<�B���c���!�� 8NZ�.Pr"d������
Wg/�Y��\�������VRTM�.��3�9�.>��t��gw�s�]�6��	�����yF:G��7��������g(��yF�L�s�e�F���5A�i=F%��W)8�������$��:�
s@��>z��4�=n���L��8=�
��N�����UA��)����9.����dF=�T�0� �����U�}U6e�0�6N���4���;�bq;���kET���]��FX}(�4?D��P��KD>����Y R�
}AZur�n�@[�<�)l����X`�D�+8L�W���?TQA&�t�jL2����$k��EY��N�J[��������\"W�k���_�a�Q7���dd�q�����M���V��c�[��J��h_�4�:������k|�^����4)^�A��N�����ty��x��.I�U�7����8����$�_K����lj�O�.Y�0�J�A.a�4�Cs��R�������>��	���vq��0g'�Uh,�"
�HH��l=(J[Dj�E=��v��G��P�������34��$�,�[u��F��Y��T^��,<����s�����:|�>��{����uW�'z��Jb��Hg�D9Sw����w��Biv��O'�S-�?A��
��CSOd8�oe�=����\:oO��H�h�:�b�I�`���4�_�T��p����'!eb�(p6��Chb�#h�,���8%EIf�����T ��VxME�.s6�jia��[*p�l�~�hV�|
9�v��II;	��$�:����II��aD�+}x��q��umv��r|U��y�9�C�����o� �qm�k?t�|���}wy/$l��Z���������rLO�iN�#m\� �EShk��B�,�;J��g����� cb<R\J����Hv)�y~�c�������
o��(�y�1E��hR�|���>��St�8�B*6�w��\BV����8������
��%y?���s<�i�jX-,,��T`���N+iK!����NI�TS��������c��YT�����E���= �
��0N�T����c�'���s\��u,w��������-�u^
z�I�g�)�A,��!��Z+{��������|��F�|��r�|K�b����V�9��e�i���������<�����-��1��O�-,�-#��U��F�
	(a9�zn9>��hyeB���e�H�O��K�a��[��j��
V�����B����C�%.����+�5�AW^�4�a!�:��������c\����#�'�$���c�����u$�{J�b��n�a
J�/Iv���JZH^YE>R]��tZ����apOW�4���a ��*�?�hc7>��a���}^E���a �������*�]�k�d�/�j���6�>�������\V�0�{�tL\��>����zh�q��K���s��8��P��>������A_��BC�i.���*��z�#��r�^��
�.h�N����l�Q9B���D�y�9V��u�-+��6k�E�vqs��"pv�����kD:���j�U
k�H�j)��h�����}!�,�T1'z�S��C��n ��X#���P�e /��:yN��k���k\DU^��"FF�oyDey��s�>'�pK��|U�9Bq2����(����r�m���H��	9���a��
�O6D�e���L�1X���J`G("�����u�V\��������z��q��y��4��.������jP����Y)B9J�k�F(7������p%;Ru�����
p����4�I���o�����FX�6|AvRs����!e)��p��;�����\
e�\��]�sP]����~^l`CU�=����U�W��<�(Zr4f���s�O�|�����"���@"gq�����������Q��6��.���\U
���UG?5ojp<8��=5�A�cGT��B�'�zG�p���l5��C0��
O�q�8�fo��\O=5sJ�B-@��}U���\v� ��`#)%��)r��C@�T�����������f�"��Z`�.�;	<�����xB�'<*�
B�_���,"S��������qT<\��zz8F��,
�y�

TL5��[C!q��S~#X�����Hh��@��KI�"�ME8>��!���5�K���(�A
'c	��$G�W?�.�2���1W?k��M��Bp
�La�5M��^g���}��}����C���i,�V$w�Kf�BJ&���%�?���J*�DT����:�a�Q��z��
�lV~=�QYJo�m76�����n��gE�mn���f��Go�y'n�Mh���8����u���e��]�S�����8)�p:�N��j���js�vm�eq�qN����
���4�NG��������������$bpk1|h��j�`��d G!nE������o� z�u��c���@�^c-��x+d?
j�P�f�@C������G*4(Wp���^�!�[���s�>�%�Zw�A�I�q�+`�;��4��.�[2gll�-��S�54>��DX9} 1��a^/�R]�=�y]�6Fx
���O�L�_C����tr��`L
��n��1������\1iS�s���]���i��v�v]7${���'�����. ��������%��h�����{�4���y��"�q���>��E��'z�\�����"�L�\���f�r�������k���N��B���X��s�����!^��i^Iw�v{��v�d����N���&����d A=�%���C����4{S�u�
O���I����f�O.���n��@��s�P�?*^���2K�?�dV��+��6��S�7����-D��z�ZU)�Y��\nRhs�������# �R������q�����&�)��)����5��a3>o�p��<9
&���M�odT>>@)�(���gZA�.E�}�P��������������F%2��$�L��#�rv_^~4}�Z��R�M�	����N���G��vg�|��>+R��|��M ��.�S���fO���@p���}q��������@T�w���S1R�&��_���	��<j��k�S��?d����JS��`>�&��IX�nV��.�VbW�+�c��XS�v���{ ������vL��8�����;�feO[��A{R����1���61k/zR��C�	������F%�������U�N?^!c<|#cR=6�CN�-�59�����9����s�O"������O��X~����Z���?OC�+������
Qv����$uh,j7q�������CS��Y4��,��V��O�e"���z~��r��J���X�U�c���K���H��T���x��%�s������9����VG���o�yy�B��K�e�m2]�bc$|)�8^�X'��_����}M��"��BW�"�����d�P�+Z�6V���GD��HlEr1Rp�<�QV�t���Z���w�c���T���@w�N���x:��g�1��H���i�~�dme���*A�{����[�x��
����VM�T���qF/u����pW�zF^�">��yWt>�����n{GwZ�;{�0�6<�l��Y��j))�����5&�
��:Nr��U2��"&�L~y�_x�<0�I���%�S[I �E[P&�HolY���/��#[�m�4k[�Jn10-�%����;H-�����D�j���i�fyQH�L������� ��m
��
�(a�	����E	i�Qj�����u�e�,%�-��]�U��7D�gyp�ls�pMb�8�|]���d7I'���i3�f}��K�O~o�D�=�wPih�U����p"�~n��O��)}�*OFB7��~�6��f&�%��;���=�P��y7�hS��*���N�'��E)�F�&N���u�]o�O��{�5�N9^�.�"6����.��If�o&R-���������K6$�d1�]	\Q�Y��2Q��%f�:iyz��dNR��d�7a�����>1�U���-�s;>��N��Z�`�J��1��
8�F��)�Fw�*��o9�G"!V�4��Mk��(�z��C�����Fzady}� j�������I8���>�NS0Z��"D���J{\�C�c�!���5|*M�'z��U��8-U.�d�\,1�^����\D��@e�y4������Z��[og��N7cD��w;� �b�b���:/���������4�����"z�A��!K��&�W91����,�����GW Nw�>	�!K�&�'�1�(�:}���E�t�O(���n�������\C|a�4L�������I�}�����!n~����n���p�8�����cM�p$%�:��^���vC��F4Q�����S	QH�<�x3���`H�u�Z�7����'I,�o6tY��9��^�JA]����3~r��3����x���!��E�n�X����#���,R�������v�$�J��L������~������\=����Pk| �/b(����v_������x������=o����� <�"`�D	�Y����������B�'�������+��`VhpmL�����"c���(��c����������G8+����;+g���!=+�������o$&)k;��nV(����>:��`����� }_���������%Co���1:T8Ci/	S�(gx��?+�=f�-����&-3�S��AW"{Z"oR,�M���`�-#G*���A���"\�h�1FMzV��b?i�����/+�����!@���i<����4h�c��o�K�M�2�S���#��)unUT�F��?���:��������Ak��[�T���/E|���h�=X������d�h"�(�p�z{��(;��6�����;~?z�z��{7&����|����4N��q:~	b�5�4l4b����%�_�v��2�$b���O��@������ B�q�
>�8���SLoA����!�%�4�2`S�Tz<���j��T���I��gW�iu���l��SB�b�/���^ ���8���X���!Od�������,a=��qO�b�G���H�b��Q�,���<B2��^}������N��U|��-����_���f ���S�f�z
����$2�[��o�����/jp?���!�6��\e��9uf��>��}^<���Z~��tD"V��x��9dD�q+�:	$F�>*N�+��S|�@3������M*���d=X"����+`�?v����dN��?����iL�0�ICtp-�����	�{����Z[�@����3�!����h ��d��N��<U�x�����?>��sO"<�| ����j_���������}	j��������]3�5e��^
��XVkl�����%�B�8;R|X���ct�p���t/���M�����S�*^�?��b�s7`��o^4��+xX�7r�c��T=���/�G�X��49g�2i�������$b��/���&��N����L�.->�J:,}�P?���x���j���t�����KV�O�N�����&�� ��_�>�'��{X��?����~���!EF
�3��RS�A5�����U�����A�%� ,���/�'p��c��il,���6�k��nB�<VR�����MKx�f�`��a���9�k����&����s�OU�|&�)��N�T���w��2�h�?%���b��D������T�^�V�\�I�SB��cR�������Z?R�:�0>V��,�b��|%5���!r(�
s)*,�j5�^es�����C�,03>1;�����������':���~�.X	&��iLCb+P�K���=4�oC�B�6s���x���}#;�(�`VT]��������	09Y�|�+���������M	t:+��s�������_A�eL��������_����FW	'�u��$ G�u���_���S]���M��#�IA���|�>]>����~���~S�o������7|v�
d�l�*�?Y�J����V�x<�����`c��.��o��z���"�_����V����X�v��k����PY)�H����?���_���~cQ��)������L�Er�$|��d�M�E�:�w�����a��8SW��~�������������{����[�;��>�<�] ����n��Ac�`��m�=��e����f�����[�?a��7�j3�q=��/�b;K���>e1���N6��s��������v�d'u��Q?6a�d��~M���E���3�4�o��u������I//@���jng����?h�c�'�B����&�,_�^��uI�O���d����c��V��S;��^��������d���{:k�������_��_Y�'y�H���~�����|�2�"�7�Xy{������+�GQ6�`J��������^7O���������[�!����oy���]�3��W���6�[v@�5�M&0�,L������o��-^\~�%��]�/�%^�|�5^���������gS
A�yC���E���������e$�0��$�p�q�klMN���������o���7/�x���ko�����bG��e�U�l�ql��V������oc.o�Q^�t��Lrm��a�Jw�J}�8�d�E�#�� ��"a������?B�/�������}��w���������i���=�nLwC��{�}rm��v^�"��P��L���A���:����~�\s�K�*�'6
�2��nQ���A��}��Gw�S���I����l��
��bK����J�An$�m|�m���������l$bS��">L�%d��P�^���F���f�`�@oL�@o������G2���"��R�2�(���H���;�	z��'Ej�d` �u����av�����$zTZh�*����W��X0��.�~M�1]%�M�g1,���I�3�X��{f����#���#m��U�'`'icb.7��-������{2b��V�����@��/�%�O�sL����B��G�nq\;���
:j��h���������B#7��
�}RV�a������w�S��}y��U[g�������Zx��z�����s*�{���s��S�������q���R3������1�%��j�F�����7���[b-�v�uC�������t�D�I��_�d�H@�^����k.�P������������C���;�/��f��p���}~������o���o�t~����}�������?���o��=4
I��e�4���f����������JVl�'��}z�	�`���5.�=�-����������t�
�s�}Sx���9�5���N��
���C���(z�~G���pT�����������_�b�(���I�h���������3b���,Chf�6��ul���f�<�7Y���m�L���h�ln5�D��X,Q�m8���=.��	��kT���Vg�iIu����G���-�Q���	@7p��5o�P�@�F78�������o��74��DW%?���
��.vO����^��f�����X�'�����_pv�~t:���I�@��/���|�G�G���2����bm���ol����5v�p�p���=��=��=�=�=��{���>1+K{�=���j���g�:�h�y���������5�@��N�#��������t#����Im��mdn�����/���>lx�c���8���0�����B�@5R���9p�li
Fj����QG��7M|Aj$��L�p[�_����J��9V2u��|�`_I����q2���w���!X�=�#����}��1����H�y<*{���9?�<���������W��W�������-�G����m-�'�I�>O>�����7���`M�]�������g���8���W9���_I�g?���oC77&_x�a1']�_����+�y�^y�}��������|����A�:��9"<�v"�����������3�Z�GR8�J���+�:�l��y�t���X�Z7��M�ard��k��/����-�Xd�wC�y�������~�����1����g��&�g<�oM@�lB�M������6�qd����WT0�H��6$�q��<�3�2z-�KjE-3������z���}�{�{'��k;��:�q3
�)��	c�/�R{�86��K��&3_wd^pW����������#�������i:[(��<~�����*�K89s�8}����n�R
��t���%
����������:��F-�/���B}/|��iH��[��$4��H�?Bj���~z)2,,Z~�363-������rL��7��~�uOZ����7t���.R��7�$ACo��������H�������]�"0i:��N\�/�l6a�;7�������_����M��\��,�p����j?E�Qi��TDb�mT�T��K
�pU�����*s�F,��03�������#�Y������A�"G�Y��������������s��m�TfW�<;{G��F�]Vi"@wS��F��q����B@"�*��#H��`�
�,����JP}t&}�})rL���F�dN��;�0��<>$`+�X�V�������!����~�`Dj����_��X<�B%�����$G?�����@����Ud�N�c�7���z6L�,`E�	� L��`��5`j����tb5�2	��X�y��8fw?�*8��]�=�������w�/�����4��ph�2�*�?2�y"��`��]���v�x�c��kwRP{<	�s��=9��c@��@+h5
h�vh��.�\e��ZU�V�@�W�X�>o��O��=e�,��\ �d%������$!�CP1�UA�h�����0�j@i�(�
�V07�lf6��A������j5�C_�.q=m�����0��������*�������f/��.s]���h������Q��������'�X	hy^nh���4
��v�tw~������W�����a���{��&����#*�K �C���d��o����!F��0��+����KY��(��A����w�{��z��#�!��+����$�����������n<A�K!~����&@���>|������2tS�n�nUT��x��qF����O�t�z�����!�|_5���0\�R/���D�}b�>	x��Z<+I���1�L�@S@2��
@��#t����-hg��|�����pG�Cy$P�P7(��3&������������-�
�}��.�c��]�Wa�l�������?�b�o�aF'}��a�2 �
{G��=}y����_��sx(:#6����9i�����������v������M�����$�����`�+�z�&�dK�O|QI�X���9D^.�����ct��<�]<���0�=�J�W������1����W��?���n�"�w��J��O�Eqb��8���8p����4==�]7��g���Q�'�������e�[�ai-��Kh8����������R����
P�&�R�B����	������~"0���?Qb7rw�rW�+A,��Z�=�-�o�B�M������Z8�Ed�v�^
~��C/����Hm&�QA�i�F`�a�	��(�Fa7�M`��:�<?&I��B
���`�E���`.;%����[O�ya���YkJHJ,0��M8ln����Q���W'�'�G�} �i���U���AP��$��<#v%���+���;=5���7;v��9yu����������M�2-zR������)�8���g?����~|�2V���'��g�z�'�ze��zgM�����A������!�\��u�
.�P8�>�����������Dd���uZ���*�i��
���^G���c2���(�����h�oU�O�*�{��j4���~_�����]z�{����T��Ayf�}�%�a>��=�2��*M�A�h��oz\C�z�zCpm��R��Ou��7h�`��/C��{NQ8�n�*�(��E��� ��G�L�$��7�V
�i5�����,�X�A��:���K�u��*W��8-����^:|z�[9hI+�J��;��Q�Hz5(!4p��,]�f����6�AX���%��O��l����7-��a��	�������5�����2���w��h�����I5��
���
����=����RW����_����4
O{=�`����Q�W��g���@|z�>l'���j�L*	JV�Jg#��F��%��F6	�7��{MF���$.�'�Z}�Z�Z��? `�D���b'������)���4�	����@O�� �����7�y�ND�~1&��Ju={f"���XG���f�e&b�����H�G�|�8h�4t���{��+���'��������?�}o0���f��"�p���&�����?�$���&��%��in&�8M�q&� u
.�SP�H64�S �"�9�m�cl
h�D;�����9	3p~����������I��K����)G��U$�C%�k�����*��\!<	�"pr�f9QH�,�?���>�0�Y�F�����e]��'�V	Vy^��"��������TV/E_���m��O:7����[�q���-R��+O�Q(��(��n;�qq�
�����������l�J�U���Ul`]t��|��8a��t���{��"K\��
��Ni������X ��y���Q[�B��-u:��9��������t���������_�4��H{����zC��t��( q1!�zYW@H�#���	�c
$�����/���G
��|�f�����W��C�Am �P6*�vb�<h����*�e���.����+w�N�-
�CA�x�T�-(y���0�����$h��6v��j8���6v+T����'=h��d`�[o�A%��%-��	�)��x��`�����{I����5����g������{����.f
�Y�O�>�������o��']�Vf6�E&��<nI��J��)LG��U�u����G[�-n�����z�%�����v�+��H���.m���F2�<<??�;�d��dM��a Y� ��*Y�"SF\_f�k_e����o�@B�BKL*���*���$?�].1����\u_��24��DH��d�W.a���74�c�k�Z����wR�o�O�
�+_I�@��W��*5���D������\gbj�.A�e���p�0XL�;
�*=�$C��Gg�48+]L���'����{���/(CH-��F_4����._>�_f�����
��}�q/3��	���[�L��������z��+��u�g��{weZ��x��A�S
��[�����|k�*c�e��Z�a������<�]!O�TZ�#��\NU�%d~��[�kmb������?u�����0&)��uy1?���VVw:�������A��y�9�<~+\Y-9����c,�dT�+��:_6"�]<bRl|������bCuf�I�1�.!xP�P���E�����*R�|���6���u��W��G�,C�]\������;�F��3q�Y���� o��)�7�"0�M�	~\��|��:��e�\A���Cq'���^��b�e.6x|g�W���.�<F5>3��|�y"��H�#��1�t�O���I�c�������J�F{����)���,�(�:�G�3AXz�9��5�vX?�X�����@��M�b�$��8<5��"��!�CbN4x��,w���zUS2'�z0]wc������Q��y��������p���������=+��L
�4�C?C�d�y�L�,�bsuqy��9<��VHl�2cYl.RY�km)�����m%��dr��rt:����2����9���'=t���Z�xM#�f��:`�3t��w�����n�W�~���5u�������Q�����|��R��^����,Y�������`:y/4�����?��[���o�
l�$�o���;�� ��x�[��;���^}7�����L\mW\�F���T��8+)�vo%��3��U�nZ���T�o�j��5�Cw�_B�]YQ�)
HC��BVf������H��D)�j�,�5����l�9��!+��Z��K!+��qAS�����Z��J�Q�,�fVv���n�l�S�?Ex�Q�����g�K��Lb_l/�!��s���r���K�1�q:a���<1	��X�R�/#��*��4`�(�6����Y�id�jR��|�^/y���Y5~�9�5�.,e���+Hp��O��L�2��m���/�u����[���\��~J�i�\+����(.��Hj����&A?s�M����3cn"k|�
�?t��������b�H8R�����'�B�t��D����M|/�W_L,[��+
����T��P����xP*;�&S������~8z~���*��`E�����E
����	��Nk�b�aWi��ML�eb6B�f�R��~Z�����^<rG�%r��\��U����������M����7vc>����k�����n|~��%g�M�P��;f�"��
a=����s��oW
u$�����Y/�\���'��DaM�K�/�<l���M�vz����������y����B/tZ��*YWCS�nY+���O!>j)2����-E��~�������@7�KBu��C�O>j���q��������s#����>CGq����c9��J��)���^��q�6�E!�h���4�{i1��df�m��/V~]��x�	wG����!�`��2!H����&��V
�N��S'�Y��$d�6��`�/�����S��>�	�7 ��_q
9����x�{_���X����Mc/��}KD�V���|�J���/�)��R�Ok�(x�]w��������dU,F(��a�K��2��[����Jf�\&2�$}Sd]�zE*K�=|��{������n��<z=q/��F��8M^)��jm�)VZ�D`��&��:���@�.i��X�U�>;�$B]�F�f*�d��l�g�P�� ��_�!8K����1*Y�0RdX�~���@8��'���'�����������������W��
5������������ �������+N������L�W[���?>��^�D�Z�&�}����a��,�������g�������Gb��3���8X{�������`2�
a���~���,��0��o����������E8�=�s�������#�������0�n|�p��#������"C����	S�$�#��U����M	�!q��P�����dN�B�����%1�z;���#�:I���w�^���u������B���	���S�a���/q�8�h�:�|
8�����R�dV�6���:#g��x�%V��_�W"{���Bo�<�Z#+6�tC)Yqi����NKpR�,�.1)�g�I�'��8�����pL�y����w�m��Ato�_��h���k�	g��di�Tp�����,�D�R`���t`�gi��J�����WZ���ZQ{�i������'�_U���C�������-����'C0m�fl��!dt�b|M�jh��>�����_��
*��[��K�������U�@��wf�E�}-\�#MGT_�5��|]�h�*��{�,@u���������i�T�	u:<�%x��M+�X��|����W$B�dSg����:��������������B1'��C�>g]��\;H�~y51���������2���7�
G~A�	l��4����lD��L�g�	}`D��T�����?�����|�RwF8���QcX��s�����zS�@������QmJUOi8�g
9���`��(����{B��2��Pa������AKB8���5�KJ�s'7b]�L�]j����p:q�)�upl����D�a`4�L�I��:����$~,���Z�k���,�����d)�Q&�~O��<�E��rf�/s�"��_t20��Q��0��� �g)Of�����3�����E�e=��dx�X��E�IPc�/cIZ����:� D����1����c�]f��Mi��_��2��:� ��q�)P ����=������'�[z`�q/��]y�:3i�a\)�E���8��F,�I^"�kn���_��f".���pf��p�Vo�
�:�b���ti���
����W���e�V��9�wk�����������O_�1k�����b2X���,�29�tU��7�����������8�#����,�8m5�0\�����w�}��!���}�q������[�~������o��s~6\������`q�����e�����>E������Qm�\Ap�F���3
��4��#���{i�#J)�����+��<�����x�7���MNv	{t�O-g�����D��	������[�o-Pp����D8�Vy�E�G�����
��R.�
��Tn7y���<��������2
�]���i�t&���;�n��S��5rQ;����u���#��w��-`R'��35]�Q���e�X����mT�R��u��0��3�bq�3�|~�^_�P������^� ���	%����������kw���/���L�cd��R�7�����1�������0�C�S�xCj��Mxf(���_����%|<����C5��3h<�3`���+�s��nuV������e�9��8}�d{�������h���{����D���
����M����O��F����7>�_b�K��d1h�z:q���-����W�N
1X���;��=Ro8�E��j����r����#��.fc(��%%�O"��h;�
�G�W$�+t|�����uyvxq�E[���X�������2�y-��iioW3��S��pR����<���|��ujU�q�Rs�Z�9J��k-lZ�`U�J��V�����x�������"��&��'�L�/�j�k����3�Wzz5���O�G���sW��q����juZpX'�o���b7�|o6���������On�s[����n�M�L������E��&���NG��#x���u6uC#�G6�U~���l�in����[��;�]��,��|�I�o������`3IxwOS��qa��^�������J��{���~o�,�����������@a�Kwd�����M�������z���b&F�n,:!��='v+8%0�3^I���k�Z9u����Tgcwd�Q��gj�J�Zj���������1�>6��r�^|?F�SQ.�"�~q��V/�iy��_;���J}@�F]��Js�b�������J�Zm���jGx�5��*�A0���a�P������[���Q����?����W{�j�\��V����S�m��4*����``�n���mp$f�*��+�T�`3��0G���&����=��:�A	���3���\8�,���3�� ��j��JE��y�b��'`����������*�w*�_�R%�T�\)����x�f2����	h��z��Z���d���ww6�;H���t�F������KA���A�b�"�g��m��8��r(��`(��Ti8����*�F<p�bXR'��;�����	�u��]�����������!��vp(��B�~����<�������M�p5VX���JX��Z������c��&��'T{R�`j�z����`�7���:o�nCE+'U��T�(M�ZT��Z��s�2��UV@��^��2�����
j��)�]~Q�e��q��h'�j�V�5���R���7���0��\����oLh1�U�g>��A3Jz�����<�4����?������!#�A=*jmQ&��@��n�t�Dt(V`��~7��4E����Y���=6�;g�z���������f~�c���M����7D~I+�w��[����2�g�Z��=h=iGXa���������j]6��n��q=/�!�7�~��/'0{���^m��n0���.=������1nXsphA���>�/�~i�ic�:S6����� �=�v��/M�h�A�q�1��N|-'��T���f�T�9����	����Df��R�/i��I���<��-�)�O�#�����y�|�J<pF9�1b�I���D�
gg�Y�;Dh�E�P��.A�z7Y���,��-�&�&X�((d�����S�3�L�<��!��6��o�r�S�#
�yS���^���1B�m{��w7}��n������;�ny�T��j����k �cEp7��p��Y����]\�>?�h�o]�]���u����|Zb�W0����������8��PG�FSG�p5t�Iw�~����2y���o��6������<������pBM<��}>�,
_�R��O��M�a���&�=c��L�������c	+"F@�$�s0��`��������}h���3@PfH@c|���X���F���>SH_�<�H����-q.25���]b��S&���6�#Kmt��R����q|�&�J�&���	�
v�;x1F�!j��"E��e��#J����O��'g�1Xi���)�y�����5�n����J�f{����c
���3��f�
�t��K�d��=�Y_���U�#D��������x6@~�h2_����Hkma�V{����N�:�}�1L���i���E�^$Ck��f#w�h^x��2E����M��p�`�����R�(����p���h�8%#M4E@kGd@�OUB�+�h~#���L~4���a����\f�8:�$
�`lO��Ubr�f�4&f
_�h���e�[+6�C�9��Mg�d6!���?��pDm�J!����\�@3�+��faQ���r��l������m4����i�Qb<t����t�P���a*3y���Q�-d�8������#��2�w�7�}q{��B\{t[x������e;c{K��+�	;�P-S�=�����9����_��aChG�5��pR�J�ZVQ����G���)��h�'7���H���=a�:�|Q�0�	�*�t��/]����NF�n�z��M��P�:E�>q��PY�t]�#�=�`��� eq����B�������<��$c�.�/z�>N&pW������8) ��S

�c�F�;��m����(de(f�+�(d�DChfo'@�����P�QL�l����`���Ze�!�rJK?����qw����Tu�:@�Q/2�Ho�9h��Z�Q�[X����0�$��c���}m q���)�-D4�pr������c����&�@�\+-��2y��3�&����������n1#�ZT��5@��
�#�N�s�����\9m�5�i����`����0p<�m���.R��K�9($
�&���B250g�-,���UVz(:e�%	,RL�(�%,`neGL�a�g�7���'�]�@��}�`~�����������#x�'"$�%��t�q`�@f������>-5R��|�g�O��pu���U:�������A`��/��!59)�?+T�?�^mW��l}��mo@�.��y�>�w��t`gB��Tq��B�lP���J�t'��\m���K�
�:���%�����ut������&u:�-c�mu_���J'�7����9"��v�4�:y0w>N^g�O��B��l���%��,�x6F+��E#u�����]���$`���z�����;`�D0s�����`	�G�a	:�(��#��,��]�������3y������{�_�~@�[<��p���P;��|f��t6`+Ng�)L9g�6�=���X��wM�k�C�[�AJ�V��;�����]�1�a��B�&�4�P&/�H�&��t������;����<��ug�p?�r�����7����{���!���u�Yxc|��*�;4���m�'��!36��]��u�N��������(��hA�D�/z�`���sp��&_:}�8�������Ka)��j4�Ux���r|��q���5f����������
�������
Q����(�n"(��U�"h�?�U�������S�"X�H��T�����<�["�+�C \��#��I�j,��.�^]�q���iJB�t%$���|������h�����"B�`��vp���Z��|� ��A@�[^]�/������'���$��v#b��t�������nY"HX����{	�6`	w���o�=q���N!fcX�Oc�(�p$!V���
����Gl�Z�6H�=��)�����<>:������>�����H������;�D#}p\N�dJf"s��:����HLD��xA�B�'�!�"���)���5�L���Z��D����#�'i�����<���2#RO��S^�sB��������M�)�H����Lh_�'Z�_�8E����;w���h6�}:Ev��W���O�N`�>���e3��-^)�RfZr5����w���YOFG�#L��������3�M2�����3?��3��n*",Y�2���!myQf�j�T!
����i�0l^�[�U� �)��M�H_��7bDo-3�����|��*��@@�&R[�.��#)��/2(
]�H�H'4Gd��x�9A�����P>!��B�x7�S���4=2���G�����@��>��qu&�'4o^f��W����LB:�}P $�Bv�p��'�!���G����}tI���Th�����S�:4��;j����������M�>���v`���i@$?(�f�|���{_k���tD�������Q��/�K�p����	]���z��Q���{�h�])��(��4*$?q��b�f J����H�Z�cEN���
��������*��~����\��IFES��|	�]�(���%Sc6����L �k��21
��3��EN�.�W�{���|���{M�r��$T����D���cO&�c��8��V���b"�y&���6�kd���mbl��A��$��AR�I��f�D������"Q[�n�,���C����{�@wgQ^�[����,��
2dd}���7z������vi_K��J�@���1�E��v��N�Z*��u��GU/A����^h�S7�'��(��-��q:�x�_�^Bq<����&��|e~��D�?B�P%S�Vlc��6�q�T!b�����iG�N���t&�A�F�{�����ICv�I��'81����#o|��;�����~����eEy~=����^��z
Hq<��zA����N��~�'U������>L��a��$�
�b9�q��%$E��xP�Q�.Z���`��b
����6�&{�f���^M�;���Om'u��#�4x��d������T��K����4SD�Q}�X��j�,�}�3�q�NJ��*�����	78�&�mz�aa���~~�-��$I�W/�����Y
�`�G��+D���N�L�3:	����V;�R>wU�����
��n��c���pf��]�6���!������ )�_��F����C����VV��{
]���gyy�1�P�B|��s�@f5��E��c<�o��/�����'���{�#,roz(�x����p�6��
~eu�������{A���E�lC��b��}Dk����P��V���mm��[��`� ���}���Y���=A�6��C�Jy��f��z
�2v�V�� ��Pl�g<�^bi<������!&#S��CoD{.|��2<����b��x���$��6"� �Fa-#���t+z������S��o
En�h-�VZ#�v��>J���d��H��}���Q�����(T�@��*tw�6�p�C'=��FGm��WU���p���.M�9���gj��l��x�zj�,4�i�G���A�0rR�w>%�MZ���b���|�@`����S����4EMr��n*�G��WBR������,�XQ����^|~4���s�h]��5��7898r���=!�h�]����}��c*\���@-BdYS�"���va{�-��9�1/��l�Va�l��������B��3�x�B1�i{�y���>xy*�<�,_�����������}m�>F<������6���j���%[��FY��+��P^Q��Py������Q�5#0.Q	��
�����d.O�t��PRNr����~�t�����DLz����6�LX�'hI��o�,�O�1����z�Qv[��|��tP�7�������hE�
�uU��WH�K���d�����g]��+zrX����5����LoeOn@u����Q�����Q)�	�@J%����U`�-�]PQidp��`�96������
�k���JIc�F���P����#�w��l�_��V>}y��������zJ1	��e:��
����1B����l{������W6I[���9u,�N��L�f*���0^2RN�sK��,e 	���B�����@x"
�z����������)��X�;����+�+@�UU�V����/�'*�/�d�fD����hFR�!�����h����L�3�C��E������a�X`H��-1fl��m
n��-f�i{�R��Rl��@��@,�k���b6���Q�-�S�2sG	�����	�PQ�X����%��:����md�<��I�H����[�b5�HH��5B`a��9d8�	�M��v�P�0hC�D`Y�&���
!!B�6��)La}����t����}>�RB����� o�o���5������UY��?��w��R
��hi�\�;*�%�w��������d���6FJRA�d+!^�d�PR�vc���b��#��_}���J|%�quu��\���A������������]�F�v��m`����I,�8�yQ���N�q�����vS���:>�m���	�����c��5+�w���x���<�3�j��]�6U�w9�6V8����vJ���|W�x�;M�/W��o�.�����M0���/}f7���c����M�^j�[���������Q&�R�/|�����CR������ik|�@K�cV�;U 7�`��Y�����3~����x�6�?���h�&��M{-o��N�(w���m��������,��C:�@,q��0�����W��F��O�@	�	������_��`��y�|L��"��&�O��$*:2������5������o�"��z���6(y��������t5Z�CE{a�{��5��Ri��8N���LKl$�OK,F�.��"Y��z"���?����lYP�[��BK���6�����*��,���gH��e��0J������J�t�����t\y��/��ak*X[bT!,$�b�0���!���`��z�%/�4:q���A�G������r
F��	E�i&
�����l02R$��3[�nFY�o�������Z��9B]U���2�����!��FoD��MB�X�Q�dEp��p��t��3pU�$:���R���q}�W)�_������*Z��~�k��-��
��:I�R��|Th�s�:�rN���8|������'��3����M;7D�=Q��9��#�\�p�K�$q���\%A�lF������������	��u�J��(C����F_h��f9$�a���CzH!��f��7����.9��-����	:y��C��m�`pK(T�q����\��|��=�����
[����%^�h��C���LL�3
�t�E���yF�	q����4�`�:����D����\K����m'�!�y��R�n�::�B�A���%��HX��Z����p�.�Y3������R/�R��������g��fz�
i����(�(�E���n�g��$��D�dV�$����5bT1"I����H���5�dq%Y��lE��<���������w�N���;��w(*�;n�����BwETMX��������Z�^A��R������C�mB���Qi6J!�z�~���}���`���.^�?p���~�+���(C$�^�P)#�V����,�9E�A����eQ������f�8
�f>�������;`E`����� ��K(H��S����"��������C��6m�k�y8��bFj��R&�1 �C<������	����^{�V*���N7�lN�4�-��JR�*C�������N�/�}�mj6A����5�����p<�p$$;4Q0�t������yhl���h#�.���b0��p�|)�E��3a��J���e���������$��@1�X�<����<�F�����n�R*�7k�^#!@�� >���#��E^{7�x����ON�z� 6������n�j<�?WP��f�QA��������h���!���"����	�c�q(������E[����X��1f�q��y&��������8ji�t��h����z����s�<��Wm����m�t�>o��%�����������O����o�w�������*���]"�k+oou8����
v����{u���5��<
�[���-���^U(�9y�RW�tc=�&��Uy����W��`?P�/2)���g����b����r�����~n4g�V�m�0����e���m��'���������>>�<y��b�)�fV�G�������8���HR����m�Hr���L������f�>DBY3�#f��18$-���(�����1%#Rm
����B,H�JW��J���%Y1rP���~WW.����#�8l$
�T��b��T�M-Q�_m`Q�����	+���<��S��sU�o��B�KOm�p�������Jw����$�z���l����pU]�������25��~�?��^)��0�y��K��*�G��c�������oT*�������k��������6+
���V���n������m�����r���W���O`��J������B��y�Z�X������X[�8E���d%;��s�":��5�2�dY��M���/����Cw�����C*)��%�&
����A��T��&Ejb�$	er�f��@5�^��<�����[���<��*xW�f3����U��X:�'���N��
�#��	�14v�����4���G�A�	&�vLlN&�D����$
�O3��-4�q��	��S������@�7o�_����eDhX:H��%�����,%6�Z���2X�3���J�G��t�1�|�Vf6�B%$>0�$��8�
��fN�c5��K���%�Kg�:��e���_�`�#��8�xl��RQ_�as:�W��	J�A
Y��:"�������
��c���.���3� �h��.�V���Cde��ors��1�H�� �s�X�~W�J]�������wUk��M/��'�=^zHJ�R��G����7cc��z4@��P�J���1�������k��,v��0�79(��������K�n���mV�@[M��@[��s'�][l�wA�\X=���Gf��|�i<������b��J���Z`�����cZ���6����	���,���r��j�X���4�f�� R�h��!d����%������p|�R"q�D��#csTI�G���fPA�o6\�w���,���I��~tV�'�W1k�nHy
�T�(�C^l��9����s��Y5
A%��\���VB�z;�j�X�Na�TnKr��05O������]���p�f�ZB��Q'�\RB��F�
v)���`�~ �)DT�V�4t�6�(jcc�����UN����FP��?��������d[�W�81�G���x�����h���N�n���L#������.�
�����_/F�W��(Z��&���B������m��Q�P���P���v��1�"<2��^��o6yfh�m�\9���v���p'{u+.��������u��8���M�{���'	���������
�_�X|�r!q�b���f�2	��K����k`�)�
���a�B-)�\m�d�8bX�1�,�A��k����C���a��)������c����+?���bc������B���������A�*[_���c4�a4�0��Ej'Xh���T k�$�W�+�)�m����UnG{L�w����>��T������������Ke�~��S�O���cC���-��A�d����-ZP����Zh��{gl�� �<�H-�h/��2�[��ek��MM�'��
,'��I�l���e-�����X���L��������;�Te��c����r}�\�K��<��q��e<`	1h��
��d���E7
<�m��������o�����X��+�
���
'+l� 2v�����Y���'��<)�)p|�]�����v�\����<{��m})o?3��Y	�!8�{,Q3(�1^�����Z������V4���������G^��[������?=����V�O��K��R����J�(��Z	uL3���L�+<�P��#�?��9�_���g�:1���pVb����g��[�������&�'�-O��N^
1���]	���#������W��89:�Oh���)AG�~��E����Z	2�+���
���6}�H��k��Vt��1�KT�e�K�����5�A958���kb,�L,y�/d�ak2/R������:n��9 \?M%������p�^����^���r��:�a��V������~

|,���T�-��B�
�_GjV���W�x��v{��V`?�K�B�f�%��E;1M"r��&����c�m [~��aH@����8����pC'���>���_U������>f�0�/}�G�$$t7;R�����8��o�y�ac���H\x���{-�X��"b�3@A��_p�;j�4b����9
I&��
���H,7��������'�g0�������d��uh��q�E����[������7*�������D$�$��D-�[�76���8��l��6�����x��F��h�,[!�\��I1)rH� q"9������*�����1�D�dh�V���s��#Qt�+���>��pR9�0�����>������>����&?����-��QS����0���nJ6���m�$�0%�9
��U�1M�`q_���t'o�z����LB��y6�.n�4&�=����V1T���m������Fl�Lm������Yl�_�q~^���Mt�}����E��b�����lb�r�H:&H��h�K��2����E�^��&���b��sBR?���sH4�K������+��
�;	@��gq�~'�A+��M����-���A��JV>�\�X�0��c�>z��I�J�HOf�����X|��04G�e!�����y�}�<�	���H�`�t!Q
cI�Ku�|!�9�d���7(aE����%��7����Q���'�)��3�r��[��]�����Xa}t�����A��"������@�������&��)GU�u5r���prU���e����������!�T9��;��^���k(���&G�������B�~�d"�:�vO'�f;A��y}O�Gy�������1O���z����%��Xo���tEfu��M��|�u5���![P��w��M�S�0$��~��I�8R�Mar�������8��l�I7�j���J���Y����v}�Jg���sKr�:x��B��}���n>D������N?������.M/$v������_sQ<d����G\��`�l��D�NGE 3I�8���ZH��3�4AM�P�B���$�������d��%���.���w ��������-���d�7�{rj�����<��kJN$��S��
��g�_{hc�M�$�4C
6%��l��d�0x�f�{H6�X��/B.w�)��}��)�X��$c�����i������!Hux������n�"c�z9O��a�nR+����S����(����qi��p�������q
,���h7tsNb�i�����HX,;�mh�K��V�(lBS6H%��q��X(�W��?�d���I���wbO�;a��
�3�$>@g�wKXS`��g��x���s93R-���m�6[����dd@������vU��)�����o�9	�B�dM������E$_��6ve	��d��d��d����3a�|�	�5�K%�Z����d{��u?�`<�96��=���K�-������������v���q�����0��M�eLa�����&�����_N��l
�%���DHY�_�w��N� $2gtN0B�O,�.�	E��H5v!D�-
��)�
4�2v��������f��;K_8��bL�(����H/v�q�����d��MA�m���D
�������v���qLR�6�B��
��*<�V��m��|�hF�"�;8x5�)r2
j���s_�P~
�52��j���]�����P�-%DP�'GP��C����%���8��;tR�}��Z(VJ���c���m	aU�	aU"��c1T��I���C����a��lN}���O&t
�*�jND�%}��Ir&����X!-�Jj4�x��|��J<�l��)c
=�U�����,��D�V��#V��O��kD���!v]�T�K�b��yg�������������%a{<!t1��H5)�Kh!H6l��(F�n�`��c�)(��R�S"��>�'N�� �K���0@��IRY$�������&�35���
R��L��;��LH�)5����0���[��r�.�h%�����M�H`gN����Q���������X1��eL�+l�V���!�A��h���]�����S�dAm�]0u3v q�����V@X'��b\:�	��C>�\����	 ��23�~Lv�H��!�M7-+"h�}��aX�o�����58�����aD�'��{��������k�F���gAQjx��0-$a��CN<0�����C��h�7}w�L:7
��9�J�� �@��D���V$�`����/�6cV�E���6��E|�������5s����	J0���������6���~`�,{e�~�3{������W.@�L`^cXM�I�f?���R"5N�K�Lt���i��/l����$��}J
����X9�������1/_�x��IN��D���"a�1���i��|��3!��1p��k������1V����jq��b�Jc�8���2F��.���j�k=�������W�0o���W�L���)����v������Tk��"k�(��Z[�X`d�O7���5�N1��/>�y��`�`ki�V6��k�#�����������2�%�F��{ 4o���`���w��Jw���������
m����+�����Sa�U�l��R��{<��PB� ������~����^�y	5Kv�?�}	N_�J�)j���d��<��-����^=���i�^E4<L}�m�FJy�B�s����������x����
gt�����oI�l��mM�����^�`��~�Y�@�7�m����oX�'~�o[��9fiO���LT`�������h-%r�q��x����x�JNGEz7p#�v��s�4[��j�{
����kKK8���b��#���~��o�
'$������\�����)�4��j0��A��[����������60?����N���~A[�����89
��
/h�^/2�!t\�\�����	W���@%.�Q4H�2��y��-a������WG�6Y?�3�����>�mtu���N�H+���6����������H�"�'�`�OvO��)�4�K�>H����#�l��
�� e���"�@-�/qqyxyrqyr��_��������Em�[�\LOO�[K�k�{�H;��B�@p.���#�/;Jf�  U�R�����"��)�t������2vN9
�K�#a�f����?���������"C���eZ��?h���7���OW�(Yj#'��<��$���IV�5��$���HB�s
J����OX��z����z�2F���r������\�������@-,�� �%�HB�5�IeC@k�f����`�5���y��������^��|��$��?�d�;Q��7���R�X�xrT}�,����eXRo
�������|�����Y��=�R�#U���S�|@*���^��Sq3}I�Fw�5T�������>7<��
�D\�Y��q�	�(�N
���s�^B���Rxk�"O�����v��h��|�����+�B��M�u�$�8y�����+��f����n��E#�h�(�`"B��� �K&�ch��������>-}����"�`���c�t&������Q��xS%RB��Qy<�E/����cdL��[v[������`+���2���G)�d���pZ�Ec%[uEJ��Xm��,�6J�Z�����+-j'��,Z�B�a�/��F�����d��V��z�����e��U�c�wd�7�hk������F���x�k3�w���������ab�:W�&������(_�p�������7���(�&
#�_����7g/���'���#�=|�l�<X[V������+�*y�#���J�+7�n���Ub���o}s��R�M�7'����fSi�1*=�#����DV`8�3�vv����SGz <�h��������V_F�]1�<������9���]3��X�g��d����^��9b[���t�N`�H����p>:���?��0�[���D�Zhb��9��g��T��t��n�����||cA$9�����J�I�+��0���������"4�_��������0n�dm_"M��OI�B�j_1i�#��-g�]w��((�II�*s���n��X��D���Xy���S�Q����)�68+Q�@:�����A'�����]�o�5 y�{����@�-k��(�HP�����|*��.��R���B�`�?���1�@��dg����[���Z�X�$Z���g	�XC]�Z�A;6���D����L�dd��f���p1X��h#e<�;���j7��l1x%#(�����
U�+�Q�K=�}L�D$�Wx��4j�,��+���8�Sm%��,��rPl+�m�0�
��F���4�g6.��!�B#/�&"���i���	|+�Y�]�?��G�CfZ���Yc�X��4g,�qmC�8cp��{�#��s���3vuq6-����e{��j����dxl�$���OA�������L�M�-���m���{���q{��
���m����%����!G�F{��a�m�F,'����#����1��k�!��0FsOHi7�+}9H!k�� _S�\��2�������=��}�D ��mC#_]�G%�0%&0�?��h��S������\��].�����3I5���;XtN�������v�@.r���V����T��.�Q�6���)����R������RoV��V������J�?�_��?���_k���^�Zw{�Nu���k���r�����n�W�7+�T��j��R=�6���T8��Re�R���d�W�c#Jq�A�����w��of��X�b�$������� h�#z;��-%<�����$����?�~��~�(hy8����.
�����6C��hN�1�,��x��=��8J,v���;�3��vRx�����u�\�
L��N�#&V�����rIU�f�����^T�w�Y/����n����J�����I@�A��un_7�ACY�p?'|}1�mQ��7��J>�������a�����E�������	�?'n~q='�5c���g�3V���<�{�kv���b����iM����tz�X�0�+X�����E�|{�dkxc��]
������j��QycP�k��aH2���Cf�a+�P&{������h�������^wxH�p[���8��$K�P�o��
�m	��
��t�0�A<�w"��(�\��&A���l9/D���?����F�D��F��5=�5l����X{�l"����C'C��C�����u"���'�S�r�P���O��#m��������ht�
��[��o3���$������`�D�Ii��rf�.�~<~{�z{xt~�-U�fY*��{��X��3���gc�l�����l"���	r��XP����Mj��x�[f��?�����W�W����7���I�=gT��%�Q��|^��%������,p %JR��Lt
�����7&-J�{8����H�p�q'Y`��L���,����������O�w��WFx����nu9�Y�0���[�Ef`��5��^�NKA|�
���L��}y�s�O%��l�����������\����1��^`�K��E���$��PJ#+�7���)4/��� +i���J-�Vq�Y��2���l����h�����R�'�5�8�%�o�L��������u����m��f�Vr�1���t\4c����m�[s� � c��8���9 X�8
X��(�7M�Cc��%��q���E��-���)���)�{��`;[�P� �eh|�RZ?|����'���
,�tR�TH�I�]o�����B����9s��KdV��!>��������x]�t=aD��C�0�3�������Dl���9?���
�����H2�uN�HXjL�'S�z#�j
�B`k���?�����&c�����.���
U�L\q�D��JK��P�����M�������Joo�T�U�����b�V�B�V+(C��v��j����P��Q���T�|�|b�
�M�������7n�O�X`���������I�?r&�3;'�i��=:��C� #�+>|��T����	�����6���E}:c��5���,���y��v��8�&��%
C!���Q�;2n��}�T�R$�>��"�#���j��3?�_�hN���6?kP�%�T�\���;[�kl]�w|������������8�x�m�{��la���;m��x�j��{�Tp&p{z
p�p`�L�i�KjaR�hB�'I�D�������L}�T#�������qe��9��(u�+=�����P|!��\Y��*y��
�<��=C��r���[�������-��'��k^6��52i�0:e�a���T?��[j����4Nx��1Rn q��i�������{��k��R)��o�
�������5,-$X��|o���\GR�B�@���P���@���[�I�*��5�����}&� 

�#�!��T�6_�)x4�@�a�"�[����3�zCg�6P���wA�]�,�r}�/h���u+
~$<5�[I�s��ik|�,f��lK������M�X���0�%u���������^&�*�����tu��#k-����`b9�O���L��}��b}�f���P������9���.�p�@46�}�{�E�?)�<��G���W4�������
�o�i������v�
Q�����
��O�?�n�����uz�	�yP�B�m��|,���ZDp�����C��Y�B��Y��?�f��Mn�\z��������v
��I�@��CM�c����/ZC�B��(hr�x��ZH�����>��1��R�vQp9�&�cx�R���N��Y_Cn�������L��q�H�Y�K��B�����rv�:r:g�4�x5�[+h${eqI�� H�o��c��7���!;CM�nX����V��=��8���������}e�MkV8�XhO�to�'���5�����(�����"�����7i����#�=l4�k<�p$�0� �2	k�Tj�_��!6�K��SO0�K���tS@�AG�	���F�;��2�f#J:����������U'*�Fr�e	�U�V��$)�6�9��~
��n��c�Z��	���$�p���u�F�I"z�����\WV}�\v'����<IJhV0�����6v�
;��d�e�?�E���-
QK�"���
�m�LT�����:��pu5�	�YGz��X[x�Dd'z_��'QB��g>�>�h��1�f6�	����}o"�@�Q�L�0�
�\s2��
r�qI�'�a��^Q�#�V�K��e8�(��(��U%8��h��$��5U+Ko���7	�����d�Md�+�m��Q�6	�4R�%FI2����I>�q�e�2}���\��N��|�.FF�������3��ph���l(qR�hh���`(�x+���U��	C
x3T�4z��
J>0#�B�&�V��W�0b�Lj�����E��T�����kueT~yT~�*�{0.�S�;��(`n$�~�	ra86_�(�0	O��}���[5����%���|q��_\��r/��P�W~c��&�$���2�|���D^f�0�����`������GNT�*v>9��F���f~E��$��c�9H/�R��� �Y���F�d(�TA^�=P�������P��i5q�Y$
�R�q����N���K�����Q���7�c@������Sc�O"�8��YnI��<U�����V���hv~��Zt������3��h��yx���.�{�lP�K+�i�E[��V��P�����i����S[�ub(#j��6��%o�tq����P��G7l>�;�X��y���
�Q*QJ!�u0����M�vy;0�{����	��p�"i0qL=�7�����(a�tf4!�m-HV�� Z@�n�`<�Pj�{� V���h�63�/R�������������I���f�<����,��7�������5O���s���5Z A�������+����d�y~%�y���d��9���b���;�������Iy�������WH 1���T*d�&�!#7<�hB�(�

����
�="�/�&�N����!+*���I��x�7}�(oK���a�����|��|���{c������d�<�����4�j>M��_Q�*���d*oS�8�a����b)ny
u���E���7�x�lC�2��II��Cw�B69r�.�.��p��s�n�_����g�B[���+��-;������t��0������r��M���e�2\���-!�,�E�EY����,����$�-&/������Zr
��_���XVeY��p,&��t���5�8���\��X�2���X!��Y����)��7������?y�+�A!&,�1�+�5�L~����(�S��"p�E��Ea��)����K����B���X)���p��jm���O��/���?��{�J�Rov��uw��iV�rg�u����^e��5��F����X�?������,7$�#�R�S�s�Jv,�Ed�f2�7n���"4:�����J�B���%�)������Z�����e�eV����`>�w:`�	��f#8���#��HZ]PM�.q" �r�M��]w)4}�p2!-��Z���d���X �=�5'�d�ai)y:���2>)�|n~���C~�kR"����"4�������L;�����u�����@b�����^sh���h��m��(f��	g�R�z���5l���y����L���:�K�n���)*u����VVVX��������=�4�TE���4��P�5���8�%�l�
�)�6C7�������{�7��
cZ��*�X<i2�8�
������z���~4o�T]E�/�:	���!�����������M�k�,,�$��\���~���m�w�(^�W|g~�\[���N����[��7�����>�}P�-�w8���x��O�:�~��w�~�.�S��r.\n����I�M`����!N�A|C���;�'����N������j�w��L=��;C�cg���I2���U�3p�Q��L����Uw�1v1�l$�n��\6��9�����x\�9����J��Z�^i�;��qc�	e���>�H�O�,2�!(��I�~�@me���Ea���I.�e���.[�A�(����Lw`������'K�L���|b9���H����)���x%4�������!�����W2�f�d$��|��~���e���g�?P��D��^<��2e��!����	�u(q�I�V�����>�u?������
l����u�����K�L'3�h%�����z�P����.������Yc��"���h,�KcD)��g���Hj��7�xS����$���QK��.�6n^/X��� "%�K;��L)�����)�BZ
������S�#?�yS���^�p{2T0����w7�]�7�d6b�����i�L�LL����_]����S�>v1(|��H�d�������%�D�N�{q��8���>�&��|�Y+T�6��|dT���(x������Q~8��Z��R	D�����Y��7�P�VP����e��0������I�4���y��}$e�ak����������W��_��u+�t�X
H�yX�p��o�Y����8�I�������-��'��b�Q�?�ql�z9\T�J�i	������:�2��u^��iX�:\��5u�6����9���)�m�\���8�*���p*~�Z��O��������m��Mra���o���^A���/r�2s2T�^����oN[9���e��	�~��TtvV����������V~Y���W'	S��}�u��5�F�j�Rh���H/z�@#�_�:9?{�g����?�Q��o�
�p%'����	4�
|�jP��Bi8P�hW�y��PCH��h��j���p�>F7!�a�}N`���-�#z60�	^���g0)�F
����	�����:��i!�e�	���� ��V�=B���}�����;����������gff��?��������������r����_<�'�>��������j��Z�Np��<��WP�����X��]�����]��Gh��]�������MD��J�m����k��GS��;)�� 4C�������A|��7�������dZ+����C�a�gY\-wfI��#�D����tz�N�T��������gV���BteTH�gT"t��2�o�|�
�2u+��n�Z*��J��4���Fu��<��4�[L���i'i�������F]�q��
e���.0��'6�
�W���e�\��@���i��d�m��|���>��
=Q����Mt�NS�2G$hG���%����iJ"�K�U��Z�Rdp��:�U����,��,w;�K���#����P%
�����_N~8ys�<��I���q��	�J��������<��}L#rX��g����z�%�e�:��e[\�1'�M`/S�f���`S�]��w��v1]��=p���#dp��	���������:I�O���Rj������[�;����(�)%���&g5R
$���[.�+�E��!�l��bi���L{�"��xlhfZ<Y8tSf.
�)�K���|0i���0:�����6�����t��,�u;7#V�X�����"o?�x�l����Cm��#���v���Y9�)�J�^{���^���Nf#�sM�y��&�9�D�t~)�v`-{H,���G��K�������xwg�mP~4��,q*�v+����MN��M 3���'P*8�����o7�����@�������k�m����[����v��>�Pe�+�*)9q�����@�$HA2�N��\om�x3��`^��A���P� ���� ��x���� =�^���J@w������%J,cVL�������JsG����I��������h��v�����m����o�f������p�:"2C�P%�5�-/�=`��WT�k���JD�r*������W�����+U�isD��?^�����a����p��o��{�!��~�l�m"��:���K���Ar����bb��/DL\i�N���@<�O~�2b|��_$�K���vMg�S��ZK\u2+#L�\���y^T5�	T���1j�����C���N'�qY�v��+6��:����#%���/|���<Rt��I��<,<MdjI9��9�7��m�s����
W1�RR�h�F��-��������nP f����:��=���?H�l������R-q����)|n�]�1�d#�������X���F�������H�y�"�wf�%�MFC �����W�$�K�Mdvy8�bG��1��K����b�����4�B���E#�E��`w
(���+m(v��P4�(9�rV���:�=�,�.�!��wb���_�V�.>�~��<c�7��G�����c������r��B=�.�����0��O��s��Vd�@�h@��(���}BC�������1Xz+g�Y{��}����K6��YDN����d�������B�Y����r_Q���C����6�Ag�>�:dR�y�2o���XrHsa�����j�Gw\��hl��tx��,CJ�xJ�E�����4&�����kT�M51�K�*�kX�<�6Z��%�����&G
��Y��*�;����i�cq#G�1Te�����|{?��W	��U�tj�1�ZuL�V)��U�tje_+�:���K����/�Z�������.�r���[�������F���+/n�3j;`c�����@8��\(ok%���[%D�(!��W���\2}�
��a���(�Q��r���E�!�����: e��AzaK���Ou�/~#����>
\f)2@�������� ��������J2���^X��o��/��\��0tn*<�f��=�c�C���N�8���	�l��?�0����^��Z�i���,�����D���i@A��dH���k*JP����>�0������o�L�{����G:��H��+vl]7fRk�Q����~wr���7��v
�'��?"����qp"�Jd\Oq_�nH����=?��F����;��R�������7��������o��M�kzj�A��� 
B�}?����-��S�s��1X��'W|j�������l�N�O�����W�A�aj�5��z���'�B�nZ$k+�����~��O(�#0���Oo__�]
��bA��b�9��'�'$(�S[GkY������X
��aD�� �([=����z���<�_���Z1mg�]RB���aC��o7�����4���Ep��W��y$%$*(nEAM<B�A���C)�R0����"���4�.��5Hu�A-�������U K-l�!mL������J��A��A|-J��2;�iS��.i>;d,/�aW�{��{��������E<��@{4��T���U_�t�[&*3���td��k
65R�-���FY:_��Bn��:��+: e`Y�4�9�pmi90q]w<j4l�����m'y����Q�^K{��T�*@L�M_1��w~-_�K�yP���v���)��yU��w����������L�|����j]�tC����P����>~)���Q0������F�)����|����a����g����
2O���5���F���N{��J�3��Wbp�n�=�Z�y=���+I��2����F�W��;������i����%�e�!���������G
�J..M;�����L^����eOz�^\qX��#�����=��A�_������)<���z��o{z���;o�e�A�K{���MT���6�Q�?_�cK=
�*(�/�TV��f@�����c��>���<hV��t+L���w`b:G'�\��}�'��zD��g_�1���N�C]�|�mz����h8n�=�4���v	/�~�S�G&���h��xE�U������%����J�������E��?:��}wv��lH������~��u����{8�]p9�|�T_�xh|_Z���.�_�����n�i�FC���u��^M� ���������q�ri�~��?�����;v:&��/��T��-��}��'L ?�0�����8�:�����<��\�Qs���N��4�&B�r��j����xpLc*�q,.�����@��|�-�	s;��������&����\��r���V�,���0&����(��Y����,@��������3�+������_��\]������TK�� �BX���_�~������M��Wd�����R��..���yb\YZ����|�]@�n��-��|�m�_a(����t���^[�M+�`_M�,$�K-�C�&�#m=�;��_�T�KAV�s	0�aS<���^"��M��[��8���]c/
���=_�"^�>��q�oWE<X���@��������5C���v������:�������T"�������71//
��T|3s�^������4'��P��xZ������
W��%�u���������<�(o���/�1����������o�=#8����CC��b��Ih\�����;E�Am�wAH��������
�x�L����O�N���'?�0��.B&$�W��[��v;������\
|�i5�����W�'���7�W��C����e��m����wj�V��T�LZ9�^��mI�(�`b�t#��qW�D��W�v��NZ�����cM���>�QQ�6����=�����?=�%=(B�x�U�P�N&��)NRPL���?^���27��p��^�;i�
�������g�FJ\��Y��z	<�,+���g�g�]\������g�����8j�O�/.�=s��SP����x����������+��Z[�����A�vAM�0�::<\�>;�^�EuO���
^�n'0���,�
�6���F*DY��<�������;��>c3���RQ+rgZ�+O%Ggg�h��+��*3�!C�Z��u�:"Iz��$.��J��~a���u��W�g=�T$~%��E�����g��m�������U�m��Rv_�]^�pz|r9C>���8=zO�T�����G�}�k��J,�B<K�Hu����M5�ck��Fh��R��J�rI���N~��0��t
�k�N1����Z�h�Y~�_�@\�,���;�"SwT|��V���_�c���R	�V��I�G�n�����;�a��=*����R������?|�k�����5��d!���x$K4x$?�/$`9cT+r,J1E������Gj�".\�O�E����0E=5�^!6(��u;M{8n6��x���7wM7���V,G��"���o�1���PVd����U|l'�c���4���=Z={�aq�j��)����W�p}q���s���������#��-�Hq= ��bt������=Sw~�/�&8�D�,����������5-�gw�C#�M:)����u�p�����wGg�WW���1��E��=��s��b��_���]���J���{.u������W\����v�V8�wg���|'�{�L����*��z�
�!������p!<��Q�hh����������:J�S �������7_������+8@b�4��8�j	A�:���}�e��Jo��Z��!����!��^��q���..�0��-���uKd��C�y���'�%�h���Zh��Z)�G���<X��c�N/$����Z�*}�O��V���~'�����������e�iO�����N/E�j�hbw������n���-�k���7'?�� ��g���A����R���4p3ct��1^�;���2���l+k|xyy���>�t��/p��_���7��������O�hv�������Y��J
��G�I�*S���U�i��VsZ�j��'���������c�?��}��~'�;��qs��?�\��.�v[�J�G��u���X�F�`-d������O����Vf�9f(��]U�T9�8�><=�u��:'���2������c��v���}�xk�����7�Sf�K����\!T@��V����yx&j�u��\���q���)���tuU���*=]�x9O�N������T�����>�������V���������_���^V��������v���j��B�D����I��D`�u�P\����v4�:#�Amy/k����:������g?�*�	�)%�>��)���H'�?E:�%Z���_���3���TW�V�i�LH���G?U6�2[C!q�+�������?g��A5<oN��@e ���
Yf���p���TPI�*�;�FmS�"�����V�f�h���z�1��k�|M�[H��M�9�I����Z2�����h���ki������S5�����=��*�������I!�����5w�C�
k��
'��i�C�j�:k�-~��'l�K����a�N�X�G��\S��f!����
�g ���J�gN3�+�����Tl)d��A���Y�(MkPz��n�JmQj�K89������0��"~�������>�V'j�EQ����BU��������DQZK`u��������������3*S�Q��9�8>A�J��*��O��4O��h"��I�\�O�������\��V3������������z�ywKI3����gW'o��t��H����b[��e��v}���:~P&s�����)��Zd�����v�X���j���n3u�8S>8��������]���>����h�V����Lt���q�*k�=<:<>��g=;��'�T����jv���d3�M�'NzMF$��7U��������|�o��|Y��C�K^��]���������7��vG��	�NE�/�/�\�$�=U�8}��;�rRh�(N������H&Q?et��	NG���D8�jw�����E�Yh~�l������������o���N��_�py*��o���9��tr_c���;|$%�l�N}��Q~����}i5��/�k���J���������{�J�)�����c����U�b�T��F��tT������'�?�F���m��S�uN�I�������NW�_d�������s���|�~z�QQ!V���~����U���)�L��:<���TqB��I�������G�����������N�Q�%o�p����{�]���O����!l��`�&���~.�7'��wD.U73� 2i;u��E���=>��9�pD�U�y�j���|0���=�R�2yd��g�u���f�����3���{�,��}2Y��*U��K"k�M�(�����D�|,��pK"�Z�/=
�M��-3_���w)��B�I7���������P������|7!e�������C�s�^��w��^���������N��7������rH������z@j�t�G^���| $�������'�}�����Fcb{���u�Z��z�J�[���&MM����Y���M����p|�������<4��t�c�g�m`K����?��=o!/�<K.%�]s���/�D^��_��q*��2����4�=m����]�T��C�wT+��,��A�~�r������R[�������v'�/��/�������X������ a����������/�m�[yQ��y"�T K�����\|�c9�����7w���s�<�Q��s)���Xa�E�=t�O�c�(��'h��!��5��c��5� �������Dqv�F�X�P3z�-��.�J����q����N��J��Gp�����u�~��u�O$��P�@^�Z<��v�a��J��4�<P�:D�6'�(7Y��RM�?u��Fz�����f�I�:����m��>��GM�E��I����Z�O>���{#�L�E������������){���:;����K;K��h��>�c	hz�V,�1v}/�/IJ��F`������7m��d]%�BI��_~��8}����l�A��5��SaP�����2��o�����~kea�7�x	���6C�[�l��A�wJz��/�6����m�����d�Td�-�K�f61��|�B�,������Z\��o���H���6Ua�ER��y`�l�nt����z�w��&p��S����zJ�s��4]�p��K���XR�rt��0@��b����-�'�����d��V��[k����/��~���h������yY�u�i2M������=tg<�O���M�-��s������^�7;���m���(������|I�c6��v���	������ d���hN���f���`��w�]L�����mv���5�eu^�����jM��]�(��K��w��G���kv_X��X��<�{��,�������&w�OQ������@�q/(���v���=���bzw>�\�@��F����'�LO�:v@��(_�m.=^ �P(������h�$q��S��M������B�'RED]^����|�W�����-)�0GEa$�(j����`�3�3w��p&�� �������\��s����3uEP�����sz��!��N�U����3�k��������$8qr���,���6�a5}]Jq'�
����{L�~P4k	rld1	SYZ�[�����I�Ox����\�0�9#8���l]�[1
K�]�OU����S������������elxL�D��k'O��:E�\;CR����q����	���,5��]�}�%y�cG���\h���yz�q����q������P����K�w#���!�h���f����"����l�O�Q�����=1P~�~������9���`���ts��/"yD��n�KJb�y_��<��������������LR�����&�gq�^��/���x�^����E������"�Pl]M����9O�$������|Z G_��#<*���oI^��"�������<��$�N��8'U�Jg���~Ds�;��|I|I"�����I+jI�8����+Hu7�
d�O���<���E��Izu'3�")�������Z��8g�MV������n���:n/�����H4=#^�_E%��'�����D%8>��-����	A4��)5��S����@$��<)��!�<-�-�	r�������1^�\6�!r�U�"���(y���c��!�E���%|O��	w	R���}��-��M�)$5%�|%J�b)�����7��G��2�7~�cPth^�X��������Z�����=�7]t�H��\���/J2���2�l��'�	�1U��\�`r#o@�l�L[�H���������������b2�h�O�k�3 �P�?�pI1�V������#K���iY�V�>W3��Yt��te�v�R1�	&�.z�F�VP�'.<��-�����������S���Jnx��/*
�Q��XXD��CT{Qg�v��I9����v��^���H��Q��i���5iv�&��q�QH]b�p�Y��E�����z�h��i�L4:Jf�.NPU�� i
�/�p��C#wPVky	�|U��Hpb��8��
w8�������&S�{��� ���M��������s�_�i'��g}��2��H+�$�p�+���]�2#T���k��_HGvc0�E��.=.������������W�EyC���vav_�<�Rd]�f� ��\E��Y�~S>���G�!�V-<G#������)��p9["��:"�&������l�����g$���������R��D�X��j*�R/��A�jq��K�����Z}��h8C{�M:�%]��X����Wj�_.�a07
|>z"�6����?��q���!E<�$���*"�)Y�*���a�P,1���+�����$=J.��+���K	��������q�I.XR��������f�����p����t#�����#(��I�R��x}��0
�7Zq��D�jO(-��P������7M��",��Q$���^\�b������K	�NM����m���Y
d��������D�^T=��&��<��H@�j���E���H+�����j 
I��$sT����;��>���3�=D��)>��s��Ts�����(��M����@�N������z���\������R����"�~y��;������c\���1������������K2��YI��'	;���������tW�1����9{7�)���O���� ��$����2��r���I�pV\��eF�y����n�����BD�c}�ADH�w_�����&��J�QC�p(�HnL�e~��4�s�O���<�$���{��X�����?Iu����0���E2�'.��������p�$��Co�������O���R8���7o`.��z�\�~=����6
�[�@)��	Yv�k�4��
�%��K=-��A-���]���4NRr-���r�S���������\IG��@?����#7Bv�i�O����L��?^��G�0!�$��@��/��!M>�����Ij�`�`�1o��t�Z��y��������1M�);�,4m�K�w�B"��2�x���]��y�`�!����H�e)�H�)g���#�%�<o��,��3[��:6�����+`()�Gi�vVe8�C
�|j�^�`&A|��gb�wH�CX�i���@�ts�N4{����s�)C������w�M�XT�={�=�G���D(���N�^4�a�>� <�
v���������
 �����'
^/��L|@('O��o��
�muI� �y�V����Q? �J*�E<��b!����]�����,��
����n4����

����U(�n�+2�������zBH -D*�?��E��=j���j�.�)�TEH&��&�Le�oJ�����\����JU�+8�S(7q0D�����q��;�Q�~���8�~RI�tm�s)�N�;jk�1�tS�@�H7�v�����~�6�P�{j���i6�i9�rz����k��q���QQE���=���y�������J���p�[*�C������Kx�n
���)h���$�@�h6���)��/�;������5{E_f#���]�'�aLH�����Y�<^<*������Y��2�3�e��Z�����`?[+^�5�����,���rm�UK�z]���j6"Uk��5+����T�0]mV^/��R�k�:��D������
R�
����5m?9 j�n5�����D�Q�%�	�pxyvr�m����M����V*���i��9����?4FV�s��Z6�k��)ps�g
�S�f��-��%�jD2�W�<��%����|�z��=n4���;l��'=��!��8>��z|���g���GE�f�8n�
w�8��O���K��}I{���b��n���}�_�x��t[���5��|��������>�Z�c��t��J�34Z��E�aFq3��n���!�5��`��A��Cl<Y/j5n+���f\q�]�t����lFl�y��1�0���vM|*��t$�m�����2��Wt�M�iF�o��vW�5���u�Q�����%=m�/�<���B�~�AE�(����F���xa�+c4��p5%�����t��?T2�x�������RI��E}i��KZ��0S^C0m��X�n�����a�,�|���-j��J�a���c�XY��a�X.��V�;��7.4)c�+R7�g�X;����&�)r��L�w"fCMA����R�p�&��<.Y�B.g�85��1:����������b-��j'��B�����A�dE�>�������������U�W�G9��)�Zm$��hY��u��3���/O��'<��]^��|Fam��^�5��?y{8x{xty������K��0���S)Tx*=AE����{B	=W�v����]F�Wp���'=�o2��9���w ��]����w�~X���?d�s�~" �u���;OI��������o��a��y�*���np���-�;�:�0q4����JKJO�.#x���9���ax����4"�_�Rh�3�g~��e��C���Z�������r��C�X_%���w`};��`����eQ��GI��xP��Q��,C����*������IM�bE��C�\g��AW%�T�ccQ���U�bhQ���������6@C
&��5�p$���8S�������7�W��������[��OJh��~�5�)���\L�QV�w	^��y�qy��t��T|���2�j�X�t_��R��H�Q:\1���>dVU�\��wGq�MYE�-�=5;����o�m��Ri'��tR�t ��-���B�zS?��
B�z�'��q�S����qZ[��.l��o�W��].#y���!��
H��=w��Geh������?��#�`�����v�6��^���������+yM�pz_g����\a
�c�}e;y��.���������=���V�m�~���e)W���wo����$gbY���$.j��.��?=���L����s|W����J���sE����`Mw~�C�T��E�:s��n���&���"��{c�l�.��s�����e���G0��F?G�!�����q�����(\��%eK�o�#]����V)�/��ZL�g��h,VSz�S���f�1X8���y���cD�U��	��&���'g<Q�l���@�`%�Z|a��38�6�NeY�SY�z��:M����i�i���(G��!����6�����oT.�>���s�������)��7�-V��U����> ���m���dp�.��_i.mpb�
�4@B��(,�:��l���"�.Y�B�e��
H�s$�{4%"�i�F~�.g`�J�L�4��W\��^��\�P��%��
f$-|4����>"�r��[�I�>�[���fn��U�lyJ6 n����m�~�j�0�0�?�������RW-��Zf�3��3J���noME�"H��:�*�6.A+�����s��m�:,�=����7~N<�[e�e2e�6FY���]
r�G�Q�|��r����8�9	}E�
q&b{�f���}�V��e���}�z�Y�Z:�����/m�������@JyhR�!�s�6���D*�K��<��I
jx���\z����}��-U���H��BB!4J���;VZj!-������������������O�xP^c`�"2��I����>=?.n'��R�)�����c��D����j:l-�8C��e������X��si���Y�"��Ok:/��yky�/�,���Z���2����HR�.r��!~-M0y#��+%��&��tD������������d�\6����G6�����Ed�H�T�Y\����;P),p�HT��a)����G���s4�@kI9���%hL�zH�~[R?�G���8K��"k�h��*��p���p������Ah��/a��~��<}{x����O�D�����+mk�~����7:b���":����������U�
�\���c���[�Q����P�q���Y����KN2,z���t���U����]���f��a�������B����V�e���/���}wvzt88=>9�>��)C�y���`����qY�Mh�S
�����x�f?�e�w��P�kp����+qk�@����4�c�����n����E�h���Q�]:��h��t0��Z�tef�W��n��PN��<o��J�5-iw���������qM������������E���kZQ�fdH�5
��3�=�,���%�F����'�bu0oU��R09i�XKl�_�N��<���E�.�U�))���/�O^2��+j���=����Xp��]�������;�� �p|4���7.7E�c�k`�zd�u�� ���7u��&��������2��X*�$�q))�j���P�4�(}pZlM7�5�Xe��}��+.$>^%��J���U�-�gw��F�q�C�33�M:)U'�d�]�����6&��XT�����}=��>�V�:S?�V1{b�j>�mL�G�f��DTNH�N����u��]b�P�UM@�3?H������U��^M�?E��j#�b�5�,1!
s��3H�?_�H�h)7e�����r����T86��3O��H���7�����6� 7�u�����)Q�JhS��oE���������FC�Wl��5� �'^���~�z�#Y�Aw?�,�<E�h�B�p�g �%�C�����
���^�h������*�Lw������o8D�G���>P��?�[a�A��V�Ai������s���Hs&��T&`�4%3LarG����aac���Nd�'�p�������Z�U^``9Z��N6��������ml�Ic������8�N��g�j���k�������k���j��f���E�Z����$��4$R~�dQ��!��g(E����j>T�J	��'���K)��r�V��!�24�H�H������1GL��e�a-E�R��F
_N`�,q�����jy:�4\Ct���}.S��a�zs�NoN)<����%��#���d<����F�M������{Ys|����v��qD0����+��n��H������:D�I�(�H��1Y/�k���|Q�D�O:�i`(g��a2�h�k��L��[�B�r i��^�1l����������<�4��~�5^��:d���Z�"k�e���w>q/�Z�j����D�A��d���|���������Z\p����HEp4
��iqy��h�k��l���)>��WK�l��e�-�3@�k��h9<J���GF��&	"z�f��%��(2*�����wXZ]EF�.���k��
	F��^��U�8||�Tg�(>��m"o���@(�y0�0Su��?�6OR�c���G�d�@�+�rp%����E��|g����&)�����zS��
P,�KP��������9;`��&����=4�����/��N����(5kT!�E����_&umhmd�Z�2�����OZZ���B��,/�����{�	�P���2���Y���%����>��G-�pr��\'��I-����GSS�3��.��MM��
M������Z�^I%���gf��%yfU���u01�����B��p��o�<cT������,����e�8kyb-�PU������z/g��<�M���{_�LtRl��c�e
r<5�<�V~����,g����Ck��x���w����b)l|�p���N����j>S���(`�K��������d��]���_�}�`^_?h*�����P=�`��}�7���$HBx3?='W���1�gp���,5*.j���x{:����8i?x���5���:������?��&9$bU~��X������9���2����������Go������''Az��w�����������KG�Y��Q������>��>	���Qa���&�Fnw��c�N���G2b�y��E^���<����Z"�{)]�`5-��[�x5-��vl��e�W+C���
q������*B�Z�et�}�+��!.�R�`ev�4da��_bA�F�2��Z%NjU���5�je�u��h�h�]k���F����R�J\��+�>�9u�-t+_�?��Jf�������2
�2�"�v$5�3w�=��/��Pi(R����ZxJ�
��s
�BmV8�&�����������N�t�Q�g.Q������n�nFZ��3�U`���+�C0���dq���qm�2��p�g"�	������O�K���1�#��Byabhx�BlT�)[�(�d;`�>���P��U��S������`�D�T��������2\yv_|����~3�G	���-����a��h����rms�^�/u�{���q�tJYH�.�/�NY�-P*�h��J1G��	E�
���R�[���nFm�gMU��!3Z"�:Z���3?y�����'���S���P$���1�G/���u�,������x������0bn��M��|�}D@��	��aR�~��)�Vp�Et�D��cd_8���
�x�}��~����!q�)g�<�1\u(����nY\�����1%d�����]6|���$����p�/)U
M���b�'�*�S�V���y\�\&SA�)G�C�����n���_�
�~$�p�k2�z���^�(f��S���/l�Hg�p���C�����t��*�+,�Q����q7�L��/�2A0e"2�tzz���S�s."���>�\���D��VJEjX3=H
��vK�����$^�Z_��5��8����jD��
]6��)�#��>*��hK�sJ����jv�EI0����1 ��[>A�x�X����z�Z�T�nQ
x������{�>K�(�������u����;�����A}qk#a����� ��>����j�~NG���@e�H��j�d@�2o����"�-�����O�{�\�d����c�	���Cv*���}�D\���?�,@����k�D0w���G2�A�+��� ��!3R�I~D	������|:`��]�����yN}��~�%��\X��B� ��#_U�N;��1-��S'��e��R��J���{���!���1�w�+�H����3"����_��SwlX�^>y�W�E�����S���_�~��1\�X�G�(+=5�����p�t�%��i�����l/�a���@����ra�1�pz������S0nWT��B	@��P����L8�s�RJ�)����q���"��Y�a�q�x�=`>H��pEg(%��	���T�&�����aT"�'pD/�����Y$�����T���������84��~�k�S{�GI},�)^�y����?aSu�!��s�@�m�Q0�^N/���Qw.Wy$���[�18�8��+"������o�e
"�T��Xe��Q�S��f�`W!���$��m��!'�V��<���'�t��~�$,��*6+,(�0%!��A�yV���Z��K��`�������<�&
F<�K*��y��Z������s�o,-��Q��dfXw�4lu�$�'��{�,m�	�K��Bz�
P�F<-�-L6��W�EK�(�v�sj�x�X����P��q�F�X��
����xz�R��t�hv���j4zN{d���
�L7�Z�LEB7��^P121�[�j�;�`�c����}E%_�P�Ex��<-%9�d~p�59�a�P(�(��/SJ���-I�]��������y�`�j�u�4�
�j�@.ED��� "o2�nF�g��+�%�&���Z��]$@�~Wg�-�:���z@���U�1�8�`)�O�Y���90I3���:�g_����!���
�;��"����|������r���'i�)!2���)�����*�������u�gS��\�em��R.��*�e�@Lw������a�=!��l�3Z��
]����2{==o������sD[��+Jb��-���Il��)Q�B�F��h�$WZn�M{%�#�����l���/X�S�@W�����D ����9� �LD��j���7�m��Qjo���mx�F.�����"{~+S�
D�_�o���-�vW�e�dBR�H��M�����(�W]�����a��=���C$��_~����#O������z�'��Y�:2���Ft �D���z��1P���W��/39��d?BQ��~���q��I�)��VMcZ�{2q��;8-8�j0A�G��		�<|�1���HJ�"FEC����$��e���o)������1���xW��:ikR��!a9b��'o��� �\�:B���a�{5�p�(g���Y����W�@�-(k�����&��o�'Y������)�+�b�w�%�p�C���C��������q���'��]��`����[������)�X)�h+hVxp�������T.���zj�O���v�
a�w�R���pe	� zD6����=J2/����*��TE�\���������8��,��}����V\�c|Z*������kq]���7����1�����#�������nl'C�
�2f����
�����6Z;;�������A��t��� ) �����R������:���V�m�?�_���(������
�>;m��X��)��[�v@�{p;/���;M�����!��Ci��i�[�g{�hb��Q�������p�t������{�-\���fV�5�/������n^�?��s�~
'���>��o�������w��R*��2#h
}Y��m�e��j�n��s��H�%��������]�5���7�=�I��8�a����w0V ?�ch�KL^���VB��p<l�0�,���{���L�
u����py\r[�~��5�7��f�y%l!B�i@�M�d'N��?
@�	#�9���G���K�����j�J�#/5�����0�v<�N��������R�uXY�I�������e�J����������6+�,�pp�d����DH``U��Wwk��b��?=PNlu��f[���ZL;�`��4��q�:�Z6�E-��{��:�u	cTp��c�����P��VW�x������i�L���>�g����}��Q���<;����Y����]4KKeH�r��I��Tq��P�W3bY$�0Q ��o��V�ep����}<�������m��
�m#p��K�����	G���nU0G7�d6�S,�\������H��b��?p�(����kD�NgcpK)�W�l����P"\�������"����?�&��>vk�5!F�����kB�o{cx���j�7:�\�>�����@kt(�M�\#��Q��&��I��c�#�k&�Z�[v&��
f�������X|-�f�����H��I�O�7��'�>p�����RJ�H:-������y$hM�����M�5�L���m-��U��Z*�nyE���Q`s���P`�z���\lY�z��\lY��26��[��36��
[��Gw�Y��H*-���R���>�l-��O�:��K�^����k���>�d�	�f��n����F����l��iYO�-[kkZ[���b��k�O��BS7�nS?��|c�l1�G��F;U�q���H;[(�
i��,_7�����eWtU���iU�4]�FG��D����i=en|Z��f�RI��]��m@�����*6!�NU�V��U������>.Mn��i���Q���E2��3�����v�
��N�-l�x��6Y�Y�N��\+�;5
��#��P>l~�6�U0��@6:E��*.AU�lt�6�xe/����-��-�����Y��rc���V��*�MH@��Q�*�M�@��I�*�M�@~"-��H�������L��2m?�n�A6#�����x ��i�
��*����S�GU �����W�m����Tx�6+���
d#�lvSp�d#�l>*}n
�}6�04}<������mw�1:����S��nv~n���x �����������D�U�f���������B�U��[�z �V��U�FdZ��oU ��6�H���nc��x �i�����N���B{�S(F�x���d#U�S��IU )u�J^F��H��T�4Z�FJ]g��*��9=H��m>���L��=	�<H��=�	�!�f�n�QO�
A6t{[��>�3�h���P�fb��b�����$7N�[��8o�p�Q��P71���X�U��L>l.�4�Z��^�d%p,�zz�{����b�A�����~�7|U5[{����	��C��~W���=Y#���R�7�������|�%~�-��R���� ���������SH�7����2��S��0�W�a
Z��Q�##��9K�ZG��5�ZY�Z:Y��z����N�[�k�9l��Z����)J�����n�!-ks��1�s���st�����a����q�����������.`�����:�^����'}>u��|R��s|���������F�����k��V`��E���F���������^��`��Fp�-��y=r�w��U�g��h���Ro�M�,{k����s����\T{��U���\�|���A�D���<���L'R8������)8��[�;���6�p--;z,��-����f`�Zvdl�����������b��QW|wk��7�	�O�G���z������io)B��`��4�%��e����������,��gA����%����hCoZ>��~��,)�b[�gH�X�K��W<
�Y��B��n*��K.�O�@���G��8��r���jU���=.��W�����q_o��~���4*�$�nk���@M�|����z����j����X@��&�H�l=D����x���S���86����a��F�OZ�N�W�[��u:u���*:���6TE�R~���u�����f��<=g"�f##5�?�����{�JL�]��(�v�|Z���U_���D�Pi��'�������`#�����k�*>GA��~�+d��Gs��j��Q4	����kB�:�'��;�����5�$���	�J_?��^�:�S�{8�F����|"x��o�x$p��O���D����)m���9��m�N��m��x����^�@��SP��eF%�Y����(���"i�p����J���F��	a�X�X�j�Gx+�B�~$x��E��s�������-���5����t���.B�&��,�?�>�@���~����"��ld����l>�&�uGy"x��gz��H��y����A2�g{<o]D�����H�f��B%�:'C#y���;M�W����.�W�7{u6!X���V+_�&$���^y2���0ms�UIV���g�5ly����.7�@l�M�\�d�Q��G���ux�b3j|���0���B���(6�U�U�l��h�"6<�F��Z��'�����Elx2����m�)
I������V2�j����&�j������ZO�'��&�j����lB��u���[������Z��S�fgd����J@6;#��QU����J��d�3�������*��y!IZM�U���i��0���U����������ti�~��e��y��&�
�V�mB��mLa���[��zp���;Z��S>�AU*�j�6:A���/>"�Fg��U�	�6:E�U�MU�Y��m��7���>��v���3��fM?�m�fh�tMUT��j=��h#Z�t���h�,���G�����D���z��]W�����m�U�W�3��!V5@o�i�H0���N����^�e>��]�6�acD��6[QG5@�����(B����ns���k���~R�6�*��h������D�h#B��xB���]��ZE@j{�I��/P�����%3���.����[��j�6"��.>�mD�]]��'��0���T�mD��mL,3��������h'���L�m<��E����mD���.�mD����*��@{U9LT�����BH�o��z@��H3*B���6;=+�������Q
�f�gU�.*���l?���
�Y�6��c����W���������h��GozB���Z����F�-}]��

Bw~�1�G������1�z��m&fV�a���y�W��9`���&�N��j�-���f�_�Z����lt1!�r���"���6���m�iQ�U�N���q�)�]U'k5@�Ld���c*s`�h#C�$����)�V��u|�3��@��m����Y����
��B�������~��G���wO�J�i0�*?��`6����Y�t0�%����At��c�`5��p�d����K��,Z-���/C���$�������jU2{-�2��mme��3�'vpp�/��"
G/�c��#w�N�� V��E�cw����������M:��9����;�!���j����S���FCz�;4����%�(Sn7���3���?d7$�2_�xY\"���0�j�86e2�2��A�e��r@M��QF�s#�yD'7b��Gl�F����a�+�����`�
���7��
F4��$d�v�"���
F�pc+q���`D��!_�/v�����
�j�q����|�n���h�)Q���[ &;�f�/:5��ty8�Ep��uU���U1�	�����x_ ���":��*F���T0�����M�uY����d���]#n������V0���Rp��M=�u5��e���f��S�c�m<:��c�
�L�y�Ab?��s3L�fL\� Uy8�"8�B8��b[%cn������W2���B��(��dh�<��-���17��J��p�+s�=.�H�$yd�)��/[mrEcn�����&W4����+�
n��N!�uL����!W2��T\�������G���A{��"w%c��1;���o�F����4U�>;}��|��[��7����A���6hE�4�/���-�JE�n�Y*uC�R��f���y��E�������-���Q7���F�p�+�d�7r��A�.�pbGt
���-U��Z�xh���p��:���-Q<��b�j,���.�uC��h��X�Z~�.�J��j�R?m�����SDE�n�Q��&����������
����NE�nH���!}W4��>��Vs��
���3�����U���~W5�f�]��F��d��=��$X��j�
yxE�n��+�d���<�Yz0bW�<�O[uE�nH���!QW4��V*����j<g�*y�R��TOU4j������-�#��u�)QPU�9U��+,AV_���5��b`�]�f�'�uY�}���~��TU�n�l*uCfS����&�Z�#]�{Z������=z��d�"cd
�Z���5��qa
?��N��5n{dOZ��)|�K�)|R9���H�K"w���������������V�����c�X����Do���t�����yc3���r<L��*�B���G^��=�Q0����S����xa��[�z0PLa@��
�������{,��
�iT�����V���~��TE���#��������l
���W��������+�90W�tuf�:��(�/]n�>�8Q�Gu����f�h���j8���
������/�����T����������������w'���N.O�wa�������
t��
6��������h�T�F��|���R��Z��u`vJ�l�I^)�/�(
�Q�}0�O������X��
��t:����?^zM�O�j�s~.'�����q2<�����w�����g'�������!,�Z@��p:��51]��f�&����Wk�[����Vk�j]���W'����o�~��:0�e9O�5Gw���s�����n�q���R~�Bn�n�#��+���[~��9�s#~	����X�nn���qc���4��#�^����3�B���������-�OK�a�sC�t�wC��|�����?�e�'F�W���'.���w����-n�`������>�zSD/6Y�G�;���4~�
G�F����nx�q�![\,��������e��n,�E���6����2�!	�!�8&�4������ck���f�����\-��y�f�w���J����j���C���m���f���X$��A���2�mHZC�Bew��PW-5
������x�h���$=���[��F!?J���e�������W��5�:���:���p����H3se��Z��<GH�	�0l67c2��M��n$���1���	Z!A+9uny�Q��1���(��#�L{@_$��u�?9X��7�=���u���A�eto�@��Fy>�+�a�X.{������*�k
UB����h��N[w���k�ut��o�?�?�����a�~��d��=���]t������������o1f �����G�^r2��'e���7
�������O~�n����l�X�� E#�v�;�]�P
Hz�
{����+7�G����dt�@A{��CV��������F�iG���$���W�
�.����:)�.�I��'/Y�W��� Xb����?��?J�p+>�$����.B�/&
�^Ku��K���`�U���(7��M�
#��Mf9������<����������
����	��������K�
�_x�a�����|�:�L?d �X)d�-����m�Vu�.���+0�����w�Cbd���`5E�����{�UK�f3����zs��)eKw8U�����R�V�i�h�����4�]�?��E��q��5P#�ni����F�Us������P.nW
����7�9�	+�hr�h��w�E�JN,)�������h5��R���c��V��Lu�m�|��E�X����Y� �P�<�����Uu/�}����
^��4���4J)V8�,8!e�q�a����4��������.Y�M=����!Fp�4��?s�l���
�`yw�}�b�������P�F1�c<8F�t5�sju�(���3�Wt!���9��>\"H ����"}g��Ff�!"�n�\����8�8Rf@95�V�8G�N:v��a���y�oVP�;���v�����;�N����86�m�s��Fc�w�V�ktl��)=9R5���j&�G� ����Ggg��'�m�������i����,��o�����eU�y���7[ �/�1|�n�^4��WR�R�!��{��|�U��g|��8���n��3��,Xxr~tq|z��WT�A�K���[|>�5���^l�� lS8?Pw�jt�P:E��>
�i�$
�	�2����LX�H�LP�:=O�yv����z��V����"F9IU<�i�[n�k4�fo�t#�������R�3���r��m75/l����}vz48?|{r����P>��h	�V���G,�a�r�l-��>CS(�Us�P����a��f�>�{�q��������b���T���?���c�Y���g�Uj7��V�����?��Z��Q�2pCY���U���/y�>��
�������/�I�,I�@Pdg���������`�!=M`�����"��L
�����*�9[�@�S�����;�����;��>~!c�9��2�x\���&����w� g�wC���3sAZBWX�1$4$kRR���^��W��}���eZB���B\#D���Xr95t�)�-`��g���M���	�< ����;"#)/��zE����J
'�� 2.AH�~B���a���K5����eFp��mK�X������f�5�"�h��9��������''��wW�2���e��ps�j����������w�M������������,���`�.o+�,R~��^��Od��1'�X���^���TpN����R�6��5E8Uu��s�m#+�r���;�����SA5^�*:2X=3�{�@����`�
�~B$m�[���u��%���*g���g�_
��M���
+]�]C�z�ms���B��2e�T1��tL(�F �����
C���!�+H���R����1�o���5b��*���)�:?�x�h
<���t��,Ur��K��r��et���D�������:����>U�_���#�p���^��Q�����a:'�y�r7��s1b�e<�%n��-�4��F�q���7��+����+5�/w�*����yw���B"q�[T�{��*����h.;>�:���g�`6�������3\4}w����M��O��=���$�I���n��c���S��������uiHN/w�����F�at�:`��	���J�5�g���T� +v|�������i�N��6V�4�T�##��7oaL:�����a��:Z	��!�.�p��$������n�"���4������D���$}%��f�Z���n��)+��D�Bp��zP���aP|��Lu��I�t��`�{<����d�������G��W����~/h_���"��|��
����,$r"�,���,������:�E����0��t�nU�I��d�x���8���,�c�S&g
:#��'�������	>��=�gyf�q��H\K������"q�u'U4<=��G��%js��g��G�;}2�_#���`�e�P��FGP��&�]�J�rh���%,X�r���6$�6��!�������@:��`�V���?����y���-��S����`'�w��R���8?���<��7O��|z����L�[d_<��D3�1��V�����|	&�kI���������z�F��p���xG��1������K������a}� uoVK�+���;�~����� ���Y0�����b]�(���ponB�3�p�������;�*�m�|�� JL�(�4�%�-��~NSa�Cz�$�
�������$6
v{r�;=���?����/��-���0#N������{�Q/�������i_����{�V�(�}/D2�su��FZ\1��~_�\u��-?;����*�1��j������+��+D
��G�����E7R�N��:������7�YoP��'#0��d�PG>��@��k����S
��x�&�m�pA$���-��C���w��H-�8��*�~���T[7bU�"�fj��sFp'���`1J.p�����Z�.@�aM�2@Pd�S�l��d%�#��
C$��6/����G�Q8���c�(��]��vK�!��mN��}�9�uS�?Y��;�k-i��������}m��G�!���
�D������@c��!�~ZI����k�����M|o�#Y�V�a�og�����~���a�%��L:���Yn��Jy�iGS4F�Y��2�cCX;@�!Gg0�ZX����}��n�HK$��i���X����za7��C���/��7���I����4��+&�N���FR��=�*�@�H�d+��D	��� �����C�F�ikp�s��/��)����lQ0F�*9"\
��]�i��]�qb}����M0�s�TF�OK�I|��G�Q��AQ�I���O�-�����\��1�)�����LX���8��2���L�������Zi3�9�7�d����H��H�����g��Y������Y�����~v�<����~����S8�:Zl�Y���Q�2L��d��`*�����#��<U�����j1t��`���)zc<�W��}(J/_��?������?`\�H*d��)��MF�!��'��
vE��F�{ZL��Y��N�_���W��$��6��f7~���n(r*��46�a��l�5s#T�&M5z��ARs@5��������Es��z-
�v�]�0tQ�6���nf����JX������uX�^��u��^�������i�Ww��ii/s����*>���}�j�<JTv�s���-��<B�+�����r��<��`����n��-sLU�2��h��g���O��cH��O��}'��:�.�Dsw��/z�Gf��n�^���Q=b<���4�-L�Y�4{V��f�J0�A��������n]��d�
\X
C�[j�Y���W�.�`���w�_=�������#��0� ���K�����;7��M�����7����mJ����	�T��i0����*�c��]�����(�k�����g�h��(%$��G3�;�E���N���?�H�YaR�2�";�~z��%tG?�#�p�L-�~C�E�?��/����S�%�����sC��9��c\N
�b<4���V6��
�����
�T����o
B������PO@�)���.o��z���;�a�F�j�>�M��Y�>f�"j�hRx�-�^v��Q�1��x�j�7A�J1�J�����(�.=��-V��i4�)B|X��;[���'������o�'��m�����#~[�E��3	R���_���m����,�T��i�w|�b�!U�����7Zx#�c���n����/���4�p�n��"�|���B�j�=���2<�=�����;-P��d|S��"��
h_ �������)��rX/G���:��cxt|�^C��r��H�ozz4�{7,1�"��1��;u�]G�����A�u��_4��/<��\g�����7�Fw�3^~���0��*"�t0�\wj������	��K8�x2B%�b!�j����7���������#jr�r#%.a��9�3����kH�!��S��5�xO�����������.�������7}��u�fN`�E4����t�V���b�
�(�1wB+I7_�����������E��M=��N��u�U�Z�K������/���u��L�����"��j����>�����s8����_f�z>��S%�`2�}��{o��:��Q�t��5x��F}���e$ ��/T��U1���_��)c ��?�}�N�0���y�H���)�
Z����xw�|L��+��^���W���UE�l�?��@���4��+?��DN#e�$�*#)�� r����gCJBn���c<��M�[=���(�����7s
/�;�pQ�y����_��������Z��W��d%�>��So~�����` ��S�2@1yt���.q9�A0��7J�O���l
�q0��w/�e
ift��I�fRf����� ����;s�<�]p�M�-��E.�"qYd��4��������P�.*�������C��i:��j��z���*�r���K�����Du� a��IH���6��d	_�|����`���R�*���[}Te�:������F~�
;���8��?9�3jF��/oY4�����Gj������mw;O��F2���[S�����0���u��;��V��c�C���+vE��#H,��W�Vp1�%��D��RB����� ��
��
;�MwS���������M0����r]��C�����J�4�(Y����D-l�"��`��@l��T��h��%��a�1�!�p����O&�� v��`�������F�����	:>�&j�:���{��l������q�H����)xf��q���#�;�V��k-egf'�:l6[��_i�m+�s?�E|�$�$Zj��Id�,E�W�B�PH o��'1��T�b-^�U��}7�>#�&�����y<����
���C�:�D�fs'�n��3B$�4�v��&a�pR�2\��@e��7�-��_�l����y}�,G#�4�nK.�'/���'�ZVq'	���
	K��t M�F������V"��F>�l�O��i�mx$�+�b����FM�}����>5����n�x����}�+��EHm��+N�5T5�a���v��q^��4����y�kg�w�$��k�kM���iz�D������k%�v8G�_Ls�h�������%�I�G����ii��*���7DwY��S�h��
���K�.��yQwh�({�gT�������.���b��~+�%Q�A(�5������qd"yAUb�~���f���3���h&���!|
*@�7�}��7��l���fs�����w���z���C����Z�l�0�kH��~������bK��r���2�����O�g�"A�"�b����(������U�.�UaC�_'72\��A��	�4��zK���<�'���T�y�L����p��)��~��qvo�"��<@�������/g�g����q��4���x�~}L_MW�@�x\^T�?�_���������u��p.n~�+��{�DY�h��;67���S0K
[z=D�n��z�������lp��Lh������W�\*_5����qn�:b�zqzR�ln�����j�!fB��l�C��&�2@|���7`<����l��
c�c�x��9����dx���&�?}�P��P~����:��[0���i���	Vxu���.�j��
��@*<f^0p
�4.�A�oN^��a�Z� ���@����K�#}�4L���G00��������>jw�X��^�U3|;���	fx�3��0����(50�����`���M��:�^�`Q�xg���0,L�@����WoO.�w'������N^I����d����:��bx�D1^�5Q���xz�Pl0Ql�Q|l�p]�.�g����H3��l�������<Wu�l�<�l����+�l������
��x�Q����q&����~f�M����!0���;�7�M�d�*���g��j��m�r������vCE��d�Xd��_
��nW��|����������y���X�P�F��D���������m|5��'4��Ow[Z��2���}=��&l�w�fo�������_.d=�����$S�M������.8���nvu4��3���8�����Cl�{�0c���aL����2OG�2�4_�����M�������_�����3���2���3���>h_6ruM�>���+C��\�$8" O�������wv�>��.v���Fs��n��n��n����;����K�T�"�9
�Ow�Z���
�OLx~�����T+���Mx��Yp��i��W��$�uCr,l�p��`�����p��p��p��a�i�Fp���-i�/"���_���~r�l;W��-��m��o���|i�^�h�C4�0I������h�N��Qkv�����o8���\:�����u����-�"}u];��F���������7X���
w������?h8���Y@���0�o ��?k��Z�R`�;�y��<G��#D����Nt��5F����������t�'�%V��������Eo������e� 
����?
����Z�.c�G�{�����i#b�ltA�TH���YBzY258������yE�,��$oo��z��8�,�W�3_�`�����!��AfY.#����������^�so����O�#��f�hG��p�I�X����{����������I`t��������N��<}����\��<3B:�U�/�tp�^!��B��|���<��A������_��il}&L�F�,h`��@<�QO_���L�Q����������.��={sq��.���
C��8������+
G(
u�p��Y��a��=���{�3����~NP�@?s��@Wg������U�^��DH#��z���H�y�:�����-1F�����-%����7��$)1KB��`�W,y�/@1.��0�_��~��.������Mj�6�IPe�>�g�5rN����X[��P�k�j���7�����}<����������L8��6o_���lk���7W��������1��[�{W�,�2T������9
y��C�������Xs���4<�U��D+y��f#�� ���\���Hnhhb?gb�a`?��,]�N&|O��a2g�/!?��2Y���/�Bs6�@��3��q���������C����8����������A��/+��A�{+FY����:Ffi��xfo����1���yH����=f����/^	&�h��1��Qr?����.a���N�
${Fc�'����7��c��w��<�,%k&�c�����-�>���G�l�T�7��p�F���$�����;~��8X�<����qm3��M��^���k���x�P�s�i�d�[���Rx�?h�|Y4v��p�M�eF�2+H���������wuS�Uk8��4�I.7_ �
��.�
��K.��k��K���B9�(�a����U�`�]�$5�B�W�PM�?�"�f.d�L��������&��fC�#K�a�v�-�#�����]a8�e.�+�{!�>Y�����v��7����
�N�|
6>���xC+q��J���J�}��G��^<��N���/]}��!�i�o�eD	}{����?��<}�_�'�*�� |��n��v���
sfh<fGQ��aA��w�������e}��:���`dyH+;���iw�Ab������S�!+v����O��5�"f���9\�/��2\<i���n#)^k���u����Lw�9[�U��>�%A�+v���%+K~�j?���T-?'����0d���w/~|������3��k-�m��V{���!3����D�3Bx����3������!��^���Y�����E�f�C<���58�U���N3U>��W���������T���T�|����J����Inf���HQ��	��kQ�fL�O��_?�>���H������)��(0N��_3�fD/�D�������ox8�wl����������{�Hj�@p��.��% �&E��!/������!�����T���N���)xgy�x���s3�s��l$�W<��l�W�����|��w"#��	_��K@o�=�}=����]x��.�y@.������m3��B�v�J����{�\�o��|=����\x�F.�y@.�>#[9B.��{�����6���~	@f�7��\��A� `��x�n�A�1}�j�i�.��|>��c�������e����3��Za������iyV#��~����.��[�
�{��tZ��6^���8{����_E���S�%q�����_Yno����@���
�>`#�|�CyI�Fz�����u�m1��4����X�C~���c�vn���+O��Y���Z����'Z�M��i����"�e��)�H�9�l4�%�)V����c7]�����	����������6��S1B-+������[x��������&�>�Zr��-�P���$�4�a
EC�)��"�j���^�������_2)n�+��@�����4}�K��n����}����'���K�m�#_{f���RJ��o1r�������7��2!�n���j�+��ys��>�9����(?�a���$�����2����<��g��1�}0%�7��vs
��������'���->@�S#li1B�3���kG���GG���g?>���n������t&��|5�?�QE���~���<F�.�W��q�f��&L�k�6t]w][C�c��?�m{���i��n����g���������dV�[���������=�]+��L�|�]/�xb�?qg�tf�����������eM���c��#+�^#%ro4��t�k��f��<�j������&�Y ��_�V�_�\-��b��:z�yy�[�4��^�*��2��M�k��������_d����w'/~�>��a>7��k�R
��9Fi�{ ��TC(�J�`��&����kd.�_�S���sd�"�'7FJ�b�K����D��2D��l=>:_�it6_����h���C�A�������-Y/��
����j���'�J�:��c
���Y�K���������D�t|�4$����O�O'�:�%�ki�?���74�Xo��_����[�%�����m�_��X�wl����X���O��4O?������x�d�y�^#��P�[CX��{z���)�K�[.����P���y�&������aq�[c��m�$�F���Dl�Bk�y��8e#������Z�!����JIq1,!�"�b�x������#f�����M�m��gv�-e���y��-Yc�F�E!B&��W�,�M^Ek��&�����Z,M.{��K��j�>��A��S�pg��@�tGY�s���3P��e`�f������]����r�������!����	�#>���,�q1GXl�a�b����������Y��r�����w�.�����e'��L����m��X�fRNO�Z�s,����X[u�p����r��uq�����1YL���kcr:����K��L)��b��Y>^��"�`kk�
��P�{D�M}�P�}wy�?���I��Z]�2J�Uc�Z�!�1�_���]~���
nT�Xo?P\�#Vh��D
�^���Z+��n����r��H br��v`tkmn�bb(��%n�(������l�D�
g\7��7L��^���w���f.�����6�6����S`m]�Y��r�����������(�$k.mWx��$�:�(���%2i�*�6��d���Xi_�����h��m�Ii���.Ib��I�`�D�����g}[r��<��
�1&��o�f~]k�u>��#�t�����"U.}Qs�	kbl������"��]m�!h��yg�M�5�_�.�U����Z^�Vv��"*�]�2*�teR�:�b,M�Z�f��%��v�?��Mu�%,F�������_��V��ic%���I���r�5���H�lO��������#���M�EL�?=:��g3���(?���&�7G���x�xDQ��d�vm|t�Z��={&�o����<p����i��(N����n�,�4D�����H��X�����}s�\)���l�{���F���c��79��F"rm#����6��A�~�H0�W�A�����7�F_'7	��9�^\�y���r��i�rg�t���GQ�\����3��HB��A�<��#/��}������X.�F�`dE���$��� 8�Ah�.��]`�v<��X���D+��GovX�2����g���l�N=_<Tq��PxPl<(6wP�p�1�pt���!#v�_�G�-�Z����h�X�*�Id8������EF���(����g" ���(B,EV��
�IA6<���j}�LL��Z��i��R�o������&5d{k����oLi���?����j��E����4�_���5|y
��q����d+�������?z/��L{����������7/�^��?
��?mv����?�?d�#�j�i��b
��s��V��#�'�_T��������z��o�3��WOGO~�>{��S����E��o`����i0��>����{��� ��>�4�al�l�i���$$�+Df����|GX���t��D�����j%�Hi.9����kD���=������S*�\9D�7H�H�*�I�)!n&����j��vp�i<�\���Wx�Gn�@����z]C�Ns<3��^���%Z��(�k
�~��q2�]M;[i��A��*�6^���6���7�5�/�I�_�8�s�
�������@��{{~�����K�����_�����)���?1F�����Y�~�%Qm���!��D�ac�&jV!#���oF9�jk�����pO1OMA^S���yjH)�t�eO#���!�����T�?��Y�i�J�v���J^f��3�p��)�3'�����AV��2<�ZV���LL|�s��/#�'��j
2�E��$�����F�"B�u���$$���2�|�0IF��(D�d�^��4o�xf @
S���A�Lo�4_��D��K!�$�m�H�,nr��h����brt|�H�#K"��j@sd�D<`X����������4����������

C���W&��j[��Rc�f�����Z�j�n�h+��F��^������)�0�~����}���5�43Q�UE<'�4���t�_Q���&�JEG��O�w�r�c�q}C�?si�E�t D�b��+E�W��3��B�p }�*N�V���u�?��VA/�c��X�����������S����{Y_�KrOL&w������Xq7VE������n���`�w�y��C�Y�:�pW����m�������y�����p^�|6e�=f��-8��e� ��|�m�N�h���f�o��������%0G��=�����0B��F�CfR=��_b5�8���o���z��T��������z�[� B��y�~^)�)����(��h��	��!�2�G���TC@���g�*����������������G�g�:��l����yR�����
��.IH=L��� OP�x�'�R���AJ4�2�z�-�~�=�����E��I�e��'O�&Hc�����+
f��g��������P��`v�,���������8��e"�x�8TTL�ec@C��`�@ /Z+oq�7d���\��Fa�#5��	�uj�D#�	/�>,^7[�L�4���@�[���_^N���*]�b
������%�G
������c�J�G��UN���cA�Y��#��v�V��������&�u7� E��A�n�a������8@�y�����
M>`�9u=o<6���q������*6��z5M�`!�r��<��|�e�Q���nO�
���/��^*z"E����X�";bL����Wc�x�����)�S���$��bl���u��1�$� v'a`������K�]�`th2��B�A�~c��b���@�Aj|�<�L0@����<m6dz<	=;��;������������}����b����.G������H�{���#Q�7GL����u\3�:�gM�pMO��nT�����n�]N.$���v1�l~}������P|pYb,8'NX}�&��h:q'�Q�Z�lj���2�xq�}�Z��sQq>H� u���%Q��lI�5O'�L�Q���E��jn�^�bRsNV���$���B����8����B�1���	E�g{-��D[���^��Tf+		����h���<Dif�l	��L"I
HU�2n%!v����]��&�6�w^��5�����K���[�[n�Q����e���	Y=W��������������U��7Nu:rE Vy���a]�o���m���u�6'��1J�������Q��,s�B������8�8�TST!��t��/`��c�]�^L�K�������o���7'���/���'W�������wOG�;� x���'��e����)x��+z��v�������z�JF�K�+���N�_g���F�O]p
XZ}6��[������F}�������#��P���'}�_'�_���>z����g�W�y�=����z��
�h�q�}��a�n�"a���/��/�������)xQq�dG��<���,�P?Rxxq����=�<j�[�Z�Y#(wp����$5U���^�6��
��]�����9qQ'�2�D'~$_�=�	�����&PIH���W&9?���o���km=���������g�'�2����N��^^�=9�x�C�p5'�?��)l&?�<z/q�&��H��C~�o>��S�����7/O�[�����������g�-|�G����jG�	��6�
�{u�(��N���r���z]FP@U��~���v���r�a�1�w�7���D#�p��!���|
U�}J��%�>b�}~�eB�������@�M��v����M��IVoBv���hv�WF}��}h��D�%���S����%�#�O�T�P4�!�����9�="R�?}�-?@����R�l�S���$�NM���9���������("�i3�L�k���ipVa��X{A�\��'�q�4{��yz}������D
G��_�`�G�4-/�eK�R�y���K8�7+���8��4H�R$�x���)�c"h<Y�(q��/��[n�"|�� �O�����n�
��vD���7@��"duT���"��#a�j��Lb/���f
��UT�g��)z���:g��b����"I5�T��F+���^Z�"���|��8�����i�B<V��[b���x�R!wP��G�L��� 7�J�u�HM���j
/������]o��
@��E������k2��a�F�����:�n4�|����&��mrZ�~��m�M��7�3�(HQJ5k���7�O�����U��-�Y�3
V�n�W������
b7R��
x��:N�������$���P������������mv�
d���W>�~5����I~�c��cj�=��r�uF�%A�b��}��Qv�S�oj]��X��,4�s&�R�`x�_�A����]����$��AC�
{�����8a*�}0�����jG�BT�M�����$)_��wa��8��O�����kJ��op��e�7)xQ��43���=�i��T���J�C��n���Y��������-i.ab�$��^^	2LQa.��t�?��'$%�<�Ty��.�p��2C��}~JK2&�_J>��#��wGL���2�:^����_%��H��<f�aVK�V�<��*�,36)QOB���������"��������w�(�L!me���mx@J���H\��q�LDI�k;6$k�Ri��\�eUK�f[�H}`�\%�u��zV�����=!Y����V|�lh�(���U:Y$����Z������`2Wn�R0.��3x��|_��B����Ot�-�����Pe��
���Z��#T$��}�]>n������UDu90"�-�w��s��S������������@R=�S��p���U[O�51�i�2I&��C����T��O��fsZ���4#n;#�H#@C1"��)~�J�ka��������t�;��PX��S�dT,��S��LA\�k�s�e�V-i�U��&�Tr�Q*��RH1Z5���{��O�_�wA�5S���s�
=�X}���Y����R0R�
S��/���&��T�$7��6Q�bR'��H�7�S��z�s��d7�O�W������{�5�gns�!��-`�7�D�j��'���K�?m!��Dr����_r��\D�q�����$��w���������x**��0�9�VP(�
Q'�+���I6����g!��bs8z!%�NJBN!%PGK�d��)F��-n���2o�4x�+`k
�	��g�W@SXa�)���6���K�,�+{E%�l��*�<G�o���BsL
����5�+�X��������GZ�(ht&����S��@�FF�g�}��g�8CB�H�_W�j���BWc����AOpl=p�U�Y<:�O_g�U��&�#�g���qFJp��y�IJP����S�VU�e����F�=C���Zi�	����s
��l����	*���|K�UV�fI�K���bI���	�����X�pC��u��:7+�
�d� �vGe�6�m�_A
oq
����d����c�tW�>Z��+�{���{5!b����2�Y���I1u��8�D���RY^hp[ep�I�O�eE��������
2�V������R�Y��y������E�X|#��jJ�������
�����H]-�5%/U������`�����
2;�U�jWV�~!rY��M��{_��D5XeO��zKj&�����/pX�|W{�������Z�	��</{�y�l���l��5���i}��=���^�=�AJUi[��8n��l�I�8����_"��|�	@���/6��_2k"p���Y��j=�}�zu'���!���E���_��n��P�T�H�3�*{��"+T�eP����������:{���.���M�IU��������	�G��.^�aT��v���*�@������_a f����=��u�`-���f���nWg��1��pJ�MV[sh�~���L
-�<a��bN8z�m����DV�mId%*^{���p�o1h8��*��f���������.��0\v�'"�N;T��.�����p�AsrfvP\
�n�x��amI����*��l������q���E3�K.\,�{�5�.t3��)#�yM�=)&b�Q��-�$5[��M��
|a��y0����i\��INMu	�&�(y����p�l��Y5H
=���]�"�f/}���B����L����r���;LW��*��*���A�
�LqL�*8�tC�VMIq�H�,�J;�3��Xl��i+��B�J��1�[e����
�
aml\�B���J�@��l��f��|��Nz��Ya�b�/�G�
~,W/�PNT���]����	��8���-E�-���S�It'���:in�
A5�+��^���M��%^auUnm���t�����2��-�?��
�Mq
���PFO�j�H4�/���������~�%=�����k�=����~"gQ�"$�u�K��X�.R��"%i�(������dX�v�'f��Q��j'	���H��
�D��'�U-�m�G����toy�x����p�66�=�sR���l�T'�����/�2"��D���E�����D��rFO�y"TG�����
~�%Gt��2g�J��w� �s���z�0�l&w4���fo6��7�<R��#��L'�����g��#D]:���,T�43��
$�I�Z���T�"��G��V��rC�Hu����kBOJ��������`�ieg��W���[f���#���[��p�\\[�2��P�#���|N6�xQZ�
BU�C��k�I�=(�����5�,�9EZ5e��h��^$����jk�� Y-P�s- (i?j��#�-(}�o�&KV(H���=Z�������'�nnl[+Q���E�]���S���,O���IUH��|
���
Q��Xt��.�jO5#�0��n�vH7!���b�'#|D��/��G���[��_C��z~�$����`D���o�����
���5���E�h��d�b��e���T����T6�u_�?w�\nWW�Pq���-���m3j�.�W�	�l����\�<H����`�����*���_d��T��������a��6�������!7��P6�rFZn�$�t��z�;k����������[\�l�Gt�&:sIw�K�����{S��2�[�~��%��WR�o�W��e��,[�z�7!�������0����DNTJ��������]V�0����p��,D�1�W�%�n�v��`	��v���T�����f�i���l�EK���8=Y�z$�~G��#(��[f�
`�>-V$4�\\U����ux����<��%���]���H3Z������v�d��l���{,�����=���{��������	I������4��=Rb;�����������-��!S-��?�8�J=O#c���7�K���T��r�9U��D���E�=�f{�Df�Z5��Q5B|���~��d���j�	G&�����0�>������o�^��=t��V�K��\�� ���[�]S���yv��Ql^��}���_�]��y�f
�� �2��,V�K
I���6�<`�d�V**����R��e���8[�,���f���+/F�2��9D����Q��a�UD�R�(�����$1��}wz��\����Mi�����#N�X��R��!i�J\0�
���"R2��Z5�1�����eg�A~i�}�)��|o���y}��$�_C�0
�F:�F����[ox&��z3���_o�,�_�y�����.��8�i
j�M�(�S	��O���OL���Z8�D�Jgx�_��q�L"C������b�S���5��W���������/~x��q���"�x�%A��mt�,���������]���X��Xf��
d�Pd�:�cL���>��x���GTG��fT �.�_��1mH��I0�"3d5{,���%�b"�������B�!���j��INM�������Erj	��������
��x�q��.V"F{A��*
VR�����~�5�	Q�$�1U�f���0�w�4�D'iZ+gU��K�4V�5�#i~����6�Y5���_7-DXF�/���l���a:�D2�Z5���	�75��T�9��0���	�}���������
?x���x5�<�(BM���������������|w�������O��O��Y����������=O�gZ2�-F�O�
��[I�W��(�^'>�����YO�'+[�
�E*�(_��������N��g�p�Wl!���jMbA����������4�	�ka;�!�����W'go���"�GF\���_�
��-���K����y���%:���"��l�%f���x�_6�:��l�R2E�0T����K��"F7P7J"����e��$�\p�u����;������ ;:_v����m3�|�������'/��a���t������om20W�P�� vB�6&*W�������3$�$��*���
!M���}��=�m!���l]�C�� �_FS�������wJ?)<"�r���83gvP��t��P�I8Z�/+����}&���O8��&,�A(�=�}��/�?�T9l���N�5f4�<=�=�������U���a[�&���Xab:���N+6�����oK#��������^�����6�I�h�@��2�K��
�!��|XV�$���-��1+l��f��r��IV�*�-Yae���@��T��)�}B�-��M�(6�������*]�Xp)B|;6M�����S�PW�\�PA&��>Go	���Q�i������p�^)Xm���]���+��[+Eh+�r'�o���������'	o��|S�xv"��e�
���`�0�����T=�5�O�v��E�e
h�T�mL�H�����j�����4S-4��T�.j6������	����"��(��*�}�f<A�\4-Sr�C���J��v`��4RRP���#�^d�.[e��y���b��%���&��R���(CR�V��b3�J�'�E�6\Z���IkyM1_rJ�LR�pjDZF���D�LJR�Z�rJ���p�������	�Yf�9�����J��W.f�����A�������Sv�F�U��\4X��@<�tDs����u��z��.��D�������!� ����:���#3pm��.��5���z�p���?=/��*��;�1�������S��8H�B����|��=���g
�����B��dE<����;O}��
���jEb�WH1����~6�yI;�M����+��9\B��8���:�`�vXJ�S�
U�TUu=�H'F<�(n������m{b��H����gT�b���b� d���Y'�D���g��pg/\|�ey
W������B^W��~��m\CBa�
	�������+�9���
r�eut����X(�L l]�����h�����ZQ�T��U���{S� ����$����?��:�����]��"�v9(�|
��eU�`	����H��@���?E@'���r.��!3lx�}
���������A��d=*.�!zNB�.����W)q��>����0|�>��Be�U;\XW��[��U;�8W������v�L����5��@�ut.:��P����7�<����������[�*���������V�iU�G�����
�X�����D�0��$[���I����V��S
���"�RYGh�	U��.��M��oM#s<��ihxrI�1�)Bel����Y��a���!�$eN�^�	���i��H�#���� -*�PV6?V��l#��=�BK���@.�S���2�h@V��i�>��B��1�c��,���S��Q�c=���p�&��T�O H�AQ�)s�L���'h����B����_Pc-�w�l��R�|d���
yB+vE�8��af��eFM6N6K�l�RP�6<�����,��;#��L�X�
8���N$�c�W%�����	�� �B<����c������upq2�vAiW�He����D��� ?��"U�z�fb),�U1�a/��E@��t
FfV�6E��������-�B��������	W�Va\e+���V�RRIWt�{e��irg��gF��33��%g�R������:��H%�V����:�2=�o�mt�5��m\7LaH|�0K�^7���u����&C:��+��+���.��
���
���a��\hH��lS�����^R�,+��'��`�o�bh
[�����U05[EM���_�,�VI�!k������i�.�5M�"�E��=6^��M����4���J� uWu��_���E%,��U���+aq�\X\��@T�t�dq���Y1��Q���q�1�!������&�\(R@�����?�W�o�v}��WW��S��Ua��{�:1���rH+�����x+�t�E_ p�E��x<�z������(E�L%���E���@}6KH�//PQhAy�&�VR��{����j�+���%`Hj�i=D0,����"ZOB�(C�[�g�
'm[N����F�����Y�N�C�f�b��o���`O�o�"��Yp~���:A;b>x .X���<?Y�5Po�uCiv���I�P?����g��SG
�e%B|�d�N�E<��<�l�Y�D_|���%����-)N�*���h�W��~�3����Q�f��}�������f�����v�����r��qPC���;og ��j�"�$C;���DQh�^4{3�g��.jiwA����H�����J
��f����
��Y�&����P��(�2�����;�%��f�bq���M�@�)U��-$%��m���V���i�~m �F�������$Y��9M��z2	� �������@�����8�>���<!�����" =���W��h�������,��*Z@O��*�+�=I����5u����Y�H�����=�����9O�,s�����z�3Z���<������� .�"{2�cV �{VuB`���w�#�r:�)�(/����T��k�Iy��B�YaG,.�z� ��r#�4-wAX^�M���z���)+��
J��-w�	��21�
����_������
�W�U��Z�z��U6:�L
UOG8�;��P�(���i`��p<�Xz����:����/
�Q[�8jB6�LAv&B#���{K��lkz����k�P
���a8%ut�h�u
��&�4�d\z��c9�R�*�"���{��q�_�`������`&�c��~�Bq�7�\���j�\��
����*@5����.i�WI��\&�B��������{�����+�\����Quo����z\�@]�'��,?���x���@��\�i�"�dTH���W]�g�E;r
|�B�%�X�+���D���J)N�Z�b�qk�Cj��d����RJ���*JTU�%
�^R�i�h�5l��#f��M%�����JWF��#�����*9�[z7�k>�a��0�3���c��V��H����`
.%�P��:����_�-�gF����;���H�f3[.;�B������@L4B<����vuw����R@�&x���Z�����Z��j:��9!(U�C^ Mp��HkE*����e�BP1��5`��:���7��S�5 �>1�X%�y���cm�,2ru]p�����Y�o��F�b�5��xT�:���%���R�����Q��^j���N��$?����,Dv�5�M�@�4nYI�s�j���r3��};�y������k�����EdF^[GRX���L������T���b�[�����1�����r��vw�2%�gt4�rVD��P]�U�M�'p��Dl��4�Rq�xO��7���j�jb���z��YrrBdE��FD^����R4�>�)zN�evCP����

���sH�!���q�3�TV]�����h�����a~�3��
@�Os&��;0��@�i�L�o��LB{"�H�����f��F�����L�d/��!#��&���
��@N���s9����8����:�JT���dZ4QL�4�Z^��I��-��C�u{���&C���S����9�z��a?�1��9����a\�����N::4�]�(��`�����0�7��dq�IC��nw�>1�2s�=z��8od�C,!�2y���5��AsR3u��������3��dv�a�]�6b3p�c�[�T�TM��V)��������i�x+�q���Z�;o�����4�������8T[��Wa�(�MS�2����c���B����z���
���z�0Wo�;v����1��,��
�k���=m�J�i�u�b��%���-�P�:�i����P�bA=�%B=�P�T}OSY�.�������MT2Vf��vwo�B��t.�����%����a�v��\�R�1�)B��m�����tN���J�r���B���������]�p(�Z�q�i��N��FzR�o?��Zk`�7Q���-�\�lu]����C������o~|}y������9�G�eTs�C�rQQG�\�9<)���nOMc<��3��B�U�9#����yP��e�c��B��]\�f�V?m]�����#�L�P!�r�x<�D_
���R�:
(+��L�~�EddO�a4��dxA��k��ej!��U3�L5��%�����*��$�w;��n"�j������T��>Z48�4�$�Z�X>��X<���a?��a�Z�RhDIQq�#�r���"��LQ�4���R����
3I#��ie6W+~�DfB�Y�3���Qi�t*�����D�@K�F�6�m-��RO�z`��\8 �6i��1�j��w���M�9d�&7��z�^���f���|����7!|�\I���d���6<��I=p#��UB�J>'e�I	
��1+L,�����e�"$�TE@��6l���t����J=B�U(�KR�sZL-�S�eY!�J��a��RdzQ��6
����x��[Ij�f9���rA�T�M��nvC
��CUB�D������d<�}oH��t5bS�����rd9�[9��ng�:�u���)����SU/+(�e)���S���O0�����ip(61��?U�\�j�v��@��2	��q'���B�Vz��jm��_����M���3��@�Ry���]|�	�l�*�\��k���V�b=����%|�g%��B���^QW��*-(��L�O���*���������)b-�WM��1Nl�j6)�Q���b�*^O����0El���v�n[.�O����H�6u6^I�>v#�o��,�<�JW#�0�P����Y�n�����jn$X$���%�%�H{2'��3B���XE��9!��D
V�%�^9Q�V��U�U�=��J.�_�zj��-�i�+����q���@��<�UPV^�	t�����Z�)��"��{���kL�"��U�a8#��������y���t���/$�������"�Z��4���4����K��~O���+ly��L�� �k���!���a��&����4������mG�>��c'��DZ;f���*#�[����!j���5gS����0����p�#��{Y���D�q�%��\�1�Wq%��C�	@�����w�����z9Q�O@�m:E�������j��W���-(�Fe%��&��S������
wL�5�����D#:�J-��[L�.Q�5�@2��z�(i�0M����D� ?V�b���=>�	U�r=de�4~���`�t����k�����k�W.z�ZQ�k)�Ff����\��U@/P��eX�wj�Yyf�����T~
��2�8Q�r.
b�,h9�=�N^AC�s�P.x�X����&�9'���h��4���A����7Y�xl���r�Y
b��LN{�_M�"��a�^[��C����x�TuU]�`[Pj�a%���L�"��L�E)��3zZ*��P�:���<]��Lr%��R\C���&do�g�P[��WI��E��'3C7C9%\�I��m%�p�41\G�?�DS
�JV��*��4�nD^z
����[a��]HU�����[��r��[f�<���$7T����]��2�yU���SDA�$(0=��	2,7�����*�`���C%��O�`�0��������7�(z���dT\>�#����_#
a�\��&���R���u
��
U�h_�"��F��0��������F�A�������_k_i�����-Z�'���$��%�78��8*4���Z���)F���Hp-�
"#�X.C�'zA�j�Y�����qq�w��
x��D:�����4�|�S����.���n�����7���j�^,�-�����@�h'I<�&7�U���2o�k�� D��5�*MpU�h��t�>�8_�b;���5�w��N��3��+���9�7v����B��{�S8���_#	�
V��	��$�����j�KI�)��!��c

;�+a���c�!M�?���K\Yp�~$���[���=�p�#m�Mr~P�L^���H�����!Ec���"�%�<n���i�E`�Tq��1�M�r�����$������O�I����$b�m�q�"29��JF`b����DF#*�h�\����B:��c�&����a���	����r���2�}D/���G52��o_�$^�=����?�-�,
n�����?���N���r�`�$����Oe����x�G��2�g	r���N���ISe����N�����6��;{~����8}qq�}>�i�5�������)�������<���(�aD��Cu!C$��	��@��ID����X��/�;L����W���e��^#����g,��E���M����X{�?������W��y�����������&��_�4S��������?����������W?=�G�����'���1�����<�������H��V�4M/kOI���LR1�#s���������=�u�<~#�e5���1t�1������o`Ld�c�A
������Ek����D�vl��L��u��
M7u���!������������������h�������z�g:����o25#���P�B�sMwfO���$�^#��I��i��5�O3!�	T������7��� ��s�����j�cd�����HU\�`�u��q�J���k����3�������Z�����?h\����w�D��]�����[��$���w������"d5u��&�.����uN����KT������������O���>F
�A��"����L����&a���V4-���W������'�/�uL>�:D�?�W��C�&�N�����I�����%�2��d���7#�T����'�0q��.�V��
MjY1������6k���;,�sdg�NK���\j���t|����Ax���oA�����4�G�.~�eA��AET�"�M�*������|�TAT�lMXh�^���B�i���\�`��MM�L9�U�qE���Y�S}�"�\�
/�"����+�*E����U�E�]���"��dP��i�P�7@�i���reg�Z?��6(��2�p�#����@�S\k��H�C��#��
lBxE��o�W���l��c�Qk�����/Z�%��	4}���sOG������/l�>y��(�],���~)�����{	�5���A��T�3����f�2���T�V�]
���K9Z�v)WQ�]
R��[�R�v+W��.��:�S��,�g�BU��$�G{��i���^�X�����b�.�eV�,�{WU}��?b}M����$p"@=�'�_�|x��-�
�j#��G�������7G�~�5������?\=���^�V�'��?i�M���<�1������r:����`�/2B��������D�^�Q�[����*\d�Q%�vA"��#����Wq���1�A���$�����h���������|��Os��ft�_�)�O�6L4�6��"��
~�������6]o�����p��A='�������`�/9���h��.��E�5^h��f�-X>N`�-�:f���
�#�����r|�`A#�2��3�R����7������@
y��9(����(�P���\iK�Z��5�CS��-�R<sqx��� ���`�i�0��[E	�=f8��C�R�X�V�6:f#����������FgC��e�zF�g(�|�p��$�5#�I��\���Wd�4�a�%
�.�q}��1|��mR�KaFK�h�����-�&������*o����INq/��I���x��5�?`v�k�z����b�nR��6��2t&.����.��a�0o��������%��|�[AQ%�"�YO�2���l�i���%k�n�=T|n��6�h���S�0����
u����Qp�r9?�a��xA����-Vw���(1t��AAp�@@��N~��|P����)�,3����0��C���cc~b�m���Do;,2�����sM>`���f����:��}q�4�#n��t^�]G���#������MD�t��}o�`�w�q��=�QH�<���Y��������;�k�����~�
8����~H����`���������5��!��)dr�4���m�
=�X�n��A
��`:_v�F�{7����1���`3�8a���|���z�aN����%o����K�q��o����������|�C$7I�����7����7u�-��6�a`���>:�U�����L����@���ue�,u����
�A��C<x���n�_/q����Xu���9�1�����M�N��*t�F��������!�n��M��o�w�{��w��r�d�o�C��
���6��2�o�]��4���y^0����-���mY���Cn��[���}���Iz��}t��w���h94�[�;(�3N?���t4���������w��{Y9_������~��N����m�m���A�VZ�������c���=��Jk��
�����{��:���+�!�;���i������:��;��JkpZ����Q��������KgXCp$\����oC��8P:~���K�:��������=X3�m��E���:��;�8Kk��+DMv�f�{7�����EZ�Cv�����C_/t��q�a��ki��A�d��o��o���9���-�
�������Q�����V���[�COU�a�=Ap����^�X���@�"v��:�Q��������!^=A�Q4����w���uiq���:
<��}{���:(���1�Ie��g��wC��]��y9D�gQ����U��
��3���b/��v������m�Q�wmG�-g��:K�m��E���[����C�����P��&��}~�d�����h�[�,[���Ut�n$A�&�~�Q����&�;<���hS::{���7�
����p��Z/����7�
�����\g#���5��2����r9�e��i��G"Kr���L��)����w�po���$+L��-r���0i+���;~do:|���
P��d��Z��hf��A@S��w����*��=��I����e���)��
�\�����~�\/r���m_1=��K���k'�0���fJWf�'}�kbj�i[i��
X�dmv�`�;��2�iqv�PS�:{�jC���g<�=X��a����U��g08t��V�lL�=��|���%�<\E����<I�����u�^m�DKnVi�I������a��&�a�a-w;k9���m�C5��r�c`�2�>����j����`��o8�����C��-m��������Z.I���'r�r2��������eZ���x�5q5�/)�P��=X�}���`�!�O���a�M�r�n-pr`Hj�&����~��7�:>�%�> qLK.���V�l�,&�;Z����<c������0���n>�Y��Ql��n����~�v���Cs�����z;T��_�=���u����-n��o�x@��@��N��a���Y���s7k��0J�R�pni��0p����"����m�C���z��v�u�
����-������6�
�����p�H�����0��z���;��W��[�p{�mcX�%��
J���4NIH���<��j!5A���������T^	�-�h�����4��e6�$��O���<�G���Q�Y����+,nn`���b���.���,��E���a�\p1$x�;.���������q�5P���BA�(i�b�����L�� .F���(����L�1xOE
��=7�.	
vX�q�����C��x<��v����l�L��E��C�?�}�mB��	5�.�4L��N��6N��0��D[n�{�~!X,��.�Uq��u;�H���6��+���u�����H���"dus�a��{x2�<h���E�L4O?��X���U��~Lkh�"�$\*�_�Eb�6��#�T�i
���\o;tN�0��>��l�Nmam�HM�E��/K�i��!3��I��/L��,�s��^�E��/K�j��� �^^�i�/b�
�=����OZ�)��q��8����r��@��Q��z��)9��_���Z��<�n����[���\�%zx�=m�|I�==@$��:���������A����%��@���R��
TX� ?L�n��+�Z�h�qD���0�I���A�W�J/e ��|����d�j���������x����1���-<�����L��N�4aa�Ca1i��
����{C��dpe���A1@1���xO��8���7�uz��V�<�'Z���\^��c4��5}�Z!����5<8��J���r:O"��DN��h�AN�9 �	��Q�=!Z��"C�����&�gx��z���'��"u�mL��"�,��	����8a6*�d%���=Y�6pq���6/�TY\�^�v�����nL^�
D��@��|�`��������?d���A�v���/%� "�����0�WI��	G��~�8�i��W�T�'���|-v��y��b}�|su.��0�&��G���6C�
L@��u�����O�N���N��9;:>>��O�����g������7��>��g����o��{�����s���1^��~�Ln��5��o/���^���|{��Eh�����8��p�x
�(Nm����c�M�.W����(�_���j���
��7���y.qT�Y��N�`qu&�R<a�%x(���3�����S���/���B���<�c��p�h��7L���H��b���;]ort���S����;+�0�=���r|o��gw�d��~����1�H��A��>x(�Q^��7mZ�PH�;��N�Q�d�S�&pZ�dD��^�dZ��\o�x�B4�ikd��z���'^T�,\�d�02?z��gi�t*z��_]3'H��6o�9=����u��){�j��N���,�!quh����3a���:�y(�Z2�k
��T����zwv�E�uB����
��b}��:�]t=�])1�{t�~��C����dWJ��aWJ-�;�|9�|���94|�.���� "~{t�~���D��]`����("~�C�WF�=�9�]�iF��_�{F���]���K�CaW�.�������]��5Jv��R�;������:�|K���c�E��_�=�~?����w�5����aW�.�1�����]����vi�O��2b��uu��[)��.T\o�������[�z-
��h'��;|�����^���2h{]�vaWFmc�
��2"h�WctaWFm������N�(�[z�����Tz����P�-R�w�C�W�?���&�����S�8�;�h8��Ecw���>��~�~�����������hL��M�Awv��}���6����op�����AF�\��7��]�s
5�������Ys+`WF�\E+�������/�/���q��c����3�@�*�WFM_W!�J���@�W!�J���@��*DP	�2"��$�h�G�������=�[��3��fE��]���V3�(`Wj&���
���	m5��J��v;��B|�Z`�	8�D��������yw�T���a)	U
��a)U��U�������W�����	�`{n�Hr64:~OW�qGB���j��T�w�w$�����e���O093e7�d��
�JW�~�
��fJUxK���v�T0,5Sz���NK��^5-�)y���P�����
��fJU�ITp,7S��?P���L�*6R�r3e�x�r�]�|_�m2�V�a�+���'HK�S�R�����[!�Y�iQ��S����8L����h���iZlq�>"`}����jt�v���U��8�])�ScH+�VJ���aWJ���;���O�h��f}D�����8����?5V�v��O���pv��O���pn��O��pv��o�.�d�b|���^������E������*������bO�R�A�Qc��aYjA�+�7T�,�"��Xt�X�+��R�3���`���1G�.T���4��pv�$1pTL�*����@�"E�R�Q����$���v�^�.��I���Qa%���+uVX�1��_9t�Z�R���X�j��:.�gA[
��FK"k�hX�h1mpC�y3�?�zU��M�r���t�X��^�8sT�,g�*Y��bY�z��$����!�@z�4\nT|�Q���Vn)�fU��Td��'�qo,��(bY��A�R����VU,K��[}b��E4�M����T�"N�rB����e9!Uc�*bYNH�x��,'�}�n,��Zj�S��f1��e)���l��bYJ:{y����t�jV��X��N����;�v\�r�h����$A��rs���\U,���J"sU�,7w����rsg��\�._�0p��$W������V��e)!��<{o,K	i���{cYJH��bMh�v�O_�|���[�X�r�ZJ�$�bY��k)9���e)G����*���V��}�L\�
2q�_�7��L\�Np3����:{vdY��U��D�r&��k�T���W:|Dj.�Q�����$��*��\%���bY��U��\�r��c���i	����D�bI���YKE���,w�RQf;E<K���!�,e�}2��g�3�}��U%3����N���G
�eg��^t�M�Q��L�R��8*0��g)�t:P�R��(�V���l:}�Tow�~���&�k��5��!EY
�,�Rt�"��\B�2(�Y�'�(W�"���B}6 J�\�Q8�ny��4�}�}��|�],MEi��p,%������p,%���4[J8�HSQ�-%K����G�G�)�VP
���k��ygy�,%�>q,#��cXQ���<Z������<"�U�eq,#���A'�Wq�q���3=zl��r��;`z��L6J8��u
D�r������8��uE����Xnz�{(iJw�x;�x�*�0*'�&���@zJ�+�YJ$=%�e<K	������g)����W���`z���#���s�����Y	���(J0�Y)It�C�2B(�NU�����j��*`W�<����y��:��}y:�����T�&�D�r3a�X���,7�	�R���<������e�i�O�Q)��-O$M]g{��� ������W�2P���%�J����,%���U�2����Wr!�2��.��s�`51��	�4��8�YX
�MNiZJ.W��\���k���+e���!
���s5�\���_� �>��T�I�����d�4-S�<��g9�4aF
�R���<��x��MS�<��g9��uAm?�W�� ������op�+
z/*5���aXF*E����&�>����ay�l��aa���������s�,��jI�,���-wOZ���R��T�J%�W)bXF�>���bXF%�)1,��r��5m
cE��t{:'�AgF5����$�_�2���YD�aXF}%gU1,#���H��`XF�>~*��v�-U�ms�����|�#W���7�X���$��*��V�J�tU,K9Zu%WR�bY.Wl�lH����S���G����F����� Pb��Y��(�\N�2�iJ6S��,��	�d�V���o'������2��/*-�%5�D���Y*��P"��x��P�P"��x�
57�H�2�����a���Es��4����^��;���x��;=%K U<���J��x��;=%�O�x��;����dn�.��?k������X�����P/��������g�Y�T����g�YS��Te<K�����ae<K���y�l^���6_M�OZy�}&#���bx{����~����������6q����\���)����i9��?[�����pN,r�b8Y��i������a���0�1��a^�f�0���������6Hg�W��fJ�~��2WFm�nW1O�%Z5!�`�F��Nw���eou��s�4�Tq�1�{c�fg�S�.
�C!�����n���s���%�ag:�3����i��Y��O|>;�g����5���-3i���s�����������<0�O`��{I�4�|�X�M1�����rf.y����u$������o%����������&�fo����:���t�~����qK�_��/dl���Y��F�0���h�E��%�1�����#��`F�����^j�Nd�:r����)�m�/�������u�a���t<�K��~3Z��[9�I���:��a�C�v��6�?q'.�tW�'��i�v}Z�|3�N[��<�S���������p�t�i�=���v���{2�%��c,����{9$�k��M��@$�#�3�����K�7p�.i�%��4^�?���a�� �7�8m_P���6��(�SI/=Jo���%��<��f��l$)��F��&���	Tl}�\�|����S|��<I���M�LS���n�y�f-��r�$.��a�`
���qW�Dj8���w��L���JQvW��h��=��b��b����+�=)���]1�K1�������&���]q\�z��|@���2��	�;cY��@��zg,��x��R/K�
3w��X.���z����u������.���Z���u�xUK1�BO+bX��>k��zXFM;��zw���u��bn���Y�X78��b#��1�^G��H+��-t3;����,�{��cG*�r��������I��lm�]�W�S�����r9	8�!�7`���L�*����@��2V���s�+������w�����u�����(Z#�`X�o�h���a)�+)�]1,�78 E,�7P��U������t�����&<Y���7Y���h���������Ja�F�m��~t����$ ���S��P���]�J<�8��J�a���+��R[�q�(�X�s%NE�����'*8��E
5E���O�"���QU���D�E����V������Nyg,�Y��V�JX��F	���]c�5���Q�FW�p0���q���3=�������U1-%�����;dZJ2���w��d��>�(�<��/��r��>,���A��q��-;��Y*���>�tW<������T�x������sAw��T�'�`��l�����b�`��X�8�A]!���Z.����r�Q/���&Q�*��T�k*Q��x�R1��K���,�b\K��Q����q�yY�U�����v�t�f��Sz�B�����?�����0C3n�K�[�����2���Vd�����������P,�5�<��Y�������g9-�$��2�����f6U�����z���J����������-W��0e<�8��=|_����wN�
��-,��EjR��qR�W�U�,�}�����YJ-�~�l<K�E��xw<K�E�����]��F���W�������%%���W�V�F�gZ�rw{�������dUq��L%�����g��d�@��`%��{v�-&��!�x �J��#���gZ�
����}x6lB�3���g���N*���F�r��UZ4�����h<�dO�1���x�2
#�#\4����%�~2��#�1''(IxJEiH;���o~���/�du3t��[�`���.Rz�����e)�A+�L+_�<��w)����e�������%�r��I~�G�����
����`p���
����`�����D�����K&��+�a=t\����Ke��p���0,���e%���T��8�2�3a����ve���a�5@���bXF�����y�U�������V�K�B���.(c��A�p��q����\N�D�g�������x��������x���:p�!}�4�.���3�K�j�4�jdp���aH�%�j2���.sg��(�G`�^�^�t�p
XU��ZR��W*}�$���|�:h�$�]s�P����
O����V?>#����gdZ�\��L���i���32�~4|F�������������`l�/����V�`�q�������r���q,� �~	g�X�a��8V��p6��[&��c��	g�X�i��8V��p6�5�&��g��	��Y�q�$�c�34:�}�c�_V����/��cC,�|6��+0��c��g�X���8V.�|6���0��c�2�gcY���xV/�|>��+1K"��mSQ�{j��F�6S���\�Ttk�����N������,���
B���F��op6��
h:`�;�Ru���`�����AXF�L����C������C�������&m2t�*��8����������pX�P���Y]���g
%~>�����xVW���Y]���geE~>��5��XVV��cYY�K����~���w�uRiA�l��&�`�~,�LF�a�w��J���v�A��&_�@`Xj����gbXj�}`�>�R��c�N������U4�0�.��.��o��E���{Q�ui���W���o�����N�����7H���_�n�.�_�d����u#lX����%�>�~�����M��B�_���"��+w��~�����n�����Z�G��
��
0���uC<��
��J��@u���T6
T��L�J��@e ���T&
��r~~�ol��Fx&������;�RN_ y�K9}��y&����J���a��P)�3�+����Wg�WN���3�+��\s��Sr*Ay~���t��L��,�S����+���kOaWf���9�J&�y������`��31,gRBe�����Iy�B��##-!0,gRB���gX�������J�8�N����Yr>�1�RJ��v&~���E�_�b��z�����]9�r^�~
�R&�9� gR��-��+gR�0������Y�U��<s���ng��]8�Z�����ngQ�.�A��,�h^[r
�R��Y63e�
��t&ve�tKr���!8-��V�D/��
W�[�_���g�W���:{�gW.k/��W���|
J�����u�^�p@�K->���R��>�R��Nr&~e_�:�R�+	�_�����s�}���t��mG��B�����gX�&C�+<�2���J���_���D�%�31,��&��N����u�����xO����*a��M���(��:=�����Q8�R�XG�(K)F�C^��T#V��c)�����zv�}�����i�k��gh��Z|�9���V�z��=����$5�mc����,���PX�[~X��(,�-?�)�����T���_����������9������u��c)�*�y6���N�@��#���(3�����
U����|��C��N��NRP8�:���~����I<��
�Rg�Jwz���O�����c��8C�2>��2���"����Xn-"���p,�����p,����l�e�Z�����T�#��(����
�r���\q���D-F��������h0X�r��� #h�<�	��1�J�|z���d���,���E��pX�:Jt��eV$a���e����^>
��)`E���l���&��6���dyU,��e9��������~�
���e9����X��v�>Y�.H{:��V�[i�`Y����8��8��=�E����d�f����\�c�[�N�&�RP�-�|����:?L�����HLKi��R}��������f0-��X�)������|'v�Z�3������_�� V��j����t{���U��i�D��v$��RX{"�r�X5���KgP��oW������_O��Z��f��g�+�x���?���;?L��_�Uz�aZ*+~�U6�i����m��1-��@�|���T�����D������h5&q��Z�.Z�T����V~�i���*������Bt�R�&���F��t���\�^�&8LK-D��L8LK-D�R8LK-D����3}�$�4��@+����\����r���HL���
-�0-�A��6�i����u|D�;�B��]�,��3M�3-D���J�OeZ�4u�ND���[�X'"HL�-���5S��[�X'"HL�-������hfq"�r1��G����B�f�'2-���� 1-��y���i���7�r����8L�k�
~�0-�A�����\��;�r�0Mm���R��j9�R��]�R���9�R�W��
��t�.Y��`�>�0\������D�3�����D+(�����D�5�����D�6�����T:��S�F��|xHN �����+q�i�e��XJ�i�e��XJ�i�e��XJ�i�e�+����6\/���S�f��/�+�������y$���e�WCbZjY�V�?�R�2T
Qu���.�����P���CD�O?L_��5?$��ZBb%r#1-�<#�k�HLK-���>�r�!�����s{���l	+�2�-����AAsb],BbZNs��Y8L�iN4��i9��c���0-�9}u�.��A�!��18������c�+��i�c�X���|LK��X�HLK��!��DbZ��$VJ6��N�'������n�������0��P������T��)c�i��FH�2�R��"�4c,��J
E1V�
�e*��q"�XL�T� LcU����n��� +�SC��%���r��uM�,��6kq�t9R��r�)�
�kIm�����o���e�
>��n(3G�=�Z���������p������HLKY�����0-e��U���g��x����r��zYt�)��XfQzh&7�2+�W�o8�2��C�z18�Y�������o�!5n��X�/�����p,�xh����VG$"��8X�*�x��f�T2�g�[J������������PZ���R���U�O�����?H��>K�.�[
k�?m�J�+��P��ZR[�R��g_���V���uuu��V�u�_~]_���eR&���k�%��>_~�JJ�v�����{�.[��&_���X��Y�]��E����.p�p�~vuue}�J�}�=���}���R����Z<YX_�O��c}�-���+_��:/����M�'����l~�q���	O�����O���cG�'�w���.����0�c�!�d�E?����\"�d�'M�'���' �H�b��	������O"�4�yv�3��3D4��=*�v�{��F��c�HD0_!��"a=:��4F�lXDYdmw`Y�=�k��z��D4� :��	�v��0����O��S��JH�����J����Ho�������"��"������F*Ti�K�w�D�8\�T��Z�A4j����$?���^��=
����V����
�$���i�J�vp���r������"�l~�1�#��F�H��x��!��$��0)���;F��D]�1�����!�/H%P�%@���
E��U	U�v>>��S��	�i���j�������4�����_���X�ki�H�=��pF�G4��a���xh:#QxDD����528�������%�;��D��3�����#Z)��:q�A�E �O������Vwt*�� A��l'�!���C�� '6�.A,�F"���I�D����v�S�^l�vn��DBU�N�������Pl8����B���xe�P�C��c��h���A"^-xT���7ZBU����0V��D������C�p!Z��_�a�:�pS�E���I�-Z'*�q�����`�8h���@����j<���Q��v1DU�ZOd�~�5K�k�D����:�`������������b�u����%
�L8�d<�����T��m��O���x����d�
�������#V2n�f5�E�����j 6�x!2:�Y���O��p�g!����-Rm�����wL.��zH���<��^�4���Xg�+�]��lo���3>�:�������@h�&;NG��"��L
b�h4�q�	Jv,T2:r�p��$'���FB�gc������7�ya��s$�����E���p0l,Z&�'c�77An��������Cp��:@P�<%V�C��o�Gd\�5��Q������=t�6�7��������Q��I��
o0��A���!��QT�����e����"�V#�?���C����S����@� 7�C�P��;as��r;�bh���9p�����r~�������=��;�/U^_����iU0pG�*?��3Ot2���=0�xT'��#
�j\�
����!�D���mo )� �?NG��D5G"�7t0�Ap���8�`��r��GF�@p��Z����QHN�@Mk������Q�q��gqN�g�'��3���Q�p8B�
#����v�3����rjd �"DR��	0�J�F�7{�Q_p&�:�T���v�P`qi��]�"�9c������o�xT��=���q���x1 �hT���3\��������Q���r�������H�B�
dn�
R!�dF��C�H4�>M�
�6H4}n��cH4��@L�f��8�E�1�f�O3fh:�:~,��W�;2�?p��Es����9e�`���V�hNY+��@����`<���pM�hN�!�.Gs �Ds�����(�(4�!���e��8&
��Y������Bs�ZA�������X4'���

��k�&�V���������:xTY�)�o�F�e��?��z��{hT}�������2rT"��r���
�%;?Un��2�F�[9Ui���2���Q�dx ��*'�Y�nl�a��:��F���h q�*+M�@��*+M��VG��JS4U�I)Z�����&+I����D����\Y,������X4Y��J`�d�����E��	������6�CO��w)�|x�uD��:��dn~�7����
r���-X��
�A�
�*�X
�V4��y8�=�Q���
�*4J���2<P�z����������f4��q�P!{4��{C5j���2�
������
�e	UA
��4
�|����4��D�����hTya��@��S|�����0��D�ku�Xo�lUN�
]�Q�D+p���r�5�N�G�u{�p��EGVznl8����JR8p_�&+G�`��&+E�`��&D�y[�sh�d���W�lj�b��M��9�Ya��8�CfM��9d��+MS��!{�&'C>+M^��4��
�g84'���,���g���������@����]�"';i�89�(��+�j%-����X4��x����r4�;M��)���h�M��Gh
��i%-����Es����(C(4'�
�s�P���O���^?i���:)���O6�v�|�n?�i"��Q{)����`?+�\	��8!E�?tgY��=��y���!��V�����F����E�8qb(N�X���M6ps\�����F���iE�8qZ(N�V����m��>��������^��G�DWg5����5�is�Aq�\cP�5���>�<�����q<��=��q|�y/��=������q��D��Q�4�Si���U�I����39�"�LN���"�g��(�=��i�	����v�	����v�	�vV�F��3��IUq&'PD��	�V�z�X�y�mg�@q�y�mgU���>��Y:(�=�,�N��L?��b�Q�F��#�@q��"P�8��Ay��D=�4�����(N�!P��C�8>��xV�;��*����@q��"P���u����Pp���idfqhN�[��f��T�E�����Cs��5�ph�����^X3:�&��N��5�Sh>�����N�9�����N�)��$�E�	����tuJ���1
��s�Bs�������zh�g�m>2�(4'�0
��3�Bs|�7�2Y��".DV�����0
��3�Bs�����aA����`ze�����)F�9i��h�d%�B�v�F�c+x�N�c+����Bs`z��r}(�|;0���^�^+b{1(�(4��5�b��&{��^\!B��^��������+5���(w]j�*7QfJ����v{�9���L�V���@�-��.�Du�>�Du�N�DU&��I��Y����?~��Bf���c?S���G�:q����O�*)�j����zR�}Q��������CCawR���c��HT'�"Q�x,�Dub��
��^�s��D������
P�^�����:��BT��W�����y�S+��^wj���Fkf�Q�Z�Tg����>����a�Q�^����Q�^����QE������Hif'RE���T�V��w��T���w��Ta^���&R}�y��r�HU&���4��K���� ��e��~R]!Q��B�:1t�DuB�r4`��xr!O���8��K���%�Du|�o3���h��Q�e�'���Du��F�:qm#Q��e�]���m��D�|=BP�T�?��6�i��Eu�lcQ�m�f�����ET�F�>m���bQ��{#Q��{#Q���AxU(�a&��1��IqA#Q�����N\�HT�Ro���>���
Q� WS���X��Y8HT'�� Q����5�\.�@7!D����z�!�eWU��	9���u�!���t�GXN������Du���Du���DUj���?�N��U�yl�D�9q�D�9q�D�9q���O>qq���[�}�3������Uvwg]]�O.���/���{�~�L�d��M���P>d��VIi�����6}o�e����������>���������W_���.�������W��������/��R����ZW�'�K��c[�~Ke��/�Wo|��Z��.�/�"�~9$�2+����g��u�Z�t�N���"���Y��=E��E���y�L���_|f-����2Y����w�����*RBh��	
�Gl����Uz�mS������E��9�_�)����tG^��g[��v���_���SkM��r�����<�M���M����w�^�}�����n������ys�����'�,���Z����7ox}��|�<.��yY?����+����4)S:.�)���,��#��<�(�J�gv�~�%E�_�����u�i�_��S���|_���J�M���d��dZ����5u��u�+GX�_�����x{������_�|���k+"X��HF�g���E�@�@�F�B�nV���^_?�����7o���}���7 nd���@n��,�Z(�!�K#����1������]8�������/o�>���5��� #�)�[��w��s�b������O_�|����_��R��~��on����v�i�'k	+����oHYA�}�F�j��~�kE��j_8�@/�2�'bGd�>��zH
�����'�������*���)'����"@2����X�d{�&Nm��RkK^���6MW����6_*�.]fw��~����d������������:�L��}���OV���N��oVB�"B5O����Ze�tI����J��Z������o����7U=��������NB���S���1�:_�IV����*��?V�V���a�lBmtm�ge��Ok�����gw�mmb�U��>"2J��UO���&%�����f���qY2^��'S��{t��d�t8��h:60 ;�lMJ60A����@�'����`s����t89p\��@t%���O[� 2n����`s��!�����u�
�����(�>:(���	3�V4C�t��'��(
�+$$�hO�4&)��E���d!�� s���9&H �sdKnvj�$%N���gL�@�4�L	�(M�AD
����Ja,���3�T�����v��;�����MP��)u:��������x��u����t[5�"~�����Z��X�����t��2+����1�u�O�y��w��|K=g�1���M��W}�����#����UN`��'�����������:+S�~a}c9?���J�>!���>]����<�v��*���O������,�M����~���#�d�@_�J��e���t]���*�6�Y�$�$���YG�������i������k� ����'�������/^U���,�����PamEi�p�U>���}��W��^��[|Bc�����/U�R#UM8��]��uB(l���g!�K?d��&����<�/���dY��)h8gK>�.Y��ftk�����J!.����D�r���9:�~2��qd$]�[hi���4M|���HF�&
��F�{�i�D��L����G�eb�e��(CD��������N
�0m4��8����<J�,�G��9)L�Q4���"3
�G1`��}��{��X�i��l��`�d��j8}r�)���#�����c������#M�<K�QLEX�}|���	67����4�`?��#��Glt�;}���X�)��\��H4�`�+N��.���|���<�
Q�E�o�fl��� F�����6?����4�`?��"� %t����*]��SR����OZ��"�^G�O>�r�F3�r�(��\o�fX�J����E���u>�����f.��)�$��5A�6HIS�ib��rO/��d$�S��Ua2�q��]$9��-4�taB��0HAJ;��A���������h4Q�y5I@�xDSA� ���d ����?8^BSB3�����o
���*>!8N�zM�A@h�'DDn�5�i)���9�����j���������rw�7�|������d���!��*���6/���'U�'�-@�&Muw�n�e�]����~,���-����3��%LF����*���U�]�J3�xP�>$ H�?�/��Cp���O��uo��H�*�
4wz��msakg^��t�
$�A;�&muu}p�������l-�B�OKC7���*�UW�f0�t��43�kT�2v������"���D��=���OC2.�����OyQ{� R�^���oH-to0h�;��
Y-`%��n����D����i�J
\]��t��������g��(��VNM��S���ZCO�*�I_X���|	���r�	T��`Sm���9�!���rE��f��$��f�%�����h����N�gH:`J�=�O�7�<Os����c���Ic)���}�}Jz�*��1�]�Ic�8O`�}J�Q����$�@J�������y���
�A���V�>%=�P����'���~|��JV�}ZC�$r�(~r<x�v� d�D�Ki��KG�����A��j3B�}��������6TEd�d�wY9~�4Xb����P;���;���mK;AQ����O���Ig�"��A7P����:����dL������m	�\Z
��iUJ���_�������i�["�iaU%(h����Fb����2��:���G�D��W��2���C�.���[�]��k�HX�+��^���?�2��0~_X��~�)7aYU��Y�V�K�EzS���Z����--��Z�����%�_Yu)����X�eU�dG(�h����eS	��ly<��.Y���b�d���
����F���U��|{O��>$[�72��P��������T��	�'t�N<�`�����Z��Bj������Rx�"���Z�������jQ�����S+�����������P7���3�K�pd�8���l�d��_m>����i���n�O_?�����
�X�'!Y�N6���IQ�t�����"%+�#d�P��"4����M5���c	�w?�*k�(f�5|JY�'f6Y��_��DI�^�������Cr2&��"r���)�(I�[�A����B��X{X��,�d���M���g�q�}�	W@g����'��
��'��
��
�M��6E~*xtS��"�p����p
�T�� ;I�])+������FrG:�����x"8
D�����t�ZZp�C����mE�?�EFK��##���h_h{d�z{�O����</��F�t����a�*VnoY5�Z�����#~�w�>^IU8�&�������� �l�������U���lo={����W?�W��zR��u�E��&%1q���|\�{����n�����=�� B���t�!#Nx�>l��+%�����E�2�o���}�-�J
>_�s���)�����]}�|�v���b?��a]f%��j�6'sh��j+����T�����b�4���/��T��v���� �k-�'��M#��~�m`SM���
�,�6�}Vwji6Ow�}Z�^;���'��|�������,������IQq�OT���x�$��lG����6����?�?��{���|����t�s��$�w��U�v?������8���r�����K�qq��J��>_���>+{&��L�e�.��R���>?+Z��>���&{������+�
���<V��L������]�z����m~h��;)�A&3��n�� ���� ;�� ��C�������+�����qO��l��,��f\�"-��?��kQ����������.!��U�������n�V�7��}�I�-
4y������m���#'X���UM����B��FIk��v�w���R����fE�%�Th���*[�#4���������Z��Z.���rA|��>�����#�����}N���}��jH^�� �R�������g�_���	�i���qQ��I����g�3�M����v��u���]�v���U�����/��}�����j;[��������-���%�y���P����l7�����c~����[(}Jl�wD0��C�E��ED����I��L�>>j�������XS�>���<*�6�����b�a������	�<?�z���20T/BQ���ptI� �>�"�9�����}Kjk�}7M����G��3�����
�/���6��(������",:�A���;�.�C;)j ��J��]J�<_�&�������g����������8.����vb�/o����95j����FEl�o���K�)0y��Q��E�������<d���1�� p��������@��aq��%%n��8N�`���hQ�N�^���|{�����?|��m6m[����1�z+c���~������nB�n�v��w�r(��Y\=\Q��N>�S"&����jM{���S�����,w��F0��G2��r��j�'�����gz(5t���?����ru�ih��/�3^j;[v]��pxa�^�Z����/����D�K�=-��K���,�n�#���O�~���g�}S�#����� ��&�gz[�z�{�
�k�?�[����1���WO��0�O�t��L�V�4B���� ��c����@�:����|���3�G�lw�%�������U������5FAh�$u�z����|'q�yI���o��v��wIt?�N��}�=
�N���������gU/���}?���[y����9<��u{��tO2m#{�d��V���V
�J���,�mu�W�=������^��#��W�cWw�����>��1��jV�n�9���Sm����
"A�8��[��^���;���uP��
��gD[���4yv�,�[3y�s��z;��1v���#�nr�:N�q���m���-��mV������d�`���kf=�����F��l�3[g�!�,"�������Kk��p��"/04`c��W
�Xuy���*�j��`��C~/�xf�tpEc�G`�x�a;�������7��}}}}���7u���c�A�PD���!�r��,?���������p�g�j�:���]�����I��@���x��m�"��0��f��aV���fE�]�l�bX�����x�J������L����K���<.ntn�C�!�8�N�_�uT6���#=��� �"x���T^O����)���f�E�
$^�����I��d6��,-$0�l �=x���G�N��%�;>��]#����."�@�J�c�M���^p���l���2��
��Xs���G�`$��E7����K���F�������,���c�3=�(��F�]sr���Ug4iQ%��V��WyZl_Z�~�m�=������(�==����k|�T���\����������,��:�&T`�������H+��Lwe���O�5}�#��}R�3��9��]$w)a&�i!�y
��AF�l����W��&����:V�����EurL�Ra���O�lw�_��0��zB�r��q��!)�x�!bE[��>oo�������?S19��M���8������L�c�[�<r�D�L�
���At�T�b5�l]VT��K�m�0�+QY�����.�,��tI�!�N�0�����f��0[�k�#���Rh��=��{��#`�>���������r��d�^�������,����dnO������7o������GI��P�2���_�:��#d�	�g2K�)�6��(�:mH��o]�d,~��m~Y|�%{��%�/��������Z!�lt�P���7�����{���8�~h���H��.�,�v�.)�m�1dJr�^�M*���|:|o�m��2K���{#{�Hi����Y�ceJ^�S�T�%t��P�9����l
�Y�X�����Px�����}1��w_wp���������LQ;8@R�\�������(�]c����m��u^j������	�,�Y�np��2�]-�������~��C�'<���|�s]{D yFG%�������@ )��]f��es�w(��%"d�	���i�!��#�L5��xD�X�w���`�x�����q�dmn��v�.0�����n�:�Y�����>�,������\p�];w�[@���,����
g�
�"��@����_i����Y���5��Is�S�x�9�{�+��K8�:#�$��8��f�����-NJD����|U�]@4����]Xp��r�����j3������q��0��!Y�`9r�����#'�������X�nRJ�����R�1��&�}"m7�WUp�Z��QY ��fz�"��,���<2�K���s
l�{*����/��j����
i�����g[����z����#N�TG���f��t�E$V��]�k�\W�zL���]��yM�i�T��p��yM����$"�@`C2�!��a�����3��k���fZ��s�`��K0���%�C�0M��0�!��K!�I���r��#�K7�e����C���8���Q6��'��1%�s�����E����x������v(���w�19W�BN���9��� �O��3}O^Y��zG�V}o�U\��p~}����y�!�	�F���Ey����h��^�e��|�i\�id+�U/NA��{��{�������������e���	�D�c�)��es�*,��S�G�`]��S������$@^d�4W/���\�Bd�HB��V��tH����).@TE���['����i���U��������O4�Sw��M���
���8��^�e�����8��M��^,���:�B�U'�ON-��w���\AI�rfR{z��Os2 ���>������u4}���-�����[��u����������V�	F���w]�����@;O�vD6��U5�H����<{���e���?�jC=��=���/k����U��L9d������;� S`���5�'U������D5_���������S���BE+<�L��%��]����K��G�u��z��H8�|�������-��������[a�����E����{��f���{�l���O;BL�=$�C��:����������C�d�<I��bhN���f5���������:������ce3�"]���+���3�O�����p���%��O���w��w�^���$0�mS�-��V_��o�U��-��s�5J�Ao]2��d���%���a_��)��@yI��P. (�a(��P������$�f$Z����l�6��������f�v#��P8S��P8@���@uxP��VLaP�����A��Z9����G�NH�O�H���i1�zh���Y�4z�T���:	�%��	����PH�-1���B���f�MJ�7���7��x�M1Pr�AY�I��G(���1���������i7��x�u�,��oh^��
���A�-��
+��x������*�b���O�S��xuE�P�b�x6���s��84a�����*�Z��8l�������Dj����L3������wX��b�g��@U�������+�q	�c���*�WjJ(P��"���*�q2������@QND�j;�<#�d��`��e�wC}���h:���B�^��Ov���7]��YJ�-s�>������o;���ktqu"^�O/��7a�X���P0�^1�^�������S��}^�i�i�o	'�10m��j�X�[zB�%��� �D�Y�t���3nk��g������u����J���?��##l<p�����6{�Q�F��t.s0n\�RM�Z)�b�����-'zSOx���,�D�g]�>@�B�Oz����A�F��"�@����8AW��x'���o�Rq�X�"�~c��4Y�a�V���:v|l��$�o�8�3's�.���l���]M�7���3o����,�0�-XuR�2�'MV%*��@u�I���T���'����D2/'����-�}�� ����4D�N+PC�"M.�����
��_������{�In{"�v,���cYU\� �I�{��x.����oTW����0����%Ok�h*x����S�j��B�"�COW�{��+���������O�=(a1���i�~W���D�
�"�\�����)�w�"�O4����r��*���
o_PQU{?�i�jd��	��G�I�G/K�����wQ�����N�W�/���*�0����j���KD��\�e)H#�2�x�)nW7��-�*�KYmDP5w��������P�8�C`����Z�=����2���xa��In�|} 4�%�����d3���!F�+�X�����4x��>-�����*f�U�����,���Rz���)	,`UywJ��l����oj�_D�Z��E�w�~��
�.@!��w� ���Q�
�����{�q~p����wf��D��Es�o�$��+�H�����~\D�X�v���9�)}*�3�����k��KM/�n������SP�����wQG�0D���pZ����y�@����E��;�b����� ��B����'wW��HG���t�6s�t{sFX��M����������Gq�O2���Pd0CL3�M%@=��")�������5q�O#p�G��gj*�8n�Su-M�IU5��T����ZJ���>��
�����0�GZ���������(�:��*����*�,��VMV�+�	��xYB�gB�]/���,��[�%�?>���s���g� ���8��y��AJ�p�Ojw]T��In�����s����#��:�L��������/8_�����hb�8������&��/�C��t��$�S\��X��d���>*A��vB.���S�&b��T��7�3B��5s�B�~�;nX����-���0��7�/"$#��Gf�`����$'�� ��3�.�Z��"]Y�Q�ji�?��UN��-��(��?^���k=����[>s�i���y�����@h���N����Y�c�.�����B&U<�q�x��� A�#c�W��^eE�l	�i�>M��W&[���{�t(c��>���m�]���@3�8�N�����1>������?M��A�����1�BL�`� T8��:x�k��fC�T���}��L�R���o|UIiu;�t�����TO�E@�V Z�@���_�4^��/5A��O�.�v����KUMT�E\�F�Q�;�s���tX����#C[��W��^��l�|}1`I�s�8�C���,�����Z�+�k�>s��0���+%�L�������;�����s��B�v�m�,J	�8�]����Y%�gN@�B�_������@
	O����
���GR�; P�A1�1�kx�.59zIqM�*9�D����jb	D<�N�`���`�I&���0f`�5��DM.����r�o��~F�&�P�2p�����#O�D��,F������z��`�$�dKBa>� �wIE��D��v��Q���'.l�j���'Z��������k##�\��7��UI�JX����KF�x��r����^��1+6�"]r�V���g����d��[��<��5����d_"Ti��X��/@�6(�<J<5���
P��@))A��'��J)�T����U��T��[W����'��������t�|�����Q��h�f��T�
�kF�J,&�kv]f�%8�.�������T���M:���a-R��}�zH}���=�In�2��������%�1����B���@��n��2���A����)
�l`��l5��nn�����+T������������(�x���]�B��}(Ss(~��pO6R�nxk7e����=�n �W�f�wS�HI	Y���S���MP E%d-�PD�^J��*�!d����GA�S������J]Z��d���"������dXU����J�O�G��]�eF���K�����Vp��D�)���xl�Ep�������`J5ee���hQ����}��-��N��PE���Y�*u����#[���9{\��������G��uA�,r	��L������0�b2b�"���������0^�(��bF���1�b�6�X&/}w��ev�r����%��=���(�������a��G��T~[�&��
93���u\?/\
�Q��o/�/��`xdYW�t�.�	u�J\L��n�'J	L#j���3����`)t���N�&m�j�U�HF�T�|�3�T!�]�*�����K������[;�kr��Y#b
7w����m���
Q�@��(^�*id��Q3����r���/���V�
l�����]���3��
����Ke�g:0��������F�T6���)?��)m����_�>��y�f�[��a�*~�O��2m���[!Z�\���p��(�dO[�Y����!��Q������|*|��o�o���2�J1�:��T*hx�+������>��kR���q��K������A
�^�g�0�t�x|Z]h<�<�`!8�3$�S
=��\`�i������g`��� �A���y(�r;�}�������g���N�������Yj��a�Vt{b��������d��q9s�}2%P�(�(���2�k+ �������9��>5��j�)e�R���x�=T���<Q�i�HW�������$o /�4��-��xl��Id�.������"��
�y"$U������\P�O'��T	��!�L?p
����R��Bnr|;��FJ�SD�mZ.�[�X���(��Z(����l�#�(s����	B�"�V(���Z�[���c:��d�H&q&��Cp�9���x7������2�@��[#�s5�5$��!_�(pX���1����50���'�uX���1����57��+���m7b�p�������[�'|#�x����q��X0m����ty��P.�x@���!�H?@qmL(�����u��NEH������ ��6]���"�����&�X"jv�'��*HU�brY7�B���3��n����|]=|�����O��y}���_��|������\>���O���V�aGx)�|��Z&EzU��"+�w@N���2!1;!=���kI�APH?p�i������D� X�gjT�+!�����k��B��S�[���
/���}��,�6��`�y�ey	8��@��U-�xK�o����p�I�d���7�c�������1�T��vIn�[��K~�SO�.��w"�d�|2ql���q~���U���4��`��65HW��"]A�����OS�65,��5��A��J������
x�\��
U����.�!����e���9�87��� ����SS ���{^c���H�&C���T`bn��L�6PEX�3-��I
+f��)�nV&���{I�:w�U��/�kfR0���s��9W��FP�k����N�Z}��B�v�>)����^f`'�*�0#�z����^V`'
���Q����C��2��?����/*�BY���l�U�3%\/��Z�L��1S����a���s���t�3��B����BjX�0%���J�XX�!5����d��!���^�*����V�Q�������_00z��D�b�7	�X)�
�����X�p�	�Ba��):j��%#[r�P�Hk��5}�B-�Z�Sl��-��'�	���T����T5m�R�KJ�<+���j�����e��M��f-%;+�/��h�������M+�/���KN:�7����j���&[rv���iE�e�Yh��`gE��vE���#[��r���1��R�K.D�`gE��v��l��a�T�,���EK��
����LT�R#�����?�>U�����j��kKU	�j�,������R���n�I�	
���,��l�j _�P� ��^!P��C�H��d��� ��5
����U��?ND�����|��K��e�	�q������;�Ly�Zr�s�x1���:)�|��>/����l{O>Pgl�]����|���li�wi��ue��&)�8�z�m/zS��1��*���#���x+���>k�	�8�R��M� �G�E
��x1�0�[�5��� �w��+��He=�E��,��8������2j'G���>s��B�&t������3��RF{���G&a�+m�\����g����J� �������nrO�����J�x&E2+�d�J ���V�|Q�z��$��L�dV	J8��c�H�P<��E2~}N��	1���_sb?���/�4R���*!�W&Ya5KW�-���^�4��������K����v�7�g �?�.$}*�����,�@C�
���UC(�
HF*��DI�����s�����Pc��3������x��P[@{h2��.��	�����K.��r���2RK��`0�K��8�Z���0g*�n/���I�Dx���7zW{�XpK��+������4�q7N�m���+���I��j����]J�
e�$,�F����1}���'��d�l�����o�o�[2�������}n�n�����k��#��cv���E
����f�+n��U������D�|�*��M�-�u��/ C����N�b=��0F�~~0�����]j}����{�?���!����o��ydQ*/j�,���j������������/�/Z�,��)�U�?}z�VcG���bIw���h��X�"�~�;��]�&@b��v��%��_';��2<������B>m�*�L�"����4,;:x���Ux�
 ��-
��	(����
'��.��y�'�By���9�THA�pm�
��&�I�0��pNUR������P�3��	��e!&��!�g������b����)��M�$c�t$��\��T���`��!����#���:�2~�3~t�r��/����s���qg���yk=�>d��0���1��lOZ����7.�YD�,��Q�Ped�}"��""�^bQ��C���(C��D6W!�)^������ed���V�aE���t��.���2 ��)#���aw���3��f��k-�������r"���� :n[zPz�!��*j��L���T��7Z��$�XJ����)\��Q��1s�`�!���^��kCV��g�����yF�*��'���P���S�pU��l�Z��3�c���D�[N�+���X��gx�������*��%/X��R4�;^\R	xU`y�;^���Z\�g����9�$Q���X�zJ��"P��g���*b�V��:P���f�}
y%@iN�����/M�
��f�/'��4_n2f��]B�
����F�5~��
������a� l*���9��Pw������uEmr�%f�M��4	��I�dF�R�@���7�:��L�������M�4����@_-9w`\���11�������%��pk��a���T�V7����_���D�4`3�����J�&U�Q_�F��u���,iu��A�<�������8��,7${.*�����'/���}}��(���^XY�n	���K �������%�5�8���u����}�������%�67v���c�W�U��Gm����i�Qc���:�����4�b��4�F��R9�f�S��Q��T������JJ����VS.{�JE��cU���tI]\fP�����5�1�/3>EO��(--5�.j��?��������]g�<o�������!��n��������Yy��)>nn�u�����o�����=}}������^����O=�7I�|Hk�����"F7a� ;�����U�n���w������u~>_A���|�z*�n>����4?�*_0'h�<�
y%�s���yF��|�����(��Yi����,���i�aP�M�#���e�i�@����5�xip�F���-l���,�h�[
	�su>��H*^�a3���/�q���W�&����%�'�,�}�G���K�Y�L��m*������~��?ox��$#�q���N���$������+5����l1����!��0�[�#��oY95������'Yc�����Bp���m�>�A�?%YC�FS���y��-�|qV�
�����u���C!����.��Q�
��
S3��E��rv���6s����x�3
��n}s�^��<�%��������5o�i����6�d�;=Z�@�f��UJz�+S��8�UEh�Y�S��o���ab����
c���`�4I����H:�B���=���E������:�BFg��T�b��LMm�mNt�<���h�>	����6���:���4�0���f�����ks|�,Mc��f_��I�&-b��QG��6"G�fn�f��i�xvZ3*f����	�E� ����&��(�#-�}�
r��o���0�6�C���� ��r�F�����
8���6sC�L�\S�����nP
r���k�A��.p,�B����*(����F)'8�O� �G�@���{�������&�
Qm�eq�6|���k:@�M�K�l�D4|_PJ�<@\ ~�s��Gp���Ia7��@�YkqPE4|����u��t_C�n�'�	,���`N�	�S+s�����%P�k#�}
���x���L%���0�����)��!�]�Cci��;���nL����5���~�y���4���4��u!����~L�1��Q�
�9�C����t�/'��)%vX?��3��\Jf�:���h;�3sW�8�sA��:�@t��� ��re"��2���PIH�S��I�K����8��2j�IZ�����8F�23���8��2�KS��!r����&�2R��
��\te"O��q�weTQ�\W {���k�+�
#����+y���{��*��+���L�a�2���2��B���2D\]��\Ut!W�]"������~m=$���)����|�~J�?_��w��0@���O���Uy��J
%��SZ(f'H����e#�q��������y�OE�0��L�Q`s����Z�8��[��0�1,�o�����Yv>,�P�4�a{!��,��M�E�:�OX��E����e�6E�p���D��D�u��2p:�M���*!}��%���{�����:�B`�<�Z��CXg	��WR��.E�>����I�>���l9�A�s����K;�s����}qMJ����Oji�)jR��,���Yx�s��N��.�:"$4�>�������d��gY L�����uw����NQ&�����kp��mG|+�������\�[�+<���n:`�D.���S���5<�MM <�rio]4�\�b.�h o�\\a�3���3�HNZ�P������"�����	�2p��r�p=�������oN��Q�(a��1u���C
L�����u�
'/�-���]]R�\���O�8���G���_�,}���: ��m�����;b�m���	��$d�s�`-��6���`:PB6>ri��4��2����|.�r���w/��W������WL���2�t�L{.7���vvX�����l�
������l��`6��Q�`gHR9��QI��p�uMw�T�� m��O9��2��K�e��!!���p��)�o�8��p�Zf\�2h~Sda�T��T���B���f�V��5��1f~3r�n��H��!��!
�� ���
}3%�����$Y��o�+��Ae��PI�* ����{�����@��n|!r�:��=���+�����2�����Os�>�V����+b���������������#i����v����
}����T����3��+��^I�/�q>�;5-P�����<z�!�k�������`����2�@��_�Q�&�B��������-�h_'���x��b@�1�0�JG.�_�)�R�t�����^�^
�:]�Q�����_Z�����^�P���;
�"��}� +�j����K�Y�-&J�r����y�E,���_N\�u�+��A��O�j���FC�����$6	�������AP��$AE���J]��2�����-`���J[c�$D��q���9�+}*�����/��I���0���WE.���eR@�#�t��=~�m�Q'J�w�����JW�';}c���Qd�Lns���>M���M��,���:Y���lF�'���=y$�r������Z��X�H"�lx���a#�U�����V�rn��x�`cnSUun��h�A��������L����|��PJ��������W:�(���.|�%����:y�v��J��\C���`�����uz��?�l�#��sxZ���u�q?���f���^��@Ov���;W���p:�ap�-_@���"�����<��U�������FDd$������^�����q
r\���7%U����jA�o���]�����h����U���M<*R���=KGy�s5x�v">P��m]��7�O^�}��K��z��T��og���c7�MV��F<�~D�,�]�]eKZ������]Q�G���]?�����_�I$xf���Am|�� ��v2p}��&NgK6=q3��X���\�{�;�s�O��������I���k�
�w�����(��%����PV����xa�8 �Ho
�E]d�)���)��,629�A25��c,`��Ydg[g����d�@����oUnp�����K�0���Bp���hT��'h3�����,@3m&U@QS����]����}������
�w��v&U*���\F�W������1}�T��������:�J���*m:�R�CC
\�N(�I�T�*���	�|ee��.��e� � �.Y+����dP1%�`z?���kX*T�(��5�����AU�H��tM�X����E��h<���@��	��8��\Hu��JQ��n����3�H���E�G�O����~����{{e����|0�p�:�|F�����W�Af�F����H^��Z�����
��Lr[�B���n>q�"C�����B���D���:��&�0�FS��U���]+��Di��^�Q�
BR!�Y���L2`�_���Dh��t�6��B����e�)c7�/^a���0�~
�BS�o�=��S�B�[�����rWA���0�y��B��M9-`������>%�(j�)h�-��2.MH>������]�����gO����U~��L���yR��N�p��O���Zf:\��M�LV���X:���T����p�2�0jGi�e����s�6�G;�8�"S[ ��d�����q�o��*P���ZcAE���\R[Lux�"�����q�k3I��Y�>+R����e��a�>���[5�O��m3I�G��-Pq�,e�$eQ�j��q�A�r (q���������;Fz�Y���M#���0�.�����fL}���d�i��l��tuyur��Q�N'��7�NW��c���1K$��N��0����������h����2�RWG�w-aQ�3��	�S]_��<���i��lul�C���&O������i��.)�:��X�n��3�Z�����_^��Lu���!��.r�8�v����=����.K�l�[g����IQ���`�3�d�G�2�
�#��u
����|��v��i�d�U�#����a��/�bC�zu����;�8b�G�0�b��c��:\��[���@&CLzuP��0�.�*f�}!�����������a-���	�����luS|����������P3���_��y�S�� ��-a���W����x��n2`N�U�@���A��3�����x���A�������)���;��O ��t��yZk(#>�&{B�MVT���[ �5�C;�Em�����K�]��j^����O9�o[�}��v���S��(�������L����8��7�/ na�>�r�0-Bf1D�����*b�-#� f�D���L6P�C�b`N�"�c��RdD��,�����O����{5�?V��7Ye	NF��7��������MFS����y����SJ�4������eR�W�����l�R��������E��B�����/��x}���3��$��!-�O�v��"��O8������T��%�5	�������d�r����]���1X?�a
��r�3="�0WA�79�� ���oE�o�Q�E����o?�E���=#���2�P�.��Yx��9]5��� ��w?=����?�e`/<iV\VK����s)��Od) �~�mf`�^�rz���_?V�I\Yd����p�������(���t���(V������}(o�n��lys�d����x�onjx���c�����1]��fI�a��Ht���[t9 ��HB���p$�l��gM�#���$�)��:��Z�yt�rIj"F����
�;�����M���0�_�����OB��!�G�3��Q�YL��'�KFG�5���4�,	����dX�[-���S)lu=�j�>��I������k6���>��'�d���a�a�o�m�%�L����d��������D���`r[��!�.Y�EkF�Kt���������H?g,��9?�a;=2�����!kC�f�n�)�n^BC�L�X3�`��`J��������D��C$��Lq�5�b:\�j�(�g<ZL��p��@=��+YME1�3TZ�����@9����L�1���7/ET���	�x<o��X!O�|��3&OT��4o2������.[�aI�@��x�r�z�_�"C�������K�6��P;rz<���/2�2����x��9@�Y5������� �_#X�j��G���d�N��vI(m�d���B �p�'�g=���x�`�-�1j�ND�kc���[y�)�BVf��X�?[�T"1�XD�qy���3�U�sL�;�Xam7'`�G�
���US�\�%OA9�#�M�=@����z�ur#�NC��y����������2�@�5����0j�^����We��k�`C�5��������WeP��k�`��5������`���������^NV^ qe��E�
��F�@���>��,�����217���b+\G��mg�~0/�$�\u����I�WPWE�)���������!���W9���8
����'��������.
��qv�*��]����^�)�ItI��U��kE\��Z`Q�!�F�Q
�?^�%������ �J)��B����)tE�e�����
�)�n�BW�
��U9�
=��B�������!`cF�B5�S���BQ��1��)�B]�������Bs!���EU�!��bN�`!����
o���
�����E!��bL��*d�� S���B8M���2U��{�S�T����z�J@&tT�����d^V k|�V
��A!5 �;9�L6+r�=���E;��(��A�DR�yJz4�s�������'�S�TTA'���G�O���)��Nq7Y��C&�<��h��QY�NI�FCi�f��9�S����`��W)�gK$7�E-R����`�U�L����*�]��"v2���HM��n��zt2�M-R��1��G�%�������ztN�T�hl���a��?Z;���^��qk���5.i�^ZX6%��KC��UB+�0���F
����y�����8���.&��
1����/1�r��h������2M���>)�}��L���5)��y$y�����s�~+P4��b���qIN��1W��BP;�)fj�����
!����� DLr����}�+PN��5+^RN��/�;�*�@�S�s5�(���c1S���$'Ud��31W��F1��Y����������	���>@3�>A��:��mh��4�������lhA�
��#��3���|���L�Z#�d8�$h L�X��Eo/e�����`�^�~��8O��"��������m�����|�d�_J>���/��@>.H%7������%YO��%�/@��0�������	t_4��!c�S�,���H,�w�L��x�W�N�C�U�%d��+�
=@xB5��;U������(,F������J;5���v9�]pR�7
��E�>�h�T�T����x����5=��z]5a!��*���<���}V�'G7��#���i���	��t	����,�R�f2.>CB��ovII��b�b�=������?/
`>�xB]0�-�2�I����\����������fp� �����o.
Y�Mk� �i���u���i����w�
���W�|����0��j���'�'��0#���Ru�s��:HC���"�}�1wbW||f�N��/�~p]���~LL�}^�.n�fbP�V�������]O<�����'��L	i."~v��.ps����(bd�i!����K�$�2d�x���AN�@V�����4����@���YY���"�u�QQ�6.%���-1��A��1�U����I:��r�N��;�����Ub���������F��V,�R����l=���HR�J��r����P��g&09{�f&��y"�g&�`V1J'����O�P���h*0Y%h*���\�)g*�V�X`RN.�X����,i�X��b.�^�]](���Gq�������05�`��OO@�
4�;y�`����J��2.�����Ud�� �LqS��
X!+,d}�n�)�DS��ej����-d�qUx�IRb�U2B��@��b\��n���*fS+�<3A�cX���8�rJ���I����H�T!��R[�����L��g���LP��5F\.OflC���f���,�%D�_��T�����e*(�\�>�� ���B4%E�L
M_�{�����\�o*��7@G���� �j���^������`2�D������

���0|�r�
u���]��1�A���lr�����+490O3�s1v�:���\��0�3i�k�p�Cd�t��G���k�K�hDb T��0�����lN��T�I��z�z�PP�����w��0'�����='
^�'P���TsB] �sI~L'��^0cN�Cm�{���1��)�5c�9�2��
9Q,?��g�	hN�C��ZwD��L���0���6YQd�{�x������A	Xpe$���G��"�W�G�J��t{!������DBJ���}��$��c�.t��Sc��T��:*[�!,�{I��u$�b���x������(� g���u�2��OI}C�{6��^����^���t?m��Zf����u5��j���eU�c_�S�d��M��RF�0M����M��{�/�Y*���)U!������f�=�wy�U���?�"4��|��Q��������}����cc�a���@�����L��f�h��5���i�3+��Xz,�����uz���._D�P����������C�����
.�6�?l4pK�Pd0�<����Xe����}��2�/���$����1�E�^��58~���eB~;�#]U.Z��'��XX'i����~��?o^����Ob�%�X�;�9N�U��<��@�:;Ol���9�~� ����$ZamB�����O��|�b�[�o��S���b�b=dD�	���g�'��iM�~l�o/m����IH����g�J�Lv�aOO'NA�2�h{�t�.�����r��}H�ed���,Z|�:5� �_F��]'���j3�!�w��I�%�$���m2��E�a;�4T�r:l2����"�m��S��
���0�m�n?����}�!��*R��8����co"���*%�N���u ��o-��2M���Y�E[�t|���y�no4C;}���`���1�g�������`���siR��#/�O�z�B�^���B;nv�E��,�U�>�@�,*��)��e��:�|��0���%�A���%���n'����2���H|�5�.)P�Q4n�� ����Aq<��"x\�7���W���H�����iZ��
�S��{Q�&`�K�&�Y:d�+�f8�6]�l��r�l��l�z]�ao�8�l#9�*��Fj�9�!]�|�1����E��9B�����c�d�vu���M�
��8w����)��p��1N����H�p1L�k��@ �p P��`�����%���>�y6��c�?A��c���6��l��.�j1W1�BQ�/x�(i�n���\��C��L#b'���b�:�w:c�k�)b������^����Ts��kq���T@F]�R}����W�XU����u�����us�?a����Lq3�>��!��kd4��]������?����k�/�m���!k4@��
a�MTy�<dM�U<#��q	F���p�cNd�������:��f�I�9�E�ZKh�57���W_�
gx�N�9SC��(�&���XN�mNI�r���q���T�6 ���**����T�d�IE`��mV1U(j[M�mv[A��_�w��M��6SM�l�IS>_�`�����SM�",&uh���_�l��Z\�������K���$���"�M��'���u���C=`�T�v��/�y6t���������%��0w���2�v	
x�]���o���b3�H��`%.wk����Z�d�UC4�-���GR�t�����.
	l������":���b�-��+�f�`�������x�T���	wp���gpM�!���'�u����$����:K"�E�B.�������M5��w�R*��^2���^��qY55^j���wX���Z�v(���dW����;vy�H�U�X��Rlx��O�
!7 ���_��#��^J�.t!6�]�]D�54��O��%�2�x�����G-@B>���R�e
�m�LtY�aV.I�+�����+��p��-��+S���������������p��Z��l��k��M_���l>����{9�>��t�����XDB��0j��{�'E���=���a[���
�^�����C���z�?!�mI���z�}U�!e>��(��[c�+��E���f��*Hy?\����#�<j���hk5���Cl�&��t�b.hT�J
��!��l��&�~i(_�R��
[]H�k�!S���� P5r�	���]�*X�����|NA��K%����}J��-�}���+��7�d�����GU�_�����W�����3[���0��x1'��gCw�"��l�a�B�{�����up����8��d�*�����-+���`5`��c���w���y�5��7���n`HAs~�&�|�s������qaop���G)��.,�Of�������Qx�:o?��U���mI���|�.k�������E0*�� r�2E�/��}���~��[~B�xYG3������#�$�����
�C�^��qB�����!�>����36�/�� Chm��Q��x�[��5&�xi�
X������E<��l�?^�Qq��>���`�u[������'���,�-QF�0��F�%�,?�
��(2��Ft���	��
�E�Q�m�]������M"�����Q�\��~�|���O_�p}���
�������@
I�)$5��%Q=�nFD�?�������������mr��D�}~E�J�j��%��'|m��������r\�X�2@0�	(�������	�$8 ���Duv=R���$���r��q���|@6��cim��?���`�h�'��������
F�_�9Y?ul�|�{����?�����}������iA��}�/�@�}mZO9^�Wr�K.���#�+~|�C�{ d�_���k~8�������GaBW�q��%n]��W~��<��a���������^����1��+�q�����E/���H�/�:�O���G0,��e��(z��U���O�%���I����0>�t��_:�����o8�.�ki
�%�.�����e����������U��t����E���f�e�D��{9?9�����@���Z���?_���1�|��5,�'�����>�����|]��K>��Wc})��X�����*3��"��w�2�/5�7����~��{y:�?WW��y�]����7F_��t�(�~���<�������[Eww<�Il�0[d����uP/�~s��_���h��M-�R�+����ro����P_���Xf/���E<����s��V���/��"���z���_|����9�i���4��:���\�E��/��|Q�,�����2su�r��Y����-_|%'����������\���v.�C�8����)�����g���U&4�0�����x<����Y "�s��vv���\^b���3
7/��;�����W/���~��m��u|�e�s��N��>J	���E���yD����;�K3;��������e}������xY���;���A@���4�?]`�f�|�/�8�����5�	_��RF�x���YI��������< ����)��E|Y�l�k�N�}�e���m�2��x:�gs�1�����9^;�������y�[�I�{�E�������E�<���)�i`����-t����dP�E<���?N��<��_^�`E������x4�����K�{���2��Qr<u�'.FT�Q�?�����R�g������/���$O������������B�{�+�.9q,�h^]R����X~�+�/��u�dl���oH�K�+��d����(�}����'y����v�V<���33��\C��|�m|C���Jg��1�����s]�}�)t��M��r�������\�t�����|�1�yZ�z��
������-���[G�����(	���'"g�����E��6Q���*(�r��~�����s���Q�����F\B�����}�m���w~���;���?|����7�|���6����;������:�����e�����_�}�x��������i��Z���I���h��o���@^��^:����-�k'/n�<Yjo��=O~����eT`�l�����Z���������������zEic�$ I���������zQ��>�0^�@x
�r�����w��O0^�|X{H���	/�����7���P�q���N��C������3k�[���!��~�x
!����?������Ix�9�~Bye?k�&����g��w���=_�:s\�������?��MC���9BD�l�m�IYh����{�h����M�6F�M����
Fk�u��g���Q����6���
��w���Y1;��7��4�����?���6��F���&;o����'����o��=���E�jn�WZ���le�F~�u�}}��;�K/�<t��X{���@�������sT��8��4�n���t��C:���g��z�P{yl��/_���<��"�8p�����>�C��L|9�70�>L�F�Je����~���_���h�
��NP^#P���{�����0_����M�p��YG�?��������=}5:��(S��
v!M�93�E/0zJ��
��="5�s�L7"57tik�D49�������wM�8��;F�L�;p	�"��.�&`D���AG� 49����;��LQ�/k�9yT-J{���FYc�i-��	�C!���oQ��i��YPu����*�JX�O<��\g20�l��8Gp���h�~�h-N�������ho`�
��i_���s��w:lP������������5�"<���-V���A{��Q��Chp�w�A{��
�Ao6t)�E��{�T����MY4�~:����(0�PN�|��?|�������p&1��e`��I 48�f������� ��x-�#���M��lVm����u�����M�0VM�+��~)�i��.�����={��j��e�V�|H�k{
�-���y
�v���f,;���Cy��b�Cm�����@�U�b�C=��A�o�@���:���~���DhM��P`����=��\g"�����M�[&�(E��o|�=���F��`g��.�����y��Fl{(q�����?4�����-����r��K58��U��Rp�+�v=���w��G��<�M���QV@D{=����^�2t��6.�f�.���s��m�s9����%��Z�46���q�\�Y�t�������u����.\d�����.����AXV�Q~z$������X�A/���E��?��E����D�V�tb��������edO�s�������7��d�B^���T��K���
g�m��w�<���+��v�;���]�;�����<{1J�+���OFR>s�����f_���c���
�;]o�I����o��-��s��ao�z��w]>����;8�����K������8o����K��{��wO�����,
��(�g�K��sg��%�������3����?��A|������?pqaxR�F������.�����p�����������7_�0��
o�/��!��N|w��<��,X�H\���rY�g�3�{����������B����u*z���,�/Z^r&���!>6�z�'&��=�k�=D��?��o�oz���=�;���7��]x/~����x�7~�������.^�_��	��P������o�����dQ����X4������"X�Ox���]\���o������l$Y[I�F�/� >�2��8N?��!/���M���VQ�>���m��S*��r����J��0M������O����?��S<m�d�+��?��b�G��y���?������}��`|�5��Q�����M����YU5���<*?��S�_"�R>vw| �v��<)��O,�x�C\�'���b�W<eL����Z��EIw�+�l�������(�_����r������2��e��b���/������~W�r|Wx����wE�����A����W_��8��y����:�VK)����Y�V���,�������H��@q�"�U�O��O�f��|�.9��Z��s�Fl"4����y��C3�@�R��a,^W�P��0�����g����o���qA�U6V�H�M��Q.>������N+�Ui�,���6��'�b����Y���|a��y�|��x7�����S�3����T�;����y�=���@y��	I�z����,�*~V=�q�|g��8V9t���"�&���=����cEv7#����M�y�s��m����Cw�CX�F�
sMp�fA<h���
�(�()$�
��W��$��@��	�33!j������#�D�!�-!��/"�#��) �}#��Cw@Q�����h8-���O��{��E�q���H����a�EC���
����)�h8J4<�4�!~4l3�����J1Q3��Ux"�#���8N|t&�!JXu�{�bt_Q|��#���D�0��qb�k$C
�p�|b����S@T$����[�,�U�����cOX�L��c�e�9<�L��s,RV7�eZ���c���1�������t6���v?%�~q�U-pV�d�
x7z��S�F/�P�S���
2������p6L!�5����P�|�"v�(�U�jR��X��R('�������p2`��"�n��&��QC$�X�~�H8V$4/��QK$�HR$����dy�:"��-/	�����x�Z"�������Rt��;"�<X�>�N�q��xpj H
r
�+�o�^���3�X6��2C�����f0�5�#v
h�����L��][;��@�F`�3C�=��s����nvsf��z|v.�O��]��c3Cw0���`v4�%vaG�	������\f��;�h����(�����0o'[)���n�Ms��v>�GE�FP�33�������K��;�����"u#��33s�����AW��Yr��z
Wg�E����v<`$+���,�;���8V6D���u4���dC��D���<v��X�E;b����N����/$�����5��q�*
J|���J�H#����$J�*,	���3pY�+�#��TX�~�_�������!e����	���IO�h��MN���08:�rI���H��2��	�C{�`��$���c���{X�x�D^��39,`Rr`d[ap�3��DB�������qD�}A�?�&���OZ�[�����L�"��3��?��x�Gi��G���8��oP�����2����q0����x�x��J�o���*^��f$���[������/z(��z
T�j�BW���O��r������x^?v��m ����sn]�3���|�\��w0?x]��������O��,�������-��y����)���?=D��,��e\|Z|��-��"���q�������q�7\����2�2g����}�p�7�i9C���?��`.��!�&f��a .[EP������}m����������'B_�{M��w����ja���%}g����3Op	���i�D����/�A�cr|�+���<d�~4'�:����g����I9)���T���R�%�&Gz:�EuN�i���9~ w��P���|M�	x��0�D	��U������C��t�Q81'�"���m�)�`��.�))qYkr��������7bH���T�QR��J�����l�6���p��,���jM��,( Z������A���F��q,���:���9�\6���wU B�p������gRH
��
�h8dO�+��R��y
��M��c��le�4Ve�r4jFC�9q��uFx�����p@,T4`�l���Ha��yn��E���mP�ST�_OY�&D��@�G���#W< Zt�[��x
���"X�������y��0�G
�fN/���=�,���`K�hz;�Q �Yc����������
f;�yt�%yMy��]���l�V�I^S���E�C�dK7y�5�{�<���m���G�<������s�t�jA��#~��g1s�(
'V������DP!x4�(���E�{"H�
�������Y2HC�A`��j�f_�
��V;�d�]�q��7np@t�u��d�
���y�W�D}=�!O
�����X21��A �S7���'X���]�n���r�������T��
�u%+2�{��Nu�g��:L�4�����!��X�C.o�#�Z�u��]���Q0	)��S��?2����L<��r7�;y�5����0�([��4Wr�Lw�I�0�(#+���l�����l��o2��tw��;�4CH����������H�.#+�#w
���<���}6�h@t�R��h�X��1��a,<
3� �Z6��H��p@���fA�h�����!�g�B�5�G1��Q�n��<�y�
�����?�R;��v��
65 ��Y��nrg����L-U8 ��Y�pH�8��F�����M������D��37��$��d ;$�b^���(�g�R�(�5c~n�^��(�b^3�i��`8���b^3����L��6^P�k�<
�zv^PJ(�<el�/�g�%�S�S������0(-�b^���(�o
��Q�������0(%y�Ts�����Y�*�)M�����^�:�%S�k�=
y�����Gq��t�������R�;�����;J�;����<���]�����Hu��.<y~���&"x��kk@t�W��Q���]�\��>^���(�o&��Q/�r@��$�i���S�L�s�����GR62���k���\��
�3�6�s�k����D}��Ey�[�A�@�(
�B��[��H�
�(Q��!�JxFI�*PU��p�j�����=1$�-�
��U� $�-�z����'�
�d�;"��@t�}4\l)��2���%�e����������]/��E����m.�i_�s�:gf^9\�b��^(3�Q��I���)�(�P��6g��xH��8�+�M�����:�u�<���V���8�,^����}���'�X{���\��:e�����8
���Z���������-z:�=�"u8G�p���@ j�,������i"8��2s���p,`��j�j.�6@����kW��vP�����%�����:��N����b�Vq, ��jk�!~W	�Ko����]�,s�G����s�����:(8+?��������P����"C��zs),���|�n�@$;W���,d��������DD��m��j�3��F^�sB�gQ"�U\ f�96\���;�[����kR@�p9���E�2���Ne�}5l�����#nP��y>~��= �j��F�{0/0�@ j����)�A�`
����\�����o��`����\R5Fy���?��J������_������X}�hJf��������LI��=�����OyY��Oy�o���L��'�a6�!��
?��~"�Il�1��*6������:>%�hW�?z�uuipP��O�:D"�-Y�v��9_/B�Q�hi
f�M
D��&�u�mP��������@�n�������:m�7au�L���+R�� �BN$�-{�m����D��4[���)��vIXNg�'X��"��������_�
�����;�����/�fI�hQ�\�~��(YN��
gk�k�?������CD�����h�Vg�9]�R>L���x��*��M�sF[g]�f��KBG��0G,�m����*����";5�'	�����?n��'E$���������9���B������P�o��1�D�H�"Iuo��%<+�m�S%	�%����0�e�)���;=����7���A0f��Cw9]V��^����9��������i�����Uz��4��q*���
�Q��(/�$�m]���:>�:�q������0�ym8���z����n|=����
8H�n�*����[Q���
m���3St�Bt�-�[ 5��5Rt):�W��-�#0�(��b{��/PGQ�����	���Z�D����B����.��w�BfwgAL�B��B�hd��CQ����3�gh���	D�@n�hn�"�Y�l�{�6a���F�};r������Tk�4�c"�.	<�u�%�eO
���Y�B eo�N 1W�8����o��%R�Q��L�dj���tW������0{���������K�^����8��n,���4�{��}$=VY��������������=v����V�����j����k�?|@��z����c�s�\ln�@�����������i��U��h�K�Z����S����_���w
�����������w
����?��������CFDln����\���\D��n����{���e
C�� ��d�E�@�`;��� �rh.�	MJ����N!�Q"�2�l���I"$�z
��4[��j�I�0[
��4[�)k�I�����&�}�;�D(&���g�
�b�$�D(&�K�R���E@��h��	�1x�����Z��'+y��qt/QNG���<��X�=����0��H�V�,�J"AXDi��[���U�D�����v��#�U, �U�m���H�����	�I�WO!��j�F�X�NM���g��y�9��hj�F�|WE �F�&�h+^�����8WE�F?`n�:����(��q��e���mx!�&���V����
D��lx��&�m����}`|q�|6l���+h������H����������P �;"���H;u���uk�$�m����F�}��~ l��q��*A`=��v�.�1r�,sz��W|`=�j�v��>U���w5�v��>U�>�y�B� }-}��o��B��H��g��w�v����>
Y��������6w�����{�>h�K�T}���y���zI��O���w��F����?���v�4�%}�>
�����F����O����
{��v1��5���7_�����\�v�1w>WU�V�����J���k���1�k�C�V�f���?��������������]�o5��a1�������@hT<�����>~�k�o��/�k��0��]�4h����a���*B�����?������
M������v���O�����=�9����.w�O�3Hv���%>�t�3YsZ4��������g�Q^��,�t��OXT��k���
�������`��&�E�E�Sm���5<+X5������/��Z����qT�����[����d�N��L�2-P�y���"�C���2��p�K�o@e�S2��$x�w�9Ey�&�>�^mH��~J&���n�v5#O�t�MNO����a=KCa��,ggz�t7�nh�R��?-i�3N��F;�FK����?Zz-M��FN!EK�C�C���,C��l���t���d�,W�����"�\X���]����9�����)�Ny��a�[ �b�������eT�� �����C��:5����2��oW����!���mqM.��V��`MtYU������U��J\\�"��G�/�Kc�����6�vH�q�O�������q�p��A����R|�`�s�"�m6�/|!��x����F���cM�|����\�ga�&��5S� ���2s��������Z�+d���fK��n��x2	�/�����p��tjW]�Q?Zg"
���4ca�@6�g\��p+�35Nl�����&f\P���g�������.��zQ>/�,��|�����7G�=~�c^7�$�����
���������4��W�^�^��n��@\=�,����b�5�s/��0P,`��O�\����f��������R%�75�Y=���+�(!�D0�Q��(�\��;��O��$��������A2�2��@t�N>4�E�{�H�.%{U�I!)l+�#(�����)$���	G������`K�a�s�W��P]������4i�uC���:�=3p*��Q�?Pb�������Gt��h&�������9�y���+��xP�;�eI�pCwn�w��Jc��bc-�����<�
���[��>��9���O����4q�,�D�Z?8�zE�������[ 0+����Q��(JQ�/����onp�)��E-#�`� 0��z�E}��Ea�:���&�aQ�*�Gqt�8Z��jb$m�������\,�^ES��}Hu�S���������S���;(0��Z|lP<��)��^�:���/xX<�����)3p���3��
�����/R� 
��A=�9#|��xX�����k1��!~W��~���2/�
'����1rrd�V�����>�0:�P�g�o�O"��3p�?�1p�Yy��i8��%ub��`�|o4Z��T����9)�,(��1�dd��<����(*_EQ��0P�Qtv�h>���1F�s����T����->�1M5��r���q@�*�>g�����C�Q�z��y�A!�P���dY�DH�19���0���s��(z�|�XE�h������xL�S���lj`��qz	�~X6XF�-
�u:��_�C�"C���$����qcDB�H��D|@����%�	�y�kE">��a�TN����/��T7c�)�}w�����]�"�Y/?
~c�3/��$��}���;���T~n���OiBw�Qj
�y�mp@������AqOs�c�;����D��"H5�������^�S�F�HX�A��c�����58 ��;���G��T/�?��}���'��(��y�����Yj����<+���&��)�I�]��O���Ln���my���3q�66r���)�H*�Ri�B�+G
�,g K��d)����~J,��<T�e�R2Y5 ��A��hY���$��|�l��y�g������s�lt3)r�9��fV0�����S}��}���<��@��a��H�Q��)=���;����w�n-�5��E�����:z�$N�P^=L�7��b���L.�Har�0�&=Mar~Io�'�W�����{��)L�&�<�v���:��L!���&�����+��8R�+Z���
�
��9�n^��B2�0���lz@��E)`�0����h ���t�7��������X@��Cg+���09V��'��%;,C���8%
�#
<;D��$�H�(9V��}S�d�b�z���Q��y��*�09�@"�������0�u���;4A�v��2�6oK��1L�H�09V��g'�&�.{�C�:�J���\^=R�xbRG���l��b�>E��"��ij�q ���C���������3���s����
(t�:]c��zp �94%}!~QT�
�������G%�:����/`A�s��)q�<{x������	�`��^��c������@��C'7��)n�7LS�&hq����g����1�fF���p9|?.����b���X���(���R��
��������*	���������747x?d�y�GB�)���"g��6U��shY����9V�4M��0���n�f�.)Xq����K!M|���?����"�xR�@y�����#�^�8��z��	��K���7����{��N����E1��:�5I�w���	�%�m��
�H;Q#�|���s
b���C=�=�,��l^�|�bN�:7�o��=��~�$��	��9U�������G	y�y/�s�g�qlb���S{�tG��Z�^�U��8�T6������?3���S5�)|t���	nk@t���6�#wm
��&=�v�^���),o=�<����(o��?� ��x������k@t����[��F���.A/�&�!w�-N���g���'�f�nM��]G�;�'��}��u4 ��Y�X�;r����:0��=�hH;=���(c^���G�Z�v9 ���?�hXK��.Dy=��
lI^���(�g���-�����!{4�%ya����U�A���L���T���A����f�������
�^M��NM$���ld������>�e�����FI'�kgy<,��P�)z�/�]V�(X�,�T�Q�*�'Z���/���b�b��d>o�lZ�lZ���w�=�`dY�DfG��03mb���U���^�xI������8�����(0l����j���;�s*��w��s:9����q�Q�T�!vG�u�;/����2�T�T�ZF���������t(P�(����	~��N��3�����:�=g�y�k45 ��t��%Z�&w
���d3��5#waG�;�oW�D���u4 ���h?�;0GS�xu��q'���A��k9��J�M�d]K.��|�
"�<�u/@jy�T��9.�{���h���, k�(}��&l�&k�,LyFi��Z?qq��DWk5W�J<���=2���S�{i�f�������`���e�<2P�����(��*@{7?QR��!���:{�3��,���G����
����<,��&L�0L��\�;$����V�Cs7�$C_"]�{l�b 	�I 
<u��<$�%���L��^�7�`C_"��J.��~ 	�I`m�����fr�V3�V^��<��o3_�e���p�e<)���������x���Z>E�� 7 �C [@���3�T�Fg60�(�����k���9��h70 ��'qnr�L���?�b����4,���[�+]��9��T��|���^>��Z�B����Z�G��l�.�G�����0I���*����L �T�T��(sB�L���C��P���&����2XFEO��nq,C��%�2B�8����OdN")N�q��f=��e^D���l�fE�&L|v��J�����g1U��\��r�fcUd n�wH������k�$]`����>P`��bK)�zSr��
���t_� ���>'�vS6/	���9>�Z��AE">`	�l*��7F����|9~�Rp���mS'���f�~���(	9����l2HB�
#
zF*\�m�v�1�'���!2l�@48J�V����dp�Ph^>n�A`O���%��2V��P�M�S�����bN���8ar��0
��>`KL�
FH^��<��W6E�H^���(���G1��u9����{m�VPm�b���j�^[fw'�lR��}x�Q=D0�y.ShN���B8	'�5v'���Q������sM<�R5�7[MVmQ;����^���s5U[4MH�����
]h��j��l�_����;�mj�t�%����r�k���������z�F�[E��Aw��S<#'�:k�Lzx*���z,Q��,�(�Q
U��1J��4��tb)N?|��d���K'�/�����8a���y��T�$��$���/6y��W�Wv+?�@��Xs�cu�����6�;�O#��.�S��L
�
�L��n���|1%�!���=�L����g��|(���gU��i��9�3�U�qT<	i��(��k�xJg�C�E�NV��|#�'��H���~��/�V�W��n���;��������)��[������8+���Dw��k�:�B�������Y(����y`����*��}��q��
�br��d��_�HO/+?.�tQGWb�o����u����,������<�+��WC�@.�>���G�}�W��}=�_f���Kbp�:���0*7�}����31�-��L�������X�DT6����'�wl�N���b���M�����s	NDk�+[���vA�;�����i��C��_	���^���)�h�g������Y�����*40ke�i��J��$�A�N~.�|���3��ieZ��B�H�g�K���?�20�����pydr`����[�%]�����V��X���Y��XW���X����R���k��0�\�k\%n�@�l�`��<�*���x�k.�E�A�U�����z�����r1nPv�m����D0C��$���o5���H�U�=��]��]�����n�7.{}��(��fdXz��7���m�����Pr9y��c�c��t�i����X��d��wp\W�����\i�4)��)$���]��\sB�}����6F�}C�6Y ������7�gA�������r�!Hi�wY�9�L����7Q ������L����m,���,g��B.I�Kq�6�s�f�5t[�3��I=%�r������8�-X��E��5�Fb:�I��	��M����������[��-�IrG�|0^��S��l���(���<�s��L%\K��"7 a#��-V��{��g�J/=��P'tR�a�����=H0);=��w �s~������L��(�:��3a�a��	�����.�I|�J���gr]c=p���i&w����PU�����Y�V���z���o#	^�0�D���]��
-6�W�[��/���g�Wm�K{j�z��P�Y`Bm/�U���<��OQ���*���A�TEy�U�Z_�r�\�[�������gV�o�������4�v.~L#,��W�g�����������X��������uF��?�-������M
xu�������
�8U�>���_�6U�rsq��mD������#�G8�����,��?�M��U�������Pd���:S+a��G16b�f�f@u�8]�"����K�� O���K�h�@��3�yE�����:�c^Lh�G�B�
��K���R��T}R�������*�M��zu	*J������%�'&�W?����y�b�T����X�/�*,>���C�����"e����UV�/��*���M=�g3u��|�t(l��	�O�UIi:z��L]6
�d�e3l*<e����B���� �������D������q
;(�B�?9a�&{���"��4
NO�oq&���`�����N\�A2�6��7����t/&��8�/����d�v� V�����?1���;����h���^b����.^���w�6������dr�S����4�Z��=��X6��"A�@T] B����R�l� ^��{1"�q*������*�Y=�e������LZ�6�Uyz�0�''0�M��O�8�1����XzG��l�^B�__��O����a>�/���e�y]C�b�s{���2���y5eS��L��.Dy@6M�� ����Q�:R!��-��r@�,�T�I��r@�+ �4�2>{n����1��2�4�G�|�f�ZU��y�Y��� �g���I��]n�CT�>z����o�OIa��*T�~W
�{��9���,�*(�e����g,�� ��Uh�.;���$�wGo�_��a5~b����"�~��8�d�
��b���*�d/�@E����`]w�A�`����2�3�x�s���LGt���9��^sv���mS�Y����z��aS��q�=N�,0!+��M	� {U4@��g"m���y�����CrH�x����nf�7%��84�������������"�WK�����/��
�zZ[�,���*�b�?(���@�U����-��7B-���k{
D{��r���#{�=�=|����h�S�����5��(��=�~�2i��h)�S���!��3US���b?���o���f�������oQx>����E���������	���@�x��5A$�P]k|���,_
(J���O-g�����b�/��%�]�zNc�������jD���{�x��(�]��l�&���t�,���4[�=���1���P	���D�mx;�|�o�Evo)`�����k�o�\`Jt��*:U!�HY��p�qe��Tm����x�W,�H=i��dZz�"�LD���m�x.Z�EO�m����E>��i����F��NM�h�G���Y�qB<��>tw^�;o�;�,��x��x����S�!~�(��M�&(w8�M'y6I4B"x��k�~y���Z��y���f{�M��b:
�(�nM�(H�)Q����,����u�=�����4o��d�@�;�d9Y��E���G��k�4�z �Qf���s?ezK�?r���[�tU���z�`�,$�{���LM�,�B�3'n?�0N��9�+�!����$j��mCe6< ���if<XA2���KmA�<)�����y�s��s`�� �W����@�0�
�6��6s�o�q������r�G��
�up{f���L=��
����k�R�f�V�\
�Y��au�1������k���CdT��>�P�
h6g��^�9���>���8����N���m�GE��������,�u9`�A��8O�C���n�^��$e����i[�:Zd�$��5��@�g�f��U������y�g"j�W(��C���%�,RpU�z��}�f	�����l=����
��1�.K7��S�"��0<�2v���/�z�a�\�b�g�
�"�9�Q����K��N4`��wu*�U~3Xzw'?���<Y��K���=Z���&Dp
������w�.T���l��,uKGC�]�rf`�sI��>���(u����&T8{���S�bS������}w9���m���t<�L=�������dj�SI �����mQ�����O%��:��l+^���s|6���$0��2vI%?�7+���K<�s����;L�sl���:"�6(���Ucc���P���m�^=S�3��#2���fY��@j�~�6��-�,�-N;?G+h���1i$����D���{�������	$�,A6A ����dk�(/�$��� 9���@d�fK���<\*��p����R��i�pFG����7�:�e~�8�M��![.� z���y�%�H8���� >�G��,���U�z���EKb���j�tVQ�2��<>B<�����j���@t	�c�}�d���f����#	D}�3�bM����o������&�/�H ���[�l$��/�D�?����?����������o�#�4���X���QR,��l�2��ZU�>`�^��<�����4�'p��U���Y�$�!�� ���j��n����h�C]�7s�xY��"-y�����M�����(U�6T �T�h��kW��'��Q�Y��:(��W���5��5A����l;���X[)[�\�{�6;5L��\��Xe)[�_l�H�>�����A�m� !������1���B�8�{(w�A3��$
.e���R�����@t,��M�d�WAw�gD����7_�����l���;f��"���Y9;a�!`E$���g���]^�<�Yyl������o�A���T���i����!}F��5�Zl�b����Jy��6��z��g.�k@}I��m@m����x��.~�> ���4����>|����Q�7Qb[3bn����\���S�[2KfKb�u��S*F�dC�/�N��"U�WD��������v%�R����d���$��7�7t�o����X�
�H��i&�
g�V�!�T�d�	�u���P��A�y�i+�e�,mB����M�����5�D��m�v�j/s�t��-�_����w���1�����0����x���=5Y������������>3�$���"�{����ju�}�>~� ��'9=_���-�����-�X�H'�cJ���|�1c������+�6�t���p��=�RX���Co�i���������Eo���� �7���]��[�Y�o��n��A��5_���F��|D��;��A�������Vp�t�
��0���8<_r���9�e9�Z�����,0MN���}���=3���q���w������K���e�(L�6����LM
�*
L��[� �;G�����[*0���6��L��:���d�����l��T9��B�X�LcAj�gv�=�7��UPG�:�]��z���0�?��	�����/+��7�2o��&9Q��-�_��<`W]��o�6@��$lkb���M����8�V���&�
�DH���H�5D@�L��1cv�� ���E�mk��X�7,TUg���\T��A�H8��t�

L���u��W����i��v�*6��|5��<����u��B�k
7[��*�8c8�
����
���`�n�M3�H���"<<���\���FVG���L}K�z��]����k!�W_�61t�A�B�9y��OV|E.u�������i�60c�Zv���&�"�&�$�EQ����ka����_�>�������P�W��@�y��K ��F�ZvH`���L�HZP2���q~�63�<*0-�_V�Myk#����~� 05Gb��Q��kE��92���|5������LW#~/��![
:}�j��%��E�4K�l����LU#~/��!S
:{�j���k���~���e[��F�Z�4d����TQ���%��h�R*�V���)����
J�yb�S�R������Qj�`�<!�fv������y�~
	���m� ���sI�Z��;�����������?�c[�>~��_����,*�m���k�����-�����������83;&�����m���+8�?�Z|hw��M�`n��3�z����zD�����,��%�����}�������H!-�(�$0��-`oc�7V4pg�j ��Rc'��5��M�3��}U�oe��d�%|���S���~e���j�SL���q��5ok�-Y/_CA*\��9P�K�4�4)h�Q
m�v��^��5�J���}iWj ��FY�E�Z-�u2��P~��)�Z�q
���!]����$�$v$6]`J6K�-nv1I$��M��}�u����$���������3���.yl��/4�y&�.k��u>���+'�e>i�g��cG�f��2=�9��d�Rh���7���%e`B���*���H�1u?���4�>����3����;��AtM���(B5l	�����S��D���2��gm�@��"Q�(j��=����ZQ�(j(0���t�&�E
7hu�G����?��������<��a��.�� [s�~zV{f�y����4(����;��'�%W�K�p�~����'@���J>uq�dX����l���$O������
�1�����G����#���r���%�	��'��&D?�H5Kd: K$J
�=1��hO�z���td F�����C���9����XQj��l,�]p��J��W���$��i>�(QJ������ ��M� ���N���s
� S ���1ctbhC
Y S ����C����)�rl��!1j��@���=J� �C
�S ������!�P�M�nphoGK���8� �kp���=����dP��u�A���"��u"�'� D
%�g��4��s�x���t��	���2��2��|yv�%�a,0����i`v��}�H��N�58�����]�S��e^��f���p��t&���b���wO�Hc� ���e,%�W�0����'I����l��+��&p�Y�����=�c��.����f������)gA�b���Z���_��Iq�w��<���iq��}��jv<`!�|���@?��o�f�kn������Q~^p��e�Q>�����n��w�8>�n�2��������z�<����A^�y����a_:_� ���5���=���y������3�<�5��e�^E��E��a�o&�:�:z��5}e���d��k&�&)5yBYP���������=<@n��	�@_UpUh`�U���5�S+)a�	���[��m�(gK.�p���'E�1��M�����������o���h��s���;�
o�����;t<w��U�Q�����x-�7��[H9o�(�r�DK��^j�����s%;.�5�1�kk���?�D�t�������3@;H0���g����@=��|x��j��W�H��������&&�y�39�*>���l�\���kz*���5Ux`�U�;�z*y%���*
�\��s��)�^E�+�a�-��)g���(
EV��gUW`U���Utw�3�|�����H���h���'d@>-���+�-���hs�_�����l���;���\]	p��'�$����'����)�Bp������[�1���n������R�e�#[zE`���[C��]����gap��EH�U��:%�E�_��L0X��Qf���";aPq�f��vQ��.�e�;[,��������X�]t���A��7(�d��zQ��V�����{����J��K��y^��M�;���|f�[2WD��N�k��*Yi����`�[�
X�w{z��VK�%L���i����k����7

��������R����m������Z�������������n��?w�����e��������qo\:���L~����,&sb@����H|�vIT3OU!�������g]�5T�k���v�'�j��$��<�W�_�On��:�%a��s��K�#��w���lZ&�<Z���2������(&��Q��W7�oFy��oY�N�����,S�k�~w2h.����j���Pe�33����������A/4+��%��������&�^���ltoY@���?��A�y��E3e�I�s��s�}Js&�-����-��>{�XD�����7y�9�3�	;�}��@�&���o�tb�2����;0���h8C{n"C&C�$C�����)�'D��hJG��X��|B�b���;��ivn�1r���g*�u��>q#g���`�O�n���_��;<��Ko��t��Gu��<
�L?G�
%�����\t�Yh6�Bi��!�lJ|�j�}���t �����51�VT����<Z��(���c^�T8`������D/�r��7�����G���f=�V��#|]����9��So{���7G���\��-��������h����G�B�&���d��{���������=�
�:|�6�\U>r@|>�b]6E�=�v9 ��G�)�����gJ�.����k�������i�2F�{c��
h8��{s��*��������L���S�����<�uhf��)�t������Xh.������@���!�����Rl K�H0;|��|� )i��cBy�JI�%:%E�B�\��$>��,�$+���|����2��,-����
����x�f��m�"�����`���.YI����n�l7l?�m]`��+��6��P&���ay�n��CaL�.+2c��8�
����A$�T^0�����b����O�.�
�������<l��c���b���XGWu��@�CL��tb<S����N�}R�����C7�����k��^5��-ZZ���db�<vk�
����-Z���kc�d���t�%vm����k	���6Lv��/��w��]�[g\�����e!^J�/�sS0
Z��	S��is���Z��G@gZ�v	�����z���#-��-��JS��s���,V�{a*d��v28��+�!:�I��X����a_�8G�+�]��"�����j>%��>��4������)��(9������3J�����D����E�&e�X�P��3������^�T�C�8�x��i���(�h�Y&��L_����f��L��<1���q"J��y��s�I���q����|��^%���PM�x.��������Z{'�5��f��
��W���T=��!*��P��i����F|>Q.��nyi�w���.~
	���p�a2=�8��dp�o�j�vt���\K��c�a���@?��]��X�
L���h-Z(�(){�����A�)X���L���"0P?�1�i��g@c��k5��]����:�.�"S�aW��E-'���d$��f}m�Y��I���Y�V�l�[����|���S.~��\���5�2�kM	�������%�H���<5�;1(4�:���H��k��u�c��YV����w>��W�Z������:v����+}������+�m���$C��=�{��������pJ{9����_IWqY��0���qf�r]�<�]�q���f����.�q^R�W(������,*��.������#��	��(~��K
�;����qSu��t�\�H5+���w��{���c;:T@f�2�./����d����V�su$�S3���.0������)�/�<��g��a%��j��7��^� 
m���T�.�y�.�Q�?'��89�H��Bp����������"B32i�I�������J0X.[2����!+����?����&��?j8u�-3Pz	�#{��	����a�D�j����b:e��W�(��@����x� ���X�����~'����A�7����q��Y��I"������N\��$iI�DD��l��HwIyrx�Y�B� ����M�L�I4%�L�j~[���0(x}�=��|�$��e&K5%#�y'B%�T���9�d!�Xj<Z����\��e�pI�bE�h���V��i��"
d4�n�T�9E����	���f��N�KE��QdR��V�����f������u��x
�����y��P����(g�G+>�t����m�����D|�+���{���<J���`��8fwA����g�39J������gA(^u�����&~C���[��3��{�R���j>J�����������d'��������e��{������Rg��e��o�v8p�y�����&��,���zQs�V����g!��oJ��}i� Y���w��'�
���m�7�������F��FR�e�x��?��t'��}�2�>D5/`�����P.~�������!|E[�.������z�����C3�$7#��'7#��v�k�|U���(0yv���I��6�w}��%?qz������2hx&~u����p�� ���K0��=�D�e�����`|�wb"�2������ EA"�!�!
�����D��	�5���1��p#V�������q����*�MTG���������{<���l�}����O��	�����t�����H������r�����Z�aw��.�O=�x��K������I��)47��+�Tg(�A^�)�!3��VLw�1~-o$0�t�0UsY��;<cA����@�E]�����2�7^VQ�9S���h���e���JO�Sg5��*O&��$�,T�qt�f���B�&���Ld�f��|�d���ys/Qh�9!�����A�gh���x������)<-���C@uN���`�	��1T]��7��1Z?���RE�Ru�i@ ��/J�+�7����)������`*^�S��3������h�I+���6��|�hG��J/T�#�%~��}P���(^��k\�q�)g�^�o������~[-��tW�K�8���q�����d�H��
�.0�x�~AKo�o���I��m�T��q�J���|r���k�G#!7/���gG�J���e�*�����+��*x�����	`�4)��2Q��Y�E�t����h���C��;�����*�6�e�Y�����b�e_�:�h��������=��?���_��I;����&
��du�x%�����O@c^=NDu&1��0���.;�M�]�9���� �&�4:z�:� ��	jP���G�"�l���a�] KG����CdS������:`g3�m��X�?n����2O�������E�qB��
�����������0IN��Q$_��.%I_�)�4���Jn��S����8��L�2o	Jp�s����I�eQ�n������>A��=�b���������)��B�`"3_���|�]��O	����k[�yT��.��b�g� ���Y#��<<@>��<RT����)�B"E
���V�j����=�=�s�P=��^��n�0��E�SFs.�%���8G�z�z�Z`@5oYT�V�	�|'w�r��M���T���O,Y5/D'!���wo8V�(�	���y��,����`'���Z/8���V��.�t�e��g���r\��"<� ��	����������Z����M#��.���:��f�/iR�3z|)%�M��|��<��C4���k��L�f����*L�j���g[���4>��&�l�<�@ti�kN�^%�8�X�4!�X�*	L��jS�#I�L�9�f&Nu����F�������3J��n���/Q7�l^lSK7S]D�n���rSI��f��E��$�����T��B.w����k��S%�QN�mo�y*�(c�����l��O��oO�y�)}V�~�w�U�*u�l�2P���2}�-HB�
��`V��+�������8 �E�Z��FTD`�sa}�nI�H_C�A�>�������5�D`����V��#}
}�����MP�/B9�%�-��!��1a��q*�H.o�t��+>}hr1~B�IQ�9>=#}�001����E�Z�@�I,7��k
�iEW��������DW��V��'��W�����$c�kwa�[��,���PPA`������jb�^�������e�-��J�l���H�Z�����%���-�i]�A��,�������W�o��|'I7A����,�;��t
Z�=��-��-($�Z�5���h����j�e�M�I]���G����������|�X�:�����w��l�G�����
L����nI
IaKaS�Bh�G�������6U`*��xd{��������
�uO]����?�eO2Y��_C�n�o�vc����}q�va�h�@����c���84z��������Q�8	l��=�{��(���� ���Uk�CN����[����I��d���
3";"0�`�:�a�u��N�j��.YE��Ai��C���e������(J6��a���L�>�S|���(|�/ �yz O��'����:(:�*?e^9�4����<���L�%��}���jaE�Q��c4�H'g61db����9�;Z4�:>?�{%��"0AK5usy@����oV�c<��D���TV{u�!9{]`R�m�&c~Gwdr�:<��D������Q�H;�C&F`;L��L��%�����!�#�/�n�(�.EM��1j��*�Ex������!��[�H���D�S������g�H���]0u��R�'��0�Q���}��|�2��{���V�[��%
����-������O�L�WS��������t&��e|��k&kH[P@uK������j�kS>~�,��}=��y%��G�*��+�H�����^����N�y���@:Sw�dB�.?��z�$�G�M�6�XVQ^Ix�]Ks�Xz���Te`j�_g	yBwl�{M���&0�Nw9�����<A���i�|�s��/r�;Qe�(#��f��	L�^��C�B:^7����Ot��D�?�#�]W�����������kr�TKa���#���mH�>(*o�
TD`��_����]�1�i
L��12����C9IS#c/4��5Wk���u����m�DUI��"T%5/vV��u�%�������42
g����������<��)n7M����~i�>|_&�H��?qWf�!��qx��,���K�����2��X�9_���Q�A��������������-��C�|6������-�|�O��!�����h/�S�i�	���U[���OC�V�(���(�������)*���q�����t|#�J�T%�n��I����yn�@����K'�0q���D�K�Ws ��1 �R �)�aD�Ft$j�EG����M�3���e��T}���;;������l��e���O���P�}G�F-SM�+��,�[|���I�C(xF��c
�M
�
L��R��A���D�ow ]`R�Vd���MIb��"��R�(B0!$�!D ��R�&�`��\����!4�J!��R�x�f�/rc1$�}(^�������O��X{'�5���`&���/K�����y�x�����l	�|)[�4�.�������
�{&Z�p�i�N�6�H+�:[>�gURM�J��PJ&�^���������uI��"
���Dz$�t��������� M-��I�:�YE�Z\�4Ii��I�c3c��
���C*.N�����mH�H"
.��%\@�X�v������e����e�M�����K�]/���t�m�����e_�_�V+�'���:�o�'�?@V�v����sG�D��)�|-4
�c�TqN�{?�ul�������E�~2�L�c� ��1XN'�<�N�Qv26��E'�3��m�L���@��C'�������Q���.�Is��i���E�G�F�MP���������g�q��<���8����^}g�#����(�cq����l���J��H���J�O%����4��T]M� j�N{n�N�+��T��)��2��r�������������n���0����s�9�y����D�s��;�@&�+��}���h/B�S���f+
a
?�N`��.�x�T>L@	h������`�=8�s��3l^p����������C�l��m��A�Q��u_����Od�G��E�Sd��k�ZW[��G+Cw}y�7\�[z���9[>�(�6��eyx�7���^����kHtCt�~�"�7�L�X��3}�X�����������m�������yXoEd��E��n�$��6��
�%a��>�����2M����0�y��
�`!_���E�X"���|�B�A���n�4��E�<��P��$��Y'��+Up���N
YY�������Q_���S*)�`��,�2��$�`,�-�7�z��u
��&CB����9�cO
������'U������<���S,eb535������#Z��#8����%��+�E�%:���)�������� z���#z/��~��:mH�S�#zMz���0$[��G�z�����<����u���� 3�lo��9�����4"P�_�j����W��oq�z�\�Y���.��.����y\5)`Ku�Y^��d�90m��O�����$/���NM�X^��v���:�e�9����w�da^��f���7�I&]-������QH�)��"Q,),`Rt�A��
����HK����oY�9e��zN��/�!�G��6��>|��}��-�:�%k�Z���v���#�Ia�PK�Q�&��3R�����g�`�Q<D	b�Sc������7f��u�94f��T8�,M60��(�������xJ�x�$���#L���<�,�S�%��X1`��zY*��g�:���!�yH
V[5�N����I��1%���:t��I}L����R�:����%�lLTj�f�f*OF��L��:JXy���y;�|��]�������$����5��nF���B��&�T5 �����|�BFd�R�7��f���-�no{������7;*?�u����[d����}��@��:TR����.���>���Z���@��E��W�3�0����t������(QJ��x�>#�:I��2z� �L��o�(
���"�$��6�p[<�������rbb����{��������O�9���?n�6(D"��/?}�/a�)7@l"q����[���3��y7zH.a��):���b���P4jp$33�������j�ne��3����9&F]G�O]�li	0!�$P���-�@S�^��1��9l����@��j�� 	l	���
A����������k�+N�R$�-��b`{�v5������9�X�V�?�q���j���/��5�h���yx;$P�1 �Vc�(,��o�$s ���t�b$���P��#���K)��4��hE���Q[D��dH��vj��� ��3
�I�U������4�C
��_���x��?������(��'�W..9_��%a�I����?����.Y���:f�������>���+��M��T���M�H�&&��e�D	d�����^�d&3g���-z-T�n����<�H�,"�WO17�bC"Du��n���X>D	bS"Du�Cl�"��_8�Ax�>�p6X�D�x&�$��D��&������j��HY��uq����H��2��d�kbO���Z~2���Cuf��t66������<�3������@�)��]�n���������c�+-�n�0 ��^@����fd�����j��\�J�6���}S��,(��`�Vq9��h�@T�N�o�-��$�G���v����*Z�s[���Dw�F���	D�jU��Nx�B��Y���D��zE��o��7_�o���[��_��W�?�����+M��" ���7��_u���I�4o@�3.%��F��Fi���^:K��T]��i�	�t�`���yD���j���]�����)�K��4	���1	�Ck]�.1�.��Fq�M����kw���'-����t��pQ��R��ZV��U��R�'.K�p�e<�=���������U����$��������D�r��������9;����l��r����
A�?_�W��
�%�=�$M��NH�8r=$��/2[�����;���G"m�"�g�9�����}�Vy�$�8�M��{k�]������Q8��t�������-[z���{�}��m���"m?W����B��*�l�M�Wl���v,_����qT����O����,��@h�q�%������!>,:�n����w+:&�f��I�u
���[��tQ�X���<��F��� �>4v����� ^���	"��g8��,���@C7o�Cc>�&��t�_�(�9�SwB��c���cb�������G`�n�(Nf���h�p���:�<�VO�x��2���C�)���������O�t%o��n+����_�@t����%��R��r�@�<���Pf�����������&�
����
�;a��^_��wGR�J6��+�y.S{�)�+l���������'�5�>�����vQYm���^foy�E|���������@h/C������0�#�����r�%�}��v[f����.[�����w,��8���2��6��������da��yE�E�3rFs��e�����m��ny�S���L����ND��6����%S���2����3���`�H�?��#�+�29�M����d���'�/�q�Ix2�;
�
`�� ��!_�|�DX#ap.���Av�H�qmu�x<F����a!>���D����������h��rA���+*�)z���i,��c�=u������[��z)��Sg���qO�u���eK�����=��������o�=D��~����U{�����Y�rC|y��v1�E]�b!����;�#��@�����[����@@�+�%V	��|������c5/!R%�����bm�Z�^�X������[�O������r��N\�e��u/�]���SDGG^��X��	L�j�U|�����h+���J�gRd��k�	�"8��n#+.�Z�=�(/�0g��G�7B����_"�D��
�zN�� -D�?{����m%������2���E�F��l����N�����z6U�U�)���DjH���~��_�(^�D�u*�L�D�l��C\����*�e����[t��0��\�X�~�k��P-�/\�^��Q�*�Z�����zM��(��E��E������9'�b�E�B�Z���.��"�cN����-,q�eg���v�!H��Gw& ��������|>�]%��b��:U�����a�����Z_�~o����C�t@.�Pm���
�����W$0H���V�X���km1z�>��
��L����5���x����pO�q�p��g	�W�*��wA���E��	d��o���K��'w���������pk����Bs�(U.�����������w�x�V;��u����{6x�%�W�	��%��;���mii�E�g��,�����v��o��F��	������KYO*����
�s�
��HG����PvK�3�/�����_��go{ V����w��-�>~����^������#gOQ�2�����{���<���|1"��]�|�?�R�F��������=�SivF��n����sY\]���G��w�<.+���`���)���������������t��������[�����c�6K#H�M�;��VGX��������VdK����k�A�,^���m�g����|j�F�n!��Q���`gc�V���@LB���=g�2qU��ulC	K�����T'(�'���v|�*FU�IJ������y���N���U[s-Z\�����`�o���WZ\�C|>�r�|�4Z]�oZ-+�de���������/�7�������u��_.?�.*�j��U����7�:�2��-����UV��-���c����������w�
��>�����7�����������|������Y��q���NO�[����X�* �R���a!��BF�2��g
����������;������o���������,Wd��Q�������������c�0nui�U3����|���������c�}��QqH�5�y(>�1cd��q�g�+�������{9c�M�Sa0F��. �j��X��C1"nu��QC\���~�������:�����x��;i@j�i.��s4c`F�]4 5����b�?Z������-���<}
�2Jn��Xe0���q����v2�5MR�AJ>�A����dOg���0�c	��Zs���-.���.��o 3�U���}�P_E��q}�-s}oq		�w�>�
3�#�>�S�Q����OG��l�>�}���OC���mI�| ����:&^JbN��:/����)��k��B�L���K%X���x��b��?F���l�iz[>���?�;�������C�:��t6Y���2�,P@������,�������Q�7�{A~����E?��
����b�F3�s����3Q^�R�`@��*�O�����
�O�t	Q0�r<a�7(%6$�`@R�����5t�
��������A��~����G�quL��~[���49<�B��Q=g���pij��4��V�6�-	���I��8���������){�tY����~2���%�D�e�\�.��y:���0���
Zn��)$z�������8�16�D'B��;<u���N�t9h�h�������V�8$�����&�0��J��G{m$�4u!p�iu����YY�P���#���-����KQ��������z��b�5���wy��N�c�C
+�������+�E53����Vj�������>9<~hib5��"-@����U�qvQ]�����:�R�bF�_<��G��8?]�R��6z&��{E������5{����=6��vu�.��������5�]]M�l#"s]
Rw5�&5��sk4�b%2�	��5h{�O�\�q�+�v���V��?���g����������l���d`���V�-��8s�v�������\�ct� ���.�s���<�	�������|��o���/4���'�O15���*iZM�C�����M���L2uY�,T�r��_��Lf�"�;,Ls<.M���W�qY��T .����W�r���c�g��	Q`] ����X��\�
c 
�����d�g���Q`] ���n�[[e�����2�=��.j��r2���>��a��/)��>�k]�
�R�F�A��.�B�zo�x.9��|��v���j�y��1]B��U�Ju�C��F�B���M�q�=�]MEoK�p1�G/��|"�knN��!����3HbZO/i='�����CYV����3{��*�F;���C��G]L���K�*�����C�;,]��A�M��	>�����D(@=�H��,]��A�M��i>�`����0"�B
�P�SEq>��A�
���>au���l�}�H�1)|���v���\L����F�����3�\L��
�����9?��|���I?�P4��C���(M��t�V�z�����iiTu�U��)!��*��Vo�RnrH-��[��E���y�a��Y�$�AuI_1�5��I�����B����)*���0�Rst�
fq�
���P�������~�E��W+�z
�~������V�co�S/��t4��Y�����Q��!���y"j�E���nHB,/&�!!+A#���N/\�xZ������_������|�la�xw����k����g�D_X���
g��"X�U�pSn�g�_X���p�m��aD�u��1P0��x6L�E�u�����l�Rn/�N��~]��-UD~�jN�xD�t�e�Jk{��g��4?������������'J��.��L��I,����T� V:}1
@�������� *�V��q�E�C����B���h[���0�B�B�X8�N[����1 "��
�l���5��|:�~DaRV:]��?���������W�*H�[��u
���go{ M��KP��t�A���A����b��KG�FA56kR���:���P<��c�%������~MKv��`�y?��E��9Ly<m���:����	Z���xJ}�D�<���:��'c,I�XO�.��Z�&<S��>O������&���Vg5@24d��c��l.���A��d��S[s��N$z��f&���C������m>�1�����
�yR�s.�I+�t#Z���x{����z���>��|��9�M�7WD�:��h��a�d��Pkm��
�N�~J�+
Y%�.u!R��/=��k��a�������c���m��)yA�����!vj�k<XY�l1B�x���Q
m&{n�����7���"I�~�(�>�l�)��'��C:v��)[Y��fJ7���	�����'�w�D���D6��]Q���0N��jTv���>��jrVx�=�}w���
��$$<����i�u�������h�'�z��T�h���Y4�.�?`Ob�U�����h�0���Q�Ouy��/��f���
����hB(;-n�����.r�D�@��p�,\���~�,�O0�����B||�;c93��Ov�����Lo����Hz�i�A����2��q��	��`�����/![�P��r�?X_��+3��`�8b�8��Q@",B����\�K2�hd,{���o4���	���{���<��.��f2�)�"�4��Z�L!�p�F�X �����*_W��9���	|���=���o������gd!�����M��m�ii����K(�������{����m4�N���/�^I��W���y�R>������8�m���m93���L�B)�<M.�{�`%��u�sk���
H������n��3�U�[
 �X
vZ�Hu~Y}������S��x:�����6�����A�ZC�T�@�u/#����6�f�����&{����H,��C����y���^O<:�~��g�u��fX������z�]������Bp\�������u���"V�H���b���y�V���f���
BJ�Pn�\1H�����	���_3�B#-6��<��E�4�yl�hW��lT���{e�LJo������I��Q,_�����;u�N>������`�VQ������� ��(��/{9����7*�
��"%�����B0���s��K�7��Y��]Q���c��a��X��9`�QD?�7�05����*7`Y�B��`�;��L�Fx�������imI�| ����:&^*ZL�1e����o��9�f�2<�����#������6�����)y��"��%�<���'��9��%%����=7�4��0N����������`��'h:3���
�a��Gg���45p�u@����� ���go�����y��4G��d�TiU.h��41�������I,{>Y�_����_����|����R�b�V��dT������1�����x�<k�S��&��8�)�4��_�����Qw0�I�d��h���W�H&��c[���IP�o'��=�q���������{P��Ps��5p�(�6����{V~�|3r��H�7"9�������h�Y/���{�����Fy��oE� �|�N|o+�_7�!t%�(��h"na�������DS�G\�Jg4m!h���	H���������n��Y��eu�>	�![X��=�,�e��	��j��{����X�������������J�ZY�Z�)�U����/$������~�h\�7�a��x�����>�}e?����]���!�'���8�j��Q@��|�6��``������`kW�OB��� ,�#������G���I�s��l5��P�
����D���D����@��*���J��n(�FkFK* ���a'��|�=k4����B�0|��< �+���=����5��!��5t&E(Xe�8FBD�D�!
V\:�n��6n5D�qB�����PC$lK�\aG_��F;,`@B��!&�G��IoG�gr����!D�$���*xF��	��	��[I��� �T���E���#
�����oq\M�L>����G�����1�.b�C�S��Ti��l^�D�Zu����@?b������i@~G���}�*=�"�
������BW�RQ�N���m��0���)t���fmd~��xz�����O���gu������%������E��a���B�0 ��/!��"��T�S����I�p-�}�m���M
�@�s���\���@��S�O=[3#b�!F����JO�Hq�omE�`G���`���gL7�z�=��Q��FD���J���[�,�d0�N�C��]�I��#��e�����^�m�m3d��Y��R�"����<o������k���N���m��E���=X_���dM����p���<���5�m&F_L�����T��������t"tZ���U=���N�(��Nky"�s��3����<4����j����<LgJL��G���vm3���t1��J��_�~���lN����0�,��pG�:%�V��-�:���X}<������R��P+6 E>���/�*�X� I�u�	�T����P���'���-+����Ce�����`��4���~�Zx$~�p���v�
���-�vg����l\	�M���I"I��H���(v�����B���+&���E)��r:���X�,�XBG�*�Yu�)���H�Z��V
vc9
*`�3M�M�����n�;����|�E�U`�3��D��I�PZ�i�6�^���0��R��J6 �V�8mI�|�zC�1�RvF�V�G���w��`�t���A�$�S+9���h�H����A�T_�3wR�5/UOj0��[�*:���� Gl.IY@J����������Q4�/dN���O��d���{3��cQ�t��BT<����A��5�����#*��T��v.�E������i>��zh�w�v�4
�u�VZ�����W�z���%H7���/QH������i��7v��	'*���������*�1GqA(�eY���rDxK���e����g�q�9���4A�F!u�&��h�9��t��y>�������T����	
5J��w�|mHgR�FMDj�Tc$��B�����Tz=�\=����uj��R��L���U�I%�[��u���`7U@��Z���T�4{��#:r�!=��L4�F�S���g���q�U6�D�G2���U�6������B+X���J���Ta�Gx���_�����������X�x����<�
pa��)����-44���6%�E�"�t�B��6�Y4�H_z��J�J����:�z��m��^Q��+�O*=�*����;�B�|%I��}��^vE�f/��f��'���J��b�@���
�y0\M3�z?2�����jg���l�G�#��(,Z��q������.��BIat�n��_���u����x4m��LB�����4af��&��fwk�Kl����M`����t�d��eY���icl�f6�����Q,�������7�������&v� E<��m�P�����'c{�f��1EZl�>FDj��	o�Zh�i5�����@@"��H�^��8Xo)"=!-��TZ���3�H$)���{Ps�ep*��j��8�%l�_�u�
6��aE+�u�e�Hk�����;�

���e������U�[�is���1H5N��2;�:��S2joT�x6G�"�T9y�����g|�+���@�S�B� ����������U~g��O<��E�4��>}�z�����b;���~d�����9��M��;��JJ�N%|do)XY���=�Nj��y�gl(�3�-;l93+���N��
��<Ue���?���h������V�2�G�l��h��hm��u�H ��;�v�\���c�6�����CL�����j#:�O����M�u�|�|�1���V�VW�������|`Q?L�(i����19�T#4Fa�V5���C[E"����e�POX�'��v��+���r%r���9cU���DK,����tK�BS<������T:$�s�B����&R�x��X�-�t�nG��6���rvN jD��K�Mv���jRF��}� ���;:*�/������w�����
���U�- u��o�k��^J>��!���%��c���u�S���W	��e[�x�k��1�^��9�q��"���3�M�8[)���G{��Re*�c�z�	n��\�\�]{ht_�5IW+������a@��+k��a�E�b�"-U+���B�s%�t�{z����Z��M�W,;u4�J�U�cW@n���DV���=
Q0��j{Rkd��\����	}i�}^c���+
�U�aw<��U���0�b�m��)��k����&�������e���~�i��hu�F�����+������{<��������A�
1�0VF�|1���j4;��=#�b�����Wc��N`:X�r�+~�|�k����P�9D1��o�v����1/��U@r�UpU�N�k�\
�M\S�UV�U��"�~��W'���l�����#�h��C}�5�1�)x!����/{�LjW_W�t���0~����a]��u�9�	@��p��E�Z����3��2p����\���m��d{�����b�X�mC$[Y[���1d���f%A��{m%�T�A�HW^���������>�����g�&v.�u@��u*t�����b��+4��+LZ]P��-.�s�?�����rG�!�Ta��a������h��K�J��W�N�=���u-R$������B�sk|U�a2MLVGP�z?�2"�3��AWf���.�
��VfD��X���xm��gD�����<�B���\k����r�U�
����3�b�E�2�Zi�&��'}a?��nY!����^:��+��'y!��������l�f��d�y�@\`�Ou<v���f�V��
��� {m#�_� Y!Y�!��x!k^�E�
������J����W��ZhWnWC��{��9�J�% ��J��
��m�D��
������v�
�������B�){�vE���������
������eW�Y������VS��tr���R�����F�5=�jY�yri���������	�'�u������kG{��[����a�f��Z�����U6A���54�F��t��3�q���q���5�>��������Y��]�,s�I������:rm��K�|Y����~�
S�ME�h�w����8�A�/���GKR��=���J�����l����@*�j�����Kb�I�.�9�0�:���%B 7�U�Gy���>�A&\z�L���uG�.�T�����j���Bk��f�^/�rV���W��^�, �^:��Z��+z���j_:��R�~^c�����{����a�E�-. �^:�P���A��U�R����*U�m���-������K�y�>����v���+�U��G����Uc[s)����+WvG���9du���W�{�Q�V�*$��x:�*��}��zI_����w�p�s�����Z|M����&��/�����x���N%tMF[����h@���dC��8�����F�ge���T���z�Y;\����[Z����xz��I��)��Xq0��`�-��e��@j��3�q�X��_�����< W[p
U	~iX���&!$lf�Q���?���9�����?Z�u�$Nh|�-�T5MB���VJ^R�)�v������Q�Vz|3�tSu-��SM���4I��8�G��-��1�;k��j
��#m���~B��G;G��Gk/�F����P���,���.�`web�9�O{t��lF���9(�%�����`}ek 9���p��7Ss$��CrlC��;q��Om	�79��]J|�7��H�m�b�+�����6�t,��FzH����D������ �MeQ�!�&�6�L����m���]���2��%������&Hz��f��6.��� �-$������&@z3�xe�7\���IO<�A�#=�����]HF4�p����QP �w����0�-$#N
Gy

��$�/(��M��$�a�[���������N<��$�-��#���2Z�IO<�A��w[�����fL�y��(]��o��y+��`#��

�[��Cl����<
���H<�1����������44o#�(����J�44o#�(���H�BOC�v1�d�����o$�724=����]��#.62P���	O2+��(�$OK�V2+�����bzF�����L���mO!��6���y+����[�W���ykK&e�ho�
�!���/��0E�FR�d���Y��:����
����Ot�==j��*H{���l@������G
����'�;B���a�=$P��6��g��*@��|/����������3�����B+&���?<�Z�Y�;>�G�l��:���,S�qK��� ��D���	���C�*�X��,�����_���	�6��lP���gr�l�Z������B;Xi
���ic�6Y�`�6��#dWw-�qL��j��[+���kL������@m��Ei�e����8n�|$�����b��Hm	����k��n��)B�w����K�6
7C���[&��M}wu��}g�G��7�wD\O	���'��p�C
�:�I��j���MYV����v��"������W��A�d���� ����#��=�G��N�?���m	��k���'W?v����.��s�#�S�]��n�^����7�=@�GX����2�����|�&������\����O:�ct���Ew�]Wl�����F���t���>�y\���Wc��>����G����{!x��D��j�|�HSh_\+#��*������pT��N���>�<�AU�����J��Mg>�p���^���
��CP>�
��P>�N8Fr��'����k��FJ���5A@L��J7�:�"�����q�6���F�ntc������)����&s��V�������k��w���9�pn>�a�sS�(��h��Z��������"i}���b��
�=��
���{<�69?~�c��~�WA���.�X���B/�<��{f8s��
]����tv����{�i�X���L�d�P�H��3u��F����!b�k8��H���>�;�k��3��<O. k���D������I�$������d���)�A'#��Q�2�
�O�$�\�j���Z�rX�]��Q3+��J��J���h/��!R-5R{Q�JR���:����
�G6:�d%>�a���X������* /B��M�k�����K�t��
��]�g&�����H`��9=���Bc��������S�^C��!	i���x������p���E�v�2���;y@���eaB��R|:A#�.��u����S]���sH�cu�+�%���c�3r���y~Ft�D�Y��QY��n�����t�m�g��n7�\D�����b�>���SQ�D��X��an������C����l���G�y��}�E0U�|��s[��,��Q8
��:�(8�F���c�uv,�F�h�hH��38G�pe�s��%��S�Pt;
��������Z����z���ag��.K������!}�e��%{%�����6k�l1H�����}H�+t���p�!\�R�|����E����rT.W�0I\��<�k���#rD��5B��*�%�jy�N=�	��]��Llfv��d��mR�����T�B��	[�Lw�~���v���wS�l�A�r�������v{����^���;_�p�jy~�R�=�	W��o;2J����~�zQ�#�Y�����z,`m4j��~��?e�A�,��u9�C*%�����wC�	��Y�zL��=���?8����i�?��R���-���x��G+^8�~�MPZ~
������h��V+����O��$�	����������k�:���@���/^�.�3%�d�w��/[�)��4;6��X����Zf�T�6`o��V���
��O��{����^]��.��KI�-��3�z��G?�oH�~z��?��1I��IV�o��Z<O������B�o�~Y���+>�a@������f��
mu���m�Nt7q��
w$�]����o�����D7����S����E�����/'�k��5���f�����_n��"��,
����Dh��}L�P�^��x[���m���)%��NeV\�Z�����C�V�z����
�y���V��;�6	���������d�b��������4���4�1y
}��wD{�����6�B���#�������9���w����:�����>�[�7����S��X�&Y%Z��u�C��k���yA+?�n��#���+���%k^����!~�>=>��8;��I����d�Y�����	�QX���J��>���������;V���z�z�����F:+J����UI���~����?�*(��T
�
t)k������Q-:R��A�:6������S�y��,�^����Y�7�YY��a=�Z��+5+/���X0^=�c���{o
��	$dy_�V���u�+��<uV�����o3�z��E)���?g��+l��C������	�M�����;:�j�k�����;\nh*�]W��>�G�JD;��	H|��4��:�
a����
��
dx�w���������z�v��cE��G��H�Z���|�It?�g�,sQ�9
G�m�5��'��4�<5���X�S������K)s�k$����7Lx	�sy�������AYgo��q\S�do���?��z���g����K��b����l�'��x@���SJ
��O�	���%���Cv8b�Y��< 1�+#��K��=i�R��^���t'H��.��B���D����#�v���.����X~o\�i+�LO���S����]���[z���zw����Y����/��5��[OM����I�����������lM{{S����������c�u�kM;��g-]����/a�����u+���������G$&~��[�[o��W^�|�����WkE��l�[���������|�����|�e�1�f��u�����w�/O�V���>�D�E^�A��N��Bd���@�������x1����D����l���������~5%���=���s�+������t��~yz%�,ga,
sy�{{QPO?f4���}�����.�cQb��i6�����4����;���	�z����-���+q�[������	d���@N�zR��G�G+#O`b������^��/A���t@�V��������x�wA���K�B)]�"h}�[��#��]�����:���������X'��z>�	[ �v�������pP7������,���y������t�]�~�#=:�"r�&E�b������N��9���U�s�I��o[{�G�'�~�W������������	�f(d:�|4��������7�������2�k?KJ7�z\�2�Q��G�O�~�����r���(�����.(��[�����v��IR��P�'�,]��d�P���)EoO]��:�l���u*����M�H`��*�\ �|PV�P��H)�w�*��c*�E���,g@�,����-��Z�4��iu�����K-~������[E'�"k����2�a_���(�������Kgq;�L��w\�R .hC`*���KR!��\w:D�j��Y�2{�g����bw�c�O#Z-J>�94qzo��M)O]Z�@�y�Y\�����=�����b���#�mym���|Z����Sj�k��r��w������=����������������/���
c7{~�G���;�������<C!����3r����q�b.�B~��t����O/����e~,J�|�pqy1oY\5J��E^���y�����f������n��L�"$��{�}� ��-�G�m�kF�,��X������������l������y�{!���/����;[t_r��������J�����u"���\nwJ@������@�+��WwM����~�L�w�����x4QI�l�px�e�w����%��m��q�*������g�]%����U�W�/z�����3C���
�l1n�O��<��t�pi_��N)a�����qWb4�e^�����R��p��k��n�H^�$w��;�4���c�
Z���5��z��v��H����P�%1�&�a�)	�R ��|��#GG��$,J%Bc����	�B������V���t�u�8�����e��H�}+�K�t����U��^�����>9<[�!��m��b�9E>9b0�E4��l]�-��G�c���D�u�r����7B���;B]WUo���b9�*���efK9��C��8M��H��;q}yE������kgj��

H�m���k�b��o�g�[��"i�\KW������
�����Xn^�m�vJ�,m����r��E��C��KEG��`����k�x�Z��z��H������e~*��v�x uw	��������y;��!�Z�<�^[�^u��f�\)
@����'@����)�A�����������D���A�!
��VJ^X�x,\���>��r	r����=�l_R�^��,��?S�s!��jv�UYk�����wE��f��\���-����nS �I>�A��9g�4�4
"X�;z��8���.�����lwv1��x�Ez���1�-������^�$=GF��kr��7����kr��WM���$�@>���uL<a�
�g��!�o���g�����/Q�Z�a��KT.�1�!��<�#��k���)r�qaW{�O����-	����#��A���e��X�bW8#�D�RpwQ[w��X
0�E���l�����q���$-E�}L� i���h���!�=��e���a�a����E8�Z���f�:�����"W_�&[���C�(���
u83�����.�Ymz��}��2�C�&���
���W�����t�O1��������F���_+���q`���u�#W�-K6�.���/A��~������������:3��}�T�����D�h$te��^��{W�L�V�Ui���	�,�8��l���)��W��������?��K
��F�?2/�����4aR��\��T������L���9�e��L���!��SUN  #�L�'���_5UJ�jg��c��'����;����N"n� O�y��X�BZE�*�(�8�n��Pt�NoF��G�y�\��KS�VY��X���)�z����{�z��u�=�vo=/�L�%K���=����~Y~�@h�8���%��6N&���P�*e����8�G~o36V=@���PI^�O��q�����lM���x|
��gt|�Q����<k����:F�C��;]��R�m��^��bX�EXug�c�0b�]������@z��7��C�8���JQ������W���tc�p��E�Gv(���~��4�w��&��A�����
�a6,������S
�9b���6�tFN��>����������'~���u�T0���/Y�����Ou�V���i@��Ns>��(���z���U��,$K��)V����`O0 ��6	9��M�W�Z��$^M��o�W���8��G�qXs6��e9��� ���ekF�\��f5D}T�r�^��0�R!h1k�ff��g���tu�c�*
��D����P\f[#=��(��c��F7�: wu�R��� �R@�:+�������X*����-D����hU[`=u�j�VA"����%�][J8��--i���H��}MJ���e���~��h���NK^M4� �S�O�4 N��05����v-|ZZ"�?����7y��P+^���+H���F�r�ZV��X���
z�C����4{�z�����dY-�g�����<��d+_���t%�����p=r���/�Tq
������+V�]8���ujb�g�\����+�B�:�a�dU��S�����IU���!��go���vD��I����7��.����Q��L������,7m�YVG5��5_z��W�����������SB�'���������zh�O�R���	J��Sh6�:��)ex���+I�| ����:&^�����:��{XR�X�pvm���o[�����w�G��V���z�
����Ddh���s_q�
S��V�0x�AK��D>���Si2���;F28f���b:���/����S��`�� �B�:����e$��
Pf)�:p��x�>���C������x��u��12�v,�',��:m�l@>�A����y��Bh�]@Bl�X�&���5�]M����k�bWB�>��i*���tB��QQCD��{:�!"D����V�xkF�"�n���{�"~�����$�����$~��]������J�X�2��&�9#�^\��C�t�E����zc��Io�m��t��M����Ro��Hu���$}�b�,]f��&����Czd|�`}e�d=UK��ZJ3��y6�c��������.jY<iDA�������9������/�"c�`�z�����e�`��W��{�W�6q"�X$I�)?).v�$�$���������J�����j���@?����\�w����� ,L:�UVSN�%�&/���O���_�/����z�����5�p���P�gY��v��%���������1����{��/���V�c�J7�
����9����F"�##w�R�E����f����&s����a]\U7z�+��\������L��������������
k�.g�u�X��;J!�'�4�D_�������8������������y���"1�8-j���/�E\�q+��E�=�`#��=d/sL��|�����w?wd���Wx'h���{���i����@�) ;#W�����.��������V��p�hd��f�M/
��3�:|]]�X������?��.J���o��F��MP~e?>�2a�>�^J�Q��@�����{�]���/��z��.�-�����6�����a����Ix�����(��������%O����!y��p�}�����7�r)�WO�v�c'���b��u:q[�d�b��O�����1�/+�3�gw�51��|��J1���m@V�F
Z������@�o�?�w�����K=$���,��qq��������%��i�H�~3Yy���%�����W������<�$�y����n�;�n��C�M�
��"X���jy�+yMR������
�l���6�Z�dz�bbV1�eb������E�=>b�5��rI�M\|��j�����y�{k����^���������y��@��o=�������������_:�aOfW��������%��K7@e����4�U�����{e;���o�w�
�&�#��u���<�������h�����{��C�G<kC���/$XoR^|�E���K�1�����;���(�h.(����Y6Lj�a����6mBoO�x��`X���<�%K��t"�,��� ��;eJh�+>.����V�h�^���}8�v�D��`�M��V��Q����-F�j�o[�_��
�Z�
����	���j�B����Q���lw�5)���B�>���������J���V����Ip���M�;�:x���v��v�`%�N+C���e�R��f"��-�]Y�R e�}���K�f"�b0Kh<u��U?�����8��T����uf/����=uo��N��~k'-<`=��Kr��+>/_D�~S$��&��������
�������!��#9��<���h�)5_����V$L����-��������A|�g����,�����6�N6�Y�?#;N�8 	���{����7��cOK�<u��WD}���v+�_OCX�$I
�����)^����
�yY�C�"}
�Bc�ec�:���VxJt���Y�c��������_���S�Ht����K.�}������8����N�����~`���c�����<���k���,q�e�taa���LYw���!+0�\���\T`x��r��o Ig�����!V�t���z�s���Z�����^����W�A��E��`t���}c�&(Ha@�P5����,��h�6��\@���t�yg�=�	#�:a�
H�N�q�'�����9��/B����Xj�����W��T�_��q��`���h�E�'ol_�D�����b�
�P�h��l]������eH)�)���������I�������W��At����;����Ogu�|M��p����i��^���u��$�yi
�/>�W��W�^����� �Y}Z�tJv{��z.���5����������7=���#*���u��6�n�����l6������|���P2J�K����/r��w,[5_���"���������Z�����B��W~�Yf��~{����s���D��Yd�W��6brv"j4J7l5!cq`�%��c\�;�����vmM8�}�9{���BcoMA���E��| �8g�]����c��}�����X�r������x�|��aq�x8�E����\{^M���-��R�/���V�eJ��h��l 0N��o+�F��Y'cG�����}�6 �VG���0H6g���(�B�g4�$r�[#v^�Vn2X�\���55���k�x�_K���/m���w��O�#/��������K�/Y�*{`��[��l��������&��\-�`�c��F�4>���W����!w���� �p}a-��p-�%���" �V��yU����W S����^�j5n<$Y��D�������4�bS�cY!�b}��|q�����V�1vHU���;ZT��1�:��/���^X�C��lSZq�/�2?p��l�u�I� L�+�i���� ��_��j�F�|C��V���%���]�R�c��m&l�xe���������b<�~���:a~8
F�
8 �p��U���e�_S���D��k<�����Q���|?��2{5�.��k������zOq�G,[�M��]>�m�S��K�@����/D��u�--��o�n��\���m0�
���M�<���(8�U�S�����">�9{g�G��cll��t��Q���������m
����c�lkm�pEmYxM�*Dj�������1��gYZp6Lx:������Z���	�U��+$�N���;�mr	�j;������~��*�e�]��I�n�c���%�������[��W�;���0��.!�5�Qm���;$���}���������@��]f��&�$9��Z�l���%�_�x���ufo��pH��d�R�7h�K[��R��:���U���Y���m��j�P�q��Dv8_[��Z����S�-D��3&������%=&;�"Q�	����+��n�fn�������agWK;�/�O��j�2�&D��F����6����UK�����m�i������R�=F��ef�I,�Hm?3��{����q����m�1��G���^$&�/�����K��-��
�:�� ��$� �K�3�+�����@/e���#�J=�b`��.	g���\��~}��X�zW�N��������{-MIz$��
�9����1�3��L�,X��%->�1��m,�bo v$����j2 3�f�����pZ���J������������+��W���:`��X(��W+�"��Z�\;h��.�@eAbwd5���S
��������#��"�Z1�Yn��y�^��hd0[��X���������,���/�^���^f\����}����X����S@V���|9z��8)��kZ���)���m������O��aJ�g��L*[��:��z�V�v��	a�5��(�����G&�������G�&k)������4���{+����w�w�������?���u����/T���!�4���"�_����B5x�2��T*J��xQ����|�������[�e#{+E�]���:<�r�p���Y���1Y{)=��]�L������������������:�R�Y��(joM�wS����z�Q��-/�����/�o�@[������,Z�:���x�kS�����2O��K�2p|���\v;�u\*�������BD�fA6o�G���� ';�'�d�$��=�]��*��"d� ��#���(?m#/u����&�'����j��2�^��E��1�����<��q�rc��)�T�8
�?*�s�s5[$9���a�����;��p������.v��"�"�9��c�����x;�;�_[��-:���yl���[�[!g��,���� �~�j"����`�R�n���l�������.
�kYm����Bkwk�"�EgW�E�C��
f�������5��n�kx��j;�%�Q�g-S��-}%��yo�}����u�U��E����Eb�����w�U��E����z�����&��F��j5��;l�-��*
. X\�
����r�]HnD��&�=&�R+h�O����sf�n�+6����%;rEbK��q7Y��&�uo��#�E�_�t���K���;3����;�0
��1�f1c�Fb���5�Pm��2�e�j�2��w�Va0��+F1v��
\�O;c�2�TEd���7c�0R���B���d/�\�
�djI�(�jo�v4UP���^{���s�u����N�
[g������7���=�0��M�n�l�P�N�D����0��[�Og
!6	6�������G�6�Z������BD�����8�`���X�v��n�����,���I7Y��a����B��[���0���nCv�H�s~���a�!;�&�8?������u����C�8?�Vd�d1��@���d'#E���{�`�v+�
�`J���,���X�a0��a�������`�����1��c�2��a�������H��XqfX�P��g��X�v��a
��3��-����0�Z���0D�3�n53LahWaf���a����3��23���0m`���������K��Kd��;�S��;Zs}O���������d������#�H���4'F����	���n����e�$	��
+�R�]R�>?+���3g~w�d�h�i�]	�.pV���������>uA����u
��]�]�����i�K�LR��xE��9��o�o���A���P�������O�����|���.r^�,J�\8E���M!�����@L�D��3�����zKmW�6�.2#��0��U���4�����=��b}V� �x�=����m�_�L�����E,����|�t� ����>�Ym���R�

������jSR�:V��a���W�&|�$��O�D�F�Y�o��np�I��	VsW6A�F�����
�,E��R���"�#�=Y ��b��.��/b����������<����P�� ��b���:F��c��JQu��5H�i�t��+�"����[e�M�S��G2�N��2���Xq�:t���u<?����`�;n�X:��Eq��a�{$n�X:�[�XmaOd�}7����y���S`vT�jU
a&<@'�^�[��C�P b���ba:���H�'nEX��~}����[��>�c
c��
�UL�Uba�OE��-��N�Q��NQ�P��]w�=����j���=��V��bB�Ua>0j5S��V�	������}����B��2��e�2=F���!Sb�uE�[2�K�����E�u��moh���0��MA�����%p��8��&{B��l��G���������q�[,����q��A�*g��� j���u��T]�D�Zf�o'�k7�������L�"������&Y�D:
�/(
����S���9���Q:J���jV��LboM*#-���5V@�����Kk��1#����W�D��8&��#?"OO��k!�;����m-x���L�y+��S�Z� $^l���")�w������_���,ZW�{A,�M�*��H���x5}���V�d�j�^��#�����������ju��9���Vo��c�y�{�RLmG��dZ�Sn���)2������0%/�r���&.���D�`=��x��������fa�LT��]��@�}R$���H)�Y@R�tQ�4R����X���$��z;�h-�VR�����rQ����7����h>V�0������]�Vr�����R����(V�����"��k^k��h�|.��?��
�q��yow~{4q,��y:�8���i7Il!I)I���|�I��HRJRC���g�H��IJI�����T-��{�����C��`�R�
����
��a���l�6��j��Z�
�t�b����tl��a]d�`q�Ow�>��9�\��.�����+�}���6�����}����>{���X'�����\����g_���������_�����W���������|fa�C�|42r"GS����J���R6���;}]do�S�����?
'��S��!&A�4K4�g���N����-*bA����2�)��Y���7*tis�d3�����)l0�" =N�=b��+L��_'�&2��r�wy&qj��yi[�eY�%��E��9�z��i^����:����=�6{��D;�
��~n�}������4�.ZV�r~�K���U'��SK��U��o�$�p�;\�U�.+$ E.�Eb��+P�KRK����tl���C����P�$j�y5�jC`���y&��������pa&Co�e�me�x;��v>3���yu$�x7�S�n��-��g�!���N�"gT{4����C%/i{���X�,eK��V8�N'��Z'�*����$�.�T�,����3PK�dg�*g/U��S�@�W9�o+�r��������*g�R�y�4/r�A���]�\�!��5��`���`D]����������k&M7xW�2w�W���n�����#�yqU���o;�j�~�	�����) ++`���cF��c���1{zX���c�A�:W���-���+�-���7�
�S8'�P��oWz��M�O��v����3���de���R�����!�����T����`I�=�h��)" ���O��O������3�����B���{�h����b��_���(�g���K��C�����s]����
�_Xf�&�dgZf������9}'dn2����3P���3���b0�rN|@����P>�N9�r��)�S�:yuL�?�1	S��:�����L��T�uO�����d���� �k���)M�O��O�C��Y<*��C�7v��7���P�_�\�������2�:�������&�A(7�CE�\[���:��
G>�P��CeV��79��1���9��%���ktc�6��b7���AM���k#�����}<}c���x���Y��f�siG�f076������O�D�551�B��*��:Tf���c(7��B�����]i��L��0��C��z����M�=��
B���kP3�7d�U���c������+E���CgGJ�pf�oi�F�&�66v�yk�w���kVqg
K���6����[W���k�f�n�F�N���a2�mh+mR��c�6�59���'`�/U���\�C�� �+����:v�=ns��Fd�qy�>����D�\DD_��x�U�V�.
�����Fu9w�z�x��N���531�F���)B��:T��}4.����x��
�Z:X��5S��1��L���l��`�����"U���l�C�� �+��F]0	��A�������u&DG�������,���`��� �c��QC�EWG���B>��q�����J����B����V(��,�f1�RatwOG����CKEW����o*C�U�� �EB��HV4�61���P�zn�Ig��=�0��Rj��k�^��s�)�?����@���$Nf����q��Xo�oy�&�6���q\�[G��s>kw>i�������i�����9�U�C������t���a���#q���,���l[u1��j���R�!]Am�������Na���T��Q4v��S�*8�u��������<�Y����X-b
_��'��WK����MVmtWHM���{�9KU�C������t���5a��1Lk�v�>5x��k�T4cx6�pb3��<�y-=���}���!D���%�pvB��I�;;��\R�ou�ygn�D�00#d��P�?����Tf�5�0 ���"6? kZ�e���$q���@���c-k��kII���3�b3y��a-AX9���C�i|�A�����N_Sz51�|b����JR��Y��X���@[t{o�}b}	���G�}L�$�B�g?�v�2	~A�g���I;cig>3Qt��VNu$�Rok������;$l[5���N���&�X�H���`Z�Y~��<�g%�X,#
�:c�E��!�����3��4����%b��'�3h_�BGx�k[`��7`���\��'0W����w^�W��d�/TP���qy��	�B#�f�u����y	��Q��!e����Cy���`����=���~����?i?�����1����'uoh�@��jn5m�����+�K����>�y�D��d���1�[�2����q�.�$Nit�F�T��G��6��Z1�V\xJ^��M@aWe� �5�=�
v	v
{*�=2�u�`�l&�v�~E�y�����t������x"q����p�
����f#�'�,�G�����F��t+!FVA�"�j�E5�T�v�@����E���������������$�c�
�Wk���C9X���v}GK%{�p�����R��4��M�M"(B��k5�.�n��d]��z��xH=+X�0e^c��wl��w�_�tu�<	���+�W��L����	�?~�Cr��*:�C��.O���|�����-Kt.|Wk �Z{�������Wg�B>����=��v��0ea��X��uL����������+/�b{n_��WF�����U�[gQ������`c�G����Q�����3Y�:�|����cZs8����UF�Y���SB��R��$ E:�"}�e�k���d"���>�$ E��Eb�D�u�Z������b���Q�Cj �2H�S5�����5�+ -��,zq�ah��q>��X5ir~�I�=�����)�n��Q�}����;�(Y�iq�h�c_UH�L�"�x�0NC���������(�1�c��H�1���1D�"��i������?�g�K��7�9v���H�a@�T���^��^�fI��<��1�����&����@�u��4�R�FF���a���ga�`�Z"�B=��!�T{��A& M*�>��c��+b����)������@0Nj���P�dM�G�q���#����� uDH[�U���dKv���n�d_(]���EI�
H�
-��`��+Z�7qL�P�JQ�![lzc���u�F�<���"�BY��!:NU2W[j�����i:������T�p����]�����vy����\m�D�>Z����&>���H�
1�|	X���~97s�c������[���n��i��Y�@�R����|	5���<�5�����(M����a��Q��,ui`����<����j�Vr����*3������c{0)�"�2r9�������yk&M���O�]�!�����xG�M����$5�������_~���������IF�t�qoi�50���.T,8���:#������w�q���5I��"��mF�,��~��O�u��7�_K��Vm���)�l�Zw�)R��>��Uh��%�8�:c%,�6o�8&�������~��s��$�[�$|�����9�����H��=��������e6���lB�c�M������gq��y��,���u���$HI�H6p���$$�g$�$%$�8 I��k�q#I�&H���$��������XB2D�HRF���d�;~K���|���1�g�����w{${��,�����w*�n���_���-��B�k�K�`:�U9���Y���`)�v���%�l�1��r��g�,�eK���S�~#d�,[z�t��)�!Kd��{��eu�e�G�V+��$S�
}��!��������]��yg�mO,��8���t&�z��J�$���$�H
������HIJHVp@����\��I�H�u��y�����IJI��q��Og
�$���5��������E�$�K���Vu�������/�S$py��w�5�e�d0m�r���Y���u�o�v��b��la����L�,�{��eK]�F� ��r^��#���n�� ��|^�=B�-,u���u��?���=H7`+�A[�>��e�N�!U�F���4u�*�8���X��EML�k7�W��V}�Io�������V���o���9pSG05����@hWJ�V��Y�8%�*$8i��3����B��V������zB��v]�X�\��������<*`�b`�F �lw6E�])Q�v�E!P�����;C
�"��4)�@�s�(�J���;k
�"���)�@���B�='Q�X���������O�gb=B��RUtOF����-��8�^�������~�g�u�s�`�}������9��0���dd��d����.��������Gg�G��#-Q��@�?PN�
�
�2��21T�*����+'�"�0u0P��[���I�8V9@Z��Y�����84�)QOT�)I�`T�E�D�F����8W��Q���h^��R��$����;*�]=Qq�f�b/Qqd�D-Q�V�a�g��Q��QwltD
��
�.FeN��q��8i�z!"�*�f_S�a�������R��x?;��>4��
[�4@ZT�I�K��Q�� �o=��X�iQa$���b/��S#%���
#1��SH�a`�|���$ I*������G����8�zb���=����G��#�cE�D�Qz4��^�vf&:��1z4��D�x0���*Fd�+��G�,�hRO�T�a?`����#�&c�*H�
�1�����C��m���*H�
c1O���p����h0���H�
2��18���h^�������?=�������8X	RaL&;=��~�����G��}�).@���l8���H�
3��1>�g��9��g������:G�z��D6c��z�0 ]*��d��0�K�	�i��I��
�m�l1
CeC�L�����*{
����+�l0P
8�7p\I�4�����0\������5R����0R�E[���%&9����� 
;9F�^��y��U��gR�1��3�5(RM3f�
3)���'$:��?�j�13Q�y���?"����)"N�`^0"��k:����
c/>FD�q0c|]Qa�����SD4oZ��+"*���d�N�QQwT��,�" E*�������Kt4o/��H�
�-������j�a�
f=p1H�
�/�������#�r�, m*������xn4��V��I�����*{
���86D��*�����pe��D�!���. m*����#fO��yS�L��z
��K��C�`Vo��T�0�s��=K�o��4�6�����@9����	H�jc<�1L�&�Ko��Rd��d�P�����8��$�6�'�&��$���$;?��>�d	�q"5�&'#Wm��0��R{�t�L)��Sm�����M��K1�6����W����9��Lg#I�4t��*H�*��\@��8Y�j�E=�Q��My`��M���
�2r���c��)P��^�(r��3v�~Y,�K�v6��&
H�
9C��p�K�4qg�&	H�
�B�c��)�v�����i��$��*���d?���W�l���4���y�9��:[}1Ri�{�1��i^����N�)��=\~W��D
H�
�8�`��'R�7GG@��x��K	vPj9r�������0������N�R�4j��s�V���x����s�X��J��~v��=�HC5���
�6���/%�GIg&��cp������0x��#e/����8�zb���
�M�����pi���I��e�O����%`��%h����RO�T��/+�����P#��������"0z�=]����z��(�q�	��
���Z��:�|�+���S�4��.0��U��&d��R�����4r`�����?;�>���a��F�1���n06����I�����0��������h^�P�$F�1���C���8��9U�t��10�����j���0���������������0\�������h�0M�$F���mb������C��5�d��16���a�
�0~�[���9���D�	H�
c1��1B�2��6/B6@@�T����c�G��h0�
���x?;F�^�ca�0�zb��x�����*������f��	H�
�2�� �G�<I5���8�0>C����� 9L������0>�������83/<�8@bT���@��8��}h�=*����cl�e|fj`�:�To��T�g��T�������%�( U����QR�Ja�,Q5���H���M�����Y���b��J�
H�*����eO�rn�J
�rl;
��gz8F��H�F�7����H�
5J~v��}4�KH
��#:N&
�5�p��R���|03j( Y*��W�������y3k$�D�O����k������|���~���t�4������j�q}��FjE{�L�mT�J�CL�����dyV|�����3���51�����?���Qkv��,�����*�p`���	G	���$�GK	s�������
1wc��1O
���X�3�=C�oN����(���..�Pp^���=�����,6��{�=}����%^k���]m�/��d�x@��=�Z~L�����J(e�%�J?I������|H��j������2�TT����]���1�e�gk>����d�s����
���O;!�"b����������^��o����2�5c�E�]k����
ad�'N-U���0�sAb%n������j�G#�A����Gg�v&�I3b��:�����ql����&p�k����7�_������K�����v$%�����)�v����7�� �Y$la���$��C�D�bY�F��������� Yn���{��3�����'�(�����;j����P&Xj�,�E�{���X�W�~�B���cL���%�b��e�.�C,�pt��I��@X�o������������*I�d���w�3e���n���������-���xI����Z����zM^����	v�`�K��z��Ne�,^����E��
�4x
���QF�����h�o�0$�����9�1�Y��O$dCFIJBz@$4�=�&��Jw�7�Mj�"�&����������W)y�-`\~����'� ��b�� -�0�����H�1u���S��|C6��+��Hn}>�C�����CB����-�������s�����5���pBc�KyTG�(��'q��j%$��	���Q\.�hV-�mz��b+��CuW<�������HM�����3N{
����/in�)�92���9�)c�
���"�����G"�#��g��cv�/�q�����R����w�L�o�|����|$���?����qx�����g#���3r�h�1�q�c��w��f�-����?\������w�z;��6�1V3zO�8K�+��r�C�����u4?F�K-�u�dMO���T����ag�q�������<������/^�����Ld��d	�����p����������W�]z���	X���N���c���LE[V�u�u���~�=��I$[W��)�m���6���ua=Q�����$ �.���"T�Z�Z&���V�n�l���T��k������j�=�p�\v;����Y����������~��$�dg�������LJ����g������D�����`�lDw�Q�%��g��T�5��m�]=;�;J�$�)R�G=���g�x�	��@	��i�]E�$H��H$��#�|�-��K�3!����,p>9����7�C)�����������|"�����������"�v�J��f��4�o�������N�
E��J@K�~
o����ATY,����N����*��%q�"�,���)��c�T*Rk��9=��6�)��g�:��A��E<?P; �T����)bz
LMS!OQ���v��{����]�T.PQ�"�����OL��jE?�\�&N���4f�v<��f�+�v�R��MO���5�`p�1��u&��V��f40:����I�2)]��Q-l�,�i��t3"���\��Hn�����Hf��!������C��&�(-��+�h802e���~�rAT(O!'�Jc!L�sQ'<�c�~x�:d�C)���i��
m#b��9�p@�M��9�8���.�}�����~h%jq�{����� bS�����n�!�YZ5F�|��['e�X[T������4��SDa���y�%|
Q��|�:)�y'�4S�*�,���2\���,/!�5&��:�duGD���j{V!s�v��HP`��u*)��>����nM�Y�6P����Y375-^�5���RII�1\
������q}{V�v��+�
��8	6'�i0i]�UA��P}L����BE�r�!X�i����	�HEDa��S:4���Z��=X�9��S����v��P���0�>��!�a�*A����	�AD�2,T���AD��
x��}���s����\_dB%�������!�a�z!�c��%���"�bC3�X�o�"�E�Ap�S'������8���ag��0*q��MQ."�0���#_$��k?�
�0o���Fp��_�*v����0����H.��q��b�~��$���/��#��A��M�����2�����s�k��n�mpG}��'�pEt��_�2�CD%��A�:�/��uP��+!�����P�k�^c�G�GVcu�ta�f�P�i�LC����$������C%��}A�f4�k�}���~����������	����g�\w��,
Q�mH�r(h�,h��VwA+aE%�{�	6mBa��V
l#�������u�;^��"��jPfC]Is�h��D�%���V��N���a���Mm�5XuB�=�� +�4�?�<������t��r����R?�[�M�kd���^���9x�v���8D��b�B�������}o�A`?�����a!�D�6��k������8y
�Z;y����
�������c��7���7�p��;�g^m��<�O���1fLw/g�u
��l
3����)��f�N}��E�F��m8��������;G�;����-Om�M��L��J�e�>��������"����2+��F_������wU&���[�B�l�MUN0��$�H���E �F��D�����yYL�P0������+�[�9��[�0��'�aM��D%�_Oo�#��gS���YT��{lof�����2��}���������)�����m['Y2�A��7g�����M0�:Gx��U��|�;����BH�^�
H�M�8o��2��p�e	�1�����Z1j��YnJ1�4U���1j�HnLC�(�T��z2R��b��r����_���]�����|�Qa��?ak�<�����9�<�:`����%j ��%��Kg�.:m��.b��'���n{4V��s�@�`�
MPL%p�8\���+~-qB���hF�AEb���
YF�w����r����h�37�;�q��'�h�QU>��TPK�K`4$�A5C
��=#�r��������q��F%����������l���=�v�Zv�	4 �3��0#^���0K�h�>���f���(�a9��
���.����5�f��av��8�=��28��@d���@� S9<�@��@��	Y��(�=5$��q>lQ��<���E��`���J6�.����7G4j��u%�M����(.
"�'_l@p�;\D���@�^��Jq�ynt���; ��F�7Cq���a�/$OrXezr�/���K�y��
�`���;0����j���elV.�J�i����`0��	�[s����,
*�j��~��0�
K�a.�P�H�����AxA(OvD��������)C<�S"(��9T���{�I�?�mx�wug�����}�T1���6�T!���}AZ��N���i{��$�5}��_?�#�E��<�~�k���D@Ow�Rkh�h�	����
j@�w��J������q=C����Q���N��4�Cq��/O������w"!p{���u�M����g���<�8(3�(�)�9(T��_��!^:���&`��-�<��h�-�G�:��q�,^��3j�W�BB�p���"6�/�����i����;?��`zA�����p��R��2��^��2X0s��J��d���������&�U�"���l�L��}�3`����F��
������0�?y��
p.��R�J<�|�}�\)���\������47�2��
�\G%�����y���i�~ %Z#����*�p�f���s->mk��^�0�E*�������4���m|�.����B�������H��K��4���gGD�#��P�PO��������l��.M).'TY�"}\"�`6��Y�zv��6c���	P�9R��0R���RG�i7u��P��5O�����tq���tQ-5g�v��	_�a�tT
��1=a��>�k �p$�(��Rb�f���>H����J:A��L�*?������;���&�3s�O�`�s��7K7��J�^��ox����R�>���T����,�Rb
�G5;�Q�y�%�)N��-w�hGK�<�����-���6��i�
��|MOU��e�^�w/�������:��cU�����2�R����m���3dt��8rF��3$.�ok���T����%�����2[�?���7_g��C�s3����N�Xt����3�M��v<vd7�+�<8a��s��G����
���{�C�-�;4�n^����~a);�u�}�M��������#���H���pF"����it%'4����&2�-�<�^h�z������@
0��Q/�B%��A3K��mm+#�����X�|���{��y�����6����	}/��WB��O�$��0��|����a����m!V��D��|���B5CQ}��n!��E�x&��a��
i����c46M#�QW��@��n�0)b~=v���{����&/f���l�2%S"��
@���>��b5�_�H��K��^"���"0�"|��,+H66�xM)�F�ac.��--DT�(m{�-���P�gysF�}%-�{^9��(g3T4%e�y����gr�<z�%z.��p�P��/����t�$�WE��a����"��V�i*����[boG�o���6MWT�L�TZ����h���(����?�����)�SQa8�=�m���������(d��	f���i,��JT���FQ�	j��A|'����������HnZ�(�����;Ky�<���=
��$S_~���8=��/��>��������w���w�7�.��Jv���AV��1����j�4���},��I�"����|��YH<�����E��v�{'$������VC�:�`�R0T���h���J������X
'3���p����'Q����G�n�!�I�p��\c�L@��IW�M�%$T�����&��g";0�$�G� �z�b����{�j��4w�e�a?��������\
��r83y�6 +��l�iqga����JZ>�XFfv���Qo��*h������XN���z����8�~���TF3e�����O+S�T��:Y;��jjmS�#��`jJ6�^&�^T�:�y�q�1q	�9�4U��f9M��E_yP�*��BLY�����H=�H�TT���(u���	v3���5��(Z"[��l:
�'xy����rI,�g}��-V��9-p],���H	P�_�J��;��Ca�=��3�����T�_,�
	����:�?���m6�m2����D�����L`��I��wP�ihF-Q�N<�����0�wz���v��A���
����7$���l.�l�|m��	��24�K�	�E�X��PIk~gS��N�����^,j���F���*i�o�8P�%��a���nc���$T��;UJ�bua�J���F]W_��
��8nF���Y0�! S?��n;bc[
���:v�<q�3���qL3H����M9#*i.����B���a����qh��t����?�]&�Hz5(*}�{%�������y����D��p�
���K�������F�%T7 ���Q	�hI����B>7��K��s��h��P�m*��Y>�|!a ����������!�����r<(��f��G�"&�:K������>�}���>�)�5��y�)z����
����G?�/�Q��@���C�r��H�������@�����[4 ��]��^��!~�������^J?�/���^��B\�W���v��#H����OO�6W�k�z��aB�:K�6�������+!�U��@B�4� FuL~��R������l�Y��]�l i=���Rf�?G�z}����S��}K;\JpE��i������u:e�c��#�@;A1��|��|Gc4l(��Y/,7��N�f~8����s�Y�I���x��P���m���w�����T; ���P";R���>�6hFg�:3����"h�|�+9����^��v�>IOD�8���PG��nO��<A��<A��6����`	�tA��6�����A�CP�_Ep�M��r�&��/���7IW
�/�\�k
�"JL�d��b
�F��7Bg��wD�,$�����4�p�����@������2��}x����3��x��q*�4�x����E��x���!^�2�B���a��~!�����#���4<7��Sv-�z�H����B��J"����`{�c��T��l�����fE��<�1�W�H��/2oc"rXG��(s06"���f��s�UF���/��}�m t�.r#~��/q�;m	~�����S����{�����+��������q�E�
�����k PG����k���I�	���8����x6�/����R��iv���<����0�qP�)��F��8���$����K&C��4�|�+���F+��%yR	)m�R�����y�����t��� u�Qd�8!��������~pV�*�Y����pKs�u��@bMz���Fj���E%�`V;\�����7�����zd�+�;Y}����l~W��	�h,�+X����J�~���*V�Q��I���-"����G�>�Wv���BD(��]�~�1&$�'�9��}c����8�B%hvh���3��H/�_In�[�4���^�ge�k���,T�u�:���Y3�e��r�:cL[���Y%D0����c�:�n�h"�G�[#��0c0�f�$�C[)�,�������L�F��y�A���(�#���5d��^��k�W���S���E$���A�(H��q0?���*C���N�,zip��y2KlY���X��0L��:�Y���d����(�5&�#��M����T�����^�q����s��2Y`B���aJ�����TIm�d�d�����3)������\k�����=�R4�*��ak�F�3��V5�R��]�'��>�1��96�:=Ck�OQg ���~��1�C�� ���~}10T�p�"n��QCC��l���g��������H�H��NQCC�S3�:]'6��9������TU��������&"��K�
�g�oav������,*i~	�}����C'r|�p<��~.s��"��w���*9-���_A�h�'�b��~I���6�m�e��&�%��5�IO[n�t�c�k�w�+HuD�`t���5:m��D{~���5w�H}���O'�W���F@�%[��
�p�������$"��P�D
��L���9mh0�U=�]�c>�znZ��^��^��U�����ffeD��>����2������xu4�6:�����zc	�0�_YQ���(������_�����@�k
@K��Vj'
[B�W�w�"�l���U�H�����*m��FF���NB��'�V_�,O�J������q3�y�����[s|jC������w��Ar�����vd�|��#ci���
A����������~^����*V��a\��ti������bt47�PG4�&�����������0@W��~�j�@��RAT����iz-@�B�Q5���!!���Cr�fH.l6��z�|�����x����b��5�W����bb/�W���M��#���P�A~|�3��"�j�p(���>���3��]�X�  ����� *���n�q'm��A��$z���f�P��y���B��&�Y%���l��4�v�Jj��Q�&��F��p7�Vwps��d�w����F�Cwo|�����_�[���'��p���q�Y���?	}���5�L��^����Bg����|���y���xv<�<P��zc�U-f�Y_�B��Jcx4�<�0��/�C��f���!:��J�G�45�#���0�Tk�^�2v�q=.l|��k���S��M���hkM5@���a!�G}���5mb��y>m|/=�`.��j��#h]d�< ����S�j�$k�l�u��=�=������Bo��lOK���X&{t�0�������X���,g�_�\h�P���p��j��k4`���>����,OK���X�&��w/Plkd��KlkyQ�+\�!n�8Jp�L���6A7��=�w�L���xm0����9@�	e�V�J�Y�R�������i���55�I�P��10�I�1��w���d�
���n�����!T�?����a�E��a	`q;����!l ��L�-n���2�
$[�������!,C���$�U/�bb|�L�g���9��$Z�<����7C�
	��H7`(���D��B!�o������2�C�� ��Y6T����w�i��G�o�;���9ad{S0y�{���A�d��(���km9R=��qe;������h�����
J';c�BkE����q7�8�E��B�8��'6w$8�FA���wa|�;^z�jB����cOYF�V`%�h�q�evJ��v�
��c>�`���4 �k�!���������X����2��V��Qj/M���T���3�����o6^Y6�:��9'�:��'D���5���3���;Wd�0rD�SK]t���)�kS�U]���e�y=���l@d����l�1d��;�$|��L�U�[���8���4��m&��L�U�VL�q��m�����&rj�����`F����Nv���Y��O�00����J���<�F����c0�Q�]�4�f-hi�K�dAE�|*���G�m#$.�?�9�#[����������<�3=��7���V��
�=H��"*�#���_|�(~�����!��0���Q���
m.m�M����@�m+[������R�BCLKL�����0�/=��i��S��WH,;C1����N����Vy(2�7����5�-��K��p��i����t��a�u��}a��G����w503\:��m!M"R|B��Zl�P,ukHA�f���Y,��I�M��y��,�
���|Y�/�54�!c�����v��H��^�
�>���E���Y=��EDu�S=�E'G�S;</Bx6";��[�S5�{h�;���L�`�����ET=��Ng
)�#�����?��#������&�h����&�O%t��[A�K�W����F�!������r�����j���#��m_��/��?�i�j�I����^�_���������c�-���f�O���[x����<����C�����Y����#�fGN����N�N������CD�p�\��
#}qK���=J�u�R� ]��q����Q�6g@��
	�r|Z�|��c8��Q�����y�������]`��:g��!�Mg����)�H�JA;��M��`���O�	aZD%���P%�U�a��p$�TO4��lC���Kb�\��W|ji��P	jg?P]*�7s=EN�h��2J�Hf~����v����{�`��������$R"m�����
��nCS��p0�3Lb
���M�Uu:��K,���r(P6�P��{����0<��(�5��snQ�V��7D��G��W(OQ�f	-Q�R��7>m�%j
^���S���	�JT��[BKP(�]so8Q��<�Mkc��W��-Ih�A�@E��1GX(������%(TQ��!�9�Z�i@Qc���+a����e�K����\0'���3�4���F���j��dmqR�,��,���V{d���G\O�X\/D�6!Z�}d�����8]����*�[{f!7G	Sc�+����&H��T���m��Vvb�S��2KQ6��kk�|!�gx��B��1|Y��!�c��k��Xz���wL���"��S�;��L}�lq�p�z�1�_
���e0���!���
�{Q��;Bx�W����\��ow����[X��$
@�om���,��2}AGY�����^^�]�_HE^O���)m��
�=)����4������k;��B��h�~�`@���2���Cn�[��
��q����;y�D����*=��;pPu��M�+LO63H�D3�
�
+r�LWU��+��Hk
U1�=�-SN�;����Y��2� +���SU{f!�W�YDVkd�k\z�,�2���^�+�b�eH�f<_:f����^��U�n�vP��Y,(h���#E�����3�
C?j�c���
��I�+���*�[W�������v�>��9�#k�����v�wO���G��o)�YH����y�%��A@��M�`�4����f���\�S��:�X��3�Y��o���q	8W��6Th�q�����d!��<Q{&��&����~KL��:��I?�0��&d��f��r�J*G{P��b�`�O���0�"@�J.�{pbn�f��)/KX���#��vjq�M���e���L���vY�B���{��Z����
������9��I'j��k�����	������|��y�Sw��P���pW��:j�0n
?�=���p�,-u�<����+��F������y	�D�����8�i8�<���������]c�#���Y4J}ql��i�D���������~d�K_��qg�11�����T�M��_�4����	>��i�����P'U�A����c3�
�A��{��WS
�p4,�x�8����gB #�Y2O0��jj��6?���~��,��3��a�/c{S�-T�"z�%�y.��z��SUg���]	*!TB<w<���/����I��j�*����r��V�,��LI�4NW\����~�vC�5�W+����A��4;�:LgH4oT�`y�����p�����jTT�=��w=m"�\T*P����)�b���-��rQ�t���y�g�J�����O�$v��a'�
{0O�a{�	�2���?��o����2����������$�2T�kB�zY���,�Zb{���>��af��%*,�]0TOn"7�,��������U����\I|��8�������^��,����K.Jc��q2EjH��D@V���a�����w�����ae���~�5�g�L����Gg��"*��z��KG�<����W��+�A�s�%����~W�i�B�Ez�M�����Q5e��
j�����+�|�H\�"�z6��l�8�j�U-����:\dT�:��*J�3J����!�Z�X%.��I����m�W��
��0��p�*����?��$��#�++o�r���@kX�t�a9��:�����{�k����F��8?�4N�������<���� ��Ev��������l��AG5%:��&�gj��j�\�5��(��
{8�0���	����Y*��h6�:���tn��m�x�m���8����&�$Dw/����QC����{�1�9�+��<J���6(����G���*el~/GqS}F��� ��a9���=(��n��R��8P$T+[XT�^S������\>�
���LM���,��^���^���e.��
�D%>��|H)f�u�z
"��>1��pf_�~>q��w
b{�G@.���@/�l�xuH�#���(�}\^J9XxG��������Brv�\���l�P-�7�G)�dK�n@4���h�����+3M��)���?Gy�f:	e���]���G���(:	:k�)*�t�/,���{m���@����H% �`Q��{�T"�`Q6`W�\�+��DU`>n�K�������" vD���mr����Og@7P�$4�������IQ�P�Sj	�k8��^@��6��\dlT\�e�rS�#�8T�M�.pz��v<�I��eq������|�6��Q��F]�-g�P��t�O�����V75�_WdC%��%�����@"�0�)
��K���1�6J�F���no��({������.���-Y�OA0�g���� ���J)C%��~��X��0=>%���$)=�Ka$aD%��#��~�I�����������H������~<���T�f
Q��H�6�8��y14���Dy����"������4k	���,��c9?T�'~�������Fb��F�c��j�z�QzrCd�#�8L ��1�17�x?���F��`����m�)z��������@���
*Q�����D�_����)1��J�{�����,�Q# Z��A9��
|���9�dyB��F����E�4�fr[��hI�.����M~q�3��uG�Pa���MG�{�����*��#�n�6�������ft�Of"e��T�k�zZk"���p\5$A�m��"�lu�	H*�W�YB��F������n��?�QegY�g������"�M
���\m�C�O0���Y��Z�N?Fi�l��!4�g���
*����g@�w�9�����24Tj�KhH<�u�$���e
�-*��o�aQ��q����Y����{��6����H��m�!R!��'�9T.<��`j9s�Cg�;��]h���=)��x���R�_��}��uW������r����<�l;���,�>��l�k���n�P	��~�X��E`+�P	��l���������!_4���;�f�k�I�N_*�)*�����q����%Yl�U�mR�r<�rO��o�j�,%D��a�_�����C�qdGq�$r�� ���.��A�N����4�6����2��$�������g��C���'���� vI���#`g�� �^9��5{c#�OWrP(TF����n��,!�<)E����
��"�%�g!�{S��aRD����<���\
�@���`1��'DKR����:� '�h&�<G�um-a���'����cDge/�F�n�������ekY���PgQ�T|�=���8JpTn��8��?��hB%8*7Q�� qO4!���(�r�P�p�F%����Zn J���8J�c8�2;$3���3�s����	�H��)��[��CD�������]���:#��v\�9n��Ye��kS��VTJs��s��1������I[lwoO����>�F}�[�?0�#������#��-�
I�HE��Jv���v!���n#y���[��v�h���1w��d?�O�R��xM�8$A+ �?�#�C+�.����~�������w*{J�)������0�%F��Qu�`2��m��j%U����W��
���,$p:6�����s�~LI+�E$���_��J��[���(1�;���}��M��	8VN�"aN
��Y����n ��Dm�rk@)��>��9�����L�]�������
�dj$u{|�Ja�����Bi2�x5� �;��6�)v�]/��%*_���d�k�]k��"�6�h���"
�0�|�7��������j,�5���r��L�����L��L?�$p��@,D�"ZdB%�y��<Zmw�j��O��St�m��a���+�e,TB��B���:�W��9�E�U ��r[`B%���Y��u"�C���7�C��>�3A�L!��uA���%�f�P�g�F�������K�d�}����4����m4��^�i��	��%����}U9�:&���j1������gu��������b%wUAlh.u�$[�7�6��z,�z����K��Bn�A��6L(����`��/��Z�1�6�6t:���Km@�Qo��r��C��p=w�0������"��;l	.����X�����#��+ p��h�IhejC����*���6�#n��&�]c��M��<����h{��|L�|�W��-��b.KAk��-��N����=��4�Mox� g��J�����vS���%�es��_�I�(&�86"#uy���������R�����U�r�9��`Nx��d����B*7��g�m����X������B6Oo����*������u
<y-�����aB!����	K��$����������tB^�|6�'�Nc:3D���#��������7u���#���Ek ��l~��R�[���P�-���"�e=�l����������J���Z��$l����UR��Rj�^��"�eY��P�z�Ic����gs�>������7�G`@���F��t}��.<�"�S)*a�`d�Tm�-��y"�t������.,�H��0��a��02��;��5y��M���Y�F]=��DD%�P�l��7G2Q^��2C�J(�l������E�D �<�y2T�����
���b�,*A����:�!�%���B%��5ng"s��D��!C%���v��Y,�F��1��J��3���#���(�n�;�0���k�����oO�b���4�n��Kg�����'~�d[+X��sG<Q
��D��",��2�0T
V�J#K�����<�X���J �k�+��q�a,K�-
A����>�"���{���
��LR�l08�NI��*�J�#T�����������c�P��xY�����~�2�.!�,���y(]:\��l`��	|�|�5�x�� �E�
'���QH�E��0��)�&<�E�6����B���wp�������2�9�M,�PV����&��b|���U��=�9HB;j�3���m#�����X![ D%����
�1���Rv3����-!�p�����v�4lY(MV���#u�x�M��:0{��A`Z����f�e7:��e�tS�#�8��N��IneS���7�X��l
�����2C�v��X(L8��">��{FH\B�s��L�6M;���'=����^}v���t�_Mzl�8:y`N��c���� 2l�p����������3�]�
��Mk'�-iM�A���5z���=��R6������^���Srl�����Zq��R���3;"�1f��Sb�������`,eC�8����oS)<s�s����A��B�����x;n�����7h����Zf�����nm�GU��3����&!C%��z{���'e��#��E�3l�
��v�p���_�b���*<���n�L����:TB<�q������ZJr"�g�����/�8�PHq��/��N������\<Ga�b}n�G���X�t�\��hof�sw��x���M�g���,�J:��Kl����������AVO��N�U�f_\��q��!�	c5�i-��Y�
���kl8�p�#����JZ��xw����������pA�jk=h^���=dUS�Z��s�����b�I5D�Q����L�k�:�x!����j^���-��6+q��n�!���X��Q�u������j,b+y}�"6o�����\.!���Xp������dU_�*g�����5lq��V��%s������zS�_�����B,Q�,x>O���
,�*�,��H�����h�����+ �������TF�TQ��6	*�F��u�:���SR�E��2N�x(f3�Tp��q�I9���=���oA��P�nF����m5�r�<��x.����;�
�7��^���4�)>*�"�gG|��
�~�����g`4��eGVz}���"�$���ywl�=���9�OW��s�����i
���=!_B679�!>d���H�����YU�_O];I���kw���?^e���`h�����B�'�X�������XMK4;B���������A8fw���S��)H1RQ��C!�f[5��
A���\���j��2����j�aLT�m�A����/W�`N��#���\��Mo�AFn���wwB^�/8'D�
����a!����t���d��`�	"�r���b��@�y'��LXwbPd2`G�A�5+Ayy.��R8�^���b���b)�
i������e�
����B�V,���H�@��e����=���\)��u�+%��`o�#I"g�f���PZK�� ��z��RM�qn�D� ��"%zog�zD�<��
uS�E��>�H{p�sF��6�
�)��}����8��x���~���$��0��g�(��`��(������u
�q��,W���������to�q��8����9#%z�_��D�|��	v��E��n������"���}�y��k3��kC<B@�	i����<��8���9�M�P�_�|8�D�^��S���}\��#�J��X��}����z����6	X��Y��`LT����h�3B��������3�4 vD�X/Cz�[:�L7m�8�JO�2'Y�$D}���z\D}�����w�Fg`l���_;�Vg���[]�l����i�����;���/k��[�jEfE�b�F����"����[�zn��[V�8ukB�Q^��H�I����b�8�K�!�%*Mgw�3J�j<T�[L���T%���1���*���A����&m��D��7��t��{^�;��}�}�������o��D����9b������c X���EdeXZ3;�f{9tt�XkZ��b�Rzl�_X���E^
"�-�{@�k����R7�T������C�����a����sp,�D�W�W\���h�*�U'���S�1��7�%���y���u�������\Bq�h���N�=��i�k��Z���c0�YTd��$��d���"V+���J���rWk����������������v��d+�:���3�R��W�AE�W�t�=�3|
=�QeG�{Y�	�b�G@�2�.��\�T�Pe���=G�0�[�����G�?IiT����|X'�r"����c��	fd��5s��(z�%.m;���������3�0��n30���Io%�X"��j�G��0�\_,����p=y���l��N����,����?�y]��h����a�;��T��bL����f ��VVr++���\P�BTV������JP����s��U���Y]�o�p���U�E��TZT�aX%�����D1�R�m[���:��5'��#�.���UZ����Q����g�f����_�+U�l��\]8�b��<<�-���������F���N�F�gZ�b�[���d��u���y`���%x�d{�;�So�b���
pq]d�I�!�E�����=?��������R�{�1!o�@�qt��5s��6*]z*]9]k������=5�J���:�����3k����U���J�*��,�����s�w{I'c���H@fWJc@v����B{m�AW-������=���<e[�iv�lv|�A��3BU���g����l��#;��y��h�_Yy��K�1��Q�a���(���wG��3�}�I,��7����%��6�����B��{s�+N�7 ��S6��mwSf�������thJ1l�=~]��Q�o(�f�j��^��=���|�li����������{/\].���������U"���8����B���+�OBSZ%2x[������'�A"�!k�]��F(���o*��x7'*i�//�(��Ng-#1Y�)�����q~�pa�x	�l����y����:7��]n�(�&��-h�8i�!r�m�z������,�['8�(�#x/H0��b���H��l�qFQ�+�Q9nZ��������E��x$[�;�R�R��o��v ��E%���;��:��I��gi�)X��OEQ4����rbT��_�[1�������1`Cf�DWp���{���F�7�k\����^
���l������P���|\���Dl{h�Sy��B?
��o,{u�bWF��<=��=<��L��+W�vJ�:���l\���=�8~f��0�:{"gE�U$E%����y �s1�Z[�&J��B�y�+szvR����R���'!}+��.C���Q��8�N7�W1�"w�]"��1=��,��*���9����uRQ� �!�A^T��_��i���-Y������f�	*�'�h����%0�!v�_������������$���Wp�`a0��� 3�3�x'Ad�r���#�E�a�!�jD�,��9>����DmR�j-�2���#��d�$[��J��*��|;D��|��[��J�*�^{�����!����%���{��o
y@������QI�H%��	G��RQ$|��p��W�6���n�'E!��������h���j�z7�EVTr�Q�u�N�����6�3����N-���s��y�D���9���*2���{C�
��������N�E�Nu�]q�J�w.B�KPQ��������
�r��}�n�y���s�Z��`��L5KTK:*��oR�}hC}i�dr G3�c9�v���")���`�`�������p7	�Ls������;�p�Ipy��%(��7k#�9���h?�8w�7:�=�����9f�R�\z�8 FHB��3�W��E��9���,%��2��r}��v�K��0���W}I���=
��HQ�)�K����Y��w����������1��%�}4��{����>���f���EKZ/i���;!J�Z�����;F|����B����`OrS��K�>�R��n�5�]�#��E)����)�`"�:�C|`��D���g�=}��Z����^
��ar~����n�:�G������E>������Gu�i�����"$jI�o��gw�7��53|��;��L�/S��Ey]��K#��j3��v�od��y�����*��m��7s��Y�v���yH��K=*�'�^��s���I��W�>�7��w�.�{p�Q�0���6��]����1�1�9L�Ws�2�-�5�_������B|e��k9�����/�% +?"Uy[��B�]M��C��p�$�C��*�N�����ka��'.m=�����K�yV��%�m�wh�=���=��^���
S�����Zq��"��HQ�,9����l^h�/	���|�
�?�
��-��~7��������K���4H:h��2^��
@T�N�9!�5���)q�~�8p�G���fy��m3���9/��1_3������Y��,q*�~r��S��\���a������(m��O�\X� U
��g�p���O�Z�p�7l�xP�9��,�fW_�!��Jw�Y)U����(�vs��>P�xEZwe�F���(���l��$Ou�P�9yA(��k�)/��M���k���c��aDV(�w�bJ��9��-���b��{b2_��l��E�c��/��-�o��nmkZ��\*���o�P��J�)�[��bVu���L��}����W�����M�-�St��f2��(�3(���wU���-��������v�9}_-���:a��u@����9�{m/�uO�'��V�Z���xBB���;b��9�N-
=	�y���d�{��ej��dObi	�����E����w��K��(v?��[%@�fN*?��EPx�%<���
�l����+��|]�x3��K������/���TBX$�3����J�&��k��G�<�j�T��K���Gu'v�J�t�Do�����
��}�[������]g�����b�N��X��~�B�7����!��c�d���8[����+H+��oub�%�"Z��<B��w���#"��t{�%�� �?��Ls�y����v�Y�G�g�m%i��������ta�Juv�}~�sLh�KI��V�G���t:�����xF��Bc�+����f3x#�.R@��L(��%K�t��)���Br@�f{��~�fv2�v���#qo�i����.�H�]�>��s,q�T$ ���}�p�8�p%i'!
$��3#��_�t��n����O�\��&����G�_3��N������D��F�@��1�u=�N���w�(+L�L36F�.�H�)��n9����A��0��^���2U8�ed��YV��.�������7��V,�F�g�����^�����/7��=s�2�!}#!�M�;��������H����$�0����)����W���k6X5-
z�����w)|�-\���B��`�<$|����R�G��;��.�]�nc8!�'k�1���|�}�?��������gA���Yv�!X�L�
[�j���.)����<��G�3#��fcJh|��%��1PV$�m��swc?`�N;���^���������[���;>���"�9����^�BJ���w�M��v�	U��	q���yO�i�Y,�|�������G�����YQ�83�{��_�����F�dZ$�J��a���-����e���������?����='�#�)���E;����/H%^�����	W�$��#S����k$�����q�b_�}vv�����UY'�~�MO�������Q�l�K�����hz�?'��1��'z���f��-��.�r��{J����?���o�}Hv�	�,��������%�g$����t��WW�����~�xS7����%���'��/g����U^x��kP�����^���m���/���d<�����2�����Y�~��?���
��'���j��:]�OJ<0����b&xLn�\����XO��zl;�Oe���������:V���L�\�{Q��������l�Rr4�D�
����������m��W�Q�j�g�����n����Da��t�PsF��3�����Z
2��Gf��P�(�d'R�J�M4���@�$���0?��*U|�30Q���tK����t[&��Y-���j�����g�>r�p���oeU�R*�R�30�D�B>����o�|��������|�x������h����ivF�(k����v��]JT\�� �1�v���z������j4k�����V��#L��v���V����3�w�{���I�a�\�"�a�(:��P
y���6��|����Z���`y~F�����F���
�������5�Z��7�M;#{�;�ln��f��������7���H�S-s;��!����f��;���U�z���u_���z}��(��P��F��7V|=�{)����Q�LG53��tTS�Q���S�`�C��1���wxi�ZC�p8 �^w��ns����QV5y��D�`'8�^�����`��=av���X���k�a���� �C��++$���F�J�*	;z2�	%Z�09�\`��x��(4��o[���8��������D�3u������'�}aI
R�~��6��Cr�����Qh�A8~���w�m	�e��D)�f�2��8�LR��r[��.�H�eyqr`�������f+��+��a{��M�x�e�X
��C�=5�g�{jz�L+����qB������r~#�Rq��";��w�����=�rO����p��� I=��iI���3��K� ���k����(���Dq���I����]5�m�A�^�z�I2-�SO������2������)����g��vW��aGOj����qg`���:wz�L��u�F�����0��Wu������
�8	D��o_�/��(���0]Y�3���3v���/��fy��-�P�$uJ2����b%!]���	+;�������[o������L|?bK����d!�����1���8o5*��~����1�oH�t����|1��7�������������6�������e��t���#~�<�%V�H��2�;[{Z���h�8F;X@�$`&s�����X��3�:bM�m�nB���1�X[ .Ye���~L�]������h��,K�8��������?-��������b�����x3W�~r������c�9�C�e��&W���^$�t�}��u~h��u*Q6/��y��������f�*��)[����Ji!y[T:��������������l�N{%��
�"�-Z����������#bC�U	�y
��1�7�q��1{x�cv��@$���Pv�(?\.��2���r��HrH�ev����(�daeE'������YD�=:@*;��
N�a��0��2����)b:�^���?a:s	����P�a��$d�������~w����8���a�af����0�f�
ffn�,����������I��8������{(#����AxT���>\��>^�����z����� ��"G1{��0H1�G(S���x��(���E���&�1�q� �F���a���<�g������E�M�`SF�	l�#8|R�0��yu�������y�mml%�b��e����C����y�u��dH'�@��(�B-�%h��F'w8�%F��D�iL�M��n����b�w����C���uOFtf���>��n�|���U��,��O�:�'Bfq�Jk�����l���I	�mR��� �0��2��7��k)�|������J�����=�v!1W4��1.���@�9f���E[�;��(�E�E����[z�wl���Y�+���e�E.z-�q���%iL������x�Q��0��B�m��oy�(Z��R�����!������	^b��R����;8D��c��SZh�@v#	��n����e�V��Vf7�p�p�����,x��@<$x>�x>�h��	���*��b�2�o6G(}���_c�2�2�O����e�����)����p�(�;��L��m������w \ZO��X��0�nJa�M�%�Y�ov5�zJ���R�8�f��S��~��������D&C;��������s�N�������>}������x��i��l�v�}!�im�'L���JuO����.q^R��������HoI$h���K]��,��~}?;�]aGO��12�1�#X���
~�>��3~]?:`������~�m�������)l��k������MH�,�����,��L���e-����8)/��/zi�)���_�����JC+���Q��.�^i^O�"��
�+��F<A<��:o�[�DW��yD�(�Eu��`�����OC68�0<���<��r��y����������V0�A��Al#��b����-���5��K�t��J-Qzj�O����x�@���A�s5�s�=�7�y���]6��o?��}���F�3xr_����!�~��m����:,:8�{Z�������r)���7����^��}|�������7�_���\I|���s���<Q��	��*2�s�`�sU{�0�������O��K>5&Jw����L�yE�L���n7p���4-?�|~�_7�l}�������bw(������Q���}����!��:������+\�{K5��g�ln>6���d�����vA�O*��QI���(���6��>W�=7@3;"|U�J
�O�#7����
 �c=~��;�����c~l�_��3����~A�a������v���oZ��wP�3^��;9��i��a *�lV�����������?V�A����|�F�.��d�f��Nk� �.�w������A�$�)��=A��!��qa^��#� ���}}��
�kG���/_����9������a[Z�f��^v�����8:U��!~��79���A+B;�d�����8�e2L��8�;�${���Lb��O}�f�Q��C�8���M�$�{��m�.�+�=l��.L�����%�q���nm�|��}i2��J��^p0�fi_��3��YR���:.;����q�q����5!��c���uc`���^�������k��_��)w��x��R|2|��}'d�����:�A��W�:a��ij���5
���
�U]A�]A]A�NLh#d(Au���W4�C����4M�7]��}^�
�p$`Q$�������?��-�h�'���i��fdv�3:,e5O;9�o�����zz��2�6K9t\���BC�>�/��'Oi3�VgD����� ������;�o�Yi��J|s���cM�M��l��Bg���x��x'On�s�x'e�V=���
�n�C	�K��I�J����g
��):���Av���\���y`���L5-)c�%e55z���������Mc��G	<�����B~p;9�%�H���I	gR���`��<�n����]�y�S��%�)a���3'��Q��55.�H�����Cf��D;�����x	N� !��L������yXN��FfMH��W��K=+�#��i�������O��l6{9��Qf���"j
�%{��A�~����8
Sa b�u4�����n�e�9�F|�n�wWA�~u��u)T����C�O��5
{6Hl�[�SVv�F�W�<yz��=-PO��0F$�}S�w��c���TeX�������(=�2����f��L_��3��~����[��3�g����%����o����<�Cj���L�o����i�T@����P��x�����f~\��#4-�/��XHt���DI��G�P����1������1F�J��B���(�c�D�s�@;m�]���f�p������d��R�����]|�����y��O�!��-�&�����b�'����8�b����"�c�P[_���o��O���z����O��t+R�!�	�O7����F �/���j�y��0])�"��R:8���4Q�A���"�.z{���
���3,o6Oi)=�R��r��B8(����%���R��k+K;��N�41D;��B:OC4���!���41D+��B�9����'�%� �Q{�����.r��I�(^rz�f�xsK�1mr��������%Usy�������U��d�(�_MA5���~���r����)�@hu$Q���c��h��rzZ B�B��/� j3�AK������IO��a��'�Le������Uj��0�Td����l�&�~s|�qmQD5R_�5���e�ii�OK,BK8��a��e�ii�O�Eh�FI�mmiDWr}i���gJ�x{��b�Ii�] w���wooo~*���NIS��Z�u�H;3u�������\�W���8��,J@��
_�����R'����Lz����Oj�AVr�Z5�q�~�������P|������&��"�-�av�(���
EMA��j�-5OqpA��C
9��`z��������T�cO�(p����f�C����HU���W�.�Lg���R�����1qm����*��Ao��;�7�jD�2������i��Q�d0O�.
@�E��(hbWO��%o��r���� ��m%[�=����5{���]�l����J���:AR����II3{��bO���0���-e�d9��,�����+r�����9���"���!���%��8&E��P�y�v��3�J�}�����ga�[d���Y~d���	�W0��@*p������g4�����|�B��W�?�^����M?� �<�����^V46oCF�(�b/�%��BY���� S��t�����z5��$�<������7��������������$B>�O��:��� ���y��*}���*5Z�������|�J��~�S���TqGr7��R����j.�P����jM����o]�i���Ju�8�u��Bh#��`��$��,������D%dQ����g/^MH�/�?�����r|�������8i����=���O�N���]`S
�O����J{A��s���f�'�s,��Z�it>y�5(���l�f������S����(ZF�����/%Fe��r������Ybfu���8���-igX�0�%����&�U�@��b��C�~�s>�i�9��������>��g�C���/��A�,�|{[����J��'2RO����s�=!=�@�:E���C�����'-��=�a������o��umkL��Q�lx�����j!{��9i���t���O��M���HYZW'A��=�?(�����OJd~����H���@�?G�-Q���SH_m�%��������;���i���CqtX����� ����������;��|�����`�Sge�������)6��I����d���z37Z��L��P�I��n�'-j�tWG��.��d����n����O�?��Mqr�Gy�|c���� �2��+�NOOO���I�f�D<K ���a�hG �=��f���X01&�K�K�F�	�L��L���(i)���������>��y�������,�0"�u�O�,��-_'��E�����1��}���}�%���+(���g+�g�qk�t`s���@��0��I`�$����y=�fO��Jd�2aV����<�z�o!��D�N!�E�9=�����jVZE6+���J�p�}��W��?��{��a���<�;%�:}|�d^$����"X0�aD����*%�=��(x����������F�� � ���&���wU���+
�<���A=��0��DF.+��e%H����$���O7�?^���w�&�p��9�)�g�i����T���#�2��������81H��Ds���y�!L_��	�0�`��+�c��6��"��y�!J_1���4i�sTE|x�'}i�f����U�R ��%i
cbsC��Q2�+1
iK��iE$s&�cg���}�3�g
Y����3;�#p��]���s��q��������%���:�����e�/s�B���b���L�%
OmHd�s�����R������|��}Qz~��h�������rT�����<�X�/�$V���OJ@��2��D�x}B!?��/���i�T�&���'����1B����y&>������/�5w]�Ds�~��8w)�#����� k�rn����-\I��+)��r%E#�OY���
�2|#������p�y�I��1b~�����_TP��������A�?=�����o?���7��^D���P0�����gBo9|�x|Pb����e���%�=�<���e^}x���o����S��;�8������}!.������<�d�/��2���m���������}���uYXK��9S�Z;R�S�����rl��;�	���(���I��#������C��Mn��1�'y��K3�@�'f'���������9�<��u���@���'I��(f����8�1���l�Er�^\Z!���~	}o��s�������X����0T
VV��_�����:*��a,
@�E��(�P��(�Q��^�"t�;P�B1�W�Mu��Zz�:\�����d����KJs�+����0]S�����G�*4��uY�f��A{V���	�c�%L/Z�^<�L)
l����,���c(������O��������s��� ����x�f��?�^Q�����!�E�x���U#^p0���'�,�H�,R'��<���h���I�@t���$9���Pr�	Uh��%8q?��4�`�������Z�<Q3{]U����$K���/H�^�+G/8�?����'%J�����T&J��h��3��@xj��g���z"�$K;%"Q�j��	��e�����In�6�^��|R���C"�%7q
_[M�t���E�
��IN����Oj�7!;��p<��4��!��q���B���H,����t�.���Y���o����������|M���mI�k�F�Fd��]�vIO�U<�F�	1����
����n����1����c��y�q�jv);X�+��~]������:s#��,-7�����$=�����4���K�XL��w������`L�(p�����mL�`F���=��5����C����Bg�������bc�@�O�������e<���G?����p������K��H��[��;���qH�;b���eY���'�������7�����5�Y��Yi�����~�9r*��G?Q"�}���}��=�������hVF
��&]�C-Y!k^}�������d�8�SSKNK��cJ����!R�"����5-��0�@b������fCm��eYxz���$�Cy���)v���m����^�@�����xZ
��i��0��2��������
�T�������%��8�Qf�T�|���H#Uy��^*����{��"��e�$��_o�H$w���g�c�@T�+ ��Z��e6�]������/��_���q������	i�@��� ���
�=|�������w �iT�c�����n>�������B9M_�����\^�{��}��>J��/>^���7 ����5>j��R��xr����v�^�������n����DD��>G�O/1����aH%���,�u���c���4_^0���K��#�����m`��$�����I/^=S���$+B��eh�������g��y��y|�l1by`&B����_������M���W����;����:H�a�v;�8~����(|��f\�	��~�%U/������4%2}x��Y�#�!/�-�9���i��������7�����}�q���3M<�Y����o$�l'�?7V�^e� ���7�;v��yque�0__�^��_O�w��v����9$|{���������}}W�������M�����n=����;�������kt��9���f�c��=�����G��������/��z�����/���a���q�{��`�m����lJf��l�'��9�Lffg�7~���3Y���n���&��/�e~0���#���������L=���+�q_N����xm�M0���E?��o�G�������^��N��c{�n��O~!����?^����q70:��;��?'�Q��R���u���/�zQ��b:������B���8������S���DK�^�k�,�0��s{���?��4���K������ ����r��G>��v-����E���\Z#�>��Y{�����o���q��c�}�D���_�{i|v�)yaSQ����B���m�����?��$|��:�\��7�#*�?��[c���q���)�i�eO/������/�|�������/�-_��=$���"���������������n�_�tc$����;����5��* ���W��z����������f��+�tz������i�Qve^�==��j@+K�N�0�^��U���S�CV��U�|����U48!�QT6��sD�x�`z}N�1]�����.e6$+�o��]���
�,q���/f�|n\]-����+�T���;1�d>x�rh����$B{��1�*���~�����O�U�;l
�?�=�����7�n>[��X�?���7$���b�����)�<��.?^,yg���������$��U,���J`$]�E/1�czE��<Bf�
�N�yp���*�����h���]�����:1Ui��}4�N������ Kb�K�dG��O�(�5�����f������6��i+�]�Js����u^�0���o	�J�Iz
�16�T��G�
����������>��Bl��J:���K�
�4�W���;�����jy��"������-�vD�����j�@M_��@\79��x���L��Dz+�`�6�	��d<�;/_���kS�H����	�m,�cj�B�$��l���p�r�F���+�p�����_3��-�o{���LOwOwO?f��������v��1��vC��>�����7��7�?__]_�]���\�_~�:��@��u^���=�>���}�����Wgo��O��L���w��/\.]Q��9x��+\����Tx+k�u��������
��T���z��*Z@��9�?v���(��Dj\b����������fzV��S�9�
�������1��4B���K�61�_��
��Zi�����]��0�����!%S��~R�_�|��p���l�V��M"��xi�� X�(2�,�@h|�H�i,�]3z)L�S�k�-aIG�,>��)�h\1?/e!�K��d�,�KC����d��d��K������l�B�#�1B�s���_'h_%������� �����^T������*��2��I��0��y�!�����]k�K$�A���%�?M�����0����Ep�qh��{QZf>#����c��ED:���
6�p��r���B���kl��e�+��K�D�,]
i�n��ot�ojH�������l�"�*�H3�O��F����#���R%�.#���-�K����)���b�<G��<�V��
L�=m��[/�����������AP����z��p%C�D����6'�����aX����D#�" ������n�
X���(��\��@���u8$�T�����`�W��v���A��_g/N	��ZF2��pMx������w��P��������c48l~������T��:�9X�R��*��$�T���H��Ny����S�v��@�-���y��m���U!�L@����S��%|�����[��\V���`�[��N��"���Z#��a+��Vw�b���*8���jG�pd�%
�?���0��Ty�%�T�C��m7��!�T��rN:��_�����RO��U��:����Fv��=-������J���N����[����T��Z�M.��R�#>�nL����:\�4R��y�EW�����j�~�"!��KQ���x�W��q���-�j����}�=�/��������aO�����r&w���2u������02j��J_U��cL���c���	2�,���r���hN�iH��?���I�xJN�z��`3�`���$A���9e��rWQ^�0�Y�����	v	C��W�a�;�aI}�a�=�a������+�I������+eFA�%i�e�&x��h���.��q������Y���d��������b�5��W��I��������L����,�0��26�����i�&�z�� }����������O7�����E����z�o��X��h��O�y��]���;�4t�;/� b��`c0��:����ArR:����y���w�~r�J����n�����zJc��
���s$c�UW�,pC��M3w�q�p����c�/���f�
�i��m3�X�+m�9��f�X��R�+�
o%�7�/IC�L�;�uX�P�6%D�)e1T�M�s���N���1^�0j�S%=�K61�C��,p�GZ!6*��N4c&�[ex,{B@��`<��U�I`���z ~�K�l2���fE�[���E�C��YS��R�����_
L��������/����4�����bN���������Eng<����N����I�@#�����<t�����q��f?'�#��(�#&���y ��RQ�^�h�����I
��a����	���'=����JK�}��w)�Gt�y���"�R[�0�&�G{�oo^?��WQ�c=xD�H_��*)V#~8�@M��{L�Du{�������40T�����v�vT�{F:���*N;'�^?v[^�&�.A|N�������l��wTc_]a���\������	���'Cs��#�����z)�����7������*n����NM���P�RA�'��DcILF��x�FR�FD��x.�B/
��nx'���pu��Vu�����i�y�3F|��v����6�8�T4�w�D7m�{@"��7Z��� ��P&
��pan1����v�g+���%u�=w�������I���[R�!��b�����:T5���$s���6�.'�s�MSf�z~D��l@G%,�?D!p��A�"���P�	�C
Pn��C�'5P�)�C���\��-p�d��a]J#3��(��&�d�#~|��#���x6o3&�o!��*��u[�_�
9�-A�2��E+1�4U��_���A>[�b>����d�'Q�K�&�T�������T��r[�P�lg7����F��i�S�gG4�&������4�(��yk!6���@�+ j��q_tG|[�S�Me3\���W�L1�$>l�!�i�k6��z���:��MA�$8��'�B>����5E`���G!�"^j���96/�������A���B���j3���wk�O��{���H��j�4,~H,�p�_'b���M��^ou�m��[�@�F�J���~�i&���4;d�Z��AN=�NK$5��tD�E�D[W��j"o�cn<|���h)�)�R��DRY��u�<�z�����'R@�px�p�9"
�������o ���o�
|���By���O�fn�^��O�j���'� gv=���'=�=<*df1����Q���������	$�[�8ao�a�$+t�X�5�������	JU8�N i4X1�7����G�~K��������+�����	��c,�n�c,�V�(����c�G[8�K�#��Z�0<�4�V	R�+O��g"X����ZK��4E����X�����Y�F����(i[vVHg��"}��I`����7��D�����0*��ltj�V@����
S���[o88��C(����^�`�����V�A���B�j).�9r�QB�V�B�
�{�`���'e0��L2�6z+�$i���d��P��4Ni�H��FLJ!��5�*(�*���`:]�iU��b�f�4[/��e�X��@$����"F�9����J�\��cS�����Y6����X�e=��R5������o
�z���Q����e��0p��Q|<��������T����8q���9�!��
����#c�"Z��-�
U������Y�w;G^�]H�F�i �\���fVMpPo��o�����u����c8�%?=��@���=��0"Z��)c��[���'V�j*����<�*���(*��~m
�#�.�&9�B����I��<��D�;$�����k&����cr1��������}��?��^��
��
#27Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#26)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 1/12/18, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

Pushed 0001 with some changes of my own. I'm afraid I created a few
conflicts for the later patches in your series; please rebase.

Attached, rebased over 255f14183ac.

I decided that I wasn't going to get answers about the things I cared
about without looking through the patchset, so I've now done so,
in a once-over-lightly fashion. Here's a quick summary of what it
does, for those who may be equally confused, and then some comments
(not really a review).

The patch removes DATA and (SH)DESCR lines from all the catalog/pg_*.h
files, as well as the #defines for OID-value macros, and puts that
information into pg_*.dat files corresponding to the .h files, in a form
that is easily readable and writable by Perl scripts. Comments associated
with this info are also transferred to the .dat files, and the scripts
that can rewrite the .dat files are able to preserve the comments.

genbki.pl is able to generate postgres.bki and other initdb input files
directly from the .dat files. It also creates a single header file
src/include/catalog/oid_symbols.h that contains all of the OID-value
macros that were formerly in the pg_*.h files.

The patch gets rid of the need to write hard-wired OIDs when referencing
operators, opfamilies, etc in the .dat files; now you can write their
names instead. genbki.pl will look up the names and substitute numeric
OIDs in the emitted postgres.bki file. There are also provisions to
shorten the .dat files through the use of abbreviated field names,
default values for fields, and some other less-general techniques.

--

OK, now some comments:

I'm not sure about the decision to move all the OID macros into
one file; that seems like namespace pollution. It's especially
odd that you did that but did not consolidate fmgroids.h with
the macros for symbols from other catalogs. Now it's true that
we need all those symbols to be distinct, since it needs to be
possible for .c files to include any combination of pg_*.h headers,
but I don't think it's an especially good idea that you have to
include all of them or none. Even if we're willing to put up with
that namespace pollution for backend code, there are clients that
currently include pg_*.h headers to get some of those macros, and
they're likely to be less happy about it.

The design I'd kind of imagined was one generated file of #define's
per pg_*.h file, not just one giant one.

It would be really nice, also, if the attribute number macros
(Natts_pg_proc, Anum_pg_proc_proname, etc) could be autogenerated.
Manually renumbering those is one of the bigger pains in the rear
when adding catalog columns. It was less of a pain than adjusting
the DATA lines of course, so I never figured it was worth doing
something about in isolation --- but with this infrastructure in
place, that's manual work we shouldn't have to do anymore.

Another thing that I'd sort of hoped might happen from this patchset
is to cure the problem of keeping some catalog headers safe for
client-side inclusion, because some clients want the OID value macros
and/or macros for column values (eg PROVOLATILE_IMMUTABLE), so they
currently have to #include those headers or else hard-code the values.
We've worked around that to date with ad-hoc solutions like splitting
function declarations out to pg_*_fn.h files, but I never liked that
much. With the OID value macros being moved out to separate generated
file(s), there's now a possibility that we could fix this once and for all
by making client-side code include those file(s) not pg_type.h et al
themselves. But we'd need a way to put the column-value macros into
those files too; maybe that's too messy to make it practical.

The .dat files need to have header comments that follow project
conventions, in particular they need to contain copyright statements.
Likewise for generated files.

I've got zero faith that the .h files will hold still long enough
for these patches to be reviewed and applied. The ones that touch
significant amounts of data need to be explained as "run this script
on the current data", rather than presented as static diffs.

I'm not really thrilled by the single-purpose "magic" behaviors added
in 0007, such as computing prosrc from proname. I think those will
add more confusion than they're worth.

In 0010, you relabel the types of some OID columns so that genbki.pl
will know which lookup to apply to them. That's not such a problem for
the relabelings that are just macros and genbki.pl converts back to
type OID in the .bki file. But you also did things like s/Oid/regtype/,
and that IS a problem because it will affect what client code sees in
those catalog columns. We've discussed changing those columns to
regfoo types in the past, and decided not to, because of the likelihood
of breaking client queries. I do not think this patch gets to change
that policy. So the way to identify the lookup rule needs to be
independent of whether the column is declared as Oid or an Oid alias type.
Perhaps an explicit marker telling what transformation to make, like

Oid rngsubtype BKI_LOOKUP(pg_type);

would work for that.

I'm not really on board at all with 0012, which AFAICS moves the indexing
and toast-table information out of indexing.h and toasting.h for no good
reason whatever. We'll have quite enough code thrash and pending-patch
breakage from this patch set; we don't need to take on rearrangements that
aren't buying anything.

regards, tom lane

#28Greg Stark
stark@mit.edu
In reply to: Tom Lane (#27)
Re: WIP: a way forward on bootstrap data

I'm 1000% on board with replacing oid constants with symbolic names
that get substituted programmatically.

However I wonder why we're bothering inventing a new syntax that
doesn't actually do much more than present static tabular data. If
things like magic proname->prosrc behaviour are not valuable then
we're not getting much out of this perl-friendly syntax that a simpler
more standard format wouldn't get us.

So just as a straw man proposal.... What if we just replaced the data
file with a csv file that could be maintained in a spreadsheet. It
could easily be parsed by perl and we could even have perl scripts
that load the records into memory and modify them. You could even
imagine writing a postgres script that loaded the csv file into a
temporary table, did complex SQL updates or other DML, then wrote it
back out to a csv file.

#29Tom Lane
tgl@sss.pgh.pa.us
In reply to: Greg Stark (#28)
Re: WIP: a way forward on bootstrap data

Greg Stark <stark@mit.edu> writes:

I'm 1000% on board with replacing oid constants with symbolic names
that get substituted programmatically.

Yeah, that's almost an independent feature --- we could do that without
any of this other stuff, if we wanted.

However I wonder why we're bothering inventing a new syntax that
doesn't actually do much more than present static tabular data. If
things like magic proname->prosrc behaviour are not valuable then
we're not getting much out of this perl-friendly syntax that a simpler
more standard format wouldn't get us.

TBH, the thing that was really drawing my ire about that was that John was
inventing random special rules and documenting them *noplace* except for
the guts of some perl code. If I have to read perl code to find out what
the catalog data means, I'm going to be bitching loudly. That could be
done better --- one obvious idea is to add a comment to the relevant .h
file, next to the field whose value will be implicitly calculated.

So just as a straw man proposal.... What if we just replaced the data
file with a csv file that could be maintained in a spreadsheet.

Bleah --- that's no better than what we have today, just different.
And "maintained in a spreadsheet" doesn't sound attractive to me;
you'd almost certainly lose comments, for instance.

regards, tom lane

#30Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#27)
Re: WIP: a way forward on bootstrap data

I wrote:

Another thing that I'd sort of hoped might happen from this patchset
is to cure the problem of keeping some catalog headers safe for
client-side inclusion, because some clients want the OID value macros
and/or macros for column values (eg PROVOLATILE_IMMUTABLE), so they
currently have to #include those headers or else hard-code the values.
We've worked around that to date with ad-hoc solutions like splitting
function declarations out to pg_*_fn.h files, but I never liked that
much. With the OID value macros being moved out to separate generated
file(s), there's now a possibility that we could fix this once and for all
by making client-side code include those file(s) not pg_type.h et al
themselves. But we'd need a way to put the column-value macros into
those files too; maybe that's too messy to make it practical.

I had a thought about how to do that. It's clearly desirable that that
sort of material remain in the manually-maintained pg_*.h files, because
that's basically where you look to find out C-level details of what's
in a particular catalog. However, that doesn't mean that that's where
the compiler has to find it. Imagine that we write such sections of the
catalog .h files like

#ifdef EXPOSE_TO_CLIENT_CODE

/*
* ... comment here ...
*/
#define PROVOLATILE_IMMUTABLE 'i' /* never changes for given input */
#define PROVOLATILE_STABLE 's' /* does not change within a scan */
#define PROVOLATILE_VOLATILE 'v' /* can change even within a scan */

#endif /* EXPOSE_TO_CLIENT_CODE */

Like CATALOG_VARLEN, the symbol EXPOSE_TO_CLIENT_CODE is never actually
defined to the compiler. What it does is to instruct genbki.pl to copy
the material up to the matching #endif into the generated file for this
catalog. So, for each catalog header pg_foo.h, there would be a
generated file, say pg_foo_d.h, containing:

* Natts_ and Anum_ macros for pg_foo

* Any EXPOSE_TO_CLIENT_CODE sections copied from pg_foo.h

* Any OID-value macros for entries in that catalog

pg_foo.h would contain a #include for pg_foo_d.h, so that backend-side
code would obtain all these values the same as it did before. But the
new policy for client code would be to include pg_foo_d.h *not* pg_foo.h,
and so we are freed of any worry about whether pg_foo.h has to be clean
for clients to include. We could re-merge the various pg_foo_fn.h files
back into the main files, if we wanted.

The contents of EXPOSE_TO_CLIENT_CODE sections wouldn't necessarily
have to be just macros --- they could be anything that's safe and
useful for client code. But that's probably the main usage.

regards, tom lane

#31John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#27)
Re: WIP: a way forward on bootstrap data

On 1/14/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I'm not sure about the decision to move all the OID macros into
one file; that seems like namespace pollution.

<snip>

The design I'd kind of imagined was one generated file of #define's
per pg_*.h file, not just one giant one.

First, thanks for the comments. I will start incorporating them in a
few days to give others the chance to offer theirs.

I'm inclined to agree about namespace pollution. One stumbling block
is the makefile changes to allow OID symbols to be visible to
non-backend code. Assuming I took the correct approach for the single
file case, adapting that to multiple files would require some
rethinking.

It's especially
odd that you did that but did not consolidate fmgroids.h with
the macros for symbols from other catalogs.

Point taken.

It would be really nice, also, if the attribute number macros
(Natts_pg_proc, Anum_pg_proc_proname, etc) could be autogenerated.
Manually renumbering those is one of the bigger pains in the rear
when adding catalog columns. It was less of a pain than adjusting
the DATA lines of course, so I never figured it was worth doing
something about in isolation --- but with this infrastructure in
place, that's manual work we shouldn't have to do anymore.

Searching the archives for discussion of Anum_* constants [1]/messages/by-id/25254.1248533810@sss.pgh.pa.us, I
prefer your one-time suggestion to use enums instead. I'd do that, and
then have Catalog.pm throw an error if Natts_* doesn't match the
number of columns. That's outside the scope of this patch, however.

Another thing that I'd sort of hoped might happen from this patchset
is to cure the problem of keeping some catalog headers safe for
client-side inclusion, because some clients want the OID value macros
and/or macros for column values (eg PROVOLATILE_IMMUTABLE), so they
currently have to #include those headers or else hard-code the values.
We've worked around that to date with ad-hoc solutions like splitting
function declarations out to pg_*_fn.h files, but I never liked that
much. With the OID value macros being moved out to separate generated
file(s), there's now a possibility that we could fix this once and for all
by making client-side code include those file(s) not pg_type.h et al
themselves. But we'd need a way to put the column-value macros into
those files too; maybe that's too messy to make it practical.

To make sure I understand you correctly:
Currently we have

pg_type.h oid symbols, column symbols
pg_type_fn.h function decls

And assuming we go with one generated oid symbol file per header, my
patch would end up with something like

pg_type.h column symbols (#includes pg_type_sym.h)
pg_type_fn.h function decls
pg_type_sym.h oid symbols (generated)

And you're saying you'd prefer

pg_type.h function decls (#includes pg_type_sym.h)
pg_type_sym.h oid symbols, column symbols (generated)

I agree that it'd be messy to drive the generation of the column
symbols. I'll think about it. What about

pg_type.h function decls (#includes pg_type_sym.h)
pg_type_sym.h column symbols (static, #includes pg_type_oids.h)
pg_type_oids.h oid symbols (generated)

It's complicated, but arguably no more so than finding someplace more
distant to stick the column symbols and writing code to copy them.
It'd be about than 20 *_sym.h headers and 10 *_oids.h headers.

The .dat files need to have header comments that follow project
conventions, in particular they need to contain copyright statements.
Likewise for generated files.

Okay.

I've got zero faith that the .h files will hold still long enough
for these patches to be reviewed and applied. The ones that touch
significant amounts of data need to be explained as "run this script
on the current data", rather than presented as static diffs.

I've already rebased over a catalog change and it was not much fun, so
I'd be happy to do it this way.

I'm not really thrilled by the single-purpose "magic" behaviors added
in 0007, such as computing prosrc from proname. I think those will
add more confusion than they're worth.

Okay. I still think generating pg_type OID symbols is worth doing, but
I no longer think this is a good place to do it.

In 0010, you relabel the types of some OID columns so that genbki.pl
will know which lookup to apply to them. That's not such a problem for
the relabelings that are just macros and genbki.pl converts back to
type OID in the .bki file. But you also did things like s/Oid/regtype/,
and that IS a problem because it will affect what client code sees in
those catalog columns. We've discussed changing those columns to
regfoo types in the past, and decided not to, because of the likelihood
of breaking client queries. I do not think this patch gets to change
that policy. So the way to identify the lookup rule needs to be
independent of whether the column is declared as Oid or an Oid alias type.
Perhaps an explicit marker telling what transformation to make, like

Oid rngsubtype BKI_LOOKUP(pg_type);

would work for that.

Okay. I fail to see how client queries are affected, since I change
everything back to oid, but I think your design is cleaner anyway.

I'm not really on board at all with 0012, which AFAICS moves the indexing
and toast-table information out of indexing.h and toasting.h for no good
reason whatever. We'll have quite enough code thrash and pending-patch
breakage from this patch set; we don't need to take on rearrangements that
aren't buying anything.

I don't have a convincing rebuttal, so I'll withdraw it.
--

[1]: /messages/by-id/25254.1248533810@sss.pgh.pa.us

-John Naylor

#32Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Tom Lane (#30)
Re: WIP: a way forward on bootstrap data

Tom Lane wrote:

I had a thought about how to do that. It's clearly desirable that that
sort of material remain in the manually-maintained pg_*.h files, because
that's basically where you look to find out C-level details of what's
in a particular catalog. However, that doesn't mean that that's where
the compiler has to find it.

[ elided explanation of pg_foo_d.h and pg_foo.h ]

Sounds good to me.

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#33John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#30)
Re: WIP: a way forward on bootstrap data

On 1/14/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

So, for each catalog header pg_foo.h, there would be a
generated file, say pg_foo_d.h, containing:

* Natts_ and Anum_ macros for pg_foo

* Any EXPOSE_TO_CLIENT_CODE sections copied from pg_foo.h

* Any OID-value macros for entries in that catalog

I'm on board in principle, but I have some questions:

How do we have the makefiles gracefully handle 62 generated headers
which need to be visible outside the backend? Can I generalize the
approach I took for the single OIDs file I had, or is that not even
the right way to go? (In short, I used a new backend make target that
was invoked in src/common/Makefile - the details are in patch v6-0006)

If we move fmgr oid generation here as you suggested earlier, I
imagine we don't want to create a lot of #include churn. My idea is to
turn src/include/utils/fmgroids.h into a static file that just
#includes catalog/pg_proc_d.h. Thoughts?

And I'm curious, what is "_d" intended to convey?

(While I'm thinking outloud, I'm beginning to think that these headers
lie outside the scope of genbki.pl, and belong in a separate script.)

-John Naylor

#34Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#33)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 1/14/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

So, for each catalog header pg_foo.h, there would be a
generated file, say pg_foo_d.h, containing:
* Natts_ and Anum_ macros for pg_foo
* Any EXPOSE_TO_CLIENT_CODE sections copied from pg_foo.h
* Any OID-value macros for entries in that catalog

I'm on board in principle, but I have some questions:

How do we have the makefiles gracefully handle 62 generated headers
which need to be visible outside the backend?

There are other people around here who are better make wizards than I, but
I'm sure this is soluble. A substitution like $(CATALOG_HEADERS:_d.h=.h)
might get you started. (It looks like CATALOG_HEADERS would have to be
separated out of POSTGRES_BKI_SRCS, but that's easy.)

If we move fmgr oid generation here as you suggested earlier, I
imagine we don't want to create a lot of #include churn. My idea is to
turn src/include/utils/fmgroids.h into a static file that just
#includes catalog/pg_proc_d.h. Thoughts?

Yeah ... or vice versa. I don't know if touching the way fmgroids.h is
built is worthwhile. Certainly, if we'd built all this to begin with
we'd have unified pg_proc.h's OID macro handling with the other catalogs,
but we didn't and that might not be worth changing. I'm not strongly
convinced either way.

And I'm curious, what is "_d" intended to convey?

I was thinking "#define" or "data". You could make as good a case for
"_g" for "generated", or probably some other choices. I don't have a
strong preference; but I didn't especially like your original suggestion
of "_sym", because that seemed like it would invite confusion with
possible actual names for catalogs. A one-letter suffix seems less
likely to conflict with anything anybody would think was a good choice
of catalog name.

(While I'm thinking outloud, I'm beginning to think that these headers
lie outside the scope of genbki.pl, and belong in a separate script.)

Maybe, but the conditions for regenerating these files would be exactly
the same as for the .bki file, no? So we might as well just have one
script do both, rather than writing duplicative rules in the Makefiles
and the MSVC scripts.

regards, tom lane

#35John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#27)
7 attachment(s)
Re: WIP: a way forward on bootstrap data

On 1/14/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I've got zero faith that the .h files will hold still long enough
for these patches to be reviewed and applied. The ones that touch
significant amounts of data need to be explained as "run this script
on the current data", rather than presented as static diffs.

For version 7, I've attached a bash script along with the patches
(against master a044378ce2f) that does exactly this. To run, one would
save the patches somewhere and change the PATCH_DIR and REPO_DIR
variables to match.

-I've added MSVC changes, but they are untested.
-I've moved a cosmetic patch up in the series to reduce rebasing
effort. There are some additional comment and style changes.

Not done in this version:

-For the time being I've left out human-readable OIDs and data file
compaction strategies. This is just to reduce effort in rebasing. I'll
add some form of those back after the basics have had serious review.
-Change who is responsible for fmgroids.h. It's debatable whether that
would be a gain anyway.

The README might need to be fleshed out further, possibly with a
separate README for working with the new data format.

So, for each catalog header pg_foo.h, there would be a
generated file, say pg_foo_d.h, containing:

* Natts_ and Anum_ macros for pg_foo

* Any EXPOSE_TO_CLIENT_CODE sections copied from pg_foo.h

* Any OID-value macros for entries in that catalog

This is done (patch 0006). As I mentioned earlier, the sticking point
is the makefiles. I have a working build, but it's not up to project
standards. In particular, for the first attempt I've resorted to
discarding conventions for parallel make safety, so if anyone can
review and offer improvements, I'd be grateful.

The .dat files need to have header comments that follow project
conventions, in particular they need to contain copyright statements.
Likewise for generated files.

Done.

I'll also go ahead and move this to next commitfest.

-John Naylor

Attachments:

v7-apply-bootstrap-data-patches.shapplication/x-sh; name=v7-apply-bootstrap-data-patches.shDownload
v7-0001-Create-data-conversion-infrastructure.patchtext/x-patch; charset=US-ASCII; name=v7-0001-Create-data-conversion-infrastructure.patchDownload
From 862165136653994f14db91bc9fc95891751a7805 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 15 Jan 2018 10:19:30 +0700
Subject: [PATCH v7] Create data conversion infrastructure

convert_header2dat.pl turns DATA()/(SH)DESCR() statements into
serialized Perl data structures in pg_*.dat files, preserving comments
along the way. This is a one-off script, but it is committed to the
repo in case third parties want to convert their own catalog data.

The pg_tablespace.h changes allow the OID symbols to be captured
correctly.

Remove data parsing from the original Catalogs() function and rename it
to ParseHeader() to reflect its new, limited role of extracting the
schema info from a single header. The new data files are handled by the
new function ParseData(). Having these functions work with only one file
at a time requires their callers to do more work, but results in a cleaner
design.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, preserves comments and folds
consecutive blank lines. The meta-attributes oid, oid_symbol and
(sh)descr are on their own line, if present.
---
 src/backend/catalog/Catalog.pm            | 227 +++++++++--------
 src/include/catalog/convert_header2dat.pl | 394 ++++++++++++++++++++++++++++++
 src/include/catalog/pg_tablespace.h       |   3 +-
 src/include/catalog/rewrite_dat.pl        | 200 +++++++++++++++
 4 files changed, 706 insertions(+), 118 deletions(-)
 create mode 100644 src/include/catalog/convert_header2dat.pl
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 9ced154..60e641e 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,19 +33,16 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
 		my %catalog;
+		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
 
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -64,9 +60,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -74,68 +67,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
-			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -143,16 +85,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -173,7 +112,7 @@ sub Catalogs
 				}
 				if (/^}/)
 				{
-					undef $declaring_attributes;
+					$declaring_attributes = 0;
 				}
 				else
 				{
@@ -227,32 +166,107 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
-	}
-	return \%catalogs;
+	return \%catalog;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	$input_file =~ /\w+\.dat$/
+	  or die "Input file needs to be a .dat file.\n";
+	my $data = [];
+
+	# Read entire file into a string and eval it.
+	if (!$preserve_formatting)
+	{
+		my $file_string = do
+		{
+			local $/ = undef;
+			open my $ifd, "<", $input_file or die "$input_file: $!";
+			<$ifd>;
+		};
+
+		eval '$data = ' . $file_string;
+		print "Error : $@\n" if $@;
+		return $data;
+	}
+
+	# When preserving formatting, we scan the file one line at a time
+	# and decide how to handle each item. We don't check too closely
+	# for valid syntax, since we assume it will be checked otherwise.
+	my $prev_blank = 0;
+	open(my $ifd, '<', $input_file) or die "$input_file: $!";
+	while (<$ifd>)
+	{
+		my $datum;
+
+		# Capture non-consecutive blank lines.
+		if (/^\s*$/)
+		{
+			next if $prev_blank;
+			$prev_blank = 1;
+
+			# Newline gets added by caller.
+			$datum = '';
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		# Capture comments that are on their own line.
+		if (/^\s*(#.*?)\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture brackets that are on their own line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture hash references
+		# NB: Assumes that the next hash ref can't start on the
+		# same line where the present one ended.
+		# Not foolproof, but we shouldn't need a full parser,
+		# since we expect relatively well-behaved input.
+		elsif (/{/)
+		{
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+			}
+			else
+			{
+				my $next_line = <$ifd>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+		push @$data, $datum if defined $datum;
+	}
+	close $ifd;
+	return $data;
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -308,7 +322,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -340,22 +353,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index 0000000..518a7eb
--- /dev/null
+++ b/src/include/catalog/convert_header2dat.pl
@@ -0,0 +1,394 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# convert_header2dat.pl
+#    Perl script that parses the catalog header files for BKI
+#    DATA() and (SH)DESCR() statements, as well as defined symbols
+#    referring to OIDs, and writes them out as native perl data
+#    structures. White space and header commments referring to DATA()
+#    lines are preserved. Some functions are loosely copied from
+#    src/backend/catalog/Catalog.pm, whose equivalents have been
+#    removed.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/convert_header2dat.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+
+# No $VARs - we add our own later.
+$Data::Dumper::Terse = 1;
+
+my @input_files;
+my $output_path = '';
+my $major_version;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.h$/)
+	{
+		die "Input files need to be header files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Read all the input header files into internal data structures
+# XXX This script is not robust against non-catalog headers. It's best
+# to pass it the same list found in backend/catalog/Makefile.
+my $catalogs = catalogs(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	# First, see if the header has any data entries. This is necessary
+	# because headers with no DATA may still have comments that catalogs()
+	# thought was in a DATA section.
+	my $found_one = 0;
+	foreach my $data (@{ $catalog->{data} })
+	{
+		if (ref $data eq 'HASH')
+		{
+			$found_one = 1;
+		}
+	}
+	next if !$found_one;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+		push @attnames, $attname;
+	}
+
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write out data file.
+
+	print $dat <<EOM;
+#----------------------------------------------------------------------
+#
+# $catname.dat
+#    Initial contents of the $catname system relation.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/include/catalog/$catname.dat
+#
+#----------------------------------------------------------------------
+
+EOM
+
+	print $dat "[\n\n";
+
+	foreach my $data (@{ $catalog->{data} })
+	{
+
+		# Either a blank line or comment - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			# Split line into tokens without interpreting their meaning.
+			my %bki_values;
+			@bki_values{@attnames} = split_data_line($data->{bki_values});
+
+			# Flatten data hierarchy.
+			delete $data->{bki_values};
+			my %flat_data = (%$data, %bki_values);
+
+			# Strip double quotes for readability. Most will be put
+			# back in when writing postgres.bki
+			foreach (values %flat_data)
+			{
+				s/"//g;
+			}
+
+			print $dat Dumper(\%flat_data);
+			print $dat ",\n";
+		}
+	}
+
+	print $dat "\n]\n";
+}
+
+
+# This function is a heavily modified version of its former namesake
+# in Catalog.pm. There is possibly some dead code here. It's not worth
+# removing.
+sub catalogs
+{
+	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	$catalogs{names} = [];
+
+	# There are a few types which are given one name in the C source, but a
+	# different name at the SQL level.  These are enumerated here.
+	my %RENAME_ATTTYPE = (
+		'int16'         => 'int2',
+		'int32'         => 'int4',
+		'int64'         => 'int8',
+		'Oid'           => 'oid',
+		'NameData'      => 'name',
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
+
+	foreach my $input_file (@_)
+	{
+		my %catalog;
+		$catalog{columns} = [];
+		$catalog{data}    = [];
+		my $is_varlen     = 0;
+		my $saving_comments = 0;
+
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
+
+		# Skip these to keep the code simple.
+		next if $filename eq 'toasting'
+				or $filename eq 'indexing';
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			# Determine whether we're in the DATA section and should
+			# start saving header comments.
+			if (/(\/|\s)\*\s+initial contents of pg_/)
+			{
+				$saving_comments = 1;
+			}
+
+			if ($saving_comments)
+			{
+				if ( m{^(/|\s+)\*\s+(.+?)(\*/)?$} )
+				{
+					my $comment = $2;
+
+					# Filter out comments we know we don't want.
+					if ($comment !~ /^-+$/
+						and $comment !~ /initial contents of pg/
+						and $comment !~ /PG_\w+_H/)
+					{
+						# Trim whitespace.
+						$comment =~ s/^\s+//;
+						$comment =~ s/\s+$//;
+						push @{ $catalog{data} }, "# $comment";
+					}
+				}
+				elsif (/^\s*$/)
+				{
+					# Preserve blank lines. Newline gets added by caller.
+					push @{ $catalog{data} }, '';
+				}
+			}
+			else
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+			}
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+
+			# Push the data into the appropriate data structure.
+			if (/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			{
+				if ($2)
+				{
+					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+				}
+				else
+				{
+					push @{ $catalog{data} }, { bki_values => $3 };
+				}
+			}
+			# Save defined symbols referring to OIDs.
+			elsif (/^#define\s+(\S+)\s+(\d+)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+				my $oid_symbol = $1;
+
+				# Print a warning if we find a defined symbol that is not
+				# associated with the most recent DATA() statement, and is
+				# not one of the symbols that we know to exclude.
+				if (ref $most_recent ne 'HASH'
+					and $oid_symbol !~ m/^Natts/
+					and $oid_symbol !~ m/^Anum/
+					and $oid_symbol !~ m/^STATISTIC_/
+					and $oid_symbol !~ m/^TRIGGER_TYPE_/
+					and $oid_symbol !~ m/RelationId$/
+					and $oid_symbol !~ m/Relation_Rowtype_Id$/)
+				{
+					printf "Unhandled #define symbol: $filename: $_\n";
+					next;
+				}
+				if (defined $most_recent->{oid} && $most_recent->{oid} ne $2)
+				{
+					print "#define does not apply to last seen oid \n$_\n";
+					next;
+				}
+				$most_recent->{oid_symbol} = $oid_symbol;
+			}
+			elsif (/^DESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "DESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "DESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{descr} = $1;
+				}
+			}
+			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "SHDESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "SHDESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{shdescr} = $1;
+				}
+			}
+			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			{
+				$catname = $1;
+				$catalog{relation_oid} = $2;
+
+				# Store pg_* catalog names in the same order we receive them
+				push @{ $catalogs{names} }, $catname;
+
+				$declaring_attributes = 1;
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
+				next if (/^#/);
+				if (/^}/)
+				{
+					undef $declaring_attributes;
+				}
+				else
+				{
+					my %column;
+					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+					die "parse error ($input_file)" unless $attname;
+					if (exists $RENAME_ATTTYPE{$atttype})
+					{
+						$atttype = $RENAME_ATTTYPE{$atttype};
+					}
+					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					{
+						$attname = $1;
+						$atttype .= '[]';
+					}
+
+					$column{type} = $atttype;
+					$column{name} = $attname;
+
+					push @{ $catalog{columns} }, \%column;
+				}
+			}
+		}
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
+		close $ifh;
+	}
+	return \%catalogs;
+}
+
+# Split a DATA line into fields.
+# Call this on the bki_values element of a DATA item returned by catalogs();
+# it returns a list of field values.  We don't strip quoting from the fields.
+# Note: It should be safe to assign the result to a list of length equal to
+# the nominal number of catalog fields, because the number of fields were
+# checked in the original Catalog module.
+sub split_data_line
+{
+	my $bki_values = shift;
+
+	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+	return @result;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: convert_macro2dat.pl [options] header...
+
+Options:
+    -o               output path
+
+convert_macro2dat.pl generates data files from the same header files
+currently parsed by Catalag.pm.
+
+EOM
+}
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 3967056..360fc4c 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -58,9 +58,8 @@ typedef FormData_pg_tablespace *Form_pg_tablespace;
 #define Anum_pg_tablespace_spcoptions	4
 
 DATA(insert OID = 1663 ( pg_default PGUID _null_ _null_ ));
-DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
-
 #define DEFAULTTABLESPACE_OID 1663
+DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
 #define GLOBALTABLESPACE_OID 1664
 
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..e0d0d66
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,200 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata entries are on their own line within the data entry.
+#    -Attributes are in the same order they would be in the catalog table.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @METADATA = ('oid', 'oid_symbol', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Back up old data file rather than overwrite it. The input path and
+	# output path are normally the same, but we don't assume that.
+	my $newdatfile = "$output_path$catname.dat";
+	if (-e $newdatfile)
+	{
+		rename($newdatfile, $newdatfile . '.bak')
+		  or die "rename: $newdatfile: $!";
+	}
+	open my $dat, '>', $newdatfile
+	  or die "can't open $newdatfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @METADATA);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+# Format the individual elements of a Perl hash into a valid string
+# representation. We do this ourselves, rather than use native Perl
+# facilities, so we can keep control over the exact formatting of the
+# data files.
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+# XXX This is of questionable utility, since the files are under version
+# control, after all.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v7-0002-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v7-0002-Hand-edits-of-data-files.patchDownload
From e9dbe769a8d086693aec770a2320bd903664dbed Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Tue, 16 Jan 2018 14:02:38 +0700
Subject: [PATCH 2/2] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    |  9 ++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     |  9 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 45 ++++++----------------
 12 files changed, 143 insertions(+), 87 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index a77bab0..86fecba 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -20,48 +20,56 @@
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int24
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int28
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int4
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int42
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int48
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int8
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int82
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int84
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
@@ -101,18 +109,21 @@
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float48
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators float8
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float84
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
@@ -176,48 +187,56 @@
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamp
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamptz
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
@@ -389,17 +408,22 @@
 
 # bpchar_ops
 { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # char_ops
 { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+
 # date_ops
 { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+
 # float_ops
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+
 # network_ops
 { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+
 # integer_ops
 { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
@@ -410,52 +434,76 @@
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+
 # interval_ops
 { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr_ops
 { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr8_ops
 { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+
 # name_ops
 { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+
 # oid_ops
 { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+
 # oidvector_ops
 { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+
 # text_ops
 { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # time_ops
 { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamptz_ops
 { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+
 # timetz_ops
 { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamp_ops
 { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+
 # bool_ops
 { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+
 # bytea_ops
 { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+
 # xid_ops
 { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+
 # cid_ops
 { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+
 # abstime_ops
 { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+
 # reltime_ops
 { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+
 # text_pattern_ops
 { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # bpchar_pattern_ops
 { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # aclitem_ops
 { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+
 # uuid_ops
 { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+
 # pg_lsn_ops
 { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+
 # numeric_ops
 { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+
 # array_ops
 { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
 
@@ -699,24 +747,28 @@
 { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax "char"
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax name
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax integer
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
@@ -770,18 +822,21 @@
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax oid
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax tid
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax float (float4, float8)
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
@@ -810,30 +865,35 @@
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax reltime
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr8
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax inet
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion inet
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
@@ -841,18 +901,21 @@
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax character
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time without time zone
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
@@ -906,36 +969,42 @@
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time with time zone
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit varying
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax numeric
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax uuid
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion range types
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
@@ -951,12 +1020,14 @@
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax pg_lsn
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion box
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
@@ -970,6 +1041,7 @@
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index ef7b587..245838e 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -277,21 +277,25 @@
 { amprocfamily => '5008', amproclefttype => '604', amprocrighttype => '604', amprocnum => '6', amproc => '5011' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+
 # minmax "char"
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+
 # minmax name
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
@@ -337,16 +341,19 @@
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+
 # minmax oid
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+
 # minmax tid
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+
 # minmax float
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
@@ -373,26 +380,31 @@
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+
 # minmax reltime
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr8
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+
 # minmax inet
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+
 # inclusion inet
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
@@ -401,16 +413,19 @@
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+
 # minmax character
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+
 # minmax time without time zone
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
@@ -456,31 +471,37 @@
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+
 # minmax time with time zone
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+
 # minmax bit
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+
 # minmax bit varying
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+
 # minmax numeric
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+
 # minmax uuid
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+
 # inclusion range types
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
@@ -489,11 +510,13 @@
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+
 # inclusion box
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index cb109dd..e493a39 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -12,12 +12,11 @@
 
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# POSTGRES will be replaced at initdb time with a user choice that might
+# contain non-word characters, so we must double-quote it.
+
 { oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
-  rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR',
   rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index fc394ef..8c2aed5 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -65,6 +65,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -204,6 +205,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -238,6 +240,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -252,6 +255,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -259,6 +263,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -267,6 +272,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index b701e1e..bb76371 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -12,7 +12,7 @@
 
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
@@ -27,11 +27,4 @@
 { oid => '1259',
   relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bdbccea..6704f0b 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -12,7 +12,10 @@
 
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 04eec9f..6483027 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -19,6 +19,4 @@
 { oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index 4f0cbfa..a3972d4 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -55,12 +55,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1985', opcintype => '829', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3371', opcintype => '774', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3372', opcintype => '774', opcdefault => 't', opckeytype => '0' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1986', opcintype => '19', opcdefault => 't', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1987', opcintype => '19', opcdefault => 't', opckeytype => '0' },
 { oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID',
   opcmethod => '403', opcname => 'numeric_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1988', opcintype => '1700', opcdefault => 't', opckeytype => '0' },
@@ -136,7 +138,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4064', opcintype => '17', opcdefault => 't', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4062', opcintype => '18', opcdefault => 't', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4065', opcintype => '19', opcdefault => 't', opckeytype => '19' },
@@ -164,12 +168,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4079', opcintype => '1560', opcdefault => 't', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4080', opcintype => '1562', opcdefault => 't', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4055', opcintype => '1700', opcdefault => 't', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4081', opcintype => '2950', opcdefault => 't', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4103', opcintype => '3831', opcdefault => 't', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4082', opcintype => '3220', opcdefault => 't', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4104', opcintype => '603', opcdefault => 't', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index fd1aae8..a54bc1b17 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -12,7 +12,7 @@
 
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1592,6 +1592,7 @@
   oprname => '&&', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_and', oprrest => '-', oprjoin => '-' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_or', oprrest => '-', oprjoin => '-' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => '5003', oprrest => '-', oprjoin => '-' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 4b85ffa..256bbf1 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -12,14 +12,16 @@
 
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -28,7 +30,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier.
 
 # OIDS 1 - 99
 
@@ -1785,6 +1787,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   proname => 'obj_description', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '14', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '30', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'oidvectortypes', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -1945,11 +1948,11 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   proname => 'pclose', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_close', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1434', descr => 'open path',
   proname => 'popen', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_open', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1435',
   proname => 'path_add', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '602', proargtypes => '602 602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_add', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1436',
@@ -2741,6 +2744,7 @@
   proname => 'interval_hash_extended', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '20', proargtypes => '1186 20', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'interval_hash_extended', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '3', pronargdefaults => '0', prorettype => '1700', proargtypes => '2275 26 23', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'numeric_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1702', descr => 'I/O',
@@ -4764,6 +4768,7 @@
   proname => 'bool_anytrue', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '2281', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'bool_anytrue', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   proname => 'bool_or', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -4813,6 +4818,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_postmaster_start_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_conf_load_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -5669,6 +5675,7 @@
   proname => 'jsonb_pretty', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '3802', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_pretty', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '3802', proargtypes => '3802 1009 3802 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_insert', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '2970', proargtypes => '2275', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'txid_snapshot_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -6085,37 +6092,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_create', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_drop', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_oid', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '16', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_is_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '3220', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '3220 1184', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '25 3220', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_advance', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '3220', proargtypes => '25 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '100', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_show_replication_origin_status', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6138,20 +6134,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   proname => 'pg_control_system', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_system', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   proname => 'pg_control_checkpoint', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_checkpoint', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_recovery', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   proname => 'pg_control_init', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_init', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '1', pronargdefaults => '0', prorettype => '23', proargtypes => '4089', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_import_system_collations', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_collation_actual_version', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6165,19 +6157,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '2276', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '16', proargtypes => '26 23 23 2276', proallargtypes => '_null_', proargmodes => '{i,i,i,v}', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'satisfies_hash_partition', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 682721e..e8c81f2 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -19,6 +19,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index daeb647..0cc91e2 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -14,52 +14,40 @@
 
 # Keep the following ordered by OID so that later changes can be made more
 # easily.
+
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'B', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '17', oid_symbol => 'BYTEAOID', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '18', oid_symbol => 'CHAROID', descr => 'single character',
   typname => 'char', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '19', oid_symbol => 'NAMEOID', descr => '63-byte type for storing system identifiers',
   typname => 'name', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'NAMEDATALEN', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '20', oid_symbol => 'INT8OID', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '21', oid_symbol => 'INT2OID', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '2', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '22', oid_symbol => 'INT2VECTOROID', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '23', oid_symbol => 'INT4OID', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '24', oid_symbol => 'REGPROCOID', descr => 'registered procedure',
   typname => 'regproc', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '25', oid_symbol => 'TEXTOID', descr => 'variable-length string, no limit specified',
   typname => 'text', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '26', oid_symbol => 'OIDOID', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '27', oid_symbol => 'TIDOID', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '6', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '28', oid_symbol => 'XIDOID', descr => 'transaction id',
   typname => 'xid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '29', oid_symbol => 'CIDOID', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '30', oid_symbol => 'OIDVECTOROID', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -76,6 +64,7 @@
   typname => 'pg_class', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '1259', typelem => '0', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 100 - 199
+
 { oid => '114', oid_symbol => 'JSONOID',
   typname => 'json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '142', oid_symbol => 'XMLOID', descr => 'XML content',
@@ -84,16 +73,12 @@
   typname => '_xml', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '199',
   typname => '_json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '194', oid_symbol => 'PGNODETREEOID', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'ALIGNOF_POINTER', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -109,6 +94,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', oid_symbol => 'POINTOID', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '16', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '601', oid_symbol => 'LSEGOID', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -119,7 +105,6 @@
   typname => 'box', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '32', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\073', typrelid => '0', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '604', oid_symbol => 'POLYGONOID', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '628', oid_symbol => 'LINEOID', descr => 'geometric line',
   typname => 'line', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '629',
@@ -139,7 +124,6 @@
   typname => 'tinterval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '12', typbyval => 'f', typtype => 'b', typcategory => 'T', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '705', oid_symbol => 'UNKNOWNOID',
   typname => 'unknown', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '718', oid_symbol => 'CIRCLEOID', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '719',
@@ -162,6 +146,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1001',
@@ -242,6 +227,7 @@
   typname => 'time', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', oid_symbol => 'TIMESTAMPOID', descr => 'date and time',
   typname => 'timestamp', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1115',
@@ -260,6 +246,7 @@
   typname => '_interval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1266', oid_symbol => 'TIMETZOID', descr => 'time of day with time zone',
@@ -268,6 +255,7 @@
   typname => '_timetz', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', oid_symbol => 'BITOID', descr => 'fixed-length bit string',
   typname => 'bit', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'V', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1561',
@@ -280,37 +268,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', oid_symbol => 'NUMERICOID', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => '-', typalign => 'i', typstorage => 'm', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '1790', oid_symbol => 'REFCURSOROID', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2202', oid_symbol => 'REGPROCEDUREOID', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2203', oid_symbol => 'REGOPEROID', descr => 'registered operator',
   typname => 'regoper', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2204', oid_symbol => 'REGOPERATOROID', descr => 'registered operator (with args)',
   typname => 'regoperator', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2205', oid_symbol => 'REGCLASSOID', descr => 'registered class',
   typname => 'regclass', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2206', oid_symbol => 'REGTYPEOID', descr => 'registered type',
   typname => 'regtype', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4096', oid_symbol => 'REGROLEOID', descr => 'registered role',
   typname => 'regrole', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4089', oid_symbol => 'REGNAMESPACEOID', descr => 'registered namespace',
   typname => 'regnamespace', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2207',
   typname => '_regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2208',
@@ -349,7 +330,6 @@
   typname => 'regconfig', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3769', oid_symbol => 'REGDICTIONARYOID', descr => 'registered text search dictionary',
   typname => 'regdictionary', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3643',
   typname => '_tsvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3644',
@@ -406,6 +386,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249', oid_symbol => 'RECORDOID',
   typname => 'record', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2287', oid_symbol => 'RECORDARRAYOID',
@@ -443,8 +424,4 @@
 { oid => '3831', oid_symbol => 'ANYRANGEOID',
   typname => 'anyrange', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v7-0003-Reduce-indentation-level.patchtext/x-patch; charset=US-ASCII; name=v7-0003-Reduce-indentation-level.patchDownload
From c2154a348f9edbb48cccb2e04f40a5ee1747a93c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 21 Jan 2018 16:14:06 +0700
Subject: [PATCH v7] Reduce indentation level

A previous commit removed a logical block level from Catalog.pm, but
kept the indentation for the sake of patch readability. Fix that here.

Separate out the pg_attribute logic of genbki.pl into its own function
and skip checking if the data is defined. This both narrows and shortens
the data writing loop of the script.
---
 src/backend/catalog/Catalog.pm | 213 ++++++++++++++++----------------
 src/backend/catalog/genbki.pl  | 272 +++++++++++++++++++++--------------------
 2 files changed, 248 insertions(+), 237 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index c3b663b..de64002 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -33,140 +33,139 @@ sub ParseHeader
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-		my %catalog;
-		my $declaring_attributes = 0;
-		my $is_varlen     = 0;
+	my %catalog;
+	my $declaring_attributes = 0;
+	my $is_varlen     = 0;
 
-		$catalog{columns} = [];
-		$catalog{toasting} = [];
-		$catalog{indexing} = [];
+	$catalog{columns} = [];
+	$catalog{toasting} = [];
+	$catalog{indexing} = [];
 
-		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		# Scan the input file.
-		while (<$ifh>)
-		{
+	# Scan the input file.
+	while (<$ifh>)
+	{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
-			{
+		# Strip C-style comments.
+		s;/\*(.|\n)*\*/;;g;
+		if (m;/\*;)
+		{
 
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
-			}
+			# handle multi-line comments properly.
+			my $next_line = <$ifh>;
+			die "$input_file: ends within C-style comment\n"
+			  if !defined $next_line;
+			$_ .= $next_line;
+			redo;
+		}
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+		# Strip useless whitespace and trailing semicolons.
+		chomp;
+		s/^\s+//;
+		s/;\s*$//;
+		s/\s+/ /g;
 
-			# Push the data into the appropriate data structure.
-			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{toasting} },
-				  "declare toast $toast_oid $index_oid on $toast_name\n";
-			}
-			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
-			{
-				my ($is_unique, $index_name, $index_oid, $using) =
-				  ($1, $2, $3, $4);
-				push @{ $catalog{indexing} },
-				  sprintf(
-					"declare %sindex %s %s %s\n",
-					$is_unique ? 'unique ' : '',
-					$index_name, $index_oid, $using);
-			}
-			elsif (/^BUILD_INDICES/)
+		# Push the data into the appropriate data structure.
+		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+		{
+			my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
+			push @{ $catalog{toasting} },
+			  "declare toast $toast_oid $index_oid on $toast_name\n";
+		}
+		elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+		{
+			my ($is_unique, $index_name, $index_oid, $using) =
+			  ($1, $2, $3, $4);
+			push @{ $catalog{indexing} },
+			  sprintf(
+				"declare %sindex %s %s %s\n",
+				$is_unique ? 'unique ' : '',
+				$index_name, $index_oid, $using);
+		}
+		elsif (/^BUILD_INDICES/)
+		{
+			push @{ $catalog{indexing} }, "build indices\n";
+		}
+		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+		{
+			$catalog{catname} = $1;
+			$catalog{relation_oid} = $2;
+
+			$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
+			$catalog{shared_relation} =
+			  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
+			$catalog{without_oids} =
+			  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
+			$catalog{rowtype_oid} =
+			  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
+			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
+			$declaring_attributes = 1;
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
+			if (/^#/)
 			{
-				push @{ $catalog{indexing} }, "build indices\n";
+				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+				next;
 			}
-			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			if (/^}/)
 			{
-				$catalog{catname} = $1;
-				$catalog{relation_oid} = $2;
-
-				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
-				$catalog{shared_relation} =
-				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
-				$catalog{without_oids} =
-				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				$catalog{rowtype_oid} =
-				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
-				$declaring_attributes = 1;
+				$declaring_attributes = 0;
 			}
-			elsif ($declaring_attributes)
+			else
 			{
-				next if (/^{|^$/);
-				if (/^#/)
+				my %column;
+				my @attopts = split /\s+/, $_;
+				my $atttype = shift @attopts;
+				my $attname = shift @attopts;
+				die "parse error ($input_file)"
+				  unless ($attname and $atttype);
+
+				if (exists $RENAME_ATTTYPE{$atttype})
 				{
-					$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-					next;
+					$atttype = $RENAME_ATTTYPE{$atttype};
 				}
-				if (/^}/)
+				if ($attname =~ /(.*)\[.*\]/)    # array attribute
 				{
-					$declaring_attributes = 0;
+					$attname = $1;
+					$atttype .= '[]';
 				}
-				else
+
+				$column{type} = $atttype;
+				$column{name} = $attname;
+				$column{is_varlen} = 1 if $is_varlen;
+
+				foreach my $attopt (@attopts)
 				{
-					my %column;
-					my @attopts = split /\s+/, $_;
-					my $atttype = shift @attopts;
-					my $attname = shift @attopts;
-					die "parse error ($input_file)"
-					  unless ($attname and $atttype);
-
-					if (exists $RENAME_ATTTYPE{$atttype})
+					if ($attopt eq 'BKI_FORCE_NULL')
 					{
-						$atttype = $RENAME_ATTTYPE{$atttype};
+						$column{forcenull} = 1;
 					}
-					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 					{
-						$attname = $1;
-						$atttype .= '[]';
+						$column{forcenotnull} = 1;
+					}
+					elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+					{
+						$column{default} = $1;
+					}
+					else
+					{
+						die "unknown column option $attopt on column $attname";
 					}
 
-					$column{type} = $atttype;
-					$column{name} = $attname;
-					$column{is_varlen} = 1 if $is_varlen;
-
-					foreach my $attopt (@attopts)
+					if ($column{forcenull} and $column{forcenotnull})
 					{
-						if ($attopt eq 'BKI_FORCE_NULL')
-						{
-							$column{forcenull} = 1;
-						}
-						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
-						{
-							$column{forcenotnull} = 1;
-						}
-						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
-						{
-							$column{default} = $1;
-						}
-						else
-						{
-							die
-"unknown column option $attopt on column $attname";
-						}
-
-						if ($column{forcenull} and $column{forcenotnull})
-						{
-							die "$attname is forced both null and not null";
-						}
+						die "$attname is forced both null and not null";
 					}
-					push @{ $catalog{columns} }, \%column;
 				}
+				push @{ $catalog{columns} }, \%column;
 			}
 		}
-		close $ifh;
+	}
+	close $ifh;
 	return \%catalog;
 }
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index ed90a02..8d740c3 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -156,154 +156,85 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	# For pg_attribute.h, we generate data entries ourselves.
+	# NB: pg_type.h must come before pg_attribute.h in the input list
+	# of catalog names, since we use info from pg_type.h here.
+	if ($catname eq 'pg_attribute')
 	{
+		gen_pg_attribute($schema);
+	}
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
-		{
-
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
-
-			# Perform required substitutions on fields
-			foreach my $column (@$schema)
-			{
-				my $attname = $column->{name};
-				my $atttype = $column->{type};
-
-				# Substitute constant values we acquired above.
-				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
-
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
-				if ($atttype eq 'regproc')
-				{
-					my $procoid = $regprocoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $procoid
-					  if defined($procoid) && $procoid ne 'MULTIPLE';
-				}
-			}
+	# Ordinary catalog with DATA line(s)
+	foreach my $row (@{ $catalog->{data} })
+	{
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
-			if ($catname eq 'pg_proc')
-			{
-				if (defined($regprocoids{ $bki_values{proname} }))
-				{
-					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
-				}
-				else
-				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
-				}
-			}
+		# Split line into tokens without interpreting their meaning.
+		my %bki_values;
+		@bki_values{@attnames} =
+		  Catalog::SplitDataLine($row->{bki_values});
 
-			# Save pg_type info for pg_attribute processing below
-			if ($catname eq 'pg_type')
+		# Perform required substitutions on fields
+		foreach my $column (@$schema)
+		{
+			my $attname = $column->{name};
+			my $atttype = $column->{type};
+
+			# Substitute constant values we acquired above.
+			# (It's intentional that this can apply to parts of a field).
+			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+
+			# Replace regproc columns' values with OIDs.
+			# If we don't have a unique value to substitute,
+			# just do nothing (regprocin will complain).
+			if ($atttype eq 'regproc')
 			{
-				my %type = %bki_values;
-				$type{oid} = $row->{oid};
-				$types{ $type{typname} } = \%type;
+				my $procoid = $regprocoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $procoid
+				  if defined($procoid) && $procoid ne 'MULTIPLE';
 			}
+		}
 
-			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
-
-			# Write comments to postgres.description and
-			# postgres.shdescription
-			if (defined $row->{descr})
+		# Save pg_proc oids for use in later regproc substitutions.
+		# This relies on the order we process the files in!
+		if ($catname eq 'pg_proc')
+		{
+			if (defined($regprocoids{ $bki_values{proname} }))
 			{
-				printf $descr "%s\t%s\t0\t%s\n",
-				  $row->{oid}, $catname, $row->{descr};
+				$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
 			}
-			if (defined $row->{shdescr})
+			else
 			{
-				printf $shdescr "%s\t%s\t%s\n",
-				  $row->{oid}, $catname, $row->{shdescr};
+				$regprocoids{ $bki_values{proname} } = $row->{oid};
 			}
 		}
-	}
-	if ($catname eq 'pg_attribute')
-	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
-		# NB: pg_type.h must come before pg_attribute.h in the input list
-		# of catalog names, since we use info from pg_type.h here.
-		foreach my $table_name (@{ $catalogs->{names} })
+		# Save pg_type info for pg_attribute processing below
+		if ($catname eq 'pg_type')
 		{
-			my $table = $catalogs->{$table_name};
-
-			# Currently, all bootstrapped relations also need schemapg.h
-			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if !$table->{schema_macro};
-
-			$schemapg_entries{$table_name} = [];
-			push @tables_needing_macros, $table_name;
-
-			# Generate entries for user attributes.
-			my $attnum       = 0;
-			my $priornotnull = 1;
-			foreach my $attr (@{ $table->{columns} })
-			{
-				$attnum++;
-				my %row;
-				$row{attnum}   = $attnum;
-				$row{attrelid} = $table->{relation_oid};
-
-				morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
-				$priornotnull &= ($row{attnotnull} eq 't');
+			my %type = %bki_values;
+			$type{oid} = $row->{oid};
+			$types{ $type{typname} } = \%type;
+		}
 
-				# If it's bootstrapped, put an entry in postgres.bki.
-				print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+		# Write to postgres.bki
+		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+		printf $bki "insert %s( %s )\n", $oid,
+		  join(' ', @bki_values{@attnames});
 
-				# Store schemapg entries for later.
-				morph_row_for_schemapg(\%row, $schema);
-				push @{ $schemapg_entries{$table_name} },
-				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @row{@attnames});
-			}
-
-			# Generate entries for system attributes.
-			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($table->{bootstrap})
-			{
-				$attnum = 0;
-				my @SYS_ATTRS = (
-					{ name => 'ctid',     type => 'tid' },
-					{ name => 'oid',      type => 'oid' },
-					{ name => 'xmin',     type => 'xid' },
-					{ name => 'cmin',     type => 'cid' },
-					{ name => 'xmax',     type => 'xid' },
-					{ name => 'cmax',     type => 'cid' },
-					{ name => 'tableoid', type => 'oid' });
-				foreach my $attr (@SYS_ATTRS)
-				{
-					$attnum--;
-					my %row;
-					$row{attnum}        = $attnum;
-					$row{attrelid}      = $table->{relation_oid};
-					$row{attstattarget} = '0';
-
-					# Omit the oid column if the catalog doesn't have them
-					next
-					  if $table->{without_oids}
-						  && $attr->{name} eq 'oid';
-
-					morph_row_for_pgattr(\%row, $schema, $attr, 1);
-					print_bki_insert(\%row, @attnames);
-				}
-			}
+		# Write comments to postgres.description and
+		# postgres.shdescription
+		if (defined $row->{descr})
+		{
+			printf $descr "%s\t%s\t0\t%s\n",
+			  $row->{oid}, $catname, $row->{descr};
+		}
+		if (defined $row->{shdescr})
+		{
+			printf $shdescr "%s\t%s\t%s\n",
+			  $row->{oid}, $catname, $row->{shdescr};
 		}
 	}
-
 	print $bki "close $catname\n";
 }
 
@@ -375,6 +306,87 @@ exit 0;
 #################### Subroutines ########################
 
 
+# Iterate over all the catalogs. Where specified in the given header, build
+# a hard-coded tuple descriptor for utils/relcache.c. Some of these are
+# also bootstrap tables, which require pg_attribute entries in .bki for
+# both user and system attributes.
+sub gen_pg_attribute
+{
+	my $schema = shift;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		push @attnames, $column->{name};
+	}
+
+	foreach my $table_name (@{ $catalogs->{names} })
+	{
+		my $table = $catalogs->{$table_name};
+
+		# Currently, all bootstrapped relations also need schemapg.h
+		# entries, so skip if the relation isn't to be in schemapg.h.
+		next if !$table->{schema_macro};
+
+		$schemapg_entries{$table_name} = [];
+		push @tables_needing_macros, $table_name;
+
+		# Generate entries for user attributes.
+		my $attnum       = 0;
+		my $priornotnull = 1;
+		foreach my $attr (@{ $table->{columns} })
+		{
+			$attnum++;
+			my %row;
+			$row{attnum}   = $attnum;
+			$row{attrelid} = $table->{relation_oid};
+
+			morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
+			$priornotnull &= ($row{attnotnull} eq 't');
+
+			# If it's bootstrapped, put an entry in postgres.bki.
+			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+
+			# Store schemapg entries for later.
+			morph_row_for_schemapg(\%row, $schema);
+			push @{ $schemapg_entries{$table_name} },
+			  sprintf "{ %s }",
+				join(', ', grep { defined $_ } @row{@attnames});
+		}
+
+		# Generate entries for system attributes.
+		# We only need postgres.bki entries, not schemapg.h entries.
+		if ($table->{bootstrap})
+		{
+			$attnum = 0;
+			my @SYS_ATTRS = (
+				{ name => 'ctid',     type => 'tid' },
+				{ name => 'oid',      type => 'oid' },
+				{ name => 'xmin',     type => 'xid' },
+				{ name => 'cmin',     type => 'cid' },
+				{ name => 'xmax',     type => 'xid' },
+				{ name => 'cmax',     type => 'cid' },
+				{ name => 'tableoid', type => 'oid' });
+			foreach my $attr (@SYS_ATTRS)
+			{
+				$attnum--;
+				my %row;
+				$row{attnum}        = $attnum;
+				$row{attrelid}      = $table->{relation_oid};
+				$row{attstattarget} = '0';
+
+				# Omit the oid column if the catalog doesn't have them
+				next
+				  if $table->{without_oids}
+					  && $attr->{name} eq 'oid';
+
+				morph_row_for_pgattr(\%row, $schema, $attr, 1);
+				print_bki_insert(\%row, @attnames);
+			}
+		}
+	}
+}
+
 # Given $pgattr_schema (the pg_attribute schema for a catalog sufficient for
 # AddDefaultValues), $attr (the description of a catalog row), and
 # $priornotnull (whether all prior attributes in this catalog are not null),
-- 
2.7.4

v7-0004-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v7-0004-Update-catalog-scripts-to-read-data-files.patchDownload
From 74dd205f070fb832794d6604c259d728401c196c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 21 Jan 2018 16:58:05 +0700
Subject: [PATCH v7] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/Makefile               |   2 +-
 src/backend/catalog/Makefile       |  11 ++-
 src/backend/catalog/README         |  72 +++++++++++++++-----
 src/backend/catalog/genbki.pl      | 133 ++++++++++++++++++++++++++-----------
 src/backend/utils/Gen_fmgrtab.pl   |  56 ++++++++++------
 src/backend/utils/Makefile         |   4 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 src/tools/msvc/Solution.pm         |   9 ++-
 10 files changed, 213 insertions(+), 91 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 4a28267..2fadcea 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -142,7 +142,7 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..c177ba0 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,57 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data structure literals that are simply
+eval'd to produce in-memory data structures.  As such, the code reading
+them doesn't care about ordering and layout, but in order to maintain
+a standard appearance, src/include/catalog/rewrite_dat.pl should be run
+before submitting catalog data patches.  Each file contains an array of
+hash references, which represent the data entries.  The best examples are
+the existing data files, but an altered subset of pg_database.dat will
+demonstrate the key features:
+
+# pg_database_example.dat
+[
+
+# a comment
+{ oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must also have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The metadata fields oid, oid_symbol, descr, and shdescr are on their own
+line within the curly brackets.  This is done automatically during rewriting
+so their placement is not crucial during development.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -38,9 +71,9 @@ catalog that has no OIDs).  In practice we usually preassign OIDs
 for all or none of the pre-loaded tuples in a given catalog, even if only
 some of them are actually cross-referenced.
 
-- We also sometimes preallocate OIDs for catalog tuples whose OIDs must
-be known directly in the C code.  In such cases, put a #define in the
-catalog's .h file, and use the #define symbol in the C code.  Writing
+- We also sometimes preallocate OIDs for catalog tuples whose OIDs must be
+known directly in the C code.  In such cases, put an 'oid_symbol' entry in
+the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
 Direct references to pg_proc OIDs are common enough that there's a special
 mechanism to create the necessary #define's automatically: see
@@ -49,19 +82,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +138,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 8d740c3..c86b06e 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,18 +143,17 @@ my %regprocoids;
 my %types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my @attnames;
 	my $first = 1;
 
 	print $bki " (\n";
@@ -128,7 +162,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		push @attnames, $attname;
 
 		if (!$first)
 		{
@@ -164,14 +197,10 @@ foreach my $catname (@{ $catalogs->{names} })
 		gen_pg_attribute($schema);
 	}
 
-	# Ordinary catalog with DATA line(s)
-	foreach my $row (@{ $catalog->{data} })
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
 	{
-
-		# Split line into tokens without interpreting their meaning.
-		my %bki_values;
-		@bki_values{@attnames} =
-		  Catalog::SplitDataLine($row->{bki_values});
+		my %bki_values = %$row;
 
 		# Perform required substitutions on fields
 		foreach my $column (@$schema)
@@ -205,7 +234,7 @@ foreach my $catname (@{ $catalogs->{names} })
 			}
 			else
 			{
-				$regprocoids{ $bki_values{proname} } = $row->{oid};
+				$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 			}
 		}
 
@@ -213,26 +242,23 @@ foreach my $catname (@{ $catalogs->{names} })
 		if ($catname eq 'pg_type')
 		{
 			my %type = %bki_values;
-			$type{oid} = $row->{oid};
 			$types{ $type{typname} } = \%type;
 		}
 
 		# Write to postgres.bki
-		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-		printf $bki "insert %s( %s )\n", $oid,
-		  join(' ', @bki_values{@attnames});
+		print_bki_insert(\%bki_values, $schema);
 
 		# Write comments to postgres.description and
 		# postgres.shdescription
-		if (defined $row->{descr})
+		if (defined $bki_values{descr})
 		{
 			printf $descr "%s\t%s\t0\t%s\n",
-			  $row->{oid}, $catname, $row->{descr};
+			  $bki_values{oid}, $catname, $bki_values{descr};
 		}
-		if (defined $row->{shdescr})
+		if (defined $bki_values{shdescr})
 		{
 			printf $shdescr "%s\t%s\t%s\n",
-			  $row->{oid}, $catname, $row->{shdescr};
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
 	print $bki "close $catname\n";
@@ -242,12 +268,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -320,9 +346,9 @@ sub gen_pg_attribute
 		push @attnames, $column->{name};
 	}
 
-	foreach my $table_name (@{ $catalogs->{names} })
+	foreach my $table_name (@catnames)
 	{
-		my $table = $catalogs->{$table_name};
+		my $table = $catalogs{$table_name};
 
 		# Currently, all bootstrapped relations also need schemapg.h
 		# entries, so skip if the relation isn't to be in schemapg.h.
@@ -345,7 +371,7 @@ sub gen_pg_attribute
 			$priornotnull &= ($row{attnotnull} eq 't');
 
 			# If it's bootstrapped, put an entry in postgres.bki.
-			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+			print_bki_insert(\%row, $schema) if $table->{bootstrap};
 
 			# Store schemapg entries for later.
 			morph_row_for_schemapg(\%row, $schema);
@@ -381,7 +407,7 @@ sub gen_pg_attribute
 					  && $attr->{name} eq 'oid';
 
 				morph_row_for_pgattr(\%row, $schema, $attr, 1);
-				print_bki_insert(\%row, @attnames);
+				print_bki_insert(\%row, $schema);
 			}
 		}
 	}
@@ -452,14 +478,45 @@ sub morph_row_for_pgattr
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki. Adding quotes here allows us to keep
+# most double quotes out of the catalog data files for readability. See
+# bootscanner.l for what tokens need quoting.
 sub print_bki_insert
 {
-	my $row        = shift;
-	my @attnames   = @_;
-	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', @{$row}{@attnames};
-	printf $bki "insert %s( %s )\n", $oid, $bki_values;
+	my $row    = shift;
+	my $schema = shift;
+
+	my @bki_values;
+	my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+
+	foreach my $column (@$schema)
+	{
+		my $attname   = $column->{name};
+		my $atttype   = $column->{type};
+		my $bki_value = $row->{$attname};
+
+		$bki_value = sprintf(qq'"%s"', $bki_value)
+		  if  $bki_value ne '_null_'
+		  and $bki_value !~ /^"([^"])*"$/
+		  and ( length($bki_value) == 0       # Empty string
+				or $bki_value =~ /\s/         # Contains whitespace
+
+				# Quote strings that have special characters
+				# unless they are entirely octals or digits.
+				or (    $bki_value =~ /\W/
+					and $bki_value !~ /^\\\d{3}$/
+					and $bki_value !~ /^-\d*$/)
+
+				# XXX Not needed, but keeps the .bki diff down to a
+				# reasonable size during review.
+				or $attname eq 'oprname'      # Operator names
+				or $atttype eq 'oidvector'    # Multi-element types
+				or $atttype eq 'int2vector'
+				or $atttype =~ /\[\]$/ );
+
+		push @bki_values, $bki_value;
+	}
+	printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values);
 }
 
 # Given a row reference, modify it so that it becomes a valid entry for
@@ -516,8 +573,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 4ae86df..5faaadc 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.dat
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 # Collect arguments
-my $infile;    # pg_proc.h
+my @input_files;
 my $output_path = '';
 my @include_path;
 
@@ -29,7 +29,7 @@ while (@ARGV)
 	my $arg = shift @ARGV;
 	if ($arg !~ /^-/)
 	{
-		$infile = $arg;
+		push @input_files, $arg;
 	}
 	elsif ($arg =~ /^-o/)
 	{
@@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !$infile;
+die "No input files.\n"                                     if !@input_files;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# Read all the input files into internal data structures.
+# Note: We pass data file names as arguments and then look for matching
+# headers to parse the schema from. This is backwards from genbki.pl,
+# but the Makefile dependencies look more sensible this way.
+my %catalogs;
+my %catalog_data;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	$catalogs{$catname} = $catalog;
+	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+}
+
+# Fetch some values for later.
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
-
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
-foreach my $row (@$data)
+foreach my $row (@{ $catalog_data{pg_proc} })
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile,    $tmpext);
 sub usage
 {
 	die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..f71cdc5 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,8 +24,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index d3b50bd..fe66de9 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -457,8 +457,11 @@ EOF
 	$mf =~ s{\\\r?\n}{}g;
 	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @allbki = split /\s+/, $1;
-	foreach my $bki (@allbki)
+	my @bki_srcs = split /\s+/, $1;
+	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
+	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
+	my @bki_data = split /\s+/, $1;
+	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
 		if (IsNewer(
@@ -467,7 +470,7 @@ EOF
 		{
 			print "Generating postgres.bki and schemapg.h...\n";
 			chdir('src/backend/catalog');
-			my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
+			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
 			system(
 "perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
 			);
-- 
2.7.4

v7-0005-Clean-up-header-files-and-update-comments.patchtext/x-patch; charset=US-ASCII; name=v7-0005-Clean-up-header-files-and-update-comments.patchDownload
From b2f4f0c81f7fcb1191c0c9a4cd2e94f427b8067f Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Tue, 23 Jan 2018 16:55:15 +0700
Subject: [PATCH v7] Clean up header files and update comments

---
 src/include/catalog/genbki.h                  |   8 +-
 src/include/catalog/indexing.h                |   2 +-
 src/include/catalog/pg_aggregate.h            |  53 +--
 src/include/catalog/pg_am.h                   |  13 +-
 src/include/catalog/pg_amop.h                 | 372 +----------------
 src/include/catalog/pg_amproc.h               |  61 +--
 src/include/catalog/pg_attrdef.h              |   5 +-
 src/include/catalog/pg_attribute.h            |  19 +-
 src/include/catalog/pg_auth_members.h         |   6 +-
 src/include/catalog/pg_authid.h               |  15 +-
 src/include/catalog/pg_cast.h                 |  97 +----
 src/include/catalog/pg_class.h                |  19 +-
 src/include/catalog/pg_collation.h            |  11 +-
 src/include/catalog/pg_constraint.h           |  13 +-
 src/include/catalog/pg_conversion.h           |  10 +-
 src/include/catalog/pg_database.h             |   5 +-
 src/include/catalog/pg_db_role_setting.h      |  12 +-
 src/include/catalog/pg_default_acl.h          |   9 +-
 src/include/catalog/pg_depend.h               |  30 +-
 src/include/catalog/pg_description.h          |  22 +-
 src/include/catalog/pg_enum.h                 |  13 +-
 src/include/catalog/pg_event_trigger.h        |   5 +-
 src/include/catalog/pg_extension.h            |  10 +-
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +-
 src/include/catalog/pg_foreign_server.h       |   4 +-
 src/include/catalog/pg_foreign_table.h        |   4 +-
 src/include/catalog/pg_index.h                |   5 +-
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  26 +-
 src/include/catalog/pg_language.h             |  10 +-
 src/include/catalog/pg_largeobject.h          |   3 -
 src/include/catalog/pg_largeobject_metadata.h |   5 +-
 src/include/catalog/pg_namespace.h            |  12 +-
 src/include/catalog/pg_opclass.h              |  27 +-
 src/include/catalog/pg_operator.h             | 161 +-------
 src/include/catalog/pg_opfamily.h             |  11 +-
 src/include/catalog/pg_partitioned_table.h    |   5 +-
 src/include/catalog/pg_pltemplate.h           |  12 +-
 src/include/catalog/pg_proc.h                 | 554 +-------------------------
 src/include/catalog/pg_publication.h          |   4 +-
 src/include/catalog/pg_publication_rel.h      |   4 +-
 src/include/catalog/pg_range.h                |  15 +-
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |   5 +-
 src/include/catalog/pg_shdepend.h             |  24 +-
 src/include/catalog/pg_shdescription.h        |  22 +-
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   5 +-
 src/include/catalog/pg_tablespace.h           |   5 +-
 src/include/catalog/pg_transform.h            |   4 +-
 src/include/catalog/pg_trigger.h              |   5 +-
 src/include/catalog/pg_ts_config.h            |  12 +-
 src/include/catalog/pg_ts_config_map.h        |  13 +-
 src/include/catalog/pg_ts_dict.h              |  13 +-
 src/include/catalog/pg_ts_parser.h            |  13 +-
 src/include/catalog/pg_ts_template.h          |  13 +-
 src/include/catalog/pg_type.h                 | 116 +-----
 src/include/catalog/pg_user_mapping.h         |   4 +-
 src/include/catalog/toasting.h                |   2 +-
 59 files changed, 153 insertions(+), 1804 deletions(-)

diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 96ac402..9b769c2 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -3,7 +3,7 @@
  * genbki.h
  *	  Required include file for all POSTGRES catalog header files
  *
- * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
+ * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
  * so that the catalog header files can be read by the C compiler.
  * (These same words are recognized by genbki.pl to build the BKI
  * bootstrap file from these header files.)
@@ -44,10 +44,4 @@
  */
 #undef CATALOG_VARLEN
 
-/* Declarations that provide the initial content of a catalog */
-/* In C, these need to expand into some harmless, repeatable declaration */
-#define DATA(x)   extern int no_such_variable
-#define DESCR(x)  extern int no_such_variable
-#define SHDESCR(x) extern int no_such_variable
-
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 0bb8754..fb9dd23 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -43,7 +43,7 @@ extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
 /*
  * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
 #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 0291032..4f9edf9 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -2,7 +2,6 @@
  *
  * pg_aggregate.h
  *	  definition of the system "aggregate" relation (pg_aggregate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_aggregate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -144,52 +143,4 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
-
-/* ----------------
- * initial contents of pg_aggregate
- * ---------------
- */
-
-/* avg */
-
-/* sum */
-
-/* max */
-
-/* min */
-
-/* count */
-
-/* var_pop */
-
-/* var_samp */
-
-/* variance: historical Postgres syntax for var_samp */
-
-/* stddev_pop */
-
-/* stddev_samp */
-
-/* stddev: historical Postgres syntax for stddev_samp */
-
-/* SQL2003 binary regression aggregates */
-
-/* boolean-and and boolean-or */
-
-/* bitwise integer */
-
-/* xml */
-
-/* array */
-
-/* text */
-
-/* bytea */
-
-/* json */
-
-/* jsonb */
-
-/* ordered-set and hypothetical-set aggregates */
-
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index b85c653..fe59a29 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -2,7 +2,6 @@
  *
  * pg_am.h
  *	  definition of the system "access method" relation (pg_am)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_am.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,11 +56,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-/* ----------------
- *		initial contents of pg_am
- * ----------------
- */
-
 #define BTREE_AM_OID 403
 #define HASH_AM_OID 405
 #define GIST_AM_OID 783
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 4038d17..e978c32 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -2,7 +2,6 @@
  *
  * pg_amop.h
  *	  definition of the system "amop" relation (pg_amop)
- *	  along with the relation's initial contents.
  *
  * The amop table identifies the operators associated with each index operator
  * family and operator class (classes are subsets of families).  An associated
@@ -36,8 +35,8 @@
  * src/include/catalog/pg_amop.h
  *
  * NOTES
- *	 the genbki.pl script reads this file and generates .bki
- *	 information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -90,371 +89,4 @@ typedef FormData_pg_amop *Form_pg_amop;
 #define Anum_pg_amop_amopmethod			7
 #define Anum_pg_amop_amopsortfamily		8
 
-/* ----------------
- *		initial contents of pg_amop
- * ----------------
- */
-
-/*
- *	btree integer_ops
- */
-
-/* default operators int2 */
-/* crosstype operators int24 */
-/* crosstype operators int28 */
-/* default operators int4 */
-/* crosstype operators int42 */
-/* crosstype operators int48 */
-/* default operators int8 */
-/* crosstype operators int82 */
-/* crosstype operators int84 */
-
-/*
- *	btree oid_ops
- */
-
-
-/*
- * btree tid_ops
- */
-
-
-/*
- *	btree oidvector_ops
- */
-
-
-/*
- *	btree float_ops
- */
-
-/* default operators float4 */
-/* crosstype operators float48 */
-/* default operators float8 */
-/* crosstype operators float84 */
-
-/*
- *	btree char_ops
- */
-
-
-/*
- *	btree name_ops
- */
-
-
-/*
- *	btree text_ops
- */
-
-
-/*
- *	btree bpchar_ops
- */
-
-
-/*
- *	btree bytea_ops
- */
-
-
-/*
- *	btree abstime_ops
- */
-
-
-/*
- *	btree datetime_ops
- */
-
-/* default operators date */
-/* crosstype operators vs timestamp */
-/* crosstype operators vs timestamptz */
-/* default operators timestamp */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamptz */
-/* default operators timestamptz */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamp */
-
-/*
- *	btree time_ops
- */
-
-
-/*
- *	btree timetz_ops
- */
-
-
-/*
- *	btree interval_ops
- */
-
-
-/*
- *	btree macaddr
- */
-
-
-/*
- *	btree macaddr8
- */
-
-
-/*
- *	btree network
- */
-
-
-/*
- *	btree numeric
- */
-
-
-/*
- *	btree bool
- */
-
-
-/*
- *	btree bit
- */
-
-
-/*
- *	btree varbit
- */
-
-
-/*
- *	btree text pattern
- */
-
-
-/*
- *	btree bpchar pattern
- */
-
-
-/*
- *	btree money_ops
- */
-
-
-/*
- *	btree reltime_ops
- */
-
-
-/*
- *	btree tinterval_ops
- */
-
-
-/*
- *	btree array_ops
- */
-
-
-/*
- *	btree record_ops
- */
-
-
-/*
- *	btree record_image_ops
- */
-
-
-/*
- * btree uuid_ops
- */
-
-
-/*
- * btree pg_lsn_ops
- */
-
-
-/*
- *	hash index _ops
- */
-
-/* bpchar_ops */
-/* char_ops */
-/* date_ops */
-/* float_ops */
-/* network_ops */
-/* integer_ops */
-/* interval_ops */
-/* macaddr_ops */
-/* macaddr8_ops */
-/* name_ops */
-/* oid_ops */
-/* oidvector_ops */
-/* text_ops */
-/* time_ops */
-/* timestamptz_ops */
-/* timetz_ops */
-/* timestamp_ops */
-/* bool_ops */
-/* bytea_ops */
-/* xid_ops */
-/* cid_ops */
-/* abstime_ops */
-/* reltime_ops */
-/* text_pattern_ops */
-/* bpchar_pattern_ops */
-/* aclitem_ops */
-/* uuid_ops */
-/* pg_lsn_ops */
-/* numeric_ops */
-/* array_ops */
-
-
-/*
- *	gist box_ops
- */
-
-
-/*
- * gist point_ops
- */
-
-
-/*
- *	gist poly_ops (supports polygons)
- */
-
-
-/*
- *	gist circle_ops
- */
-
-
-/*
- * gin array_ops
- */
-
-/*
- * btree enum_ops
- */
-
-/*
- * hash enum_ops
- */
-
-/*
- * btree tsvector_ops
- */
-
-/*
- * GiST tsvector_ops
- */
-
-/*
- * GIN tsvector_ops
- */
-
-/*
- * btree tsquery_ops
- */
-
-/*
- * GiST tsquery_ops
- */
-
-/*
- * btree range_ops
- */
-
-/*
- * hash range_ops
- */
-
-/*
- * GiST range_ops
- */
-
-/*
- * SP-GiST quad_point_ops
- */
-
-/*
- * SP-GiST kd_point_ops
- */
-
-/*
- * SP-GiST text_ops
- */
-
-/*
- * btree jsonb_ops
- */
-
-/*
- * hash jsonb_ops
- */
-
-/*
- * GIN jsonb_ops
- */
-
-/*
- * GIN jsonb_path_ops
- */
-
-/*
- * SP-GiST range_ops
- */
-
-/*
- * SP-GiST box_ops
- */
-
-/*
- * SP-GiST poly_ops (supports polygons)
- */
-
-/*
- * GiST inet_ops
- */
-
-/*
- * SP-GiST inet_ops
- */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer */
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float (float4, float8) */
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-/* we could, but choose not to, supply entries for strategies 13 and 14 */
-
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 15edd86..83ce03b 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -2,7 +2,6 @@
  *
  * pg_amproc.h
  *	  definition of the system "amproc" relation (pg_amproc)
- *	  along with the relation's initial contents.
  *
  * The amproc table identifies support procedures associated with index
  * operator families and classes.  These procedures can't be listed in pg_amop
@@ -25,8 +24,8 @@
  * src/include/catalog/pg_amproc.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,60 +68,4 @@ typedef FormData_pg_amproc *Form_pg_amproc;
 #define Anum_pg_amproc_amprocnum		4
 #define Anum_pg_amproc_amproc			5
 
-/* ----------------
- *		initial contents of pg_amproc
- * ----------------
- */
-
-/* btree */
-
-
-/* hash */
-
-
-/* gist */
-
-
-/* gin */
-
-/* sp-gist */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer: int2, int4, int8 */
-
-
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float */
-
-
-
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 8a8b8ca..3aab48d 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -2,7 +2,6 @@
  *
  * pg_attrdef.h
  *	  definition of the system "attribute defaults" relation (pg_attrdef)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_attrdef.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 8159383..3c78871 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -2,7 +2,10 @@
  *
  * pg_attribute.h
  *	  definition of the system "attribute" relation (pg_attribute)
- *	  along with the relation's initial contents.
+ *
+ * The initial contents of pg_attribute are generated at compile time by
+ * genbki.pl, so there is no pg_attribute.dat file.  Only "bootstrapped"
+ * relations need be included.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +14,8 @@
  * src/include/catalog/pg_attribute.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -215,16 +218,6 @@ typedef FormData_pg_attribute *Form_pg_attribute;
 #define Anum_pg_attribute_attoptions	21
 #define Anum_pg_attribute_attfdwoptions 22
 
-
-/* ----------------
- *		initial contents of pg_attribute
- *
- * The initial contents of pg_attribute are generated at compile time by
- * genbki.pl.  Only "bootstrapped" relations need be included.
- * ----------------
- */
-
-
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index ae3c14a..a702dff 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -2,7 +2,7 @@
  *
  * pg_auth_members.h
  *	  definition of the system "authorization identifier members" relation
- *	  (pg_auth_members) along with the relation's initial contents.
+ *	  (pg_auth_members).
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +11,8 @@
  * src/include/catalog/pg_auth_members.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b5f6602..b101e30 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -2,7 +2,6 @@
  *
  * pg_authid.h
  *	  definition of the system "authorization identifier" relation (pg_authid)
- *	  along with the relation's initial contents.
  *
  *	  pg_shadow and pg_group are now publicly accessible views on pg_authid.
  *
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_authid.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -88,16 +87,6 @@ typedef FormData_pg_authid *Form_pg_authid;
 #define Anum_pg_authid_rolpassword		10
 #define Anum_pg_authid_rolvaliduntil	11
 
-/* ----------------
- *		initial contents of pg_authid
- *
- * The uppercase quantities will be replaced at initdb time with
- * user choices.
- *
- * The C code typically refers to these roles using the #define symbols,
- * so be sure to keep those in sync with the DATA lines.
- * ----------------
- */
 #define BOOTSTRAP_SUPERUSERID			10
 #define DEFAULT_ROLE_MONITOR		3373
 #define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 597079c..1930d4b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -2,7 +2,6 @@
  *
  * pg_cast.h
  *	  definition of the system "type casts" relation (pg_cast)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 8.0, pg_cast describes not only type coercion functions
  * but also length coercion functions.
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_cast.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,96 +80,4 @@ typedef enum CoercionMethod
 #define Anum_pg_cast_castcontext	4
 #define Anum_pg_cast_castmethod		5
 
-/* ----------------
- *		initial contents of pg_cast
- *
- * Note: this table has OIDs, but we don't bother to assign them manually,
- * since nothing needs to know the specific OID of any built-in cast.
- * ----------------
- */
-
-/*
- * Numeric category: implicit casts are allowed in the direction
- * int2->int4->int8->numeric->float4->float8, while casts in the
- * reverse direction are assignment-only.
- */
-
-/* Allow explicit coercions between int4 and bool */
-
-/*
- * OID category: allow implicit conversion from any integral type (including
- * int8, to support OID literals > 2G) to OID, as well as assignment coercion
- * from OID to int4 or int8.  Similarly for each OID-alias type.  Also allow
- * implicit coercions between OID and each OID-alias type, as well as
- * regproc<->regprocedure and regoper<->regoperator.  (Other coercions
- * between alias types must pass through OID.)	Lastly, there are implicit
- * casts from text and varchar to regclass, which exist mainly to support
- * legacy forms of nextval() and related functions.
- */
-
-/*
- * String category
- */
-
-/* Allow explicit coercions between int4 and "char" */
-
-/* pg_node_tree can be coerced to, but not from, text */
-
-/* pg_ndistinct can be coerced to, but not from, bytea and text */
-
-/* pg_dependencies can be coerced to, but not from, bytea and text */
-
-/*
- * Datetime category
- */
-/* Cross-category casts between int4 and abstime, reltime */
-
-/*
- * Geometric category
- */
-
-/*
- * MAC address category
- */
-
-/*
- * INET category
- */
-
-/*
- * BitString category
- */
-/* Cross-category casts between bit and int4, int8 */
-
-/*
- * Cross-category casts to and from TEXT
- *
- * We need entries here only for a few specialized cases where the behavior
- * of the cast function differs from the datatype's I/O functions.  Otherwise,
- * parse_coerce.c will generate CoerceViaIO operations without any prompting.
- *
- * Note that the castcontext values specified here should be no stronger than
- * parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
- * behavior will ensue when the automatic cast is applied instead of the
- * pg_cast entry!
- */
-
-/*
- * Cross-category casts to and from VARCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Cross-category casts to and from BPCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Length-coercion functions
- */
-
-/* json to/from jsonb */
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 99bda41..7bc09bb 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -2,7 +2,6 @@
  *
  * pg_class.h
  *	  definition of the system "relation" relation (pg_class)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_class.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -134,20 +133,6 @@ typedef FormData_pg_class *Form_pg_class;
 #define Anum_pg_class_reloptions			32
 #define Anum_pg_class_relpartbound			33
 
-/* ----------------
- *		initial contents of pg_class
- *
- * NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
- * the OIDs listed here match those given in their CATALOG macros, and that
- * the relnatts values are correct.
- * ----------------
- */
-
-/*
- * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
- * similarly, "1" in relminmxid stands for FirstMultiXactId
- */
-
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index beef6b5..50cbe1e 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -2,7 +2,6 @@
  *
  * pg_collation.h
  *	  definition of the system "collation" relation (pg_collation)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -12,8 +11,8 @@
  *		src/include/catalog/pg_collation.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,16 +64,10 @@ typedef FormData_pg_collation *Form_pg_collation;
 #define Anum_pg_collation_collctype		7
 #define Anum_pg_collation_collversion	8
 
-/* ----------------
- *		initial contents of pg_collation
- * ----------------
- */
-
 #define DEFAULT_COLLATION_OID	100
 #define C_COLLATION_OID			950
 #define POSIX_COLLATION_OID		951
 
-
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 8fca86d..41d97d4 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -2,7 +2,6 @@
  *
  * pg_constraint.h
  *	  definition of the system "constraint" relation (pg_constraint)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_constraint.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -176,14 +175,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
 #define Anum_pg_constraint_conbin			23
 #define Anum_pg_constraint_consrc			24
 
-/* ----------------
- *		initial contents of pg_constraint
- * ----------------
- */
-
-/* nothing, at present */
-
-
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
 #define CONSTRAINT_FOREIGN			'f'
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 29f3c9d..88098fa 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -2,7 +2,6 @@
  *
  * pg_conversion.h
  *	  definition of the system "conversion" relation (pg_conversion)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_conversion.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,9 +68,4 @@ typedef FormData_pg_conversion *Form_pg_conversion;
 #define Anum_pg_conversion_conproc		6
 #define Anum_pg_conversion_condefault	7
 
-/* ----------------
- * initial contents of pg_conversion
- * ---------------
- */
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index bbf131a..b7972fa 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -2,7 +2,6 @@
  *
  * pg_database.h
  *	  definition of the system "database" relation (pg_database)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_database.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 86cc17d..09546bd 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_db_role_setting.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +50,6 @@ typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 #define Anum_pg_db_role_setting_setrole			2
 #define Anum_pg_db_role_setting_setconfig		3
 
-/* ----------------
- *		initial contents of pg_db_role_setting are NOTHING
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 11b3060..7778276 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -10,8 +10,8 @@
  * src/include/catalog/pg_default_acl.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,11 +56,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define Anum_pg_default_acl_defaclobjtype		3
 #define Anum_pg_default_acl_defaclacl			4
 
-/* ----------------
- *		pg_default_acl has no initial contents
- * ----------------
- */
-
 /*
  * Types of objects for which the user is allowed to specify default
  * permissions through pg_default_acl.  These codes are used in the
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index be3867b..7c60e63 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -2,7 +2,18 @@
  *
  * pg_depend.h
  *	  definition of the system "dependency" relation (pg_depend)
- *	  along with the relation's initial contents.
+ *
+ * pg_depend has no preloaded contents, so there is no pg_depend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_depend;
+ * for example, there's not much value in creating an explicit dependency
+ * from an attribute to its relation.  Usually we make a dependency for
+ * cases where the relationship is conditional rather than essential
+ * (for example, not all triggers are dependent on constraints, but all
+ * attributes are dependent on relations) or where the dependency is not
+ * convenient to find from the contents of other catalogs.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +22,8 @@
  * src/include/catalog/pg_depend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -74,17 +85,4 @@ typedef FormData_pg_depend *Form_pg_depend;
 #define Anum_pg_depend_deptype		7
 
 
-/*
- * pg_depend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_depend;
- * for example, there's not much value in creating an explicit dependency
- * from an attribute to its relation.  Usually we make a dependency for
- * cases where the relationship is conditional rather than essential
- * (for example, not all triggers are dependent on constraints, but all
- * attributes are dependent on relations) or where the dependency is not
- * convenient to find from the contents of other catalogs.
- */
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index d291000..71eed4e 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -3,6 +3,10 @@
  * pg_description.h
  *	  definition of the system "description" relation (pg_description)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_description.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a function is identified by the OID of its pg_proc row
@@ -25,11 +29,8 @@
  * src/include/catalog/pg_description.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -73,15 +74,4 @@ typedef FormData_pg_description * Form_pg_description;
 #define Anum_pg_description_objsubid	3
 #define Anum_pg_description_description 4
 
-/* ----------------
- *		initial contents of pg_description
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index a65a8f4..3327688 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -2,7 +2,6 @@
  *
  * pg_enum.h
  *	  definition of the system "enum" relation (pg_enum)
- *	  along with the relation's initial contents.
  *
  *
  * Copyright (c) 2006-2018, PostgreSQL Global Development Group
@@ -10,11 +9,8 @@
  * src/include/catalog/pg_enum.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -54,11 +50,6 @@ typedef FormData_pg_enum *Form_pg_enum;
 #define Anum_pg_enum_enumsortorder		2
 #define Anum_pg_enum_enumlabel			3
 
-/* ----------------
- *		pg_enum has no initial contents
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index e03c819..20e7e38 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_event_trigger.h
  *	  definition of the system "event trigger" relation (pg_event_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_event_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index 9ca6ca7..c2d528f 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -2,7 +2,6 @@
  *
  * pg_extension.h
  *	  definition of the system "extension" relation (pg_extension)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_extension.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,9 +63,4 @@ typedef FormData_pg_extension *Form_pg_extension;
 #define Anum_pg_extension_extconfig			6
 #define Anum_pg_extension_extcondition		7
 
-/* ----------------
- *		pg_extension has no initial contents
- * ----------------
- */
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index dd00586..6cf321d 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -2,7 +2,6 @@
  *
  * pg_foreign_data_wrapper.h
  *	  definition of the system "foreign-data wrapper" relation (pg_foreign_data_wrapper)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_foreign_data_wrapper.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index a8c9e87..f909b26 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_server.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 210e77b..9bee001 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 057a9f7..ef0dea6 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -2,7 +2,6 @@
  *
  * pg_index.h
  *	  definition of the system "index" relation (pg_index)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_index.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3c572f4..3af1647 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -2,7 +2,6 @@
  *
  * pg_inherits.h
  *	  definition of the system "inherits" relation (pg_inherits)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_inherits.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -51,9 +50,4 @@ typedef FormData_pg_inherits *Form_pg_inherits;
 #define Anum_pg_inherits_inhparent		2
 #define Anum_pg_inherits_inhseqno		3
 
-/* ----------------
- *		pg_inherits has no initial contents
- * ----------------
- */
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 6ea005f..be26d2f 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -15,17 +15,20 @@
  * for a table itself, so that it is distinct from any column privilege.
  * Currently, objsubid is unused and zero for all other kinds of objects.
  *
+ * Because the contents of this table depend on what is done with the other
+ * objects in the system (and, in particular, may change due to changes in
+ * system_views.sql), there is no pg_init_privs.dat file. The initial contents
+ * are loaded near the end of initdb.
+ *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_init_privs.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -84,17 +87,4 @@ typedef enum InitPrivsType
 	INITPRIVS_EXTENSION = 'e'
 } InitPrivsType;
 
-/* ----------------
- *		initial contents of pg_init_privs
- * ----------------
- */
-
-/*
- *	Because the contents of this table depend on what is done with the other
- *	objects in the system (and, in particular, may change due to changes is
- *	system_views.sql), there is no initialization here.
- *
- *	The initial contents are loaded near the end of initdb.
- */
-
 #endif							/* PG_INIT_PRIVS_H */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 614ca67..5f82158 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -2,7 +2,6 @@
  *
  * pg_language.h
  *	  definition of the system "language" relation (pg_language)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_language.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,11 +63,6 @@ typedef FormData_pg_language *Form_pg_language;
 #define Anum_pg_language_lanvalidator	7
 #define Anum_pg_language_lanacl			8
 
-/* ----------------
- *		initial contents of pg_language
- * ----------------
- */
-
 #define INTERNALlanguageId 12
 #define ClanguageId 13
 #define SQLlanguageId 14
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 0a15649..1857ca4 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject.h
  *	  definition of the system "largeobject" relation (pg_largeobject)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,6 @@
  * src/include/catalog/pg_largeobject.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 4535b51..0cf7bcd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject_metadata.h
  *	  definition of the system "largeobject_metadata" relation (pg_largeobject_metadata)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_largeobject_metadata.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 5b6f9eb..19b559f9 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -2,7 +2,6 @@
  *
  * pg_namespace.h
  *	  definition of the system "namespace" relation (pg_namespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_namespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,17 +59,10 @@ typedef FormData_pg_namespace *Form_pg_namespace;
 #define Anum_pg_namespace_nspowner		2
 #define Anum_pg_namespace_nspacl		3
 
-
-/* ----------------
- * initial contents of pg_namespace
- * ---------------
- */
-
 #define PG_CATALOG_NAMESPACE 11
 #define PG_TOAST_NAMESPACE 99
 #define PG_PUBLIC_NAMESPACE 2200
 
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 5cff871..b10ceb9 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -2,7 +2,6 @@
  *
  * pg_opclass.h
  *	  definition of the system "opclass" relation (pg_opclass)
- *	  along with the relation's initial contents.
  *
  * The primary key for this table is <opcmethod, opcname, opcnamespace> ---
  * that is, there is a row for each valid combination of opclass name and
@@ -31,8 +30,8 @@
  * src/include/catalog/pg_opclass.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,37 +80,15 @@ typedef FormData_pg_opclass *Form_pg_opclass;
 #define Anum_pg_opclass_opcdefault		7
 #define Anum_pg_opclass_opckeytype		8
 
-/* ----------------
- *		initial contents of pg_opclass
- *
- * Note: we hard-wire an OID only for a few entries that have to be explicitly
- * referenced in the C code or in built-in catalog entries.  The rest get OIDs
- * assigned on-the-fly during initdb.
- * ----------------
- */
-
 #define DATE_BTREE_OPS_OID 3122
 #define FLOAT8_BTREE_OPS_OID 3123
 #define INT2_BTREE_OPS_OID 1979
 #define INT4_BTREE_OPS_OID 1978
 #define INT8_BTREE_OPS_OID 3124
-/*
- * Here's an ugly little hack to save space in the system catalog indexes.
- * btree doesn't ordinarily allow a storage type different from input type;
- * but cstring and name are the same thing except for trailing padding,
- * and we can safely omit that within an index entry.  So we declare the
- * btree opclass for name as using cstring storage type.
- */
 #define NUMERIC_BTREE_OPS_OID 3125
 #define OID_BTREE_OPS_OID 1981
 #define TEXT_BTREE_OPS_OID 3126
 #define TIMESTAMPTZ_BTREE_OPS_OID 3127
 #define TIMESTAMP_BTREE_OPS_OID 3128
 
-/* BRIN operator classes */
-/* no brin opclass for bool */
-/* no brin opclass for record, anyarray */
-/* no brin opclass for enum, tsvector, tsquery, jsonb */
-/* no brin opclass for the geometric types except box */
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index d9f303b..cbe6884 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -2,7 +2,6 @@
  *
  * pg_operator.h
  *	  definition of the system "operator" relation (pg_operator)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_operator.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,195 +73,42 @@ typedef FormData_pg_operator *Form_pg_operator;
 #define Anum_pg_operator_oprrest		13
 #define Anum_pg_operator_oprjoin		14
 
-/* ----------------
- *		initial contents of pg_operator
- * ----------------
- */
-
-/*
- * Note: every entry in pg_operator.h is expected to have a DESCR() comment.
- * If the operator is a deprecated equivalent of some other entry, be sure
- * to comment it as such so that initdb doesn't think it's a preferred name
- * for the underlying function.
- */
-
-
 #define BooleanNotEqualOperator   85
 #define BooleanEqualOperator   91
-
 #define Int4EqualOperator	96
 #define Int4LessOperator	97
 #define TextEqualOperator	98
-
-
-
 #define TIDEqualOperator   387
 #define TIDLessOperator    2799
-
 #define Int8LessOperator	412
-
-
-
-
-
-
-
-
 #define OID_NAME_REGEXEQ_OP		639
 #define OID_TEXT_REGEXEQ_OP		641
-
-
 #define Float8LessOperator	672
-
-
-
-
-
-
-/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-
-
-/* additional operators for geometric types - thomas 1997-07-09 */
-
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
 #define OID_BPCHAR_REGEXEQ_OP		1055
-
-/* generic array comparison operators */
 #define ARRAY_EQ_OP 1070
 #define ARRAY_LT_OP 1072
 #define ARRAY_GT_OP 1073
-
-/* date operators */
-
-/* time operators */
-
-/* timetz operators */
-
-/* float48 operators */
-
-/* float84 operators */
-
-
-/* LIKE hacks by Keith Parks. */
 #define OID_NAME_LIKE_OP		1207
 #define OID_TEXT_LIKE_OP		1209
 #define OID_BPCHAR_LIKE_OP		1211
-
-/* case-insensitive regex hacks */
 #define OID_NAME_ICREGEXEQ_OP		1226
 #define OID_TEXT_ICREGEXEQ_OP		1228
 #define OID_BPCHAR_ICREGEXEQ_OP		1234
-
-/* timestamptz operators */
-
-/* interval operators */
-
-
-
-
-/* additional geometric operators - thomas 97/04/18 */
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
-
-
-
-
-
-
-/* MACADDR type */
-
-
-/* MACADDR8 type */
-
-
-/* INET type (these also support CIDR via implicit cast) */
 #define OID_INET_SUB_OP			931
 #define OID_INET_SUBEQ_OP		932
 #define OID_INET_SUP_OP			933
 #define OID_INET_SUPEQ_OP		934
 #define OID_INET_OVERLAP_OP		3552
-
-
-/* case-insensitive LIKE hacks */
 #define OID_NAME_ICLIKE_OP		1625
 #define OID_TEXT_ICLIKE_OP		1627
 #define OID_BPCHAR_ICLIKE_OP	1629
-
-/* NUMERIC type - OID's 1700-1799 */
-
-
-
-
-
-
-
-
-
-
-
-/* bytea operators */
-
 #define OID_BYTEA_LIKE_OP		2016
-
-/* timestamp operators */
-
-/* character-by-character (not collation order) comparison operators for character types */
-
-
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* formerly-missing interval + datetime operators */
-
-/* new operators for Y-direction rtree opfamilies */
-
-/* overlap/contains/contained for arrays */
 #define OID_ARRAY_OVERLAP_OP	2750
 #define OID_ARRAY_CONTAINS_OP	2751
 #define OID_ARRAY_CONTAINED_OP	2752
-
-/* capturing operators to preserve pre-8.3 behavior of text concatenation */
-
-/* obsolete names for contains/contained-by operators; remove these someday */
-
-/* uuid operators */
-
-/* pg_lsn operators */
-
-/* enum operators */
-
-/*
- * tsearch operations
- */
-/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */
-
-/* generic record comparison operators */
 #define RECORD_EQ_OP 2988
 #define RECORD_LT_OP 2990
 #define RECORD_GT_OP 2991
-
-/* byte-oriented tests for identical rows and fast sorting */
-
-/* generic range type operators */
 #define OID_RANGE_LESS_OP 3884
 #define OID_RANGE_LESS_EQUAL_OP 3885
 #define OID_RANGE_GREATER_EQUAL_OP 3886
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 86f86e3..e9d8d3d 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -2,7 +2,6 @@
  *
  * pg_opfamily.h
  *	  definition of the system "opfamily" relation (pg_opfamily)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_opfamily.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +52,6 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define Anum_pg_opfamily_opfnamespace	3
 #define Anum_pg_opfamily_opfowner		4
 
-/* ----------------
- *		initial contents of pg_opfamily
- * ----------------
- */
-
 #define BOOL_BTREE_FAM_OID 424
 #define BPCHAR_BTREE_FAM_OID 426
 #define BYTEA_BTREE_FAM_OID 428
@@ -71,5 +65,4 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define BOOL_HASH_FAM_OID 2222
 #define TEXT_SPGIST_FAM_OID 4017
 
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 9dc66f4..a8bda00 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -2,7 +2,6 @@
  *
  * pg_partitioned_table.h
  *	  definition of the system "partitioned table" relation
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -10,8 +9,8 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 8995fe9..b1d9ece 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -2,7 +2,6 @@
  *
  * pg_pltemplate.h
  *	  definition of the system "PL template" relation (pg_pltemplate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_pltemplate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,11 +64,4 @@ typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 #define Anum_pg_pltemplate_tmpllibrary		7
 #define Anum_pg_pltemplate_tmplacl			8
 
-
-/* ----------------
- *		initial contents of pg_pltemplate
- * ----------------
- */
-
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index d54a498..80914dc 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -2,7 +2,6 @@
  *
  * pg_proc.h
  *	  definition of the system "procedure" relation (pg_proc)
- *	  along with the relation's initial contents.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -10,13 +9,8 @@
  * src/include/catalog/pg_proc.h
  *
  * NOTES
- *	  The script catalog/genbki.pl reads this file and generates .bki
- *	  information from the DATA() statements.  utils/Gen_fmgrtab.pl
- *	  generates fmgroids.h and fmgrtab.c the same way.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
- *	  XXX (eg. #if 0 #endif won't do what you think)
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -117,550 +111,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define Anum_pg_proc_proconfig			28
 #define Anum_pg_proc_proacl				29
 
-/* ----------------
- *		initial contents of pg_proc
- * ----------------
- */
-
-/*
- * Note: every entry in pg_proc.h is expected to have a DESCR() comment,
- * except for functions that implement pg_operator.h operators and don't
- * have a good reason to be called directly rather than via the operator.
- * (If you do expect such a function to be used directly, you should
- * duplicate the operator's comment.)  initdb will supply suitable default
- * comments for functions referenced by pg_operator.
- *
- * Try to follow the style of existing functions' comments.
- * Some recommended conventions:
- *		"I/O" for typinput, typoutput, typreceive, typsend functions
- *		"I/O typmod" for typmodin, typmodout functions
- *		"aggregate transition function" for aggtransfn functions, unless
- *					they are reasonably useful in their own right
- *		"aggregate final function" for aggfinalfn functions (likewise)
- *		"convert srctypename to desttypename" for cast functions
- *		"less-equal-greater" for B-tree comparison functions
- */
-
-/* keep the following ordered by OID so that later changes can be made easier */
-
-/* OIDS 1 - 99 */
-
-
-
-
-
-/* OIDS 100 - 199 */
-
-
-
-
-
-
-
-/* OIDS 200 - 299 */
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 300 - 399 */
-
-
-
-/* Index access method handlers */
-
-
-
-
-
-
-/* OIDS 400 - 499 */
-
-
-
-
-
-
-
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
-
-
-
-
-
-
-
-
-/* OIDS 700 - 799 */
-
-
-
-
-
-
-
-
-
-
-/* OIDS 800 - 899 */
-
-
-
-
-
-
-
-
-
-/* OIDS 900 - 999 */
-
-
-
-
-
-
-
-
-
-/* OIDS 1000 - 1999 */
-
-
-
-/* OIDS 1100 - 1199 */
-
-
-
-
-
-
-/* OIDS 1200 - 1299 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1300 - 1399 */
-
-
-
-
-
-
-
-
-
-/*
- * This form of obj_description is now deprecated, since it will fail if
- * OIDs are not unique across system catalogs.  Use the other form instead.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1400 - 1499 */
-
-
-
-
-
-
-
-
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - thomas 97/04/20
- */
-
-
-
-
-
-
-
-/* OIDS 1500 - 1599 */
-
-
-
-
-
-
-
-/* SEQUENCE functions */
-
-
-
-
-/* OIDS 1600 - 1699 */
-
-
-
-
-
-
-
-
-
-
-
-/* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
-
-
-/* for character set encoding support */
-
-/* return database encoding name */
-
-/* return client encoding name i.e. session encoding */
-
-
-
-
-
-
-
-
-
-/* System-view support functions */
-
-
-
-
-
-
-/* Deferrable unique constraint trigger */
-
-/* Generic referential integrity constraint triggers */
-
-
-/* avoid the C names bitand and bitor, since they are C++ keywords */
-
-
-
-
-/* for macaddr type support */
-
-
-
-/* for macaddr8 type support */
-
-
-
-/* for inet type support */
-
-/* for cidr type support */
-
-/* these are used for both inet and cidr */
-
-/* inet/cidr functions */
-
-
-
-/* GiST support for inet and cidr */
-
-/* SP-GiST support for inet and cidr */
-
-/* Selectivity estimation for inet and cidr */
-
-
-
-
-
-/* OID's 1700 - 1799 NUMERIC data type */
-
-
-
-/* formatting */
-
-
-
-
-
-/* Selectivity estimators for LIKE and related operators */
-
-/* Aggregate-related functions */
-
-
-
-/* To ASCII conversion */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Aggregates (moved here from pg_aggregate for 7.3) */
-
-
-
-
-
-/* count has two forms: count(any) and count(*) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* tablesample method handlers */
-
-/* cryptographic */
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* send/receive functions */
-
-
-/* System-view support functions with pretty-print option */
-
-/* asynchronous notifications */
-
-/* non-persistent series generator */
-
-/* boolean aggregates */
-/* ANY, SOME? These names conflict with subquery operators. See doc. */
-
-/* bitwise integer aggregates */
-
-/* formerly-missing interval + datetime operators */
-
-
-
-/* start time function */
-/* config reload time function */
-
-/* new functions for Y-direction rtree opclasses */
-
-/* support functions for GiST r-tree emulation */
-
-/* GIN array support */
-
-/* overlap/contains/contained */
-
-/* BRIN minmax */
-
-/* BRIN inclusion */
-
-/* userlock replacements */
-
-/* XML support */
-
-
-
-
-
-
-
-/* json */
-
-
-/* uuid */
-
-/* pg_lsn */
-
-/* enum related procs */
-
-/* text search stuff */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* jsonb */
-
-
-/* txid */
-
-/* record comparison using normal comparison rules */
-
-/* record comparison using raw byte images */
-
-/* Extensions */
-
-/* SQL-spec window functions */
-
-/* functions for range types */
-
-
-
-/* date, time, timestamp constructors */
-
-/* spgist opclasses */
-
-
-
-
-
-
-/* replication slots */
-
-/* event triggers */
-
-/* generic transition functions for ordered-set aggregates */
-
-/* inverse distribution aggregates (and their support functions) */
-
-/* hypothetical-set aggregates (and their support functions) */
-
-/* pg_upgrade support */
-
-/* replication/origin.h */
-
-
-
-
-
-
-
-
-
-
-
-
-/* publications */
-
-/* rls */
-
-/* pg_config */
-
-/* pg_controldata related functions */
-
-
-
-
-/* collation management functions */
-
-
-/* system management/monitoring related functions */
-
-/* hash partitioning constraint function */
-
 /*
  * Symbolic values for provolatile column: these indicate whether the result
  * of a function is dependent *only* on the values of its explicit arguments,
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 7bdc634..7016197 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 033b600..661466f 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication_rel.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index bbd28f2..b7113bf 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -2,7 +2,6 @@
  *
  * pg_range.h
  *	  definition of the system "range" relation (pg_range)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_range.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,13 +56,6 @@ typedef FormData_pg_range *Form_pg_range;
 #define Anum_pg_range_rngcanonical		5
 #define Anum_pg_range_rngsubdiff		6
 
-
-/* ----------------
- *		initial contents of pg_range
- * ----------------
- */
-
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 9656179..0c5a05e 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_replication_origin.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -62,9 +62,4 @@ typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 #define Anum_pg_replication_origin_roident			1
 #define Anum_pg_replication_origin_roname			2
 
-/* ----------------
- *		pg_replication_origin has no initial contents
- * ----------------
- */
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index 81f2b19..a310ecb 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -2,7 +2,6 @@
  *
  * pg_rewrite.h
  *	  definition of the system "rewrite-rule" relation (pg_rewrite)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 7.3, the primary key for this table is <ev_class, rulename>
  * --- ie, rule names are only unique among the rules of a given table.
@@ -14,8 +13,8 @@
  * src/include/catalog/pg_rewrite.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index ae40377..17ac34a 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -2,8 +2,16 @@
  *
  * pg_shdepend.h
  *	  definition of the system "shared dependency" relation (pg_shdepend)
- *	  along with the relation's initial contents.
  *
+ * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
+ * for example, there's not much value in creating an explicit dependency
+ * from a relation to its database.  Currently, only dependencies on roles
+ * are explicitly stored in pg_shdepend.
+
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -11,8 +19,8 @@
  * src/include/catalog/pg_shdepend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,14 +85,4 @@ typedef FormData_pg_shdepend *Form_pg_shdepend;
 #define Anum_pg_shdepend_deptype	7
 
 
-/*
- * pg_shdepend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
- * for example, there's not much value in creating an explicit dependency
- * from a relation to its database.  Currently, only dependencies on roles
- * are explicitly stored in pg_shdepend.
- */
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index d4ec616..c0ecc0c 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -4,6 +4,10 @@
  *	  definition of the system "shared description" relation
  *	  (pg_shdescription)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_shdescription.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a database is identified by the OID of its pg_database row
@@ -18,11 +22,8 @@
  * src/include/catalog/pg_shdescription.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,15 +65,4 @@ typedef FormData_pg_shdescription * Form_pg_shdescription;
 #define Anum_pg_shdescription_classoid	2
 #define Anum_pg_shdescription_description 3
 
-/* ----------------
- *		initial contents of pg_shdescription
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index a5c85fe..8ef2e55 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic.h
  *	  definition of the system "statistic" relation (pg_statistic)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 2f5ef78c..d656cd8 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic_ext.h
  *	  definition of the system "extended statistic" relation (pg_statistic_ext)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic_ext.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 6db2ee2..75a3a2e 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -2,7 +2,6 @@
  *
  * pg_tablespace.h
  *	  definition of the system "tablespace" relation (pg_tablespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_tablespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index d4fc464..21109db 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -7,8 +7,8 @@
  * src/include/catalog/pg_transform.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index c80a3aa..e307039 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_trigger.h
  *	  definition of the system "trigger" relation (pg_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 7667585..21e6c2c 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,9 +47,4 @@ typedef FormData_pg_ts_config *Form_pg_ts_config;
 #define Anum_pg_ts_config_cfgowner		3
 #define Anum_pg_ts_config_cfgparser		4
 
-/* ----------------
- *		initial contents of pg_ts_config
- * ----------------
- */
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 5d4820f..3b5e791 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config_map.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 #define Anum_pg_ts_config_map_mapseqno		3
 #define Anum_pg_ts_config_map_mapdict		4
 
-/* ----------------
- *		initial contents of pg_ts_config_map
- * ----------------
- */
-
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 175cbb3..74c80f0 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_dict.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -55,10 +52,4 @@ typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 #define Anum_pg_ts_dict_dicttemplate	4
 #define Anum_pg_ts_dict_dictinitoption	5
 
-/* ----------------
- *		initial contents of pg_ts_dict
- * ----------------
- */
-
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index de1943d..5b5edd0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_parser.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,10 +53,4 @@ typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 #define Anum_pg_ts_parser_prsheadline		6
 #define Anum_pg_ts_parser_prslextype		7
 
-/* ----------------
- *		initial contents of pg_ts_parser
- * ----------------
- */
-
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index d33145a..b641788 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_template.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_template *Form_pg_ts_template;
 #define Anum_pg_ts_template_tmplinit		3
 #define Anum_pg_ts_template_tmpllexize		4
 
-/* ----------------
- *		initial contents of pg_ts_template
- * ----------------
- */
-
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 07bedd3..6aa9185 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -2,7 +2,6 @@
  *
  * pg_type.h
  *	  definition of the system "type" relation (pg_type)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_type.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -268,106 +267,45 @@ typedef FormData_pg_type *Form_pg_type;
 #define Anum_pg_type_typdefault			29
 #define Anum_pg_type_typacl				30
 
-
-/* ----------------
- *		initial contents of pg_type
- * ----------------
- */
-
-/*
- * Keep the following ordered by OID so that later changes can be made more
- * easily.
- *
- * For types used in the system catalogs, make sure the values here match
- * TypInfo[] in bootstrap.c.
- */
-
-/* OIDS 1 - 99 */
 #define BOOLOID			16
-
 #define BYTEAOID		17
-
 #define CHAROID			18
-
 #define NAMEOID			19
-
 #define INT8OID			20
-
 #define INT2OID			21
-
 #define INT2VECTOROID	22
-
 #define INT4OID			23
-
 #define REGPROCOID		24
-
 #define TEXTOID			25
-
 #define OIDOID			26
-
 #define TIDOID		27
-
 #define XIDOID 28
-
 #define CIDOID 29
-
 #define OIDVECTOROID	30
-
-/* hand-built rowtype entries for bootstrapped catalogs */
-/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */
-
-
-/* OIDS 100 - 199 */
 #define JSONOID 114
 #define XMLOID 142
-
 #define PGNODETREEOID	194
-
 #define PGNDISTINCTOID	3361
-
 #define PGDEPENDENCIESOID	3402
-
 #define PGDDLCOMMANDOID 32
-
-/* OIDS 200 - 299 */
-
-
-/* OIDS 300 - 399 */
-
-/* OIDS 400 - 499 */
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
 #define POINTOID		600
 #define LSEGOID			601
 #define PATHOID			602
 #define BOXOID			603
 #define POLYGONOID		604
-
 #define LINEOID			628
-
-/* OIDS 700 - 799 */
-
 #define FLOAT4OID 700
 #define FLOAT8OID 701
 #define ABSTIMEOID		702
 #define RELTIMEOID		703
 #define TINTERVALOID	704
 #define UNKNOWNOID		705
-
 #define CIRCLEOID		718
 #define CASHOID 790
-
-/* OIDS 800 - 899 */
 #define MACADDROID 829
 #define INETOID 869
 #define CIDROID 650
 #define MACADDR8OID 774
-
-/* OIDS 900 - 999 */
-
-/* OIDS 1000 - 1099 */
 #define INT2ARRAYOID		1005
 #define INT4ARRAYOID		1007
 #define TEXTARRAYOID		1009
@@ -375,84 +313,35 @@ typedef FormData_pg_type *Form_pg_type;
 #define FLOAT4ARRAYOID 1021
 #define ACLITEMOID		1033
 #define CSTRINGARRAYOID		1263
-
 #define BPCHAROID		1042
 #define VARCHAROID		1043
-
 #define DATEOID			1082
 #define TIMEOID			1083
-
-/* OIDS 1100 - 1199 */
 #define TIMESTAMPOID	1114
 #define TIMESTAMPTZOID	1184
 #define INTERVALOID		1186
-
-/* OIDS 1200 - 1299 */
 #define TIMETZOID		1266
-
-/* OIDS 1500 - 1599 */
 #define BITOID	 1560
 #define VARBITOID	  1562
-
-/* OIDS 1600 - 1699 */
-
-/* OIDS 1700 - 1799 */
 #define NUMERICOID		1700
-
 #define REFCURSOROID	1790
-
-/* OIDS 2200 - 2299 */
-
 #define REGPROCEDUREOID 2202
-
 #define REGOPEROID		2203
-
 #define REGOPERATOROID	2204
-
 #define REGCLASSOID		2205
-
 #define REGTYPEOID		2206
-
 #define REGROLEOID		4096
-
 #define REGNAMESPACEOID		4089
-
 #define REGTYPEARRAYOID 2211
-
-/* uuid */
 #define UUIDOID 2950
-
-/* pg_lsn */
 #define LSNOID			3220
-
-/* text search */
 #define TSVECTOROID		3614
 #define GTSVECTOROID	3642
 #define TSQUERYOID		3615
 #define REGCONFIGOID	3734
 #define REGDICTIONARYOID	3769
-
-
-/* jsonb */
 #define JSONBOID 3802
-
-
-/* range types */
 #define INT4RANGEOID		3904
-
-/*
- * pseudo-types
- *
- * types with typtype='p' represent various special cases in the type system.
- *
- * These cannot be used to define table columns, but are valid as function
- * argument and result types (if supported by the function's implementation
- * language).
- *
- * Note: cstring is a borderline case; it is still considered a pseudo-type,
- * but there is now support for it in records and arrays.  Perhaps we should
- * just treat it as a regular base type?
- */
 #define RECORDOID		2249
 #define RECORDARRAYOID	2287
 #define CSTRINGOID		2275
@@ -472,7 +361,6 @@ typedef FormData_pg_type *Form_pg_type;
 #define TSM_HANDLEROID	3310
 #define ANYRANGEOID		3831
 
-
 /*
  * macros
  */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 686562a..3da6496 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_user_mapping.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index f6387ae..3db39b8 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -30,7 +30,7 @@ extern void BootstrapToastTable(char *relName,
 
 /*
  * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
 
-- 
2.7.4

v7-0006-Move-symbols-from-catalog-headers-to-generated-de.patchtext/x-patch; charset=US-ASCII; name=v7-0006-Move-symbols-from-catalog-headers-to-generated-de.patchDownload
From e8a425b8df76b9f914e22d44fd93bdf381a87f37 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 29 Jan 2018 20:16:48 +0700
Subject: [PATCH v7] Move symbols from catalog headers to generated definition
 headers.

When we deleted the catalog data from the headers, the OID symbols
were left behind. Since we don't want them to be separate from the
data they refer to, genbki.pl now copies them from the metadata in the
.dat files to new pg_*_d.h headers which are now included by the relevant
header file. This required an analog of FindDefinedSymbol() that retrieves
the symbol from the data.

To simplify the makefiles, put the list of catalog headers into a separate
file to be included by multiple makefiles. Note: The makefile changes
are POC, and may have bugs or inefficiencies.

Since we had to build this mechanism anyway, take this opportunity to
generate the Anum_* and Natts_* compiler constants, so we don't have
to maintain those by hand. This required correcting the spelling of
references to Anum_pg_init_privs_initprivs.

Also, since the new generated headers can be separately included
from the static catalog header, we can now arrange to have client code
include these instead. To make certain macros visible to client code,
introduce the EXPOSE_TO_CLIENT_CODE symbol, which is never defined, and
just prevents the compiler from seeing them where they are. Catalog.pm
knows to save these lines so they can be copied to the definition headers,
where both client and server code can see them.

With that in place, it's now possible to get rid of the pg_*_fn.h headers
which only exist to quarantine code away from clients. That is left for
future work, however. This patch also does not change the way #define symbols
for pg_proc entries are built.
---
 src/backend/Makefile                          |  16 +++-
 src/backend/catalog/.gitignore                |   1 +
 src/backend/catalog/Catalog.pm                |  76 +++++++++++----
 src/backend/catalog/Makefile                  |  44 +++------
 src/backend/catalog/Makefile.headers          |  34 +++++++
 src/backend/catalog/README                    |  10 +-
 src/backend/catalog/aclchk.c                  |   6 +-
 src/backend/catalog/genbki.pl                 |  92 +++++++++++++-----
 src/backend/utils/Gen_fmgrtab.pl              |   2 +-
 src/backend/utils/Makefile                    |   6 +-
 src/common/Makefile                           |   8 ++
 src/include/Makefile                          |   2 +-
 src/include/catalog/.gitignore                |   1 +
 src/include/catalog/genbki.h                  |  16 +++-
 src/include/catalog/pg_aggregate.h            |  32 +------
 src/include/catalog/pg_am.h                   |  17 +---
 src/include/catalog/pg_amop.h                 |  25 ++---
 src/include/catalog/pg_amproc.h               |  12 +--
 src/include/catalog/pg_attrdef.h              |  11 +--
 src/include/catalog/pg_attribute.h            |  32 +------
 src/include/catalog/pg_auth_members.h         |  11 +--
 src/include/catalog/pg_authid.h               |  26 +----
 src/include/catalog/pg_cast.h                 |  18 ++--
 src/include/catalog/pg_class.h                |  44 +--------
 src/include/catalog/pg_collation.h            |  21 +---
 src/include/catalog/pg_constraint.h           |  33 +------
 src/include/catalog/pg_conversion.h           |  15 +--
 src/include/catalog/pg_database.h             |  22 +----
 src/include/catalog/pg_db_role_setting.h      |  10 +-
 src/include/catalog/pg_default_acl.h          |  14 +--
 src/include/catalog/pg_depend.h               |  15 +--
 src/include/catalog/pg_description.h          |  11 +--
 src/include/catalog/pg_enum.h                 |  10 +-
 src/include/catalog/pg_event_trigger.h        |  13 +--
 src/include/catalog/pg_extension.h            |  15 +--
 src/include/catalog/pg_foreign_data_wrapper.h |  14 +--
 src/include/catalog/pg_foreign_server.h       |  15 +--
 src/include/catalog/pg_foreign_table.h        |  11 +--
 src/include/catalog/pg_index.h                |  26 +----
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  12 +--
 src/include/catalog/pg_language.h             |  19 +---
 src/include/catalog/pg_largeobject.h          |  10 +-
 src/include/catalog/pg_largeobject_metadata.h |   9 +-
 src/include/catalog/pg_namespace.h            |  15 +--
 src/include/catalog/pg_opclass.h              |  26 +----
 src/include/catalog/pg_operator.h             |  72 +-------------
 src/include/catalog/pg_opfamily.h             |  24 +----
 src/include/catalog/pg_partitioned_table.h    |  15 +--
 src/include/catalog/pg_pltemplate.h           |  15 +--
 src/include/catalog/pg_policy.h               |  19 +---
 src/include/catalog/pg_proc.h                 |  38 +-------
 src/include/catalog/pg_publication.h          |  15 +--
 src/include/catalog/pg_publication_rel.h      |  11 +--
 src/include/catalog/pg_range.h                |  13 +--
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |  14 +--
 src/include/catalog/pg_seclabel.h             |  12 +--
 src/include/catalog/pg_sequence.h             |  16 ++--
 src/include/catalog/pg_shdepend.h             |  15 +--
 src/include/catalog/pg_shdescription.h        |  10 +-
 src/include/catalog/pg_shseclabel.h           |  13 +--
 src/include/catalog/pg_statistic.h            |  33 +------
 src/include/catalog/pg_statistic_ext.h        |  15 +--
 src/include/catalog/pg_subscription.h         |  16 +---
 src/include/catalog/pg_subscription_rel.h     |  13 +--
 src/include/catalog/pg_tablespace.h           |  15 +--
 src/include/catalog/pg_transform.h            |  17 ++--
 src/include/catalog/pg_trigger.h              |  24 +----
 src/include/catalog/pg_ts_config.h            |  11 +--
 src/include/catalog/pg_ts_config_map.h        |  11 +--
 src/include/catalog/pg_ts_dict.h              |  12 +--
 src/include/catalog/pg_ts_parser.h            |  14 +--
 src/include/catalog/pg_ts_template.h          |  11 +--
 src/include/catalog/pg_type.h                 | 133 +-------------------------
 src/include/catalog/pg_user_mapping.h         |  11 +--
 src/interfaces/ecpg/ecpglib/execute.c         |   2 +-
 src/interfaces/ecpg/ecpglib/pg_type.h         |  65 +------------
 src/tools/msvc/Solution.pm                    |  30 ++++--
 src/tools/msvc/clean.bat                      |   2 +
 src/tools/pgindent/pgindent                   |   8 +-
 81 files changed, 377 insertions(+), 1265 deletions(-)
 create mode 100644 src/backend/catalog/Makefile.headers

diff --git a/src/backend/Makefile b/src/backend/Makefile
index 2fadcea..776cbfb 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -16,6 +16,7 @@ PGFILEDESC = "PostgreSQL Server"
 subdir = src/backend
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/src/backend/catalog/Makefile.headers
 
 SUBDIRS = access bootstrap catalog parser commands executor foreign lib libpq \
 	main nodes optimizer port postmaster regex replication rewrite \
@@ -149,10 +150,12 @@ utils/probes.h: utils/probes.d
 	$(MAKE) -C utils probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
+$(GENERATED_CATALOG_HEADERS): catalog/schemapg.h ;
+
 catalog/schemapg.h: | submake-schemapg
 
 submake-schemapg:
-	$(MAKE) -C catalog schemapg.h
+	$(MAKE) -C catalog $(GENERATED_CATALOG_HEADERS) schemapg.h
 
 .PHONY: submake-schemapg
 
@@ -169,7 +172,7 @@ submake-schemapg:
 
 .PHONY: generated-headers
 
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h
+generated-headers: $(addprefix $(top_builddir)/src/include/, parser/gram.h catalog/schemapg.h storage/lwlocknames.h utils/errcodes.h utils/fmgroids.h utils/fmgrprotos.h utils/probes.h)  $(addprefix $(top_builddir)/src/include/catalog/, $(GENERATED_CATALOG_HEADERS))
 
 $(top_builddir)/src/include/parser/gram.h: parser/gram.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
@@ -181,6 +184,11 @@ $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
+$(top_builddir)/src/include/catalog/%_d.h: catalog/%_d.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
+
 $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
@@ -216,7 +224,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
-	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription $(GENERATED_CATALOG_HEADERS)
 	$(MAKE) -C replication	repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
 	$(MAKE) -C storage/lmgr	lwlocknames.h
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
@@ -309,6 +317,7 @@ clean:
 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
 		$(top_builddir)/src/include/parser/gram.h \
 		$(top_builddir)/src/include/catalog/schemapg.h \
+		$(top_builddir)/src/include/catalog/pg_*_d.h \
 		$(top_builddir)/src/include/storage/lwlocknames.h \
 		$(top_builddir)/src/include/utils/fmgroids.h \
 		$(top_builddir)/src/include/utils/fmgrprotos.h \
@@ -330,6 +339,7 @@ maintainer-clean: distclean
 	      parser/gram.h \
 	      parser/scan.c \
 	      catalog/schemapg.h \
+	      catalog/pg_*_d.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
 	      catalog/postgres.shdescription \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 557af3c..1044a1c 100644
--- a/src/backend/catalog/.gitignore
+++ b/src/backend/catalog/.gitignore
@@ -2,3 +2,4 @@
 /postgres.description
 /postgres.shdescription
 /schemapg.h
+/pg_*_d.h
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 39afa3d..de92e15 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,10 +36,12 @@ sub ParseHeader
 	my %catalog;
 	my $declaring_attributes = 0;
 	my $is_varlen     = 0;
+	my $is_client_code = 0;
 
 	$catalog{columns} = [];
 	$catalog{toasting} = [];
 	$catalog{indexing} = [];
+	$catalog{client_code} = [];
 
 	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -47,24 +49,39 @@ sub ParseHeader
 	while (<$ifh>)
 	{
 
-		# Strip C-style comments.
-		s;/\*(.|\n)*\*/;;g;
-		if (m;/\*;)
+		# Set appropriate flag when we're in certain code sections.
+		if (/^#/)
 		{
-
-			# handle multi-line comments properly.
-			my $next_line = <$ifh>;
-			die "$input_file: ends within C-style comment\n"
-			  if !defined $next_line;
-			$_ .= $next_line;
-			redo;
+			$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+			if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/)
+			{
+				$is_client_code = 1;
+				next;
+			}
+			next if !$is_client_code;
 		}
 
-		# Strip useless whitespace and trailing semicolons.
-		chomp;
-		s/^\s+//;
-		s/;\s*$//;
-		s/\s+/ /g;
+		if (!$is_client_code)
+		{
+			# Strip C-style comments.
+			s;/\*(.|\n)*\*/;;g;
+			if (m;/\*;)
+			{
+
+				# handle multi-line comments properly.
+				my $next_line = <$ifh>;
+				die "$input_file: ends within C-style comment\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+		}
 
 		# Push the data into the appropriate data structure.
 		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
@@ -102,14 +119,20 @@ sub ParseHeader
 			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 			$declaring_attributes = 1;
 		}
-		elsif ($declaring_attributes)
+		elsif ($is_client_code)
 		{
-			next if (/^{|^$/);
-			if (/^#/)
+			if (/^#endif/)
 			{
-				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-				next;
+				$is_client_code = 0;
+			}
+			else
+			{
+				push @{ $catalog{client_code} }, $_;
 			}
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
 			if (/^}/)
 			{
 				$declaring_attributes = 0;
@@ -352,4 +375,17 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
+sub FindDefinedSymbolFromData
+{
+	my ($data, $symbol) = @_;
+	foreach my $row (@{ $data })
+	{
+		if ($row->{oid_symbol} eq $symbol)
+		{
+			return $row->{oid};
+		}
+		die "no definition found for $symbol\n";
+	}
+}
+
 1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 23858b8..e1985c6 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -2,6 +2,9 @@
 #
 # Makefile for backend/catalog
 #
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
 # src/backend/catalog/Makefile
 #
 #-------------------------------------------------------------------------
@@ -9,6 +12,7 @@
 subdir = src/backend/catalog
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
+include Makefile.headers
 
 OBJS = catalog.o dependency.o heap.o index.o indexing.o namespace.o aclchk.o \
        objectaccess.o objectaddress.o partition.o pg_aggregate.o pg_collation.o \
@@ -22,32 +26,11 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: $(BKIFILES) schemapg.h
-
-# Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
-
-POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
-	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
-	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
-	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
-	pg_language.h pg_largeobject_metadata.h pg_largeobject.h pg_aggregate.h \
-	pg_statistic_ext.h \
-	pg_statistic.h pg_rewrite.h pg_trigger.h pg_event_trigger.h pg_description.h \
-	pg_cast.h pg_enum.h pg_namespace.h pg_conversion.h pg_depend.h \
-	pg_database.h pg_db_role_setting.h pg_tablespace.h pg_pltemplate.h \
-	pg_authid.h pg_auth_members.h pg_shdepend.h pg_shdescription.h \
-	pg_ts_config.h pg_ts_config_map.h pg_ts_dict.h \
-	pg_ts_parser.h pg_ts_template.h pg_extension.h \
-	pg_foreign_data_wrapper.h pg_foreign_server.h pg_user_mapping.h \
-	pg_foreign_table.h pg_policy.h pg_replication_origin.h \
-	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
-	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
-	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
-	pg_subscription_rel.h \
-	toasting.h indexing.h \
-    )
+all: $(BKIFILES) schemapg.h $(GENERATED_CATALOG_HEADERS)
+
+# In the list of headers used to assemble postgres.bki, indexing.h needs
+# be last, and toasting.h just before it.
+POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS) toasting.h indexing.h)
 
 POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
@@ -61,10 +44,9 @@ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
-# locations of headers that genbki.pl needs to read
-pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog
-
 # see explanation in ../parser/Makefile
+#~ $(GENERATED_CATALOG_HEADERS): postgres.bki ;
+
 postgres.description: postgres.bki ;
 
 postgres.shdescription: postgres.bki ;
@@ -76,9 +58,9 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+$(GENERATED_CATALOG_HEADERS) postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
-	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
 .PHONY: install-data
 install-data: $(BKIFILES) installdirs
diff --git a/src/backend/catalog/Makefile.headers b/src/backend/catalog/Makefile.headers
new file mode 100644
index 0000000..a1cbbfd
--- /dev/null
+++ b/src/backend/catalog/Makefile.headers
@@ -0,0 +1,34 @@
+#-------------------------------------------------------------------------
+#
+# Makefile variables used by backend/Makefile and backend/catalog/Makefile
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/backend/catalog/Makefile.headers
+#
+#-------------------------------------------------------------------------
+
+# Note: there are some undocumented dependencies on the ordering in which
+# the catalog header files are assembled into postgres.bki.
+
+CATALOG_HEADERS := \
+	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
+	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
+	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
+	pg_language.h pg_largeobject_metadata.h pg_largeobject.h pg_aggregate.h \
+	pg_statistic_ext.h \
+	pg_statistic.h pg_rewrite.h pg_trigger.h pg_event_trigger.h pg_description.h \
+	pg_cast.h pg_enum.h pg_namespace.h pg_conversion.h pg_depend.h \
+	pg_database.h pg_db_role_setting.h pg_tablespace.h pg_pltemplate.h \
+	pg_authid.h pg_auth_members.h pg_shdepend.h pg_shdescription.h \
+	pg_ts_config.h pg_ts_config_map.h pg_ts_dict.h \
+	pg_ts_parser.h pg_ts_template.h pg_extension.h \
+	pg_foreign_data_wrapper.h pg_foreign_server.h pg_user_mapping.h \
+	pg_foreign_table.h pg_policy.h pg_replication_origin.h \
+	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
+	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
+	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
+	pg_subscription_rel.h \
+
+GENERATED_CATALOG_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h)
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index c177ba0..698f13c 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -110,8 +110,8 @@ pg_class, pg_attribute, and pg_type.  Avoid making new catalogs be bootstrap
 catalogs if at all possible; generally, only tables that must be written to
 in order to create a table should be bootstrapped.
 
-- Certain BOOTSTRAP tables must be at the start of the Makefile
-POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
+- Certain BOOTSTRAP tables must be at the start of the Makefile.headers
+CATALOG_HEADERS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
@@ -121,6 +121,12 @@ the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
 reputedly some other order dependencies in the .bki list, too.
 
+-Clients should not include the catalog headers directly.  Instead, they
+should include the corresponding generated pg_*_d.h header.  If you want
+macros or other code in the server headers to be visible to clients, use
+the undefined macro EXPOSE_TO_CLIENT_CODE to instruct genbki.pl to copy
+that section to the pg_*_d.h header.
+
 -----------------------------------------------------------------
 
 When munging the .c files, you should be aware of certain conventions:
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 1156627..932b1a1 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -5973,8 +5973,8 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			MemSet(nulls, false, sizeof(nulls));
 			MemSet(replace, false, sizeof(replace));
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
-			replace[Anum_pg_init_privs_privs - 1] = true;
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
+			replace[Anum_pg_init_privs_initprivs - 1] = true;
 
 			oldtuple = heap_modify_tuple(oldtuple, RelationGetDescr(relation),
 										 values, nulls, replace);
@@ -6011,7 +6011,7 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			values[Anum_pg_init_privs_privtype - 1] =
 				CharGetDatum(INITPRIVS_EXTENSION);
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
 
 			tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index c86b06e..ce8d110 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 my @input_files;
-my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -36,10 +35,6 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
-	elsif ($arg =~ /^-I/)
-	{
-		push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
-	}
 	elsif ($arg =~ /^--set-version=(.*)$/)
 	{
 		$major_version = $1;
@@ -53,8 +48,7 @@ while (@ARGV)
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n" if !@input_files;
 die "--set-version must be specified.\n" if !defined $major_version;
 
 # Make sure output_path ends in a slash.
@@ -78,21 +72,6 @@ my $shdescrfile = $output_path . 'postgres.shdescription';
 open my $shdescr, '>', $shdescrfile . $tmpext
   or die "can't open $shdescrfile$tmpext: $!";
 
-# Fetch some special data that we will substitute into the output file.
-# CAUTION: be wary about what symbols you substitute into the .bki file here!
-# It's okay to substitute things that are expected to be really constant
-# within a given Postgres release, such as fixed OIDs.  Do not substitute
-# anything that could depend on platform or configuration.  (The right place
-# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-# NB: make sure that the files used here are known to be part of the .bki
-# file's dependencies by src/backend/catalog/Makefile.
-my $BOOTSTRAP_SUPERUSERID =
-  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
-							 'BOOTSTRAP_SUPERUSERID');
-my $PG_CATALOG_NAMESPACE =
-  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
-							 'PG_CATALOG_NAMESPACE');
-
 # Read all the files into internal data structures. Not all catalogs
 # will have a data file.
 my @catnames;
@@ -131,6 +110,17 @@ foreach my $header (@input_files)
 	}
 }
 
+# Fetch some special data that we will substitute into the output file.
+# CAUTION: be wary about what symbols you substitute into the .bki file here!
+# It's okay to substitute things that are expected to be really constant
+# within a given Postgres release, such as fixed OIDs.  Do not substitute
+# anything that could depend on platform or configuration.  (The right place
+# to handle those sorts of things is in initdb.c's bootstrap_template1().)
+my $BOOTSTRAP_SUPERUSERID
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID');
+my $PG_CATALOG_NAMESPACE
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -146,6 +136,35 @@ my %types;
 foreach my $catname (@catnames)
 {
 
+	# Create one definition header with macro definitions for each catalog.
+	my $def_file = $output_path . $catname . '_d.h';
+	open my $def, '>', $def_file . $tmpext
+	  or die "can't open $def_file$tmpext: $!";
+
+	# Opening boilerplate for pg_*_d.h
+	printf $def <<EOM, $catname, $catname, uc $catname, uc $catname;
+/*-------------------------------------------------------------------------
+ *
+ * %s_d.h
+ *    Macro definitions for %s
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ *  ******************************
+ *  *** DO NOT EDIT THIS FILE! ***
+ *  ******************************
+ *
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef %s_D_H
+#define %s_D_H
+
+EOM
+
 	# .bki CREATE command for this catalog
 	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
@@ -158,11 +177,14 @@ foreach my $catname (@catnames)
 
 	print $bki " (\n";
 	my $schema = $catalog->{columns};
+	my $attnum = 0;
 	foreach my $column (@$schema)
 	{
+		$attnum++;
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
 
+		# Emit column definitions
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -179,9 +201,22 @@ foreach my $catname (@catnames)
 		{
 			print $bki " FORCE NULL";
 		}
+
+		# Emit Anum_* constants
+		print $def
+		  sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum);
 	}
 	print $bki "\n )\n";
 
+	# Emit Natts_* constant
+	print $def "\n#define Natts_$catname $attnum\n\n";
+
+	# Emit client code copied from source header
+	foreach my $line (@{ $catalog->{client_code} })
+	{
+		print $def $line;
+	}
+
 	# Open it, unless bootstrap case (create bootstrap does this
 	# automatically)
 	if (!$catalog->{bootstrap})
@@ -260,8 +295,20 @@ foreach my $catname (@catnames)
 			printf $shdescr "%s\t%s\t%s\n",
 			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
+
+		# Emit OID symbols
+		if (defined $bki_values{oid_symbol})
+		{
+			printf $def "#define %s %s\n",
+			  $bki_values{oid_symbol}, $bki_values{oid};
+		}
 	}
 	print $bki "close $catname\n";
+	print $def sprintf("\n#endif /* %s_D_H */\n", uc $catname);
+
+	# Close and rename definition header
+	close $def;
+	Catalog::RenameTempFile($def_file, $tmpext);
 }
 
 # Any information needed for the BKI that is not contained in a pg_*.h header
@@ -568,7 +615,6 @@ sub usage
 Usage: genbki.pl [options] header...
 
 Options:
-    -I               path to include files
     -o               output path
     --set-version    PostgreSQL version number for initdb cross-check
 
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 5faaadc..2a5381d 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -82,7 +82,7 @@ foreach my $datfile (@input_files)
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
-	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
+	Catalog::FindDefinedSymbolFromData($catalog_data{pg_language}, 'INTERNALlanguageId');
 
 # Collect certain fields from pg_proc.dat.
 my @fmgr = ();
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index f71cdc5..26500be 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -20,12 +20,14 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h
 
 $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 
+FMGR_DATA = $(addprefix $(top_srcdir)/src/include/catalog/, pg_proc.dat pg_language.dat)
+
 # see explanation in ../parser/Makefile
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/common/Makefile b/src/common/Makefile
index 80e78d7..a52922c 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -95,6 +95,14 @@ $(OBJS_SRV): | submake-errcodes
 submake-errcodes:
 	$(MAKE) -C ../backend submake-errcodes
 
+# Certain generated headers need to be visible outside the backend.
+$(OBJS_COMMON): | generated-headers
+
+.PHONY: generated-headers
+
+generated-headers:
+	$(MAKE) -C ../backend generated-headers
+
 # Dependencies of keywords.o need to be managed explicitly to make sure
 # that you don't get broken parsing code, even in a non-enable-depend build.
 # Note that gram.h isn't required for the frontend version of keywords.o.
diff --git a/src/include/Makefile b/src/include/Makefile
index a689d35..7fe4d45 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -73,7 +73,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h
+	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h catalog/pg_*_d.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index 650202e..dfd5616 100644
--- a/src/include/catalog/.gitignore
+++ b/src/include/catalog/.gitignore
@@ -1 +1,2 @@
 /schemapg.h
+/pg_*_d.h
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 9b769c2..3be6daf 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -28,15 +28,16 @@
 #define BKI_WITHOUT_OIDS
 #define BKI_ROWTYPE_OID(oid)
 #define BKI_SCHEMA_MACRO
+
+/* Options that may appear after an attribute (on the same line) */
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
-
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* The following are never defined; they are here only for documentation. */
+
 /*
- * This is never defined; it's here only for documentation.
- *
  * Variable-length catalog fields (except possibly the first not nullable one)
  * should not be visible in C structures, so they are made invisible by #ifdefs
  * of an undefined symbol.  See also MARKNOTNULL in bootstrap.c for how this is
@@ -44,4 +45,13 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * There is code in the catalog headers that needs to be visible to clients,
+ * but we don't want them to include the full header because of safety issues
+ * with other code in the header. This symbol instructs genbki.pl to copy this
+ * section when generating the corresponding definition header, where it can
+ * be included by both client and backend code.
+ */
+#undef EXPOSE_TO_CLIENT_CODE
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 4f9edf9..97d8f22 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -19,6 +19,7 @@
 #define PG_AGGREGATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_aggregate_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_aggregate definition.
@@ -87,34 +88,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_aggregate *Form_pg_aggregate;
 
-/* ----------------
- *		compiler constants for pg_aggregate
- * ----------------
- */
-
-#define Natts_pg_aggregate					22
-#define Anum_pg_aggregate_aggfnoid			1
-#define Anum_pg_aggregate_aggkind			2
-#define Anum_pg_aggregate_aggnumdirectargs	3
-#define Anum_pg_aggregate_aggtransfn		4
-#define Anum_pg_aggregate_aggfinalfn		5
-#define Anum_pg_aggregate_aggcombinefn		6
-#define Anum_pg_aggregate_aggserialfn		7
-#define Anum_pg_aggregate_aggdeserialfn		8
-#define Anum_pg_aggregate_aggmtransfn		9
-#define Anum_pg_aggregate_aggminvtransfn	10
-#define Anum_pg_aggregate_aggmfinalfn		11
-#define Anum_pg_aggregate_aggfinalextra		12
-#define Anum_pg_aggregate_aggmfinalextra	13
-#define Anum_pg_aggregate_aggfinalmodify	14
-#define Anum_pg_aggregate_aggmfinalmodify	15
-#define Anum_pg_aggregate_aggsortop			16
-#define Anum_pg_aggregate_aggtranstype		17
-#define Anum_pg_aggregate_aggtransspace		18
-#define Anum_pg_aggregate_aggmtranstype		19
-#define Anum_pg_aggregate_aggmtransspace	20
-#define Anum_pg_aggregate_agginitval		21
-#define Anum_pg_aggregate_aggminitval		22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for aggkind column.  We distinguish normal aggregates
@@ -143,4 +117,6 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index fe59a29..4004c96 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -19,6 +19,7 @@
 #define PG_AM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_am_d.h"
 
 /* ----------------
  *		pg_am definition.  cpp turns this into
@@ -41,14 +42,7 @@ CATALOG(pg_am,2601)
  */
 typedef FormData_pg_am *Form_pg_am;
 
-/* ----------------
- *		compiler constants for pg_am
- * ----------------
- */
-#define Natts_pg_am						3
-#define Anum_pg_am_amname				1
-#define Anum_pg_am_amhandler			2
-#define Anum_pg_am_amtype				3
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		compiler constant for amtype
@@ -56,11 +50,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-#define BTREE_AM_OID 403
-#define HASH_AM_OID 405
-#define GIST_AM_OID 783
-#define GIN_AM_OID 2742
-#define SPGIST_AM_OID 4000
-#define BRIN_AM_OID 3580
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AM_H */
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index e978c32..68ee321 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -44,6 +44,7 @@
 #define PG_AMOP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amop_d.h"
 
 /* ----------------
  *		pg_amop definition.  cpp turns this into
@@ -64,10 +65,6 @@ CATALOG(pg_amop,2602)
 	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
 } FormData_pg_amop;
 
-/* allowed values of amoppurpose: */
-#define AMOP_SEARCH		's'		/* operator is for search */
-#define AMOP_ORDER		'o'		/* operator is for ordering */
-
 /* ----------------
  *		Form_pg_amop corresponds to a pointer to a tuple with
  *		the format of pg_amop relation.
@@ -75,18 +72,12 @@ CATALOG(pg_amop,2602)
  */
 typedef FormData_pg_amop *Form_pg_amop;
 
-/* ----------------
- *		compiler constants for pg_amop
- * ----------------
- */
-#define Natts_pg_amop					8
-#define Anum_pg_amop_amopfamily			1
-#define Anum_pg_amop_amoplefttype		2
-#define Anum_pg_amop_amoprighttype		3
-#define Anum_pg_amop_amopstrategy		4
-#define Anum_pg_amop_amoppurpose		5
-#define Anum_pg_amop_amopopr			6
-#define Anum_pg_amop_amopmethod			7
-#define Anum_pg_amop_amopsortfamily		8
+#ifdef EXPOSE_TO_CLIENT_CODE
+
+/* allowed values of amoppurpose: */
+#define AMOP_SEARCH		's'		/* operator is for search */
+#define AMOP_ORDER		'o'		/* operator is for ordering */
+
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 83ce03b..66e1cdc 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -33,6 +33,7 @@
 #define PG_AMPROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amproc_d.h"
 
 /* ----------------
  *		pg_amproc definition.  cpp turns this into
@@ -57,15 +58,4 @@ CATALOG(pg_amproc,2603)
  */
 typedef FormData_pg_amproc *Form_pg_amproc;
 
-/* ----------------
- *		compiler constants for pg_amproc
- * ----------------
- */
-#define Natts_pg_amproc					5
-#define Anum_pg_amproc_amprocfamily		1
-#define Anum_pg_amproc_amproclefttype	2
-#define Anum_pg_amproc_amprocrighttype	3
-#define Anum_pg_amproc_amprocnum		4
-#define Anum_pg_amproc_amproc			5
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 3aab48d..068ab64 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -19,6 +19,7 @@
 #define PG_ATTRDEF_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attrdef_d.h"
 
 /* ----------------
  *		pg_attrdef definition.  cpp turns this into
@@ -45,14 +46,4 @@ CATALOG(pg_attrdef,2604)
  */
 typedef FormData_pg_attrdef *Form_pg_attrdef;
 
-/* ----------------
- *		compiler constants for pg_attrdef
- * ----------------
- */
-#define Natts_pg_attrdef				4
-#define Anum_pg_attrdef_adrelid			1
-#define Anum_pg_attrdef_adnum			2
-#define Anum_pg_attrdef_adbin			3
-#define Anum_pg_attrdef_adsrc			4
-
 #endif							/* PG_ATTRDEF_H */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 3c78871..db3e860 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -23,6 +23,7 @@
 #define PG_ATTRIBUTE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attribute_d.h"
 
 /* ----------------
  *		pg_attribute definition.  cpp turns this into
@@ -189,36 +190,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
  */
 typedef FormData_pg_attribute *Form_pg_attribute;
 
-/* ----------------
- *		compiler constants for pg_attribute
- * ----------------
- */
-
-#define Natts_pg_attribute				22
-#define Anum_pg_attribute_attrelid		1
-#define Anum_pg_attribute_attname		2
-#define Anum_pg_attribute_atttypid		3
-#define Anum_pg_attribute_attstattarget 4
-#define Anum_pg_attribute_attlen		5
-#define Anum_pg_attribute_attnum		6
-#define Anum_pg_attribute_attndims		7
-#define Anum_pg_attribute_attcacheoff	8
-#define Anum_pg_attribute_atttypmod		9
-#define Anum_pg_attribute_attbyval		10
-#define Anum_pg_attribute_attstorage	11
-#define Anum_pg_attribute_attalign		12
-#define Anum_pg_attribute_attnotnull	13
-#define Anum_pg_attribute_atthasdef		14
-#define Anum_pg_attribute_attidentity	15
-#define Anum_pg_attribute_attisdropped	16
-#define Anum_pg_attribute_attislocal	17
-#define Anum_pg_attribute_attinhcount	18
-#define Anum_pg_attribute_attcollation	19
-#define Anum_pg_attribute_attacl		20
-#define Anum_pg_attribute_attoptions	21
-#define Anum_pg_attribute_attfdwoptions 22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_ATTRIBUTE_H */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index a702dff..b8ac653 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -20,6 +20,7 @@
 #define PG_AUTH_MEMBERS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_auth_members_d.h"
 
 /* ----------------
  *		pg_auth_members definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
  */
 typedef FormData_pg_auth_members *Form_pg_auth_members;
 
-/* ----------------
- *		compiler constants for pg_auth_members
- * ----------------
- */
-#define Natts_pg_auth_members				4
-#define Anum_pg_auth_members_roleid			1
-#define Anum_pg_auth_members_member			2
-#define Anum_pg_auth_members_grantor		3
-#define Anum_pg_auth_members_admin_option	4
-
 #endif							/* PG_AUTH_MEMBERS_H */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b101e30..036bc67 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -21,6 +21,7 @@
 #define PG_AUTHID_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_authid_d.h"
 
 /*
  * The CATALOG definition has to refer to the type of rolvaliduntil as
@@ -62,7 +63,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
-
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
  *		the format of pg_authid relation.
@@ -70,28 +70,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
  */
 typedef FormData_pg_authid *Form_pg_authid;
 
-/* ----------------
- *		compiler constants for pg_authid
- * ----------------
- */
-#define Natts_pg_authid					11
-#define Anum_pg_authid_rolname			1
-#define Anum_pg_authid_rolsuper			2
-#define Anum_pg_authid_rolinherit		3
-#define Anum_pg_authid_rolcreaterole	4
-#define Anum_pg_authid_rolcreatedb		5
-#define Anum_pg_authid_rolcanlogin		6
-#define Anum_pg_authid_rolreplication	7
-#define Anum_pg_authid_rolbypassrls		8
-#define Anum_pg_authid_rolconnlimit		9
-#define Anum_pg_authid_rolpassword		10
-#define Anum_pg_authid_rolvaliduntil	11
-
-#define BOOTSTRAP_SUPERUSERID			10
-#define DEFAULT_ROLE_MONITOR		3373
-#define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
-#define DEFAULT_ROLE_READ_ALL_STATS 3375
-#define DEFAULT_ROLE_STAT_SCAN_TABLES	3377
-#define DEFAULT_ROLE_SIGNAL_BACKENDID	4200
-
 #endif							/* PG_AUTHID_H */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 1930d4b..6d98213 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -21,6 +21,7 @@
 #define PG_CAST_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_cast_d.h"
 
 /* ----------------
  *		pg_cast definition.  cpp turns this into
@@ -38,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+/* ----------------
+ *		Form_pg_cast corresponds to a pointer to a tuple with
+ *		the format of pg_cast relation.
+ * ----------------
+ */
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
@@ -68,16 +74,4 @@ typedef enum CoercionMethod
 	COERCION_METHOD_INOUT = 'i' /* use input/output functions */
 } CoercionMethod;
 
-
-/* ----------------
- *		compiler constants for pg_cast
- * ----------------
- */
-#define Natts_pg_cast				5
-#define Anum_pg_cast_castsource		1
-#define Anum_pg_cast_casttarget		2
-#define Anum_pg_cast_castfunc		3
-#define Anum_pg_cast_castcontext	4
-#define Anum_pg_cast_castmethod		5
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 7bc09bb..d9f5aff 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -19,6 +19,7 @@
 #define PG_CLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_class_d.h"
 
 /* ----------------
  *		pg_class definition.  cpp turns this into
@@ -93,46 +94,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_class *Form_pg_class;
 
-/* ----------------
- *		compiler constants for pg_class
- * ----------------
- */
-
-#define Natts_pg_class						33
-#define Anum_pg_class_relname				1
-#define Anum_pg_class_relnamespace			2
-#define Anum_pg_class_reltype				3
-#define Anum_pg_class_reloftype				4
-#define Anum_pg_class_relowner				5
-#define Anum_pg_class_relam					6
-#define Anum_pg_class_relfilenode			7
-#define Anum_pg_class_reltablespace			8
-#define Anum_pg_class_relpages				9
-#define Anum_pg_class_reltuples				10
-#define Anum_pg_class_relallvisible			11
-#define Anum_pg_class_reltoastrelid			12
-#define Anum_pg_class_relhasindex			13
-#define Anum_pg_class_relisshared			14
-#define Anum_pg_class_relpersistence		15
-#define Anum_pg_class_relkind				16
-#define Anum_pg_class_relnatts				17
-#define Anum_pg_class_relchecks				18
-#define Anum_pg_class_relhasoids			19
-#define Anum_pg_class_relhaspkey			20
-#define Anum_pg_class_relhasrules			21
-#define Anum_pg_class_relhastriggers		22
-#define Anum_pg_class_relhassubclass		23
-#define Anum_pg_class_relrowsecurity		24
-#define Anum_pg_class_relforcerowsecurity	25
-#define Anum_pg_class_relispopulated		26
-#define Anum_pg_class_relreplident			27
-#define Anum_pg_class_relispartition		28
-#define Anum_pg_class_relfrozenxid			29
-#define Anum_pg_class_relminmxid			30
-#define Anum_pg_class_relacl				31
-#define Anum_pg_class_reloptions			32
-#define Anum_pg_class_relpartbound			33
-
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
@@ -162,4 +124,6 @@ typedef FormData_pg_class *Form_pg_class;
  */
 #define		  REPLICA_IDENTITY_INDEX	'i'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CLASS_H */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 50cbe1e..0c6d47f 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -20,6 +20,7 @@
 #define PG_COLLATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_collation_d.h"
 
 /* ----------------
  *		pg_collation definition.  cpp turns this into
@@ -50,26 +51,12 @@ CATALOG(pg_collation,3456)
  */
 typedef FormData_pg_collation *Form_pg_collation;
 
-/* ----------------
- *		compiler constants for pg_collation
- * ----------------
- */
-#define Natts_pg_collation				8
-#define Anum_pg_collation_collname		1
-#define Anum_pg_collation_collnamespace 2
-#define Anum_pg_collation_collowner		3
-#define Anum_pg_collation_collprovider	4
-#define Anum_pg_collation_collencoding	5
-#define Anum_pg_collation_collcollate	6
-#define Anum_pg_collation_collctype		7
-#define Anum_pg_collation_collversion	8
-
-#define DEFAULT_COLLATION_OID	100
-#define C_COLLATION_OID			950
-#define POSIX_COLLATION_OID		951
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_COLLATION_H */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 41d97d4..758325e 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -19,6 +19,7 @@
 #define PG_CONSTRAINT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_constraint_d.h"
 
 /* ----------------
  *		pg_constraint definition.  cpp turns this into
@@ -145,35 +146,7 @@ CATALOG(pg_constraint,2606)
  */
 typedef FormData_pg_constraint *Form_pg_constraint;
 
-/* ----------------
- *		compiler constants for pg_constraint
- * ----------------
- */
-#define Natts_pg_constraint					24
-#define Anum_pg_constraint_conname			1
-#define Anum_pg_constraint_connamespace		2
-#define Anum_pg_constraint_contype			3
-#define Anum_pg_constraint_condeferrable	4
-#define Anum_pg_constraint_condeferred		5
-#define Anum_pg_constraint_convalidated		6
-#define Anum_pg_constraint_conrelid			7
-#define Anum_pg_constraint_contypid			8
-#define Anum_pg_constraint_conindid			9
-#define Anum_pg_constraint_confrelid		10
-#define Anum_pg_constraint_confupdtype		11
-#define Anum_pg_constraint_confdeltype		12
-#define Anum_pg_constraint_confmatchtype	13
-#define Anum_pg_constraint_conislocal		14
-#define Anum_pg_constraint_coninhcount		15
-#define Anum_pg_constraint_connoinherit		16
-#define Anum_pg_constraint_conkey			17
-#define Anum_pg_constraint_confkey			18
-#define Anum_pg_constraint_conpfeqop		19
-#define Anum_pg_constraint_conppeqop		20
-#define Anum_pg_constraint_conffeqop		21
-#define Anum_pg_constraint_conexclop		22
-#define Anum_pg_constraint_conbin			23
-#define Anum_pg_constraint_consrc			24
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
@@ -189,4 +162,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
  * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
  */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CONSTRAINT_H */
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 88098fa..eacc09a 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -19,6 +19,7 @@
 #define PG_CONVERSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_conversion_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_conversion definition.
@@ -54,18 +55,4 @@ CATALOG(pg_conversion,2607)
  */
 typedef FormData_pg_conversion *Form_pg_conversion;
 
-/* ----------------
- *		compiler constants for pg_conversion
- * ----------------
- */
-
-#define Natts_pg_conversion				7
-#define Anum_pg_conversion_conname		1
-#define Anum_pg_conversion_connamespace 2
-#define Anum_pg_conversion_conowner		3
-#define Anum_pg_conversion_conforencoding		4
-#define Anum_pg_conversion_contoencoding		5
-#define Anum_pg_conversion_conproc		6
-#define Anum_pg_conversion_condefault	7
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index b7972fa..9435f24 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -19,6 +19,7 @@
 #define PG_DATABASE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_database_d.h"
 
 /* ----------------
  *		pg_database definition.  cpp turns this into
@@ -55,25 +56,4 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
  */
 typedef FormData_pg_database *Form_pg_database;
 
-/* ----------------
- *		compiler constants for pg_database
- * ----------------
- */
-#define Natts_pg_database				13
-#define Anum_pg_database_datname		1
-#define Anum_pg_database_datdba			2
-#define Anum_pg_database_encoding		3
-#define Anum_pg_database_datcollate		4
-#define Anum_pg_database_datctype		5
-#define Anum_pg_database_datistemplate	6
-#define Anum_pg_database_datallowconn	7
-#define Anum_pg_database_datconnlimit	8
-#define Anum_pg_database_datlastsysoid	9
-#define Anum_pg_database_datfrozenxid	10
-#define Anum_pg_database_datminmxid		11
-#define Anum_pg_database_dattablespace	12
-#define Anum_pg_database_datacl			13
-
-#define TemplateDbOid			1
-
 #endif							/* PG_DATABASE_H */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 09546bd..013e6a2 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -18,6 +18,7 @@
 #ifndef PG_DB_ROLE_SETTING_H
 #define PG_DB_ROLE_SETTING_H
 
+#include "catalog/pg_db_role_setting_d.h"
 #include "utils/guc.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
@@ -41,15 +42,6 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
-/* ----------------
- *		compiler constants for pg_db_role_setting
- * ----------------
- */
-#define Natts_pg_db_role_setting				3
-#define Anum_pg_db_role_setting_setdatabase		1
-#define Anum_pg_db_role_setting_setrole			2
-#define Anum_pg_db_role_setting_setconfig		3
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 7778276..868ac0c 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -19,6 +19,7 @@
 #define PG_DEFAULT_ACL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_default_acl_d.h"
 
 /* ----------------
  *		pg_default_acl definition.  cpp turns this into
@@ -45,16 +46,7 @@ CATALOG(pg_default_acl,826)
  */
 typedef FormData_pg_default_acl *Form_pg_default_acl;
 
-/* ----------------
- *		compiler constants for pg_default_acl
- * ----------------
- */
-
-#define Natts_pg_default_acl					4
-#define Anum_pg_default_acl_defaclrole			1
-#define Anum_pg_default_acl_defaclnamespace		2
-#define Anum_pg_default_acl_defaclobjtype		3
-#define Anum_pg_default_acl_defaclacl			4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Types of objects for which the user is allowed to specify default
@@ -67,4 +59,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define DEFACLOBJ_TYPE			'T' /* type */
 #define DEFACLOBJ_NAMESPACE		'n' /* namespace */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_DEFAULT_ACL_H */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 7c60e63..030f655 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -31,6 +31,7 @@
 #define PG_DEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_depend_d.h"
 
 /* ----------------
  *		pg_depend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_depend *Form_pg_depend;
 
-/* ----------------
- *		compiler constants for pg_depend
- * ----------------
- */
-#define Natts_pg_depend				7
-#define Anum_pg_depend_classid		1
-#define Anum_pg_depend_objid		2
-#define Anum_pg_depend_objsubid		3
-#define Anum_pg_depend_refclassid	4
-#define Anum_pg_depend_refobjid		5
-#define Anum_pg_depend_refobjsubid	6
-#define Anum_pg_depend_deptype		7
-
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 71eed4e..d3c8644 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -38,6 +38,7 @@
 #define PG_DESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_description_d.h"
 
 /* ----------------
  *		pg_description definition.  cpp turns this into
@@ -64,14 +65,4 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_description * Form_pg_description;
 
-/* ----------------
- *		compiler constants for pg_description
- * ----------------
- */
-#define Natts_pg_description			4
-#define Anum_pg_description_objoid		1
-#define Anum_pg_description_classoid	2
-#define Anum_pg_description_objsubid	3
-#define Anum_pg_description_description 4
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 3327688..edea5e3 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -18,6 +18,7 @@
 #define PG_ENUM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_enum_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -41,15 +42,6 @@ CATALOG(pg_enum,3501)
  */
 typedef FormData_pg_enum *Form_pg_enum;
 
-/* ----------------
- *		compiler constants for pg_enum
- * ----------------
- */
-#define Natts_pg_enum					3
-#define Anum_pg_enum_enumtypid			1
-#define Anum_pg_enum_enumsortorder		2
-#define Anum_pg_enum_enumlabel			3
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index 20e7e38..3ca0a88 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -19,6 +19,7 @@
 #define PG_EVENT_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_event_trigger_d.h"
 
 /* ----------------
  *		pg_event_trigger definition.    cpp turns this into
@@ -48,16 +49,4 @@ CATALOG(pg_event_trigger,3466)
  */
 typedef FormData_pg_event_trigger *Form_pg_event_trigger;
 
-/* ----------------
- *		compiler constants for pg_event_trigger
- * ----------------
- */
-#define Natts_pg_event_trigger					6
-#define Anum_pg_event_trigger_evtname			1
-#define Anum_pg_event_trigger_evtevent			2
-#define Anum_pg_event_trigger_evtowner			3
-#define Anum_pg_event_trigger_evtfoid			4
-#define Anum_pg_event_trigger_evtenabled		5
-#define Anum_pg_event_trigger_evttags			6
-
 #endif							/* PG_EVENT_TRIGGER_H */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index c2d528f..a60bd44 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -19,6 +19,7 @@
 #define PG_EXTENSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_extension_d.h"
 
 /* ----------------
  *		pg_extension definition.  cpp turns this into
@@ -49,18 +50,4 @@ CATALOG(pg_extension,3079)
  */
 typedef FormData_pg_extension *Form_pg_extension;
 
-/* ----------------
- *		compiler constants for pg_extension
- * ----------------
- */
-
-#define Natts_pg_extension					7
-#define Anum_pg_extension_extname			1
-#define Anum_pg_extension_extowner			2
-#define Anum_pg_extension_extnamespace		3
-#define Anum_pg_extension_extrelocatable	4
-#define Anum_pg_extension_extversion		5
-#define Anum_pg_extension_extconfig			6
-#define Anum_pg_extension_extcondition		7
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index 6cf321d..ae9b0be 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -19,6 +19,7 @@
 #define PG_FOREIGN_DATA_WRAPPER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_data_wrapper_d.h"
 
 /* ----------------
  *		pg_foreign_data_wrapper definition.  cpp turns this into
@@ -47,17 +48,4 @@ CATALOG(pg_foreign_data_wrapper,2328)
  */
 typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper;
 
-/* ----------------
- *		compiler constants for pg_fdw
- * ----------------
- */
-
-#define Natts_pg_foreign_data_wrapper				6
-#define Anum_pg_foreign_data_wrapper_fdwname		1
-#define Anum_pg_foreign_data_wrapper_fdwowner		2
-#define Anum_pg_foreign_data_wrapper_fdwhandler		3
-#define Anum_pg_foreign_data_wrapper_fdwvalidator	4
-#define Anum_pg_foreign_data_wrapper_fdwacl			5
-#define Anum_pg_foreign_data_wrapper_fdwoptions		6
-
 #endif							/* PG_FOREIGN_DATA_WRAPPER_H */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index f909b26..34fc827 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_SERVER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_server_d.h"
 
 /* ----------------
  *		pg_foreign_server definition.  cpp turns this into
@@ -47,18 +48,4 @@ CATALOG(pg_foreign_server,1417)
  */
 typedef FormData_pg_foreign_server *Form_pg_foreign_server;
 
-/* ----------------
- *		compiler constants for pg_foreign_server
- * ----------------
- */
-
-#define Natts_pg_foreign_server					7
-#define Anum_pg_foreign_server_srvname			1
-#define Anum_pg_foreign_server_srvowner			2
-#define Anum_pg_foreign_server_srvfdw			3
-#define Anum_pg_foreign_server_srvtype			4
-#define Anum_pg_foreign_server_srvversion		5
-#define Anum_pg_foreign_server_srvacl			6
-#define Anum_pg_foreign_server_srvoptions		7
-
 #endif							/* PG_FOREIGN_SERVER_H */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 9bee001..1a1fefc 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_table_d.h"
 
 /* ----------------
  *		pg_foreign_table definition.  cpp turns this into
@@ -43,14 +44,4 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_foreign_table *Form_pg_foreign_table;
 
-/* ----------------
- *		compiler constants for pg_foreign_table
- * ----------------
- */
-
-#define Natts_pg_foreign_table					3
-#define Anum_pg_foreign_table_ftrelid			1
-#define Anum_pg_foreign_table_ftserver			2
-#define Anum_pg_foreign_table_ftoptions			3
-
 #endif							/* PG_FOREIGN_TABLE_H */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index ef0dea6..f8371f0 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -19,6 +19,7 @@
 #define PG_INDEX_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_index_d.h"
 
 /* ----------------
  *		pg_index definition.  cpp turns this into
@@ -65,31 +66,6 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_index *Form_pg_index;
 
-/* ----------------
- *		compiler constants for pg_index
- * ----------------
- */
-#define Natts_pg_index					19
-#define Anum_pg_index_indexrelid		1
-#define Anum_pg_index_indrelid			2
-#define Anum_pg_index_indnatts			3
-#define Anum_pg_index_indisunique		4
-#define Anum_pg_index_indisprimary		5
-#define Anum_pg_index_indisexclusion	6
-#define Anum_pg_index_indimmediate		7
-#define Anum_pg_index_indisclustered	8
-#define Anum_pg_index_indisvalid		9
-#define Anum_pg_index_indcheckxmin		10
-#define Anum_pg_index_indisready		11
-#define Anum_pg_index_indislive			12
-#define Anum_pg_index_indisreplident	13
-#define Anum_pg_index_indkey			14
-#define Anum_pg_index_indcollation		15
-#define Anum_pg_index_indclass			16
-#define Anum_pg_index_indoption			17
-#define Anum_pg_index_indexprs			18
-#define Anum_pg_index_indpred			19
-
 /*
  * Index AMs that support ordered scans must support these two indoption
  * bits.  Otherwise, the content of the per-column indoption fields is
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3af1647..478a587 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -19,6 +19,7 @@
 #define PG_INHERITS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_inherits_d.h"
 
 /* ----------------
  *		pg_inherits definition.  cpp turns this into
@@ -41,13 +42,4 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_inherits *Form_pg_inherits;
 
-/* ----------------
- *		compiler constants for pg_inherits
- * ----------------
- */
-#define Natts_pg_inherits				3
-#define Anum_pg_inherits_inhrelid		1
-#define Anum_pg_inherits_inhparent		2
-#define Anum_pg_inherits_inhseqno		3
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index be26d2f..7dcb70c 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -36,6 +36,7 @@
 #define PG_INIT_PRIVS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_init_privs_d.h"
 
 /* ----------------
  *		pg_init_privs definition.  cpp turns this into
@@ -63,17 +64,6 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_init_privs * Form_pg_init_privs;
 
-/* ----------------
- *		compiler constants for pg_init_privs
- * ----------------
- */
-#define Natts_pg_init_privs				5
-#define Anum_pg_init_privs_objoid		1
-#define Anum_pg_init_privs_classoid		2
-#define Anum_pg_init_privs_objsubid		3
-#define Anum_pg_init_privs_privtype		4
-#define Anum_pg_init_privs_privs		5
-
 /*
  * It is important to know if the initial privileges are from initdb or from an
  * extension.  This enum is used to provide that differentiation and the two
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 5f82158..d2d878c 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -19,6 +19,7 @@
 #define PG_LANGUAGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_language_d.h"
 
 /* ----------------
  *		pg_language definition.  cpp turns this into
@@ -49,22 +50,4 @@ CATALOG(pg_language,2612)
  */
 typedef FormData_pg_language *Form_pg_language;
 
-/* ----------------
- *		compiler constants for pg_language
- * ----------------
- */
-#define Natts_pg_language				8
-#define Anum_pg_language_lanname		1
-#define Anum_pg_language_lanowner		2
-#define Anum_pg_language_lanispl		3
-#define Anum_pg_language_lanpltrusted	4
-#define Anum_pg_language_lanplcallfoid	5
-#define Anum_pg_language_laninline		6
-#define Anum_pg_language_lanvalidator	7
-#define Anum_pg_language_lanacl			8
-
-#define INTERNALlanguageId 12
-#define ClanguageId 13
-#define SQLlanguageId 14
-
 #endif							/* PG_LANGUAGE_H */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 1857ca4..2157bab 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -17,6 +17,7 @@
 #define PG_LARGEOBJECT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_d.h"
 
 /* ----------------
  *		pg_largeobject definition.  cpp turns this into
@@ -42,15 +43,6 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_largeobject *Form_pg_largeobject;
 
-/* ----------------
- *		compiler constants for pg_largeobject
- * ----------------
- */
-#define Natts_pg_largeobject			3
-#define Anum_pg_largeobject_loid		1
-#define Anum_pg_largeobject_pageno		2
-#define Anum_pg_largeobject_data		3
-
 extern Oid	LargeObjectCreate(Oid loid);
 extern void LargeObjectDrop(Oid loid);
 extern bool LargeObjectExists(Oid loid);
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 0cf7bcd..3d5e0cd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -19,6 +19,7 @@
 #define PG_LARGEOBJECT_METADATA_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_metadata_d.h"
 
 /* ----------------
  *		pg_largeobject_metadata definition. cpp turns this into
@@ -43,12 +44,4 @@ CATALOG(pg_largeobject_metadata,2995)
  */
 typedef FormData_pg_largeobject_metadata *Form_pg_largeobject_metadata;
 
-/* ----------------
- *		compiler constants for pg_largeobject_metadata
- * ----------------
- */
-#define Natts_pg_largeobject_metadata			2
-#define Anum_pg_largeobject_metadata_lomowner	1
-#define Anum_pg_largeobject_metadata_lomacl		2
-
 #endif							/* PG_LARGEOBJECT_METADATA_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 19b559f9..5f80e86 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -19,6 +19,7 @@
 #define PG_NAMESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_namespace_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_namespace definition.
@@ -49,20 +50,6 @@ CATALOG(pg_namespace,2615)
  */
 typedef FormData_pg_namespace *Form_pg_namespace;
 
-/* ----------------
- *		compiler constants for pg_namespace
- * ----------------
- */
-
-#define Natts_pg_namespace				3
-#define Anum_pg_namespace_nspname		1
-#define Anum_pg_namespace_nspowner		2
-#define Anum_pg_namespace_nspacl		3
-
-#define PG_CATALOG_NAMESPACE 11
-#define PG_TOAST_NAMESPACE 99
-#define PG_PUBLIC_NAMESPACE 2200
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index b10ceb9..1f64710 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -39,6 +39,7 @@
 #define PG_OPCLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opclass_d.h"
 
 /* ----------------
  *		pg_opclass definition.  cpp turns this into
@@ -66,29 +67,4 @@ CATALOG(pg_opclass,2616)
  */
 typedef FormData_pg_opclass *Form_pg_opclass;
 
-/* ----------------
- *		compiler constants for pg_opclass
- * ----------------
- */
-#define Natts_pg_opclass				8
-#define Anum_pg_opclass_opcmethod		1
-#define Anum_pg_opclass_opcname			2
-#define Anum_pg_opclass_opcnamespace	3
-#define Anum_pg_opclass_opcowner		4
-#define Anum_pg_opclass_opcfamily		5
-#define Anum_pg_opclass_opcintype		6
-#define Anum_pg_opclass_opcdefault		7
-#define Anum_pg_opclass_opckeytype		8
-
-#define DATE_BTREE_OPS_OID 3122
-#define FLOAT8_BTREE_OPS_OID 3123
-#define INT2_BTREE_OPS_OID 1979
-#define INT4_BTREE_OPS_OID 1978
-#define INT8_BTREE_OPS_OID 3124
-#define NUMERIC_BTREE_OPS_OID 3125
-#define OID_BTREE_OPS_OID 1981
-#define TEXT_BTREE_OPS_OID 3126
-#define TIMESTAMPTZ_BTREE_OPS_OID 3127
-#define TIMESTAMP_BTREE_OPS_OID 3128
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index cbe6884..a0b20f2 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -19,6 +19,7 @@
 #define PG_OPERATOR_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_operator_d.h"
 
 /* ----------------
  *		pg_operator definition.  cpp turns this into
@@ -52,75 +53,4 @@ CATALOG(pg_operator,2617)
  */
 typedef FormData_pg_operator *Form_pg_operator;
 
-/* ----------------
- *		compiler constants for pg_operator
- * ----------------
- */
-
-#define Natts_pg_operator				14
-#define Anum_pg_operator_oprname		1
-#define Anum_pg_operator_oprnamespace	2
-#define Anum_pg_operator_oprowner		3
-#define Anum_pg_operator_oprkind		4
-#define Anum_pg_operator_oprcanmerge	5
-#define Anum_pg_operator_oprcanhash		6
-#define Anum_pg_operator_oprleft		7
-#define Anum_pg_operator_oprright		8
-#define Anum_pg_operator_oprresult		9
-#define Anum_pg_operator_oprcom			10
-#define Anum_pg_operator_oprnegate		11
-#define Anum_pg_operator_oprcode		12
-#define Anum_pg_operator_oprrest		13
-#define Anum_pg_operator_oprjoin		14
-
-#define BooleanNotEqualOperator   85
-#define BooleanEqualOperator   91
-#define Int4EqualOperator	96
-#define Int4LessOperator	97
-#define TextEqualOperator	98
-#define TIDEqualOperator   387
-#define TIDLessOperator    2799
-#define Int8LessOperator	412
-#define OID_NAME_REGEXEQ_OP		639
-#define OID_TEXT_REGEXEQ_OP		641
-#define Float8LessOperator	672
-#define OID_BPCHAR_REGEXEQ_OP		1055
-#define ARRAY_EQ_OP 1070
-#define ARRAY_LT_OP 1072
-#define ARRAY_GT_OP 1073
-#define OID_NAME_LIKE_OP		1207
-#define OID_TEXT_LIKE_OP		1209
-#define OID_BPCHAR_LIKE_OP		1211
-#define OID_NAME_ICREGEXEQ_OP		1226
-#define OID_TEXT_ICREGEXEQ_OP		1228
-#define OID_BPCHAR_ICREGEXEQ_OP		1234
-#define OID_INET_SUB_OP			931
-#define OID_INET_SUBEQ_OP		932
-#define OID_INET_SUP_OP			933
-#define OID_INET_SUPEQ_OP		934
-#define OID_INET_OVERLAP_OP		3552
-#define OID_NAME_ICLIKE_OP		1625
-#define OID_TEXT_ICLIKE_OP		1627
-#define OID_BPCHAR_ICLIKE_OP	1629
-#define OID_BYTEA_LIKE_OP		2016
-#define OID_ARRAY_OVERLAP_OP	2750
-#define OID_ARRAY_CONTAINS_OP	2751
-#define OID_ARRAY_CONTAINED_OP	2752
-#define RECORD_EQ_OP 2988
-#define RECORD_LT_OP 2990
-#define RECORD_GT_OP 2991
-#define OID_RANGE_LESS_OP 3884
-#define OID_RANGE_LESS_EQUAL_OP 3885
-#define OID_RANGE_GREATER_EQUAL_OP 3886
-#define OID_RANGE_GREATER_OP 3887
-#define OID_RANGE_OVERLAP_OP 3888
-#define OID_RANGE_CONTAINS_ELEM_OP 3889
-#define OID_RANGE_CONTAINS_OP 3890
-#define OID_RANGE_ELEM_CONTAINED_OP 3891
-#define OID_RANGE_CONTAINED_OP 3892
-#define OID_RANGE_LEFT_OP 3893
-#define OID_RANGE_RIGHT_OP 3894
-#define OID_RANGE_OVERLAPS_LEFT_OP 3895
-#define OID_RANGE_OVERLAPS_RIGHT_OP 3896
-
 #endif							/* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index e9d8d3d..6ec28ae 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -19,6 +19,7 @@
 #define PG_OPFAMILY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opfamily_d.h"
 
 /* ----------------
  *		pg_opfamily definition. cpp turns this into
@@ -42,27 +43,4 @@ CATALOG(pg_opfamily,2753)
  */
 typedef FormData_pg_opfamily *Form_pg_opfamily;
 
-/* ----------------
- *		compiler constants for pg_opfamily
- * ----------------
- */
-#define Natts_pg_opfamily				4
-#define Anum_pg_opfamily_opfmethod		1
-#define Anum_pg_opfamily_opfname		2
-#define Anum_pg_opfamily_opfnamespace	3
-#define Anum_pg_opfamily_opfowner		4
-
-#define BOOL_BTREE_FAM_OID 424
-#define BPCHAR_BTREE_FAM_OID 426
-#define BYTEA_BTREE_FAM_OID 428
-#define NETWORK_BTREE_FAM_OID 1974
-#define INTEGER_BTREE_FAM_OID 1976
-#define NAME_BTREE_FAM_OID 1986
-#define OID_BTREE_FAM_OID 1989
-#define TEXT_BTREE_FAM_OID 1994
-#define TEXT_PATTERN_BTREE_FAM_OID 2095
-#define BPCHAR_PATTERN_BTREE_FAM_OID 2097
-#define BOOL_HASH_FAM_OID 2222
-#define TEXT_SPGIST_FAM_OID 4017
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index a8bda00..39ee67e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -18,6 +18,7 @@
 #define PG_PARTITIONED_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_partitioned_table_d.h"
 
 /* ----------------
  *		pg_partitioned_table definition.  cpp turns this into
@@ -59,18 +60,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
 
-/* ----------------
- *		compiler constants for pg_partitioned_table
- * ----------------
- */
-#define Natts_pg_partitioned_table				8
-#define Anum_pg_partitioned_table_partrelid		1
-#define Anum_pg_partitioned_table_partstrat		2
-#define Anum_pg_partitioned_table_partnatts		3
-#define Anum_pg_partitioned_table_partdefid		4
-#define Anum_pg_partitioned_table_partattrs		5
-#define Anum_pg_partitioned_table_partclass		6
-#define Anum_pg_partitioned_table_partcollation 7
-#define Anum_pg_partitioned_table_partexprs		8
-
 #endif							/* PG_PARTITIONED_TABLE_H */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index b1d9ece..116a4a0 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -19,6 +19,7 @@
 #define PG_PLTEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_pltemplate_d.h"
 
 /* ----------------
  *		pg_pltemplate definition.  cpp turns this into
@@ -50,18 +51,4 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 
-/* ----------------
- *		compiler constants for pg_pltemplate
- * ----------------
- */
-#define Natts_pg_pltemplate					8
-#define Anum_pg_pltemplate_tmplname			1
-#define Anum_pg_pltemplate_tmpltrusted		2
-#define Anum_pg_pltemplate_tmpldbacreate	3
-#define Anum_pg_pltemplate_tmplhandler		4
-#define Anum_pg_pltemplate_tmplinline		5
-#define Anum_pg_pltemplate_tmplvalidator	6
-#define Anum_pg_pltemplate_tmpllibrary		7
-#define Anum_pg_pltemplate_tmplacl			8
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 0d94f1a..543077c 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -1,15 +1,19 @@
-/*
+/*-------------------------------------------------------------------------
+ *
  * pg_policy.h
  *	 definition of the system "policy" relation (pg_policy)
  *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
+ *-------------------------------------------------------------------------
  */
 #ifndef PG_POLICY_H
 #define PG_POLICY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_policy_d.h"
 
 /* ----------------
  *		pg_policy definition. cpp turns this into
@@ -39,17 +43,4 @@ CATALOG(pg_policy,3256)
  */
 typedef FormData_pg_policy *Form_pg_policy;
 
-/* ----------------
- *		compiler constants for pg_policy
- * ----------------
- */
-#define Natts_pg_policy					7
-#define Anum_pg_policy_polname			1
-#define Anum_pg_policy_polrelid			2
-#define Anum_pg_policy_polcmd			3
-#define Anum_pg_policy_polpermissive	4
-#define Anum_pg_policy_polroles			5
-#define Anum_pg_policy_polqual			6
-#define Anum_pg_policy_polwithcheck		7
-
 #endif							/* PG_POLICY_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 80914dc..dd54224 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -18,6 +18,7 @@
 #define PG_PROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_proc_d.h"
 
 /* ----------------
  *		pg_proc definition.  cpp turns this into
@@ -76,40 +77,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_proc *Form_pg_proc;
 
-/* ----------------
- *		compiler constants for pg_proc
- * ----------------
- */
-#define Natts_pg_proc					29
-#define Anum_pg_proc_proname			1
-#define Anum_pg_proc_pronamespace		2
-#define Anum_pg_proc_proowner			3
-#define Anum_pg_proc_prolang			4
-#define Anum_pg_proc_procost			5
-#define Anum_pg_proc_prorows			6
-#define Anum_pg_proc_provariadic		7
-#define Anum_pg_proc_protransform		8
-#define Anum_pg_proc_proisagg			9
-#define Anum_pg_proc_proiswindow		10
-#define Anum_pg_proc_prosecdef			11
-#define Anum_pg_proc_proleakproof		12
-#define Anum_pg_proc_proisstrict		13
-#define Anum_pg_proc_proretset			14
-#define Anum_pg_proc_provolatile		15
-#define Anum_pg_proc_proparallel		16
-#define Anum_pg_proc_pronargs			17
-#define Anum_pg_proc_pronargdefaults	18
-#define Anum_pg_proc_prorettype			19
-#define Anum_pg_proc_proargtypes		20
-#define Anum_pg_proc_proallargtypes		21
-#define Anum_pg_proc_proargmodes		22
-#define Anum_pg_proc_proargnames		23
-#define Anum_pg_proc_proargdefaults		24
-#define Anum_pg_proc_protrftypes		25
-#define Anum_pg_proc_prosrc				26
-#define Anum_pg_proc_probin				27
-#define Anum_pg_proc_proconfig			28
-#define Anum_pg_proc_proacl				29
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for provolatile column: these indicate whether the result
@@ -143,4 +111,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define PROARGMODE_VARIADIC 'v'
 #define PROARGMODE_TABLE	't'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_PROC_H */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 7016197..94e9079 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -18,12 +18,12 @@
 #define PG_PUBLICATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_d.h"
 #include "catalog/objectaddress.h"
 
 /* ----------------
  *		pg_publication definition.  cpp turns this into
  *		typedef struct FormData_pg_publication
- *
  * ----------------
  */
 #define PublicationRelationId			6104
@@ -58,19 +58,6 @@ CATALOG(pg_publication,6104)
  */
 typedef FormData_pg_publication *Form_pg_publication;
 
-/* ----------------
- *		compiler constants for pg_publication
- * ----------------
- */
-
-#define Natts_pg_publication				6
-#define Anum_pg_publication_pubname			1
-#define Anum_pg_publication_pubowner		2
-#define Anum_pg_publication_puballtables	3
-#define Anum_pg_publication_pubinsert		4
-#define Anum_pg_publication_pubupdate		5
-#define Anum_pg_publication_pubdelete		6
-
 typedef struct PublicationActions
 {
 	bool		pubinsert;
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 661466f..864d6ca 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -18,11 +18,11 @@
 #define PG_PUBLICATION_REL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_rel_d.h"
 
 /* ----------------
  *		pg_publication_rel definition.  cpp turns this into
  *		typedef struct FormData_pg_publication_rel
- *
  * ----------------
  */
 #define PublicationRelRelationId				6106
@@ -40,13 +40,4 @@ CATALOG(pg_publication_rel,6106)
  */
 typedef FormData_pg_publication_rel *Form_pg_publication_rel;
 
-/* ----------------
- *		compiler constants for pg_publication_rel
- * ----------------
- */
-
-#define Natts_pg_publication_rel				2
-#define Anum_pg_publication_rel_prpubid			1
-#define Anum_pg_publication_rel_prrelid			2
-
 #endif							/* PG_PUBLICATION_REL_H */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index b7113bf..4c806fd 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -19,6 +19,7 @@
 #define PG_RANGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_range_d.h"
 
 /* ----------------
  *		pg_range definition.  cpp turns this into
@@ -44,18 +45,6 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_range *Form_pg_range;
 
-/* ----------------
- *		compiler constants for pg_range
- * ----------------
- */
-#define Natts_pg_range					6
-#define Anum_pg_range_rngtypid			1
-#define Anum_pg_range_rngsubtype		2
-#define Anum_pg_range_rngcollation		3
-#define Anum_pg_range_rngsubopc			4
-#define Anum_pg_range_rngcanonical		5
-#define Anum_pg_range_rngsubdiff		6
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0c5a05e..02856dd 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -18,6 +18,7 @@
 #define PG_REPLICATION_ORIGIN_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_replication_origin_d.h"
 #include "access/xlogdefs.h"
 
 /* ----------------
@@ -54,12 +55,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
-/* ----------------
- *		compiler constants for pg_replication_origin
- * ----------------
- */
-#define Natts_pg_replication_origin					2
-#define Anum_pg_replication_origin_roident			1
-#define Anum_pg_replication_origin_roname			2
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index a310ecb..d656990 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -22,6 +22,7 @@
 #define PG_REWRITE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_rewrite_d.h"
 
 /* ----------------
  *		pg_rewrite definition.  cpp turns this into
@@ -51,17 +52,4 @@ CATALOG(pg_rewrite,2618)
  */
 typedef FormData_pg_rewrite *Form_pg_rewrite;
 
-/* ----------------
- *		compiler constants for pg_rewrite
- * ----------------
- */
-#define Natts_pg_rewrite				7
-#define Anum_pg_rewrite_rulename		1
-#define Anum_pg_rewrite_ev_class		2
-#define Anum_pg_rewrite_ev_type			3
-#define Anum_pg_rewrite_ev_enabled		4
-#define Anum_pg_rewrite_is_instead		5
-#define Anum_pg_rewrite_ev_qual			6
-#define Anum_pg_rewrite_ev_action		7
-
 #endif							/* PG_REWRITE_H */
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 70dc01e..d6d2f97 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -12,6 +12,7 @@
 #define PG_SECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_seclabel_d.h"
 
 /* ----------------
  *		pg_seclabel definition.  cpp turns this into
@@ -32,15 +33,4 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
-/* ----------------
- *		compiler constants for pg_seclabel
- * ----------------
- */
-#define Natts_pg_seclabel			5
-#define Anum_pg_seclabel_objoid		1
-#define Anum_pg_seclabel_classoid	2
-#define Anum_pg_seclabel_objsubid	3
-#define Anum_pg_seclabel_provider	4
-#define Anum_pg_seclabel_label		5
-
 #endif							/* PG_SECLABEL_H */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index a78417e..de6ed1a 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -12,6 +12,7 @@
 #define PG_SEQUENCE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_sequence_d.h"
 
 #define SequenceRelationId	2224
 
@@ -27,16 +28,11 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+/* ----------------
+ *		Form_pg_sequence corresponds to a pointer to a tuple with
+ *		the format of pg_sequence relation.
+ * ----------------
+ */
 typedef FormData_pg_sequence *Form_pg_sequence;
 
-#define Natts_pg_sequence				8
-#define Anum_pg_sequence_seqrelid		1
-#define Anum_pg_sequence_seqtypid		2
-#define Anum_pg_sequence_seqstart		3
-#define Anum_pg_sequence_seqincrement	4
-#define Anum_pg_sequence_seqmax			5
-#define Anum_pg_sequence_seqmin			6
-#define Anum_pg_sequence_seqcache		7
-#define Anum_pg_sequence_seqcycle		8
-
 #endif							/* PG_SEQUENCE_H */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 17ac34a..708980b 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -28,6 +28,7 @@
 #define PG_SHDEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdepend_d.h"
 
 /* ----------------
  *		pg_shdepend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdepend *Form_pg_shdepend;
 
-/* ----------------
- *		compiler constants for pg_shdepend
- * ----------------
- */
-#define Natts_pg_shdepend			7
-#define Anum_pg_shdepend_dbid		1
-#define Anum_pg_shdepend_classid	2
-#define Anum_pg_shdepend_objid		3
-#define Anum_pg_shdepend_objsubid	4
-#define Anum_pg_shdepend_refclassid 5
-#define Anum_pg_shdepend_refobjid	6
-#define Anum_pg_shdepend_deptype	7
-
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index c0ecc0c..1777144 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -31,6 +31,7 @@
 #define PG_SHDESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdescription_d.h"
 
 /* ----------------
  *		pg_shdescription definition.    cpp turns this into
@@ -56,13 +57,4 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdescription * Form_pg_shdescription;
 
-/* ----------------
- *		compiler constants for pg_shdescription
- * ----------------
- */
-#define Natts_pg_shdescription			3
-#define Anum_pg_shdescription_objoid		1
-#define Anum_pg_shdescription_classoid	2
-#define Anum_pg_shdescription_description 3
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 57b854c..9fceeee 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  *
  * pg_shseclabel.h
- *	  definition of the system "security label" relation (pg_shseclabel)
+ *	  definition of the system "shared security label" relation (pg_shseclabel)
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -12,6 +12,7 @@
 #define PG_SHSECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shseclabel_d.h"
 
 /* ----------------
  *		pg_shseclabel definition. cpp turns this into
@@ -34,14 +35,4 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
-/* ----------------
- *		compiler constants for pg_shseclabel
- * ----------------
- */
-#define Natts_pg_shseclabel				4
-#define Anum_pg_shseclabel_objoid		1
-#define Anum_pg_shseclabel_classoid		2
-#define Anum_pg_shseclabel_provider		3
-#define Anum_pg_shseclabel_label		4
-
 #endif							/* PG_SHSECLABEL_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 8ef2e55..81984d4 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_d.h"
 
 /* ----------------
  *		pg_statistic definition.  cpp turns this into
@@ -127,38 +128,6 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_statistic *Form_pg_statistic;
 
-/* ----------------
- *		compiler constants for pg_statistic
- * ----------------
- */
-#define Natts_pg_statistic				26
-#define Anum_pg_statistic_starelid		1
-#define Anum_pg_statistic_staattnum		2
-#define Anum_pg_statistic_stainherit	3
-#define Anum_pg_statistic_stanullfrac	4
-#define Anum_pg_statistic_stawidth		5
-#define Anum_pg_statistic_stadistinct	6
-#define Anum_pg_statistic_stakind1		7
-#define Anum_pg_statistic_stakind2		8
-#define Anum_pg_statistic_stakind3		9
-#define Anum_pg_statistic_stakind4		10
-#define Anum_pg_statistic_stakind5		11
-#define Anum_pg_statistic_staop1		12
-#define Anum_pg_statistic_staop2		13
-#define Anum_pg_statistic_staop3		14
-#define Anum_pg_statistic_staop4		15
-#define Anum_pg_statistic_staop5		16
-#define Anum_pg_statistic_stanumbers1	17
-#define Anum_pg_statistic_stanumbers2	18
-#define Anum_pg_statistic_stanumbers3	19
-#define Anum_pg_statistic_stanumbers4	20
-#define Anum_pg_statistic_stanumbers5	21
-#define Anum_pg_statistic_stavalues1	22
-#define Anum_pg_statistic_stavalues2	23
-#define Anum_pg_statistic_stavalues3	24
-#define Anum_pg_statistic_stavalues4	25
-#define Anum_pg_statistic_stavalues5	26
-
 /*
  * Several statistical slot "kinds" are defined by core PostgreSQL, as
  * documented below.  Also, custom data types can define their own "kind"
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index d656cd8..be84037 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_EXT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_ext_d.h"
 
 /* ----------------
  *		pg_statistic_ext definition.  cpp turns this into
@@ -59,20 +60,6 @@ CATALOG(pg_statistic_ext,3381)
  */
 typedef FormData_pg_statistic_ext *Form_pg_statistic_ext;
 
-/* ----------------
- *		compiler constants for pg_statistic_ext
- * ----------------
- */
-#define Natts_pg_statistic_ext					8
-#define Anum_pg_statistic_ext_stxrelid			1
-#define Anum_pg_statistic_ext_stxname			2
-#define Anum_pg_statistic_ext_stxnamespace		3
-#define Anum_pg_statistic_ext_stxowner			4
-#define Anum_pg_statistic_ext_stxkeys			5
-#define Anum_pg_statistic_ext_stxkind			6
-#define Anum_pg_statistic_ext_stxndistinct		7
-#define Anum_pg_statistic_ext_stxdependencies	8
-
 #define STATS_EXT_NDISTINCT			'd'
 #define STATS_EXT_DEPENDENCIES		'f'
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 46d0b48..1b2981f 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -12,6 +12,7 @@
 #define PG_SUBSCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -57,21 +58,6 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 
 typedef FormData_pg_subscription *Form_pg_subscription;
 
-/* ----------------
- *		compiler constants for pg_subscription
- * ----------------
- */
-#define Natts_pg_subscription					8
-#define Anum_pg_subscription_subdbid			1
-#define Anum_pg_subscription_subname			2
-#define Anum_pg_subscription_subowner			3
-#define Anum_pg_subscription_subenabled			4
-#define Anum_pg_subscription_subconninfo		5
-#define Anum_pg_subscription_subslotname		6
-#define Anum_pg_subscription_subsynccommit		7
-#define Anum_pg_subscription_subpublications	8
-
-
 typedef struct Subscription
 {
 	Oid			oid;			/* Oid of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index d936973..64aa121 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -14,6 +14,7 @@
 
 #include "access/xlogdefs.h"
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_rel_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -34,15 +35,7 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
-/* ----------------
- *		compiler constants for pg_subscription_rel
- * ----------------
- */
-#define Natts_pg_subscription_rel				4
-#define Anum_pg_subscription_rel_srsubid		1
-#define Anum_pg_subscription_rel_srrelid		2
-#define Anum_pg_subscription_rel_srsubstate		3
-#define Anum_pg_subscription_rel_srsublsn		4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		substate constants
@@ -60,6 +53,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 #define SUBREL_STATE_SYNCWAIT	'w' /* waiting for sync */
 #define SUBREL_STATE_CATCHUP	'c' /* catching up with apply */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 typedef struct SubscriptionRelState
 {
 	Oid			relid;
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 75a3a2e..bd9c118 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -19,6 +19,7 @@
 #define PG_TABLESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_tablespace_d.h"
 
 /* ----------------
  *		pg_tablespace definition.  cpp turns this into
@@ -45,18 +46,4 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
  */
 typedef FormData_pg_tablespace *Form_pg_tablespace;
 
-/* ----------------
- *		compiler constants for pg_tablespace
- * ----------------
- */
-
-#define Natts_pg_tablespace				4
-#define Anum_pg_tablespace_spcname		1
-#define Anum_pg_tablespace_spcowner		2
-#define Anum_pg_tablespace_spcacl		3
-#define Anum_pg_tablespace_spcoptions	4
-
-#define DEFAULTTABLESPACE_OID 1663
-#define GLOBALTABLESPACE_OID 1664
-
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 21109db..c571fb5 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -1,8 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * pg_transform.h
+ *	  definition of the system "transform" relation (pg_transform)
  *
- * Copyright (c) 2012-2018, PostgreSQL Global Development Group
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_transform.h
  *
@@ -16,6 +19,7 @@
 #define PG_TRANSFORM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_transform_d.h"
 
 /* ----------------
  *		pg_transform definition.  cpp turns this into
@@ -32,16 +36,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
-typedef FormData_pg_transform *Form_pg_transform;
-
 /* ----------------
- *		compiler constants for pg_transform
+ *		Form_pg_transform corresponds to a pointer to a tuple with
+ *		the format of pg_transform relation.
  * ----------------
  */
-#define Natts_pg_transform			4
-#define Anum_pg_transform_trftype	1
-#define Anum_pg_transform_trflang	2
-#define Anum_pg_transform_trffromsql	3
-#define Anum_pg_transform_trftosql	4
+typedef FormData_pg_transform *Form_pg_transform;
 
 #endif							/* PG_TRANSFORM_H */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index e307039..2a5d05e 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -19,6 +19,7 @@
 #define PG_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_trigger_d.h"
 
 /* ----------------
  *		pg_trigger definition.  cpp turns this into
@@ -70,29 +71,6 @@ CATALOG(pg_trigger,2620)
  */
 typedef FormData_pg_trigger *Form_pg_trigger;
 
-/* ----------------
- *		compiler constants for pg_trigger
- * ----------------
- */
-#define Natts_pg_trigger				17
-#define Anum_pg_trigger_tgrelid			1
-#define Anum_pg_trigger_tgname			2
-#define Anum_pg_trigger_tgfoid			3
-#define Anum_pg_trigger_tgtype			4
-#define Anum_pg_trigger_tgenabled		5
-#define Anum_pg_trigger_tgisinternal	6
-#define Anum_pg_trigger_tgconstrrelid	7
-#define Anum_pg_trigger_tgconstrindid	8
-#define Anum_pg_trigger_tgconstraint	9
-#define Anum_pg_trigger_tgdeferrable	10
-#define Anum_pg_trigger_tginitdeferred	11
-#define Anum_pg_trigger_tgnargs			12
-#define Anum_pg_trigger_tgattr			13
-#define Anum_pg_trigger_tgargs			14
-#define Anum_pg_trigger_tgqual			15
-#define Anum_pg_trigger_tgoldtable		16
-#define Anum_pg_trigger_tgnewtable		17
-
 /* Bits within tgtype */
 #define TRIGGER_TYPE_ROW				(1 << 0)
 #define TRIGGER_TYPE_BEFORE				(1 << 1)
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 21e6c2c..d0b7aa9 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_d.h"
 
 /* ----------------
  *		pg_ts_config definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config,3602)
 
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
-/* ----------------
- *		compiler constants for pg_ts_config
- * ----------------
- */
-#define Natts_pg_ts_config				4
-#define Anum_pg_ts_config_cfgname		1
-#define Anum_pg_ts_config_cfgnamespace	2
-#define Anum_pg_ts_config_cfgowner		3
-#define Anum_pg_ts_config_cfgparser		4
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 3b5e791..cdee4b4 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_MAP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_map_d.h"
 
 /* ----------------
  *		pg_ts_config_map definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
-/* ----------------
- *		compiler constants for pg_ts_config_map
- * ----------------
- */
-#define Natts_pg_ts_config_map				4
-#define Anum_pg_ts_config_map_mapcfg		1
-#define Anum_pg_ts_config_map_maptokentype	2
-#define Anum_pg_ts_config_map_mapseqno		3
-#define Anum_pg_ts_config_map_mapdict		4
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 74c80f0..58af179 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -19,6 +19,7 @@
 #define PG_TS_DICT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_dict_d.h"
 
 /* ----------------
  *		pg_ts_dict definition.  cpp turns this into
@@ -41,15 +42,4 @@ CATALOG(pg_ts_dict,3600)
 
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
-/* ----------------
- *		compiler constants for pg_ts_dict
- * ----------------
- */
-#define Natts_pg_ts_dict				5
-#define Anum_pg_ts_dict_dictname		1
-#define Anum_pg_ts_dict_dictnamespace	2
-#define Anum_pg_ts_dict_dictowner		3
-#define Anum_pg_ts_dict_dicttemplate	4
-#define Anum_pg_ts_dict_dictinitoption	5
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5b5edd0..3baaef0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -19,6 +19,7 @@
 #define PG_TS_PARSER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_parser_d.h"
 
 /* ----------------
  *		pg_ts_parser definition.  cpp turns this into
@@ -40,17 +41,4 @@ CATALOG(pg_ts_parser,3601)
 
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
-/* ----------------
- *		compiler constants for pg_ts_parser
- * ----------------
- */
-#define Natts_pg_ts_parser					7
-#define Anum_pg_ts_parser_prsname			1
-#define Anum_pg_ts_parser_prsnamespace		2
-#define Anum_pg_ts_parser_prsstart			3
-#define Anum_pg_ts_parser_prstoken			4
-#define Anum_pg_ts_parser_prsend			5
-#define Anum_pg_ts_parser_prsheadline		6
-#define Anum_pg_ts_parser_prslextype		7
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index b641788..7ea6e15 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -19,6 +19,7 @@
 #define PG_TS_TEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_template_d.h"
 
 /* ----------------
  *		pg_ts_template definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_template,3764)
 
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
-/* ----------------
- *		compiler constants for pg_ts_template
- * ----------------
- */
-#define Natts_pg_ts_template				4
-#define Anum_pg_ts_template_tmplname		1
-#define Anum_pg_ts_template_tmplnamespace	2
-#define Anum_pg_ts_template_tmplinit		3
-#define Anum_pg_ts_template_tmpllexize		4
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 6aa9185..f7ddb0c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -19,6 +19,7 @@
 #define PG_TYPE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_type_d.h"
 
 /* ----------------
  *		pg_type definition.  cpp turns this into
@@ -231,135 +232,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_type *Form_pg_type;
 
-/* ----------------
- *		compiler constants for pg_type
- * ----------------
- */
-#define Natts_pg_type					30
-#define Anum_pg_type_typname			1
-#define Anum_pg_type_typnamespace		2
-#define Anum_pg_type_typowner			3
-#define Anum_pg_type_typlen				4
-#define Anum_pg_type_typbyval			5
-#define Anum_pg_type_typtype			6
-#define Anum_pg_type_typcategory		7
-#define Anum_pg_type_typispreferred		8
-#define Anum_pg_type_typisdefined		9
-#define Anum_pg_type_typdelim			10
-#define Anum_pg_type_typrelid			11
-#define Anum_pg_type_typelem			12
-#define Anum_pg_type_typarray			13
-#define Anum_pg_type_typinput			14
-#define Anum_pg_type_typoutput			15
-#define Anum_pg_type_typreceive			16
-#define Anum_pg_type_typsend			17
-#define Anum_pg_type_typmodin			18
-#define Anum_pg_type_typmodout			19
-#define Anum_pg_type_typanalyze			20
-#define Anum_pg_type_typalign			21
-#define Anum_pg_type_typstorage			22
-#define Anum_pg_type_typnotnull			23
-#define Anum_pg_type_typbasetype		24
-#define Anum_pg_type_typtypmod			25
-#define Anum_pg_type_typndims			26
-#define Anum_pg_type_typcollation		27
-#define Anum_pg_type_typdefaultbin		28
-#define Anum_pg_type_typdefault			29
-#define Anum_pg_type_typacl				30
-
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define JSONOID 114
-#define XMLOID 142
-#define PGNODETREEOID	194
-#define PGNDISTINCTOID	3361
-#define PGDEPENDENCIESOID	3402
-#define PGDDLCOMMANDOID 32
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define MACADDROID 829
-#define INETOID 869
-#define CIDROID 650
-#define MACADDR8OID 774
-#define INT2ARRAYOID		1005
-#define INT4ARRAYOID		1007
-#define TEXTARRAYOID		1009
-#define OIDARRAYOID			1028
-#define FLOAT4ARRAYOID 1021
-#define ACLITEMOID		1033
-#define CSTRINGARRAYOID		1263
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
-#define RECORDOID		2249
-#define RECORDARRAYOID	2287
-#define CSTRINGOID		2275
-#define ANYOID			2276
-#define ANYARRAYOID		2277
-#define VOIDOID			2278
-#define TRIGGEROID		2279
-#define EVTTRIGGEROID		3838
-#define LANGUAGE_HANDLEROID		2280
-#define INTERNALOID		2281
-#define OPAQUEOID		2282
-#define ANYELEMENTOID	2283
-#define ANYNONARRAYOID	2776
-#define ANYENUMOID		3500
-#define FDW_HANDLEROID	3115
-#define INDEX_AM_HANDLEROID 325
-#define TSM_HANDLEROID	3310
-#define ANYRANGEOID		3831
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * macros
@@ -396,4 +269,6 @@ typedef FormData_pg_type *Form_pg_type;
 	 (typid) == ANYENUMOID || \
 	 (typid) == ANYRANGEOID)
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_TYPE_H */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 3da6496..ec62ee2 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -18,6 +18,7 @@
 #define PG_USER_MAPPING_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_user_mapping_d.h"
 
 /* ----------------
  *		pg_user_mapping definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_user_mapping,1418)
  */
 typedef FormData_pg_user_mapping *Form_pg_user_mapping;
 
-/* ----------------
- *		compiler constants for pg_user_mapping
- * ----------------
- */
-
-#define Natts_pg_user_mapping				3
-#define Anum_pg_user_mapping_umuser			1
-#define Anum_pg_user_mapping_umserver		2
-#define Anum_pg_user_mapping_umoptions		3
-
 #endif							/* PG_USER_MAPPING_H */
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 7d6d7d0..0404385 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -255,7 +255,7 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), TIMETZOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
-		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), ZPBITOID, ECPG_ARRAY_NONE, stmt->lineno))
+		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), BITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), VARBITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index 5d9eeca..79a6cf8 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -1,9 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_type.h
- *	  Hard-wired knowledge about some standard type OIDs.
- *
- * XXX keep this in sync with src/include/catalog/pg_type.h
+ *	  Interface to generated type OID symbols.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -15,65 +13,6 @@
 #ifndef PG_TYPE_H
 #define PG_TYPE_H
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define INETOID 869
-#define CIDROID 650
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define ZPBITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
+#include "catalog/pg_type_d.h"
 
 #endif							/* PG_TYPE_H */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index fe66de9..1bb3513 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -455,12 +455,18 @@ EOF
 
 	my $mf = Project::read_file('src/backend/catalog/Makefile');
 	$mf =~ s{\\\r?\n}{}g;
-	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
-	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @bki_srcs = split /\s+/, $1;
 	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
 	my @bki_data = split /\s+/, $1;
+
+	my $mfh = Project::read_file('src/backend/catalog/Makefile.headers');
+	$mfh =~ s{\\\r?\n}{}g;
+	$mfh =~ /^CATALOG_HEADERS\s*:?=(.*)$/gm
+	  || croak "Could not find CATALOG_HEADERS in Makefile.headers\n";
+	my @bki_srcs = split /\s+/, $1;
+	push @bki_srcs, 'toasting.h';
+	push @bki_srcs, 'indexing.h';
+
 	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
@@ -468,13 +474,23 @@ EOF
 				'src/backend/catalog/postgres.bki',
 				"src/include/catalog/$bki"))
 		{
-			print "Generating postgres.bki and schemapg.h...\n";
+			print "Generating postgres.bki and generated headers...\n";
 			chdir('src/backend/catalog');
 			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
-			system(
-"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
-			);
+			system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
 			chdir('../../..');
+
+			# Copy generated headers to include directory.
+			opendir(my $dh, 'src/backend/catalog/')
+			  || die "Can't opendir src/backend/catalog/ $!";
+			my @def_headers = grep { /pg_\w+_d\.h$/  } readdir($dh);
+			closedir $dh;
+			foreach my $def_header (@def_headers)
+			{
+				copyFile(
+				"src/backend/catalog/$def_header",
+				"src/include/catalog/$def_header");
+			}
 			copyFile(
 				'src/backend/catalog/schemapg.h',
 				'src/include/catalog/schemapg.h');
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 0a88b52..b052496 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -48,6 +48,7 @@ if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h
 if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
 if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h
+if exist src\include\catalog\pg_*_d.h del /q src\include\catalog\pg_*_d.h
 if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
 
 if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h
@@ -67,6 +68,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalo
 if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
 if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
 if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
+if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
 if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
 if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index a32aaa6..79243a1 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -198,8 +198,8 @@ sub pre_indent
 s!(^#ifdef[ \t]+__cplusplus.*\nextern[ \t]+"C"[ \t]*\n)\{[ \t]*$!$1$extern_c_start!gm;
 	$source =~ s!(^#ifdef[ \t]+__cplusplus.*\n)\}[ \t]*$!$1$extern_c_stop!gm;
 
-	# Protect backslashes in DATA() and wrapping in CATALOG()
-	$source =~ s!^((DATA|CATALOG)\(.*)$!/*$1*/!gm;
+	# Protect wrapping in CATALOG()
+	$source =~ s!^(CATALOG\(.*)$!/*$1*/!gm;
 
 	return $source;
 }
@@ -210,8 +210,8 @@ sub post_indent
 	my $source          = shift;
 	my $source_filename = shift;
 
-	# Restore DATA/CATALOG lines
-	$source =~ s!^/\*((DATA|CATALOG)\(.*)\*/$!$1!gm;
+	# Restore CATALOG lines
+	$source =~ s!^/\*(CATALOG\(.*)\*/$!$1!gm;
 
 	# Put back braces for extern "C"
 	$source =~ s!^/\* Open extern "C" \*/$!{!gm;
-- 
2.7.4

#36John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#35)
7 attachment(s)
Re: WIP: a way forward on bootstrap data

Version 8, rebased against 76b6aa41f41d.

-John Naylor

Attachments:

v8-apply-bootstrap-data-patches.shapplication/x-sh; name=v8-apply-bootstrap-data-patches.shDownload
v8-0001-Create-data-conversion-infrastructure.patchtext/x-patch; charset=US-ASCII; name=v8-0001-Create-data-conversion-infrastructure.patchDownload
From 862165136653994f14db91bc9fc95891751a7805 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 15 Jan 2018 10:19:30 +0700
Subject: [PATCH v7] Create data conversion infrastructure

convert_header2dat.pl turns DATA()/(SH)DESCR() statements into
serialized Perl data structures in pg_*.dat files, preserving comments
along the way. This is a one-off script, but it is committed to the
repo in case third parties want to convert their own catalog data.

The pg_tablespace.h changes allow the OID symbols to be captured
correctly.

Remove data parsing from the original Catalogs() function and rename it
to ParseHeader() to reflect its new, limited role of extracting the
schema info from a single header. The new data files are handled by the
new function ParseData(). Having these functions work with only one file
at a time requires their callers to do more work, but results in a cleaner
design.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, preserves comments and folds
consecutive blank lines. The meta-attributes oid, oid_symbol and
(sh)descr are on their own line, if present.
---
 src/backend/catalog/Catalog.pm            | 227 +++++++++--------
 src/include/catalog/convert_header2dat.pl | 394 ++++++++++++++++++++++++++++++
 src/include/catalog/pg_tablespace.h       |   3 +-
 src/include/catalog/rewrite_dat.pl        | 200 +++++++++++++++
 4 files changed, 706 insertions(+), 118 deletions(-)
 create mode 100644 src/include/catalog/convert_header2dat.pl
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 9ced154..60e641e 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,19 +33,16 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
 		my %catalog;
+		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
 
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -64,9 +60,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -74,68 +67,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
-			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -143,16 +85,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -173,7 +112,7 @@ sub Catalogs
 				}
 				if (/^}/)
 				{
-					undef $declaring_attributes;
+					$declaring_attributes = 0;
 				}
 				else
 				{
@@ -227,32 +166,107 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
-	}
-	return \%catalogs;
+	return \%catalog;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	$input_file =~ /\w+\.dat$/
+	  or die "Input file needs to be a .dat file.\n";
+	my $data = [];
+
+	# Read entire file into a string and eval it.
+	if (!$preserve_formatting)
+	{
+		my $file_string = do
+		{
+			local $/ = undef;
+			open my $ifd, "<", $input_file or die "$input_file: $!";
+			<$ifd>;
+		};
+
+		eval '$data = ' . $file_string;
+		print "Error : $@\n" if $@;
+		return $data;
+	}
+
+	# When preserving formatting, we scan the file one line at a time
+	# and decide how to handle each item. We don't check too closely
+	# for valid syntax, since we assume it will be checked otherwise.
+	my $prev_blank = 0;
+	open(my $ifd, '<', $input_file) or die "$input_file: $!";
+	while (<$ifd>)
+	{
+		my $datum;
+
+		# Capture non-consecutive blank lines.
+		if (/^\s*$/)
+		{
+			next if $prev_blank;
+			$prev_blank = 1;
+
+			# Newline gets added by caller.
+			$datum = '';
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		# Capture comments that are on their own line.
+		if (/^\s*(#.*?)\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture brackets that are on their own line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture hash references
+		# NB: Assumes that the next hash ref can't start on the
+		# same line where the present one ended.
+		# Not foolproof, but we shouldn't need a full parser,
+		# since we expect relatively well-behaved input.
+		elsif (/{/)
+		{
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+			}
+			else
+			{
+				my $next_line = <$ifd>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+		push @$data, $datum if defined $datum;
+	}
+	close $ifd;
+	return $data;
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -308,7 +322,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -340,22 +353,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/convert_header2dat.pl b/src/include/catalog/convert_header2dat.pl
new file mode 100644
index 0000000..518a7eb
--- /dev/null
+++ b/src/include/catalog/convert_header2dat.pl
@@ -0,0 +1,394 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# convert_header2dat.pl
+#    Perl script that parses the catalog header files for BKI
+#    DATA() and (SH)DESCR() statements, as well as defined symbols
+#    referring to OIDs, and writes them out as native perl data
+#    structures. White space and header commments referring to DATA()
+#    lines are preserved. Some functions are loosely copied from
+#    src/backend/catalog/Catalog.pm, whose equivalents have been
+#    removed.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/convert_header2dat.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+
+# No $VARs - we add our own later.
+$Data::Dumper::Terse = 1;
+
+my @input_files;
+my $output_path = '';
+my $major_version;
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n" if !@input_files;
+foreach my $input_file (@input_files)
+{
+	if ($input_file !~ /\.h$/)
+	{
+		die "Input files need to be header files.\n";
+	}
+}
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Read all the input header files into internal data structures
+# XXX This script is not robust against non-catalog headers. It's best
+# to pass it the same list found in backend/catalog/Makefile.
+my $catalogs = catalogs(@input_files);
+
+# produce output, one catalog at a time
+foreach my $catname (@{ $catalogs->{names} })
+{
+	my $catalog = $catalogs->{$catname};
+	my $schema  = $catalog->{columns};
+
+	# First, see if the header has any data entries. This is necessary
+	# because headers with no DATA may still have comments that catalogs()
+	# thought was in a DATA section.
+	my $found_one = 0;
+	foreach my $data (@{ $catalog->{data} })
+	{
+		if (ref $data eq 'HASH')
+		{
+			$found_one = 1;
+		}
+	}
+	next if !$found_one;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		my $atttype = $column->{type};
+		push @attnames, $attname;
+	}
+
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write out data file.
+
+	print $dat <<EOM;
+#----------------------------------------------------------------------
+#
+# $catname.dat
+#    Initial contents of the $catname system relation.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/include/catalog/$catname.dat
+#
+#----------------------------------------------------------------------
+
+EOM
+
+	print $dat "[\n\n";
+
+	foreach my $data (@{ $catalog->{data} })
+	{
+
+		# Either a blank line or comment - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			# Split line into tokens without interpreting their meaning.
+			my %bki_values;
+			@bki_values{@attnames} = split_data_line($data->{bki_values});
+
+			# Flatten data hierarchy.
+			delete $data->{bki_values};
+			my %flat_data = (%$data, %bki_values);
+
+			# Strip double quotes for readability. Most will be put
+			# back in when writing postgres.bki
+			foreach (values %flat_data)
+			{
+				s/"//g;
+			}
+
+			print $dat Dumper(\%flat_data);
+			print $dat ",\n";
+		}
+	}
+
+	print $dat "\n]\n";
+}
+
+
+# This function is a heavily modified version of its former namesake
+# in Catalog.pm. There is possibly some dead code here. It's not worth
+# removing.
+sub catalogs
+{
+	my (%catalogs, $catname, $declaring_attributes, $most_recent);
+	$catalogs{names} = [];
+
+	# There are a few types which are given one name in the C source, but a
+	# different name at the SQL level.  These are enumerated here.
+	my %RENAME_ATTTYPE = (
+		'int16'         => 'int2',
+		'int32'         => 'int4',
+		'int64'         => 'int8',
+		'Oid'           => 'oid',
+		'NameData'      => 'name',
+		'TransactionId' => 'xid',
+		'XLogRecPtr'    => 'pg_lsn');
+
+	foreach my $input_file (@_)
+	{
+		my %catalog;
+		$catalog{columns} = [];
+		$catalog{data}    = [];
+		my $is_varlen     = 0;
+		my $saving_comments = 0;
+
+		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
+
+		# Skip these to keep the code simple.
+		next if $filename eq 'toasting'
+				or $filename eq 'indexing';
+
+		# Scan the input file.
+		while (<$ifh>)
+		{
+			# Determine whether we're in the DATA section and should
+			# start saving header comments.
+			if (/(\/|\s)\*\s+initial contents of pg_/)
+			{
+				$saving_comments = 1;
+			}
+
+			if ($saving_comments)
+			{
+				if ( m{^(/|\s+)\*\s+(.+?)(\*/)?$} )
+				{
+					my $comment = $2;
+
+					# Filter out comments we know we don't want.
+					if ($comment !~ /^-+$/
+						and $comment !~ /initial contents of pg/
+						and $comment !~ /PG_\w+_H/)
+					{
+						# Trim whitespace.
+						$comment =~ s/^\s+//;
+						$comment =~ s/\s+$//;
+						push @{ $catalog{data} }, "# $comment";
+					}
+				}
+				elsif (/^\s*$/)
+				{
+					# Preserve blank lines. Newline gets added by caller.
+					push @{ $catalog{data} }, '';
+				}
+			}
+			else
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+			}
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+
+			# Push the data into the appropriate data structure.
+			if (/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
+			{
+				if ($2)
+				{
+					push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
+				}
+				else
+				{
+					push @{ $catalog{data} }, { bki_values => $3 };
+				}
+			}
+			# Save defined symbols referring to OIDs.
+			elsif (/^#define\s+(\S+)\s+(\d+)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+				my $oid_symbol = $1;
+
+				# Print a warning if we find a defined symbol that is not
+				# associated with the most recent DATA() statement, and is
+				# not one of the symbols that we know to exclude.
+				if (ref $most_recent ne 'HASH'
+					and $oid_symbol !~ m/^Natts/
+					and $oid_symbol !~ m/^Anum/
+					and $oid_symbol !~ m/^STATISTIC_/
+					and $oid_symbol !~ m/^TRIGGER_TYPE_/
+					and $oid_symbol !~ m/RelationId$/
+					and $oid_symbol !~ m/Relation_Rowtype_Id$/)
+				{
+					printf "Unhandled #define symbol: $filename: $_\n";
+					next;
+				}
+				if (defined $most_recent->{oid} && $most_recent->{oid} ne $2)
+				{
+					print "#define does not apply to last seen oid \n$_\n";
+					next;
+				}
+				$most_recent->{oid_symbol} = $oid_symbol;
+			}
+			elsif (/^DESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "DESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "DESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{descr} = $1;
+				}
+			}
+			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			{
+				$most_recent = $catalog{data}->[-1];
+
+				# Test if most recent line is not a DATA() statement.
+				if (ref $most_recent ne 'HASH')
+				{
+					die "SHDESCR() does not apply to any catalog ($input_file)";
+				}
+				if (!defined $most_recent->{oid})
+				{
+					die "SHDESCR() does not apply to any oid ($input_file)";
+				}
+				elsif ($1 ne '')
+				{
+					$most_recent->{shdescr} = $1;
+				}
+			}
+			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			{
+				$catname = $1;
+				$catalog{relation_oid} = $2;
+
+				# Store pg_* catalog names in the same order we receive them
+				push @{ $catalogs{names} }, $catname;
+
+				$declaring_attributes = 1;
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
+				next if (/^#/);
+				if (/^}/)
+				{
+					undef $declaring_attributes;
+				}
+				else
+				{
+					my %column;
+					my ($atttype, $attname, $attopt) = split /\s+/, $_;
+					die "parse error ($input_file)" unless $attname;
+					if (exists $RENAME_ATTTYPE{$atttype})
+					{
+						$atttype = $RENAME_ATTTYPE{$atttype};
+					}
+					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					{
+						$attname = $1;
+						$atttype .= '[]';
+					}
+
+					$column{type} = $atttype;
+					$column{name} = $attname;
+
+					push @{ $catalog{columns} }, \%column;
+				}
+			}
+		}
+		if (defined $catname)
+		{
+			$catalogs{$catname} = \%catalog;
+		}
+		close $ifh;
+	}
+	return \%catalogs;
+}
+
+# Split a DATA line into fields.
+# Call this on the bki_values element of a DATA item returned by catalogs();
+# it returns a list of field values.  We don't strip quoting from the fields.
+# Note: It should be safe to assign the result to a list of length equal to
+# the nominal number of catalog fields, because the number of fields were
+# checked in the original Catalog module.
+sub split_data_line
+{
+	my $bki_values = shift;
+
+	my @result = $bki_values =~ /"[^"]*"|\S+/g;
+	return @result;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: convert_macro2dat.pl [options] header...
+
+Options:
+    -o               output path
+
+convert_macro2dat.pl generates data files from the same header files
+currently parsed by Catalag.pm.
+
+EOM
+}
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 3967056..360fc4c 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -58,9 +58,8 @@ typedef FormData_pg_tablespace *Form_pg_tablespace;
 #define Anum_pg_tablespace_spcoptions	4
 
 DATA(insert OID = 1663 ( pg_default PGUID _null_ _null_ ));
-DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
-
 #define DEFAULTTABLESPACE_OID 1663
+DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
 #define GLOBALTABLESPACE_OID 1664
 
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..e0d0d66
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,200 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata entries are on their own line within the data entry.
+#    -Attributes are in the same order they would be in the catalog table.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @METADATA = ('oid', 'oid_symbol', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Back up old data file rather than overwrite it. The input path and
+	# output path are normally the same, but we don't assume that.
+	my $newdatfile = "$output_path$catname.dat";
+	if (-e $newdatfile)
+	{
+		rename($newdatfile, $newdatfile . '.bak')
+		  or die "rename: $newdatfile: $!";
+	}
+	open my $dat, '>', $newdatfile
+	  or die "can't open $newdatfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @METADATA);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+# Format the individual elements of a Perl hash into a valid string
+# representation. We do this ourselves, rather than use native Perl
+# facilities, so we can keep control over the exact formatting of the
+# data files.
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+# XXX This is of questionable utility, since the files are under version
+# control, after all.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v8-0002-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v8-0002-Hand-edits-of-data-files.patchDownload
From e9dbe769a8d086693aec770a2320bd903664dbed Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Tue, 16 Jan 2018 14:02:38 +0700
Subject: [PATCH 2/2] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    |  9 ++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     |  9 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 45 ++++++----------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 45 ++++++----------------
 12 files changed, 143 insertions(+), 87 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index a77bab0..86fecba 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -20,48 +20,56 @@
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int24
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int28
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int4
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int42
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int48
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int8
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int82
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int84
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
@@ -101,18 +109,21 @@
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float48
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators float8
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float84
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
@@ -176,48 +187,56 @@
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamp
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamptz
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
@@ -389,17 +408,22 @@
 
 # bpchar_ops
 { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # char_ops
 { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+
 # date_ops
 { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+
 # float_ops
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+
 # network_ops
 { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+
 # integer_ops
 { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
@@ -410,52 +434,76 @@
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+
 # interval_ops
 { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr_ops
 { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr8_ops
 { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+
 # name_ops
 { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+
 # oid_ops
 { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+
 # oidvector_ops
 { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+
 # text_ops
 { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # time_ops
 { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamptz_ops
 { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+
 # timetz_ops
 { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamp_ops
 { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+
 # bool_ops
 { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+
 # bytea_ops
 { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+
 # xid_ops
 { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+
 # cid_ops
 { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+
 # abstime_ops
 { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+
 # reltime_ops
 { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+
 # text_pattern_ops
 { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # bpchar_pattern_ops
 { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # aclitem_ops
 { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+
 # uuid_ops
 { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+
 # pg_lsn_ops
 { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+
 # numeric_ops
 { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+
 # array_ops
 { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
 
@@ -699,24 +747,28 @@
 { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax "char"
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax name
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax integer
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
@@ -770,18 +822,21 @@
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax oid
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax tid
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax float (float4, float8)
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
@@ -810,30 +865,35 @@
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax reltime
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr8
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax inet
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion inet
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
@@ -841,18 +901,21 @@
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax character
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time without time zone
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
@@ -906,36 +969,42 @@
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time with time zone
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit varying
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax numeric
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax uuid
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion range types
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
@@ -951,12 +1020,14 @@
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax pg_lsn
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion box
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
@@ -970,6 +1041,7 @@
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index ef7b587..245838e 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -277,21 +277,25 @@
 { amprocfamily => '5008', amproclefttype => '604', amprocrighttype => '604', amprocnum => '6', amproc => '5011' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+
 # minmax "char"
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+
 # minmax name
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
@@ -337,16 +341,19 @@
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+
 # minmax oid
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+
 # minmax tid
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+
 # minmax float
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
@@ -373,26 +380,31 @@
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+
 # minmax reltime
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr8
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+
 # minmax inet
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+
 # inclusion inet
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
@@ -401,16 +413,19 @@
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+
 # minmax character
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+
 # minmax time without time zone
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
@@ -456,31 +471,37 @@
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+
 # minmax time with time zone
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+
 # minmax bit
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+
 # minmax bit varying
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+
 # minmax numeric
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+
 # minmax uuid
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+
 # inclusion range types
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
@@ -489,11 +510,13 @@
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+
 # inclusion box
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index cb109dd..e493a39 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -12,12 +12,11 @@
 
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# POSTGRES will be replaced at initdb time with a user choice that might
+# contain non-word characters, so we must double-quote it.
+
 { oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
-  rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR',
   rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index fc394ef..8c2aed5 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -65,6 +65,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -204,6 +205,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -238,6 +240,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -252,6 +255,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -259,6 +263,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -267,6 +272,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index b701e1e..bb76371 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -12,7 +12,7 @@
 
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
@@ -27,11 +27,4 @@
 { oid => '1259',
   relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bdbccea..6704f0b 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -12,7 +12,10 @@
 
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 04eec9f..6483027 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -19,6 +19,4 @@
 { oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index 4f0cbfa..a3972d4 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -55,12 +55,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1985', opcintype => '829', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3371', opcintype => '774', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3372', opcintype => '774', opcdefault => 't', opckeytype => '0' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1986', opcintype => '19', opcdefault => 't', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1987', opcintype => '19', opcdefault => 't', opckeytype => '0' },
 { oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID',
   opcmethod => '403', opcname => 'numeric_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1988', opcintype => '1700', opcdefault => 't', opckeytype => '0' },
@@ -136,7 +138,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4064', opcintype => '17', opcdefault => 't', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4062', opcintype => '18', opcdefault => 't', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4065', opcintype => '19', opcdefault => 't', opckeytype => '19' },
@@ -164,12 +168,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4079', opcintype => '1560', opcdefault => 't', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4080', opcintype => '1562', opcdefault => 't', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4055', opcintype => '1700', opcdefault => 't', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4081', opcintype => '2950', opcdefault => 't', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4103', opcintype => '3831', opcdefault => 't', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4082', opcintype => '3220', opcdefault => 't', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4104', opcintype => '603', opcdefault => 't', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index fd1aae8..a54bc1b17 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -12,7 +12,7 @@
 
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1592,6 +1592,7 @@
   oprname => '&&', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_and', oprrest => '-', oprjoin => '-' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_or', oprrest => '-', oprjoin => '-' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => '5003', oprrest => '-', oprjoin => '-' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 4b85ffa..256bbf1 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -12,14 +12,16 @@
 
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -28,7 +30,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier.
 
 # OIDS 1 - 99
 
@@ -1785,6 +1787,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   proname => 'obj_description', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '14', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '30', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'oidvectortypes', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -1945,11 +1948,11 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   proname => 'pclose', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_close', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1434', descr => 'open path',
   proname => 'popen', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_open', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1435',
   proname => 'path_add', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '602', proargtypes => '602 602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_add', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1436',
@@ -2741,6 +2744,7 @@
   proname => 'interval_hash_extended', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '20', proargtypes => '1186 20', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'interval_hash_extended', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '3', pronargdefaults => '0', prorettype => '1700', proargtypes => '2275 26 23', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'numeric_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1702', descr => 'I/O',
@@ -4764,6 +4768,7 @@
   proname => 'bool_anytrue', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '2281', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'bool_anytrue', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   proname => 'bool_or', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 't', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -4813,6 +4818,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_postmaster_start_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_conf_load_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -5669,6 +5675,7 @@
   proname => 'jsonb_pretty', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '3802', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_pretty', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '3802', proargtypes => '3802 1009 3802 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_insert', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '2970', proargtypes => '2275', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'txid_snapshot_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -6085,37 +6092,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_create', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_drop', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_oid', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '16', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_is_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '3220', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '3220 1184', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '25 3220', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_advance', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '3220', proargtypes => '25 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '100', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_show_replication_origin_status', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6138,20 +6134,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   proname => 'pg_control_system', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_system', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   proname => 'pg_control_checkpoint', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_checkpoint', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_recovery', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   proname => 'pg_control_init', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_init', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '1', pronargdefaults => '0', prorettype => '23', proargtypes => '4089', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_import_system_collations', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_collation_actual_version', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6165,19 +6157,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '2276', protransform => '0', proisagg => 'f', proiswindow => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '16', proargtypes => '26 23 23 2276', proallargtypes => '_null_', proargmodes => '{i,i,i,v}', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'satisfies_hash_partition', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 682721e..e8c81f2 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -19,6 +19,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index daeb647..0cc91e2 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -14,52 +14,40 @@
 
 # Keep the following ordered by OID so that later changes can be made more
 # easily.
+
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'B', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '17', oid_symbol => 'BYTEAOID', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '18', oid_symbol => 'CHAROID', descr => 'single character',
   typname => 'char', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '19', oid_symbol => 'NAMEOID', descr => '63-byte type for storing system identifiers',
   typname => 'name', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'NAMEDATALEN', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '20', oid_symbol => 'INT8OID', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '21', oid_symbol => 'INT2OID', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '2', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '22', oid_symbol => 'INT2VECTOROID', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '23', oid_symbol => 'INT4OID', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '24', oid_symbol => 'REGPROCOID', descr => 'registered procedure',
   typname => 'regproc', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '25', oid_symbol => 'TEXTOID', descr => 'variable-length string, no limit specified',
   typname => 'text', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '26', oid_symbol => 'OIDOID', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '27', oid_symbol => 'TIDOID', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '6', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '28', oid_symbol => 'XIDOID', descr => 'transaction id',
   typname => 'xid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '29', oid_symbol => 'CIDOID', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '30', oid_symbol => 'OIDVECTOROID', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -76,6 +64,7 @@
   typname => 'pg_class', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '1259', typelem => '0', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 100 - 199
+
 { oid => '114', oid_symbol => 'JSONOID',
   typname => 'json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '142', oid_symbol => 'XMLOID', descr => 'XML content',
@@ -84,16 +73,12 @@
   typname => '_xml', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '199',
   typname => '_json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '194', oid_symbol => 'PGNODETREEOID', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'ALIGNOF_POINTER', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -109,6 +94,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', oid_symbol => 'POINTOID', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '16', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '601', oid_symbol => 'LSEGOID', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -119,7 +105,6 @@
   typname => 'box', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '32', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\073', typrelid => '0', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '604', oid_symbol => 'POLYGONOID', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '628', oid_symbol => 'LINEOID', descr => 'geometric line',
   typname => 'line', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '629',
@@ -139,7 +124,6 @@
   typname => 'tinterval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '12', typbyval => 'f', typtype => 'b', typcategory => 'T', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '705', oid_symbol => 'UNKNOWNOID',
   typname => 'unknown', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '718', oid_symbol => 'CIRCLEOID', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '719',
@@ -162,6 +146,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1001',
@@ -242,6 +227,7 @@
   typname => 'time', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', oid_symbol => 'TIMESTAMPOID', descr => 'date and time',
   typname => 'timestamp', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1115',
@@ -260,6 +246,7 @@
   typname => '_interval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1266', oid_symbol => 'TIMETZOID', descr => 'time of day with time zone',
@@ -268,6 +255,7 @@
   typname => '_timetz', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', oid_symbol => 'BITOID', descr => 'fixed-length bit string',
   typname => 'bit', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'V', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1561',
@@ -280,37 +268,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', oid_symbol => 'NUMERICOID', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => '-', typalign => 'i', typstorage => 'm', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '1790', oid_symbol => 'REFCURSOROID', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2202', oid_symbol => 'REGPROCEDUREOID', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2203', oid_symbol => 'REGOPEROID', descr => 'registered operator',
   typname => 'regoper', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2204', oid_symbol => 'REGOPERATOROID', descr => 'registered operator (with args)',
   typname => 'regoperator', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2205', oid_symbol => 'REGCLASSOID', descr => 'registered class',
   typname => 'regclass', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2206', oid_symbol => 'REGTYPEOID', descr => 'registered type',
   typname => 'regtype', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4096', oid_symbol => 'REGROLEOID', descr => 'registered role',
   typname => 'regrole', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4089', oid_symbol => 'REGNAMESPACEOID', descr => 'registered namespace',
   typname => 'regnamespace', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2207',
   typname => '_regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2208',
@@ -349,7 +330,6 @@
   typname => 'regconfig', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3769', oid_symbol => 'REGDICTIONARYOID', descr => 'registered text search dictionary',
   typname => 'regdictionary', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3643',
   typname => '_tsvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3644',
@@ -406,6 +386,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249', oid_symbol => 'RECORDOID',
   typname => 'record', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2287', oid_symbol => 'RECORDARRAYOID',
@@ -443,8 +424,4 @@
 { oid => '3831', oid_symbol => 'ANYRANGEOID',
   typname => 'anyrange', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v8-0003-Reduce-indentation-level.patchtext/x-patch; charset=US-ASCII; name=v8-0003-Reduce-indentation-level.patchDownload
From c2154a348f9edbb48cccb2e04f40a5ee1747a93c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 21 Jan 2018 16:14:06 +0700
Subject: [PATCH v7] Reduce indentation level

A previous commit removed a logical block level from Catalog.pm, but
kept the indentation for the sake of patch readability. Fix that here.

Separate out the pg_attribute logic of genbki.pl into its own function
and skip checking if the data is defined. This both narrows and shortens
the data writing loop of the script.
---
 src/backend/catalog/Catalog.pm | 213 ++++++++++++++++----------------
 src/backend/catalog/genbki.pl  | 272 +++++++++++++++++++++--------------------
 2 files changed, 248 insertions(+), 237 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index c3b663b..de64002 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -33,140 +33,139 @@ sub ParseHeader
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-		my %catalog;
-		my $declaring_attributes = 0;
-		my $is_varlen     = 0;
+	my %catalog;
+	my $declaring_attributes = 0;
+	my $is_varlen     = 0;
 
-		$catalog{columns} = [];
-		$catalog{toasting} = [];
-		$catalog{indexing} = [];
+	$catalog{columns} = [];
+	$catalog{toasting} = [];
+	$catalog{indexing} = [];
 
-		open(my $ifh, '<', $input_file) || die "$input_file: $!";
+	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		# Scan the input file.
-		while (<$ifh>)
-		{
+	# Scan the input file.
+	while (<$ifh>)
+	{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
-			{
+		# Strip C-style comments.
+		s;/\*(.|\n)*\*/;;g;
+		if (m;/\*;)
+		{
 
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
-			}
+			# handle multi-line comments properly.
+			my $next_line = <$ifh>;
+			die "$input_file: ends within C-style comment\n"
+			  if !defined $next_line;
+			$_ .= $next_line;
+			redo;
+		}
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+		# Strip useless whitespace and trailing semicolons.
+		chomp;
+		s/^\s+//;
+		s/;\s*$//;
+		s/\s+/ /g;
 
-			# Push the data into the appropriate data structure.
-			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{toasting} },
-				  "declare toast $toast_oid $index_oid on $toast_name\n";
-			}
-			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
-			{
-				my ($is_unique, $index_name, $index_oid, $using) =
-				  ($1, $2, $3, $4);
-				push @{ $catalog{indexing} },
-				  sprintf(
-					"declare %sindex %s %s %s\n",
-					$is_unique ? 'unique ' : '',
-					$index_name, $index_oid, $using);
-			}
-			elsif (/^BUILD_INDICES/)
+		# Push the data into the appropriate data structure.
+		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+		{
+			my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
+			push @{ $catalog{toasting} },
+			  "declare toast $toast_oid $index_oid on $toast_name\n";
+		}
+		elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
+		{
+			my ($is_unique, $index_name, $index_oid, $using) =
+			  ($1, $2, $3, $4);
+			push @{ $catalog{indexing} },
+			  sprintf(
+				"declare %sindex %s %s %s\n",
+				$is_unique ? 'unique ' : '',
+				$index_name, $index_oid, $using);
+		}
+		elsif (/^BUILD_INDICES/)
+		{
+			push @{ $catalog{indexing} }, "build indices\n";
+		}
+		elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+		{
+			$catalog{catname} = $1;
+			$catalog{relation_oid} = $2;
+
+			$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
+			$catalog{shared_relation} =
+			  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
+			$catalog{without_oids} =
+			  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
+			$catalog{rowtype_oid} =
+			  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
+			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
+			$declaring_attributes = 1;
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
+			if (/^#/)
 			{
-				push @{ $catalog{indexing} }, "build indices\n";
+				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+				next;
 			}
-			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			if (/^}/)
 			{
-				$catalog{catname} = $1;
-				$catalog{relation_oid} = $2;
-
-				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
-				$catalog{shared_relation} =
-				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
-				$catalog{without_oids} =
-				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				$catalog{rowtype_oid} =
-				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
-				$declaring_attributes = 1;
+				$declaring_attributes = 0;
 			}
-			elsif ($declaring_attributes)
+			else
 			{
-				next if (/^{|^$/);
-				if (/^#/)
+				my %column;
+				my @attopts = split /\s+/, $_;
+				my $atttype = shift @attopts;
+				my $attname = shift @attopts;
+				die "parse error ($input_file)"
+				  unless ($attname and $atttype);
+
+				if (exists $RENAME_ATTTYPE{$atttype})
 				{
-					$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-					next;
+					$atttype = $RENAME_ATTTYPE{$atttype};
 				}
-				if (/^}/)
+				if ($attname =~ /(.*)\[.*\]/)    # array attribute
 				{
-					$declaring_attributes = 0;
+					$attname = $1;
+					$atttype .= '[]';
 				}
-				else
+
+				$column{type} = $atttype;
+				$column{name} = $attname;
+				$column{is_varlen} = 1 if $is_varlen;
+
+				foreach my $attopt (@attopts)
 				{
-					my %column;
-					my @attopts = split /\s+/, $_;
-					my $atttype = shift @attopts;
-					my $attname = shift @attopts;
-					die "parse error ($input_file)"
-					  unless ($attname and $atttype);
-
-					if (exists $RENAME_ATTTYPE{$atttype})
+					if ($attopt eq 'BKI_FORCE_NULL')
 					{
-						$atttype = $RENAME_ATTTYPE{$atttype};
+						$column{forcenull} = 1;
 					}
-					if ($attname =~ /(.*)\[.*\]/)    # array attribute
+					elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
 					{
-						$attname = $1;
-						$atttype .= '[]';
+						$column{forcenotnull} = 1;
+					}
+					elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
+					{
+						$column{default} = $1;
+					}
+					else
+					{
+						die "unknown column option $attopt on column $attname";
 					}
 
-					$column{type} = $atttype;
-					$column{name} = $attname;
-					$column{is_varlen} = 1 if $is_varlen;
-
-					foreach my $attopt (@attopts)
+					if ($column{forcenull} and $column{forcenotnull})
 					{
-						if ($attopt eq 'BKI_FORCE_NULL')
-						{
-							$column{forcenull} = 1;
-						}
-						elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
-						{
-							$column{forcenotnull} = 1;
-						}
-						elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/)
-						{
-							$column{default} = $1;
-						}
-						else
-						{
-							die
-"unknown column option $attopt on column $attname";
-						}
-
-						if ($column{forcenull} and $column{forcenotnull})
-						{
-							die "$attname is forced both null and not null";
-						}
+						die "$attname is forced both null and not null";
 					}
-					push @{ $catalog{columns} }, \%column;
 				}
+				push @{ $catalog{columns} }, \%column;
 			}
 		}
-		close $ifh;
+	}
+	close $ifh;
 	return \%catalog;
 }
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index ed90a02..8d740c3 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -156,154 +156,85 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	# For pg_attribute.h, we generate data entries ourselves.
+	# NB: pg_type.h must come before pg_attribute.h in the input list
+	# of catalog names, since we use info from pg_type.h here.
+	if ($catname eq 'pg_attribute')
 	{
+		gen_pg_attribute($schema);
+	}
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
-		{
-
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
-
-			# Perform required substitutions on fields
-			foreach my $column (@$schema)
-			{
-				my $attname = $column->{name};
-				my $atttype = $column->{type};
-
-				# Substitute constant values we acquired above.
-				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
-
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
-				if ($atttype eq 'regproc')
-				{
-					my $procoid = $regprocoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $procoid
-					  if defined($procoid) && $procoid ne 'MULTIPLE';
-				}
-			}
+	# Ordinary catalog with DATA line(s)
+	foreach my $row (@{ $catalog->{data} })
+	{
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
-			if ($catname eq 'pg_proc')
-			{
-				if (defined($regprocoids{ $bki_values{proname} }))
-				{
-					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
-				}
-				else
-				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
-				}
-			}
+		# Split line into tokens without interpreting their meaning.
+		my %bki_values;
+		@bki_values{@attnames} =
+		  Catalog::SplitDataLine($row->{bki_values});
 
-			# Save pg_type info for pg_attribute processing below
-			if ($catname eq 'pg_type')
+		# Perform required substitutions on fields
+		foreach my $column (@$schema)
+		{
+			my $attname = $column->{name};
+			my $atttype = $column->{type};
+
+			# Substitute constant values we acquired above.
+			# (It's intentional that this can apply to parts of a field).
+			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+
+			# Replace regproc columns' values with OIDs.
+			# If we don't have a unique value to substitute,
+			# just do nothing (regprocin will complain).
+			if ($atttype eq 'regproc')
 			{
-				my %type = %bki_values;
-				$type{oid} = $row->{oid};
-				$types{ $type{typname} } = \%type;
+				my $procoid = $regprocoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $procoid
+				  if defined($procoid) && $procoid ne 'MULTIPLE';
 			}
+		}
 
-			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
-
-			# Write comments to postgres.description and
-			# postgres.shdescription
-			if (defined $row->{descr})
+		# Save pg_proc oids for use in later regproc substitutions.
+		# This relies on the order we process the files in!
+		if ($catname eq 'pg_proc')
+		{
+			if (defined($regprocoids{ $bki_values{proname} }))
 			{
-				printf $descr "%s\t%s\t0\t%s\n",
-				  $row->{oid}, $catname, $row->{descr};
+				$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
 			}
-			if (defined $row->{shdescr})
+			else
 			{
-				printf $shdescr "%s\t%s\t%s\n",
-				  $row->{oid}, $catname, $row->{shdescr};
+				$regprocoids{ $bki_values{proname} } = $row->{oid};
 			}
 		}
-	}
-	if ($catname eq 'pg_attribute')
-	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
-		# NB: pg_type.h must come before pg_attribute.h in the input list
-		# of catalog names, since we use info from pg_type.h here.
-		foreach my $table_name (@{ $catalogs->{names} })
+		# Save pg_type info for pg_attribute processing below
+		if ($catname eq 'pg_type')
 		{
-			my $table = $catalogs->{$table_name};
-
-			# Currently, all bootstrapped relations also need schemapg.h
-			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if !$table->{schema_macro};
-
-			$schemapg_entries{$table_name} = [];
-			push @tables_needing_macros, $table_name;
-
-			# Generate entries for user attributes.
-			my $attnum       = 0;
-			my $priornotnull = 1;
-			foreach my $attr (@{ $table->{columns} })
-			{
-				$attnum++;
-				my %row;
-				$row{attnum}   = $attnum;
-				$row{attrelid} = $table->{relation_oid};
-
-				morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
-				$priornotnull &= ($row{attnotnull} eq 't');
+			my %type = %bki_values;
+			$type{oid} = $row->{oid};
+			$types{ $type{typname} } = \%type;
+		}
 
-				# If it's bootstrapped, put an entry in postgres.bki.
-				print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+		# Write to postgres.bki
+		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+		printf $bki "insert %s( %s )\n", $oid,
+		  join(' ', @bki_values{@attnames});
 
-				# Store schemapg entries for later.
-				morph_row_for_schemapg(\%row, $schema);
-				push @{ $schemapg_entries{$table_name} },
-				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @row{@attnames});
-			}
-
-			# Generate entries for system attributes.
-			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($table->{bootstrap})
-			{
-				$attnum = 0;
-				my @SYS_ATTRS = (
-					{ name => 'ctid',     type => 'tid' },
-					{ name => 'oid',      type => 'oid' },
-					{ name => 'xmin',     type => 'xid' },
-					{ name => 'cmin',     type => 'cid' },
-					{ name => 'xmax',     type => 'xid' },
-					{ name => 'cmax',     type => 'cid' },
-					{ name => 'tableoid', type => 'oid' });
-				foreach my $attr (@SYS_ATTRS)
-				{
-					$attnum--;
-					my %row;
-					$row{attnum}        = $attnum;
-					$row{attrelid}      = $table->{relation_oid};
-					$row{attstattarget} = '0';
-
-					# Omit the oid column if the catalog doesn't have them
-					next
-					  if $table->{without_oids}
-						  && $attr->{name} eq 'oid';
-
-					morph_row_for_pgattr(\%row, $schema, $attr, 1);
-					print_bki_insert(\%row, @attnames);
-				}
-			}
+		# Write comments to postgres.description and
+		# postgres.shdescription
+		if (defined $row->{descr})
+		{
+			printf $descr "%s\t%s\t0\t%s\n",
+			  $row->{oid}, $catname, $row->{descr};
+		}
+		if (defined $row->{shdescr})
+		{
+			printf $shdescr "%s\t%s\t%s\n",
+			  $row->{oid}, $catname, $row->{shdescr};
 		}
 	}
-
 	print $bki "close $catname\n";
 }
 
@@ -375,6 +306,87 @@ exit 0;
 #################### Subroutines ########################
 
 
+# Iterate over all the catalogs. Where specified in the given header, build
+# a hard-coded tuple descriptor for utils/relcache.c. Some of these are
+# also bootstrap tables, which require pg_attribute entries in .bki for
+# both user and system attributes.
+sub gen_pg_attribute
+{
+	my $schema = shift;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		push @attnames, $column->{name};
+	}
+
+	foreach my $table_name (@{ $catalogs->{names} })
+	{
+		my $table = $catalogs->{$table_name};
+
+		# Currently, all bootstrapped relations also need schemapg.h
+		# entries, so skip if the relation isn't to be in schemapg.h.
+		next if !$table->{schema_macro};
+
+		$schemapg_entries{$table_name} = [];
+		push @tables_needing_macros, $table_name;
+
+		# Generate entries for user attributes.
+		my $attnum       = 0;
+		my $priornotnull = 1;
+		foreach my $attr (@{ $table->{columns} })
+		{
+			$attnum++;
+			my %row;
+			$row{attnum}   = $attnum;
+			$row{attrelid} = $table->{relation_oid};
+
+			morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
+			$priornotnull &= ($row{attnotnull} eq 't');
+
+			# If it's bootstrapped, put an entry in postgres.bki.
+			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+
+			# Store schemapg entries for later.
+			morph_row_for_schemapg(\%row, $schema);
+			push @{ $schemapg_entries{$table_name} },
+			  sprintf "{ %s }",
+				join(', ', grep { defined $_ } @row{@attnames});
+		}
+
+		# Generate entries for system attributes.
+		# We only need postgres.bki entries, not schemapg.h entries.
+		if ($table->{bootstrap})
+		{
+			$attnum = 0;
+			my @SYS_ATTRS = (
+				{ name => 'ctid',     type => 'tid' },
+				{ name => 'oid',      type => 'oid' },
+				{ name => 'xmin',     type => 'xid' },
+				{ name => 'cmin',     type => 'cid' },
+				{ name => 'xmax',     type => 'xid' },
+				{ name => 'cmax',     type => 'cid' },
+				{ name => 'tableoid', type => 'oid' });
+			foreach my $attr (@SYS_ATTRS)
+			{
+				$attnum--;
+				my %row;
+				$row{attnum}        = $attnum;
+				$row{attrelid}      = $table->{relation_oid};
+				$row{attstattarget} = '0';
+
+				# Omit the oid column if the catalog doesn't have them
+				next
+				  if $table->{without_oids}
+					  && $attr->{name} eq 'oid';
+
+				morph_row_for_pgattr(\%row, $schema, $attr, 1);
+				print_bki_insert(\%row, @attnames);
+			}
+		}
+	}
+}
+
 # Given $pgattr_schema (the pg_attribute schema for a catalog sufficient for
 # AddDefaultValues), $attr (the description of a catalog row), and
 # $priornotnull (whether all prior attributes in this catalog are not null),
-- 
2.7.4

v8-0004-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v8-0004-Update-catalog-scripts-to-read-data-files.patchDownload
From 74dd205f070fb832794d6604c259d728401c196c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 21 Jan 2018 16:58:05 +0700
Subject: [PATCH v7] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/Makefile               |   2 +-
 src/backend/catalog/Makefile       |  11 ++-
 src/backend/catalog/README         |  72 +++++++++++++++-----
 src/backend/catalog/genbki.pl      | 133 ++++++++++++++++++++++++++-----------
 src/backend/utils/Gen_fmgrtab.pl   |  56 ++++++++++------
 src/backend/utils/Makefile         |   4 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 src/tools/msvc/Solution.pm         |   9 ++-
 10 files changed, 213 insertions(+), 91 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 4a28267..2fadcea 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -142,7 +142,7 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..c177ba0 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,57 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data structure literals that are simply
+eval'd to produce in-memory data structures.  As such, the code reading
+them doesn't care about ordering and layout, but in order to maintain
+a standard appearance, src/include/catalog/rewrite_dat.pl should be run
+before submitting catalog data patches.  Each file contains an array of
+hash references, which represent the data entries.  The best examples are
+the existing data files, but an altered subset of pg_database.dat will
+demonstrate the key features:
+
+# pg_database_example.dat
+[
+
+# a comment
+{ oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must also have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The metadata fields oid, oid_symbol, descr, and shdescr are on their own
+line within the curly brackets.  This is done automatically during rewriting
+so their placement is not crucial during development.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -38,9 +71,9 @@ catalog that has no OIDs).  In practice we usually preassign OIDs
 for all or none of the pre-loaded tuples in a given catalog, even if only
 some of them are actually cross-referenced.
 
-- We also sometimes preallocate OIDs for catalog tuples whose OIDs must
-be known directly in the C code.  In such cases, put a #define in the
-catalog's .h file, and use the #define symbol in the C code.  Writing
+- We also sometimes preallocate OIDs for catalog tuples whose OIDs must be
+known directly in the C code.  In such cases, put an 'oid_symbol' entry in
+the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
 Direct references to pg_proc OIDs are common enough that there's a special
 mechanism to create the necessary #define's automatically: see
@@ -49,19 +82,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +138,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 8d740c3..c86b06e 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,18 +143,17 @@ my %regprocoids;
 my %types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my @attnames;
 	my $first = 1;
 
 	print $bki " (\n";
@@ -128,7 +162,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		push @attnames, $attname;
 
 		if (!$first)
 		{
@@ -164,14 +197,10 @@ foreach my $catname (@{ $catalogs->{names} })
 		gen_pg_attribute($schema);
 	}
 
-	# Ordinary catalog with DATA line(s)
-	foreach my $row (@{ $catalog->{data} })
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
 	{
-
-		# Split line into tokens without interpreting their meaning.
-		my %bki_values;
-		@bki_values{@attnames} =
-		  Catalog::SplitDataLine($row->{bki_values});
+		my %bki_values = %$row;
 
 		# Perform required substitutions on fields
 		foreach my $column (@$schema)
@@ -205,7 +234,7 @@ foreach my $catname (@{ $catalogs->{names} })
 			}
 			else
 			{
-				$regprocoids{ $bki_values{proname} } = $row->{oid};
+				$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 			}
 		}
 
@@ -213,26 +242,23 @@ foreach my $catname (@{ $catalogs->{names} })
 		if ($catname eq 'pg_type')
 		{
 			my %type = %bki_values;
-			$type{oid} = $row->{oid};
 			$types{ $type{typname} } = \%type;
 		}
 
 		# Write to postgres.bki
-		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-		printf $bki "insert %s( %s )\n", $oid,
-		  join(' ', @bki_values{@attnames});
+		print_bki_insert(\%bki_values, $schema);
 
 		# Write comments to postgres.description and
 		# postgres.shdescription
-		if (defined $row->{descr})
+		if (defined $bki_values{descr})
 		{
 			printf $descr "%s\t%s\t0\t%s\n",
-			  $row->{oid}, $catname, $row->{descr};
+			  $bki_values{oid}, $catname, $bki_values{descr};
 		}
-		if (defined $row->{shdescr})
+		if (defined $bki_values{shdescr})
 		{
 			printf $shdescr "%s\t%s\t%s\n",
-			  $row->{oid}, $catname, $row->{shdescr};
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
 	print $bki "close $catname\n";
@@ -242,12 +268,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -320,9 +346,9 @@ sub gen_pg_attribute
 		push @attnames, $column->{name};
 	}
 
-	foreach my $table_name (@{ $catalogs->{names} })
+	foreach my $table_name (@catnames)
 	{
-		my $table = $catalogs->{$table_name};
+		my $table = $catalogs{$table_name};
 
 		# Currently, all bootstrapped relations also need schemapg.h
 		# entries, so skip if the relation isn't to be in schemapg.h.
@@ -345,7 +371,7 @@ sub gen_pg_attribute
 			$priornotnull &= ($row{attnotnull} eq 't');
 
 			# If it's bootstrapped, put an entry in postgres.bki.
-			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+			print_bki_insert(\%row, $schema) if $table->{bootstrap};
 
 			# Store schemapg entries for later.
 			morph_row_for_schemapg(\%row, $schema);
@@ -381,7 +407,7 @@ sub gen_pg_attribute
 					  && $attr->{name} eq 'oid';
 
 				morph_row_for_pgattr(\%row, $schema, $attr, 1);
-				print_bki_insert(\%row, @attnames);
+				print_bki_insert(\%row, $schema);
 			}
 		}
 	}
@@ -452,14 +478,45 @@ sub morph_row_for_pgattr
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki. Adding quotes here allows us to keep
+# most double quotes out of the catalog data files for readability. See
+# bootscanner.l for what tokens need quoting.
 sub print_bki_insert
 {
-	my $row        = shift;
-	my @attnames   = @_;
-	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', @{$row}{@attnames};
-	printf $bki "insert %s( %s )\n", $oid, $bki_values;
+	my $row    = shift;
+	my $schema = shift;
+
+	my @bki_values;
+	my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+
+	foreach my $column (@$schema)
+	{
+		my $attname   = $column->{name};
+		my $atttype   = $column->{type};
+		my $bki_value = $row->{$attname};
+
+		$bki_value = sprintf(qq'"%s"', $bki_value)
+		  if  $bki_value ne '_null_'
+		  and $bki_value !~ /^"([^"])*"$/
+		  and ( length($bki_value) == 0       # Empty string
+				or $bki_value =~ /\s/         # Contains whitespace
+
+				# Quote strings that have special characters
+				# unless they are entirely octals or digits.
+				or (    $bki_value =~ /\W/
+					and $bki_value !~ /^\\\d{3}$/
+					and $bki_value !~ /^-\d*$/)
+
+				# XXX Not needed, but keeps the .bki diff down to a
+				# reasonable size during review.
+				or $attname eq 'oprname'      # Operator names
+				or $atttype eq 'oidvector'    # Multi-element types
+				or $atttype eq 'int2vector'
+				or $atttype =~ /\[\]$/ );
+
+		push @bki_values, $bki_value;
+	}
+	printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values);
 }
 
 # Given a row reference, modify it so that it becomes a valid entry for
@@ -516,8 +573,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 4ae86df..5faaadc 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.dat
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 # Collect arguments
-my $infile;    # pg_proc.h
+my @input_files;
 my $output_path = '';
 my @include_path;
 
@@ -29,7 +29,7 @@ while (@ARGV)
 	my $arg = shift @ARGV;
 	if ($arg !~ /^-/)
 	{
-		$infile = $arg;
+		push @input_files, $arg;
 	}
 	elsif ($arg =~ /^-o/)
 	{
@@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !$infile;
+die "No input files.\n"                                     if !@input_files;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# Read all the input files into internal data structures.
+# Note: We pass data file names as arguments and then look for matching
+# headers to parse the schema from. This is backwards from genbki.pl,
+# but the Makefile dependencies look more sensible this way.
+my %catalogs;
+my %catalog_data;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	$catalogs{$catname} = $catalog;
+	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+}
+
+# Fetch some values for later.
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
-
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
-foreach my $row (@$data)
+foreach my $row (@{ $catalog_data{pg_proc} })
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile,    $tmpext);
 sub usage
 {
 	die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..f71cdc5 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,8 +24,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index d3b50bd..fe66de9 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -457,8 +457,11 @@ EOF
 	$mf =~ s{\\\r?\n}{}g;
 	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @allbki = split /\s+/, $1;
-	foreach my $bki (@allbki)
+	my @bki_srcs = split /\s+/, $1;
+	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
+	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
+	my @bki_data = split /\s+/, $1;
+	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
 		if (IsNewer(
@@ -467,7 +470,7 @@ EOF
 		{
 			print "Generating postgres.bki and schemapg.h...\n";
 			chdir('src/backend/catalog');
-			my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
+			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
 			system(
 "perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
 			);
-- 
2.7.4

v8-0005-Clean-up-header-files-and-update-comments.patchtext/x-patch; charset=US-ASCII; name=v8-0005-Clean-up-header-files-and-update-comments.patchDownload
From ec27c5eb79df1efa33754444305bf0d8b2937459 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Fri, 23 Feb 2018 12:37:43 +0700
Subject: [PATCH] Clean up header files and update comments

---
 src/include/catalog/genbki.h                  |   8 +-
 src/include/catalog/indexing.h                |   2 +-
 src/include/catalog/pg_aggregate.h            |  53 +--
 src/include/catalog/pg_am.h                   |  13 +-
 src/include/catalog/pg_amop.h                 | 372 +----------------
 src/include/catalog/pg_amproc.h               |  61 +--
 src/include/catalog/pg_attrdef.h              |   5 +-
 src/include/catalog/pg_attribute.h            |  19 +-
 src/include/catalog/pg_auth_members.h         |   6 +-
 src/include/catalog/pg_authid.h               |  15 +-
 src/include/catalog/pg_cast.h                 |  97 +----
 src/include/catalog/pg_class.h                |  19 +-
 src/include/catalog/pg_collation.h            |  11 +-
 src/include/catalog/pg_constraint.h           |  13 +-
 src/include/catalog/pg_conversion.h           |  10 +-
 src/include/catalog/pg_database.h             |   5 +-
 src/include/catalog/pg_db_role_setting.h      |  12 +-
 src/include/catalog/pg_default_acl.h          |   9 +-
 src/include/catalog/pg_depend.h               |  30 +-
 src/include/catalog/pg_description.h          |  22 +-
 src/include/catalog/pg_enum.h                 |  13 +-
 src/include/catalog/pg_event_trigger.h        |   5 +-
 src/include/catalog/pg_extension.h            |  10 +-
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +-
 src/include/catalog/pg_foreign_server.h       |   4 +-
 src/include/catalog/pg_foreign_table.h        |   4 +-
 src/include/catalog/pg_index.h                |   5 +-
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  26 +-
 src/include/catalog/pg_language.h             |  10 +-
 src/include/catalog/pg_largeobject.h          |   3 -
 src/include/catalog/pg_largeobject_metadata.h |   5 +-
 src/include/catalog/pg_namespace.h            |  12 +-
 src/include/catalog/pg_opclass.h              |  27 +-
 src/include/catalog/pg_operator.h             | 161 +-------
 src/include/catalog/pg_opfamily.h             |  11 +-
 src/include/catalog/pg_partitioned_table.h    |   5 +-
 src/include/catalog/pg_pltemplate.h           |  12 +-
 src/include/catalog/pg_proc.h                 | 556 +-------------------------
 src/include/catalog/pg_publication.h          |   4 +-
 src/include/catalog/pg_publication_rel.h      |   4 +-
 src/include/catalog/pg_range.h                |  15 +-
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |   5 +-
 src/include/catalog/pg_shdepend.h             |  24 +-
 src/include/catalog/pg_shdescription.h        |  22 +-
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   5 +-
 src/include/catalog/pg_tablespace.h           |   5 +-
 src/include/catalog/pg_transform.h            |   4 +-
 src/include/catalog/pg_trigger.h              |   5 +-
 src/include/catalog/pg_ts_config.h            |  12 +-
 src/include/catalog/pg_ts_config_map.h        |  13 +-
 src/include/catalog/pg_ts_dict.h              |  13 +-
 src/include/catalog/pg_ts_parser.h            |  13 +-
 src/include/catalog/pg_ts_template.h          |  13 +-
 src/include/catalog/pg_type.h                 | 116 +-----
 src/include/catalog/pg_user_mapping.h         |   4 +-
 src/include/catalog/toasting.h                |   2 +-
 59 files changed, 153 insertions(+), 1806 deletions(-)

diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 96ac402..9b769c2 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -3,7 +3,7 @@
  * genbki.h
  *	  Required include file for all POSTGRES catalog header files
  *
- * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
+ * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
  * so that the catalog header files can be read by the C compiler.
  * (These same words are recognized by genbki.pl to build the BKI
  * bootstrap file from these header files.)
@@ -44,10 +44,4 @@
  */
 #undef CATALOG_VARLEN
 
-/* Declarations that provide the initial content of a catalog */
-/* In C, these need to expand into some harmless, repeatable declaration */
-#define DATA(x)   extern int no_such_variable
-#define DESCR(x)  extern int no_such_variable
-#define SHDESCR(x) extern int no_such_variable
-
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 0bb8754..fb9dd23 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -43,7 +43,7 @@ extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
 /*
  * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
 #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 0291032..4f9edf9 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -2,7 +2,6 @@
  *
  * pg_aggregate.h
  *	  definition of the system "aggregate" relation (pg_aggregate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_aggregate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -144,52 +143,4 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
-
-/* ----------------
- * initial contents of pg_aggregate
- * ---------------
- */
-
-/* avg */
-
-/* sum */
-
-/* max */
-
-/* min */
-
-/* count */
-
-/* var_pop */
-
-/* var_samp */
-
-/* variance: historical Postgres syntax for var_samp */
-
-/* stddev_pop */
-
-/* stddev_samp */
-
-/* stddev: historical Postgres syntax for stddev_samp */
-
-/* SQL2003 binary regression aggregates */
-
-/* boolean-and and boolean-or */
-
-/* bitwise integer */
-
-/* xml */
-
-/* array */
-
-/* text */
-
-/* bytea */
-
-/* json */
-
-/* jsonb */
-
-/* ordered-set and hypothetical-set aggregates */
-
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index b85c653..fe59a29 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -2,7 +2,6 @@
  *
  * pg_am.h
  *	  definition of the system "access method" relation (pg_am)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_am.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,11 +56,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-/* ----------------
- *		initial contents of pg_am
- * ----------------
- */
-
 #define BTREE_AM_OID 403
 #define HASH_AM_OID 405
 #define GIST_AM_OID 783
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 4038d17..e978c32 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -2,7 +2,6 @@
  *
  * pg_amop.h
  *	  definition of the system "amop" relation (pg_amop)
- *	  along with the relation's initial contents.
  *
  * The amop table identifies the operators associated with each index operator
  * family and operator class (classes are subsets of families).  An associated
@@ -36,8 +35,8 @@
  * src/include/catalog/pg_amop.h
  *
  * NOTES
- *	 the genbki.pl script reads this file and generates .bki
- *	 information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -90,371 +89,4 @@ typedef FormData_pg_amop *Form_pg_amop;
 #define Anum_pg_amop_amopmethod			7
 #define Anum_pg_amop_amopsortfamily		8
 
-/* ----------------
- *		initial contents of pg_amop
- * ----------------
- */
-
-/*
- *	btree integer_ops
- */
-
-/* default operators int2 */
-/* crosstype operators int24 */
-/* crosstype operators int28 */
-/* default operators int4 */
-/* crosstype operators int42 */
-/* crosstype operators int48 */
-/* default operators int8 */
-/* crosstype operators int82 */
-/* crosstype operators int84 */
-
-/*
- *	btree oid_ops
- */
-
-
-/*
- * btree tid_ops
- */
-
-
-/*
- *	btree oidvector_ops
- */
-
-
-/*
- *	btree float_ops
- */
-
-/* default operators float4 */
-/* crosstype operators float48 */
-/* default operators float8 */
-/* crosstype operators float84 */
-
-/*
- *	btree char_ops
- */
-
-
-/*
- *	btree name_ops
- */
-
-
-/*
- *	btree text_ops
- */
-
-
-/*
- *	btree bpchar_ops
- */
-
-
-/*
- *	btree bytea_ops
- */
-
-
-/*
- *	btree abstime_ops
- */
-
-
-/*
- *	btree datetime_ops
- */
-
-/* default operators date */
-/* crosstype operators vs timestamp */
-/* crosstype operators vs timestamptz */
-/* default operators timestamp */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamptz */
-/* default operators timestamptz */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamp */
-
-/*
- *	btree time_ops
- */
-
-
-/*
- *	btree timetz_ops
- */
-
-
-/*
- *	btree interval_ops
- */
-
-
-/*
- *	btree macaddr
- */
-
-
-/*
- *	btree macaddr8
- */
-
-
-/*
- *	btree network
- */
-
-
-/*
- *	btree numeric
- */
-
-
-/*
- *	btree bool
- */
-
-
-/*
- *	btree bit
- */
-
-
-/*
- *	btree varbit
- */
-
-
-/*
- *	btree text pattern
- */
-
-
-/*
- *	btree bpchar pattern
- */
-
-
-/*
- *	btree money_ops
- */
-
-
-/*
- *	btree reltime_ops
- */
-
-
-/*
- *	btree tinterval_ops
- */
-
-
-/*
- *	btree array_ops
- */
-
-
-/*
- *	btree record_ops
- */
-
-
-/*
- *	btree record_image_ops
- */
-
-
-/*
- * btree uuid_ops
- */
-
-
-/*
- * btree pg_lsn_ops
- */
-
-
-/*
- *	hash index _ops
- */
-
-/* bpchar_ops */
-/* char_ops */
-/* date_ops */
-/* float_ops */
-/* network_ops */
-/* integer_ops */
-/* interval_ops */
-/* macaddr_ops */
-/* macaddr8_ops */
-/* name_ops */
-/* oid_ops */
-/* oidvector_ops */
-/* text_ops */
-/* time_ops */
-/* timestamptz_ops */
-/* timetz_ops */
-/* timestamp_ops */
-/* bool_ops */
-/* bytea_ops */
-/* xid_ops */
-/* cid_ops */
-/* abstime_ops */
-/* reltime_ops */
-/* text_pattern_ops */
-/* bpchar_pattern_ops */
-/* aclitem_ops */
-/* uuid_ops */
-/* pg_lsn_ops */
-/* numeric_ops */
-/* array_ops */
-
-
-/*
- *	gist box_ops
- */
-
-
-/*
- * gist point_ops
- */
-
-
-/*
- *	gist poly_ops (supports polygons)
- */
-
-
-/*
- *	gist circle_ops
- */
-
-
-/*
- * gin array_ops
- */
-
-/*
- * btree enum_ops
- */
-
-/*
- * hash enum_ops
- */
-
-/*
- * btree tsvector_ops
- */
-
-/*
- * GiST tsvector_ops
- */
-
-/*
- * GIN tsvector_ops
- */
-
-/*
- * btree tsquery_ops
- */
-
-/*
- * GiST tsquery_ops
- */
-
-/*
- * btree range_ops
- */
-
-/*
- * hash range_ops
- */
-
-/*
- * GiST range_ops
- */
-
-/*
- * SP-GiST quad_point_ops
- */
-
-/*
- * SP-GiST kd_point_ops
- */
-
-/*
- * SP-GiST text_ops
- */
-
-/*
- * btree jsonb_ops
- */
-
-/*
- * hash jsonb_ops
- */
-
-/*
- * GIN jsonb_ops
- */
-
-/*
- * GIN jsonb_path_ops
- */
-
-/*
- * SP-GiST range_ops
- */
-
-/*
- * SP-GiST box_ops
- */
-
-/*
- * SP-GiST poly_ops (supports polygons)
- */
-
-/*
- * GiST inet_ops
- */
-
-/*
- * SP-GiST inet_ops
- */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer */
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float (float4, float8) */
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-/* we could, but choose not to, supply entries for strategies 13 and 14 */
-
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 15edd86..83ce03b 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -2,7 +2,6 @@
  *
  * pg_amproc.h
  *	  definition of the system "amproc" relation (pg_amproc)
- *	  along with the relation's initial contents.
  *
  * The amproc table identifies support procedures associated with index
  * operator families and classes.  These procedures can't be listed in pg_amop
@@ -25,8 +24,8 @@
  * src/include/catalog/pg_amproc.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,60 +68,4 @@ typedef FormData_pg_amproc *Form_pg_amproc;
 #define Anum_pg_amproc_amprocnum		4
 #define Anum_pg_amproc_amproc			5
 
-/* ----------------
- *		initial contents of pg_amproc
- * ----------------
- */
-
-/* btree */
-
-
-/* hash */
-
-
-/* gist */
-
-
-/* gin */
-
-/* sp-gist */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer: int2, int4, int8 */
-
-
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float */
-
-
-
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 8a8b8ca..3aab48d 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -2,7 +2,6 @@
  *
  * pg_attrdef.h
  *	  definition of the system "attribute defaults" relation (pg_attrdef)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_attrdef.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 8159383..3c78871 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -2,7 +2,10 @@
  *
  * pg_attribute.h
  *	  definition of the system "attribute" relation (pg_attribute)
- *	  along with the relation's initial contents.
+ *
+ * The initial contents of pg_attribute are generated at compile time by
+ * genbki.pl, so there is no pg_attribute.dat file.  Only "bootstrapped"
+ * relations need be included.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +14,8 @@
  * src/include/catalog/pg_attribute.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -215,16 +218,6 @@ typedef FormData_pg_attribute *Form_pg_attribute;
 #define Anum_pg_attribute_attoptions	21
 #define Anum_pg_attribute_attfdwoptions 22
 
-
-/* ----------------
- *		initial contents of pg_attribute
- *
- * The initial contents of pg_attribute are generated at compile time by
- * genbki.pl.  Only "bootstrapped" relations need be included.
- * ----------------
- */
-
-
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index ae3c14a..a702dff 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -2,7 +2,7 @@
  *
  * pg_auth_members.h
  *	  definition of the system "authorization identifier members" relation
- *	  (pg_auth_members) along with the relation's initial contents.
+ *	  (pg_auth_members).
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +11,8 @@
  * src/include/catalog/pg_auth_members.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b5f6602..b101e30 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -2,7 +2,6 @@
  *
  * pg_authid.h
  *	  definition of the system "authorization identifier" relation (pg_authid)
- *	  along with the relation's initial contents.
  *
  *	  pg_shadow and pg_group are now publicly accessible views on pg_authid.
  *
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_authid.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -88,16 +87,6 @@ typedef FormData_pg_authid *Form_pg_authid;
 #define Anum_pg_authid_rolpassword		10
 #define Anum_pg_authid_rolvaliduntil	11
 
-/* ----------------
- *		initial contents of pg_authid
- *
- * The uppercase quantities will be replaced at initdb time with
- * user choices.
- *
- * The C code typically refers to these roles using the #define symbols,
- * so be sure to keep those in sync with the DATA lines.
- * ----------------
- */
 #define BOOTSTRAP_SUPERUSERID			10
 #define DEFAULT_ROLE_MONITOR		3373
 #define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 597079c..1930d4b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -2,7 +2,6 @@
  *
  * pg_cast.h
  *	  definition of the system "type casts" relation (pg_cast)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 8.0, pg_cast describes not only type coercion functions
  * but also length coercion functions.
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_cast.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,96 +80,4 @@ typedef enum CoercionMethod
 #define Anum_pg_cast_castcontext	4
 #define Anum_pg_cast_castmethod		5
 
-/* ----------------
- *		initial contents of pg_cast
- *
- * Note: this table has OIDs, but we don't bother to assign them manually,
- * since nothing needs to know the specific OID of any built-in cast.
- * ----------------
- */
-
-/*
- * Numeric category: implicit casts are allowed in the direction
- * int2->int4->int8->numeric->float4->float8, while casts in the
- * reverse direction are assignment-only.
- */
-
-/* Allow explicit coercions between int4 and bool */
-
-/*
- * OID category: allow implicit conversion from any integral type (including
- * int8, to support OID literals > 2G) to OID, as well as assignment coercion
- * from OID to int4 or int8.  Similarly for each OID-alias type.  Also allow
- * implicit coercions between OID and each OID-alias type, as well as
- * regproc<->regprocedure and regoper<->regoperator.  (Other coercions
- * between alias types must pass through OID.)	Lastly, there are implicit
- * casts from text and varchar to regclass, which exist mainly to support
- * legacy forms of nextval() and related functions.
- */
-
-/*
- * String category
- */
-
-/* Allow explicit coercions between int4 and "char" */
-
-/* pg_node_tree can be coerced to, but not from, text */
-
-/* pg_ndistinct can be coerced to, but not from, bytea and text */
-
-/* pg_dependencies can be coerced to, but not from, bytea and text */
-
-/*
- * Datetime category
- */
-/* Cross-category casts between int4 and abstime, reltime */
-
-/*
- * Geometric category
- */
-
-/*
- * MAC address category
- */
-
-/*
- * INET category
- */
-
-/*
- * BitString category
- */
-/* Cross-category casts between bit and int4, int8 */
-
-/*
- * Cross-category casts to and from TEXT
- *
- * We need entries here only for a few specialized cases where the behavior
- * of the cast function differs from the datatype's I/O functions.  Otherwise,
- * parse_coerce.c will generate CoerceViaIO operations without any prompting.
- *
- * Note that the castcontext values specified here should be no stronger than
- * parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
- * behavior will ensue when the automatic cast is applied instead of the
- * pg_cast entry!
- */
-
-/*
- * Cross-category casts to and from VARCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Cross-category casts to and from BPCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Length-coercion functions
- */
-
-/* json to/from jsonb */
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 99bda41..7bc09bb 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -2,7 +2,6 @@
  *
  * pg_class.h
  *	  definition of the system "relation" relation (pg_class)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_class.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -134,20 +133,6 @@ typedef FormData_pg_class *Form_pg_class;
 #define Anum_pg_class_reloptions			32
 #define Anum_pg_class_relpartbound			33
 
-/* ----------------
- *		initial contents of pg_class
- *
- * NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
- * the OIDs listed here match those given in their CATALOG macros, and that
- * the relnatts values are correct.
- * ----------------
- */
-
-/*
- * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
- * similarly, "1" in relminmxid stands for FirstMultiXactId
- */
-
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index beef6b5..50cbe1e 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -2,7 +2,6 @@
  *
  * pg_collation.h
  *	  definition of the system "collation" relation (pg_collation)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -12,8 +11,8 @@
  *		src/include/catalog/pg_collation.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,16 +64,10 @@ typedef FormData_pg_collation *Form_pg_collation;
 #define Anum_pg_collation_collctype		7
 #define Anum_pg_collation_collversion	8
 
-/* ----------------
- *		initial contents of pg_collation
- * ----------------
- */
-
 #define DEFAULT_COLLATION_OID	100
 #define C_COLLATION_OID			950
 #define POSIX_COLLATION_OID		951
 
-
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 8fca86d..41d97d4 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -2,7 +2,6 @@
  *
  * pg_constraint.h
  *	  definition of the system "constraint" relation (pg_constraint)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_constraint.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -176,14 +175,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
 #define Anum_pg_constraint_conbin			23
 #define Anum_pg_constraint_consrc			24
 
-/* ----------------
- *		initial contents of pg_constraint
- * ----------------
- */
-
-/* nothing, at present */
-
-
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
 #define CONSTRAINT_FOREIGN			'f'
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 29f3c9d..88098fa 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -2,7 +2,6 @@
  *
  * pg_conversion.h
  *	  definition of the system "conversion" relation (pg_conversion)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_conversion.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,9 +68,4 @@ typedef FormData_pg_conversion *Form_pg_conversion;
 #define Anum_pg_conversion_conproc		6
 #define Anum_pg_conversion_condefault	7
 
-/* ----------------
- * initial contents of pg_conversion
- * ---------------
- */
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index bbf131a..b7972fa 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -2,7 +2,6 @@
  *
  * pg_database.h
  *	  definition of the system "database" relation (pg_database)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_database.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 86cc17d..09546bd 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_db_role_setting.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +50,6 @@ typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 #define Anum_pg_db_role_setting_setrole			2
 #define Anum_pg_db_role_setting_setconfig		3
 
-/* ----------------
- *		initial contents of pg_db_role_setting are NOTHING
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 11b3060..7778276 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -10,8 +10,8 @@
  * src/include/catalog/pg_default_acl.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,11 +56,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define Anum_pg_default_acl_defaclobjtype		3
 #define Anum_pg_default_acl_defaclacl			4
 
-/* ----------------
- *		pg_default_acl has no initial contents
- * ----------------
- */
-
 /*
  * Types of objects for which the user is allowed to specify default
  * permissions through pg_default_acl.  These codes are used in the
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index be3867b..7c60e63 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -2,7 +2,18 @@
  *
  * pg_depend.h
  *	  definition of the system "dependency" relation (pg_depend)
- *	  along with the relation's initial contents.
+ *
+ * pg_depend has no preloaded contents, so there is no pg_depend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_depend;
+ * for example, there's not much value in creating an explicit dependency
+ * from an attribute to its relation.  Usually we make a dependency for
+ * cases where the relationship is conditional rather than essential
+ * (for example, not all triggers are dependent on constraints, but all
+ * attributes are dependent on relations) or where the dependency is not
+ * convenient to find from the contents of other catalogs.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +22,8 @@
  * src/include/catalog/pg_depend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -74,17 +85,4 @@ typedef FormData_pg_depend *Form_pg_depend;
 #define Anum_pg_depend_deptype		7
 
 
-/*
- * pg_depend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_depend;
- * for example, there's not much value in creating an explicit dependency
- * from an attribute to its relation.  Usually we make a dependency for
- * cases where the relationship is conditional rather than essential
- * (for example, not all triggers are dependent on constraints, but all
- * attributes are dependent on relations) or where the dependency is not
- * convenient to find from the contents of other catalogs.
- */
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index d291000..71eed4e 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -3,6 +3,10 @@
  * pg_description.h
  *	  definition of the system "description" relation (pg_description)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_description.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a function is identified by the OID of its pg_proc row
@@ -25,11 +29,8 @@
  * src/include/catalog/pg_description.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -73,15 +74,4 @@ typedef FormData_pg_description * Form_pg_description;
 #define Anum_pg_description_objsubid	3
 #define Anum_pg_description_description 4
 
-/* ----------------
- *		initial contents of pg_description
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index a65a8f4..3327688 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -2,7 +2,6 @@
  *
  * pg_enum.h
  *	  definition of the system "enum" relation (pg_enum)
- *	  along with the relation's initial contents.
  *
  *
  * Copyright (c) 2006-2018, PostgreSQL Global Development Group
@@ -10,11 +9,8 @@
  * src/include/catalog/pg_enum.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -54,11 +50,6 @@ typedef FormData_pg_enum *Form_pg_enum;
 #define Anum_pg_enum_enumsortorder		2
 #define Anum_pg_enum_enumlabel			3
 
-/* ----------------
- *		pg_enum has no initial contents
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index e03c819..20e7e38 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_event_trigger.h
  *	  definition of the system "event trigger" relation (pg_event_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_event_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index 9ca6ca7..c2d528f 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -2,7 +2,6 @@
  *
  * pg_extension.h
  *	  definition of the system "extension" relation (pg_extension)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_extension.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,9 +63,4 @@ typedef FormData_pg_extension *Form_pg_extension;
 #define Anum_pg_extension_extconfig			6
 #define Anum_pg_extension_extcondition		7
 
-/* ----------------
- *		pg_extension has no initial contents
- * ----------------
- */
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index dd00586..6cf321d 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -2,7 +2,6 @@
  *
  * pg_foreign_data_wrapper.h
  *	  definition of the system "foreign-data wrapper" relation (pg_foreign_data_wrapper)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_foreign_data_wrapper.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index a8c9e87..f909b26 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_server.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 210e77b..9bee001 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 057a9f7..ef0dea6 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -2,7 +2,6 @@
  *
  * pg_index.h
  *	  definition of the system "index" relation (pg_index)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_index.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3c572f4..3af1647 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -2,7 +2,6 @@
  *
  * pg_inherits.h
  *	  definition of the system "inherits" relation (pg_inherits)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_inherits.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -51,9 +50,4 @@ typedef FormData_pg_inherits *Form_pg_inherits;
 #define Anum_pg_inherits_inhparent		2
 #define Anum_pg_inherits_inhseqno		3
 
-/* ----------------
- *		pg_inherits has no initial contents
- * ----------------
- */
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 6ea005f..be26d2f 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -15,17 +15,20 @@
  * for a table itself, so that it is distinct from any column privilege.
  * Currently, objsubid is unused and zero for all other kinds of objects.
  *
+ * Because the contents of this table depend on what is done with the other
+ * objects in the system (and, in particular, may change due to changes in
+ * system_views.sql), there is no pg_init_privs.dat file. The initial contents
+ * are loaded near the end of initdb.
+ *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_init_privs.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -84,17 +87,4 @@ typedef enum InitPrivsType
 	INITPRIVS_EXTENSION = 'e'
 } InitPrivsType;
 
-/* ----------------
- *		initial contents of pg_init_privs
- * ----------------
- */
-
-/*
- *	Because the contents of this table depend on what is done with the other
- *	objects in the system (and, in particular, may change due to changes is
- *	system_views.sql), there is no initialization here.
- *
- *	The initial contents are loaded near the end of initdb.
- */
-
 #endif							/* PG_INIT_PRIVS_H */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 614ca67..5f82158 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -2,7 +2,6 @@
  *
  * pg_language.h
  *	  definition of the system "language" relation (pg_language)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_language.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,11 +63,6 @@ typedef FormData_pg_language *Form_pg_language;
 #define Anum_pg_language_lanvalidator	7
 #define Anum_pg_language_lanacl			8
 
-/* ----------------
- *		initial contents of pg_language
- * ----------------
- */
-
 #define INTERNALlanguageId 12
 #define ClanguageId 13
 #define SQLlanguageId 14
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 0a15649..1857ca4 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject.h
  *	  definition of the system "largeobject" relation (pg_largeobject)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,6 @@
  * src/include/catalog/pg_largeobject.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 4535b51..0cf7bcd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject_metadata.h
  *	  definition of the system "largeobject_metadata" relation (pg_largeobject_metadata)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_largeobject_metadata.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 5b6f9eb..19b559f9 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -2,7 +2,6 @@
  *
  * pg_namespace.h
  *	  definition of the system "namespace" relation (pg_namespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_namespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,17 +59,10 @@ typedef FormData_pg_namespace *Form_pg_namespace;
 #define Anum_pg_namespace_nspowner		2
 #define Anum_pg_namespace_nspacl		3
 
-
-/* ----------------
- * initial contents of pg_namespace
- * ---------------
- */
-
 #define PG_CATALOG_NAMESPACE 11
 #define PG_TOAST_NAMESPACE 99
 #define PG_PUBLIC_NAMESPACE 2200
 
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 5cff871..b10ceb9 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -2,7 +2,6 @@
  *
  * pg_opclass.h
  *	  definition of the system "opclass" relation (pg_opclass)
- *	  along with the relation's initial contents.
  *
  * The primary key for this table is <opcmethod, opcname, opcnamespace> ---
  * that is, there is a row for each valid combination of opclass name and
@@ -31,8 +30,8 @@
  * src/include/catalog/pg_opclass.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,37 +80,15 @@ typedef FormData_pg_opclass *Form_pg_opclass;
 #define Anum_pg_opclass_opcdefault		7
 #define Anum_pg_opclass_opckeytype		8
 
-/* ----------------
- *		initial contents of pg_opclass
- *
- * Note: we hard-wire an OID only for a few entries that have to be explicitly
- * referenced in the C code or in built-in catalog entries.  The rest get OIDs
- * assigned on-the-fly during initdb.
- * ----------------
- */
-
 #define DATE_BTREE_OPS_OID 3122
 #define FLOAT8_BTREE_OPS_OID 3123
 #define INT2_BTREE_OPS_OID 1979
 #define INT4_BTREE_OPS_OID 1978
 #define INT8_BTREE_OPS_OID 3124
-/*
- * Here's an ugly little hack to save space in the system catalog indexes.
- * btree doesn't ordinarily allow a storage type different from input type;
- * but cstring and name are the same thing except for trailing padding,
- * and we can safely omit that within an index entry.  So we declare the
- * btree opclass for name as using cstring storage type.
- */
 #define NUMERIC_BTREE_OPS_OID 3125
 #define OID_BTREE_OPS_OID 1981
 #define TEXT_BTREE_OPS_OID 3126
 #define TIMESTAMPTZ_BTREE_OPS_OID 3127
 #define TIMESTAMP_BTREE_OPS_OID 3128
 
-/* BRIN operator classes */
-/* no brin opclass for bool */
-/* no brin opclass for record, anyarray */
-/* no brin opclass for enum, tsvector, tsquery, jsonb */
-/* no brin opclass for the geometric types except box */
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index d9f303b..cbe6884 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -2,7 +2,6 @@
  *
  * pg_operator.h
  *	  definition of the system "operator" relation (pg_operator)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_operator.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,195 +73,42 @@ typedef FormData_pg_operator *Form_pg_operator;
 #define Anum_pg_operator_oprrest		13
 #define Anum_pg_operator_oprjoin		14
 
-/* ----------------
- *		initial contents of pg_operator
- * ----------------
- */
-
-/*
- * Note: every entry in pg_operator.h is expected to have a DESCR() comment.
- * If the operator is a deprecated equivalent of some other entry, be sure
- * to comment it as such so that initdb doesn't think it's a preferred name
- * for the underlying function.
- */
-
-
 #define BooleanNotEqualOperator   85
 #define BooleanEqualOperator   91
-
 #define Int4EqualOperator	96
 #define Int4LessOperator	97
 #define TextEqualOperator	98
-
-
-
 #define TIDEqualOperator   387
 #define TIDLessOperator    2799
-
 #define Int8LessOperator	412
-
-
-
-
-
-
-
-
 #define OID_NAME_REGEXEQ_OP		639
 #define OID_TEXT_REGEXEQ_OP		641
-
-
 #define Float8LessOperator	672
-
-
-
-
-
-
-/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-
-
-/* additional operators for geometric types - thomas 1997-07-09 */
-
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
 #define OID_BPCHAR_REGEXEQ_OP		1055
-
-/* generic array comparison operators */
 #define ARRAY_EQ_OP 1070
 #define ARRAY_LT_OP 1072
 #define ARRAY_GT_OP 1073
-
-/* date operators */
-
-/* time operators */
-
-/* timetz operators */
-
-/* float48 operators */
-
-/* float84 operators */
-
-
-/* LIKE hacks by Keith Parks. */
 #define OID_NAME_LIKE_OP		1207
 #define OID_TEXT_LIKE_OP		1209
 #define OID_BPCHAR_LIKE_OP		1211
-
-/* case-insensitive regex hacks */
 #define OID_NAME_ICREGEXEQ_OP		1226
 #define OID_TEXT_ICREGEXEQ_OP		1228
 #define OID_BPCHAR_ICREGEXEQ_OP		1234
-
-/* timestamptz operators */
-
-/* interval operators */
-
-
-
-
-/* additional geometric operators - thomas 97/04/18 */
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
-
-
-
-
-
-
-/* MACADDR type */
-
-
-/* MACADDR8 type */
-
-
-/* INET type (these also support CIDR via implicit cast) */
 #define OID_INET_SUB_OP			931
 #define OID_INET_SUBEQ_OP		932
 #define OID_INET_SUP_OP			933
 #define OID_INET_SUPEQ_OP		934
 #define OID_INET_OVERLAP_OP		3552
-
-
-/* case-insensitive LIKE hacks */
 #define OID_NAME_ICLIKE_OP		1625
 #define OID_TEXT_ICLIKE_OP		1627
 #define OID_BPCHAR_ICLIKE_OP	1629
-
-/* NUMERIC type - OID's 1700-1799 */
-
-
-
-
-
-
-
-
-
-
-
-/* bytea operators */
-
 #define OID_BYTEA_LIKE_OP		2016
-
-/* timestamp operators */
-
-/* character-by-character (not collation order) comparison operators for character types */
-
-
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* formerly-missing interval + datetime operators */
-
-/* new operators for Y-direction rtree opfamilies */
-
-/* overlap/contains/contained for arrays */
 #define OID_ARRAY_OVERLAP_OP	2750
 #define OID_ARRAY_CONTAINS_OP	2751
 #define OID_ARRAY_CONTAINED_OP	2752
-
-/* capturing operators to preserve pre-8.3 behavior of text concatenation */
-
-/* obsolete names for contains/contained-by operators; remove these someday */
-
-/* uuid operators */
-
-/* pg_lsn operators */
-
-/* enum operators */
-
-/*
- * tsearch operations
- */
-/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */
-
-/* generic record comparison operators */
 #define RECORD_EQ_OP 2988
 #define RECORD_LT_OP 2990
 #define RECORD_GT_OP 2991
-
-/* byte-oriented tests for identical rows and fast sorting */
-
-/* generic range type operators */
 #define OID_RANGE_LESS_OP 3884
 #define OID_RANGE_LESS_EQUAL_OP 3885
 #define OID_RANGE_GREATER_EQUAL_OP 3886
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 86f86e3..e9d8d3d 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -2,7 +2,6 @@
  *
  * pg_opfamily.h
  *	  definition of the system "opfamily" relation (pg_opfamily)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_opfamily.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +52,6 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define Anum_pg_opfamily_opfnamespace	3
 #define Anum_pg_opfamily_opfowner		4
 
-/* ----------------
- *		initial contents of pg_opfamily
- * ----------------
- */
-
 #define BOOL_BTREE_FAM_OID 424
 #define BPCHAR_BTREE_FAM_OID 426
 #define BYTEA_BTREE_FAM_OID 428
@@ -71,5 +65,4 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define BOOL_HASH_FAM_OID 2222
 #define TEXT_SPGIST_FAM_OID 4017
 
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 9dc66f4..a8bda00 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -2,7 +2,6 @@
  *
  * pg_partitioned_table.h
  *	  definition of the system "partitioned table" relation
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -10,8 +9,8 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 8995fe9..b1d9ece 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -2,7 +2,6 @@
  *
  * pg_pltemplate.h
  *	  definition of the system "PL template" relation (pg_pltemplate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_pltemplate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,11 +64,4 @@ typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 #define Anum_pg_pltemplate_tmpllibrary		7
 #define Anum_pg_pltemplate_tmplacl			8
 
-
-/* ----------------
- *		initial contents of pg_pltemplate
- * ----------------
- */
-
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 8ae5ace..80914dc 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -2,7 +2,6 @@
  *
  * pg_proc.h
  *	  definition of the system "procedure" relation (pg_proc)
- *	  along with the relation's initial contents.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -10,13 +9,8 @@
  * src/include/catalog/pg_proc.h
  *
  * NOTES
- *	  The script catalog/genbki.pl reads this file and generates .bki
- *	  information from the DATA() statements.  utils/Gen_fmgrtab.pl
- *	  generates fmgroids.h and fmgrtab.c the same way.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
- *	  XXX (eg. #if 0 #endif won't do what you think)
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -117,552 +111,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define Anum_pg_proc_proconfig			28
 #define Anum_pg_proc_proacl				29
 
-/* ----------------
- *		initial contents of pg_proc
- * ----------------
- */
-
-/*
- * Note: every entry in pg_proc.h is expected to have a DESCR() comment,
- * except for functions that implement pg_operator.h operators and don't
- * have a good reason to be called directly rather than via the operator.
- * (If you do expect such a function to be used directly, you should
- * duplicate the operator's comment.)  initdb will supply suitable default
- * comments for functions referenced by pg_operator.
- *
- * Try to follow the style of existing functions' comments.
- * Some recommended conventions:
- *		"I/O" for typinput, typoutput, typreceive, typsend functions
- *		"I/O typmod" for typmodin, typmodout functions
- *		"aggregate transition function" for aggtransfn functions, unless
- *					they are reasonably useful in their own right
- *		"aggregate final function" for aggfinalfn functions (likewise)
- *		"convert srctypename to desttypename" for cast functions
- *		"less-equal-greater" for B-tree comparison functions
- */
-
-/* keep the following ordered by OID so that later changes can be made easier */
-
-/* OIDS 1 - 99 */
-
-
-
-
-
-/* OIDS 100 - 199 */
-
-
-
-
-
-
-
-/* OIDS 200 - 299 */
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 300 - 399 */
-
-
-
-/* Index access method handlers */
-
-
-
-
-
-
-/* OIDS 400 - 499 */
-
-
-
-
-
-
-
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
-
-
-
-
-
-
-
-
-/* OIDS 700 - 799 */
-
-
-
-
-
-
-
-
-
-
-/* OIDS 800 - 899 */
-
-
-
-
-
-
-
-
-
-/* OIDS 900 - 999 */
-
-
-
-
-
-
-
-
-
-/* OIDS 1000 - 1999 */
-
-
-
-/* OIDS 1100 - 1199 */
-
-
-
-
-
-
-/* OIDS 1200 - 1299 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1300 - 1399 */
-
-
-
-
-
-
-
-
-
-/*
- * This form of obj_description is now deprecated, since it will fail if
- * OIDs are not unique across system catalogs.  Use the other form instead.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1400 - 1499 */
-
-
-
-
-
-
-
-
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - thomas 97/04/20
- */
-
-
-
-
-
-
-
-/* OIDS 1500 - 1599 */
-
-
-
-
-
-
-
-/* SEQUENCE functions */
-
-
-
-
-/* OIDS 1600 - 1699 */
-
-
-
-
-
-
-
-
-
-
-
-/* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
-
-
-/* for character set encoding support */
-
-/* return database encoding name */
-
-/* return client encoding name i.e. session encoding */
-
-
-
-
-
-
-
-
-
-/* System-view support functions */
-
-
-
-
-
-
-/* Deferrable unique constraint trigger */
-
-/* Generic referential integrity constraint triggers */
-
-
-/* avoid the C names bitand and bitor, since they are C++ keywords */
-
-
-
-
-/* for macaddr type support */
-
-
-
-/* for macaddr8 type support */
-
-
-
-/* for inet type support */
-
-/* for cidr type support */
-
-/* these are used for both inet and cidr */
-
-/* inet/cidr functions */
-
-
-
-/* GiST support for inet and cidr */
-
-/* SP-GiST support for inet and cidr */
-
-/* Selectivity estimation for inet and cidr */
-
-
-
-
-
-/* OID's 1700 - 1799 NUMERIC data type */
-
-
-
-/* formatting */
-
-
-
-
-
-/* Selectivity estimators for LIKE and related operators */
-
-/* Aggregate-related functions */
-
-
-
-/* To ASCII conversion */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Aggregates (moved here from pg_aggregate for 7.3) */
-
-
-
-
-
-/* count has two forms: count(any) and count(*) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* tablesample method handlers */
-
-/* cryptographic */
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* send/receive functions */
-
-
-/* System-view support functions with pretty-print option */
-
-/* asynchronous notifications */
-
-/* non-persistent series generator */
-
-/* boolean aggregates */
-/* ANY, SOME? These names conflict with subquery operators. See doc. */
-
-/* bitwise integer aggregates */
-
-/* formerly-missing interval + datetime operators */
-
-
-
-/* start time function */
-/* config reload time function */
-
-/* new functions for Y-direction rtree opclasses */
-
-/* support functions for GiST r-tree emulation */
-
-/* GIN array support */
-
-/* overlap/contains/contained */
-
-/* BRIN minmax */
-
-/* BRIN inclusion */
-
-/* userlock replacements */
-
-/* XML support */
-
-
-
-
-
-
-
-/* json */
-
-
-/* uuid */
-
-/* pg_lsn */
-
-/* enum related procs */
-
-/* text search stuff */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* jsonb */
-
-
-/* txid */
-
-/* record comparison using normal comparison rules */
-
-/* record comparison using raw byte images */
-
-/* Extensions */
-
-/* SQL-spec window functions */
-
-/* functions for range types */
-
-
-
-/* date, time, timestamp constructors */
-
-/* spgist opclasses */
-
-
-
-
-
-
-/* replication slots */
-
-/* event triggers */
-
-/* generic transition functions for ordered-set aggregates */
-
-/* inverse distribution aggregates (and their support functions) */
-
-/* hypothetical-set aggregates (and their support functions) */
-
-/* pg_upgrade support */
-
-/* replication/origin.h */
-
-
-
-
-
-
-
-
-
-
-
-
-/* publications */
-
-/* rls */
-
-/* pg_config */
-
-/* pg_controldata related functions */
-
-
-
-
-/* collation management functions */
-
-
-/* system management/monitoring related functions */
-
-/* hash partitioning constraint function */
-
 /*
  * Symbolic values for provolatile column: these indicate whether the result
  * of a function is dependent *only* on the values of its explicit arguments,
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 7bdc634..7016197 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 033b600..661466f 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication_rel.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index bbd28f2..b7113bf 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -2,7 +2,6 @@
  *
  * pg_range.h
  *	  definition of the system "range" relation (pg_range)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_range.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,13 +56,6 @@ typedef FormData_pg_range *Form_pg_range;
 #define Anum_pg_range_rngcanonical		5
 #define Anum_pg_range_rngsubdiff		6
 
-
-/* ----------------
- *		initial contents of pg_range
- * ----------------
- */
-
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 9656179..0c5a05e 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_replication_origin.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -62,9 +62,4 @@ typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 #define Anum_pg_replication_origin_roident			1
 #define Anum_pg_replication_origin_roname			2
 
-/* ----------------
- *		pg_replication_origin has no initial contents
- * ----------------
- */
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index 81f2b19..a310ecb 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -2,7 +2,6 @@
  *
  * pg_rewrite.h
  *	  definition of the system "rewrite-rule" relation (pg_rewrite)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 7.3, the primary key for this table is <ev_class, rulename>
  * --- ie, rule names are only unique among the rules of a given table.
@@ -14,8 +13,8 @@
  * src/include/catalog/pg_rewrite.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index ae40377..17ac34a 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -2,8 +2,16 @@
  *
  * pg_shdepend.h
  *	  definition of the system "shared dependency" relation (pg_shdepend)
- *	  along with the relation's initial contents.
  *
+ * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
+ * for example, there's not much value in creating an explicit dependency
+ * from a relation to its database.  Currently, only dependencies on roles
+ * are explicitly stored in pg_shdepend.
+
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -11,8 +19,8 @@
  * src/include/catalog/pg_shdepend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,14 +85,4 @@ typedef FormData_pg_shdepend *Form_pg_shdepend;
 #define Anum_pg_shdepend_deptype	7
 
 
-/*
- * pg_shdepend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
- * for example, there's not much value in creating an explicit dependency
- * from a relation to its database.  Currently, only dependencies on roles
- * are explicitly stored in pg_shdepend.
- */
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index d4ec616..c0ecc0c 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -4,6 +4,10 @@
  *	  definition of the system "shared description" relation
  *	  (pg_shdescription)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_shdescription.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a database is identified by the OID of its pg_database row
@@ -18,11 +22,8 @@
  * src/include/catalog/pg_shdescription.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,15 +65,4 @@ typedef FormData_pg_shdescription * Form_pg_shdescription;
 #define Anum_pg_shdescription_classoid	2
 #define Anum_pg_shdescription_description 3
 
-/* ----------------
- *		initial contents of pg_shdescription
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index a5c85fe..8ef2e55 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic.h
  *	  definition of the system "statistic" relation (pg_statistic)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 2f5ef78c..d656cd8 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic_ext.h
  *	  definition of the system "extended statistic" relation (pg_statistic_ext)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic_ext.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 6db2ee2..75a3a2e 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -2,7 +2,6 @@
  *
  * pg_tablespace.h
  *	  definition of the system "tablespace" relation (pg_tablespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_tablespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index d4fc464..21109db 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -7,8 +7,8 @@
  * src/include/catalog/pg_transform.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index c80a3aa..e307039 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_trigger.h
  *	  definition of the system "trigger" relation (pg_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 7667585..21e6c2c 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,9 +47,4 @@ typedef FormData_pg_ts_config *Form_pg_ts_config;
 #define Anum_pg_ts_config_cfgowner		3
 #define Anum_pg_ts_config_cfgparser		4
 
-/* ----------------
- *		initial contents of pg_ts_config
- * ----------------
- */
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 5d4820f..3b5e791 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config_map.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 #define Anum_pg_ts_config_map_mapseqno		3
 #define Anum_pg_ts_config_map_mapdict		4
 
-/* ----------------
- *		initial contents of pg_ts_config_map
- * ----------------
- */
-
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 175cbb3..74c80f0 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_dict.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -55,10 +52,4 @@ typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 #define Anum_pg_ts_dict_dicttemplate	4
 #define Anum_pg_ts_dict_dictinitoption	5
 
-/* ----------------
- *		initial contents of pg_ts_dict
- * ----------------
- */
-
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index de1943d..5b5edd0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_parser.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,10 +53,4 @@ typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 #define Anum_pg_ts_parser_prsheadline		6
 #define Anum_pg_ts_parser_prslextype		7
 
-/* ----------------
- *		initial contents of pg_ts_parser
- * ----------------
- */
-
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index d33145a..b641788 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_template.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_template *Form_pg_ts_template;
 #define Anum_pg_ts_template_tmplinit		3
 #define Anum_pg_ts_template_tmpllexize		4
 
-/* ----------------
- *		initial contents of pg_ts_template
- * ----------------
- */
-
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 07bedd3..6aa9185 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -2,7 +2,6 @@
  *
  * pg_type.h
  *	  definition of the system "type" relation (pg_type)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_type.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -268,106 +267,45 @@ typedef FormData_pg_type *Form_pg_type;
 #define Anum_pg_type_typdefault			29
 #define Anum_pg_type_typacl				30
 
-
-/* ----------------
- *		initial contents of pg_type
- * ----------------
- */
-
-/*
- * Keep the following ordered by OID so that later changes can be made more
- * easily.
- *
- * For types used in the system catalogs, make sure the values here match
- * TypInfo[] in bootstrap.c.
- */
-
-/* OIDS 1 - 99 */
 #define BOOLOID			16
-
 #define BYTEAOID		17
-
 #define CHAROID			18
-
 #define NAMEOID			19
-
 #define INT8OID			20
-
 #define INT2OID			21
-
 #define INT2VECTOROID	22
-
 #define INT4OID			23
-
 #define REGPROCOID		24
-
 #define TEXTOID			25
-
 #define OIDOID			26
-
 #define TIDOID		27
-
 #define XIDOID 28
-
 #define CIDOID 29
-
 #define OIDVECTOROID	30
-
-/* hand-built rowtype entries for bootstrapped catalogs */
-/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */
-
-
-/* OIDS 100 - 199 */
 #define JSONOID 114
 #define XMLOID 142
-
 #define PGNODETREEOID	194
-
 #define PGNDISTINCTOID	3361
-
 #define PGDEPENDENCIESOID	3402
-
 #define PGDDLCOMMANDOID 32
-
-/* OIDS 200 - 299 */
-
-
-/* OIDS 300 - 399 */
-
-/* OIDS 400 - 499 */
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
 #define POINTOID		600
 #define LSEGOID			601
 #define PATHOID			602
 #define BOXOID			603
 #define POLYGONOID		604
-
 #define LINEOID			628
-
-/* OIDS 700 - 799 */
-
 #define FLOAT4OID 700
 #define FLOAT8OID 701
 #define ABSTIMEOID		702
 #define RELTIMEOID		703
 #define TINTERVALOID	704
 #define UNKNOWNOID		705
-
 #define CIRCLEOID		718
 #define CASHOID 790
-
-/* OIDS 800 - 899 */
 #define MACADDROID 829
 #define INETOID 869
 #define CIDROID 650
 #define MACADDR8OID 774
-
-/* OIDS 900 - 999 */
-
-/* OIDS 1000 - 1099 */
 #define INT2ARRAYOID		1005
 #define INT4ARRAYOID		1007
 #define TEXTARRAYOID		1009
@@ -375,84 +313,35 @@ typedef FormData_pg_type *Form_pg_type;
 #define FLOAT4ARRAYOID 1021
 #define ACLITEMOID		1033
 #define CSTRINGARRAYOID		1263
-
 #define BPCHAROID		1042
 #define VARCHAROID		1043
-
 #define DATEOID			1082
 #define TIMEOID			1083
-
-/* OIDS 1100 - 1199 */
 #define TIMESTAMPOID	1114
 #define TIMESTAMPTZOID	1184
 #define INTERVALOID		1186
-
-/* OIDS 1200 - 1299 */
 #define TIMETZOID		1266
-
-/* OIDS 1500 - 1599 */
 #define BITOID	 1560
 #define VARBITOID	  1562
-
-/* OIDS 1600 - 1699 */
-
-/* OIDS 1700 - 1799 */
 #define NUMERICOID		1700
-
 #define REFCURSOROID	1790
-
-/* OIDS 2200 - 2299 */
-
 #define REGPROCEDUREOID 2202
-
 #define REGOPEROID		2203
-
 #define REGOPERATOROID	2204
-
 #define REGCLASSOID		2205
-
 #define REGTYPEOID		2206
-
 #define REGROLEOID		4096
-
 #define REGNAMESPACEOID		4089
-
 #define REGTYPEARRAYOID 2211
-
-/* uuid */
 #define UUIDOID 2950
-
-/* pg_lsn */
 #define LSNOID			3220
-
-/* text search */
 #define TSVECTOROID		3614
 #define GTSVECTOROID	3642
 #define TSQUERYOID		3615
 #define REGCONFIGOID	3734
 #define REGDICTIONARYOID	3769
-
-
-/* jsonb */
 #define JSONBOID 3802
-
-
-/* range types */
 #define INT4RANGEOID		3904
-
-/*
- * pseudo-types
- *
- * types with typtype='p' represent various special cases in the type system.
- *
- * These cannot be used to define table columns, but are valid as function
- * argument and result types (if supported by the function's implementation
- * language).
- *
- * Note: cstring is a borderline case; it is still considered a pseudo-type,
- * but there is now support for it in records and arrays.  Perhaps we should
- * just treat it as a regular base type?
- */
 #define RECORDOID		2249
 #define RECORDARRAYOID	2287
 #define CSTRINGOID		2275
@@ -472,7 +361,6 @@ typedef FormData_pg_type *Form_pg_type;
 #define TSM_HANDLEROID	3310
 #define ANYRANGEOID		3831
 
-
 /*
  * macros
  */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 686562a..3da6496 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_user_mapping.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index f6387ae..3db39b8 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -30,7 +30,7 @@ extern void BootstrapToastTable(char *relName,
 
 /*
  * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
 
-- 
2.7.4

v8-0006-Move-symbols-from-catalog-headers-to-generated-de.patchtext/x-patch; charset=US-ASCII; name=v8-0006-Move-symbols-from-catalog-headers-to-generated-de.patchDownload
From e8a425b8df76b9f914e22d44fd93bdf381a87f37 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 29 Jan 2018 20:16:48 +0700
Subject: [PATCH v7] Move symbols from catalog headers to generated definition
 headers.

When we deleted the catalog data from the headers, the OID symbols
were left behind. Since we don't want them to be separate from the
data they refer to, genbki.pl now copies them from the metadata in the
.dat files to new pg_*_d.h headers which are now included by the relevant
header file. This required an analog of FindDefinedSymbol() that retrieves
the symbol from the data.

To simplify the makefiles, put the list of catalog headers into a separate
file to be included by multiple makefiles. Note: The makefile changes
are POC, and may have bugs or inefficiencies.

Since we had to build this mechanism anyway, take this opportunity to
generate the Anum_* and Natts_* compiler constants, so we don't have
to maintain those by hand. This required correcting the spelling of
references to Anum_pg_init_privs_initprivs.

Also, since the new generated headers can be separately included
from the static catalog header, we can now arrange to have client code
include these instead. To make certain macros visible to client code,
introduce the EXPOSE_TO_CLIENT_CODE symbol, which is never defined, and
just prevents the compiler from seeing them where they are. Catalog.pm
knows to save these lines so they can be copied to the definition headers,
where both client and server code can see them.

With that in place, it's now possible to get rid of the pg_*_fn.h headers
which only exist to quarantine code away from clients. That is left for
future work, however. This patch also does not change the way #define symbols
for pg_proc entries are built.
---
 src/backend/Makefile                          |  16 +++-
 src/backend/catalog/.gitignore                |   1 +
 src/backend/catalog/Catalog.pm                |  76 +++++++++++----
 src/backend/catalog/Makefile                  |  44 +++------
 src/backend/catalog/Makefile.headers          |  34 +++++++
 src/backend/catalog/README                    |  10 +-
 src/backend/catalog/aclchk.c                  |   6 +-
 src/backend/catalog/genbki.pl                 |  92 +++++++++++++-----
 src/backend/utils/Gen_fmgrtab.pl              |   2 +-
 src/backend/utils/Makefile                    |   6 +-
 src/common/Makefile                           |   8 ++
 src/include/Makefile                          |   2 +-
 src/include/catalog/.gitignore                |   1 +
 src/include/catalog/genbki.h                  |  16 +++-
 src/include/catalog/pg_aggregate.h            |  32 +------
 src/include/catalog/pg_am.h                   |  17 +---
 src/include/catalog/pg_amop.h                 |  25 ++---
 src/include/catalog/pg_amproc.h               |  12 +--
 src/include/catalog/pg_attrdef.h              |  11 +--
 src/include/catalog/pg_attribute.h            |  32 +------
 src/include/catalog/pg_auth_members.h         |  11 +--
 src/include/catalog/pg_authid.h               |  26 +----
 src/include/catalog/pg_cast.h                 |  18 ++--
 src/include/catalog/pg_class.h                |  44 +--------
 src/include/catalog/pg_collation.h            |  21 +---
 src/include/catalog/pg_constraint.h           |  33 +------
 src/include/catalog/pg_conversion.h           |  15 +--
 src/include/catalog/pg_database.h             |  22 +----
 src/include/catalog/pg_db_role_setting.h      |  10 +-
 src/include/catalog/pg_default_acl.h          |  14 +--
 src/include/catalog/pg_depend.h               |  15 +--
 src/include/catalog/pg_description.h          |  11 +--
 src/include/catalog/pg_enum.h                 |  10 +-
 src/include/catalog/pg_event_trigger.h        |  13 +--
 src/include/catalog/pg_extension.h            |  15 +--
 src/include/catalog/pg_foreign_data_wrapper.h |  14 +--
 src/include/catalog/pg_foreign_server.h       |  15 +--
 src/include/catalog/pg_foreign_table.h        |  11 +--
 src/include/catalog/pg_index.h                |  26 +----
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  12 +--
 src/include/catalog/pg_language.h             |  19 +---
 src/include/catalog/pg_largeobject.h          |  10 +-
 src/include/catalog/pg_largeobject_metadata.h |   9 +-
 src/include/catalog/pg_namespace.h            |  15 +--
 src/include/catalog/pg_opclass.h              |  26 +----
 src/include/catalog/pg_operator.h             |  72 +-------------
 src/include/catalog/pg_opfamily.h             |  24 +----
 src/include/catalog/pg_partitioned_table.h    |  15 +--
 src/include/catalog/pg_pltemplate.h           |  15 +--
 src/include/catalog/pg_policy.h               |  19 +---
 src/include/catalog/pg_proc.h                 |  38 +-------
 src/include/catalog/pg_publication.h          |  15 +--
 src/include/catalog/pg_publication_rel.h      |  11 +--
 src/include/catalog/pg_range.h                |  13 +--
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |  14 +--
 src/include/catalog/pg_seclabel.h             |  12 +--
 src/include/catalog/pg_sequence.h             |  16 ++--
 src/include/catalog/pg_shdepend.h             |  15 +--
 src/include/catalog/pg_shdescription.h        |  10 +-
 src/include/catalog/pg_shseclabel.h           |  13 +--
 src/include/catalog/pg_statistic.h            |  33 +------
 src/include/catalog/pg_statistic_ext.h        |  15 +--
 src/include/catalog/pg_subscription.h         |  16 +---
 src/include/catalog/pg_subscription_rel.h     |  13 +--
 src/include/catalog/pg_tablespace.h           |  15 +--
 src/include/catalog/pg_transform.h            |  17 ++--
 src/include/catalog/pg_trigger.h              |  24 +----
 src/include/catalog/pg_ts_config.h            |  11 +--
 src/include/catalog/pg_ts_config_map.h        |  11 +--
 src/include/catalog/pg_ts_dict.h              |  12 +--
 src/include/catalog/pg_ts_parser.h            |  14 +--
 src/include/catalog/pg_ts_template.h          |  11 +--
 src/include/catalog/pg_type.h                 | 133 +-------------------------
 src/include/catalog/pg_user_mapping.h         |  11 +--
 src/interfaces/ecpg/ecpglib/execute.c         |   2 +-
 src/interfaces/ecpg/ecpglib/pg_type.h         |  65 +------------
 src/tools/msvc/Solution.pm                    |  30 ++++--
 src/tools/msvc/clean.bat                      |   2 +
 src/tools/pgindent/pgindent                   |   8 +-
 81 files changed, 377 insertions(+), 1265 deletions(-)
 create mode 100644 src/backend/catalog/Makefile.headers

diff --git a/src/backend/Makefile b/src/backend/Makefile
index 2fadcea..776cbfb 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -16,6 +16,7 @@ PGFILEDESC = "PostgreSQL Server"
 subdir = src/backend
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/src/backend/catalog/Makefile.headers
 
 SUBDIRS = access bootstrap catalog parser commands executor foreign lib libpq \
 	main nodes optimizer port postmaster regex replication rewrite \
@@ -149,10 +150,12 @@ utils/probes.h: utils/probes.d
 	$(MAKE) -C utils probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
+$(GENERATED_CATALOG_HEADERS): catalog/schemapg.h ;
+
 catalog/schemapg.h: | submake-schemapg
 
 submake-schemapg:
-	$(MAKE) -C catalog schemapg.h
+	$(MAKE) -C catalog $(GENERATED_CATALOG_HEADERS) schemapg.h
 
 .PHONY: submake-schemapg
 
@@ -169,7 +172,7 @@ submake-schemapg:
 
 .PHONY: generated-headers
 
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h
+generated-headers: $(addprefix $(top_builddir)/src/include/, parser/gram.h catalog/schemapg.h storage/lwlocknames.h utils/errcodes.h utils/fmgroids.h utils/fmgrprotos.h utils/probes.h)  $(addprefix $(top_builddir)/src/include/catalog/, $(GENERATED_CATALOG_HEADERS))
 
 $(top_builddir)/src/include/parser/gram.h: parser/gram.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
@@ -181,6 +184,11 @@ $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
+$(top_builddir)/src/include/catalog/%_d.h: catalog/%_d.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
+
 $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
@@ -216,7 +224,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
-	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription $(GENERATED_CATALOG_HEADERS)
 	$(MAKE) -C replication	repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
 	$(MAKE) -C storage/lmgr	lwlocknames.h
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
@@ -309,6 +317,7 @@ clean:
 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
 		$(top_builddir)/src/include/parser/gram.h \
 		$(top_builddir)/src/include/catalog/schemapg.h \
+		$(top_builddir)/src/include/catalog/pg_*_d.h \
 		$(top_builddir)/src/include/storage/lwlocknames.h \
 		$(top_builddir)/src/include/utils/fmgroids.h \
 		$(top_builddir)/src/include/utils/fmgrprotos.h \
@@ -330,6 +339,7 @@ maintainer-clean: distclean
 	      parser/gram.h \
 	      parser/scan.c \
 	      catalog/schemapg.h \
+	      catalog/pg_*_d.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
 	      catalog/postgres.shdescription \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 557af3c..1044a1c 100644
--- a/src/backend/catalog/.gitignore
+++ b/src/backend/catalog/.gitignore
@@ -2,3 +2,4 @@
 /postgres.description
 /postgres.shdescription
 /schemapg.h
+/pg_*_d.h
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 39afa3d..de92e15 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,10 +36,12 @@ sub ParseHeader
 	my %catalog;
 	my $declaring_attributes = 0;
 	my $is_varlen     = 0;
+	my $is_client_code = 0;
 
 	$catalog{columns} = [];
 	$catalog{toasting} = [];
 	$catalog{indexing} = [];
+	$catalog{client_code} = [];
 
 	open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -47,24 +49,39 @@ sub ParseHeader
 	while (<$ifh>)
 	{
 
-		# Strip C-style comments.
-		s;/\*(.|\n)*\*/;;g;
-		if (m;/\*;)
+		# Set appropriate flag when we're in certain code sections.
+		if (/^#/)
 		{
-
-			# handle multi-line comments properly.
-			my $next_line = <$ifh>;
-			die "$input_file: ends within C-style comment\n"
-			  if !defined $next_line;
-			$_ .= $next_line;
-			redo;
+			$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+			if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/)
+			{
+				$is_client_code = 1;
+				next;
+			}
+			next if !$is_client_code;
 		}
 
-		# Strip useless whitespace and trailing semicolons.
-		chomp;
-		s/^\s+//;
-		s/;\s*$//;
-		s/\s+/ /g;
+		if (!$is_client_code)
+		{
+			# Strip C-style comments.
+			s;/\*(.|\n)*\*/;;g;
+			if (m;/\*;)
+			{
+
+				# handle multi-line comments properly.
+				my $next_line = <$ifh>;
+				die "$input_file: ends within C-style comment\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+
+			# Strip useless whitespace and trailing semicolons.
+			chomp;
+			s/^\s+//;
+			s/;\s*$//;
+			s/\s+/ /g;
+		}
 
 		# Push the data into the appropriate data structure.
 		if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
@@ -102,14 +119,20 @@ sub ParseHeader
 			$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 			$declaring_attributes = 1;
 		}
-		elsif ($declaring_attributes)
+		elsif ($is_client_code)
 		{
-			next if (/^{|^$/);
-			if (/^#/)
+			if (/^#endif/)
 			{
-				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-				next;
+				$is_client_code = 0;
+			}
+			else
+			{
+				push @{ $catalog{client_code} }, $_;
 			}
+		}
+		elsif ($declaring_attributes)
+		{
+			next if (/^{|^$/);
 			if (/^}/)
 			{
 				$declaring_attributes = 0;
@@ -352,4 +375,17 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
+sub FindDefinedSymbolFromData
+{
+	my ($data, $symbol) = @_;
+	foreach my $row (@{ $data })
+	{
+		if ($row->{oid_symbol} eq $symbol)
+		{
+			return $row->{oid};
+		}
+		die "no definition found for $symbol\n";
+	}
+}
+
 1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 23858b8..e1985c6 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -2,6 +2,9 @@
 #
 # Makefile for backend/catalog
 #
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
 # src/backend/catalog/Makefile
 #
 #-------------------------------------------------------------------------
@@ -9,6 +12,7 @@
 subdir = src/backend/catalog
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
+include Makefile.headers
 
 OBJS = catalog.o dependency.o heap.o index.o indexing.o namespace.o aclchk.o \
        objectaccess.o objectaddress.o partition.o pg_aggregate.o pg_collation.o \
@@ -22,32 +26,11 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: $(BKIFILES) schemapg.h
-
-# Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
-
-POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
-	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
-	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
-	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
-	pg_language.h pg_largeobject_metadata.h pg_largeobject.h pg_aggregate.h \
-	pg_statistic_ext.h \
-	pg_statistic.h pg_rewrite.h pg_trigger.h pg_event_trigger.h pg_description.h \
-	pg_cast.h pg_enum.h pg_namespace.h pg_conversion.h pg_depend.h \
-	pg_database.h pg_db_role_setting.h pg_tablespace.h pg_pltemplate.h \
-	pg_authid.h pg_auth_members.h pg_shdepend.h pg_shdescription.h \
-	pg_ts_config.h pg_ts_config_map.h pg_ts_dict.h \
-	pg_ts_parser.h pg_ts_template.h pg_extension.h \
-	pg_foreign_data_wrapper.h pg_foreign_server.h pg_user_mapping.h \
-	pg_foreign_table.h pg_policy.h pg_replication_origin.h \
-	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
-	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
-	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
-	pg_subscription_rel.h \
-	toasting.h indexing.h \
-    )
+all: $(BKIFILES) schemapg.h $(GENERATED_CATALOG_HEADERS)
+
+# In the list of headers used to assemble postgres.bki, indexing.h needs
+# be last, and toasting.h just before it.
+POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS) toasting.h indexing.h)
 
 POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
@@ -61,10 +44,9 @@ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
-# locations of headers that genbki.pl needs to read
-pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog
-
 # see explanation in ../parser/Makefile
+#~ $(GENERATED_CATALOG_HEADERS): postgres.bki ;
+
 postgres.description: postgres.bki ;
 
 postgres.shdescription: postgres.bki ;
@@ -76,9 +58,9 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+$(GENERATED_CATALOG_HEADERS) postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
-	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
 .PHONY: install-data
 install-data: $(BKIFILES) installdirs
diff --git a/src/backend/catalog/Makefile.headers b/src/backend/catalog/Makefile.headers
new file mode 100644
index 0000000..a1cbbfd
--- /dev/null
+++ b/src/backend/catalog/Makefile.headers
@@ -0,0 +1,34 @@
+#-------------------------------------------------------------------------
+#
+# Makefile variables used by backend/Makefile and backend/catalog/Makefile
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/backend/catalog/Makefile.headers
+#
+#-------------------------------------------------------------------------
+
+# Note: there are some undocumented dependencies on the ordering in which
+# the catalog header files are assembled into postgres.bki.
+
+CATALOG_HEADERS := \
+	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
+	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
+	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
+	pg_language.h pg_largeobject_metadata.h pg_largeobject.h pg_aggregate.h \
+	pg_statistic_ext.h \
+	pg_statistic.h pg_rewrite.h pg_trigger.h pg_event_trigger.h pg_description.h \
+	pg_cast.h pg_enum.h pg_namespace.h pg_conversion.h pg_depend.h \
+	pg_database.h pg_db_role_setting.h pg_tablespace.h pg_pltemplate.h \
+	pg_authid.h pg_auth_members.h pg_shdepend.h pg_shdescription.h \
+	pg_ts_config.h pg_ts_config_map.h pg_ts_dict.h \
+	pg_ts_parser.h pg_ts_template.h pg_extension.h \
+	pg_foreign_data_wrapper.h pg_foreign_server.h pg_user_mapping.h \
+	pg_foreign_table.h pg_policy.h pg_replication_origin.h \
+	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
+	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
+	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
+	pg_subscription_rel.h \
+
+GENERATED_CATALOG_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h)
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index c177ba0..698f13c 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -110,8 +110,8 @@ pg_class, pg_attribute, and pg_type.  Avoid making new catalogs be bootstrap
 catalogs if at all possible; generally, only tables that must be written to
 in order to create a table should be bootstrapped.
 
-- Certain BOOTSTRAP tables must be at the start of the Makefile
-POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
+- Certain BOOTSTRAP tables must be at the start of the Makefile.headers
+CATALOG_HEADERS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
@@ -121,6 +121,12 @@ the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
 reputedly some other order dependencies in the .bki list, too.
 
+-Clients should not include the catalog headers directly.  Instead, they
+should include the corresponding generated pg_*_d.h header.  If you want
+macros or other code in the server headers to be visible to clients, use
+the undefined macro EXPOSE_TO_CLIENT_CODE to instruct genbki.pl to copy
+that section to the pg_*_d.h header.
+
 -----------------------------------------------------------------
 
 When munging the .c files, you should be aware of certain conventions:
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 1156627..932b1a1 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -5973,8 +5973,8 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			MemSet(nulls, false, sizeof(nulls));
 			MemSet(replace, false, sizeof(replace));
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
-			replace[Anum_pg_init_privs_privs - 1] = true;
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
+			replace[Anum_pg_init_privs_initprivs - 1] = true;
 
 			oldtuple = heap_modify_tuple(oldtuple, RelationGetDescr(relation),
 										 values, nulls, replace);
@@ -6011,7 +6011,7 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			values[Anum_pg_init_privs_privtype - 1] =
 				CharGetDatum(INITPRIVS_EXTENSION);
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
 
 			tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index c86b06e..ce8d110 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 my @input_files;
-my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -36,10 +35,6 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
-	elsif ($arg =~ /^-I/)
-	{
-		push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
-	}
 	elsif ($arg =~ /^--set-version=(.*)$/)
 	{
 		$major_version = $1;
@@ -53,8 +48,7 @@ while (@ARGV)
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n" if !@input_files;
 die "--set-version must be specified.\n" if !defined $major_version;
 
 # Make sure output_path ends in a slash.
@@ -78,21 +72,6 @@ my $shdescrfile = $output_path . 'postgres.shdescription';
 open my $shdescr, '>', $shdescrfile . $tmpext
   or die "can't open $shdescrfile$tmpext: $!";
 
-# Fetch some special data that we will substitute into the output file.
-# CAUTION: be wary about what symbols you substitute into the .bki file here!
-# It's okay to substitute things that are expected to be really constant
-# within a given Postgres release, such as fixed OIDs.  Do not substitute
-# anything that could depend on platform or configuration.  (The right place
-# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-# NB: make sure that the files used here are known to be part of the .bki
-# file's dependencies by src/backend/catalog/Makefile.
-my $BOOTSTRAP_SUPERUSERID =
-  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
-							 'BOOTSTRAP_SUPERUSERID');
-my $PG_CATALOG_NAMESPACE =
-  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
-							 'PG_CATALOG_NAMESPACE');
-
 # Read all the files into internal data structures. Not all catalogs
 # will have a data file.
 my @catnames;
@@ -131,6 +110,17 @@ foreach my $header (@input_files)
 	}
 }
 
+# Fetch some special data that we will substitute into the output file.
+# CAUTION: be wary about what symbols you substitute into the .bki file here!
+# It's okay to substitute things that are expected to be really constant
+# within a given Postgres release, such as fixed OIDs.  Do not substitute
+# anything that could depend on platform or configuration.  (The right place
+# to handle those sorts of things is in initdb.c's bootstrap_template1().)
+my $BOOTSTRAP_SUPERUSERID
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID');
+my $PG_CATALOG_NAMESPACE
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -146,6 +136,35 @@ my %types;
 foreach my $catname (@catnames)
 {
 
+	# Create one definition header with macro definitions for each catalog.
+	my $def_file = $output_path . $catname . '_d.h';
+	open my $def, '>', $def_file . $tmpext
+	  or die "can't open $def_file$tmpext: $!";
+
+	# Opening boilerplate for pg_*_d.h
+	printf $def <<EOM, $catname, $catname, uc $catname, uc $catname;
+/*-------------------------------------------------------------------------
+ *
+ * %s_d.h
+ *    Macro definitions for %s
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ *  ******************************
+ *  *** DO NOT EDIT THIS FILE! ***
+ *  ******************************
+ *
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef %s_D_H
+#define %s_D_H
+
+EOM
+
 	# .bki CREATE command for this catalog
 	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
@@ -158,11 +177,14 @@ foreach my $catname (@catnames)
 
 	print $bki " (\n";
 	my $schema = $catalog->{columns};
+	my $attnum = 0;
 	foreach my $column (@$schema)
 	{
+		$attnum++;
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
 
+		# Emit column definitions
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -179,9 +201,22 @@ foreach my $catname (@catnames)
 		{
 			print $bki " FORCE NULL";
 		}
+
+		# Emit Anum_* constants
+		print $def
+		  sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum);
 	}
 	print $bki "\n )\n";
 
+	# Emit Natts_* constant
+	print $def "\n#define Natts_$catname $attnum\n\n";
+
+	# Emit client code copied from source header
+	foreach my $line (@{ $catalog->{client_code} })
+	{
+		print $def $line;
+	}
+
 	# Open it, unless bootstrap case (create bootstrap does this
 	# automatically)
 	if (!$catalog->{bootstrap})
@@ -260,8 +295,20 @@ foreach my $catname (@catnames)
 			printf $shdescr "%s\t%s\t%s\n",
 			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
+
+		# Emit OID symbols
+		if (defined $bki_values{oid_symbol})
+		{
+			printf $def "#define %s %s\n",
+			  $bki_values{oid_symbol}, $bki_values{oid};
+		}
 	}
 	print $bki "close $catname\n";
+	print $def sprintf("\n#endif /* %s_D_H */\n", uc $catname);
+
+	# Close and rename definition header
+	close $def;
+	Catalog::RenameTempFile($def_file, $tmpext);
 }
 
 # Any information needed for the BKI that is not contained in a pg_*.h header
@@ -568,7 +615,6 @@ sub usage
 Usage: genbki.pl [options] header...
 
 Options:
-    -I               path to include files
     -o               output path
     --set-version    PostgreSQL version number for initdb cross-check
 
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 5faaadc..2a5381d 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -82,7 +82,7 @@ foreach my $datfile (@input_files)
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
-	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
+	Catalog::FindDefinedSymbolFromData($catalog_data{pg_language}, 'INTERNALlanguageId');
 
 # Collect certain fields from pg_proc.dat.
 my @fmgr = ();
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index f71cdc5..26500be 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -20,12 +20,14 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h
 
 $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 
+FMGR_DATA = $(addprefix $(top_srcdir)/src/include/catalog/, pg_proc.dat pg_language.dat)
+
 # see explanation in ../parser/Makefile
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/common/Makefile b/src/common/Makefile
index 80e78d7..a52922c 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -95,6 +95,14 @@ $(OBJS_SRV): | submake-errcodes
 submake-errcodes:
 	$(MAKE) -C ../backend submake-errcodes
 
+# Certain generated headers need to be visible outside the backend.
+$(OBJS_COMMON): | generated-headers
+
+.PHONY: generated-headers
+
+generated-headers:
+	$(MAKE) -C ../backend generated-headers
+
 # Dependencies of keywords.o need to be managed explicitly to make sure
 # that you don't get broken parsing code, even in a non-enable-depend build.
 # Note that gram.h isn't required for the frontend version of keywords.o.
diff --git a/src/include/Makefile b/src/include/Makefile
index a689d35..7fe4d45 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -73,7 +73,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h
+	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h catalog/pg_*_d.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index 650202e..dfd5616 100644
--- a/src/include/catalog/.gitignore
+++ b/src/include/catalog/.gitignore
@@ -1 +1,2 @@
 /schemapg.h
+/pg_*_d.h
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 9b769c2..3be6daf 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -28,15 +28,16 @@
 #define BKI_WITHOUT_OIDS
 #define BKI_ROWTYPE_OID(oid)
 #define BKI_SCHEMA_MACRO
+
+/* Options that may appear after an attribute (on the same line) */
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
-
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* The following are never defined; they are here only for documentation. */
+
 /*
- * This is never defined; it's here only for documentation.
- *
  * Variable-length catalog fields (except possibly the first not nullable one)
  * should not be visible in C structures, so they are made invisible by #ifdefs
  * of an undefined symbol.  See also MARKNOTNULL in bootstrap.c for how this is
@@ -44,4 +45,13 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * There is code in the catalog headers that needs to be visible to clients,
+ * but we don't want them to include the full header because of safety issues
+ * with other code in the header. This symbol instructs genbki.pl to copy this
+ * section when generating the corresponding definition header, where it can
+ * be included by both client and backend code.
+ */
+#undef EXPOSE_TO_CLIENT_CODE
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 4f9edf9..97d8f22 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -19,6 +19,7 @@
 #define PG_AGGREGATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_aggregate_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_aggregate definition.
@@ -87,34 +88,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_aggregate *Form_pg_aggregate;
 
-/* ----------------
- *		compiler constants for pg_aggregate
- * ----------------
- */
-
-#define Natts_pg_aggregate					22
-#define Anum_pg_aggregate_aggfnoid			1
-#define Anum_pg_aggregate_aggkind			2
-#define Anum_pg_aggregate_aggnumdirectargs	3
-#define Anum_pg_aggregate_aggtransfn		4
-#define Anum_pg_aggregate_aggfinalfn		5
-#define Anum_pg_aggregate_aggcombinefn		6
-#define Anum_pg_aggregate_aggserialfn		7
-#define Anum_pg_aggregate_aggdeserialfn		8
-#define Anum_pg_aggregate_aggmtransfn		9
-#define Anum_pg_aggregate_aggminvtransfn	10
-#define Anum_pg_aggregate_aggmfinalfn		11
-#define Anum_pg_aggregate_aggfinalextra		12
-#define Anum_pg_aggregate_aggmfinalextra	13
-#define Anum_pg_aggregate_aggfinalmodify	14
-#define Anum_pg_aggregate_aggmfinalmodify	15
-#define Anum_pg_aggregate_aggsortop			16
-#define Anum_pg_aggregate_aggtranstype		17
-#define Anum_pg_aggregate_aggtransspace		18
-#define Anum_pg_aggregate_aggmtranstype		19
-#define Anum_pg_aggregate_aggmtransspace	20
-#define Anum_pg_aggregate_agginitval		21
-#define Anum_pg_aggregate_aggminitval		22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for aggkind column.  We distinguish normal aggregates
@@ -143,4 +117,6 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index fe59a29..4004c96 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -19,6 +19,7 @@
 #define PG_AM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_am_d.h"
 
 /* ----------------
  *		pg_am definition.  cpp turns this into
@@ -41,14 +42,7 @@ CATALOG(pg_am,2601)
  */
 typedef FormData_pg_am *Form_pg_am;
 
-/* ----------------
- *		compiler constants for pg_am
- * ----------------
- */
-#define Natts_pg_am						3
-#define Anum_pg_am_amname				1
-#define Anum_pg_am_amhandler			2
-#define Anum_pg_am_amtype				3
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		compiler constant for amtype
@@ -56,11 +50,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-#define BTREE_AM_OID 403
-#define HASH_AM_OID 405
-#define GIST_AM_OID 783
-#define GIN_AM_OID 2742
-#define SPGIST_AM_OID 4000
-#define BRIN_AM_OID 3580
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AM_H */
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index e978c32..68ee321 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -44,6 +44,7 @@
 #define PG_AMOP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amop_d.h"
 
 /* ----------------
  *		pg_amop definition.  cpp turns this into
@@ -64,10 +65,6 @@ CATALOG(pg_amop,2602)
 	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
 } FormData_pg_amop;
 
-/* allowed values of amoppurpose: */
-#define AMOP_SEARCH		's'		/* operator is for search */
-#define AMOP_ORDER		'o'		/* operator is for ordering */
-
 /* ----------------
  *		Form_pg_amop corresponds to a pointer to a tuple with
  *		the format of pg_amop relation.
@@ -75,18 +72,12 @@ CATALOG(pg_amop,2602)
  */
 typedef FormData_pg_amop *Form_pg_amop;
 
-/* ----------------
- *		compiler constants for pg_amop
- * ----------------
- */
-#define Natts_pg_amop					8
-#define Anum_pg_amop_amopfamily			1
-#define Anum_pg_amop_amoplefttype		2
-#define Anum_pg_amop_amoprighttype		3
-#define Anum_pg_amop_amopstrategy		4
-#define Anum_pg_amop_amoppurpose		5
-#define Anum_pg_amop_amopopr			6
-#define Anum_pg_amop_amopmethod			7
-#define Anum_pg_amop_amopsortfamily		8
+#ifdef EXPOSE_TO_CLIENT_CODE
+
+/* allowed values of amoppurpose: */
+#define AMOP_SEARCH		's'		/* operator is for search */
+#define AMOP_ORDER		'o'		/* operator is for ordering */
+
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 83ce03b..66e1cdc 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -33,6 +33,7 @@
 #define PG_AMPROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amproc_d.h"
 
 /* ----------------
  *		pg_amproc definition.  cpp turns this into
@@ -57,15 +58,4 @@ CATALOG(pg_amproc,2603)
  */
 typedef FormData_pg_amproc *Form_pg_amproc;
 
-/* ----------------
- *		compiler constants for pg_amproc
- * ----------------
- */
-#define Natts_pg_amproc					5
-#define Anum_pg_amproc_amprocfamily		1
-#define Anum_pg_amproc_amproclefttype	2
-#define Anum_pg_amproc_amprocrighttype	3
-#define Anum_pg_amproc_amprocnum		4
-#define Anum_pg_amproc_amproc			5
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 3aab48d..068ab64 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -19,6 +19,7 @@
 #define PG_ATTRDEF_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attrdef_d.h"
 
 /* ----------------
  *		pg_attrdef definition.  cpp turns this into
@@ -45,14 +46,4 @@ CATALOG(pg_attrdef,2604)
  */
 typedef FormData_pg_attrdef *Form_pg_attrdef;
 
-/* ----------------
- *		compiler constants for pg_attrdef
- * ----------------
- */
-#define Natts_pg_attrdef				4
-#define Anum_pg_attrdef_adrelid			1
-#define Anum_pg_attrdef_adnum			2
-#define Anum_pg_attrdef_adbin			3
-#define Anum_pg_attrdef_adsrc			4
-
 #endif							/* PG_ATTRDEF_H */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 3c78871..db3e860 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -23,6 +23,7 @@
 #define PG_ATTRIBUTE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attribute_d.h"
 
 /* ----------------
  *		pg_attribute definition.  cpp turns this into
@@ -189,36 +190,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
  */
 typedef FormData_pg_attribute *Form_pg_attribute;
 
-/* ----------------
- *		compiler constants for pg_attribute
- * ----------------
- */
-
-#define Natts_pg_attribute				22
-#define Anum_pg_attribute_attrelid		1
-#define Anum_pg_attribute_attname		2
-#define Anum_pg_attribute_atttypid		3
-#define Anum_pg_attribute_attstattarget 4
-#define Anum_pg_attribute_attlen		5
-#define Anum_pg_attribute_attnum		6
-#define Anum_pg_attribute_attndims		7
-#define Anum_pg_attribute_attcacheoff	8
-#define Anum_pg_attribute_atttypmod		9
-#define Anum_pg_attribute_attbyval		10
-#define Anum_pg_attribute_attstorage	11
-#define Anum_pg_attribute_attalign		12
-#define Anum_pg_attribute_attnotnull	13
-#define Anum_pg_attribute_atthasdef		14
-#define Anum_pg_attribute_attidentity	15
-#define Anum_pg_attribute_attisdropped	16
-#define Anum_pg_attribute_attislocal	17
-#define Anum_pg_attribute_attinhcount	18
-#define Anum_pg_attribute_attcollation	19
-#define Anum_pg_attribute_attacl		20
-#define Anum_pg_attribute_attoptions	21
-#define Anum_pg_attribute_attfdwoptions 22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_ATTRIBUTE_H */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index a702dff..b8ac653 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -20,6 +20,7 @@
 #define PG_AUTH_MEMBERS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_auth_members_d.h"
 
 /* ----------------
  *		pg_auth_members definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
  */
 typedef FormData_pg_auth_members *Form_pg_auth_members;
 
-/* ----------------
- *		compiler constants for pg_auth_members
- * ----------------
- */
-#define Natts_pg_auth_members				4
-#define Anum_pg_auth_members_roleid			1
-#define Anum_pg_auth_members_member			2
-#define Anum_pg_auth_members_grantor		3
-#define Anum_pg_auth_members_admin_option	4
-
 #endif							/* PG_AUTH_MEMBERS_H */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b101e30..036bc67 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -21,6 +21,7 @@
 #define PG_AUTHID_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_authid_d.h"
 
 /*
  * The CATALOG definition has to refer to the type of rolvaliduntil as
@@ -62,7 +63,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
-
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
  *		the format of pg_authid relation.
@@ -70,28 +70,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
  */
 typedef FormData_pg_authid *Form_pg_authid;
 
-/* ----------------
- *		compiler constants for pg_authid
- * ----------------
- */
-#define Natts_pg_authid					11
-#define Anum_pg_authid_rolname			1
-#define Anum_pg_authid_rolsuper			2
-#define Anum_pg_authid_rolinherit		3
-#define Anum_pg_authid_rolcreaterole	4
-#define Anum_pg_authid_rolcreatedb		5
-#define Anum_pg_authid_rolcanlogin		6
-#define Anum_pg_authid_rolreplication	7
-#define Anum_pg_authid_rolbypassrls		8
-#define Anum_pg_authid_rolconnlimit		9
-#define Anum_pg_authid_rolpassword		10
-#define Anum_pg_authid_rolvaliduntil	11
-
-#define BOOTSTRAP_SUPERUSERID			10
-#define DEFAULT_ROLE_MONITOR		3373
-#define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
-#define DEFAULT_ROLE_READ_ALL_STATS 3375
-#define DEFAULT_ROLE_STAT_SCAN_TABLES	3377
-#define DEFAULT_ROLE_SIGNAL_BACKENDID	4200
-
 #endif							/* PG_AUTHID_H */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 1930d4b..6d98213 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -21,6 +21,7 @@
 #define PG_CAST_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_cast_d.h"
 
 /* ----------------
  *		pg_cast definition.  cpp turns this into
@@ -38,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+/* ----------------
+ *		Form_pg_cast corresponds to a pointer to a tuple with
+ *		the format of pg_cast relation.
+ * ----------------
+ */
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
@@ -68,16 +74,4 @@ typedef enum CoercionMethod
 	COERCION_METHOD_INOUT = 'i' /* use input/output functions */
 } CoercionMethod;
 
-
-/* ----------------
- *		compiler constants for pg_cast
- * ----------------
- */
-#define Natts_pg_cast				5
-#define Anum_pg_cast_castsource		1
-#define Anum_pg_cast_casttarget		2
-#define Anum_pg_cast_castfunc		3
-#define Anum_pg_cast_castcontext	4
-#define Anum_pg_cast_castmethod		5
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 7bc09bb..d9f5aff 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -19,6 +19,7 @@
 #define PG_CLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_class_d.h"
 
 /* ----------------
  *		pg_class definition.  cpp turns this into
@@ -93,46 +94,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_class *Form_pg_class;
 
-/* ----------------
- *		compiler constants for pg_class
- * ----------------
- */
-
-#define Natts_pg_class						33
-#define Anum_pg_class_relname				1
-#define Anum_pg_class_relnamespace			2
-#define Anum_pg_class_reltype				3
-#define Anum_pg_class_reloftype				4
-#define Anum_pg_class_relowner				5
-#define Anum_pg_class_relam					6
-#define Anum_pg_class_relfilenode			7
-#define Anum_pg_class_reltablespace			8
-#define Anum_pg_class_relpages				9
-#define Anum_pg_class_reltuples				10
-#define Anum_pg_class_relallvisible			11
-#define Anum_pg_class_reltoastrelid			12
-#define Anum_pg_class_relhasindex			13
-#define Anum_pg_class_relisshared			14
-#define Anum_pg_class_relpersistence		15
-#define Anum_pg_class_relkind				16
-#define Anum_pg_class_relnatts				17
-#define Anum_pg_class_relchecks				18
-#define Anum_pg_class_relhasoids			19
-#define Anum_pg_class_relhaspkey			20
-#define Anum_pg_class_relhasrules			21
-#define Anum_pg_class_relhastriggers		22
-#define Anum_pg_class_relhassubclass		23
-#define Anum_pg_class_relrowsecurity		24
-#define Anum_pg_class_relforcerowsecurity	25
-#define Anum_pg_class_relispopulated		26
-#define Anum_pg_class_relreplident			27
-#define Anum_pg_class_relispartition		28
-#define Anum_pg_class_relfrozenxid			29
-#define Anum_pg_class_relminmxid			30
-#define Anum_pg_class_relacl				31
-#define Anum_pg_class_reloptions			32
-#define Anum_pg_class_relpartbound			33
-
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
@@ -162,4 +124,6 @@ typedef FormData_pg_class *Form_pg_class;
  */
 #define		  REPLICA_IDENTITY_INDEX	'i'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CLASS_H */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 50cbe1e..0c6d47f 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -20,6 +20,7 @@
 #define PG_COLLATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_collation_d.h"
 
 /* ----------------
  *		pg_collation definition.  cpp turns this into
@@ -50,26 +51,12 @@ CATALOG(pg_collation,3456)
  */
 typedef FormData_pg_collation *Form_pg_collation;
 
-/* ----------------
- *		compiler constants for pg_collation
- * ----------------
- */
-#define Natts_pg_collation				8
-#define Anum_pg_collation_collname		1
-#define Anum_pg_collation_collnamespace 2
-#define Anum_pg_collation_collowner		3
-#define Anum_pg_collation_collprovider	4
-#define Anum_pg_collation_collencoding	5
-#define Anum_pg_collation_collcollate	6
-#define Anum_pg_collation_collctype		7
-#define Anum_pg_collation_collversion	8
-
-#define DEFAULT_COLLATION_OID	100
-#define C_COLLATION_OID			950
-#define POSIX_COLLATION_OID		951
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_COLLATION_H */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 41d97d4..758325e 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -19,6 +19,7 @@
 #define PG_CONSTRAINT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_constraint_d.h"
 
 /* ----------------
  *		pg_constraint definition.  cpp turns this into
@@ -145,35 +146,7 @@ CATALOG(pg_constraint,2606)
  */
 typedef FormData_pg_constraint *Form_pg_constraint;
 
-/* ----------------
- *		compiler constants for pg_constraint
- * ----------------
- */
-#define Natts_pg_constraint					24
-#define Anum_pg_constraint_conname			1
-#define Anum_pg_constraint_connamespace		2
-#define Anum_pg_constraint_contype			3
-#define Anum_pg_constraint_condeferrable	4
-#define Anum_pg_constraint_condeferred		5
-#define Anum_pg_constraint_convalidated		6
-#define Anum_pg_constraint_conrelid			7
-#define Anum_pg_constraint_contypid			8
-#define Anum_pg_constraint_conindid			9
-#define Anum_pg_constraint_confrelid		10
-#define Anum_pg_constraint_confupdtype		11
-#define Anum_pg_constraint_confdeltype		12
-#define Anum_pg_constraint_confmatchtype	13
-#define Anum_pg_constraint_conislocal		14
-#define Anum_pg_constraint_coninhcount		15
-#define Anum_pg_constraint_connoinherit		16
-#define Anum_pg_constraint_conkey			17
-#define Anum_pg_constraint_confkey			18
-#define Anum_pg_constraint_conpfeqop		19
-#define Anum_pg_constraint_conppeqop		20
-#define Anum_pg_constraint_conffeqop		21
-#define Anum_pg_constraint_conexclop		22
-#define Anum_pg_constraint_conbin			23
-#define Anum_pg_constraint_consrc			24
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
@@ -189,4 +162,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
  * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
  */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CONSTRAINT_H */
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 88098fa..eacc09a 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -19,6 +19,7 @@
 #define PG_CONVERSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_conversion_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_conversion definition.
@@ -54,18 +55,4 @@ CATALOG(pg_conversion,2607)
  */
 typedef FormData_pg_conversion *Form_pg_conversion;
 
-/* ----------------
- *		compiler constants for pg_conversion
- * ----------------
- */
-
-#define Natts_pg_conversion				7
-#define Anum_pg_conversion_conname		1
-#define Anum_pg_conversion_connamespace 2
-#define Anum_pg_conversion_conowner		3
-#define Anum_pg_conversion_conforencoding		4
-#define Anum_pg_conversion_contoencoding		5
-#define Anum_pg_conversion_conproc		6
-#define Anum_pg_conversion_condefault	7
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index b7972fa..9435f24 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -19,6 +19,7 @@
 #define PG_DATABASE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_database_d.h"
 
 /* ----------------
  *		pg_database definition.  cpp turns this into
@@ -55,25 +56,4 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
  */
 typedef FormData_pg_database *Form_pg_database;
 
-/* ----------------
- *		compiler constants for pg_database
- * ----------------
- */
-#define Natts_pg_database				13
-#define Anum_pg_database_datname		1
-#define Anum_pg_database_datdba			2
-#define Anum_pg_database_encoding		3
-#define Anum_pg_database_datcollate		4
-#define Anum_pg_database_datctype		5
-#define Anum_pg_database_datistemplate	6
-#define Anum_pg_database_datallowconn	7
-#define Anum_pg_database_datconnlimit	8
-#define Anum_pg_database_datlastsysoid	9
-#define Anum_pg_database_datfrozenxid	10
-#define Anum_pg_database_datminmxid		11
-#define Anum_pg_database_dattablespace	12
-#define Anum_pg_database_datacl			13
-
-#define TemplateDbOid			1
-
 #endif							/* PG_DATABASE_H */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 09546bd..013e6a2 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -18,6 +18,7 @@
 #ifndef PG_DB_ROLE_SETTING_H
 #define PG_DB_ROLE_SETTING_H
 
+#include "catalog/pg_db_role_setting_d.h"
 #include "utils/guc.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
@@ -41,15 +42,6 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
-/* ----------------
- *		compiler constants for pg_db_role_setting
- * ----------------
- */
-#define Natts_pg_db_role_setting				3
-#define Anum_pg_db_role_setting_setdatabase		1
-#define Anum_pg_db_role_setting_setrole			2
-#define Anum_pg_db_role_setting_setconfig		3
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 7778276..868ac0c 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -19,6 +19,7 @@
 #define PG_DEFAULT_ACL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_default_acl_d.h"
 
 /* ----------------
  *		pg_default_acl definition.  cpp turns this into
@@ -45,16 +46,7 @@ CATALOG(pg_default_acl,826)
  */
 typedef FormData_pg_default_acl *Form_pg_default_acl;
 
-/* ----------------
- *		compiler constants for pg_default_acl
- * ----------------
- */
-
-#define Natts_pg_default_acl					4
-#define Anum_pg_default_acl_defaclrole			1
-#define Anum_pg_default_acl_defaclnamespace		2
-#define Anum_pg_default_acl_defaclobjtype		3
-#define Anum_pg_default_acl_defaclacl			4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Types of objects for which the user is allowed to specify default
@@ -67,4 +59,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define DEFACLOBJ_TYPE			'T' /* type */
 #define DEFACLOBJ_NAMESPACE		'n' /* namespace */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_DEFAULT_ACL_H */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 7c60e63..030f655 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -31,6 +31,7 @@
 #define PG_DEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_depend_d.h"
 
 /* ----------------
  *		pg_depend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_depend *Form_pg_depend;
 
-/* ----------------
- *		compiler constants for pg_depend
- * ----------------
- */
-#define Natts_pg_depend				7
-#define Anum_pg_depend_classid		1
-#define Anum_pg_depend_objid		2
-#define Anum_pg_depend_objsubid		3
-#define Anum_pg_depend_refclassid	4
-#define Anum_pg_depend_refobjid		5
-#define Anum_pg_depend_refobjsubid	6
-#define Anum_pg_depend_deptype		7
-
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 71eed4e..d3c8644 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -38,6 +38,7 @@
 #define PG_DESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_description_d.h"
 
 /* ----------------
  *		pg_description definition.  cpp turns this into
@@ -64,14 +65,4 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_description * Form_pg_description;
 
-/* ----------------
- *		compiler constants for pg_description
- * ----------------
- */
-#define Natts_pg_description			4
-#define Anum_pg_description_objoid		1
-#define Anum_pg_description_classoid	2
-#define Anum_pg_description_objsubid	3
-#define Anum_pg_description_description 4
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 3327688..edea5e3 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -18,6 +18,7 @@
 #define PG_ENUM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_enum_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -41,15 +42,6 @@ CATALOG(pg_enum,3501)
  */
 typedef FormData_pg_enum *Form_pg_enum;
 
-/* ----------------
- *		compiler constants for pg_enum
- * ----------------
- */
-#define Natts_pg_enum					3
-#define Anum_pg_enum_enumtypid			1
-#define Anum_pg_enum_enumsortorder		2
-#define Anum_pg_enum_enumlabel			3
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index 20e7e38..3ca0a88 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -19,6 +19,7 @@
 #define PG_EVENT_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_event_trigger_d.h"
 
 /* ----------------
  *		pg_event_trigger definition.    cpp turns this into
@@ -48,16 +49,4 @@ CATALOG(pg_event_trigger,3466)
  */
 typedef FormData_pg_event_trigger *Form_pg_event_trigger;
 
-/* ----------------
- *		compiler constants for pg_event_trigger
- * ----------------
- */
-#define Natts_pg_event_trigger					6
-#define Anum_pg_event_trigger_evtname			1
-#define Anum_pg_event_trigger_evtevent			2
-#define Anum_pg_event_trigger_evtowner			3
-#define Anum_pg_event_trigger_evtfoid			4
-#define Anum_pg_event_trigger_evtenabled		5
-#define Anum_pg_event_trigger_evttags			6
-
 #endif							/* PG_EVENT_TRIGGER_H */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index c2d528f..a60bd44 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -19,6 +19,7 @@
 #define PG_EXTENSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_extension_d.h"
 
 /* ----------------
  *		pg_extension definition.  cpp turns this into
@@ -49,18 +50,4 @@ CATALOG(pg_extension,3079)
  */
 typedef FormData_pg_extension *Form_pg_extension;
 
-/* ----------------
- *		compiler constants for pg_extension
- * ----------------
- */
-
-#define Natts_pg_extension					7
-#define Anum_pg_extension_extname			1
-#define Anum_pg_extension_extowner			2
-#define Anum_pg_extension_extnamespace		3
-#define Anum_pg_extension_extrelocatable	4
-#define Anum_pg_extension_extversion		5
-#define Anum_pg_extension_extconfig			6
-#define Anum_pg_extension_extcondition		7
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index 6cf321d..ae9b0be 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -19,6 +19,7 @@
 #define PG_FOREIGN_DATA_WRAPPER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_data_wrapper_d.h"
 
 /* ----------------
  *		pg_foreign_data_wrapper definition.  cpp turns this into
@@ -47,17 +48,4 @@ CATALOG(pg_foreign_data_wrapper,2328)
  */
 typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper;
 
-/* ----------------
- *		compiler constants for pg_fdw
- * ----------------
- */
-
-#define Natts_pg_foreign_data_wrapper				6
-#define Anum_pg_foreign_data_wrapper_fdwname		1
-#define Anum_pg_foreign_data_wrapper_fdwowner		2
-#define Anum_pg_foreign_data_wrapper_fdwhandler		3
-#define Anum_pg_foreign_data_wrapper_fdwvalidator	4
-#define Anum_pg_foreign_data_wrapper_fdwacl			5
-#define Anum_pg_foreign_data_wrapper_fdwoptions		6
-
 #endif							/* PG_FOREIGN_DATA_WRAPPER_H */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index f909b26..34fc827 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_SERVER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_server_d.h"
 
 /* ----------------
  *		pg_foreign_server definition.  cpp turns this into
@@ -47,18 +48,4 @@ CATALOG(pg_foreign_server,1417)
  */
 typedef FormData_pg_foreign_server *Form_pg_foreign_server;
 
-/* ----------------
- *		compiler constants for pg_foreign_server
- * ----------------
- */
-
-#define Natts_pg_foreign_server					7
-#define Anum_pg_foreign_server_srvname			1
-#define Anum_pg_foreign_server_srvowner			2
-#define Anum_pg_foreign_server_srvfdw			3
-#define Anum_pg_foreign_server_srvtype			4
-#define Anum_pg_foreign_server_srvversion		5
-#define Anum_pg_foreign_server_srvacl			6
-#define Anum_pg_foreign_server_srvoptions		7
-
 #endif							/* PG_FOREIGN_SERVER_H */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 9bee001..1a1fefc 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_table_d.h"
 
 /* ----------------
  *		pg_foreign_table definition.  cpp turns this into
@@ -43,14 +44,4 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_foreign_table *Form_pg_foreign_table;
 
-/* ----------------
- *		compiler constants for pg_foreign_table
- * ----------------
- */
-
-#define Natts_pg_foreign_table					3
-#define Anum_pg_foreign_table_ftrelid			1
-#define Anum_pg_foreign_table_ftserver			2
-#define Anum_pg_foreign_table_ftoptions			3
-
 #endif							/* PG_FOREIGN_TABLE_H */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index ef0dea6..f8371f0 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -19,6 +19,7 @@
 #define PG_INDEX_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_index_d.h"
 
 /* ----------------
  *		pg_index definition.  cpp turns this into
@@ -65,31 +66,6 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_index *Form_pg_index;
 
-/* ----------------
- *		compiler constants for pg_index
- * ----------------
- */
-#define Natts_pg_index					19
-#define Anum_pg_index_indexrelid		1
-#define Anum_pg_index_indrelid			2
-#define Anum_pg_index_indnatts			3
-#define Anum_pg_index_indisunique		4
-#define Anum_pg_index_indisprimary		5
-#define Anum_pg_index_indisexclusion	6
-#define Anum_pg_index_indimmediate		7
-#define Anum_pg_index_indisclustered	8
-#define Anum_pg_index_indisvalid		9
-#define Anum_pg_index_indcheckxmin		10
-#define Anum_pg_index_indisready		11
-#define Anum_pg_index_indislive			12
-#define Anum_pg_index_indisreplident	13
-#define Anum_pg_index_indkey			14
-#define Anum_pg_index_indcollation		15
-#define Anum_pg_index_indclass			16
-#define Anum_pg_index_indoption			17
-#define Anum_pg_index_indexprs			18
-#define Anum_pg_index_indpred			19
-
 /*
  * Index AMs that support ordered scans must support these two indoption
  * bits.  Otherwise, the content of the per-column indoption fields is
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3af1647..478a587 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -19,6 +19,7 @@
 #define PG_INHERITS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_inherits_d.h"
 
 /* ----------------
  *		pg_inherits definition.  cpp turns this into
@@ -41,13 +42,4 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_inherits *Form_pg_inherits;
 
-/* ----------------
- *		compiler constants for pg_inherits
- * ----------------
- */
-#define Natts_pg_inherits				3
-#define Anum_pg_inherits_inhrelid		1
-#define Anum_pg_inherits_inhparent		2
-#define Anum_pg_inherits_inhseqno		3
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index be26d2f..7dcb70c 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -36,6 +36,7 @@
 #define PG_INIT_PRIVS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_init_privs_d.h"
 
 /* ----------------
  *		pg_init_privs definition.  cpp turns this into
@@ -63,17 +64,6 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_init_privs * Form_pg_init_privs;
 
-/* ----------------
- *		compiler constants for pg_init_privs
- * ----------------
- */
-#define Natts_pg_init_privs				5
-#define Anum_pg_init_privs_objoid		1
-#define Anum_pg_init_privs_classoid		2
-#define Anum_pg_init_privs_objsubid		3
-#define Anum_pg_init_privs_privtype		4
-#define Anum_pg_init_privs_privs		5
-
 /*
  * It is important to know if the initial privileges are from initdb or from an
  * extension.  This enum is used to provide that differentiation and the two
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 5f82158..d2d878c 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -19,6 +19,7 @@
 #define PG_LANGUAGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_language_d.h"
 
 /* ----------------
  *		pg_language definition.  cpp turns this into
@@ -49,22 +50,4 @@ CATALOG(pg_language,2612)
  */
 typedef FormData_pg_language *Form_pg_language;
 
-/* ----------------
- *		compiler constants for pg_language
- * ----------------
- */
-#define Natts_pg_language				8
-#define Anum_pg_language_lanname		1
-#define Anum_pg_language_lanowner		2
-#define Anum_pg_language_lanispl		3
-#define Anum_pg_language_lanpltrusted	4
-#define Anum_pg_language_lanplcallfoid	5
-#define Anum_pg_language_laninline		6
-#define Anum_pg_language_lanvalidator	7
-#define Anum_pg_language_lanacl			8
-
-#define INTERNALlanguageId 12
-#define ClanguageId 13
-#define SQLlanguageId 14
-
 #endif							/* PG_LANGUAGE_H */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 1857ca4..2157bab 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -17,6 +17,7 @@
 #define PG_LARGEOBJECT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_d.h"
 
 /* ----------------
  *		pg_largeobject definition.  cpp turns this into
@@ -42,15 +43,6 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_largeobject *Form_pg_largeobject;
 
-/* ----------------
- *		compiler constants for pg_largeobject
- * ----------------
- */
-#define Natts_pg_largeobject			3
-#define Anum_pg_largeobject_loid		1
-#define Anum_pg_largeobject_pageno		2
-#define Anum_pg_largeobject_data		3
-
 extern Oid	LargeObjectCreate(Oid loid);
 extern void LargeObjectDrop(Oid loid);
 extern bool LargeObjectExists(Oid loid);
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 0cf7bcd..3d5e0cd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -19,6 +19,7 @@
 #define PG_LARGEOBJECT_METADATA_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_metadata_d.h"
 
 /* ----------------
  *		pg_largeobject_metadata definition. cpp turns this into
@@ -43,12 +44,4 @@ CATALOG(pg_largeobject_metadata,2995)
  */
 typedef FormData_pg_largeobject_metadata *Form_pg_largeobject_metadata;
 
-/* ----------------
- *		compiler constants for pg_largeobject_metadata
- * ----------------
- */
-#define Natts_pg_largeobject_metadata			2
-#define Anum_pg_largeobject_metadata_lomowner	1
-#define Anum_pg_largeobject_metadata_lomacl		2
-
 #endif							/* PG_LARGEOBJECT_METADATA_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 19b559f9..5f80e86 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -19,6 +19,7 @@
 #define PG_NAMESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_namespace_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_namespace definition.
@@ -49,20 +50,6 @@ CATALOG(pg_namespace,2615)
  */
 typedef FormData_pg_namespace *Form_pg_namespace;
 
-/* ----------------
- *		compiler constants for pg_namespace
- * ----------------
- */
-
-#define Natts_pg_namespace				3
-#define Anum_pg_namespace_nspname		1
-#define Anum_pg_namespace_nspowner		2
-#define Anum_pg_namespace_nspacl		3
-
-#define PG_CATALOG_NAMESPACE 11
-#define PG_TOAST_NAMESPACE 99
-#define PG_PUBLIC_NAMESPACE 2200
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index b10ceb9..1f64710 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -39,6 +39,7 @@
 #define PG_OPCLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opclass_d.h"
 
 /* ----------------
  *		pg_opclass definition.  cpp turns this into
@@ -66,29 +67,4 @@ CATALOG(pg_opclass,2616)
  */
 typedef FormData_pg_opclass *Form_pg_opclass;
 
-/* ----------------
- *		compiler constants for pg_opclass
- * ----------------
- */
-#define Natts_pg_opclass				8
-#define Anum_pg_opclass_opcmethod		1
-#define Anum_pg_opclass_opcname			2
-#define Anum_pg_opclass_opcnamespace	3
-#define Anum_pg_opclass_opcowner		4
-#define Anum_pg_opclass_opcfamily		5
-#define Anum_pg_opclass_opcintype		6
-#define Anum_pg_opclass_opcdefault		7
-#define Anum_pg_opclass_opckeytype		8
-
-#define DATE_BTREE_OPS_OID 3122
-#define FLOAT8_BTREE_OPS_OID 3123
-#define INT2_BTREE_OPS_OID 1979
-#define INT4_BTREE_OPS_OID 1978
-#define INT8_BTREE_OPS_OID 3124
-#define NUMERIC_BTREE_OPS_OID 3125
-#define OID_BTREE_OPS_OID 1981
-#define TEXT_BTREE_OPS_OID 3126
-#define TIMESTAMPTZ_BTREE_OPS_OID 3127
-#define TIMESTAMP_BTREE_OPS_OID 3128
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index cbe6884..a0b20f2 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -19,6 +19,7 @@
 #define PG_OPERATOR_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_operator_d.h"
 
 /* ----------------
  *		pg_operator definition.  cpp turns this into
@@ -52,75 +53,4 @@ CATALOG(pg_operator,2617)
  */
 typedef FormData_pg_operator *Form_pg_operator;
 
-/* ----------------
- *		compiler constants for pg_operator
- * ----------------
- */
-
-#define Natts_pg_operator				14
-#define Anum_pg_operator_oprname		1
-#define Anum_pg_operator_oprnamespace	2
-#define Anum_pg_operator_oprowner		3
-#define Anum_pg_operator_oprkind		4
-#define Anum_pg_operator_oprcanmerge	5
-#define Anum_pg_operator_oprcanhash		6
-#define Anum_pg_operator_oprleft		7
-#define Anum_pg_operator_oprright		8
-#define Anum_pg_operator_oprresult		9
-#define Anum_pg_operator_oprcom			10
-#define Anum_pg_operator_oprnegate		11
-#define Anum_pg_operator_oprcode		12
-#define Anum_pg_operator_oprrest		13
-#define Anum_pg_operator_oprjoin		14
-
-#define BooleanNotEqualOperator   85
-#define BooleanEqualOperator   91
-#define Int4EqualOperator	96
-#define Int4LessOperator	97
-#define TextEqualOperator	98
-#define TIDEqualOperator   387
-#define TIDLessOperator    2799
-#define Int8LessOperator	412
-#define OID_NAME_REGEXEQ_OP		639
-#define OID_TEXT_REGEXEQ_OP		641
-#define Float8LessOperator	672
-#define OID_BPCHAR_REGEXEQ_OP		1055
-#define ARRAY_EQ_OP 1070
-#define ARRAY_LT_OP 1072
-#define ARRAY_GT_OP 1073
-#define OID_NAME_LIKE_OP		1207
-#define OID_TEXT_LIKE_OP		1209
-#define OID_BPCHAR_LIKE_OP		1211
-#define OID_NAME_ICREGEXEQ_OP		1226
-#define OID_TEXT_ICREGEXEQ_OP		1228
-#define OID_BPCHAR_ICREGEXEQ_OP		1234
-#define OID_INET_SUB_OP			931
-#define OID_INET_SUBEQ_OP		932
-#define OID_INET_SUP_OP			933
-#define OID_INET_SUPEQ_OP		934
-#define OID_INET_OVERLAP_OP		3552
-#define OID_NAME_ICLIKE_OP		1625
-#define OID_TEXT_ICLIKE_OP		1627
-#define OID_BPCHAR_ICLIKE_OP	1629
-#define OID_BYTEA_LIKE_OP		2016
-#define OID_ARRAY_OVERLAP_OP	2750
-#define OID_ARRAY_CONTAINS_OP	2751
-#define OID_ARRAY_CONTAINED_OP	2752
-#define RECORD_EQ_OP 2988
-#define RECORD_LT_OP 2990
-#define RECORD_GT_OP 2991
-#define OID_RANGE_LESS_OP 3884
-#define OID_RANGE_LESS_EQUAL_OP 3885
-#define OID_RANGE_GREATER_EQUAL_OP 3886
-#define OID_RANGE_GREATER_OP 3887
-#define OID_RANGE_OVERLAP_OP 3888
-#define OID_RANGE_CONTAINS_ELEM_OP 3889
-#define OID_RANGE_CONTAINS_OP 3890
-#define OID_RANGE_ELEM_CONTAINED_OP 3891
-#define OID_RANGE_CONTAINED_OP 3892
-#define OID_RANGE_LEFT_OP 3893
-#define OID_RANGE_RIGHT_OP 3894
-#define OID_RANGE_OVERLAPS_LEFT_OP 3895
-#define OID_RANGE_OVERLAPS_RIGHT_OP 3896
-
 #endif							/* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index e9d8d3d..6ec28ae 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -19,6 +19,7 @@
 #define PG_OPFAMILY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opfamily_d.h"
 
 /* ----------------
  *		pg_opfamily definition. cpp turns this into
@@ -42,27 +43,4 @@ CATALOG(pg_opfamily,2753)
  */
 typedef FormData_pg_opfamily *Form_pg_opfamily;
 
-/* ----------------
- *		compiler constants for pg_opfamily
- * ----------------
- */
-#define Natts_pg_opfamily				4
-#define Anum_pg_opfamily_opfmethod		1
-#define Anum_pg_opfamily_opfname		2
-#define Anum_pg_opfamily_opfnamespace	3
-#define Anum_pg_opfamily_opfowner		4
-
-#define BOOL_BTREE_FAM_OID 424
-#define BPCHAR_BTREE_FAM_OID 426
-#define BYTEA_BTREE_FAM_OID 428
-#define NETWORK_BTREE_FAM_OID 1974
-#define INTEGER_BTREE_FAM_OID 1976
-#define NAME_BTREE_FAM_OID 1986
-#define OID_BTREE_FAM_OID 1989
-#define TEXT_BTREE_FAM_OID 1994
-#define TEXT_PATTERN_BTREE_FAM_OID 2095
-#define BPCHAR_PATTERN_BTREE_FAM_OID 2097
-#define BOOL_HASH_FAM_OID 2222
-#define TEXT_SPGIST_FAM_OID 4017
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index a8bda00..39ee67e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -18,6 +18,7 @@
 #define PG_PARTITIONED_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_partitioned_table_d.h"
 
 /* ----------------
  *		pg_partitioned_table definition.  cpp turns this into
@@ -59,18 +60,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
 
-/* ----------------
- *		compiler constants for pg_partitioned_table
- * ----------------
- */
-#define Natts_pg_partitioned_table				8
-#define Anum_pg_partitioned_table_partrelid		1
-#define Anum_pg_partitioned_table_partstrat		2
-#define Anum_pg_partitioned_table_partnatts		3
-#define Anum_pg_partitioned_table_partdefid		4
-#define Anum_pg_partitioned_table_partattrs		5
-#define Anum_pg_partitioned_table_partclass		6
-#define Anum_pg_partitioned_table_partcollation 7
-#define Anum_pg_partitioned_table_partexprs		8
-
 #endif							/* PG_PARTITIONED_TABLE_H */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index b1d9ece..116a4a0 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -19,6 +19,7 @@
 #define PG_PLTEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_pltemplate_d.h"
 
 /* ----------------
  *		pg_pltemplate definition.  cpp turns this into
@@ -50,18 +51,4 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 
-/* ----------------
- *		compiler constants for pg_pltemplate
- * ----------------
- */
-#define Natts_pg_pltemplate					8
-#define Anum_pg_pltemplate_tmplname			1
-#define Anum_pg_pltemplate_tmpltrusted		2
-#define Anum_pg_pltemplate_tmpldbacreate	3
-#define Anum_pg_pltemplate_tmplhandler		4
-#define Anum_pg_pltemplate_tmplinline		5
-#define Anum_pg_pltemplate_tmplvalidator	6
-#define Anum_pg_pltemplate_tmpllibrary		7
-#define Anum_pg_pltemplate_tmplacl			8
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 0d94f1a..543077c 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -1,15 +1,19 @@
-/*
+/*-------------------------------------------------------------------------
+ *
  * pg_policy.h
  *	 definition of the system "policy" relation (pg_policy)
  *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
+ *-------------------------------------------------------------------------
  */
 #ifndef PG_POLICY_H
 #define PG_POLICY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_policy_d.h"
 
 /* ----------------
  *		pg_policy definition. cpp turns this into
@@ -39,17 +43,4 @@ CATALOG(pg_policy,3256)
  */
 typedef FormData_pg_policy *Form_pg_policy;
 
-/* ----------------
- *		compiler constants for pg_policy
- * ----------------
- */
-#define Natts_pg_policy					7
-#define Anum_pg_policy_polname			1
-#define Anum_pg_policy_polrelid			2
-#define Anum_pg_policy_polcmd			3
-#define Anum_pg_policy_polpermissive	4
-#define Anum_pg_policy_polroles			5
-#define Anum_pg_policy_polqual			6
-#define Anum_pg_policy_polwithcheck		7
-
 #endif							/* PG_POLICY_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 80914dc..dd54224 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -18,6 +18,7 @@
 #define PG_PROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_proc_d.h"
 
 /* ----------------
  *		pg_proc definition.  cpp turns this into
@@ -76,40 +77,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_proc *Form_pg_proc;
 
-/* ----------------
- *		compiler constants for pg_proc
- * ----------------
- */
-#define Natts_pg_proc					29
-#define Anum_pg_proc_proname			1
-#define Anum_pg_proc_pronamespace		2
-#define Anum_pg_proc_proowner			3
-#define Anum_pg_proc_prolang			4
-#define Anum_pg_proc_procost			5
-#define Anum_pg_proc_prorows			6
-#define Anum_pg_proc_provariadic		7
-#define Anum_pg_proc_protransform		8
-#define Anum_pg_proc_proisagg			9
-#define Anum_pg_proc_proiswindow		10
-#define Anum_pg_proc_prosecdef			11
-#define Anum_pg_proc_proleakproof		12
-#define Anum_pg_proc_proisstrict		13
-#define Anum_pg_proc_proretset			14
-#define Anum_pg_proc_provolatile		15
-#define Anum_pg_proc_proparallel		16
-#define Anum_pg_proc_pronargs			17
-#define Anum_pg_proc_pronargdefaults	18
-#define Anum_pg_proc_prorettype			19
-#define Anum_pg_proc_proargtypes		20
-#define Anum_pg_proc_proallargtypes		21
-#define Anum_pg_proc_proargmodes		22
-#define Anum_pg_proc_proargnames		23
-#define Anum_pg_proc_proargdefaults		24
-#define Anum_pg_proc_protrftypes		25
-#define Anum_pg_proc_prosrc				26
-#define Anum_pg_proc_probin				27
-#define Anum_pg_proc_proconfig			28
-#define Anum_pg_proc_proacl				29
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for provolatile column: these indicate whether the result
@@ -143,4 +111,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define PROARGMODE_VARIADIC 'v'
 #define PROARGMODE_TABLE	't'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_PROC_H */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 7016197..94e9079 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -18,12 +18,12 @@
 #define PG_PUBLICATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_d.h"
 #include "catalog/objectaddress.h"
 
 /* ----------------
  *		pg_publication definition.  cpp turns this into
  *		typedef struct FormData_pg_publication
- *
  * ----------------
  */
 #define PublicationRelationId			6104
@@ -58,19 +58,6 @@ CATALOG(pg_publication,6104)
  */
 typedef FormData_pg_publication *Form_pg_publication;
 
-/* ----------------
- *		compiler constants for pg_publication
- * ----------------
- */
-
-#define Natts_pg_publication				6
-#define Anum_pg_publication_pubname			1
-#define Anum_pg_publication_pubowner		2
-#define Anum_pg_publication_puballtables	3
-#define Anum_pg_publication_pubinsert		4
-#define Anum_pg_publication_pubupdate		5
-#define Anum_pg_publication_pubdelete		6
-
 typedef struct PublicationActions
 {
 	bool		pubinsert;
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 661466f..864d6ca 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -18,11 +18,11 @@
 #define PG_PUBLICATION_REL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_rel_d.h"
 
 /* ----------------
  *		pg_publication_rel definition.  cpp turns this into
  *		typedef struct FormData_pg_publication_rel
- *
  * ----------------
  */
 #define PublicationRelRelationId				6106
@@ -40,13 +40,4 @@ CATALOG(pg_publication_rel,6106)
  */
 typedef FormData_pg_publication_rel *Form_pg_publication_rel;
 
-/* ----------------
- *		compiler constants for pg_publication_rel
- * ----------------
- */
-
-#define Natts_pg_publication_rel				2
-#define Anum_pg_publication_rel_prpubid			1
-#define Anum_pg_publication_rel_prrelid			2
-
 #endif							/* PG_PUBLICATION_REL_H */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index b7113bf..4c806fd 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -19,6 +19,7 @@
 #define PG_RANGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_range_d.h"
 
 /* ----------------
  *		pg_range definition.  cpp turns this into
@@ -44,18 +45,6 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_range *Form_pg_range;
 
-/* ----------------
- *		compiler constants for pg_range
- * ----------------
- */
-#define Natts_pg_range					6
-#define Anum_pg_range_rngtypid			1
-#define Anum_pg_range_rngsubtype		2
-#define Anum_pg_range_rngcollation		3
-#define Anum_pg_range_rngsubopc			4
-#define Anum_pg_range_rngcanonical		5
-#define Anum_pg_range_rngsubdiff		6
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0c5a05e..02856dd 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -18,6 +18,7 @@
 #define PG_REPLICATION_ORIGIN_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_replication_origin_d.h"
 #include "access/xlogdefs.h"
 
 /* ----------------
@@ -54,12 +55,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
-/* ----------------
- *		compiler constants for pg_replication_origin
- * ----------------
- */
-#define Natts_pg_replication_origin					2
-#define Anum_pg_replication_origin_roident			1
-#define Anum_pg_replication_origin_roname			2
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index a310ecb..d656990 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -22,6 +22,7 @@
 #define PG_REWRITE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_rewrite_d.h"
 
 /* ----------------
  *		pg_rewrite definition.  cpp turns this into
@@ -51,17 +52,4 @@ CATALOG(pg_rewrite,2618)
  */
 typedef FormData_pg_rewrite *Form_pg_rewrite;
 
-/* ----------------
- *		compiler constants for pg_rewrite
- * ----------------
- */
-#define Natts_pg_rewrite				7
-#define Anum_pg_rewrite_rulename		1
-#define Anum_pg_rewrite_ev_class		2
-#define Anum_pg_rewrite_ev_type			3
-#define Anum_pg_rewrite_ev_enabled		4
-#define Anum_pg_rewrite_is_instead		5
-#define Anum_pg_rewrite_ev_qual			6
-#define Anum_pg_rewrite_ev_action		7
-
 #endif							/* PG_REWRITE_H */
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 70dc01e..d6d2f97 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -12,6 +12,7 @@
 #define PG_SECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_seclabel_d.h"
 
 /* ----------------
  *		pg_seclabel definition.  cpp turns this into
@@ -32,15 +33,4 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
-/* ----------------
- *		compiler constants for pg_seclabel
- * ----------------
- */
-#define Natts_pg_seclabel			5
-#define Anum_pg_seclabel_objoid		1
-#define Anum_pg_seclabel_classoid	2
-#define Anum_pg_seclabel_objsubid	3
-#define Anum_pg_seclabel_provider	4
-#define Anum_pg_seclabel_label		5
-
 #endif							/* PG_SECLABEL_H */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index a78417e..de6ed1a 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -12,6 +12,7 @@
 #define PG_SEQUENCE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_sequence_d.h"
 
 #define SequenceRelationId	2224
 
@@ -27,16 +28,11 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+/* ----------------
+ *		Form_pg_sequence corresponds to a pointer to a tuple with
+ *		the format of pg_sequence relation.
+ * ----------------
+ */
 typedef FormData_pg_sequence *Form_pg_sequence;
 
-#define Natts_pg_sequence				8
-#define Anum_pg_sequence_seqrelid		1
-#define Anum_pg_sequence_seqtypid		2
-#define Anum_pg_sequence_seqstart		3
-#define Anum_pg_sequence_seqincrement	4
-#define Anum_pg_sequence_seqmax			5
-#define Anum_pg_sequence_seqmin			6
-#define Anum_pg_sequence_seqcache		7
-#define Anum_pg_sequence_seqcycle		8
-
 #endif							/* PG_SEQUENCE_H */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 17ac34a..708980b 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -28,6 +28,7 @@
 #define PG_SHDEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdepend_d.h"
 
 /* ----------------
  *		pg_shdepend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdepend *Form_pg_shdepend;
 
-/* ----------------
- *		compiler constants for pg_shdepend
- * ----------------
- */
-#define Natts_pg_shdepend			7
-#define Anum_pg_shdepend_dbid		1
-#define Anum_pg_shdepend_classid	2
-#define Anum_pg_shdepend_objid		3
-#define Anum_pg_shdepend_objsubid	4
-#define Anum_pg_shdepend_refclassid 5
-#define Anum_pg_shdepend_refobjid	6
-#define Anum_pg_shdepend_deptype	7
-
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index c0ecc0c..1777144 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -31,6 +31,7 @@
 #define PG_SHDESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdescription_d.h"
 
 /* ----------------
  *		pg_shdescription definition.    cpp turns this into
@@ -56,13 +57,4 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdescription * Form_pg_shdescription;
 
-/* ----------------
- *		compiler constants for pg_shdescription
- * ----------------
- */
-#define Natts_pg_shdescription			3
-#define Anum_pg_shdescription_objoid		1
-#define Anum_pg_shdescription_classoid	2
-#define Anum_pg_shdescription_description 3
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 57b854c..9fceeee 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  *
  * pg_shseclabel.h
- *	  definition of the system "security label" relation (pg_shseclabel)
+ *	  definition of the system "shared security label" relation (pg_shseclabel)
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -12,6 +12,7 @@
 #define PG_SHSECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shseclabel_d.h"
 
 /* ----------------
  *		pg_shseclabel definition. cpp turns this into
@@ -34,14 +35,4 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
-/* ----------------
- *		compiler constants for pg_shseclabel
- * ----------------
- */
-#define Natts_pg_shseclabel				4
-#define Anum_pg_shseclabel_objoid		1
-#define Anum_pg_shseclabel_classoid		2
-#define Anum_pg_shseclabel_provider		3
-#define Anum_pg_shseclabel_label		4
-
 #endif							/* PG_SHSECLABEL_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 8ef2e55..81984d4 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_d.h"
 
 /* ----------------
  *		pg_statistic definition.  cpp turns this into
@@ -127,38 +128,6 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_statistic *Form_pg_statistic;
 
-/* ----------------
- *		compiler constants for pg_statistic
- * ----------------
- */
-#define Natts_pg_statistic				26
-#define Anum_pg_statistic_starelid		1
-#define Anum_pg_statistic_staattnum		2
-#define Anum_pg_statistic_stainherit	3
-#define Anum_pg_statistic_stanullfrac	4
-#define Anum_pg_statistic_stawidth		5
-#define Anum_pg_statistic_stadistinct	6
-#define Anum_pg_statistic_stakind1		7
-#define Anum_pg_statistic_stakind2		8
-#define Anum_pg_statistic_stakind3		9
-#define Anum_pg_statistic_stakind4		10
-#define Anum_pg_statistic_stakind5		11
-#define Anum_pg_statistic_staop1		12
-#define Anum_pg_statistic_staop2		13
-#define Anum_pg_statistic_staop3		14
-#define Anum_pg_statistic_staop4		15
-#define Anum_pg_statistic_staop5		16
-#define Anum_pg_statistic_stanumbers1	17
-#define Anum_pg_statistic_stanumbers2	18
-#define Anum_pg_statistic_stanumbers3	19
-#define Anum_pg_statistic_stanumbers4	20
-#define Anum_pg_statistic_stanumbers5	21
-#define Anum_pg_statistic_stavalues1	22
-#define Anum_pg_statistic_stavalues2	23
-#define Anum_pg_statistic_stavalues3	24
-#define Anum_pg_statistic_stavalues4	25
-#define Anum_pg_statistic_stavalues5	26
-
 /*
  * Several statistical slot "kinds" are defined by core PostgreSQL, as
  * documented below.  Also, custom data types can define their own "kind"
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index d656cd8..be84037 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_EXT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_ext_d.h"
 
 /* ----------------
  *		pg_statistic_ext definition.  cpp turns this into
@@ -59,20 +60,6 @@ CATALOG(pg_statistic_ext,3381)
  */
 typedef FormData_pg_statistic_ext *Form_pg_statistic_ext;
 
-/* ----------------
- *		compiler constants for pg_statistic_ext
- * ----------------
- */
-#define Natts_pg_statistic_ext					8
-#define Anum_pg_statistic_ext_stxrelid			1
-#define Anum_pg_statistic_ext_stxname			2
-#define Anum_pg_statistic_ext_stxnamespace		3
-#define Anum_pg_statistic_ext_stxowner			4
-#define Anum_pg_statistic_ext_stxkeys			5
-#define Anum_pg_statistic_ext_stxkind			6
-#define Anum_pg_statistic_ext_stxndistinct		7
-#define Anum_pg_statistic_ext_stxdependencies	8
-
 #define STATS_EXT_NDISTINCT			'd'
 #define STATS_EXT_DEPENDENCIES		'f'
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 46d0b48..1b2981f 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -12,6 +12,7 @@
 #define PG_SUBSCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -57,21 +58,6 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 
 typedef FormData_pg_subscription *Form_pg_subscription;
 
-/* ----------------
- *		compiler constants for pg_subscription
- * ----------------
- */
-#define Natts_pg_subscription					8
-#define Anum_pg_subscription_subdbid			1
-#define Anum_pg_subscription_subname			2
-#define Anum_pg_subscription_subowner			3
-#define Anum_pg_subscription_subenabled			4
-#define Anum_pg_subscription_subconninfo		5
-#define Anum_pg_subscription_subslotname		6
-#define Anum_pg_subscription_subsynccommit		7
-#define Anum_pg_subscription_subpublications	8
-
-
 typedef struct Subscription
 {
 	Oid			oid;			/* Oid of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index d936973..64aa121 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -14,6 +14,7 @@
 
 #include "access/xlogdefs.h"
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_rel_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -34,15 +35,7 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
-/* ----------------
- *		compiler constants for pg_subscription_rel
- * ----------------
- */
-#define Natts_pg_subscription_rel				4
-#define Anum_pg_subscription_rel_srsubid		1
-#define Anum_pg_subscription_rel_srrelid		2
-#define Anum_pg_subscription_rel_srsubstate		3
-#define Anum_pg_subscription_rel_srsublsn		4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		substate constants
@@ -60,6 +53,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 #define SUBREL_STATE_SYNCWAIT	'w' /* waiting for sync */
 #define SUBREL_STATE_CATCHUP	'c' /* catching up with apply */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 typedef struct SubscriptionRelState
 {
 	Oid			relid;
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 75a3a2e..bd9c118 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -19,6 +19,7 @@
 #define PG_TABLESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_tablespace_d.h"
 
 /* ----------------
  *		pg_tablespace definition.  cpp turns this into
@@ -45,18 +46,4 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
  */
 typedef FormData_pg_tablespace *Form_pg_tablespace;
 
-/* ----------------
- *		compiler constants for pg_tablespace
- * ----------------
- */
-
-#define Natts_pg_tablespace				4
-#define Anum_pg_tablespace_spcname		1
-#define Anum_pg_tablespace_spcowner		2
-#define Anum_pg_tablespace_spcacl		3
-#define Anum_pg_tablespace_spcoptions	4
-
-#define DEFAULTTABLESPACE_OID 1663
-#define GLOBALTABLESPACE_OID 1664
-
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 21109db..c571fb5 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -1,8 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * pg_transform.h
+ *	  definition of the system "transform" relation (pg_transform)
  *
- * Copyright (c) 2012-2018, PostgreSQL Global Development Group
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_transform.h
  *
@@ -16,6 +19,7 @@
 #define PG_TRANSFORM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_transform_d.h"
 
 /* ----------------
  *		pg_transform definition.  cpp turns this into
@@ -32,16 +36,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
-typedef FormData_pg_transform *Form_pg_transform;
-
 /* ----------------
- *		compiler constants for pg_transform
+ *		Form_pg_transform corresponds to a pointer to a tuple with
+ *		the format of pg_transform relation.
  * ----------------
  */
-#define Natts_pg_transform			4
-#define Anum_pg_transform_trftype	1
-#define Anum_pg_transform_trflang	2
-#define Anum_pg_transform_trffromsql	3
-#define Anum_pg_transform_trftosql	4
+typedef FormData_pg_transform *Form_pg_transform;
 
 #endif							/* PG_TRANSFORM_H */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index e307039..2a5d05e 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -19,6 +19,7 @@
 #define PG_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_trigger_d.h"
 
 /* ----------------
  *		pg_trigger definition.  cpp turns this into
@@ -70,29 +71,6 @@ CATALOG(pg_trigger,2620)
  */
 typedef FormData_pg_trigger *Form_pg_trigger;
 
-/* ----------------
- *		compiler constants for pg_trigger
- * ----------------
- */
-#define Natts_pg_trigger				17
-#define Anum_pg_trigger_tgrelid			1
-#define Anum_pg_trigger_tgname			2
-#define Anum_pg_trigger_tgfoid			3
-#define Anum_pg_trigger_tgtype			4
-#define Anum_pg_trigger_tgenabled		5
-#define Anum_pg_trigger_tgisinternal	6
-#define Anum_pg_trigger_tgconstrrelid	7
-#define Anum_pg_trigger_tgconstrindid	8
-#define Anum_pg_trigger_tgconstraint	9
-#define Anum_pg_trigger_tgdeferrable	10
-#define Anum_pg_trigger_tginitdeferred	11
-#define Anum_pg_trigger_tgnargs			12
-#define Anum_pg_trigger_tgattr			13
-#define Anum_pg_trigger_tgargs			14
-#define Anum_pg_trigger_tgqual			15
-#define Anum_pg_trigger_tgoldtable		16
-#define Anum_pg_trigger_tgnewtable		17
-
 /* Bits within tgtype */
 #define TRIGGER_TYPE_ROW				(1 << 0)
 #define TRIGGER_TYPE_BEFORE				(1 << 1)
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 21e6c2c..d0b7aa9 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_d.h"
 
 /* ----------------
  *		pg_ts_config definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config,3602)
 
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
-/* ----------------
- *		compiler constants for pg_ts_config
- * ----------------
- */
-#define Natts_pg_ts_config				4
-#define Anum_pg_ts_config_cfgname		1
-#define Anum_pg_ts_config_cfgnamespace	2
-#define Anum_pg_ts_config_cfgowner		3
-#define Anum_pg_ts_config_cfgparser		4
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 3b5e791..cdee4b4 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_MAP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_map_d.h"
 
 /* ----------------
  *		pg_ts_config_map definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
-/* ----------------
- *		compiler constants for pg_ts_config_map
- * ----------------
- */
-#define Natts_pg_ts_config_map				4
-#define Anum_pg_ts_config_map_mapcfg		1
-#define Anum_pg_ts_config_map_maptokentype	2
-#define Anum_pg_ts_config_map_mapseqno		3
-#define Anum_pg_ts_config_map_mapdict		4
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 74c80f0..58af179 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -19,6 +19,7 @@
 #define PG_TS_DICT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_dict_d.h"
 
 /* ----------------
  *		pg_ts_dict definition.  cpp turns this into
@@ -41,15 +42,4 @@ CATALOG(pg_ts_dict,3600)
 
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
-/* ----------------
- *		compiler constants for pg_ts_dict
- * ----------------
- */
-#define Natts_pg_ts_dict				5
-#define Anum_pg_ts_dict_dictname		1
-#define Anum_pg_ts_dict_dictnamespace	2
-#define Anum_pg_ts_dict_dictowner		3
-#define Anum_pg_ts_dict_dicttemplate	4
-#define Anum_pg_ts_dict_dictinitoption	5
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5b5edd0..3baaef0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -19,6 +19,7 @@
 #define PG_TS_PARSER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_parser_d.h"
 
 /* ----------------
  *		pg_ts_parser definition.  cpp turns this into
@@ -40,17 +41,4 @@ CATALOG(pg_ts_parser,3601)
 
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
-/* ----------------
- *		compiler constants for pg_ts_parser
- * ----------------
- */
-#define Natts_pg_ts_parser					7
-#define Anum_pg_ts_parser_prsname			1
-#define Anum_pg_ts_parser_prsnamespace		2
-#define Anum_pg_ts_parser_prsstart			3
-#define Anum_pg_ts_parser_prstoken			4
-#define Anum_pg_ts_parser_prsend			5
-#define Anum_pg_ts_parser_prsheadline		6
-#define Anum_pg_ts_parser_prslextype		7
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index b641788..7ea6e15 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -19,6 +19,7 @@
 #define PG_TS_TEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_template_d.h"
 
 /* ----------------
  *		pg_ts_template definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_template,3764)
 
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
-/* ----------------
- *		compiler constants for pg_ts_template
- * ----------------
- */
-#define Natts_pg_ts_template				4
-#define Anum_pg_ts_template_tmplname		1
-#define Anum_pg_ts_template_tmplnamespace	2
-#define Anum_pg_ts_template_tmplinit		3
-#define Anum_pg_ts_template_tmpllexize		4
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 6aa9185..f7ddb0c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -19,6 +19,7 @@
 #define PG_TYPE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_type_d.h"
 
 /* ----------------
  *		pg_type definition.  cpp turns this into
@@ -231,135 +232,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_type *Form_pg_type;
 
-/* ----------------
- *		compiler constants for pg_type
- * ----------------
- */
-#define Natts_pg_type					30
-#define Anum_pg_type_typname			1
-#define Anum_pg_type_typnamespace		2
-#define Anum_pg_type_typowner			3
-#define Anum_pg_type_typlen				4
-#define Anum_pg_type_typbyval			5
-#define Anum_pg_type_typtype			6
-#define Anum_pg_type_typcategory		7
-#define Anum_pg_type_typispreferred		8
-#define Anum_pg_type_typisdefined		9
-#define Anum_pg_type_typdelim			10
-#define Anum_pg_type_typrelid			11
-#define Anum_pg_type_typelem			12
-#define Anum_pg_type_typarray			13
-#define Anum_pg_type_typinput			14
-#define Anum_pg_type_typoutput			15
-#define Anum_pg_type_typreceive			16
-#define Anum_pg_type_typsend			17
-#define Anum_pg_type_typmodin			18
-#define Anum_pg_type_typmodout			19
-#define Anum_pg_type_typanalyze			20
-#define Anum_pg_type_typalign			21
-#define Anum_pg_type_typstorage			22
-#define Anum_pg_type_typnotnull			23
-#define Anum_pg_type_typbasetype		24
-#define Anum_pg_type_typtypmod			25
-#define Anum_pg_type_typndims			26
-#define Anum_pg_type_typcollation		27
-#define Anum_pg_type_typdefaultbin		28
-#define Anum_pg_type_typdefault			29
-#define Anum_pg_type_typacl				30
-
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define JSONOID 114
-#define XMLOID 142
-#define PGNODETREEOID	194
-#define PGNDISTINCTOID	3361
-#define PGDEPENDENCIESOID	3402
-#define PGDDLCOMMANDOID 32
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define MACADDROID 829
-#define INETOID 869
-#define CIDROID 650
-#define MACADDR8OID 774
-#define INT2ARRAYOID		1005
-#define INT4ARRAYOID		1007
-#define TEXTARRAYOID		1009
-#define OIDARRAYOID			1028
-#define FLOAT4ARRAYOID 1021
-#define ACLITEMOID		1033
-#define CSTRINGARRAYOID		1263
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
-#define RECORDOID		2249
-#define RECORDARRAYOID	2287
-#define CSTRINGOID		2275
-#define ANYOID			2276
-#define ANYARRAYOID		2277
-#define VOIDOID			2278
-#define TRIGGEROID		2279
-#define EVTTRIGGEROID		3838
-#define LANGUAGE_HANDLEROID		2280
-#define INTERNALOID		2281
-#define OPAQUEOID		2282
-#define ANYELEMENTOID	2283
-#define ANYNONARRAYOID	2776
-#define ANYENUMOID		3500
-#define FDW_HANDLEROID	3115
-#define INDEX_AM_HANDLEROID 325
-#define TSM_HANDLEROID	3310
-#define ANYRANGEOID		3831
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * macros
@@ -396,4 +269,6 @@ typedef FormData_pg_type *Form_pg_type;
 	 (typid) == ANYENUMOID || \
 	 (typid) == ANYRANGEOID)
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_TYPE_H */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 3da6496..ec62ee2 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -18,6 +18,7 @@
 #define PG_USER_MAPPING_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_user_mapping_d.h"
 
 /* ----------------
  *		pg_user_mapping definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_user_mapping,1418)
  */
 typedef FormData_pg_user_mapping *Form_pg_user_mapping;
 
-/* ----------------
- *		compiler constants for pg_user_mapping
- * ----------------
- */
-
-#define Natts_pg_user_mapping				3
-#define Anum_pg_user_mapping_umuser			1
-#define Anum_pg_user_mapping_umserver		2
-#define Anum_pg_user_mapping_umoptions		3
-
 #endif							/* PG_USER_MAPPING_H */
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 7d6d7d0..0404385 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -255,7 +255,7 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), TIMETZOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
-		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), ZPBITOID, ECPG_ARRAY_NONE, stmt->lineno))
+		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), BITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), VARBITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index 5d9eeca..79a6cf8 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -1,9 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_type.h
- *	  Hard-wired knowledge about some standard type OIDs.
- *
- * XXX keep this in sync with src/include/catalog/pg_type.h
+ *	  Interface to generated type OID symbols.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -15,65 +13,6 @@
 #ifndef PG_TYPE_H
 #define PG_TYPE_H
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define INETOID 869
-#define CIDROID 650
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define ZPBITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
+#include "catalog/pg_type_d.h"
 
 #endif							/* PG_TYPE_H */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index fe66de9..1bb3513 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -455,12 +455,18 @@ EOF
 
 	my $mf = Project::read_file('src/backend/catalog/Makefile');
 	$mf =~ s{\\\r?\n}{}g;
-	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
-	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @bki_srcs = split /\s+/, $1;
 	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
 	my @bki_data = split /\s+/, $1;
+
+	my $mfh = Project::read_file('src/backend/catalog/Makefile.headers');
+	$mfh =~ s{\\\r?\n}{}g;
+	$mfh =~ /^CATALOG_HEADERS\s*:?=(.*)$/gm
+	  || croak "Could not find CATALOG_HEADERS in Makefile.headers\n";
+	my @bki_srcs = split /\s+/, $1;
+	push @bki_srcs, 'toasting.h';
+	push @bki_srcs, 'indexing.h';
+
 	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
@@ -468,13 +474,23 @@ EOF
 				'src/backend/catalog/postgres.bki',
 				"src/include/catalog/$bki"))
 		{
-			print "Generating postgres.bki and schemapg.h...\n";
+			print "Generating postgres.bki and generated headers...\n";
 			chdir('src/backend/catalog');
 			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
-			system(
-"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
-			);
+			system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
 			chdir('../../..');
+
+			# Copy generated headers to include directory.
+			opendir(my $dh, 'src/backend/catalog/')
+			  || die "Can't opendir src/backend/catalog/ $!";
+			my @def_headers = grep { /pg_\w+_d\.h$/  } readdir($dh);
+			closedir $dh;
+			foreach my $def_header (@def_headers)
+			{
+				copyFile(
+				"src/backend/catalog/$def_header",
+				"src/include/catalog/$def_header");
+			}
 			copyFile(
 				'src/backend/catalog/schemapg.h',
 				'src/include/catalog/schemapg.h');
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 0a88b52..b052496 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -48,6 +48,7 @@ if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h
 if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
 if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h
+if exist src\include\catalog\pg_*_d.h del /q src\include\catalog\pg_*_d.h
 if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
 
 if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h
@@ -67,6 +68,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalo
 if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
 if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
 if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
+if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
 if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
 if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index a32aaa6..79243a1 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -198,8 +198,8 @@ sub pre_indent
 s!(^#ifdef[ \t]+__cplusplus.*\nextern[ \t]+"C"[ \t]*\n)\{[ \t]*$!$1$extern_c_start!gm;
 	$source =~ s!(^#ifdef[ \t]+__cplusplus.*\n)\}[ \t]*$!$1$extern_c_stop!gm;
 
-	# Protect backslashes in DATA() and wrapping in CATALOG()
-	$source =~ s!^((DATA|CATALOG)\(.*)$!/*$1*/!gm;
+	# Protect wrapping in CATALOG()
+	$source =~ s!^(CATALOG\(.*)$!/*$1*/!gm;
 
 	return $source;
 }
@@ -210,8 +210,8 @@ sub post_indent
 	my $source          = shift;
 	my $source_filename = shift;
 
-	# Restore DATA/CATALOG lines
-	$source =~ s!^/\*((DATA|CATALOG)\(.*)\*/$!$1!gm;
+	# Restore CATALOG lines
+	$source =~ s!^/\*(CATALOG\(.*)\*/$!$1!gm;
 
 	# Put back braces for extern "C"
 	$source =~ s!^/\* Open extern "C" \*/$!{!gm;
-- 
2.7.4

#37Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#36)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

Version 8, rebased against 76b6aa41f41d.

I took a preliminary look through this, without yet attempting to execute
the script against HEAD. I have a few thoughts:

* I'm inclined not to commit the conversion scripts to the repo. I doubt
there are third parties out there with a need for them, and if they do
need them they can get 'em out of this thread in the mailing list
archives. (If anyone has a different opinion about that, speak up!)

* I notice you have a few "preliminary cleanup" changes here and there
in the series, such as fixing the inconsistent spelling of
Anum_pg_init_privs_initprivs. These could be applied before we start
the main conversion process, and I'm inclined to do that since we could
get 'em out of the way early. Ideally, the main conversion would only
touch the header files and related scripts/makefiles.

* I'm a little disturbed by the fact that 0002 has to "re-doublequote
values that are macros expanded by initdb.c". I see that there are only
a small number of affected places, so maybe it's not really worth working
harder, but I worry that something might get missed. Is there any way to
include this consideration in the automated conversion, or at least to
verify that we found all the places to quote? Or, seeing that 0004 seems
to be introducing some quoting-related hacks to genbki.pl anyway, maybe
we could take care of the issue there?

* In 0003, I'd recommend leaving the re-indentation to happen in the next
perltidy run (assuming perltidy would fix that, which I think is true but
I might be wrong). It's just creating more review work to do it here.
In any case, the patch summary line is pretty misleading since it's
*not* just reindenting, but also refactoring genbki.pl. (BTW, if that
refactoring would work on the script as it is, maybe that's another
thing we could do early? The more we can do before "flag day", the
better IMO.)

* In 0006, I'm not very pleased with the introduction of
"Makefile.headers". I'd keep those macros where they are in
catalog/Makefile. backend/Makefile doesn't need to know about that,
especially since it's doing an unconditional invocation of
catalog/Makefile anyway. It could just do something like

submake-schemapg:
$(MAKE) -C catalog generated-headers

and leave it to catalog/Makefile to know what needs to happen for
both schemapg.h and the other generated files.

Overall, though, this is looking pretty promising.

regards, tom lane

#38John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#37)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

Thanks for taking a look.

On 3/3/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

John Naylor <jcnaylor@gmail.com> writes:

Version 8, rebased against 76b6aa41f41d.

I took a preliminary look through this, without yet attempting to execute
the script against HEAD. I have a few thoughts:

* I'm inclined not to commit the conversion scripts to the repo. I doubt
there are third parties out there with a need for them, and if they do
need them they can get 'em out of this thread in the mailing list
archives. (If anyone has a different opinion about that, speak up!)

If no one feels strongly otherwise, I'll just attach the conversion
script along with the other patches for next version. To be clear, the
rewrite script is intended be committed, both to enforce formatting
and as a springboard for bulk editing. Now, whether that belongs in
/src/include/catalog or /src/tools is debatable.

* I'm a little disturbed by the fact that 0002 has to "re-doublequote
values that are macros expanded by initdb.c". I see that there are only
a small number of affected places, so maybe it's not really worth working
harder, but I worry that something might get missed. Is there any way to
include this consideration in the automated conversion, or at least to
verify that we found all the places to quote? Or, seeing that 0004 seems
to be introducing some quoting-related hacks to genbki.pl anyway, maybe
we could take care of the issue there?

The quoting hacks are really to keep the postgres.bki diff as small as
possible (attached). The simplest and most air-tight way to address
your concern would be to double-quote everything when writing the bki
file. That could be done last as a follow-up.

* I notice you have a few "preliminary cleanup" changes here and there
in the series, such as fixing the inconsistent spelling of
Anum_pg_init_privs_initprivs. These could be applied before we start
the main conversion process, and I'm inclined to do that since we could
get 'em out of the way early. Ideally, the main conversion would only
touch the header files and related scripts/makefiles.

...

* In 0003, I'd recommend leaving the re-indentation to happen in the next
perltidy run (assuming perltidy would fix that, which I think is true but
I might be wrong). It's just creating more review work to do it here.
In any case, the patch summary line is pretty misleading since it's
*not* just reindenting, but also refactoring genbki.pl. (BTW, if that
refactoring would work on the script as it is, maybe that's another
thing we could do early? The more we can do before "flag day", the
better IMO.)

I tested perltidy 20090616 and it handles it fine. I'll submit a
preliminary patch soon to get some of those items out of the way.

* In 0006, I'm not very pleased with the introduction of
"Makefile.headers". I'd keep those macros where they are in
catalog/Makefile. backend/Makefile doesn't need to know about that,
especially since it's doing an unconditional invocation of
catalog/Makefile anyway. It could just do something like

submake-schemapg:
$(MAKE) -C catalog generated-headers

and leave it to catalog/Makefile to know what needs to happen for
both schemapg.h and the other generated files.

I wasn't happy with it either, but I couldn't get it to build
otherwise. The sticking point was the symlinks in
$(builddir)/src/include/catalog. $(MAKE) -C catalog doesn't handle
that. The makefile in /src/common relies on the backend makefile to
know what to invoke for a given header. IIRC, relpath.c includes
pg_tablespace.h, which now requires pg_tablespace_d.h to be built.

Perhaps /src/common/Makefile could invoke the catalog makefile
directly, and the pg_*_d.h headers could be written to
$(builddir)/src/include/catalog directly? I'll hack on it some more.

Overall, though, this is looking pretty promising.

regards, tom lane

Glad to hear it.

-John Naylor

Attachments:

postgres.bki.difftext/plain; charset=US-ASCII; name=postgres.bki.diffDownload
--- postgres.bki.orig	2018-02-25 15:58:50.082261557 +0700
+++ postgres.bki.noquotes	2018-02-25 16:12:39.967498748 +0700
@@ -5651,9 +5651,9 @@
  lanacl = aclitem[]
  )
 open pg_language
-insert OID = 12 ( "internal" 10 f f 0 0 2246 _null_ )
-insert OID = 13 ( "c" 10 f f 0 0 2247 _null_ )
-insert OID = 14 ( "sql" 10 f t 0 0 2248 _null_ )
+insert OID = 12 ( internal 10 f f 0 0 2246 _null_ )
+insert OID = 13 ( c 10 f f 0 0 2247 _null_ )
+insert OID = 14 ( sql 10 f t 0 0 2248 _null_ )
 close pg_language
 create pg_largeobject_metadata 2995
  (
@@ -5753,8 +5753,8 @@
 insert ( 2798 n 0 2796 - 2796 - - - - - f f r r 2799 27 0 0 0 _null_ _null_ )
 insert ( 3527 n 0 3524 - 3524 - - - - - f f r r 3518 3500 0 0 0 _null_ _null_ )
 insert ( 3565 n 0 3563 - 3563 - - - - - f f r r 1203 869 0 0 0 _null_ _null_ )
-insert ( 2147 n 0 2804 - 463 - - 2804 3547 - f f r r 0 20 0 20 0 "0" "0" )
-insert ( 2803 n 0 1219 - 463 - - 1219 3546 - f f r r 0 20 0 20 0 "0" "0" )
+insert ( 2147 n 0 2804 - 463 - - 2804 3547 - f f r r 0 20 0 20 0 0 0 )
+insert ( 2803 n 0 1219 - 463 - - 1219 3546 - f f r r 0 20 0 20 0 0 0 )
 insert ( 2718 n 0 1836 2514 3341 3335 3336 1836 3569 2514 f f r r 0 2281 128 2281 128 _null_ _null_ )
 insert ( 2719 n 0 1835 3390 3338 3339 3340 1835 3568 3390 f f r r 0 2281 48 2281 48 _null_ _null_ )
 insert ( 2720 n 0 1834 3390 3338 3339 3340 1834 3567 3390 f f r r 0 2281 48 2281 48 _null_ _null_ )
@@ -5791,7 +5791,7 @@
 insert ( 2157 n 0 208 1832 276 - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )
 insert ( 2158 n 0 222 1832 276 - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )
 insert ( 2159 n 0 1833 1839 3341 3335 3336 1833 3548 1839 f f r r 0 2281 128 2281 128 _null_ _null_ )
-insert ( 2818 n 0 2805 - 463 - - - - - f f r r 0 20 0 0 0 "0" _null_ )
+insert ( 2818 n 0 2805 - 463 - - - - - f f r r 0 20 0 0 0 0 _null_ )
 insert ( 2819 n 0 2806 2807 3342 - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )
 insert ( 2820 n 0 2806 2808 3342 - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )
 insert ( 2821 n 0 2806 2809 3342 - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )
@@ -6177,9 +6177,9 @@
  nspacl = aclitem[]
  )
 open pg_namespace
-insert OID = 11 ( "pg_catalog" 10 _null_ )
-insert OID = 99 ( "pg_toast" 10 _null_ )
-insert OID = 2200 ( "public" 10 _null_ )
+insert OID = 11 ( pg_catalog 10 _null_ )
+insert OID = 99 ( pg_toast 10 _null_ )
+insert OID = 2200 ( public 10 _null_ )
 close pg_namespace
 create pg_conversion 2607
  (
@@ -6255,14 +6255,14 @@
  tmplacl = aclitem[]
  )
 open pg_pltemplate
-insert ( "plpgsql" t t "plpgsql_call_handler" "plpgsql_inline_handler" "plpgsql_validator" "$libdir/plpgsql" _null_ )
-insert ( "pltcl" t t "pltcl_call_handler" _null_ _null_ "$libdir/pltcl" _null_ )
-insert ( "pltclu" f f "pltclu_call_handler" _null_ _null_ "$libdir/pltcl" _null_ )
-insert ( "plperl" t t "plperl_call_handler" "plperl_inline_handler" "plperl_validator" "$libdir/plperl" _null_ )
-insert ( "plperlu" f f "plperlu_call_handler" "plperlu_inline_handler" "plperlu_validator" "$libdir/plperl" _null_ )
-insert ( "plpythonu" f f "plpython_call_handler" "plpython_inline_handler" "plpython_validator" "$libdir/plpython2" _null_ )
-insert ( "plpython2u" f f "plpython2_call_handler" "plpython2_inline_handler" "plpython2_validator" "$libdir/plpython2" _null_ )
-insert ( "plpython3u" f f "plpython3_call_handler" "plpython3_inline_handler" "plpython3_validator" "$libdir/plpython3" _null_ )
+insert ( plpgsql t t plpgsql_call_handler plpgsql_inline_handler plpgsql_validator "$libdir/plpgsql" _null_ )
+insert ( pltcl t t pltcl_call_handler _null_ _null_ "$libdir/pltcl" _null_ )
+insert ( pltclu f f pltclu_call_handler _null_ _null_ "$libdir/pltcl" _null_ )
+insert ( plperl t t plperl_call_handler plperl_inline_handler plperl_validator "$libdir/plperl" _null_ )
+insert ( plperlu f f plperlu_call_handler plperlu_inline_handler plperlu_validator "$libdir/plperl" _null_ )
+insert ( plpythonu f f plpython_call_handler plpython_inline_handler plpython_validator "$libdir/plpython2" _null_ )
+insert ( plpython2u f f plpython2_call_handler plpython2_inline_handler plpython2_validator "$libdir/plpython2" _null_ )
+insert ( plpython3u f f plpython3_call_handler plpython3_inline_handler plpython3_validator "$libdir/plpython3" _null_ )
 close pg_pltemplate
 create pg_authid 1260 shared_relation rowtype_oid 2842
  (
@@ -6280,11 +6280,11 @@
  )
 open pg_authid
 insert OID = 10 ( "POSTGRES" t t t t t t t -1 _null_ _null_ )
-insert OID = 3373 ( "pg_monitor" f t f f f f f -1 _null_ _null_ )
-insert OID = 3374 ( "pg_read_all_settings" f t f f f f f -1 _null_ _null_ )
-insert OID = 3375 ( "pg_read_all_stats" f t f f f f f -1 _null_ _null_ )
-insert OID = 3377 ( "pg_stat_scan_tables" f t f f f f f -1 _null_ _null_ )
-insert OID = 4200 ( "pg_signal_backend" f t f f f f f -1 _null_ _null_ )
+insert OID = 3373 ( pg_monitor f t f f f f f -1 _null_ _null_ )
+insert OID = 3374 ( pg_read_all_settings f t f f f f f -1 _null_ _null_ )
+insert OID = 3375 ( pg_read_all_stats f t f f f f f -1 _null_ _null_ )
+insert OID = 3377 ( pg_stat_scan_tables f t f f f f f -1 _null_ _null_ )
+insert OID = 4200 ( pg_signal_backend f t f f f f f -1 _null_ _null_ )
 close pg_authid
 create pg_auth_members 1261 shared_relation without_oids rowtype_oid 2843
  (
@@ -6323,7 +6323,7 @@
  cfgparser = oid
  )
 open pg_ts_config
-insert OID = 3748 ( "simple" 11 10 3722 )
+insert OID = 3748 ( simple 11 10 3722 )
 close pg_ts_config
 create pg_ts_config_map 3603 without_oids
  (
@@ -6362,7 +6362,7 @@
  dictinitoption = text
  )
 open pg_ts_dict
-insert OID = 3765 ( "simple" 11 10 3727 _null_ )
+insert OID = 3765 ( simple 11 10 3727 _null_ )
 close pg_ts_dict
 create pg_ts_parser 3601
  (
@@ -6375,7 +6375,7 @@
  prslextype = regproc
  )
 open pg_ts_parser
-insert OID = 3722 ( "default" 11 3717 3718 3719 3720 3721 )
+insert OID = 3722 ( default 11 3717 3718 3719 3720 3721 )
 close pg_ts_parser
 create pg_ts_template 3764
  (
@@ -6385,10 +6385,10 @@
  tmpllexize = regproc
  )
 open pg_ts_template
-insert OID = 3727 ( "simple" 11 3725 3726 )
-insert OID = 3730 ( "synonym" 11 3728 3729 )
-insert OID = 3733 ( "ispell" 11 3731 3732 )
-insert OID = 3742 ( "thesaurus" 11 3740 3741 )
+insert OID = 3727 ( simple 11 3725 3726 )
+insert OID = 3730 ( synonym 11 3728 3729 )
+insert OID = 3733 ( ispell 11 3731 3732 )
+insert OID = 3742 ( thesaurus 11 3740 3741 )
 close pg_ts_template
 create pg_extension 3079
  (
@@ -6511,8 +6511,8 @@
  )
 open pg_collation
 insert OID = 100 ( default 11 10 d -1 "" "" _null_ )
-insert OID = 950 ( C 11 10 c -1 "C" "C" _null_ )
-insert OID = 951 ( POSIX 11 10 c -1 "POSIX" "POSIX" _null_ )
+insert OID = 950 ( C 11 10 c -1 C C _null_ )
+insert OID = 951 ( POSIX 11 10 c -1 POSIX POSIX _null_ )
 close pg_collation
 create pg_partitioned_table 3350 without_oids
  (
#39John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#38)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

I wrote:

I'll submit a
preliminary patch soon to get some of those items out of the way.

I've attached a patch that takes care of these cleanups so they don't
clutter the patch set.

-John Naylor

Attachments:

0001-Some-non-functional-cleanups-in-preparation-for-the-.patchtext/x-patch; charset=US-ASCII; name=0001-Some-non-functional-cleanups-in-preparation-for-the-.patchDownload
From d97a8b2e5fa4977e656d1aca7ee7bf1289ecbd40 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sat, 3 Mar 2018 16:56:10 +0700
Subject: [PATCH] Some non-functional cleanups in preparation for the upcoming
 bootstrap data conversion:

Arrange pg_tablespace.h OID symbols so they are immediately after the relevant
DATA() line.

Separate out the pg_attribute logic of genbki.pl into its own function
and skip checking if the data is defined. This both narrows and shortens
the data writing loop of the script.

Correct spelling of some macros.
---
 src/backend/catalog/aclchk.c          |   6 +-
 src/backend/catalog/genbki.pl         | 272 ++++++++++++++++++----------------
 src/include/catalog/pg_init_privs.h   |   2 +-
 src/include/catalog/pg_tablespace.h   |   3 +-
 src/interfaces/ecpg/ecpglib/execute.c |   2 +-
 src/interfaces/ecpg/ecpglib/pg_type.h |   2 +-
 6 files changed, 149 insertions(+), 138 deletions(-)

diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 3f2c629..0648539 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -5969,8 +5969,8 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			MemSet(nulls, false, sizeof(nulls));
 			MemSet(replace, false, sizeof(replace));
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
-			replace[Anum_pg_init_privs_privs - 1] = true;
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
+			replace[Anum_pg_init_privs_initprivs - 1] = true;
 
 			oldtuple = heap_modify_tuple(oldtuple, RelationGetDescr(relation),
 										 values, nulls, replace);
@@ -6007,7 +6007,7 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 			values[Anum_pg_init_privs_privtype - 1] =
 				CharGetDatum(INITPRIVS_EXTENSION);
 
-			values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl);
+			values[Anum_pg_init_privs_initprivs - 1] = PointerGetDatum(new_acl);
 
 			tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
 
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index ed90a02..8d740c3 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -156,154 +156,85 @@ foreach my $catname (@{ $catalogs->{names} })
 		print $bki "open $catname\n";
 	}
 
-	if (defined $catalog->{data})
+	# For pg_attribute.h, we generate data entries ourselves.
+	# NB: pg_type.h must come before pg_attribute.h in the input list
+	# of catalog names, since we use info from pg_type.h here.
+	if ($catname eq 'pg_attribute')
 	{
+		gen_pg_attribute($schema);
+	}
 
-		# Ordinary catalog with DATA line(s)
-		foreach my $row (@{ $catalog->{data} })
-		{
-
-			# Split line into tokens without interpreting their meaning.
-			my %bki_values;
-			@bki_values{@attnames} =
-			  Catalog::SplitDataLine($row->{bki_values});
-
-			# Perform required substitutions on fields
-			foreach my $column (@$schema)
-			{
-				my $attname = $column->{name};
-				my $atttype = $column->{type};
-
-				# Substitute constant values we acquired above.
-				# (It's intentional that this can apply to parts of a field).
-				$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-				$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
-
-				# Replace regproc columns' values with OIDs.
-				# If we don't have a unique value to substitute,
-				# just do nothing (regprocin will complain).
-				if ($atttype eq 'regproc')
-				{
-					my $procoid = $regprocoids{ $bki_values{$attname} };
-					$bki_values{$attname} = $procoid
-					  if defined($procoid) && $procoid ne 'MULTIPLE';
-				}
-			}
+	# Ordinary catalog with DATA line(s)
+	foreach my $row (@{ $catalog->{data} })
+	{
 
-			# Save pg_proc oids for use in later regproc substitutions.
-			# This relies on the order we process the files in!
-			if ($catname eq 'pg_proc')
-			{
-				if (defined($regprocoids{ $bki_values{proname} }))
-				{
-					$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
-				}
-				else
-				{
-					$regprocoids{ $bki_values{proname} } = $row->{oid};
-				}
-			}
+		# Split line into tokens without interpreting their meaning.
+		my %bki_values;
+		@bki_values{@attnames} =
+		  Catalog::SplitDataLine($row->{bki_values});
 
-			# Save pg_type info for pg_attribute processing below
-			if ($catname eq 'pg_type')
+		# Perform required substitutions on fields
+		foreach my $column (@$schema)
+		{
+			my $attname = $column->{name};
+			my $atttype = $column->{type};
+
+			# Substitute constant values we acquired above.
+			# (It's intentional that this can apply to parts of a field).
+			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+
+			# Replace regproc columns' values with OIDs.
+			# If we don't have a unique value to substitute,
+			# just do nothing (regprocin will complain).
+			if ($atttype eq 'regproc')
 			{
-				my %type = %bki_values;
-				$type{oid} = $row->{oid};
-				$types{ $type{typname} } = \%type;
+				my $procoid = $regprocoids{ $bki_values{$attname} };
+				$bki_values{$attname} = $procoid
+				  if defined($procoid) && $procoid ne 'MULTIPLE';
 			}
+		}
 
-			# Write to postgres.bki
-			my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-			printf $bki "insert %s( %s )\n", $oid,
-			  join(' ', @bki_values{@attnames});
-
-			# Write comments to postgres.description and
-			# postgres.shdescription
-			if (defined $row->{descr})
+		# Save pg_proc oids for use in later regproc substitutions.
+		# This relies on the order we process the files in!
+		if ($catname eq 'pg_proc')
+		{
+			if (defined($regprocoids{ $bki_values{proname} }))
 			{
-				printf $descr "%s\t%s\t0\t%s\n",
-				  $row->{oid}, $catname, $row->{descr};
+				$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
 			}
-			if (defined $row->{shdescr})
+			else
 			{
-				printf $shdescr "%s\t%s\t%s\n",
-				  $row->{oid}, $catname, $row->{shdescr};
+				$regprocoids{ $bki_values{proname} } = $row->{oid};
 			}
 		}
-	}
-	if ($catname eq 'pg_attribute')
-	{
 
-		# For pg_attribute.h, we generate DATA entries ourselves.
-		# NB: pg_type.h must come before pg_attribute.h in the input list
-		# of catalog names, since we use info from pg_type.h here.
-		foreach my $table_name (@{ $catalogs->{names} })
+		# Save pg_type info for pg_attribute processing below
+		if ($catname eq 'pg_type')
 		{
-			my $table = $catalogs->{$table_name};
-
-			# Currently, all bootstrapped relations also need schemapg.h
-			# entries, so skip if the relation isn't to be in schemapg.h.
-			next if !$table->{schema_macro};
-
-			$schemapg_entries{$table_name} = [];
-			push @tables_needing_macros, $table_name;
-
-			# Generate entries for user attributes.
-			my $attnum       = 0;
-			my $priornotnull = 1;
-			foreach my $attr (@{ $table->{columns} })
-			{
-				$attnum++;
-				my %row;
-				$row{attnum}   = $attnum;
-				$row{attrelid} = $table->{relation_oid};
-
-				morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
-				$priornotnull &= ($row{attnotnull} eq 't');
+			my %type = %bki_values;
+			$type{oid} = $row->{oid};
+			$types{ $type{typname} } = \%type;
+		}
 
-				# If it's bootstrapped, put an entry in postgres.bki.
-				print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+		# Write to postgres.bki
+		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+		printf $bki "insert %s( %s )\n", $oid,
+		  join(' ', @bki_values{@attnames});
 
-				# Store schemapg entries for later.
-				morph_row_for_schemapg(\%row, $schema);
-				push @{ $schemapg_entries{$table_name} },
-				  sprintf "{ %s }",
-				    join(', ', grep { defined $_ } @row{@attnames});
-			}
-
-			# Generate entries for system attributes.
-			# We only need postgres.bki entries, not schemapg.h entries.
-			if ($table->{bootstrap})
-			{
-				$attnum = 0;
-				my @SYS_ATTRS = (
-					{ name => 'ctid',     type => 'tid' },
-					{ name => 'oid',      type => 'oid' },
-					{ name => 'xmin',     type => 'xid' },
-					{ name => 'cmin',     type => 'cid' },
-					{ name => 'xmax',     type => 'xid' },
-					{ name => 'cmax',     type => 'cid' },
-					{ name => 'tableoid', type => 'oid' });
-				foreach my $attr (@SYS_ATTRS)
-				{
-					$attnum--;
-					my %row;
-					$row{attnum}        = $attnum;
-					$row{attrelid}      = $table->{relation_oid};
-					$row{attstattarget} = '0';
-
-					# Omit the oid column if the catalog doesn't have them
-					next
-					  if $table->{without_oids}
-						  && $attr->{name} eq 'oid';
-
-					morph_row_for_pgattr(\%row, $schema, $attr, 1);
-					print_bki_insert(\%row, @attnames);
-				}
-			}
+		# Write comments to postgres.description and
+		# postgres.shdescription
+		if (defined $row->{descr})
+		{
+			printf $descr "%s\t%s\t0\t%s\n",
+			  $row->{oid}, $catname, $row->{descr};
+		}
+		if (defined $row->{shdescr})
+		{
+			printf $shdescr "%s\t%s\t%s\n",
+			  $row->{oid}, $catname, $row->{shdescr};
 		}
 	}
-
 	print $bki "close $catname\n";
 }
 
@@ -375,6 +306,87 @@ exit 0;
 #################### Subroutines ########################
 
 
+# Iterate over all the catalogs. Where specified in the given header, build
+# a hard-coded tuple descriptor for utils/relcache.c. Some of these are
+# also bootstrap tables, which require pg_attribute entries in .bki for
+# both user and system attributes.
+sub gen_pg_attribute
+{
+	my $schema = shift;
+
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		push @attnames, $column->{name};
+	}
+
+	foreach my $table_name (@{ $catalogs->{names} })
+	{
+		my $table = $catalogs->{$table_name};
+
+		# Currently, all bootstrapped relations also need schemapg.h
+		# entries, so skip if the relation isn't to be in schemapg.h.
+		next if !$table->{schema_macro};
+
+		$schemapg_entries{$table_name} = [];
+		push @tables_needing_macros, $table_name;
+
+		# Generate entries for user attributes.
+		my $attnum       = 0;
+		my $priornotnull = 1;
+		foreach my $attr (@{ $table->{columns} })
+		{
+			$attnum++;
+			my %row;
+			$row{attnum}   = $attnum;
+			$row{attrelid} = $table->{relation_oid};
+
+			morph_row_for_pgattr(\%row, $schema, $attr, $priornotnull);
+			$priornotnull &= ($row{attnotnull} eq 't');
+
+			# If it's bootstrapped, put an entry in postgres.bki.
+			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+
+			# Store schemapg entries for later.
+			morph_row_for_schemapg(\%row, $schema);
+			push @{ $schemapg_entries{$table_name} },
+			  sprintf "{ %s }",
+				join(', ', grep { defined $_ } @row{@attnames});
+		}
+
+		# Generate entries for system attributes.
+		# We only need postgres.bki entries, not schemapg.h entries.
+		if ($table->{bootstrap})
+		{
+			$attnum = 0;
+			my @SYS_ATTRS = (
+				{ name => 'ctid',     type => 'tid' },
+				{ name => 'oid',      type => 'oid' },
+				{ name => 'xmin',     type => 'xid' },
+				{ name => 'cmin',     type => 'cid' },
+				{ name => 'xmax',     type => 'xid' },
+				{ name => 'cmax',     type => 'cid' },
+				{ name => 'tableoid', type => 'oid' });
+			foreach my $attr (@SYS_ATTRS)
+			{
+				$attnum--;
+				my %row;
+				$row{attnum}        = $attnum;
+				$row{attrelid}      = $table->{relation_oid};
+				$row{attstattarget} = '0';
+
+				# Omit the oid column if the catalog doesn't have them
+				next
+				  if $table->{without_oids}
+					  && $attr->{name} eq 'oid';
+
+				morph_row_for_pgattr(\%row, $schema, $attr, 1);
+				print_bki_insert(\%row, @attnames);
+			}
+		}
+	}
+}
+
 # Given $pgattr_schema (the pg_attribute schema for a catalog sufficient for
 # AddDefaultValues), $attr (the description of a catalog row), and
 # $priornotnull (whether all prior attributes in this catalog are not null),
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 6ea005f..65f02c2 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -69,7 +69,7 @@ typedef FormData_pg_init_privs * Form_pg_init_privs;
 #define Anum_pg_init_privs_classoid		2
 #define Anum_pg_init_privs_objsubid		3
 #define Anum_pg_init_privs_privtype		4
-#define Anum_pg_init_privs_privs		5
+#define Anum_pg_init_privs_initprivs	5
 
 /*
  * It is important to know if the initial privileges are from initdb or from an
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 3967056..360fc4c 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -58,9 +58,8 @@ typedef FormData_pg_tablespace *Form_pg_tablespace;
 #define Anum_pg_tablespace_spcoptions	4
 
 DATA(insert OID = 1663 ( pg_default PGUID _null_ _null_ ));
-DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
-
 #define DEFAULTTABLESPACE_OID 1663
+DATA(insert OID = 1664 ( pg_global	PGUID _null_ _null_ ));
 #define GLOBALTABLESPACE_OID 1664
 
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 7d6d7d0..0404385 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -255,7 +255,7 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), TIMETZOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
-		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), ZPBITOID, ECPG_ARRAY_NONE, stmt->lineno))
+		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), BITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), VARBITOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return ECPG_ARRAY_ERROR;
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index 5d9eeca..f75c887 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -54,7 +54,7 @@
 #define TIMESTAMPTZOID	1184
 #define INTERVALOID		1186
 #define TIMETZOID		1266
-#define ZPBITOID	 1560
+#define BITOID	 1560
 #define VARBITOID	  1562
 #define NUMERICOID		1700
 #define REFCURSOROID	1790
-- 
2.7.4

#40Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#38)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 3/3/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

* I'm a little disturbed by the fact that 0002 has to "re-doublequote
values that are macros expanded by initdb.c". I see that there are only
a small number of affected places, so maybe it's not really worth working
harder, but I worry that something might get missed. Is there any way to
include this consideration in the automated conversion, or at least to
verify that we found all the places to quote? Or, seeing that 0004 seems
to be introducing some quoting-related hacks to genbki.pl anyway, maybe
we could take care of the issue there?

The quoting hacks are really to keep the postgres.bki diff as small as
possible (attached). The simplest and most air-tight way to address
your concern would be to double-quote everything when writing the bki
file. That could be done last as a follow-up.

Oh, if you're cross-checking by diff'ing the produced .bki file, then
that's sufficient to address my concern here. No need to do more.

regards, tom lane

#41Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#39)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

I've attached a patch that takes care of these cleanups so they don't
clutter the patch set.

Pushed. I made a couple of cosmetic changes in genbki.pl.

regards, tom lane

#42Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#38)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 3/3/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

* In 0006, I'm not very pleased with the introduction of
"Makefile.headers".

I wasn't happy with it either, but I couldn't get it to build
otherwise. The sticking point was the symlinks in
$(builddir)/src/include/catalog. $(MAKE) -C catalog doesn't handle
that. The makefile in /src/common relies on the backend makefile to
know what to invoke for a given header. IIRC, relpath.c includes
pg_tablespace.h, which now requires pg_tablespace_d.h to be built.

I'm not following. AFAICS, what you put in src/common/Makefile was just

+.PHONY: generated-headers
+
+generated-headers:
+	$(MAKE) -C ../backend generated-headers

which doesn't appear to care whether backend/Makefile knows anything
about specific generated headers or not. I think all we need to do
is consider that the *_d.h files ought to be built as another consequence
of invoking the generated-headers target.

BTW, there's already a submake-generated-headers target in
Makefile.global, which you should use in preference to rolling your own.

regards, tom lane

#43John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#42)
7 attachment(s)
Re: WIP: a way forward on bootstrap data

On 3/4/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

John Naylor <jcnaylor@gmail.com> writes:

On 3/3/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

* In 0006, I'm not very pleased with the introduction of
"Makefile.headers".

I wasn't happy with it either, but I couldn't get it to build
otherwise. The sticking point was the symlinks in
$(builddir)/src/include/catalog. $(MAKE) -C catalog doesn't handle
that. The makefile in /src/common relies on the backend makefile to
know what to invoke for a given header. IIRC, relpath.c includes
pg_tablespace.h, which now requires pg_tablespace_d.h to be built.

I'm not following. AFAICS, what you put in src/common/Makefile was just

+.PHONY: generated-headers
+
+generated-headers:
+	$(MAKE) -C ../backend generated-headers

which doesn't appear to care whether backend/Makefile knows anything
about specific generated headers or not. I think all we need to do
is consider that the *_d.h files ought to be built as another consequence
of invoking the generated-headers target.

BTW, there's already a submake-generated-headers target in
Makefile.global, which you should use in preference to rolling your own.

I've attached version 9, whose biggest change is to address the above
points of review. I pushed all of the catalog header build logic into
catalog Makefile to avoid creating a separate symbol file. This
involved putting the distprep logic there as well. Enough of the
structure changed that one or two names didn't make sense anymore, so
I changed them.

As suggested, the conversion script is now part of the patchset and
not committed to the repo. To run the conversion, save everything to a
directory and update the dir vars at the top of
apply-bootstrap-data-patches.sh accordingly.

A couple things to note that I didn't do:
-With all the new generated headers, the message "Writing ..." is now
quite verbose. It might be worth changing that.
-I'm not sure if I need to change anything involving "make install".
-I haven't tested the MSVC changes.
-I didn't change any clients to actually use the new headers directly.
That might be too ambitious for this cycle anyway.

While this goes through review, I'll get a head start rebasing the
human readable OIDs and data compaction patches.

-John Naylor

Attachments:

v9-convert_header2dat.plapplication/x-perl; name=v9-convert_header2dat.plDownload
v9-0001-Create-data-conversion-infrastructure.patchtext/x-patch; charset=US-ASCII; name=v9-0001-Create-data-conversion-infrastructure.patchDownload
From 18a4540e7a108949cb2fc4aa292a41ad22e29394 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 15 Jan 2018 10:19:30 +0700
Subject: [PATCH] Create data conversion infrastructure

Remove data parsing from the original Catalogs() function and rename it
to ParseHeader() to reflect its new, limited role of extracting the
schema info from a single header. The new data files are handled by the
new function ParseData(). Having these functions work with only one file
at a time requires their callers to do more work, but results in a cleaner
design.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, preserves comments and folds
consecutive blank lines. The meta-attributes oid, oid_symbol and
(sh)descr are on their own line, if present.
---
 src/backend/catalog/Catalog.pm     | 227 ++++++++++++++++++-------------------
 src/include/catalog/rewrite_dat.pl | 200 ++++++++++++++++++++++++++++++++
 2 files changed, 311 insertions(+), 116 deletions(-)
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 9ced154..60e641e 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,19 +33,16 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
 		my %catalog;
+		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
 
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -64,9 +60,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -74,68 +67,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
-			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -143,16 +85,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -173,7 +112,7 @@ sub Catalogs
 				}
 				if (/^}/)
 				{
-					undef $declaring_attributes;
+					$declaring_attributes = 0;
 				}
 				else
 				{
@@ -227,32 +166,107 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
-	}
-	return \%catalogs;
+	return \%catalog;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	$input_file =~ /\w+\.dat$/
+	  or die "Input file needs to be a .dat file.\n";
+	my $data = [];
+
+	# Read entire file into a string and eval it.
+	if (!$preserve_formatting)
+	{
+		my $file_string = do
+		{
+			local $/ = undef;
+			open my $ifd, "<", $input_file or die "$input_file: $!";
+			<$ifd>;
+		};
+
+		eval '$data = ' . $file_string;
+		print "Error : $@\n" if $@;
+		return $data;
+	}
+
+	# When preserving formatting, we scan the file one line at a time
+	# and decide how to handle each item. We don't check too closely
+	# for valid syntax, since we assume it will be checked otherwise.
+	my $prev_blank = 0;
+	open(my $ifd, '<', $input_file) or die "$input_file: $!";
+	while (<$ifd>)
+	{
+		my $datum;
+
+		# Capture non-consecutive blank lines.
+		if (/^\s*$/)
+		{
+			next if $prev_blank;
+			$prev_blank = 1;
+
+			# Newline gets added by caller.
+			$datum = '';
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		# Capture comments that are on their own line.
+		if (/^\s*(#.*?)\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture brackets that are on their own line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Capture hash references
+		# NB: Assumes that the next hash ref can't start on the
+		# same line where the present one ended.
+		# Not foolproof, but we shouldn't need a full parser,
+		# since we expect relatively well-behaved input.
+		elsif (/{/)
+		{
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+			}
+			else
+			{
+				my $next_line = <$ifd>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+		push @$data, $datum if defined $datum;
+	}
+	close $ifd;
+	return $data;
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -308,7 +322,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -340,22 +353,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..e0d0d66
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,200 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata entries are on their own line within the data entry.
+#    -Attributes are in the same order they would be in the catalog table.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	elsif ($arg eq '--revert')
+	{
+		revert();
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @METADATA = ('oid', 'oid_symbol', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Back up old data file rather than overwrite it. The input path and
+	# output path are normally the same, but we don't assume that.
+	my $newdatfile = "$output_path$catname.dat";
+	if (-e $newdatfile)
+	{
+		rename($newdatfile, $newdatfile . '.bak')
+		  or die "rename: $newdatfile: $!";
+	}
+	open my $dat, '>', $newdatfile
+	  or die "can't open $newdatfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @METADATA);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+# Format the individual elements of a Perl hash into a valid string
+# representation. We do this ourselves, rather than use native Perl
+# facilities, so we can keep control over the exact formatting of the
+# data files.
+sub format_line
+{
+	my $data = shift;
+	my @atts = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $field (@atts)
+	{
+		next if !defined $data->{$field};
+		$value = $data->{$field};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$field => '$value'";
+	}
+	return $line;
+}
+
+# Rename .bak files back to .dat
+# This requires passing the .dat files as arguments to the script as normal.
+# XXX This is of questionable utility, since the files are under version
+# control, after all.
+sub revert
+{
+	foreach my $datfile (@input_files)
+	{
+		my $bakfile = "$datfile.bak";
+		if (-e $bakfile)
+		{
+			rename($bakfile, $datfile) or die "rename: $bakfile: $!";
+		}
+	}
+	exit 0;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+    --revert         rename .bak files back to .dat
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v9-0002-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v9-0002-Hand-edits-of-data-files.patchDownload
From 9454316187349a2918409274464397b125815005 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:18:06 +0700
Subject: [PATCH] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    |  9 ++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 10 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 46 +++++------------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 45 ++++++----------------
 12 files changed, 143 insertions(+), 89 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index a77bab0..86fecba 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -20,48 +20,56 @@
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int24
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int28
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int4
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int42
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int48
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int8
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int82
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int84
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
@@ -101,18 +109,21 @@
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float48
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators float8
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float84
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
@@ -176,48 +187,56 @@
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamp
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamptz
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
@@ -389,17 +408,22 @@
 
 # bpchar_ops
 { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # char_ops
 { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+
 # date_ops
 { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+
 # float_ops
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+
 # network_ops
 { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+
 # integer_ops
 { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
@@ -410,52 +434,76 @@
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+
 # interval_ops
 { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr_ops
 { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr8_ops
 { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+
 # name_ops
 { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+
 # oid_ops
 { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+
 # oidvector_ops
 { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+
 # text_ops
 { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # time_ops
 { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamptz_ops
 { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+
 # timetz_ops
 { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamp_ops
 { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+
 # bool_ops
 { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+
 # bytea_ops
 { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+
 # xid_ops
 { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+
 # cid_ops
 { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+
 # abstime_ops
 { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+
 # reltime_ops
 { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+
 # text_pattern_ops
 { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # bpchar_pattern_ops
 { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # aclitem_ops
 { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+
 # uuid_ops
 { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+
 # pg_lsn_ops
 { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+
 # numeric_ops
 { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+
 # array_ops
 { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
 
@@ -699,24 +747,28 @@
 { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax "char"
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax name
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax integer
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
@@ -770,18 +822,21 @@
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax oid
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax tid
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax float (float4, float8)
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
@@ -810,30 +865,35 @@
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax reltime
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr8
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax inet
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion inet
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
@@ -841,18 +901,21 @@
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax character
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time without time zone
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
@@ -906,36 +969,42 @@
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time with time zone
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit varying
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax numeric
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax uuid
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion range types
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
@@ -951,12 +1020,14 @@
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax pg_lsn
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion box
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
@@ -970,6 +1041,7 @@
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index 8c4df85..1b44d8d 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -293,21 +293,25 @@
 { amprocfamily => '5008', amproclefttype => '604', amprocrighttype => '604', amprocnum => '6', amproc => '5011' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+
 # minmax "char"
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+
 # minmax name
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
@@ -353,16 +357,19 @@
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+
 # minmax oid
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+
 # minmax tid
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+
 # minmax float
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
@@ -389,26 +396,31 @@
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+
 # minmax reltime
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr8
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+
 # minmax inet
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+
 # inclusion inet
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
@@ -417,16 +429,19 @@
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+
 # minmax character
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+
 # minmax time without time zone
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
@@ -472,31 +487,37 @@
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+
 # minmax time with time zone
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+
 # minmax bit
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+
 # minmax bit varying
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+
 # minmax numeric
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+
 # minmax uuid
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+
 # inclusion range types
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
@@ -505,11 +526,13 @@
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+
 # inclusion box
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index cb109dd..e493a39 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -12,12 +12,11 @@
 
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# POSTGRES will be replaced at initdb time with a user choice that might
+# contain non-word characters, so we must double-quote it.
+
 { oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
-  rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR',
   rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index fc394ef..8c2aed5 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -65,6 +65,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -204,6 +205,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -238,6 +240,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -252,6 +255,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -259,6 +263,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -267,6 +272,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index 770add8..1d1e108 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -12,12 +12,13 @@
 
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
 # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
 # similarly, "1" in relminmxid stands for FirstMultiXactId
+
 { oid => '1247',
   relname => 'pg_type', relnamespace => 'PGNSP', reltype => '71', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '30', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1249',
@@ -27,11 +28,4 @@
 { oid => '1259',
   relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bdbccea..6704f0b 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -12,7 +12,10 @@
 
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 04eec9f..6483027 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -19,6 +19,4 @@
 { oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index 4f0cbfa..a3972d4 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -55,12 +55,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1985', opcintype => '829', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3371', opcintype => '774', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3372', opcintype => '774', opcdefault => 't', opckeytype => '0' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1986', opcintype => '19', opcdefault => 't', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1987', opcintype => '19', opcdefault => 't', opckeytype => '0' },
 { oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID',
   opcmethod => '403', opcname => 'numeric_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1988', opcintype => '1700', opcdefault => 't', opckeytype => '0' },
@@ -136,7 +138,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4064', opcintype => '17', opcdefault => 't', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4062', opcintype => '18', opcdefault => 't', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4065', opcintype => '19', opcdefault => 't', opckeytype => '19' },
@@ -164,12 +168,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4079', opcintype => '1560', opcdefault => 't', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4080', opcintype => '1562', opcdefault => 't', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4055', opcintype => '1700', opcdefault => 't', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4081', opcintype => '2950', opcdefault => 't', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4103', opcintype => '3831', opcdefault => 't', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4082', opcintype => '3220', opcdefault => 't', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4104', opcintype => '603', opcdefault => 't', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index fd1aae8..a54bc1b17 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -12,7 +12,7 @@
 
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1592,6 +1592,7 @@
   oprname => '&&', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_and', oprrest => '-', oprjoin => '-' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_or', oprrest => '-', oprjoin => '-' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => '5003', oprrest => '-', oprjoin => '-' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 8c37869..943749f 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -12,14 +12,16 @@
 
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -28,7 +30,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier.
 
 # OIDS 1 - 99
 
@@ -1807,6 +1809,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   proname => 'obj_description', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '14', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '30', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'oidvectortypes', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -1967,7 +1970,6 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   proname => 'pclose', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_close', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1434', descr => 'open path',
@@ -2763,6 +2765,7 @@
   proname => 'interval_hash_extended', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '20', proargtypes => '1186 20', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'interval_hash_extended', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '3', pronargdefaults => '0', prorettype => '1700', proargtypes => '2275 26 23', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'numeric_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1702', descr => 'I/O',
@@ -4806,6 +4809,7 @@
   proname => 'bool_anytrue', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '2281', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'bool_anytrue', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'a', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   proname => 'bool_or', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'a', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -4855,6 +4859,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_postmaster_start_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_conf_load_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -5711,6 +5716,7 @@
   proname => 'jsonb_pretty', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '3802', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_pretty', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '3802', proargtypes => '3802 1009 3802 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_insert', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '2970', proargtypes => '2275', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'txid_snapshot_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -6129,37 +6135,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_create', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_drop', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_oid', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '16', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_is_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '3220', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '3220 1184', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '25 3220', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_advance', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '3220', proargtypes => '25 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '100', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_show_replication_origin_status', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6182,20 +6177,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   proname => 'pg_control_system', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_system', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   proname => 'pg_control_checkpoint', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_checkpoint', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_recovery', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   proname => 'pg_control_init', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_init', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '1', pronargdefaults => '0', prorettype => '23', proargtypes => '4089', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_import_system_collations', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_collation_actual_version', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6209,21 +6200,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '2276', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '16', proargtypes => '26 23 23 2276', proallargtypes => '_null_', proargmodes => '{i,i,i,v}', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'satisfies_hash_partition', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
-# Symbolic values for prokind column
-
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 682721e..e8c81f2 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -19,6 +19,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index daeb647..0cc91e2 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -14,52 +14,40 @@
 
 # Keep the following ordered by OID so that later changes can be made more
 # easily.
+
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'B', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '17', oid_symbol => 'BYTEAOID', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '18', oid_symbol => 'CHAROID', descr => 'single character',
   typname => 'char', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '19', oid_symbol => 'NAMEOID', descr => '63-byte type for storing system identifiers',
   typname => 'name', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'NAMEDATALEN', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '20', oid_symbol => 'INT8OID', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '21', oid_symbol => 'INT2OID', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '2', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '22', oid_symbol => 'INT2VECTOROID', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '23', oid_symbol => 'INT4OID', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '24', oid_symbol => 'REGPROCOID', descr => 'registered procedure',
   typname => 'regproc', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '25', oid_symbol => 'TEXTOID', descr => 'variable-length string, no limit specified',
   typname => 'text', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '26', oid_symbol => 'OIDOID', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '27', oid_symbol => 'TIDOID', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '6', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '28', oid_symbol => 'XIDOID', descr => 'transaction id',
   typname => 'xid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '29', oid_symbol => 'CIDOID', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '30', oid_symbol => 'OIDVECTOROID', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -76,6 +64,7 @@
   typname => 'pg_class', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '1259', typelem => '0', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 100 - 199
+
 { oid => '114', oid_symbol => 'JSONOID',
   typname => 'json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '142', oid_symbol => 'XMLOID', descr => 'XML content',
@@ -84,16 +73,12 @@
   typname => '_xml', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '199',
   typname => '_json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '194', oid_symbol => 'PGNODETREEOID', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'ALIGNOF_POINTER', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -109,6 +94,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', oid_symbol => 'POINTOID', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '16', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '601', oid_symbol => 'LSEGOID', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -119,7 +105,6 @@
   typname => 'box', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '32', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\073', typrelid => '0', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '604', oid_symbol => 'POLYGONOID', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '628', oid_symbol => 'LINEOID', descr => 'geometric line',
   typname => 'line', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '629',
@@ -139,7 +124,6 @@
   typname => 'tinterval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '12', typbyval => 'f', typtype => 'b', typcategory => 'T', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '705', oid_symbol => 'UNKNOWNOID',
   typname => 'unknown', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '718', oid_symbol => 'CIRCLEOID', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '719',
@@ -162,6 +146,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1001',
@@ -242,6 +227,7 @@
   typname => 'time', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', oid_symbol => 'TIMESTAMPOID', descr => 'date and time',
   typname => 'timestamp', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1115',
@@ -260,6 +246,7 @@
   typname => '_interval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1266', oid_symbol => 'TIMETZOID', descr => 'time of day with time zone',
@@ -268,6 +255,7 @@
   typname => '_timetz', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', oid_symbol => 'BITOID', descr => 'fixed-length bit string',
   typname => 'bit', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'V', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1561',
@@ -280,37 +268,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', oid_symbol => 'NUMERICOID', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => '-', typalign => 'i', typstorage => 'm', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '1790', oid_symbol => 'REFCURSOROID', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2202', oid_symbol => 'REGPROCEDUREOID', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2203', oid_symbol => 'REGOPEROID', descr => 'registered operator',
   typname => 'regoper', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2204', oid_symbol => 'REGOPERATOROID', descr => 'registered operator (with args)',
   typname => 'regoperator', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2205', oid_symbol => 'REGCLASSOID', descr => 'registered class',
   typname => 'regclass', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2206', oid_symbol => 'REGTYPEOID', descr => 'registered type',
   typname => 'regtype', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4096', oid_symbol => 'REGROLEOID', descr => 'registered role',
   typname => 'regrole', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4089', oid_symbol => 'REGNAMESPACEOID', descr => 'registered namespace',
   typname => 'regnamespace', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2207',
   typname => '_regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2208',
@@ -349,7 +330,6 @@
   typname => 'regconfig', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3769', oid_symbol => 'REGDICTIONARYOID', descr => 'registered text search dictionary',
   typname => 'regdictionary', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3643',
   typname => '_tsvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3644',
@@ -406,6 +386,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249', oid_symbol => 'RECORDOID',
   typname => 'record', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2287', oid_symbol => 'RECORDARRAYOID',
@@ -443,8 +424,4 @@
 { oid => '3831', oid_symbol => 'ANYRANGEOID',
   typname => 'anyrange', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v9-0003-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v9-0003-Update-catalog-scripts-to-read-data-files.patchDownload
From 6edf5df1130558ddc2b4e62ce5a54a7fde603a61 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:30:51 +0700
Subject: [PATCH] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/Makefile               |   2 +-
 src/backend/catalog/Makefile       |  11 ++-
 src/backend/catalog/README         |  72 ++++++++++++++-----
 src/backend/catalog/genbki.pl      | 142 ++++++++++++++++++++++++++-----------
 src/backend/utils/Gen_fmgrtab.pl   |  56 +++++++++------
 src/backend/utils/Makefile         |   4 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 src/tools/msvc/Solution.pm         |   9 ++-
 10 files changed, 220 insertions(+), 93 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 4a28267..2fadcea 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -142,7 +142,7 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..c177ba0 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,57 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data structure literals that are simply
+eval'd to produce in-memory data structures.  As such, the code reading
+them doesn't care about ordering and layout, but in order to maintain
+a standard appearance, src/include/catalog/rewrite_dat.pl should be run
+before submitting catalog data patches.  Each file contains an array of
+hash references, which represent the data entries.  The best examples are
+the existing data files, but an altered subset of pg_database.dat will
+demonstrate the key features:
+
+# pg_database_example.dat
+[
+
+# a comment
+{ oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must also have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The metadata fields oid, oid_symbol, descr, and shdescr are on their own
+line within the curly brackets.  This is done automatically during rewriting
+so their placement is not crucial during development.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -38,9 +71,9 @@ catalog that has no OIDs).  In practice we usually preassign OIDs
 for all or none of the pre-loaded tuples in a given catalog, even if only
 some of them are actually cross-referenced.
 
-- We also sometimes preallocate OIDs for catalog tuples whose OIDs must
-be known directly in the C code.  In such cases, put a #define in the
-catalog's .h file, and use the #define symbol in the C code.  Writing
+- We also sometimes preallocate OIDs for catalog tuples whose OIDs must be
+known directly in the C code.  In such cases, put an 'oid_symbol' entry in
+the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
 Direct references to pg_proc OIDs are common enough that there's a special
 mechanism to create the necessary #define's automatically: see
@@ -49,19 +82,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +138,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index b4abbff..027dd95 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,18 +143,17 @@ my %regprocoids;
 my %types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my @attnames;
 	my $first = 1;
 
 	print $bki " (\n";
@@ -128,7 +162,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		push @attnames, $attname;
 
 		if (!$first)
 		{
@@ -161,17 +194,13 @@ foreach my $catname (@{ $catalogs->{names} })
 	# of catalog names, since we use info from pg_type.h here.
 	if ($catname eq 'pg_attribute')
 	{
-		gen_pg_attribute($schema, @attnames);
+		gen_pg_attribute($schema);
 	}
 
-	# Ordinary catalog with DATA line(s)
-	foreach my $row (@{ $catalog->{data} })
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
 	{
-
-		# Split line into tokens without interpreting their meaning.
-		my %bki_values;
-		@bki_values{@attnames} =
-		  Catalog::SplitDataLine($row->{bki_values});
+		my %bki_values = %$row;
 
 		# Perform required substitutions on fields
 		foreach my $column (@$schema)
@@ -205,7 +234,7 @@ foreach my $catname (@{ $catalogs->{names} })
 			}
 			else
 			{
-				$regprocoids{ $bki_values{proname} } = $row->{oid};
+				$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 			}
 		}
 
@@ -213,26 +242,23 @@ foreach my $catname (@{ $catalogs->{names} })
 		if ($catname eq 'pg_type')
 		{
 			my %type = %bki_values;
-			$type{oid} = $row->{oid};
 			$types{ $type{typname} } = \%type;
 		}
 
 		# Write to postgres.bki
-		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-		printf $bki "insert %s( %s )\n", $oid,
-		  join(' ', @bki_values{@attnames});
+		print_bki_insert(\%bki_values, $schema);
 
 		# Write comments to postgres.description and
 		# postgres.shdescription
-		if (defined $row->{descr})
+		if (defined $bki_values{descr})
 		{
 			printf $descr "%s\t%s\t0\t%s\n",
-			  $row->{oid}, $catname, $row->{descr};
+			  $bki_values{oid}, $catname, $bki_values{descr};
 		}
-		if (defined $row->{shdescr})
+		if (defined $bki_values{shdescr})
 		{
 			printf $shdescr "%s\t%s\t%s\n",
-			  $row->{oid}, $catname, $row->{shdescr};
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
 
@@ -243,12 +269,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -314,11 +340,16 @@ exit 0;
 sub gen_pg_attribute
 {
 	my $schema = shift;
-	my @attnames = @_;
 
-	foreach my $table_name (@{ $catalogs->{names} })
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		push @attnames, $column->{name};
+	}
+
+	foreach my $table_name (@catnames)
 	{
-		my $table = $catalogs->{$table_name};
+		my $table = $catalogs{$table_name};
 
 		# Currently, all bootstrapped relations also need schemapg.h
 		# entries, so skip if the relation isn't to be in schemapg.h.
@@ -341,7 +372,7 @@ sub gen_pg_attribute
 			$priornotnull &= ($row{attnotnull} eq 't');
 
 			# If it's bootstrapped, put an entry in postgres.bki.
-			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+			print_bki_insert(\%row, $schema) if $table->{bootstrap};
 
 			# Store schemapg entries for later.
 			morph_row_for_schemapg(\%row, $schema);
@@ -377,7 +408,7 @@ sub gen_pg_attribute
 					  && $attr->{name} eq 'oid';
 
 				morph_row_for_pgattr(\%row, $schema, $attr, 1);
-				print_bki_insert(\%row, @attnames);
+				print_bki_insert(\%row, $schema);
 			}
 		}
 	}
@@ -448,14 +479,45 @@ sub morph_row_for_pgattr
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki. Adding quotes here allows us to keep
+# most double quotes out of the catalog data files for readability. See
+# bootscanner.l for what tokens need quoting.
 sub print_bki_insert
 {
-	my $row        = shift;
-	my @attnames   = @_;
-	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', @{$row}{@attnames};
-	printf $bki "insert %s( %s )\n", $oid, $bki_values;
+	my $row    = shift;
+	my $schema = shift;
+
+	my @bki_values;
+	my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+
+	foreach my $column (@$schema)
+	{
+		my $attname   = $column->{name};
+		my $atttype   = $column->{type};
+		my $bki_value = $row->{$attname};
+
+		$bki_value = sprintf(qq'"%s"', $bki_value)
+		  if  $bki_value ne '_null_'
+		  and $bki_value !~ /^"([^"])*"$/
+		  and ( length($bki_value) == 0       # Empty string
+				or $bki_value =~ /\s/         # Contains whitespace
+
+				# Quote strings that have special characters
+				# unless they are entirely octals or digits.
+				or (    $bki_value =~ /\W/
+					and $bki_value !~ /^\\\d{3}$/
+					and $bki_value !~ /^-\d*$/)
+
+				# XXX Not needed, but keeps the .bki diff down to a
+				# reasonable size during review.
+				or $attname eq 'oprname'      # Operator names
+				or $atttype eq 'oidvector'    # Multi-element types
+				or $atttype eq 'int2vector'
+				or $atttype =~ /\[\]$/ );
+
+		push @bki_values, $bki_value;
+	}
+	printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values);
 }
 
 # Given a row reference, modify it so that it becomes a valid entry for
@@ -512,8 +574,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 4ae86df..5faaadc 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.dat
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 # Collect arguments
-my $infile;    # pg_proc.h
+my @input_files;
 my $output_path = '';
 my @include_path;
 
@@ -29,7 +29,7 @@ while (@ARGV)
 	my $arg = shift @ARGV;
 	if ($arg !~ /^-/)
 	{
-		$infile = $arg;
+		push @input_files, $arg;
 	}
 	elsif ($arg =~ /^-o/)
 	{
@@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !$infile;
+die "No input files.\n"                                     if !@input_files;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# Read all the input files into internal data structures.
+# Note: We pass data file names as arguments and then look for matching
+# headers to parse the schema from. This is backwards from genbki.pl,
+# but the Makefile dependencies look more sensible this way.
+my %catalogs;
+my %catalog_data;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	$catalogs{$catname} = $catalog;
+	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+}
+
+# Fetch some values for later.
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
-
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
-foreach my $row (@$data)
+foreach my $row (@{ $catalog_data{pg_proc} })
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile,    $tmpext);
 sub usage
 {
 	die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..f71cdc5 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,8 +24,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 36e9fd7..9263f5a 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -458,8 +458,11 @@ EOF
 	$mf =~ s{\\\r?\n}{}g;
 	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @allbki = split /\s+/, $1;
-	foreach my $bki (@allbki)
+	my @bki_srcs = split /\s+/, $1;
+	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
+	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
+	my @bki_data = split /\s+/, $1;
+	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
 		if (IsNewer(
@@ -468,7 +471,7 @@ EOF
 		{
 			print "Generating postgres.bki and schemapg.h...\n";
 			chdir('src/backend/catalog');
-			my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
+			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
 			system(
 "perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
 			);
-- 
2.7.4

v9-0004-Clean-up-header-files-and-update-comments.patchtext/x-patch; charset=US-ASCII; name=v9-0004-Clean-up-header-files-and-update-comments.patchDownload
From cdea6681d3c61e4719135be54e4cc0506c82cdd9 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:41:03 +0700
Subject: [PATCH] Clean up header files and update comments

---
 src/include/catalog/genbki.h                  |   8 +-
 src/include/catalog/indexing.h                |   2 +-
 src/include/catalog/pg_aggregate.h            |  53 +--
 src/include/catalog/pg_am.h                   |  13 +-
 src/include/catalog/pg_amop.h                 | 372 +----------------
 src/include/catalog/pg_amproc.h               |  61 +--
 src/include/catalog/pg_attrdef.h              |   5 +-
 src/include/catalog/pg_attribute.h            |  19 +-
 src/include/catalog/pg_auth_members.h         |   6 +-
 src/include/catalog/pg_authid.h               |  15 +-
 src/include/catalog/pg_cast.h                 |  97 +----
 src/include/catalog/pg_class.h                |  19 +-
 src/include/catalog/pg_collation.h            |  11 +-
 src/include/catalog/pg_constraint.h           |  13 +-
 src/include/catalog/pg_conversion.h           |  10 +-
 src/include/catalog/pg_database.h             |   5 +-
 src/include/catalog/pg_db_role_setting.h      |  12 +-
 src/include/catalog/pg_default_acl.h          |   9 +-
 src/include/catalog/pg_depend.h               |  30 +-
 src/include/catalog/pg_description.h          |  22 +-
 src/include/catalog/pg_enum.h                 |  13 +-
 src/include/catalog/pg_event_trigger.h        |   5 +-
 src/include/catalog/pg_extension.h            |  10 +-
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +-
 src/include/catalog/pg_foreign_server.h       |   4 +-
 src/include/catalog/pg_foreign_table.h        |   4 +-
 src/include/catalog/pg_index.h                |   5 +-
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  26 +-
 src/include/catalog/pg_language.h             |  10 +-
 src/include/catalog/pg_largeobject.h          |   3 -
 src/include/catalog/pg_largeobject_metadata.h |   5 +-
 src/include/catalog/pg_namespace.h            |  12 +-
 src/include/catalog/pg_opclass.h              |  27 +-
 src/include/catalog/pg_operator.h             | 161 +-------
 src/include/catalog/pg_opfamily.h             |  11 +-
 src/include/catalog/pg_partitioned_table.h    |   5 +-
 src/include/catalog/pg_pltemplate.h           |  12 +-
 src/include/catalog/pg_proc.h                 | 556 +-------------------------
 src/include/catalog/pg_publication.h          |   4 +-
 src/include/catalog/pg_publication_rel.h      |   4 +-
 src/include/catalog/pg_range.h                |  15 +-
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |   5 +-
 src/include/catalog/pg_shdepend.h             |  24 +-
 src/include/catalog/pg_shdescription.h        |  22 +-
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   5 +-
 src/include/catalog/pg_tablespace.h           |   5 +-
 src/include/catalog/pg_transform.h            |   4 +-
 src/include/catalog/pg_trigger.h              |   5 +-
 src/include/catalog/pg_ts_config.h            |  12 +-
 src/include/catalog/pg_ts_config_map.h        |  13 +-
 src/include/catalog/pg_ts_dict.h              |  13 +-
 src/include/catalog/pg_ts_parser.h            |  13 +-
 src/include/catalog/pg_ts_template.h          |  13 +-
 src/include/catalog/pg_type.h                 | 116 +-----
 src/include/catalog/pg_user_mapping.h         |   4 +-
 src/include/catalog/toasting.h                |   2 +-
 59 files changed, 153 insertions(+), 1806 deletions(-)

diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 96ac402..9b769c2 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -3,7 +3,7 @@
  * genbki.h
  *	  Required include file for all POSTGRES catalog header files
  *
- * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
+ * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
  * so that the catalog header files can be read by the C compiler.
  * (These same words are recognized by genbki.pl to build the BKI
  * bootstrap file from these header files.)
@@ -44,10 +44,4 @@
  */
 #undef CATALOG_VARLEN
 
-/* Declarations that provide the initial content of a catalog */
-/* In C, these need to expand into some harmless, repeatable declaration */
-#define DATA(x)   extern int no_such_variable
-#define DESCR(x)  extern int no_such_variable
-#define SHDESCR(x) extern int no_such_variable
-
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 0bb8754..fb9dd23 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -43,7 +43,7 @@ extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
 /*
  * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
 #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 0291032..4f9edf9 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -2,7 +2,6 @@
  *
  * pg_aggregate.h
  *	  definition of the system "aggregate" relation (pg_aggregate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_aggregate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -144,52 +143,4 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
-
-/* ----------------
- * initial contents of pg_aggregate
- * ---------------
- */
-
-/* avg */
-
-/* sum */
-
-/* max */
-
-/* min */
-
-/* count */
-
-/* var_pop */
-
-/* var_samp */
-
-/* variance: historical Postgres syntax for var_samp */
-
-/* stddev_pop */
-
-/* stddev_samp */
-
-/* stddev: historical Postgres syntax for stddev_samp */
-
-/* SQL2003 binary regression aggregates */
-
-/* boolean-and and boolean-or */
-
-/* bitwise integer */
-
-/* xml */
-
-/* array */
-
-/* text */
-
-/* bytea */
-
-/* json */
-
-/* jsonb */
-
-/* ordered-set and hypothetical-set aggregates */
-
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index b85c653..fe59a29 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -2,7 +2,6 @@
  *
  * pg_am.h
  *	  definition of the system "access method" relation (pg_am)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_am.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,11 +56,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-/* ----------------
- *		initial contents of pg_am
- * ----------------
- */
-
 #define BTREE_AM_OID 403
 #define HASH_AM_OID 405
 #define GIST_AM_OID 783
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 4038d17..e978c32 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -2,7 +2,6 @@
  *
  * pg_amop.h
  *	  definition of the system "amop" relation (pg_amop)
- *	  along with the relation's initial contents.
  *
  * The amop table identifies the operators associated with each index operator
  * family and operator class (classes are subsets of families).  An associated
@@ -36,8 +35,8 @@
  * src/include/catalog/pg_amop.h
  *
  * NOTES
- *	 the genbki.pl script reads this file and generates .bki
- *	 information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -90,371 +89,4 @@ typedef FormData_pg_amop *Form_pg_amop;
 #define Anum_pg_amop_amopmethod			7
 #define Anum_pg_amop_amopsortfamily		8
 
-/* ----------------
- *		initial contents of pg_amop
- * ----------------
- */
-
-/*
- *	btree integer_ops
- */
-
-/* default operators int2 */
-/* crosstype operators int24 */
-/* crosstype operators int28 */
-/* default operators int4 */
-/* crosstype operators int42 */
-/* crosstype operators int48 */
-/* default operators int8 */
-/* crosstype operators int82 */
-/* crosstype operators int84 */
-
-/*
- *	btree oid_ops
- */
-
-
-/*
- * btree tid_ops
- */
-
-
-/*
- *	btree oidvector_ops
- */
-
-
-/*
- *	btree float_ops
- */
-
-/* default operators float4 */
-/* crosstype operators float48 */
-/* default operators float8 */
-/* crosstype operators float84 */
-
-/*
- *	btree char_ops
- */
-
-
-/*
- *	btree name_ops
- */
-
-
-/*
- *	btree text_ops
- */
-
-
-/*
- *	btree bpchar_ops
- */
-
-
-/*
- *	btree bytea_ops
- */
-
-
-/*
- *	btree abstime_ops
- */
-
-
-/*
- *	btree datetime_ops
- */
-
-/* default operators date */
-/* crosstype operators vs timestamp */
-/* crosstype operators vs timestamptz */
-/* default operators timestamp */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamptz */
-/* default operators timestamptz */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamp */
-
-/*
- *	btree time_ops
- */
-
-
-/*
- *	btree timetz_ops
- */
-
-
-/*
- *	btree interval_ops
- */
-
-
-/*
- *	btree macaddr
- */
-
-
-/*
- *	btree macaddr8
- */
-
-
-/*
- *	btree network
- */
-
-
-/*
- *	btree numeric
- */
-
-
-/*
- *	btree bool
- */
-
-
-/*
- *	btree bit
- */
-
-
-/*
- *	btree varbit
- */
-
-
-/*
- *	btree text pattern
- */
-
-
-/*
- *	btree bpchar pattern
- */
-
-
-/*
- *	btree money_ops
- */
-
-
-/*
- *	btree reltime_ops
- */
-
-
-/*
- *	btree tinterval_ops
- */
-
-
-/*
- *	btree array_ops
- */
-
-
-/*
- *	btree record_ops
- */
-
-
-/*
- *	btree record_image_ops
- */
-
-
-/*
- * btree uuid_ops
- */
-
-
-/*
- * btree pg_lsn_ops
- */
-
-
-/*
- *	hash index _ops
- */
-
-/* bpchar_ops */
-/* char_ops */
-/* date_ops */
-/* float_ops */
-/* network_ops */
-/* integer_ops */
-/* interval_ops */
-/* macaddr_ops */
-/* macaddr8_ops */
-/* name_ops */
-/* oid_ops */
-/* oidvector_ops */
-/* text_ops */
-/* time_ops */
-/* timestamptz_ops */
-/* timetz_ops */
-/* timestamp_ops */
-/* bool_ops */
-/* bytea_ops */
-/* xid_ops */
-/* cid_ops */
-/* abstime_ops */
-/* reltime_ops */
-/* text_pattern_ops */
-/* bpchar_pattern_ops */
-/* aclitem_ops */
-/* uuid_ops */
-/* pg_lsn_ops */
-/* numeric_ops */
-/* array_ops */
-
-
-/*
- *	gist box_ops
- */
-
-
-/*
- * gist point_ops
- */
-
-
-/*
- *	gist poly_ops (supports polygons)
- */
-
-
-/*
- *	gist circle_ops
- */
-
-
-/*
- * gin array_ops
- */
-
-/*
- * btree enum_ops
- */
-
-/*
- * hash enum_ops
- */
-
-/*
- * btree tsvector_ops
- */
-
-/*
- * GiST tsvector_ops
- */
-
-/*
- * GIN tsvector_ops
- */
-
-/*
- * btree tsquery_ops
- */
-
-/*
- * GiST tsquery_ops
- */
-
-/*
- * btree range_ops
- */
-
-/*
- * hash range_ops
- */
-
-/*
- * GiST range_ops
- */
-
-/*
- * SP-GiST quad_point_ops
- */
-
-/*
- * SP-GiST kd_point_ops
- */
-
-/*
- * SP-GiST text_ops
- */
-
-/*
- * btree jsonb_ops
- */
-
-/*
- * hash jsonb_ops
- */
-
-/*
- * GIN jsonb_ops
- */
-
-/*
- * GIN jsonb_path_ops
- */
-
-/*
- * SP-GiST range_ops
- */
-
-/*
- * SP-GiST box_ops
- */
-
-/*
- * SP-GiST poly_ops (supports polygons)
- */
-
-/*
- * GiST inet_ops
- */
-
-/*
- * SP-GiST inet_ops
- */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer */
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float (float4, float8) */
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-/* we could, but choose not to, supply entries for strategies 13 and 14 */
-
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 15edd86..83ce03b 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -2,7 +2,6 @@
  *
  * pg_amproc.h
  *	  definition of the system "amproc" relation (pg_amproc)
- *	  along with the relation's initial contents.
  *
  * The amproc table identifies support procedures associated with index
  * operator families and classes.  These procedures can't be listed in pg_amop
@@ -25,8 +24,8 @@
  * src/include/catalog/pg_amproc.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,60 +68,4 @@ typedef FormData_pg_amproc *Form_pg_amproc;
 #define Anum_pg_amproc_amprocnum		4
 #define Anum_pg_amproc_amproc			5
 
-/* ----------------
- *		initial contents of pg_amproc
- * ----------------
- */
-
-/* btree */
-
-
-/* hash */
-
-
-/* gist */
-
-
-/* gin */
-
-/* sp-gist */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer: int2, int4, int8 */
-
-
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float */
-
-
-
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 8a8b8ca..3aab48d 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -2,7 +2,6 @@
  *
  * pg_attrdef.h
  *	  definition of the system "attribute defaults" relation (pg_attrdef)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_attrdef.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 8159383..3c78871 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -2,7 +2,10 @@
  *
  * pg_attribute.h
  *	  definition of the system "attribute" relation (pg_attribute)
- *	  along with the relation's initial contents.
+ *
+ * The initial contents of pg_attribute are generated at compile time by
+ * genbki.pl, so there is no pg_attribute.dat file.  Only "bootstrapped"
+ * relations need be included.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +14,8 @@
  * src/include/catalog/pg_attribute.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -215,16 +218,6 @@ typedef FormData_pg_attribute *Form_pg_attribute;
 #define Anum_pg_attribute_attoptions	21
 #define Anum_pg_attribute_attfdwoptions 22
 
-
-/* ----------------
- *		initial contents of pg_attribute
- *
- * The initial contents of pg_attribute are generated at compile time by
- * genbki.pl.  Only "bootstrapped" relations need be included.
- * ----------------
- */
-
-
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index ae3c14a..a702dff 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -2,7 +2,7 @@
  *
  * pg_auth_members.h
  *	  definition of the system "authorization identifier members" relation
- *	  (pg_auth_members) along with the relation's initial contents.
+ *	  (pg_auth_members).
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +11,8 @@
  * src/include/catalog/pg_auth_members.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b5f6602..b101e30 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -2,7 +2,6 @@
  *
  * pg_authid.h
  *	  definition of the system "authorization identifier" relation (pg_authid)
- *	  along with the relation's initial contents.
  *
  *	  pg_shadow and pg_group are now publicly accessible views on pg_authid.
  *
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_authid.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -88,16 +87,6 @@ typedef FormData_pg_authid *Form_pg_authid;
 #define Anum_pg_authid_rolpassword		10
 #define Anum_pg_authid_rolvaliduntil	11
 
-/* ----------------
- *		initial contents of pg_authid
- *
- * The uppercase quantities will be replaced at initdb time with
- * user choices.
- *
- * The C code typically refers to these roles using the #define symbols,
- * so be sure to keep those in sync with the DATA lines.
- * ----------------
- */
 #define BOOTSTRAP_SUPERUSERID			10
 #define DEFAULT_ROLE_MONITOR		3373
 #define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 597079c..1930d4b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -2,7 +2,6 @@
  *
  * pg_cast.h
  *	  definition of the system "type casts" relation (pg_cast)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 8.0, pg_cast describes not only type coercion functions
  * but also length coercion functions.
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_cast.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,96 +80,4 @@ typedef enum CoercionMethod
 #define Anum_pg_cast_castcontext	4
 #define Anum_pg_cast_castmethod		5
 
-/* ----------------
- *		initial contents of pg_cast
- *
- * Note: this table has OIDs, but we don't bother to assign them manually,
- * since nothing needs to know the specific OID of any built-in cast.
- * ----------------
- */
-
-/*
- * Numeric category: implicit casts are allowed in the direction
- * int2->int4->int8->numeric->float4->float8, while casts in the
- * reverse direction are assignment-only.
- */
-
-/* Allow explicit coercions between int4 and bool */
-
-/*
- * OID category: allow implicit conversion from any integral type (including
- * int8, to support OID literals > 2G) to OID, as well as assignment coercion
- * from OID to int4 or int8.  Similarly for each OID-alias type.  Also allow
- * implicit coercions between OID and each OID-alias type, as well as
- * regproc<->regprocedure and regoper<->regoperator.  (Other coercions
- * between alias types must pass through OID.)	Lastly, there are implicit
- * casts from text and varchar to regclass, which exist mainly to support
- * legacy forms of nextval() and related functions.
- */
-
-/*
- * String category
- */
-
-/* Allow explicit coercions between int4 and "char" */
-
-/* pg_node_tree can be coerced to, but not from, text */
-
-/* pg_ndistinct can be coerced to, but not from, bytea and text */
-
-/* pg_dependencies can be coerced to, but not from, bytea and text */
-
-/*
- * Datetime category
- */
-/* Cross-category casts between int4 and abstime, reltime */
-
-/*
- * Geometric category
- */
-
-/*
- * MAC address category
- */
-
-/*
- * INET category
- */
-
-/*
- * BitString category
- */
-/* Cross-category casts between bit and int4, int8 */
-
-/*
- * Cross-category casts to and from TEXT
- *
- * We need entries here only for a few specialized cases where the behavior
- * of the cast function differs from the datatype's I/O functions.  Otherwise,
- * parse_coerce.c will generate CoerceViaIO operations without any prompting.
- *
- * Note that the castcontext values specified here should be no stronger than
- * parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
- * behavior will ensue when the automatic cast is applied instead of the
- * pg_cast entry!
- */
-
-/*
- * Cross-category casts to and from VARCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Cross-category casts to and from BPCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Length-coercion functions
- */
-
-/* json to/from jsonb */
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 99bda41..7bc09bb 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -2,7 +2,6 @@
  *
  * pg_class.h
  *	  definition of the system "relation" relation (pg_class)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_class.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -134,20 +133,6 @@ typedef FormData_pg_class *Form_pg_class;
 #define Anum_pg_class_reloptions			32
 #define Anum_pg_class_relpartbound			33
 
-/* ----------------
- *		initial contents of pg_class
- *
- * NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
- * the OIDs listed here match those given in their CATALOG macros, and that
- * the relnatts values are correct.
- * ----------------
- */
-
-/*
- * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
- * similarly, "1" in relminmxid stands for FirstMultiXactId
- */
-
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index beef6b5..50cbe1e 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -2,7 +2,6 @@
  *
  * pg_collation.h
  *	  definition of the system "collation" relation (pg_collation)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -12,8 +11,8 @@
  *		src/include/catalog/pg_collation.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,16 +64,10 @@ typedef FormData_pg_collation *Form_pg_collation;
 #define Anum_pg_collation_collctype		7
 #define Anum_pg_collation_collversion	8
 
-/* ----------------
- *		initial contents of pg_collation
- * ----------------
- */
-
 #define DEFAULT_COLLATION_OID	100
 #define C_COLLATION_OID			950
 #define POSIX_COLLATION_OID		951
 
-
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 8fca86d..41d97d4 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -2,7 +2,6 @@
  *
  * pg_constraint.h
  *	  definition of the system "constraint" relation (pg_constraint)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_constraint.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -176,14 +175,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
 #define Anum_pg_constraint_conbin			23
 #define Anum_pg_constraint_consrc			24
 
-/* ----------------
- *		initial contents of pg_constraint
- * ----------------
- */
-
-/* nothing, at present */
-
-
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
 #define CONSTRAINT_FOREIGN			'f'
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 29f3c9d..88098fa 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -2,7 +2,6 @@
  *
  * pg_conversion.h
  *	  definition of the system "conversion" relation (pg_conversion)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_conversion.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,9 +68,4 @@ typedef FormData_pg_conversion *Form_pg_conversion;
 #define Anum_pg_conversion_conproc		6
 #define Anum_pg_conversion_condefault	7
 
-/* ----------------
- * initial contents of pg_conversion
- * ---------------
- */
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index bbf131a..b7972fa 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -2,7 +2,6 @@
  *
  * pg_database.h
  *	  definition of the system "database" relation (pg_database)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_database.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 86cc17d..09546bd 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_db_role_setting.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +50,6 @@ typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 #define Anum_pg_db_role_setting_setrole			2
 #define Anum_pg_db_role_setting_setconfig		3
 
-/* ----------------
- *		initial contents of pg_db_role_setting are NOTHING
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 11b3060..7778276 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -10,8 +10,8 @@
  * src/include/catalog/pg_default_acl.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,11 +56,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define Anum_pg_default_acl_defaclobjtype		3
 #define Anum_pg_default_acl_defaclacl			4
 
-/* ----------------
- *		pg_default_acl has no initial contents
- * ----------------
- */
-
 /*
  * Types of objects for which the user is allowed to specify default
  * permissions through pg_default_acl.  These codes are used in the
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index be3867b..7c60e63 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -2,7 +2,18 @@
  *
  * pg_depend.h
  *	  definition of the system "dependency" relation (pg_depend)
- *	  along with the relation's initial contents.
+ *
+ * pg_depend has no preloaded contents, so there is no pg_depend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_depend;
+ * for example, there's not much value in creating an explicit dependency
+ * from an attribute to its relation.  Usually we make a dependency for
+ * cases where the relationship is conditional rather than essential
+ * (for example, not all triggers are dependent on constraints, but all
+ * attributes are dependent on relations) or where the dependency is not
+ * convenient to find from the contents of other catalogs.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +22,8 @@
  * src/include/catalog/pg_depend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -74,17 +85,4 @@ typedef FormData_pg_depend *Form_pg_depend;
 #define Anum_pg_depend_deptype		7
 
 
-/*
- * pg_depend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_depend;
- * for example, there's not much value in creating an explicit dependency
- * from an attribute to its relation.  Usually we make a dependency for
- * cases where the relationship is conditional rather than essential
- * (for example, not all triggers are dependent on constraints, but all
- * attributes are dependent on relations) or where the dependency is not
- * convenient to find from the contents of other catalogs.
- */
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index d291000..71eed4e 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -3,6 +3,10 @@
  * pg_description.h
  *	  definition of the system "description" relation (pg_description)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_description.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a function is identified by the OID of its pg_proc row
@@ -25,11 +29,8 @@
  * src/include/catalog/pg_description.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -73,15 +74,4 @@ typedef FormData_pg_description * Form_pg_description;
 #define Anum_pg_description_objsubid	3
 #define Anum_pg_description_description 4
 
-/* ----------------
- *		initial contents of pg_description
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index a65a8f4..3327688 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -2,7 +2,6 @@
  *
  * pg_enum.h
  *	  definition of the system "enum" relation (pg_enum)
- *	  along with the relation's initial contents.
  *
  *
  * Copyright (c) 2006-2018, PostgreSQL Global Development Group
@@ -10,11 +9,8 @@
  * src/include/catalog/pg_enum.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -54,11 +50,6 @@ typedef FormData_pg_enum *Form_pg_enum;
 #define Anum_pg_enum_enumsortorder		2
 #define Anum_pg_enum_enumlabel			3
 
-/* ----------------
- *		pg_enum has no initial contents
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index e03c819..20e7e38 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_event_trigger.h
  *	  definition of the system "event trigger" relation (pg_event_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_event_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index 9ca6ca7..c2d528f 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -2,7 +2,6 @@
  *
  * pg_extension.h
  *	  definition of the system "extension" relation (pg_extension)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_extension.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,9 +63,4 @@ typedef FormData_pg_extension *Form_pg_extension;
 #define Anum_pg_extension_extconfig			6
 #define Anum_pg_extension_extcondition		7
 
-/* ----------------
- *		pg_extension has no initial contents
- * ----------------
- */
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index dd00586..6cf321d 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -2,7 +2,6 @@
  *
  * pg_foreign_data_wrapper.h
  *	  definition of the system "foreign-data wrapper" relation (pg_foreign_data_wrapper)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_foreign_data_wrapper.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index a8c9e87..f909b26 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_server.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 210e77b..9bee001 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 057a9f7..ef0dea6 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -2,7 +2,6 @@
  *
  * pg_index.h
  *	  definition of the system "index" relation (pg_index)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_index.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3c572f4..3af1647 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -2,7 +2,6 @@
  *
  * pg_inherits.h
  *	  definition of the system "inherits" relation (pg_inherits)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_inherits.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -51,9 +50,4 @@ typedef FormData_pg_inherits *Form_pg_inherits;
 #define Anum_pg_inherits_inhparent		2
 #define Anum_pg_inherits_inhseqno		3
 
-/* ----------------
- *		pg_inherits has no initial contents
- * ----------------
- */
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 65f02c2..51adc7a 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -15,17 +15,20 @@
  * for a table itself, so that it is distinct from any column privilege.
  * Currently, objsubid is unused and zero for all other kinds of objects.
  *
+ * Because the contents of this table depend on what is done with the other
+ * objects in the system (and, in particular, may change due to changes in
+ * system_views.sql), there is no pg_init_privs.dat file. The initial contents
+ * are loaded near the end of initdb.
+ *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_init_privs.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -84,17 +87,4 @@ typedef enum InitPrivsType
 	INITPRIVS_EXTENSION = 'e'
 } InitPrivsType;
 
-/* ----------------
- *		initial contents of pg_init_privs
- * ----------------
- */
-
-/*
- *	Because the contents of this table depend on what is done with the other
- *	objects in the system (and, in particular, may change due to changes is
- *	system_views.sql), there is no initialization here.
- *
- *	The initial contents are loaded near the end of initdb.
- */
-
 #endif							/* PG_INIT_PRIVS_H */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 614ca67..5f82158 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -2,7 +2,6 @@
  *
  * pg_language.h
  *	  definition of the system "language" relation (pg_language)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_language.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,11 +63,6 @@ typedef FormData_pg_language *Form_pg_language;
 #define Anum_pg_language_lanvalidator	7
 #define Anum_pg_language_lanacl			8
 
-/* ----------------
- *		initial contents of pg_language
- * ----------------
- */
-
 #define INTERNALlanguageId 12
 #define ClanguageId 13
 #define SQLlanguageId 14
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 0a15649..1857ca4 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject.h
  *	  definition of the system "largeobject" relation (pg_largeobject)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,6 @@
  * src/include/catalog/pg_largeobject.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 4535b51..0cf7bcd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject_metadata.h
  *	  definition of the system "largeobject_metadata" relation (pg_largeobject_metadata)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_largeobject_metadata.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 5b6f9eb..19b559f9 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -2,7 +2,6 @@
  *
  * pg_namespace.h
  *	  definition of the system "namespace" relation (pg_namespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_namespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,17 +59,10 @@ typedef FormData_pg_namespace *Form_pg_namespace;
 #define Anum_pg_namespace_nspowner		2
 #define Anum_pg_namespace_nspacl		3
 
-
-/* ----------------
- * initial contents of pg_namespace
- * ---------------
- */
-
 #define PG_CATALOG_NAMESPACE 11
 #define PG_TOAST_NAMESPACE 99
 #define PG_PUBLIC_NAMESPACE 2200
 
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 5cff871..b10ceb9 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -2,7 +2,6 @@
  *
  * pg_opclass.h
  *	  definition of the system "opclass" relation (pg_opclass)
- *	  along with the relation's initial contents.
  *
  * The primary key for this table is <opcmethod, opcname, opcnamespace> ---
  * that is, there is a row for each valid combination of opclass name and
@@ -31,8 +30,8 @@
  * src/include/catalog/pg_opclass.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,37 +80,15 @@ typedef FormData_pg_opclass *Form_pg_opclass;
 #define Anum_pg_opclass_opcdefault		7
 #define Anum_pg_opclass_opckeytype		8
 
-/* ----------------
- *		initial contents of pg_opclass
- *
- * Note: we hard-wire an OID only for a few entries that have to be explicitly
- * referenced in the C code or in built-in catalog entries.  The rest get OIDs
- * assigned on-the-fly during initdb.
- * ----------------
- */
-
 #define DATE_BTREE_OPS_OID 3122
 #define FLOAT8_BTREE_OPS_OID 3123
 #define INT2_BTREE_OPS_OID 1979
 #define INT4_BTREE_OPS_OID 1978
 #define INT8_BTREE_OPS_OID 3124
-/*
- * Here's an ugly little hack to save space in the system catalog indexes.
- * btree doesn't ordinarily allow a storage type different from input type;
- * but cstring and name are the same thing except for trailing padding,
- * and we can safely omit that within an index entry.  So we declare the
- * btree opclass for name as using cstring storage type.
- */
 #define NUMERIC_BTREE_OPS_OID 3125
 #define OID_BTREE_OPS_OID 1981
 #define TEXT_BTREE_OPS_OID 3126
 #define TIMESTAMPTZ_BTREE_OPS_OID 3127
 #define TIMESTAMP_BTREE_OPS_OID 3128
 
-/* BRIN operator classes */
-/* no brin opclass for bool */
-/* no brin opclass for record, anyarray */
-/* no brin opclass for enum, tsvector, tsquery, jsonb */
-/* no brin opclass for the geometric types except box */
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index d9f303b..cbe6884 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -2,7 +2,6 @@
  *
  * pg_operator.h
  *	  definition of the system "operator" relation (pg_operator)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_operator.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,195 +73,42 @@ typedef FormData_pg_operator *Form_pg_operator;
 #define Anum_pg_operator_oprrest		13
 #define Anum_pg_operator_oprjoin		14
 
-/* ----------------
- *		initial contents of pg_operator
- * ----------------
- */
-
-/*
- * Note: every entry in pg_operator.h is expected to have a DESCR() comment.
- * If the operator is a deprecated equivalent of some other entry, be sure
- * to comment it as such so that initdb doesn't think it's a preferred name
- * for the underlying function.
- */
-
-
 #define BooleanNotEqualOperator   85
 #define BooleanEqualOperator   91
-
 #define Int4EqualOperator	96
 #define Int4LessOperator	97
 #define TextEqualOperator	98
-
-
-
 #define TIDEqualOperator   387
 #define TIDLessOperator    2799
-
 #define Int8LessOperator	412
-
-
-
-
-
-
-
-
 #define OID_NAME_REGEXEQ_OP		639
 #define OID_TEXT_REGEXEQ_OP		641
-
-
 #define Float8LessOperator	672
-
-
-
-
-
-
-/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-
-
-/* additional operators for geometric types - thomas 1997-07-09 */
-
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
 #define OID_BPCHAR_REGEXEQ_OP		1055
-
-/* generic array comparison operators */
 #define ARRAY_EQ_OP 1070
 #define ARRAY_LT_OP 1072
 #define ARRAY_GT_OP 1073
-
-/* date operators */
-
-/* time operators */
-
-/* timetz operators */
-
-/* float48 operators */
-
-/* float84 operators */
-
-
-/* LIKE hacks by Keith Parks. */
 #define OID_NAME_LIKE_OP		1207
 #define OID_TEXT_LIKE_OP		1209
 #define OID_BPCHAR_LIKE_OP		1211
-
-/* case-insensitive regex hacks */
 #define OID_NAME_ICREGEXEQ_OP		1226
 #define OID_TEXT_ICREGEXEQ_OP		1228
 #define OID_BPCHAR_ICREGEXEQ_OP		1234
-
-/* timestamptz operators */
-
-/* interval operators */
-
-
-
-
-/* additional geometric operators - thomas 97/04/18 */
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
-
-
-
-
-
-
-/* MACADDR type */
-
-
-/* MACADDR8 type */
-
-
-/* INET type (these also support CIDR via implicit cast) */
 #define OID_INET_SUB_OP			931
 #define OID_INET_SUBEQ_OP		932
 #define OID_INET_SUP_OP			933
 #define OID_INET_SUPEQ_OP		934
 #define OID_INET_OVERLAP_OP		3552
-
-
-/* case-insensitive LIKE hacks */
 #define OID_NAME_ICLIKE_OP		1625
 #define OID_TEXT_ICLIKE_OP		1627
 #define OID_BPCHAR_ICLIKE_OP	1629
-
-/* NUMERIC type - OID's 1700-1799 */
-
-
-
-
-
-
-
-
-
-
-
-/* bytea operators */
-
 #define OID_BYTEA_LIKE_OP		2016
-
-/* timestamp operators */
-
-/* character-by-character (not collation order) comparison operators for character types */
-
-
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* formerly-missing interval + datetime operators */
-
-/* new operators for Y-direction rtree opfamilies */
-
-/* overlap/contains/contained for arrays */
 #define OID_ARRAY_OVERLAP_OP	2750
 #define OID_ARRAY_CONTAINS_OP	2751
 #define OID_ARRAY_CONTAINED_OP	2752
-
-/* capturing operators to preserve pre-8.3 behavior of text concatenation */
-
-/* obsolete names for contains/contained-by operators; remove these someday */
-
-/* uuid operators */
-
-/* pg_lsn operators */
-
-/* enum operators */
-
-/*
- * tsearch operations
- */
-/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */
-
-/* generic record comparison operators */
 #define RECORD_EQ_OP 2988
 #define RECORD_LT_OP 2990
 #define RECORD_GT_OP 2991
-
-/* byte-oriented tests for identical rows and fast sorting */
-
-/* generic range type operators */
 #define OID_RANGE_LESS_OP 3884
 #define OID_RANGE_LESS_EQUAL_OP 3885
 #define OID_RANGE_GREATER_EQUAL_OP 3886
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 86f86e3..e9d8d3d 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -2,7 +2,6 @@
  *
  * pg_opfamily.h
  *	  definition of the system "opfamily" relation (pg_opfamily)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_opfamily.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +52,6 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define Anum_pg_opfamily_opfnamespace	3
 #define Anum_pg_opfamily_opfowner		4
 
-/* ----------------
- *		initial contents of pg_opfamily
- * ----------------
- */
-
 #define BOOL_BTREE_FAM_OID 424
 #define BPCHAR_BTREE_FAM_OID 426
 #define BYTEA_BTREE_FAM_OID 428
@@ -71,5 +65,4 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define BOOL_HASH_FAM_OID 2222
 #define TEXT_SPGIST_FAM_OID 4017
 
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 9dc66f4..a8bda00 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -2,7 +2,6 @@
  *
  * pg_partitioned_table.h
  *	  definition of the system "partitioned table" relation
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -10,8 +9,8 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 8995fe9..b1d9ece 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -2,7 +2,6 @@
  *
  * pg_pltemplate.h
  *	  definition of the system "PL template" relation (pg_pltemplate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_pltemplate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,11 +64,4 @@ typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 #define Anum_pg_pltemplate_tmpllibrary		7
 #define Anum_pg_pltemplate_tmplacl			8
 
-
-/* ----------------
- *		initial contents of pg_pltemplate
- * ----------------
- */
-
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index cd2f52c..f05eb32 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -2,7 +2,6 @@
  *
  * pg_proc.h
  *	  definition of the system "procedure" relation (pg_proc)
- *	  along with the relation's initial contents.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -10,13 +9,8 @@
  * src/include/catalog/pg_proc.h
  *
  * NOTES
- *	  The script catalog/genbki.pl reads this file and generates .bki
- *	  information from the DATA() statements.  utils/Gen_fmgrtab.pl
- *	  generates fmgroids.h and fmgrtab.c the same way.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
- *	  XXX (eg. #if 0 #endif won't do what you think)
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -115,552 +109,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define Anum_pg_proc_proconfig			27
 #define Anum_pg_proc_proacl				28
 
-/* ----------------
- *		initial contents of pg_proc
- * ----------------
- */
-
-/*
- * Note: every entry in pg_proc.h is expected to have a DESCR() comment,
- * except for functions that implement pg_operator.h operators and don't
- * have a good reason to be called directly rather than via the operator.
- * (If you do expect such a function to be used directly, you should
- * duplicate the operator's comment.)  initdb will supply suitable default
- * comments for functions referenced by pg_operator.
- *
- * Try to follow the style of existing functions' comments.
- * Some recommended conventions:
- *		"I/O" for typinput, typoutput, typreceive, typsend functions
- *		"I/O typmod" for typmodin, typmodout functions
- *		"aggregate transition function" for aggtransfn functions, unless
- *					they are reasonably useful in their own right
- *		"aggregate final function" for aggfinalfn functions (likewise)
- *		"convert srctypename to desttypename" for cast functions
- *		"less-equal-greater" for B-tree comparison functions
- */
-
-/* keep the following ordered by OID so that later changes can be made easier */
-
-/* OIDS 1 - 99 */
-
-
-
-
-
-/* OIDS 100 - 199 */
-
-
-
-
-
-
-
-/* OIDS 200 - 299 */
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 300 - 399 */
-
-
-
-/* Index access method handlers */
-
-
-
-
-
-
-/* OIDS 400 - 499 */
-
-
-
-
-
-
-
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
-
-
-
-
-
-
-
-
-/* OIDS 700 - 799 */
-
-
-
-
-
-
-
-
-
-
-/* OIDS 800 - 899 */
-
-
-
-
-
-
-
-
-
-/* OIDS 900 - 999 */
-
-
-
-
-
-
-
-
-
-/* OIDS 1000 - 1999 */
-
-
-
-/* OIDS 1100 - 1199 */
-
-
-
-
-
-
-/* OIDS 1200 - 1299 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1300 - 1399 */
-
-
-
-
-
-
-
-
-
-/*
- * This form of obj_description is now deprecated, since it will fail if
- * OIDs are not unique across system catalogs.  Use the other form instead.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1400 - 1499 */
-
-
-
-
-
-
-
-
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - thomas 97/04/20
- */
-
-
-
-
-
-
-
-/* OIDS 1500 - 1599 */
-
-
-
-
-
-
-
-/* SEQUENCE functions */
-
-
-
-
-/* OIDS 1600 - 1699 */
-
-
-
-
-
-
-
-
-
-
-
-/* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
-
-
-/* for character set encoding support */
-
-/* return database encoding name */
-
-/* return client encoding name i.e. session encoding */
-
-
-
-
-
-
-
-
-
-/* System-view support functions */
-
-
-
-
-
-
-/* Deferrable unique constraint trigger */
-
-/* Generic referential integrity constraint triggers */
-
-
-/* avoid the C names bitand and bitor, since they are C++ keywords */
-
-
-
-
-/* for macaddr type support */
-
-
-
-/* for macaddr8 type support */
-
-
-
-/* for inet type support */
-
-/* for cidr type support */
-
-/* these are used for both inet and cidr */
-
-/* inet/cidr functions */
-
-
-
-/* GiST support for inet and cidr */
-
-/* SP-GiST support for inet and cidr */
-
-/* Selectivity estimation for inet and cidr */
-
-
-
-
-
-/* OID's 1700 - 1799 NUMERIC data type */
-
-
-
-/* formatting */
-
-
-
-
-
-/* Selectivity estimators for LIKE and related operators */
-
-/* Aggregate-related functions */
-
-
-
-/* To ASCII conversion */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Aggregates (moved here from pg_aggregate for 7.3) */
-
-
-
-
-
-/* count has two forms: count(any) and count(*) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* tablesample method handlers */
-
-/* cryptographic */
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* send/receive functions */
-
-
-/* System-view support functions with pretty-print option */
-
-/* asynchronous notifications */
-
-/* non-persistent series generator */
-
-/* boolean aggregates */
-/* ANY, SOME? These names conflict with subquery operators. See doc. */
-
-/* bitwise integer aggregates */
-
-/* formerly-missing interval + datetime operators */
-
-
-
-/* start time function */
-/* config reload time function */
-
-/* new functions for Y-direction rtree opclasses */
-
-/* support functions for GiST r-tree emulation */
-
-/* GIN array support */
-
-/* overlap/contains/contained */
-
-/* BRIN minmax */
-
-/* BRIN inclusion */
-
-/* userlock replacements */
-
-/* XML support */
-
-
-
-
-
-
-
-/* json */
-
-
-/* uuid */
-
-/* pg_lsn */
-
-/* enum related procs */
-
-/* text search stuff */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* jsonb */
-
-
-/* txid */
-
-/* record comparison using normal comparison rules */
-
-/* record comparison using raw byte images */
-
-/* Extensions */
-
-/* SQL-spec window functions */
-
-/* functions for range types */
-
-
-
-/* date, time, timestamp constructors */
-
-/* spgist opclasses */
-
-
-
-
-
-
-/* replication slots */
-
-/* event triggers */
-
-/* generic transition functions for ordered-set aggregates */
-
-/* inverse distribution aggregates (and their support functions) */
-
-/* hypothetical-set aggregates (and their support functions) */
-
-/* pg_upgrade support */
-
-/* replication/origin.h */
-
-
-
-
-
-
-
-
-
-
-
-
-/* publications */
-
-/* rls */
-
-/* pg_config */
-
-/* pg_controldata related functions */
-
-
-
-
-/* collation management functions */
-
-
-/* system management/monitoring related functions */
-
-/* hash partitioning constraint function */
-
 /*
  * Symbolic values for prokind column
  */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 37e77b8..62772b6 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 033b600..661466f 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication_rel.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index bbd28f2..b7113bf 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -2,7 +2,6 @@
  *
  * pg_range.h
  *	  definition of the system "range" relation (pg_range)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_range.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,13 +56,6 @@ typedef FormData_pg_range *Form_pg_range;
 #define Anum_pg_range_rngcanonical		5
 #define Anum_pg_range_rngsubdiff		6
 
-
-/* ----------------
- *		initial contents of pg_range
- * ----------------
- */
-
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 9656179..0c5a05e 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_replication_origin.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -62,9 +62,4 @@ typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 #define Anum_pg_replication_origin_roident			1
 #define Anum_pg_replication_origin_roname			2
 
-/* ----------------
- *		pg_replication_origin has no initial contents
- * ----------------
- */
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index 81f2b19..a310ecb 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -2,7 +2,6 @@
  *
  * pg_rewrite.h
  *	  definition of the system "rewrite-rule" relation (pg_rewrite)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 7.3, the primary key for this table is <ev_class, rulename>
  * --- ie, rule names are only unique among the rules of a given table.
@@ -14,8 +13,8 @@
  * src/include/catalog/pg_rewrite.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index ae40377..17ac34a 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -2,8 +2,16 @@
  *
  * pg_shdepend.h
  *	  definition of the system "shared dependency" relation (pg_shdepend)
- *	  along with the relation's initial contents.
  *
+ * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
+ * for example, there's not much value in creating an explicit dependency
+ * from a relation to its database.  Currently, only dependencies on roles
+ * are explicitly stored in pg_shdepend.
+
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -11,8 +19,8 @@
  * src/include/catalog/pg_shdepend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,14 +85,4 @@ typedef FormData_pg_shdepend *Form_pg_shdepend;
 #define Anum_pg_shdepend_deptype	7
 
 
-/*
- * pg_shdepend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
- * for example, there's not much value in creating an explicit dependency
- * from a relation to its database.  Currently, only dependencies on roles
- * are explicitly stored in pg_shdepend.
- */
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index d4ec616..c0ecc0c 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -4,6 +4,10 @@
  *	  definition of the system "shared description" relation
  *	  (pg_shdescription)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_shdescription.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a database is identified by the OID of its pg_database row
@@ -18,11 +22,8 @@
  * src/include/catalog/pg_shdescription.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,15 +65,4 @@ typedef FormData_pg_shdescription * Form_pg_shdescription;
 #define Anum_pg_shdescription_classoid	2
 #define Anum_pg_shdescription_description 3
 
-/* ----------------
- *		initial contents of pg_shdescription
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index a5c85fe..8ef2e55 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic.h
  *	  definition of the system "statistic" relation (pg_statistic)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 2f5ef78c..d656cd8 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic_ext.h
  *	  definition of the system "extended statistic" relation (pg_statistic_ext)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic_ext.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 6db2ee2..75a3a2e 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -2,7 +2,6 @@
  *
  * pg_tablespace.h
  *	  definition of the system "tablespace" relation (pg_tablespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_tablespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index d4fc464..21109db 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -7,8 +7,8 @@
  * src/include/catalog/pg_transform.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index c80a3aa..e307039 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_trigger.h
  *	  definition of the system "trigger" relation (pg_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 7667585..21e6c2c 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,9 +47,4 @@ typedef FormData_pg_ts_config *Form_pg_ts_config;
 #define Anum_pg_ts_config_cfgowner		3
 #define Anum_pg_ts_config_cfgparser		4
 
-/* ----------------
- *		initial contents of pg_ts_config
- * ----------------
- */
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 5d4820f..3b5e791 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config_map.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 #define Anum_pg_ts_config_map_mapseqno		3
 #define Anum_pg_ts_config_map_mapdict		4
 
-/* ----------------
- *		initial contents of pg_ts_config_map
- * ----------------
- */
-
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 175cbb3..74c80f0 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_dict.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -55,10 +52,4 @@ typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 #define Anum_pg_ts_dict_dicttemplate	4
 #define Anum_pg_ts_dict_dictinitoption	5
 
-/* ----------------
- *		initial contents of pg_ts_dict
- * ----------------
- */
-
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index de1943d..5b5edd0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_parser.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,10 +53,4 @@ typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 #define Anum_pg_ts_parser_prsheadline		6
 #define Anum_pg_ts_parser_prslextype		7
 
-/* ----------------
- *		initial contents of pg_ts_parser
- * ----------------
- */
-
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index d33145a..b641788 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_template.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_template *Form_pg_ts_template;
 #define Anum_pg_ts_template_tmplinit		3
 #define Anum_pg_ts_template_tmpllexize		4
 
-/* ----------------
- *		initial contents of pg_ts_template
- * ----------------
- */
-
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 07bedd3..6aa9185 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -2,7 +2,6 @@
  *
  * pg_type.h
  *	  definition of the system "type" relation (pg_type)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_type.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -268,106 +267,45 @@ typedef FormData_pg_type *Form_pg_type;
 #define Anum_pg_type_typdefault			29
 #define Anum_pg_type_typacl				30
 
-
-/* ----------------
- *		initial contents of pg_type
- * ----------------
- */
-
-/*
- * Keep the following ordered by OID so that later changes can be made more
- * easily.
- *
- * For types used in the system catalogs, make sure the values here match
- * TypInfo[] in bootstrap.c.
- */
-
-/* OIDS 1 - 99 */
 #define BOOLOID			16
-
 #define BYTEAOID		17
-
 #define CHAROID			18
-
 #define NAMEOID			19
-
 #define INT8OID			20
-
 #define INT2OID			21
-
 #define INT2VECTOROID	22
-
 #define INT4OID			23
-
 #define REGPROCOID		24
-
 #define TEXTOID			25
-
 #define OIDOID			26
-
 #define TIDOID		27
-
 #define XIDOID 28
-
 #define CIDOID 29
-
 #define OIDVECTOROID	30
-
-/* hand-built rowtype entries for bootstrapped catalogs */
-/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */
-
-
-/* OIDS 100 - 199 */
 #define JSONOID 114
 #define XMLOID 142
-
 #define PGNODETREEOID	194
-
 #define PGNDISTINCTOID	3361
-
 #define PGDEPENDENCIESOID	3402
-
 #define PGDDLCOMMANDOID 32
-
-/* OIDS 200 - 299 */
-
-
-/* OIDS 300 - 399 */
-
-/* OIDS 400 - 499 */
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
 #define POINTOID		600
 #define LSEGOID			601
 #define PATHOID			602
 #define BOXOID			603
 #define POLYGONOID		604
-
 #define LINEOID			628
-
-/* OIDS 700 - 799 */
-
 #define FLOAT4OID 700
 #define FLOAT8OID 701
 #define ABSTIMEOID		702
 #define RELTIMEOID		703
 #define TINTERVALOID	704
 #define UNKNOWNOID		705
-
 #define CIRCLEOID		718
 #define CASHOID 790
-
-/* OIDS 800 - 899 */
 #define MACADDROID 829
 #define INETOID 869
 #define CIDROID 650
 #define MACADDR8OID 774
-
-/* OIDS 900 - 999 */
-
-/* OIDS 1000 - 1099 */
 #define INT2ARRAYOID		1005
 #define INT4ARRAYOID		1007
 #define TEXTARRAYOID		1009
@@ -375,84 +313,35 @@ typedef FormData_pg_type *Form_pg_type;
 #define FLOAT4ARRAYOID 1021
 #define ACLITEMOID		1033
 #define CSTRINGARRAYOID		1263
-
 #define BPCHAROID		1042
 #define VARCHAROID		1043
-
 #define DATEOID			1082
 #define TIMEOID			1083
-
-/* OIDS 1100 - 1199 */
 #define TIMESTAMPOID	1114
 #define TIMESTAMPTZOID	1184
 #define INTERVALOID		1186
-
-/* OIDS 1200 - 1299 */
 #define TIMETZOID		1266
-
-/* OIDS 1500 - 1599 */
 #define BITOID	 1560
 #define VARBITOID	  1562
-
-/* OIDS 1600 - 1699 */
-
-/* OIDS 1700 - 1799 */
 #define NUMERICOID		1700
-
 #define REFCURSOROID	1790
-
-/* OIDS 2200 - 2299 */
-
 #define REGPROCEDUREOID 2202
-
 #define REGOPEROID		2203
-
 #define REGOPERATOROID	2204
-
 #define REGCLASSOID		2205
-
 #define REGTYPEOID		2206
-
 #define REGROLEOID		4096
-
 #define REGNAMESPACEOID		4089
-
 #define REGTYPEARRAYOID 2211
-
-/* uuid */
 #define UUIDOID 2950
-
-/* pg_lsn */
 #define LSNOID			3220
-
-/* text search */
 #define TSVECTOROID		3614
 #define GTSVECTOROID	3642
 #define TSQUERYOID		3615
 #define REGCONFIGOID	3734
 #define REGDICTIONARYOID	3769
-
-
-/* jsonb */
 #define JSONBOID 3802
-
-
-/* range types */
 #define INT4RANGEOID		3904
-
-/*
- * pseudo-types
- *
- * types with typtype='p' represent various special cases in the type system.
- *
- * These cannot be used to define table columns, but are valid as function
- * argument and result types (if supported by the function's implementation
- * language).
- *
- * Note: cstring is a borderline case; it is still considered a pseudo-type,
- * but there is now support for it in records and arrays.  Perhaps we should
- * just treat it as a regular base type?
- */
 #define RECORDOID		2249
 #define RECORDARRAYOID	2287
 #define CSTRINGOID		2275
@@ -472,7 +361,6 @@ typedef FormData_pg_type *Form_pg_type;
 #define TSM_HANDLEROID	3310
 #define ANYRANGEOID		3831
 
-
 /*
  * macros
  */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 686562a..3da6496 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_user_mapping.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index f6387ae..3db39b8 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -30,7 +30,7 @@ extern void BootstrapToastTable(char *relName,
 
 /*
  * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
 
-- 
2.7.4

v9-0005-Remove-symbols-from-catalog-headers.patchtext/x-patch; charset=US-ASCII; name=v9-0005-Remove-symbols-from-catalog-headers.patchDownload
From 56bbad469bb3e9fe7b3192bba05284430106433c Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 03:09:56 +0700
Subject: [PATCH] Remove symbols from catalog headers

When we removed the catalog data from the headers, the OID symbols were left
behind. Since we don't want them to be separate from the data they refer to,
genbki.pl now copies them from the metadata in the .dat files to new pg_*_d.h
headers which are now included by the relevant header file. This required
an analog of FindDefinedSymbol() that retrieves the symbol from the data.

Since we had to build this mechanism anyway, take this opportunity to
generate the Anum_* and Natts_* compiler constants, so we don't have to
maintain those by hand.

Since the new generated headers can be included separately from the static
catalog header, we can now arrange to have client code include these
instead. To make certain macros visible to client code, introduce the
EXPOSE_TO_CLIENT_CODE symbol, which is never defined, and just prevents
the compiler from seeing them where they are. Catalog.pm knows to save
these lines so they can be copied to the definition headers, where both
client and server code can see them.

With that in place, it's now possible to get rid of the pg_*_fn.h headers
which only exist to quarantine code away from clients. That is left for
future work, however.

This patch does not change the way #define symbols for pg_proc entries
are built. It's not clear that it would be worth the work to write them
to pg_proc_d.h instead of utils/fmgroids.h, and would likely result in
duplication of code.
---
 src/backend/Makefile                          |  21 ++--
 src/backend/catalog/.gitignore                |   1 +
 src/backend/catalog/Catalog.pm                |  76 +++++++++++----
 src/backend/catalog/Makefile                  |  49 ++++++----
 src/backend/catalog/README                    |   8 +-
 src/backend/catalog/genbki.pl                 |  91 +++++++++++++-----
 src/backend/utils/Gen_fmgrtab.pl              |   2 +-
 src/backend/utils/Makefile                    |   6 +-
 src/common/Makefile                           |   2 +
 src/include/Makefile                          |   2 +-
 src/include/catalog/.gitignore                |   1 +
 src/include/catalog/genbki.h                  |  13 ++-
 src/include/catalog/pg_aggregate.h            |  32 +------
 src/include/catalog/pg_am.h                   |  17 +---
 src/include/catalog/pg_amop.h                 |  25 ++---
 src/include/catalog/pg_amproc.h               |  12 +--
 src/include/catalog/pg_attrdef.h              |  11 +--
 src/include/catalog/pg_attribute.h            |  32 +------
 src/include/catalog/pg_auth_members.h         |  11 +--
 src/include/catalog/pg_authid.h               |  26 +----
 src/include/catalog/pg_cast.h                 |  18 ++--
 src/include/catalog/pg_class.h                |  44 +--------
 src/include/catalog/pg_collation.h            |  21 +---
 src/include/catalog/pg_constraint.h           |  33 +------
 src/include/catalog/pg_conversion.h           |  15 +--
 src/include/catalog/pg_database.h             |  22 +----
 src/include/catalog/pg_db_role_setting.h      |  10 +-
 src/include/catalog/pg_default_acl.h          |  14 +--
 src/include/catalog/pg_depend.h               |  15 +--
 src/include/catalog/pg_description.h          |  11 +--
 src/include/catalog/pg_enum.h                 |  10 +-
 src/include/catalog/pg_event_trigger.h        |  13 +--
 src/include/catalog/pg_extension.h            |  15 +--
 src/include/catalog/pg_foreign_data_wrapper.h |  14 +--
 src/include/catalog/pg_foreign_server.h       |  15 +--
 src/include/catalog/pg_foreign_table.h        |  11 +--
 src/include/catalog/pg_index.h                |  26 +----
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  12 +--
 src/include/catalog/pg_language.h             |  19 +---
 src/include/catalog/pg_largeobject.h          |  10 +-
 src/include/catalog/pg_largeobject_metadata.h |   9 +-
 src/include/catalog/pg_namespace.h            |  15 +--
 src/include/catalog/pg_opclass.h              |  26 +----
 src/include/catalog/pg_operator.h             |  72 +-------------
 src/include/catalog/pg_opfamily.h             |  24 +----
 src/include/catalog/pg_partitioned_table.h    |  15 +--
 src/include/catalog/pg_pltemplate.h           |  15 +--
 src/include/catalog/pg_policy.h               |  19 +---
 src/include/catalog/pg_proc.h                 |  37 +------
 src/include/catalog/pg_publication.h          |  15 +--
 src/include/catalog/pg_publication_rel.h      |  11 +--
 src/include/catalog/pg_range.h                |  13 +--
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |  14 +--
 src/include/catalog/pg_seclabel.h             |  12 +--
 src/include/catalog/pg_sequence.h             |  16 ++--
 src/include/catalog/pg_shdepend.h             |  15 +--
 src/include/catalog/pg_shdescription.h        |  10 +-
 src/include/catalog/pg_shseclabel.h           |  13 +--
 src/include/catalog/pg_statistic.h            |  33 +------
 src/include/catalog/pg_statistic_ext.h        |  15 +--
 src/include/catalog/pg_subscription.h         |  16 +---
 src/include/catalog/pg_subscription_rel.h     |  13 +--
 src/include/catalog/pg_tablespace.h           |  15 +--
 src/include/catalog/pg_transform.h            |  17 ++--
 src/include/catalog/pg_trigger.h              |  24 +----
 src/include/catalog/pg_ts_config.h            |  11 +--
 src/include/catalog/pg_ts_config_map.h        |  11 +--
 src/include/catalog/pg_ts_dict.h              |  12 +--
 src/include/catalog/pg_ts_parser.h            |  14 +--
 src/include/catalog/pg_ts_template.h          |  11 +--
 src/include/catalog/pg_type.h                 | 133 +-------------------------
 src/include/catalog/pg_user_mapping.h         |  11 +--
 src/interfaces/ecpg/ecpglib/pg_type.h         |  65 +------------
 src/tools/msvc/Solution.pm                    |  24 +++--
 src/tools/msvc/clean.bat                      |   2 +
 src/tools/pgindent/pgindent                   |   8 +-
 78 files changed, 340 insertions(+), 1251 deletions(-)

diff --git a/src/backend/Makefile b/src/backend/Makefile
index 2fadcea..ef00b38 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -51,7 +51,7 @@ endif
 
 ##########################################################################
 
-all: submake-libpgport submake-schemapg postgres $(POSTGRES_IMP)
+all: submake-libpgport submake-catalog-headers postgres $(POSTGRES_IMP)
 
 ifneq ($(PORTNAME), cygwin)
 ifneq ($(PORTNAME), win32)
@@ -149,12 +149,10 @@ utils/probes.h: utils/probes.d
 	$(MAKE) -C utils probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
-catalog/schemapg.h: | submake-schemapg
+submake-catalog-headers:
+	$(MAKE) -C catalog distprep builddir-headers
 
-submake-schemapg:
-	$(MAKE) -C catalog schemapg.h
-
-.PHONY: submake-schemapg
+.PHONY: submake-catalog-headers
 
 # Make symlinks for these headers in the include directory. That way
 # we can cut down on the -I options. Also, a symlink is automatically
@@ -169,18 +167,13 @@ submake-schemapg:
 
 .PHONY: generated-headers
 
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h
+generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h submake-catalog-headers
 
 $(top_builddir)/src/include/parser/gram.h: parser/gram.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
-$(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
-	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
-	  cd '$(dir $@)' && rm -f $(notdir $@) && \
-	  $(LN_S) "$$prereqdir/$(notdir $<)" .
-
 $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
@@ -216,7 +209,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
-	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C catalog	distprep
 	$(MAKE) -C replication	repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
 	$(MAKE) -C storage/lmgr	lwlocknames.h
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
@@ -308,6 +301,7 @@ endif
 clean:
 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
 		$(top_builddir)/src/include/parser/gram.h \
+		$(top_builddir)/src/include/catalog/pg_*_d.h \
 		$(top_builddir)/src/include/catalog/schemapg.h \
 		$(top_builddir)/src/include/storage/lwlocknames.h \
 		$(top_builddir)/src/include/utils/fmgroids.h \
@@ -329,6 +323,7 @@ maintainer-clean: distclean
 	      parser/gram.c \
 	      parser/gram.h \
 	      parser/scan.c \
+	      catalog/pg_*_d.h \
 	      catalog/schemapg.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 557af3c..1044a1c 100644
--- a/src/backend/catalog/.gitignore
+++ b/src/backend/catalog/.gitignore
@@ -2,3 +2,4 @@
 /postgres.description
 /postgres.shdescription
 /schemapg.h
+/pg_*_d.h
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 60e641e..d109add 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,10 +36,12 @@ sub ParseHeader
 		my %catalog;
 		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
+		my $is_client_code = 0;
 
 		$catalog{columns} = [];
 		$catalog{toasting} = [];
 		$catalog{indexing} = [];
+		$catalog{client_code} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -47,24 +49,39 @@ sub ParseHeader
 		while (<$ifh>)
 		{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
+			# Set appropriate flag when we're in certain code sections.
+			if (/^#/)
 			{
-
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
+				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+				if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/)
+				{
+					$is_client_code = 1;
+					next;
+				}
+				next if !$is_client_code;
 			}
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+			if (!$is_client_code)
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+
+				# Strip useless whitespace and trailing semicolons.
+				chomp;
+				s/^\s+//;
+				s/;\s*$//;
+				s/\s+/ /g;
+			}
 
 			# Push the data into the appropriate data structure.
 			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
@@ -102,14 +119,20 @@ sub ParseHeader
 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
-			elsif ($declaring_attributes)
+			elsif ($is_client_code)
 			{
-				next if (/^{|^$/);
-				if (/^#/)
+				if (/^#endif/)
 				{
-					$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-					next;
+					$is_client_code = 0;
+				}
+				else
+				{
+					push @{ $catalog{client_code} }, $_;
 				}
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
 				if (/^}/)
 				{
 					$declaring_attributes = 0;
@@ -353,4 +376,17 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
+sub FindDefinedSymbolFromData
+{
+	my ($data, $symbol) = @_;
+	foreach my $row (@{ $data })
+	{
+		if ($row->{oid_symbol} eq $symbol)
+		{
+			return $row->{oid};
+		}
+		die "no definition found for $symbol\n";
+	}
+}
+
 1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 23858b8..9b87f85 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -2,6 +2,9 @@
 #
 # Makefile for backend/catalog
 #
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
 # src/backend/catalog/Makefile
 #
 #-------------------------------------------------------------------------
@@ -22,13 +25,9 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: $(BKIFILES) schemapg.h
-
 # Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
-
-POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
+# the catalog header files are assembled into postgres.bki.
+CATALOG_HEADERS := \
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
 	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
 	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
@@ -46,8 +45,20 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
 	pg_subscription_rel.h \
-	toasting.h indexing.h \
-    )
+
+GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h
+
+distprep: $(BKIFILES) $(GENERATED_HEADERS)
+
+.PHONY: builddir-headers
+
+builddir-headers: $(addprefix $(top_builddir)/src/include/catalog/, $(GENERATED_HEADERS))
+
+all: distprep builddir-headers
+
+# In the list of headers used to assemble postgres.bki, indexing.h needs
+# be last, and toasting.h just before it.
+POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS) toasting.h indexing.h)
 
 POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
@@ -61,15 +72,10 @@ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
-# locations of headers that genbki.pl needs to read
-pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog
-
 # see explanation in ../parser/Makefile
 postgres.description: postgres.bki ;
-
 postgres.shdescription: postgres.bki ;
-
-schemapg.h: postgres.bki ;
+$(GENERATED_HEADERS): postgres.bki ;
 
 # Technically, this should depend on Makefile.global, but then
 # postgres.bki would need to be rebuilt after every configure run,
@@ -78,7 +84,18 @@ schemapg.h: postgres.bki ;
 # changes.
 postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
-	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+
+# see explanation in src/backend/Makefile
+$(top_builddir)/src/include/catalog/%_d.h: %_d.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
+
+$(top_builddir)/src/include/catalog/schemapg.h: schemapg.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
 .PHONY: install-data
 install-data: $(BKIFILES) installdirs
@@ -96,7 +113,7 @@ installdirs:
 uninstall-data:
 	rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
 
-# postgres.bki, postgres.description, postgres.shdescription, and schemapg.h
+# postgres.bki, postgres.description, postgres.shdescription, and the generated headers
 # are in the distribution tarball, so they are not cleaned here.
 clean:
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index c177ba0..84e6e07 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -111,7 +111,7 @@ catalogs if at all possible; generally, only tables that must be written to
 in order to create a table should be bootstrapped.
 
 - Certain BOOTSTRAP tables must be at the start of the Makefile
-POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
+CATALOG_HEADERS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
@@ -121,6 +121,12 @@ the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
 reputedly some other order dependencies in the .bki list, too.
 
+-Client code should not include the catalog headers directly.  Instead, it
+should include the corresponding generated pg_*_d.h header.  If you want
+macros or other code in the catalog headers to be visible to clients, use
+the undefined macro EXPOSE_TO_CLIENT_CODE to instruct genbki.pl to copy
+that section to the pg_*_d.h header.
+
 -----------------------------------------------------------------
 
 When munging the .c files, you should be aware of certain conventions:
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 027dd95..9f67a24 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 my @input_files;
-my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -36,10 +35,6 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
-	elsif ($arg =~ /^-I/)
-	{
-		push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
-	}
 	elsif ($arg =~ /^--set-version=(.*)$/)
 	{
 		$major_version = $1;
@@ -53,8 +48,7 @@ while (@ARGV)
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n" if !@input_files;
 die "--set-version must be specified.\n" if !defined $major_version;
 
 # Make sure output_path ends in a slash.
@@ -78,21 +72,6 @@ my $shdescrfile = $output_path . 'postgres.shdescription';
 open my $shdescr, '>', $shdescrfile . $tmpext
   or die "can't open $shdescrfile$tmpext: $!";
 
-# Fetch some special data that we will substitute into the output file.
-# CAUTION: be wary about what symbols you substitute into the .bki file here!
-# It's okay to substitute things that are expected to be really constant
-# within a given Postgres release, such as fixed OIDs.  Do not substitute
-# anything that could depend on platform or configuration.  (The right place
-# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-# NB: make sure that the files used here are known to be part of the .bki
-# file's dependencies by src/backend/catalog/Makefile.
-my $BOOTSTRAP_SUPERUSERID =
-  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
-							 'BOOTSTRAP_SUPERUSERID');
-my $PG_CATALOG_NAMESPACE =
-  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
-							 'PG_CATALOG_NAMESPACE');
-
 # Read all the files into internal data structures. Not all catalogs
 # will have a data file.
 my @catnames;
@@ -131,6 +110,17 @@ foreach my $header (@input_files)
 	}
 }
 
+# Fetch some special data that we will substitute into the output file.
+# CAUTION: be wary about what symbols you substitute into the .bki file here!
+# It's okay to substitute things that are expected to be really constant
+# within a given Postgres release, such as fixed OIDs.  Do not substitute
+# anything that could depend on platform or configuration.  (The right place
+# to handle those sorts of things is in initdb.c's bootstrap_template1().)
+my $BOOTSTRAP_SUPERUSERID
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID');
+my $PG_CATALOG_NAMESPACE
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -146,6 +136,35 @@ my %types;
 foreach my $catname (@catnames)
 {
 
+	# Create one definition header with macro definitions for each catalog.
+	my $def_file = $output_path . $catname . '_d.h';
+	open my $def, '>', $def_file . $tmpext
+	  or die "can't open $def_file$tmpext: $!";
+
+	# Opening boilerplate for pg_*_d.h
+	printf $def <<EOM, $catname, $catname, uc $catname, uc $catname;
+/*-------------------------------------------------------------------------
+ *
+ * %s_d.h
+ *    Macro definitions for %s
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ *  ******************************
+ *  *** DO NOT EDIT THIS FILE! ***
+ *  ******************************
+ *
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef %s_D_H
+#define %s_D_H
+
+EOM
+
 	# .bki CREATE command for this catalog
 	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
@@ -158,11 +177,14 @@ foreach my $catname (@catnames)
 
 	print $bki " (\n";
 	my $schema = $catalog->{columns};
+	my $attnum = 0;
 	foreach my $column (@$schema)
 	{
+		$attnum++;
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
 
+		# Emit column definitions
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -179,9 +201,22 @@ foreach my $catname (@catnames)
 		{
 			print $bki " FORCE NULL";
 		}
+
+		# Emit Anum_* constants
+		print $def
+		  sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum);
 	}
 	print $bki "\n )\n";
 
+	# Emit Natts_* constant
+	print $def "\n#define Natts_$catname $attnum\n\n";
+
+	# Emit client code copied from source header
+	foreach my $line (@{ $catalog->{client_code} })
+	{
+		print $def $line;
+	}
+
 	# Open it, unless bootstrap case (create bootstrap does this
 	# automatically)
 	if (!$catalog->{bootstrap})
@@ -260,9 +295,21 @@ foreach my $catname (@catnames)
 			printf $shdescr "%s\t%s\t%s\n",
 			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
+
+		# Emit OID symbols
+		if (defined $bki_values{oid_symbol})
+		{
+			printf $def "#define %s %s\n",
+			  $bki_values{oid_symbol}, $bki_values{oid};
+		}
 	}
 
 	print $bki "close $catname\n";
+	print $def sprintf("\n#endif /* %s_D_H */\n", uc $catname);
+
+	# Close and rename definition header
+	close $def;
+	Catalog::RenameTempFile($def_file, $tmpext);
 }
 
 # Any information needed for the BKI that is not contained in a pg_*.h header
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 5faaadc..2a5381d 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -82,7 +82,7 @@ foreach my $datfile (@input_files)
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
-	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
+	Catalog::FindDefinedSymbolFromData($catalog_data{pg_language}, 'INTERNALlanguageId');
 
 # Collect certain fields from pg_proc.dat.
 my @fmgr = ();
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index f71cdc5..26500be 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -20,12 +20,14 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h
 
 $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 
+FMGR_DATA = $(addprefix $(top_srcdir)/src/include/catalog/, pg_proc.dat pg_language.dat)
+
 # see explanation in ../parser/Makefile
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/common/Makefile b/src/common/Makefile
index 80e78d7..f28c136 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -88,6 +88,8 @@ libpgcommon_srv.a: $(OBJS_SRV)
 %_srv.o: %.c %.o
 	$(CC) $(CFLAGS) $(subst -DFRONTEND ,, $(CPPFLAGS)) -c $< -o $@
 
+$(OBJS_COMMON): | submake-generated-headers
+
 $(OBJS_SRV): | submake-errcodes
 
 .PHONY: submake-errcodes
diff --git a/src/include/Makefile b/src/include/Makefile
index a689d35..7fe4d45 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -73,7 +73,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h
+	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h catalog/pg_*_d.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index 650202e..dfd5616 100644
--- a/src/include/catalog/.gitignore
+++ b/src/include/catalog/.gitignore
@@ -1 +1,2 @@
 /schemapg.h
+/pg_*_d.h
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 9b769c2..4702932 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,9 +34,9 @@
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* The following are never defined; they are here only for documentation. */
+
 /*
- * This is never defined; it's here only for documentation.
- *
  * Variable-length catalog fields (except possibly the first not nullable one)
  * should not be visible in C structures, so they are made invisible by #ifdefs
  * of an undefined symbol.  See also MARKNOTNULL in bootstrap.c for how this is
@@ -44,4 +44,13 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * There is code in the catalog headers that needs to be visible to clients,
+ * but we don't want them to include the full header because of safety issues
+ * with other code in the header. This symbol instructs genbki.pl to copy this
+ * section when generating the corresponding definition header, where it can
+ * be included by both client and backend code.
+ */
+#undef EXPOSE_TO_CLIENT_CODE
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 4f9edf9..97d8f22 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -19,6 +19,7 @@
 #define PG_AGGREGATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_aggregate_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_aggregate definition.
@@ -87,34 +88,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_aggregate *Form_pg_aggregate;
 
-/* ----------------
- *		compiler constants for pg_aggregate
- * ----------------
- */
-
-#define Natts_pg_aggregate					22
-#define Anum_pg_aggregate_aggfnoid			1
-#define Anum_pg_aggregate_aggkind			2
-#define Anum_pg_aggregate_aggnumdirectargs	3
-#define Anum_pg_aggregate_aggtransfn		4
-#define Anum_pg_aggregate_aggfinalfn		5
-#define Anum_pg_aggregate_aggcombinefn		6
-#define Anum_pg_aggregate_aggserialfn		7
-#define Anum_pg_aggregate_aggdeserialfn		8
-#define Anum_pg_aggregate_aggmtransfn		9
-#define Anum_pg_aggregate_aggminvtransfn	10
-#define Anum_pg_aggregate_aggmfinalfn		11
-#define Anum_pg_aggregate_aggfinalextra		12
-#define Anum_pg_aggregate_aggmfinalextra	13
-#define Anum_pg_aggregate_aggfinalmodify	14
-#define Anum_pg_aggregate_aggmfinalmodify	15
-#define Anum_pg_aggregate_aggsortop			16
-#define Anum_pg_aggregate_aggtranstype		17
-#define Anum_pg_aggregate_aggtransspace		18
-#define Anum_pg_aggregate_aggmtranstype		19
-#define Anum_pg_aggregate_aggmtransspace	20
-#define Anum_pg_aggregate_agginitval		21
-#define Anum_pg_aggregate_aggminitval		22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for aggkind column.  We distinguish normal aggregates
@@ -143,4 +117,6 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index fe59a29..4004c96 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -19,6 +19,7 @@
 #define PG_AM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_am_d.h"
 
 /* ----------------
  *		pg_am definition.  cpp turns this into
@@ -41,14 +42,7 @@ CATALOG(pg_am,2601)
  */
 typedef FormData_pg_am *Form_pg_am;
 
-/* ----------------
- *		compiler constants for pg_am
- * ----------------
- */
-#define Natts_pg_am						3
-#define Anum_pg_am_amname				1
-#define Anum_pg_am_amhandler			2
-#define Anum_pg_am_amtype				3
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		compiler constant for amtype
@@ -56,11 +50,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-#define BTREE_AM_OID 403
-#define HASH_AM_OID 405
-#define GIST_AM_OID 783
-#define GIN_AM_OID 2742
-#define SPGIST_AM_OID 4000
-#define BRIN_AM_OID 3580
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AM_H */
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index e978c32..68ee321 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -44,6 +44,7 @@
 #define PG_AMOP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amop_d.h"
 
 /* ----------------
  *		pg_amop definition.  cpp turns this into
@@ -64,10 +65,6 @@ CATALOG(pg_amop,2602)
 	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
 } FormData_pg_amop;
 
-/* allowed values of amoppurpose: */
-#define AMOP_SEARCH		's'		/* operator is for search */
-#define AMOP_ORDER		'o'		/* operator is for ordering */
-
 /* ----------------
  *		Form_pg_amop corresponds to a pointer to a tuple with
  *		the format of pg_amop relation.
@@ -75,18 +72,12 @@ CATALOG(pg_amop,2602)
  */
 typedef FormData_pg_amop *Form_pg_amop;
 
-/* ----------------
- *		compiler constants for pg_amop
- * ----------------
- */
-#define Natts_pg_amop					8
-#define Anum_pg_amop_amopfamily			1
-#define Anum_pg_amop_amoplefttype		2
-#define Anum_pg_amop_amoprighttype		3
-#define Anum_pg_amop_amopstrategy		4
-#define Anum_pg_amop_amoppurpose		5
-#define Anum_pg_amop_amopopr			6
-#define Anum_pg_amop_amopmethod			7
-#define Anum_pg_amop_amopsortfamily		8
+#ifdef EXPOSE_TO_CLIENT_CODE
+
+/* allowed values of amoppurpose: */
+#define AMOP_SEARCH		's'		/* operator is for search */
+#define AMOP_ORDER		'o'		/* operator is for ordering */
+
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 83ce03b..66e1cdc 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -33,6 +33,7 @@
 #define PG_AMPROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amproc_d.h"
 
 /* ----------------
  *		pg_amproc definition.  cpp turns this into
@@ -57,15 +58,4 @@ CATALOG(pg_amproc,2603)
  */
 typedef FormData_pg_amproc *Form_pg_amproc;
 
-/* ----------------
- *		compiler constants for pg_amproc
- * ----------------
- */
-#define Natts_pg_amproc					5
-#define Anum_pg_amproc_amprocfamily		1
-#define Anum_pg_amproc_amproclefttype	2
-#define Anum_pg_amproc_amprocrighttype	3
-#define Anum_pg_amproc_amprocnum		4
-#define Anum_pg_amproc_amproc			5
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 3aab48d..068ab64 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -19,6 +19,7 @@
 #define PG_ATTRDEF_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attrdef_d.h"
 
 /* ----------------
  *		pg_attrdef definition.  cpp turns this into
@@ -45,14 +46,4 @@ CATALOG(pg_attrdef,2604)
  */
 typedef FormData_pg_attrdef *Form_pg_attrdef;
 
-/* ----------------
- *		compiler constants for pg_attrdef
- * ----------------
- */
-#define Natts_pg_attrdef				4
-#define Anum_pg_attrdef_adrelid			1
-#define Anum_pg_attrdef_adnum			2
-#define Anum_pg_attrdef_adbin			3
-#define Anum_pg_attrdef_adsrc			4
-
 #endif							/* PG_ATTRDEF_H */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 3c78871..db3e860 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -23,6 +23,7 @@
 #define PG_ATTRIBUTE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attribute_d.h"
 
 /* ----------------
  *		pg_attribute definition.  cpp turns this into
@@ -189,36 +190,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
  */
 typedef FormData_pg_attribute *Form_pg_attribute;
 
-/* ----------------
- *		compiler constants for pg_attribute
- * ----------------
- */
-
-#define Natts_pg_attribute				22
-#define Anum_pg_attribute_attrelid		1
-#define Anum_pg_attribute_attname		2
-#define Anum_pg_attribute_atttypid		3
-#define Anum_pg_attribute_attstattarget 4
-#define Anum_pg_attribute_attlen		5
-#define Anum_pg_attribute_attnum		6
-#define Anum_pg_attribute_attndims		7
-#define Anum_pg_attribute_attcacheoff	8
-#define Anum_pg_attribute_atttypmod		9
-#define Anum_pg_attribute_attbyval		10
-#define Anum_pg_attribute_attstorage	11
-#define Anum_pg_attribute_attalign		12
-#define Anum_pg_attribute_attnotnull	13
-#define Anum_pg_attribute_atthasdef		14
-#define Anum_pg_attribute_attidentity	15
-#define Anum_pg_attribute_attisdropped	16
-#define Anum_pg_attribute_attislocal	17
-#define Anum_pg_attribute_attinhcount	18
-#define Anum_pg_attribute_attcollation	19
-#define Anum_pg_attribute_attacl		20
-#define Anum_pg_attribute_attoptions	21
-#define Anum_pg_attribute_attfdwoptions 22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_ATTRIBUTE_H */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index a702dff..b8ac653 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -20,6 +20,7 @@
 #define PG_AUTH_MEMBERS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_auth_members_d.h"
 
 /* ----------------
  *		pg_auth_members definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
  */
 typedef FormData_pg_auth_members *Form_pg_auth_members;
 
-/* ----------------
- *		compiler constants for pg_auth_members
- * ----------------
- */
-#define Natts_pg_auth_members				4
-#define Anum_pg_auth_members_roleid			1
-#define Anum_pg_auth_members_member			2
-#define Anum_pg_auth_members_grantor		3
-#define Anum_pg_auth_members_admin_option	4
-
 #endif							/* PG_AUTH_MEMBERS_H */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b101e30..036bc67 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -21,6 +21,7 @@
 #define PG_AUTHID_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_authid_d.h"
 
 /*
  * The CATALOG definition has to refer to the type of rolvaliduntil as
@@ -62,7 +63,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
-
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
  *		the format of pg_authid relation.
@@ -70,28 +70,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
  */
 typedef FormData_pg_authid *Form_pg_authid;
 
-/* ----------------
- *		compiler constants for pg_authid
- * ----------------
- */
-#define Natts_pg_authid					11
-#define Anum_pg_authid_rolname			1
-#define Anum_pg_authid_rolsuper			2
-#define Anum_pg_authid_rolinherit		3
-#define Anum_pg_authid_rolcreaterole	4
-#define Anum_pg_authid_rolcreatedb		5
-#define Anum_pg_authid_rolcanlogin		6
-#define Anum_pg_authid_rolreplication	7
-#define Anum_pg_authid_rolbypassrls		8
-#define Anum_pg_authid_rolconnlimit		9
-#define Anum_pg_authid_rolpassword		10
-#define Anum_pg_authid_rolvaliduntil	11
-
-#define BOOTSTRAP_SUPERUSERID			10
-#define DEFAULT_ROLE_MONITOR		3373
-#define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
-#define DEFAULT_ROLE_READ_ALL_STATS 3375
-#define DEFAULT_ROLE_STAT_SCAN_TABLES	3377
-#define DEFAULT_ROLE_SIGNAL_BACKENDID	4200
-
 #endif							/* PG_AUTHID_H */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 1930d4b..6d98213 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -21,6 +21,7 @@
 #define PG_CAST_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_cast_d.h"
 
 /* ----------------
  *		pg_cast definition.  cpp turns this into
@@ -38,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+/* ----------------
+ *		Form_pg_cast corresponds to a pointer to a tuple with
+ *		the format of pg_cast relation.
+ * ----------------
+ */
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
@@ -68,16 +74,4 @@ typedef enum CoercionMethod
 	COERCION_METHOD_INOUT = 'i' /* use input/output functions */
 } CoercionMethod;
 
-
-/* ----------------
- *		compiler constants for pg_cast
- * ----------------
- */
-#define Natts_pg_cast				5
-#define Anum_pg_cast_castsource		1
-#define Anum_pg_cast_casttarget		2
-#define Anum_pg_cast_castfunc		3
-#define Anum_pg_cast_castcontext	4
-#define Anum_pg_cast_castmethod		5
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 7bc09bb..d9f5aff 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -19,6 +19,7 @@
 #define PG_CLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_class_d.h"
 
 /* ----------------
  *		pg_class definition.  cpp turns this into
@@ -93,46 +94,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_class *Form_pg_class;
 
-/* ----------------
- *		compiler constants for pg_class
- * ----------------
- */
-
-#define Natts_pg_class						33
-#define Anum_pg_class_relname				1
-#define Anum_pg_class_relnamespace			2
-#define Anum_pg_class_reltype				3
-#define Anum_pg_class_reloftype				4
-#define Anum_pg_class_relowner				5
-#define Anum_pg_class_relam					6
-#define Anum_pg_class_relfilenode			7
-#define Anum_pg_class_reltablespace			8
-#define Anum_pg_class_relpages				9
-#define Anum_pg_class_reltuples				10
-#define Anum_pg_class_relallvisible			11
-#define Anum_pg_class_reltoastrelid			12
-#define Anum_pg_class_relhasindex			13
-#define Anum_pg_class_relisshared			14
-#define Anum_pg_class_relpersistence		15
-#define Anum_pg_class_relkind				16
-#define Anum_pg_class_relnatts				17
-#define Anum_pg_class_relchecks				18
-#define Anum_pg_class_relhasoids			19
-#define Anum_pg_class_relhaspkey			20
-#define Anum_pg_class_relhasrules			21
-#define Anum_pg_class_relhastriggers		22
-#define Anum_pg_class_relhassubclass		23
-#define Anum_pg_class_relrowsecurity		24
-#define Anum_pg_class_relforcerowsecurity	25
-#define Anum_pg_class_relispopulated		26
-#define Anum_pg_class_relreplident			27
-#define Anum_pg_class_relispartition		28
-#define Anum_pg_class_relfrozenxid			29
-#define Anum_pg_class_relminmxid			30
-#define Anum_pg_class_relacl				31
-#define Anum_pg_class_reloptions			32
-#define Anum_pg_class_relpartbound			33
-
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
@@ -162,4 +124,6 @@ typedef FormData_pg_class *Form_pg_class;
  */
 #define		  REPLICA_IDENTITY_INDEX	'i'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CLASS_H */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 50cbe1e..0c6d47f 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -20,6 +20,7 @@
 #define PG_COLLATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_collation_d.h"
 
 /* ----------------
  *		pg_collation definition.  cpp turns this into
@@ -50,26 +51,12 @@ CATALOG(pg_collation,3456)
  */
 typedef FormData_pg_collation *Form_pg_collation;
 
-/* ----------------
- *		compiler constants for pg_collation
- * ----------------
- */
-#define Natts_pg_collation				8
-#define Anum_pg_collation_collname		1
-#define Anum_pg_collation_collnamespace 2
-#define Anum_pg_collation_collowner		3
-#define Anum_pg_collation_collprovider	4
-#define Anum_pg_collation_collencoding	5
-#define Anum_pg_collation_collcollate	6
-#define Anum_pg_collation_collctype		7
-#define Anum_pg_collation_collversion	8
-
-#define DEFAULT_COLLATION_OID	100
-#define C_COLLATION_OID			950
-#define POSIX_COLLATION_OID		951
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_COLLATION_H */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 41d97d4..758325e 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -19,6 +19,7 @@
 #define PG_CONSTRAINT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_constraint_d.h"
 
 /* ----------------
  *		pg_constraint definition.  cpp turns this into
@@ -145,35 +146,7 @@ CATALOG(pg_constraint,2606)
  */
 typedef FormData_pg_constraint *Form_pg_constraint;
 
-/* ----------------
- *		compiler constants for pg_constraint
- * ----------------
- */
-#define Natts_pg_constraint					24
-#define Anum_pg_constraint_conname			1
-#define Anum_pg_constraint_connamespace		2
-#define Anum_pg_constraint_contype			3
-#define Anum_pg_constraint_condeferrable	4
-#define Anum_pg_constraint_condeferred		5
-#define Anum_pg_constraint_convalidated		6
-#define Anum_pg_constraint_conrelid			7
-#define Anum_pg_constraint_contypid			8
-#define Anum_pg_constraint_conindid			9
-#define Anum_pg_constraint_confrelid		10
-#define Anum_pg_constraint_confupdtype		11
-#define Anum_pg_constraint_confdeltype		12
-#define Anum_pg_constraint_confmatchtype	13
-#define Anum_pg_constraint_conislocal		14
-#define Anum_pg_constraint_coninhcount		15
-#define Anum_pg_constraint_connoinherit		16
-#define Anum_pg_constraint_conkey			17
-#define Anum_pg_constraint_confkey			18
-#define Anum_pg_constraint_conpfeqop		19
-#define Anum_pg_constraint_conppeqop		20
-#define Anum_pg_constraint_conffeqop		21
-#define Anum_pg_constraint_conexclop		22
-#define Anum_pg_constraint_conbin			23
-#define Anum_pg_constraint_consrc			24
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
@@ -189,4 +162,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
  * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
  */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CONSTRAINT_H */
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 88098fa..eacc09a 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -19,6 +19,7 @@
 #define PG_CONVERSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_conversion_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_conversion definition.
@@ -54,18 +55,4 @@ CATALOG(pg_conversion,2607)
  */
 typedef FormData_pg_conversion *Form_pg_conversion;
 
-/* ----------------
- *		compiler constants for pg_conversion
- * ----------------
- */
-
-#define Natts_pg_conversion				7
-#define Anum_pg_conversion_conname		1
-#define Anum_pg_conversion_connamespace 2
-#define Anum_pg_conversion_conowner		3
-#define Anum_pg_conversion_conforencoding		4
-#define Anum_pg_conversion_contoencoding		5
-#define Anum_pg_conversion_conproc		6
-#define Anum_pg_conversion_condefault	7
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index b7972fa..9435f24 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -19,6 +19,7 @@
 #define PG_DATABASE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_database_d.h"
 
 /* ----------------
  *		pg_database definition.  cpp turns this into
@@ -55,25 +56,4 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
  */
 typedef FormData_pg_database *Form_pg_database;
 
-/* ----------------
- *		compiler constants for pg_database
- * ----------------
- */
-#define Natts_pg_database				13
-#define Anum_pg_database_datname		1
-#define Anum_pg_database_datdba			2
-#define Anum_pg_database_encoding		3
-#define Anum_pg_database_datcollate		4
-#define Anum_pg_database_datctype		5
-#define Anum_pg_database_datistemplate	6
-#define Anum_pg_database_datallowconn	7
-#define Anum_pg_database_datconnlimit	8
-#define Anum_pg_database_datlastsysoid	9
-#define Anum_pg_database_datfrozenxid	10
-#define Anum_pg_database_datminmxid		11
-#define Anum_pg_database_dattablespace	12
-#define Anum_pg_database_datacl			13
-
-#define TemplateDbOid			1
-
 #endif							/* PG_DATABASE_H */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 09546bd..013e6a2 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -18,6 +18,7 @@
 #ifndef PG_DB_ROLE_SETTING_H
 #define PG_DB_ROLE_SETTING_H
 
+#include "catalog/pg_db_role_setting_d.h"
 #include "utils/guc.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
@@ -41,15 +42,6 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
-/* ----------------
- *		compiler constants for pg_db_role_setting
- * ----------------
- */
-#define Natts_pg_db_role_setting				3
-#define Anum_pg_db_role_setting_setdatabase		1
-#define Anum_pg_db_role_setting_setrole			2
-#define Anum_pg_db_role_setting_setconfig		3
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 7778276..868ac0c 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -19,6 +19,7 @@
 #define PG_DEFAULT_ACL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_default_acl_d.h"
 
 /* ----------------
  *		pg_default_acl definition.  cpp turns this into
@@ -45,16 +46,7 @@ CATALOG(pg_default_acl,826)
  */
 typedef FormData_pg_default_acl *Form_pg_default_acl;
 
-/* ----------------
- *		compiler constants for pg_default_acl
- * ----------------
- */
-
-#define Natts_pg_default_acl					4
-#define Anum_pg_default_acl_defaclrole			1
-#define Anum_pg_default_acl_defaclnamespace		2
-#define Anum_pg_default_acl_defaclobjtype		3
-#define Anum_pg_default_acl_defaclacl			4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Types of objects for which the user is allowed to specify default
@@ -67,4 +59,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define DEFACLOBJ_TYPE			'T' /* type */
 #define DEFACLOBJ_NAMESPACE		'n' /* namespace */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_DEFAULT_ACL_H */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 7c60e63..030f655 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -31,6 +31,7 @@
 #define PG_DEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_depend_d.h"
 
 /* ----------------
  *		pg_depend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_depend *Form_pg_depend;
 
-/* ----------------
- *		compiler constants for pg_depend
- * ----------------
- */
-#define Natts_pg_depend				7
-#define Anum_pg_depend_classid		1
-#define Anum_pg_depend_objid		2
-#define Anum_pg_depend_objsubid		3
-#define Anum_pg_depend_refclassid	4
-#define Anum_pg_depend_refobjid		5
-#define Anum_pg_depend_refobjsubid	6
-#define Anum_pg_depend_deptype		7
-
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 71eed4e..d3c8644 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -38,6 +38,7 @@
 #define PG_DESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_description_d.h"
 
 /* ----------------
  *		pg_description definition.  cpp turns this into
@@ -64,14 +65,4 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_description * Form_pg_description;
 
-/* ----------------
- *		compiler constants for pg_description
- * ----------------
- */
-#define Natts_pg_description			4
-#define Anum_pg_description_objoid		1
-#define Anum_pg_description_classoid	2
-#define Anum_pg_description_objsubid	3
-#define Anum_pg_description_description 4
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 3327688..edea5e3 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -18,6 +18,7 @@
 #define PG_ENUM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_enum_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -41,15 +42,6 @@ CATALOG(pg_enum,3501)
  */
 typedef FormData_pg_enum *Form_pg_enum;
 
-/* ----------------
- *		compiler constants for pg_enum
- * ----------------
- */
-#define Natts_pg_enum					3
-#define Anum_pg_enum_enumtypid			1
-#define Anum_pg_enum_enumsortorder		2
-#define Anum_pg_enum_enumlabel			3
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index 20e7e38..3ca0a88 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -19,6 +19,7 @@
 #define PG_EVENT_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_event_trigger_d.h"
 
 /* ----------------
  *		pg_event_trigger definition.    cpp turns this into
@@ -48,16 +49,4 @@ CATALOG(pg_event_trigger,3466)
  */
 typedef FormData_pg_event_trigger *Form_pg_event_trigger;
 
-/* ----------------
- *		compiler constants for pg_event_trigger
- * ----------------
- */
-#define Natts_pg_event_trigger					6
-#define Anum_pg_event_trigger_evtname			1
-#define Anum_pg_event_trigger_evtevent			2
-#define Anum_pg_event_trigger_evtowner			3
-#define Anum_pg_event_trigger_evtfoid			4
-#define Anum_pg_event_trigger_evtenabled		5
-#define Anum_pg_event_trigger_evttags			6
-
 #endif							/* PG_EVENT_TRIGGER_H */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index c2d528f..a60bd44 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -19,6 +19,7 @@
 #define PG_EXTENSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_extension_d.h"
 
 /* ----------------
  *		pg_extension definition.  cpp turns this into
@@ -49,18 +50,4 @@ CATALOG(pg_extension,3079)
  */
 typedef FormData_pg_extension *Form_pg_extension;
 
-/* ----------------
- *		compiler constants for pg_extension
- * ----------------
- */
-
-#define Natts_pg_extension					7
-#define Anum_pg_extension_extname			1
-#define Anum_pg_extension_extowner			2
-#define Anum_pg_extension_extnamespace		3
-#define Anum_pg_extension_extrelocatable	4
-#define Anum_pg_extension_extversion		5
-#define Anum_pg_extension_extconfig			6
-#define Anum_pg_extension_extcondition		7
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index 6cf321d..ae9b0be 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -19,6 +19,7 @@
 #define PG_FOREIGN_DATA_WRAPPER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_data_wrapper_d.h"
 
 /* ----------------
  *		pg_foreign_data_wrapper definition.  cpp turns this into
@@ -47,17 +48,4 @@ CATALOG(pg_foreign_data_wrapper,2328)
  */
 typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper;
 
-/* ----------------
- *		compiler constants for pg_fdw
- * ----------------
- */
-
-#define Natts_pg_foreign_data_wrapper				6
-#define Anum_pg_foreign_data_wrapper_fdwname		1
-#define Anum_pg_foreign_data_wrapper_fdwowner		2
-#define Anum_pg_foreign_data_wrapper_fdwhandler		3
-#define Anum_pg_foreign_data_wrapper_fdwvalidator	4
-#define Anum_pg_foreign_data_wrapper_fdwacl			5
-#define Anum_pg_foreign_data_wrapper_fdwoptions		6
-
 #endif							/* PG_FOREIGN_DATA_WRAPPER_H */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index f909b26..34fc827 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_SERVER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_server_d.h"
 
 /* ----------------
  *		pg_foreign_server definition.  cpp turns this into
@@ -47,18 +48,4 @@ CATALOG(pg_foreign_server,1417)
  */
 typedef FormData_pg_foreign_server *Form_pg_foreign_server;
 
-/* ----------------
- *		compiler constants for pg_foreign_server
- * ----------------
- */
-
-#define Natts_pg_foreign_server					7
-#define Anum_pg_foreign_server_srvname			1
-#define Anum_pg_foreign_server_srvowner			2
-#define Anum_pg_foreign_server_srvfdw			3
-#define Anum_pg_foreign_server_srvtype			4
-#define Anum_pg_foreign_server_srvversion		5
-#define Anum_pg_foreign_server_srvacl			6
-#define Anum_pg_foreign_server_srvoptions		7
-
 #endif							/* PG_FOREIGN_SERVER_H */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 9bee001..1a1fefc 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_table_d.h"
 
 /* ----------------
  *		pg_foreign_table definition.  cpp turns this into
@@ -43,14 +44,4 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_foreign_table *Form_pg_foreign_table;
 
-/* ----------------
- *		compiler constants for pg_foreign_table
- * ----------------
- */
-
-#define Natts_pg_foreign_table					3
-#define Anum_pg_foreign_table_ftrelid			1
-#define Anum_pg_foreign_table_ftserver			2
-#define Anum_pg_foreign_table_ftoptions			3
-
 #endif							/* PG_FOREIGN_TABLE_H */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index ef0dea6..f8371f0 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -19,6 +19,7 @@
 #define PG_INDEX_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_index_d.h"
 
 /* ----------------
  *		pg_index definition.  cpp turns this into
@@ -65,31 +66,6 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_index *Form_pg_index;
 
-/* ----------------
- *		compiler constants for pg_index
- * ----------------
- */
-#define Natts_pg_index					19
-#define Anum_pg_index_indexrelid		1
-#define Anum_pg_index_indrelid			2
-#define Anum_pg_index_indnatts			3
-#define Anum_pg_index_indisunique		4
-#define Anum_pg_index_indisprimary		5
-#define Anum_pg_index_indisexclusion	6
-#define Anum_pg_index_indimmediate		7
-#define Anum_pg_index_indisclustered	8
-#define Anum_pg_index_indisvalid		9
-#define Anum_pg_index_indcheckxmin		10
-#define Anum_pg_index_indisready		11
-#define Anum_pg_index_indislive			12
-#define Anum_pg_index_indisreplident	13
-#define Anum_pg_index_indkey			14
-#define Anum_pg_index_indcollation		15
-#define Anum_pg_index_indclass			16
-#define Anum_pg_index_indoption			17
-#define Anum_pg_index_indexprs			18
-#define Anum_pg_index_indpred			19
-
 /*
  * Index AMs that support ordered scans must support these two indoption
  * bits.  Otherwise, the content of the per-column indoption fields is
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3af1647..478a587 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -19,6 +19,7 @@
 #define PG_INHERITS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_inherits_d.h"
 
 /* ----------------
  *		pg_inherits definition.  cpp turns this into
@@ -41,13 +42,4 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_inherits *Form_pg_inherits;
 
-/* ----------------
- *		compiler constants for pg_inherits
- * ----------------
- */
-#define Natts_pg_inherits				3
-#define Anum_pg_inherits_inhrelid		1
-#define Anum_pg_inherits_inhparent		2
-#define Anum_pg_inherits_inhseqno		3
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 51adc7a..7dcb70c 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -36,6 +36,7 @@
 #define PG_INIT_PRIVS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_init_privs_d.h"
 
 /* ----------------
  *		pg_init_privs definition.  cpp turns this into
@@ -63,17 +64,6 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_init_privs * Form_pg_init_privs;
 
-/* ----------------
- *		compiler constants for pg_init_privs
- * ----------------
- */
-#define Natts_pg_init_privs				5
-#define Anum_pg_init_privs_objoid		1
-#define Anum_pg_init_privs_classoid		2
-#define Anum_pg_init_privs_objsubid		3
-#define Anum_pg_init_privs_privtype		4
-#define Anum_pg_init_privs_initprivs	5
-
 /*
  * It is important to know if the initial privileges are from initdb or from an
  * extension.  This enum is used to provide that differentiation and the two
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 5f82158..d2d878c 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -19,6 +19,7 @@
 #define PG_LANGUAGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_language_d.h"
 
 /* ----------------
  *		pg_language definition.  cpp turns this into
@@ -49,22 +50,4 @@ CATALOG(pg_language,2612)
  */
 typedef FormData_pg_language *Form_pg_language;
 
-/* ----------------
- *		compiler constants for pg_language
- * ----------------
- */
-#define Natts_pg_language				8
-#define Anum_pg_language_lanname		1
-#define Anum_pg_language_lanowner		2
-#define Anum_pg_language_lanispl		3
-#define Anum_pg_language_lanpltrusted	4
-#define Anum_pg_language_lanplcallfoid	5
-#define Anum_pg_language_laninline		6
-#define Anum_pg_language_lanvalidator	7
-#define Anum_pg_language_lanacl			8
-
-#define INTERNALlanguageId 12
-#define ClanguageId 13
-#define SQLlanguageId 14
-
 #endif							/* PG_LANGUAGE_H */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 1857ca4..2157bab 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -17,6 +17,7 @@
 #define PG_LARGEOBJECT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_d.h"
 
 /* ----------------
  *		pg_largeobject definition.  cpp turns this into
@@ -42,15 +43,6 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_largeobject *Form_pg_largeobject;
 
-/* ----------------
- *		compiler constants for pg_largeobject
- * ----------------
- */
-#define Natts_pg_largeobject			3
-#define Anum_pg_largeobject_loid		1
-#define Anum_pg_largeobject_pageno		2
-#define Anum_pg_largeobject_data		3
-
 extern Oid	LargeObjectCreate(Oid loid);
 extern void LargeObjectDrop(Oid loid);
 extern bool LargeObjectExists(Oid loid);
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 0cf7bcd..3d5e0cd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -19,6 +19,7 @@
 #define PG_LARGEOBJECT_METADATA_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_metadata_d.h"
 
 /* ----------------
  *		pg_largeobject_metadata definition. cpp turns this into
@@ -43,12 +44,4 @@ CATALOG(pg_largeobject_metadata,2995)
  */
 typedef FormData_pg_largeobject_metadata *Form_pg_largeobject_metadata;
 
-/* ----------------
- *		compiler constants for pg_largeobject_metadata
- * ----------------
- */
-#define Natts_pg_largeobject_metadata			2
-#define Anum_pg_largeobject_metadata_lomowner	1
-#define Anum_pg_largeobject_metadata_lomacl		2
-
 #endif							/* PG_LARGEOBJECT_METADATA_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 19b559f9..5f80e86 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -19,6 +19,7 @@
 #define PG_NAMESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_namespace_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_namespace definition.
@@ -49,20 +50,6 @@ CATALOG(pg_namespace,2615)
  */
 typedef FormData_pg_namespace *Form_pg_namespace;
 
-/* ----------------
- *		compiler constants for pg_namespace
- * ----------------
- */
-
-#define Natts_pg_namespace				3
-#define Anum_pg_namespace_nspname		1
-#define Anum_pg_namespace_nspowner		2
-#define Anum_pg_namespace_nspacl		3
-
-#define PG_CATALOG_NAMESPACE 11
-#define PG_TOAST_NAMESPACE 99
-#define PG_PUBLIC_NAMESPACE 2200
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index b10ceb9..1f64710 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -39,6 +39,7 @@
 #define PG_OPCLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opclass_d.h"
 
 /* ----------------
  *		pg_opclass definition.  cpp turns this into
@@ -66,29 +67,4 @@ CATALOG(pg_opclass,2616)
  */
 typedef FormData_pg_opclass *Form_pg_opclass;
 
-/* ----------------
- *		compiler constants for pg_opclass
- * ----------------
- */
-#define Natts_pg_opclass				8
-#define Anum_pg_opclass_opcmethod		1
-#define Anum_pg_opclass_opcname			2
-#define Anum_pg_opclass_opcnamespace	3
-#define Anum_pg_opclass_opcowner		4
-#define Anum_pg_opclass_opcfamily		5
-#define Anum_pg_opclass_opcintype		6
-#define Anum_pg_opclass_opcdefault		7
-#define Anum_pg_opclass_opckeytype		8
-
-#define DATE_BTREE_OPS_OID 3122
-#define FLOAT8_BTREE_OPS_OID 3123
-#define INT2_BTREE_OPS_OID 1979
-#define INT4_BTREE_OPS_OID 1978
-#define INT8_BTREE_OPS_OID 3124
-#define NUMERIC_BTREE_OPS_OID 3125
-#define OID_BTREE_OPS_OID 1981
-#define TEXT_BTREE_OPS_OID 3126
-#define TIMESTAMPTZ_BTREE_OPS_OID 3127
-#define TIMESTAMP_BTREE_OPS_OID 3128
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index cbe6884..a0b20f2 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -19,6 +19,7 @@
 #define PG_OPERATOR_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_operator_d.h"
 
 /* ----------------
  *		pg_operator definition.  cpp turns this into
@@ -52,75 +53,4 @@ CATALOG(pg_operator,2617)
  */
 typedef FormData_pg_operator *Form_pg_operator;
 
-/* ----------------
- *		compiler constants for pg_operator
- * ----------------
- */
-
-#define Natts_pg_operator				14
-#define Anum_pg_operator_oprname		1
-#define Anum_pg_operator_oprnamespace	2
-#define Anum_pg_operator_oprowner		3
-#define Anum_pg_operator_oprkind		4
-#define Anum_pg_operator_oprcanmerge	5
-#define Anum_pg_operator_oprcanhash		6
-#define Anum_pg_operator_oprleft		7
-#define Anum_pg_operator_oprright		8
-#define Anum_pg_operator_oprresult		9
-#define Anum_pg_operator_oprcom			10
-#define Anum_pg_operator_oprnegate		11
-#define Anum_pg_operator_oprcode		12
-#define Anum_pg_operator_oprrest		13
-#define Anum_pg_operator_oprjoin		14
-
-#define BooleanNotEqualOperator   85
-#define BooleanEqualOperator   91
-#define Int4EqualOperator	96
-#define Int4LessOperator	97
-#define TextEqualOperator	98
-#define TIDEqualOperator   387
-#define TIDLessOperator    2799
-#define Int8LessOperator	412
-#define OID_NAME_REGEXEQ_OP		639
-#define OID_TEXT_REGEXEQ_OP		641
-#define Float8LessOperator	672
-#define OID_BPCHAR_REGEXEQ_OP		1055
-#define ARRAY_EQ_OP 1070
-#define ARRAY_LT_OP 1072
-#define ARRAY_GT_OP 1073
-#define OID_NAME_LIKE_OP		1207
-#define OID_TEXT_LIKE_OP		1209
-#define OID_BPCHAR_LIKE_OP		1211
-#define OID_NAME_ICREGEXEQ_OP		1226
-#define OID_TEXT_ICREGEXEQ_OP		1228
-#define OID_BPCHAR_ICREGEXEQ_OP		1234
-#define OID_INET_SUB_OP			931
-#define OID_INET_SUBEQ_OP		932
-#define OID_INET_SUP_OP			933
-#define OID_INET_SUPEQ_OP		934
-#define OID_INET_OVERLAP_OP		3552
-#define OID_NAME_ICLIKE_OP		1625
-#define OID_TEXT_ICLIKE_OP		1627
-#define OID_BPCHAR_ICLIKE_OP	1629
-#define OID_BYTEA_LIKE_OP		2016
-#define OID_ARRAY_OVERLAP_OP	2750
-#define OID_ARRAY_CONTAINS_OP	2751
-#define OID_ARRAY_CONTAINED_OP	2752
-#define RECORD_EQ_OP 2988
-#define RECORD_LT_OP 2990
-#define RECORD_GT_OP 2991
-#define OID_RANGE_LESS_OP 3884
-#define OID_RANGE_LESS_EQUAL_OP 3885
-#define OID_RANGE_GREATER_EQUAL_OP 3886
-#define OID_RANGE_GREATER_OP 3887
-#define OID_RANGE_OVERLAP_OP 3888
-#define OID_RANGE_CONTAINS_ELEM_OP 3889
-#define OID_RANGE_CONTAINS_OP 3890
-#define OID_RANGE_ELEM_CONTAINED_OP 3891
-#define OID_RANGE_CONTAINED_OP 3892
-#define OID_RANGE_LEFT_OP 3893
-#define OID_RANGE_RIGHT_OP 3894
-#define OID_RANGE_OVERLAPS_LEFT_OP 3895
-#define OID_RANGE_OVERLAPS_RIGHT_OP 3896
-
 #endif							/* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index e9d8d3d..6ec28ae 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -19,6 +19,7 @@
 #define PG_OPFAMILY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opfamily_d.h"
 
 /* ----------------
  *		pg_opfamily definition. cpp turns this into
@@ -42,27 +43,4 @@ CATALOG(pg_opfamily,2753)
  */
 typedef FormData_pg_opfamily *Form_pg_opfamily;
 
-/* ----------------
- *		compiler constants for pg_opfamily
- * ----------------
- */
-#define Natts_pg_opfamily				4
-#define Anum_pg_opfamily_opfmethod		1
-#define Anum_pg_opfamily_opfname		2
-#define Anum_pg_opfamily_opfnamespace	3
-#define Anum_pg_opfamily_opfowner		4
-
-#define BOOL_BTREE_FAM_OID 424
-#define BPCHAR_BTREE_FAM_OID 426
-#define BYTEA_BTREE_FAM_OID 428
-#define NETWORK_BTREE_FAM_OID 1974
-#define INTEGER_BTREE_FAM_OID 1976
-#define NAME_BTREE_FAM_OID 1986
-#define OID_BTREE_FAM_OID 1989
-#define TEXT_BTREE_FAM_OID 1994
-#define TEXT_PATTERN_BTREE_FAM_OID 2095
-#define BPCHAR_PATTERN_BTREE_FAM_OID 2097
-#define BOOL_HASH_FAM_OID 2222
-#define TEXT_SPGIST_FAM_OID 4017
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index a8bda00..39ee67e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -18,6 +18,7 @@
 #define PG_PARTITIONED_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_partitioned_table_d.h"
 
 /* ----------------
  *		pg_partitioned_table definition.  cpp turns this into
@@ -59,18 +60,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
 
-/* ----------------
- *		compiler constants for pg_partitioned_table
- * ----------------
- */
-#define Natts_pg_partitioned_table				8
-#define Anum_pg_partitioned_table_partrelid		1
-#define Anum_pg_partitioned_table_partstrat		2
-#define Anum_pg_partitioned_table_partnatts		3
-#define Anum_pg_partitioned_table_partdefid		4
-#define Anum_pg_partitioned_table_partattrs		5
-#define Anum_pg_partitioned_table_partclass		6
-#define Anum_pg_partitioned_table_partcollation 7
-#define Anum_pg_partitioned_table_partexprs		8
-
 #endif							/* PG_PARTITIONED_TABLE_H */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index b1d9ece..116a4a0 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -19,6 +19,7 @@
 #define PG_PLTEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_pltemplate_d.h"
 
 /* ----------------
  *		pg_pltemplate definition.  cpp turns this into
@@ -50,18 +51,4 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 
-/* ----------------
- *		compiler constants for pg_pltemplate
- * ----------------
- */
-#define Natts_pg_pltemplate					8
-#define Anum_pg_pltemplate_tmplname			1
-#define Anum_pg_pltemplate_tmpltrusted		2
-#define Anum_pg_pltemplate_tmpldbacreate	3
-#define Anum_pg_pltemplate_tmplhandler		4
-#define Anum_pg_pltemplate_tmplinline		5
-#define Anum_pg_pltemplate_tmplvalidator	6
-#define Anum_pg_pltemplate_tmpllibrary		7
-#define Anum_pg_pltemplate_tmplacl			8
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 0d94f1a..543077c 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -1,15 +1,19 @@
-/*
+/*-------------------------------------------------------------------------
+ *
  * pg_policy.h
  *	 definition of the system "policy" relation (pg_policy)
  *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
+ *-------------------------------------------------------------------------
  */
 #ifndef PG_POLICY_H
 #define PG_POLICY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_policy_d.h"
 
 /* ----------------
  *		pg_policy definition. cpp turns this into
@@ -39,17 +43,4 @@ CATALOG(pg_policy,3256)
  */
 typedef FormData_pg_policy *Form_pg_policy;
 
-/* ----------------
- *		compiler constants for pg_policy
- * ----------------
- */
-#define Natts_pg_policy					7
-#define Anum_pg_policy_polname			1
-#define Anum_pg_policy_polrelid			2
-#define Anum_pg_policy_polcmd			3
-#define Anum_pg_policy_polpermissive	4
-#define Anum_pg_policy_polroles			5
-#define Anum_pg_policy_polqual			6
-#define Anum_pg_policy_polwithcheck		7
-
 #endif							/* PG_POLICY_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index f05eb32..29ca0ee 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -18,6 +18,7 @@
 #define PG_PROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_proc_d.h"
 
 /* ----------------
  *		pg_proc definition.  cpp turns this into
@@ -75,39 +76,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_proc *Form_pg_proc;
 
-/* ----------------
- *		compiler constants for pg_proc
- * ----------------
- */
-#define Natts_pg_proc					28
-#define Anum_pg_proc_proname			1
-#define Anum_pg_proc_pronamespace		2
-#define Anum_pg_proc_proowner			3
-#define Anum_pg_proc_prolang			4
-#define Anum_pg_proc_procost			5
-#define Anum_pg_proc_prorows			6
-#define Anum_pg_proc_provariadic		7
-#define Anum_pg_proc_protransform		8
-#define Anum_pg_proc_prokind			9
-#define Anum_pg_proc_prosecdef			10
-#define Anum_pg_proc_proleakproof		11
-#define Anum_pg_proc_proisstrict		12
-#define Anum_pg_proc_proretset			13
-#define Anum_pg_proc_provolatile		14
-#define Anum_pg_proc_proparallel		15
-#define Anum_pg_proc_pronargs			16
-#define Anum_pg_proc_pronargdefaults	17
-#define Anum_pg_proc_prorettype			18
-#define Anum_pg_proc_proargtypes		19
-#define Anum_pg_proc_proallargtypes		20
-#define Anum_pg_proc_proargmodes		21
-#define Anum_pg_proc_proargnames		22
-#define Anum_pg_proc_proargdefaults		23
-#define Anum_pg_proc_protrftypes		24
-#define Anum_pg_proc_prosrc				25
-#define Anum_pg_proc_probin				26
-#define Anum_pg_proc_proconfig			27
-#define Anum_pg_proc_proacl				28
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for prokind column
@@ -149,4 +118,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define PROARGMODE_VARIADIC 'v'
 #define PROARGMODE_TABLE	't'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_PROC_H */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 62772b6..92cdcf1 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -18,12 +18,12 @@
 #define PG_PUBLICATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_d.h"
 #include "catalog/objectaddress.h"
 
 /* ----------------
  *		pg_publication definition.  cpp turns this into
  *		typedef struct FormData_pg_publication
- *
  * ----------------
  */
 #define PublicationRelationId			6104
@@ -58,19 +58,6 @@ CATALOG(pg_publication,6104)
  */
 typedef FormData_pg_publication *Form_pg_publication;
 
-/* ----------------
- *		compiler constants for pg_publication
- * ----------------
- */
-
-#define Natts_pg_publication				6
-#define Anum_pg_publication_pubname			1
-#define Anum_pg_publication_pubowner		2
-#define Anum_pg_publication_puballtables	3
-#define Anum_pg_publication_pubinsert		4
-#define Anum_pg_publication_pubupdate		5
-#define Anum_pg_publication_pubdelete		6
-
 typedef struct PublicationActions
 {
 	bool		pubinsert;
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 661466f..864d6ca 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -18,11 +18,11 @@
 #define PG_PUBLICATION_REL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_rel_d.h"
 
 /* ----------------
  *		pg_publication_rel definition.  cpp turns this into
  *		typedef struct FormData_pg_publication_rel
- *
  * ----------------
  */
 #define PublicationRelRelationId				6106
@@ -40,13 +40,4 @@ CATALOG(pg_publication_rel,6106)
  */
 typedef FormData_pg_publication_rel *Form_pg_publication_rel;
 
-/* ----------------
- *		compiler constants for pg_publication_rel
- * ----------------
- */
-
-#define Natts_pg_publication_rel				2
-#define Anum_pg_publication_rel_prpubid			1
-#define Anum_pg_publication_rel_prrelid			2
-
 #endif							/* PG_PUBLICATION_REL_H */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index b7113bf..4c806fd 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -19,6 +19,7 @@
 #define PG_RANGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_range_d.h"
 
 /* ----------------
  *		pg_range definition.  cpp turns this into
@@ -44,18 +45,6 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_range *Form_pg_range;
 
-/* ----------------
- *		compiler constants for pg_range
- * ----------------
- */
-#define Natts_pg_range					6
-#define Anum_pg_range_rngtypid			1
-#define Anum_pg_range_rngsubtype		2
-#define Anum_pg_range_rngcollation		3
-#define Anum_pg_range_rngsubopc			4
-#define Anum_pg_range_rngcanonical		5
-#define Anum_pg_range_rngsubdiff		6
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0c5a05e..02856dd 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -18,6 +18,7 @@
 #define PG_REPLICATION_ORIGIN_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_replication_origin_d.h"
 #include "access/xlogdefs.h"
 
 /* ----------------
@@ -54,12 +55,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
-/* ----------------
- *		compiler constants for pg_replication_origin
- * ----------------
- */
-#define Natts_pg_replication_origin					2
-#define Anum_pg_replication_origin_roident			1
-#define Anum_pg_replication_origin_roname			2
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index a310ecb..d656990 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -22,6 +22,7 @@
 #define PG_REWRITE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_rewrite_d.h"
 
 /* ----------------
  *		pg_rewrite definition.  cpp turns this into
@@ -51,17 +52,4 @@ CATALOG(pg_rewrite,2618)
  */
 typedef FormData_pg_rewrite *Form_pg_rewrite;
 
-/* ----------------
- *		compiler constants for pg_rewrite
- * ----------------
- */
-#define Natts_pg_rewrite				7
-#define Anum_pg_rewrite_rulename		1
-#define Anum_pg_rewrite_ev_class		2
-#define Anum_pg_rewrite_ev_type			3
-#define Anum_pg_rewrite_ev_enabled		4
-#define Anum_pg_rewrite_is_instead		5
-#define Anum_pg_rewrite_ev_qual			6
-#define Anum_pg_rewrite_ev_action		7
-
 #endif							/* PG_REWRITE_H */
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 70dc01e..d6d2f97 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -12,6 +12,7 @@
 #define PG_SECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_seclabel_d.h"
 
 /* ----------------
  *		pg_seclabel definition.  cpp turns this into
@@ -32,15 +33,4 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
-/* ----------------
- *		compiler constants for pg_seclabel
- * ----------------
- */
-#define Natts_pg_seclabel			5
-#define Anum_pg_seclabel_objoid		1
-#define Anum_pg_seclabel_classoid	2
-#define Anum_pg_seclabel_objsubid	3
-#define Anum_pg_seclabel_provider	4
-#define Anum_pg_seclabel_label		5
-
 #endif							/* PG_SECLABEL_H */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index a78417e..de6ed1a 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -12,6 +12,7 @@
 #define PG_SEQUENCE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_sequence_d.h"
 
 #define SequenceRelationId	2224
 
@@ -27,16 +28,11 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+/* ----------------
+ *		Form_pg_sequence corresponds to a pointer to a tuple with
+ *		the format of pg_sequence relation.
+ * ----------------
+ */
 typedef FormData_pg_sequence *Form_pg_sequence;
 
-#define Natts_pg_sequence				8
-#define Anum_pg_sequence_seqrelid		1
-#define Anum_pg_sequence_seqtypid		2
-#define Anum_pg_sequence_seqstart		3
-#define Anum_pg_sequence_seqincrement	4
-#define Anum_pg_sequence_seqmax			5
-#define Anum_pg_sequence_seqmin			6
-#define Anum_pg_sequence_seqcache		7
-#define Anum_pg_sequence_seqcycle		8
-
 #endif							/* PG_SEQUENCE_H */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 17ac34a..708980b 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -28,6 +28,7 @@
 #define PG_SHDEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdepend_d.h"
 
 /* ----------------
  *		pg_shdepend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdepend *Form_pg_shdepend;
 
-/* ----------------
- *		compiler constants for pg_shdepend
- * ----------------
- */
-#define Natts_pg_shdepend			7
-#define Anum_pg_shdepend_dbid		1
-#define Anum_pg_shdepend_classid	2
-#define Anum_pg_shdepend_objid		3
-#define Anum_pg_shdepend_objsubid	4
-#define Anum_pg_shdepend_refclassid 5
-#define Anum_pg_shdepend_refobjid	6
-#define Anum_pg_shdepend_deptype	7
-
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index c0ecc0c..1777144 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -31,6 +31,7 @@
 #define PG_SHDESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdescription_d.h"
 
 /* ----------------
  *		pg_shdescription definition.    cpp turns this into
@@ -56,13 +57,4 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdescription * Form_pg_shdescription;
 
-/* ----------------
- *		compiler constants for pg_shdescription
- * ----------------
- */
-#define Natts_pg_shdescription			3
-#define Anum_pg_shdescription_objoid		1
-#define Anum_pg_shdescription_classoid	2
-#define Anum_pg_shdescription_description 3
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 57b854c..9fceeee 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  *
  * pg_shseclabel.h
- *	  definition of the system "security label" relation (pg_shseclabel)
+ *	  definition of the system "shared security label" relation (pg_shseclabel)
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -12,6 +12,7 @@
 #define PG_SHSECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shseclabel_d.h"
 
 /* ----------------
  *		pg_shseclabel definition. cpp turns this into
@@ -34,14 +35,4 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
-/* ----------------
- *		compiler constants for pg_shseclabel
- * ----------------
- */
-#define Natts_pg_shseclabel				4
-#define Anum_pg_shseclabel_objoid		1
-#define Anum_pg_shseclabel_classoid		2
-#define Anum_pg_shseclabel_provider		3
-#define Anum_pg_shseclabel_label		4
-
 #endif							/* PG_SHSECLABEL_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 8ef2e55..81984d4 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_d.h"
 
 /* ----------------
  *		pg_statistic definition.  cpp turns this into
@@ -127,38 +128,6 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_statistic *Form_pg_statistic;
 
-/* ----------------
- *		compiler constants for pg_statistic
- * ----------------
- */
-#define Natts_pg_statistic				26
-#define Anum_pg_statistic_starelid		1
-#define Anum_pg_statistic_staattnum		2
-#define Anum_pg_statistic_stainherit	3
-#define Anum_pg_statistic_stanullfrac	4
-#define Anum_pg_statistic_stawidth		5
-#define Anum_pg_statistic_stadistinct	6
-#define Anum_pg_statistic_stakind1		7
-#define Anum_pg_statistic_stakind2		8
-#define Anum_pg_statistic_stakind3		9
-#define Anum_pg_statistic_stakind4		10
-#define Anum_pg_statistic_stakind5		11
-#define Anum_pg_statistic_staop1		12
-#define Anum_pg_statistic_staop2		13
-#define Anum_pg_statistic_staop3		14
-#define Anum_pg_statistic_staop4		15
-#define Anum_pg_statistic_staop5		16
-#define Anum_pg_statistic_stanumbers1	17
-#define Anum_pg_statistic_stanumbers2	18
-#define Anum_pg_statistic_stanumbers3	19
-#define Anum_pg_statistic_stanumbers4	20
-#define Anum_pg_statistic_stanumbers5	21
-#define Anum_pg_statistic_stavalues1	22
-#define Anum_pg_statistic_stavalues2	23
-#define Anum_pg_statistic_stavalues3	24
-#define Anum_pg_statistic_stavalues4	25
-#define Anum_pg_statistic_stavalues5	26
-
 /*
  * Several statistical slot "kinds" are defined by core PostgreSQL, as
  * documented below.  Also, custom data types can define their own "kind"
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index d656cd8..be84037 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_EXT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_ext_d.h"
 
 /* ----------------
  *		pg_statistic_ext definition.  cpp turns this into
@@ -59,20 +60,6 @@ CATALOG(pg_statistic_ext,3381)
  */
 typedef FormData_pg_statistic_ext *Form_pg_statistic_ext;
 
-/* ----------------
- *		compiler constants for pg_statistic_ext
- * ----------------
- */
-#define Natts_pg_statistic_ext					8
-#define Anum_pg_statistic_ext_stxrelid			1
-#define Anum_pg_statistic_ext_stxname			2
-#define Anum_pg_statistic_ext_stxnamespace		3
-#define Anum_pg_statistic_ext_stxowner			4
-#define Anum_pg_statistic_ext_stxkeys			5
-#define Anum_pg_statistic_ext_stxkind			6
-#define Anum_pg_statistic_ext_stxndistinct		7
-#define Anum_pg_statistic_ext_stxdependencies	8
-
 #define STATS_EXT_NDISTINCT			'd'
 #define STATS_EXT_DEPENDENCIES		'f'
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 46d0b48..1b2981f 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -12,6 +12,7 @@
 #define PG_SUBSCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -57,21 +58,6 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 
 typedef FormData_pg_subscription *Form_pg_subscription;
 
-/* ----------------
- *		compiler constants for pg_subscription
- * ----------------
- */
-#define Natts_pg_subscription					8
-#define Anum_pg_subscription_subdbid			1
-#define Anum_pg_subscription_subname			2
-#define Anum_pg_subscription_subowner			3
-#define Anum_pg_subscription_subenabled			4
-#define Anum_pg_subscription_subconninfo		5
-#define Anum_pg_subscription_subslotname		6
-#define Anum_pg_subscription_subsynccommit		7
-#define Anum_pg_subscription_subpublications	8
-
-
 typedef struct Subscription
 {
 	Oid			oid;			/* Oid of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index d936973..64aa121 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -14,6 +14,7 @@
 
 #include "access/xlogdefs.h"
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_rel_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -34,15 +35,7 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
-/* ----------------
- *		compiler constants for pg_subscription_rel
- * ----------------
- */
-#define Natts_pg_subscription_rel				4
-#define Anum_pg_subscription_rel_srsubid		1
-#define Anum_pg_subscription_rel_srrelid		2
-#define Anum_pg_subscription_rel_srsubstate		3
-#define Anum_pg_subscription_rel_srsublsn		4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		substate constants
@@ -60,6 +53,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 #define SUBREL_STATE_SYNCWAIT	'w' /* waiting for sync */
 #define SUBREL_STATE_CATCHUP	'c' /* catching up with apply */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 typedef struct SubscriptionRelState
 {
 	Oid			relid;
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 75a3a2e..bd9c118 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -19,6 +19,7 @@
 #define PG_TABLESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_tablespace_d.h"
 
 /* ----------------
  *		pg_tablespace definition.  cpp turns this into
@@ -45,18 +46,4 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
  */
 typedef FormData_pg_tablespace *Form_pg_tablespace;
 
-/* ----------------
- *		compiler constants for pg_tablespace
- * ----------------
- */
-
-#define Natts_pg_tablespace				4
-#define Anum_pg_tablespace_spcname		1
-#define Anum_pg_tablespace_spcowner		2
-#define Anum_pg_tablespace_spcacl		3
-#define Anum_pg_tablespace_spcoptions	4
-
-#define DEFAULTTABLESPACE_OID 1663
-#define GLOBALTABLESPACE_OID 1664
-
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 21109db..c571fb5 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -1,8 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * pg_transform.h
+ *	  definition of the system "transform" relation (pg_transform)
  *
- * Copyright (c) 2012-2018, PostgreSQL Global Development Group
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_transform.h
  *
@@ -16,6 +19,7 @@
 #define PG_TRANSFORM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_transform_d.h"
 
 /* ----------------
  *		pg_transform definition.  cpp turns this into
@@ -32,16 +36,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
-typedef FormData_pg_transform *Form_pg_transform;
-
 /* ----------------
- *		compiler constants for pg_transform
+ *		Form_pg_transform corresponds to a pointer to a tuple with
+ *		the format of pg_transform relation.
  * ----------------
  */
-#define Natts_pg_transform			4
-#define Anum_pg_transform_trftype	1
-#define Anum_pg_transform_trflang	2
-#define Anum_pg_transform_trffromsql	3
-#define Anum_pg_transform_trftosql	4
+typedef FormData_pg_transform *Form_pg_transform;
 
 #endif							/* PG_TRANSFORM_H */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index e307039..2a5d05e 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -19,6 +19,7 @@
 #define PG_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_trigger_d.h"
 
 /* ----------------
  *		pg_trigger definition.  cpp turns this into
@@ -70,29 +71,6 @@ CATALOG(pg_trigger,2620)
  */
 typedef FormData_pg_trigger *Form_pg_trigger;
 
-/* ----------------
- *		compiler constants for pg_trigger
- * ----------------
- */
-#define Natts_pg_trigger				17
-#define Anum_pg_trigger_tgrelid			1
-#define Anum_pg_trigger_tgname			2
-#define Anum_pg_trigger_tgfoid			3
-#define Anum_pg_trigger_tgtype			4
-#define Anum_pg_trigger_tgenabled		5
-#define Anum_pg_trigger_tgisinternal	6
-#define Anum_pg_trigger_tgconstrrelid	7
-#define Anum_pg_trigger_tgconstrindid	8
-#define Anum_pg_trigger_tgconstraint	9
-#define Anum_pg_trigger_tgdeferrable	10
-#define Anum_pg_trigger_tginitdeferred	11
-#define Anum_pg_trigger_tgnargs			12
-#define Anum_pg_trigger_tgattr			13
-#define Anum_pg_trigger_tgargs			14
-#define Anum_pg_trigger_tgqual			15
-#define Anum_pg_trigger_tgoldtable		16
-#define Anum_pg_trigger_tgnewtable		17
-
 /* Bits within tgtype */
 #define TRIGGER_TYPE_ROW				(1 << 0)
 #define TRIGGER_TYPE_BEFORE				(1 << 1)
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 21e6c2c..d0b7aa9 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_d.h"
 
 /* ----------------
  *		pg_ts_config definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config,3602)
 
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
-/* ----------------
- *		compiler constants for pg_ts_config
- * ----------------
- */
-#define Natts_pg_ts_config				4
-#define Anum_pg_ts_config_cfgname		1
-#define Anum_pg_ts_config_cfgnamespace	2
-#define Anum_pg_ts_config_cfgowner		3
-#define Anum_pg_ts_config_cfgparser		4
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 3b5e791..cdee4b4 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_MAP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_map_d.h"
 
 /* ----------------
  *		pg_ts_config_map definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
-/* ----------------
- *		compiler constants for pg_ts_config_map
- * ----------------
- */
-#define Natts_pg_ts_config_map				4
-#define Anum_pg_ts_config_map_mapcfg		1
-#define Anum_pg_ts_config_map_maptokentype	2
-#define Anum_pg_ts_config_map_mapseqno		3
-#define Anum_pg_ts_config_map_mapdict		4
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 74c80f0..58af179 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -19,6 +19,7 @@
 #define PG_TS_DICT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_dict_d.h"
 
 /* ----------------
  *		pg_ts_dict definition.  cpp turns this into
@@ -41,15 +42,4 @@ CATALOG(pg_ts_dict,3600)
 
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
-/* ----------------
- *		compiler constants for pg_ts_dict
- * ----------------
- */
-#define Natts_pg_ts_dict				5
-#define Anum_pg_ts_dict_dictname		1
-#define Anum_pg_ts_dict_dictnamespace	2
-#define Anum_pg_ts_dict_dictowner		3
-#define Anum_pg_ts_dict_dicttemplate	4
-#define Anum_pg_ts_dict_dictinitoption	5
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5b5edd0..3baaef0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -19,6 +19,7 @@
 #define PG_TS_PARSER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_parser_d.h"
 
 /* ----------------
  *		pg_ts_parser definition.  cpp turns this into
@@ -40,17 +41,4 @@ CATALOG(pg_ts_parser,3601)
 
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
-/* ----------------
- *		compiler constants for pg_ts_parser
- * ----------------
- */
-#define Natts_pg_ts_parser					7
-#define Anum_pg_ts_parser_prsname			1
-#define Anum_pg_ts_parser_prsnamespace		2
-#define Anum_pg_ts_parser_prsstart			3
-#define Anum_pg_ts_parser_prstoken			4
-#define Anum_pg_ts_parser_prsend			5
-#define Anum_pg_ts_parser_prsheadline		6
-#define Anum_pg_ts_parser_prslextype		7
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index b641788..7ea6e15 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -19,6 +19,7 @@
 #define PG_TS_TEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_template_d.h"
 
 /* ----------------
  *		pg_ts_template definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_template,3764)
 
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
-/* ----------------
- *		compiler constants for pg_ts_template
- * ----------------
- */
-#define Natts_pg_ts_template				4
-#define Anum_pg_ts_template_tmplname		1
-#define Anum_pg_ts_template_tmplnamespace	2
-#define Anum_pg_ts_template_tmplinit		3
-#define Anum_pg_ts_template_tmpllexize		4
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 6aa9185..f7ddb0c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -19,6 +19,7 @@
 #define PG_TYPE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_type_d.h"
 
 /* ----------------
  *		pg_type definition.  cpp turns this into
@@ -231,135 +232,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_type *Form_pg_type;
 
-/* ----------------
- *		compiler constants for pg_type
- * ----------------
- */
-#define Natts_pg_type					30
-#define Anum_pg_type_typname			1
-#define Anum_pg_type_typnamespace		2
-#define Anum_pg_type_typowner			3
-#define Anum_pg_type_typlen				4
-#define Anum_pg_type_typbyval			5
-#define Anum_pg_type_typtype			6
-#define Anum_pg_type_typcategory		7
-#define Anum_pg_type_typispreferred		8
-#define Anum_pg_type_typisdefined		9
-#define Anum_pg_type_typdelim			10
-#define Anum_pg_type_typrelid			11
-#define Anum_pg_type_typelem			12
-#define Anum_pg_type_typarray			13
-#define Anum_pg_type_typinput			14
-#define Anum_pg_type_typoutput			15
-#define Anum_pg_type_typreceive			16
-#define Anum_pg_type_typsend			17
-#define Anum_pg_type_typmodin			18
-#define Anum_pg_type_typmodout			19
-#define Anum_pg_type_typanalyze			20
-#define Anum_pg_type_typalign			21
-#define Anum_pg_type_typstorage			22
-#define Anum_pg_type_typnotnull			23
-#define Anum_pg_type_typbasetype		24
-#define Anum_pg_type_typtypmod			25
-#define Anum_pg_type_typndims			26
-#define Anum_pg_type_typcollation		27
-#define Anum_pg_type_typdefaultbin		28
-#define Anum_pg_type_typdefault			29
-#define Anum_pg_type_typacl				30
-
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define JSONOID 114
-#define XMLOID 142
-#define PGNODETREEOID	194
-#define PGNDISTINCTOID	3361
-#define PGDEPENDENCIESOID	3402
-#define PGDDLCOMMANDOID 32
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define MACADDROID 829
-#define INETOID 869
-#define CIDROID 650
-#define MACADDR8OID 774
-#define INT2ARRAYOID		1005
-#define INT4ARRAYOID		1007
-#define TEXTARRAYOID		1009
-#define OIDARRAYOID			1028
-#define FLOAT4ARRAYOID 1021
-#define ACLITEMOID		1033
-#define CSTRINGARRAYOID		1263
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
-#define RECORDOID		2249
-#define RECORDARRAYOID	2287
-#define CSTRINGOID		2275
-#define ANYOID			2276
-#define ANYARRAYOID		2277
-#define VOIDOID			2278
-#define TRIGGEROID		2279
-#define EVTTRIGGEROID		3838
-#define LANGUAGE_HANDLEROID		2280
-#define INTERNALOID		2281
-#define OPAQUEOID		2282
-#define ANYELEMENTOID	2283
-#define ANYNONARRAYOID	2776
-#define ANYENUMOID		3500
-#define FDW_HANDLEROID	3115
-#define INDEX_AM_HANDLEROID 325
-#define TSM_HANDLEROID	3310
-#define ANYRANGEOID		3831
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * macros
@@ -396,4 +269,6 @@ typedef FormData_pg_type *Form_pg_type;
 	 (typid) == ANYENUMOID || \
 	 (typid) == ANYRANGEOID)
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_TYPE_H */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 3da6496..ec62ee2 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -18,6 +18,7 @@
 #define PG_USER_MAPPING_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_user_mapping_d.h"
 
 /* ----------------
  *		pg_user_mapping definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_user_mapping,1418)
  */
 typedef FormData_pg_user_mapping *Form_pg_user_mapping;
 
-/* ----------------
- *		compiler constants for pg_user_mapping
- * ----------------
- */
-
-#define Natts_pg_user_mapping				3
-#define Anum_pg_user_mapping_umuser			1
-#define Anum_pg_user_mapping_umserver		2
-#define Anum_pg_user_mapping_umoptions		3
-
 #endif							/* PG_USER_MAPPING_H */
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index f75c887..79a6cf8 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -1,9 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_type.h
- *	  Hard-wired knowledge about some standard type OIDs.
- *
- * XXX keep this in sync with src/include/catalog/pg_type.h
+ *	  Interface to generated type OID symbols.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -15,65 +13,6 @@
 #ifndef PG_TYPE_H
 #define PG_TYPE_H
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define INETOID 869
-#define CIDROID 650
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
+#include "catalog/pg_type_d.h"
 
 #endif							/* PG_TYPE_H */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 9263f5a..e2389b5 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -456,9 +456,11 @@ EOF
 
 	my $mf = Project::read_file('src/backend/catalog/Makefile');
 	$mf =~ s{\\\r?\n}{}g;
-	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
-	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
+	$mf =~ /^CATALOG_HEADERS\s*:?=(.*)$/gm
+	  || croak "Could not find CATALOG_HEADERS in Makefile\n";
 	my @bki_srcs = split /\s+/, $1;
+	push @bki_srcs, 'toasting.h';
+	push @bki_srcs, 'indexing.h';
 	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
 	my @bki_data = split /\s+/, $1;
@@ -469,13 +471,23 @@ EOF
 				'src/backend/catalog/postgres.bki',
 				"src/include/catalog/$bki"))
 		{
-			print "Generating postgres.bki and schemapg.h...\n";
+			print "Generating postgres.bki and catalog headers...\n";
 			chdir('src/backend/catalog');
 			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
-			system(
-"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
-			);
+			system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
 			chdir('../../..');
+
+			# Copy generated headers to include directory.
+			opendir(my $dh, 'src/backend/catalog/')
+			  || die "Can't opendir src/backend/catalog/ $!";
+			my @def_headers = grep { /pg_\w+_d\.h$/  } readdir($dh);
+			closedir $dh;
+			foreach my $def_header (@def_headers)
+			{
+				copyFile(
+				"src/backend/catalog/$def_header",
+				"src/include/catalog/$def_header");
+			}
 			copyFile(
 				'src/backend/catalog/schemapg.h',
 				'src/include/catalog/schemapg.h');
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 0a88b52..b052496 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -48,6 +48,7 @@ if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h
 if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
 if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h
+if exist src\include\catalog\pg_*_d.h del /q src\include\catalog\pg_*_d.h
 if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
 
 if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h
@@ -67,6 +68,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalo
 if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
 if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
 if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
+if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
 if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
 if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index a32aaa6..79243a1 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -198,8 +198,8 @@ sub pre_indent
 s!(^#ifdef[ \t]+__cplusplus.*\nextern[ \t]+"C"[ \t]*\n)\{[ \t]*$!$1$extern_c_start!gm;
 	$source =~ s!(^#ifdef[ \t]+__cplusplus.*\n)\}[ \t]*$!$1$extern_c_stop!gm;
 
-	# Protect backslashes in DATA() and wrapping in CATALOG()
-	$source =~ s!^((DATA|CATALOG)\(.*)$!/*$1*/!gm;
+	# Protect wrapping in CATALOG()
+	$source =~ s!^(CATALOG\(.*)$!/*$1*/!gm;
 
 	return $source;
 }
@@ -210,8 +210,8 @@ sub post_indent
 	my $source          = shift;
 	my $source_filename = shift;
 
-	# Restore DATA/CATALOG lines
-	$source =~ s!^/\*((DATA|CATALOG)\(.*)\*/$!$1!gm;
+	# Restore CATALOG lines
+	$source =~ s!^/\*(CATALOG\(.*)\*/$!$1!gm;
 
 	# Put back braces for extern "C"
 	$source =~ s!^/\* Open extern "C" \*/$!{!gm;
-- 
2.7.4

v9-apply-bootstrap-data-patches.shapplication/x-sh; name=v9-apply-bootstrap-data-patches.shDownload
#44John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#43)
12 attachment(s)
Re: WIP: a way forward on bootstrap data

I wrote:

I've attached version 9, whose biggest change is to address the above
points of review. I pushed all of the catalog header build logic into
catalog Makefile to avoid creating a separate symbol file. This
involved putting the distprep logic there as well. Enough of the
structure changed that one or two names didn't make sense anymore, so
I changed them.

As suggested, the conversion script is now part of the patchset and
not committed to the repo. To run the conversion, save everything to a
directory and update the dir vars at the top of
apply-bootstrap-data-patches.sh accordingly.

A couple things to note that I didn't do:
-With all the new generated headers, the message "Writing ..." is now
quite verbose. It might be worth changing that.
-I'm not sure if I need to change anything involving "make install".
-I haven't tested the MSVC changes.
-I didn't change any clients to actually use the new headers directly.
That might be too ambitious for this cycle anyway.

While this goes through review, I'll get a head start rebasing the
human readable OIDs and data compaction patches.

It didn't take that long to rebase the remaining parts of the
patchset, so despite what I said above I went ahead and put them in
version 10 (attached), this time via scripted bulk editing rather than
as large patches. Changes since the last patchset that contained these
parts:

-Split out the generation of pg_type OID symbols into its own patch.
-Remove single-purpose magic behaviors.
-Ditto for the ability to abbreviate attribute names. I decided the
added complexity and possible confusion wasn't worth the space
savings.
-Add some more OID macros for pg_aggregate and pg_range that I missed before.

Also, more generally, I cleaned up the apply-patches script and edited
its comments and commit messages.

Tom Lane wrote:

In 0010, you relabel the types of some OID columns so that genbki.pl
will know which lookup to apply to them. That's not such a problem for
the relabelings that are just macros and genbki.pl converts back to
type OID in the .bki file. But you also did things like s/Oid/regtype/,
and that IS a problem because it will affect what client code sees in
those catalog columns. We've discussed changing those columns to
regfoo types in the past, and decided not to, because of the likelihood
of breaking client queries. I do not think this patch gets to change
that policy. So the way to identify the lookup rule needs to be
independent of whether the column is declared as Oid or an Oid alias type.
Perhaps an explicit marker telling what transformation to make, like

Oid rngsubtype BKI_LOOKUP(pg_type);

would work for that.

This is also done (now in 0007).

-John Naylor

Attachments:

v10-apply-bootstrap-data-patches.shapplication/x-sh; name=v10-apply-bootstrap-data-patches.shDownload
v10-0001-Create-infrastructure-for-working-with-the-new-data-.patchtext/x-patch; charset=US-ASCII; name=v10-0001-Create-infrastructure-for-working-with-the-new-data-.patchDownload
From d6f191e88812bbadce446f67f88834af9c697e4a Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 11 Mar 2018 16:18:10 +0700
Subject: [PATCH] Create infrastructure for working with the new data files

Remove data parsing from the original Catalogs() function and rename it to
ParseHeader() to reflect its new, limited role of extracting the schema
info from a single header. The new data files are handled by the new
function ParseData(). Having these functions work with only one file at a
time requires their callers to do more work, but results in a cleaner design.

rewrite_dat.pl reads in pg_*.dat files and rewrites them in a standard
format. It writes attributes in order, preserves comments and folds
consecutive blank lines. The meta-attributes oid, oid_symbol and (sh)descr
are on their own line, if present.
---
 src/backend/catalog/Catalog.pm     | 219 +++++++++++++++++--------------------
 src/include/catalog/rewrite_dat.pl | 172 +++++++++++++++++++++++++++++
 2 files changed, 275 insertions(+), 116 deletions(-)
 create mode 100644 src/include/catalog/rewrite_dat.pl

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 9ced154..dc6e0d3 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------
 #
 # Catalog.pm
-#    Perl module that extracts info from catalog headers into Perl
+#    Perl module that extracts info from catalog files into Perl
 #    data structures
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -16,12 +16,11 @@ package Catalog;
 use strict;
 use warnings;
 
-# Call this function with an array of names of header files to parse.
-# Returns a nested data structure describing the data in the headers.
-sub Catalogs
+# Parses a catalog header file into a data structure describing the schema
+# of the catalog.
+sub ParseHeader
 {
-	my (%catalogs, $catname, $declaring_attributes, $most_recent);
-	$catalogs{names} = [];
+	my $input_file = shift;
 
 	# There are a few types which are given one name in the C source, but a
 	# different name at the SQL level.  These are enumerated here.
@@ -34,19 +33,16 @@ sub Catalogs
 		'TransactionId' => 'xid',
 		'XLogRecPtr'    => 'pg_lsn');
 
-	foreach my $input_file (@_)
-	{
 		my %catalog;
+		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
 
 		$catalog{columns} = [];
-		$catalog{data}    = [];
+		$catalog{toasting} = [];
+		$catalog{indexing} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
-		my ($filename) = ($input_file =~ m/(\w+)\.h$/);
-		my $natts_pat = "Natts_$filename";
-
 		# Scan the input file.
 		while (<$ifh>)
 		{
@@ -64,9 +60,6 @@ sub Catalogs
 				redo;
 			}
 
-			# Remember input line number for later.
-			my $input_line_number = $.;
-
 			# Strip useless whitespace and trailing semicolons.
 			chomp;
 			s/^\s+//;
@@ -74,68 +67,17 @@ sub Catalogs
 			s/\s+/ /g;
 
 			# Push the data into the appropriate data structure.
-			if (/$natts_pat\s+(\d+)/)
-			{
-				$catalog{natts} = $1;
-			}
-			elsif (
-				/^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/)
-			{
-				check_natts($filename, $catalog{natts}, $3, $input_file,
-					$input_line_number);
-
-				push @{ $catalog{data} }, { oid => $2, bki_values => $3 };
-			}
-			elsif (/^DESCR\(\"(.*)\"\)$/)
-			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die "DESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "DESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{descr} = $1;
-				}
-			}
-			elsif (/^SHDESCR\(\"(.*)\"\)$/)
+			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
 			{
-				$most_recent = $catalog{data}->[-1];
-
-				# this tests if most recent line is not a DATA() statement
-				if (ref $most_recent ne 'HASH')
-				{
-					die
-					  "SHDESCR() does not apply to any catalog ($input_file)";
-				}
-				if (!defined $most_recent->{oid})
-				{
-					die "SHDESCR() does not apply to any oid ($input_file)";
-				}
-				elsif ($1 ne '')
-				{
-					$most_recent->{shdescr} = $1;
-				}
-			}
-			elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
-			{
-				$catname = 'toasting';
 				my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3);
-				push @{ $catalog{data} },
+				push @{ $catalog{toasting} },
 				  "declare toast $toast_oid $index_oid on $toast_name\n";
 			}
 			elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
 			{
-				$catname = 'indexing';
 				my ($is_unique, $index_name, $index_oid, $using) =
 				  ($1, $2, $3, $4);
-				push @{ $catalog{data} },
+				push @{ $catalog{indexing} },
 				  sprintf(
 					"declare %sindex %s %s %s\n",
 					$is_unique ? 'unique ' : '',
@@ -143,16 +85,13 @@ sub Catalogs
 			}
 			elsif (/^BUILD_INDICES/)
 			{
-				push @{ $catalog{data} }, "build indices\n";
+				push @{ $catalog{indexing} }, "build indices\n";
 			}
 			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
 			{
-				$catname = $1;
+				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
 
-				# Store pg_* catalog names in the same order we receive them
-				push @{ $catalogs{names} }, $catname;
-
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
@@ -173,7 +112,7 @@ sub Catalogs
 				}
 				if (/^}/)
 				{
-					undef $declaring_attributes;
+					$declaring_attributes = 0;
 				}
 				else
 				{
@@ -227,32 +166,99 @@ sub Catalogs
 				}
 			}
 		}
-		$catalogs{$catname} = \%catalog;
 		close $ifh;
-	}
-	return \%catalogs;
+	return \%catalog;
 }
 
-# Split a DATA line into fields.
-# Call this on the bki_values element of a DATA item returned by Catalogs();
-# it returns a list of field values.  We don't strip quoting from the fields.
-# Note: it should be safe to assign the result to a list of length equal to
-# the nominal number of catalog fields, because check_natts already checked
-# the number of fields.
-sub SplitDataLine
+# Parses a file containing Perl data structure literals, returning live data.
+#
+# The parameter $preserve_formatting needs to be set for callers that want
+# to work with non-data lines in the data files, such as comments and blank
+# lines. If a caller just wants consume the data, leave it unset.
+sub ParseData
 {
-	my $bki_values = shift;
-
-	# This handling of quoted strings might look too simplistic, but it
-	# matches what bootscanner.l does: that has no provision for quote marks
-	# inside quoted strings, either.  If we don't have a quoted string, just
-	# snarf everything till next whitespace.  That will accept some things
-	# that bootscanner.l will see as erroneous tokens; but it seems wiser
-	# to do that and let bootscanner.l complain than to silently drop
-	# non-whitespace characters.
-	my @result = $bki_values =~ /"[^"]*"|\S+/g;
-
-	return @result;
+	my ($input_file, $schema, $preserve_formatting) = @_;
+
+	open(my $ifd, '<', $input_file) || die "$input_file: $!";
+	$input_file =~ /\w+\.dat$/
+	  or die "Input file needs to be a .dat file.\n";
+	my $data = [];
+	my $prev_blank = 0;
+
+	# Scan the input file.
+	while (<$ifd>)
+	{
+		my $datum;
+
+		if (/^\s*$/)
+		{
+			# Preserve non-consecutive blank lines.
+			# Newline gets added by caller.
+			next if $prev_blank;
+			$datum = '';
+			$prev_blank = 1;
+		}
+		else
+		{
+			$prev_blank = 0;
+		}
+
+		if (/{/)
+		{
+			# Capture the hash ref
+			# NB: Assumes that the next hash ref can't start on the
+			# same line where the present one ended.
+			# Not foolproof, but we shouldn't need a full parser,
+			# since we expect relatively well-behaved input.
+
+			# Quick hack to detect when we have a full hash ref to
+			# parse. We can't just use a regex because of values in
+			# pg_aggregate and pg_proc like '{0,0}'.
+			my $lcnt = tr/{//;
+			my $rcnt = tr/}//;
+
+			if ($lcnt == $rcnt)
+			{
+				eval '$datum = ' . $_;
+				if (!ref $datum)
+				{
+					die "Error parsing $_\n$!";
+				}
+			}
+			else
+			{
+				my $next_line = <$ifd>;
+				die "$input_file: ends within Perl hash\n"
+				  if !defined $next_line;
+				$_ .= $next_line;
+				redo;
+			}
+		}
+
+		# Capture comments that are on their own line.
+		elsif (/^\s*(#.*?)\s*$/)
+		{
+			$datum = $1;
+		}
+
+		# Assume bracket is the only token in the line.
+		elsif (/^\s*(\[|\])\s*$/)
+		{
+			$datum = $1;
+		}
+
+		next if !defined $datum;
+
+		# Hash references are data, so always push.
+		# Other datums are non-data strings, so only push if we
+		# want formatting.
+		if ($preserve_formatting or ref $datum eq 'HASH')
+		{
+			push @$data, $datum;
+		}
+	}
+	close $ifd;
+	return $data;
 }
 
 # Fill in default values of a record using the given schema. It's the
@@ -308,7 +314,6 @@ sub RenameTempFile
 	rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
-
 # Find a symbol defined in a particular header file and extract the value.
 #
 # The include path has to be passed as a reference to an array.
@@ -340,22 +345,4 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
-
-# verify the number of fields in the passed-in DATA line
-sub check_natts
-{
-	my ($catname, $natts, $bki_val, $file, $line) = @_;
-
-	die
-"Could not find definition for Natts_${catname} before start of DATA() in $file\n"
-	  unless defined $natts;
-
-	my $nfields = scalar(SplitDataLine($bki_val));
-
-	die sprintf
-"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n",
-	  $file, $line, $natts, $nfields
-	  unless $natts == $nfields;
-}
-
 1;
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
new file mode 100644
index 0000000..614ec01
--- /dev/null
+++ b/src/include/catalog/rewrite_dat.pl
@@ -0,0 +1,172 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+#
+# rewrite_dat.pl
+#    Perl script that reads in a catalog data file and writes out
+#    a functionally equivalent file in a standard format.
+#
+#    -Metadata entries are on their own line within the data entry.
+#    -Attributes are in the same order they would be in the catalog table.
+#
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# /src/include/catalog/rewrite_dat.pl
+#
+#----------------------------------------------------------------------
+
+use Catalog;
+
+use strict;
+use warnings;
+
+my @input_files;
+my $output_path = '';
+
+# Process command line switches.
+while (@ARGV)
+{
+	my $arg = shift @ARGV;
+	if ($arg !~ /^-/)
+	{
+		push @input_files, $arg;
+	}
+	elsif ($arg =~ /^-o/)
+	{
+		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+	}
+	else
+	{
+		usage();
+	}
+}
+
+# Sanity check arguments.
+die "No input files.\n"
+  if !@input_files;
+
+# Make sure output_path ends in a slash.
+if ($output_path ne '' && substr($output_path, -1) ne '/')
+{
+	$output_path .= '/';
+}
+
+# Metadata of a catalog entry
+my @METADATA = ('oid', 'oid_symbol', 'descr', 'shdescr');
+
+# Read all the input files into internal data structures.
+# We pass data file names as arguments and then look for matching
+# headers to parse the schema from.
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my @attnames;
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		push @attnames, $attname;
+	}
+
+	my $catalog_data = Catalog::ParseData($datfile, $schema, 1);
+	next if !defined $catalog_data;
+
+	# Overwrite .dat files in place.
+	my $datfile = "$output_path$catname.dat";
+	open my $dat, '>', $datfile
+	  or die "can't open $datfile: $!";
+
+	# Write the data.
+	foreach my $data (@$catalog_data)
+	{
+		# Either a newline, comment, or bracket - just write it out.
+		if (! ref $data)
+		{
+			print $dat "$data\n";
+		}
+		# Hash ref representing a data entry.
+		elsif (ref $data eq 'HASH')
+		{
+			my %values = %$data;
+			print $dat "{ ";
+
+			# Separate out metadata fields for readability.
+			my $metadata_line = format_line(\%values, @METADATA);
+			if ($metadata_line)
+			{
+				print $dat $metadata_line;
+				print $dat ",\n";
+			}
+			my $data_line = format_line(\%values, @attnames);
+
+			# Line up with metadata line, if there is one.
+			if ($metadata_line)
+			{
+				print $dat '  ';
+			}
+			print $dat $data_line;
+			print $dat " },\n";
+		}
+		else
+		{
+			die "Unexpected data type";
+		}
+	}
+}
+
+# Format the individual elements of a Perl hash into a valid string
+# representation. We do this ourselves, rather than use native Perl
+# facilities, so we can keep control over the exact formatting of the
+# data files.
+sub format_line
+{
+	my $data = shift;
+	my @attnames = @_;
+
+	my $first = 1;
+	my $value;
+	my $line = '';
+
+	foreach my $attname (@attnames)
+	{
+		next if !defined $data->{$attname};
+		$value = $data->{$attname};
+
+		# Re-escape single quotes.
+		$value =~ s/'/\\'/g;
+
+		if (!$first)
+		{
+			$line .= ', ';
+		}
+		$first = 0;
+
+		$line .= "$attname => '$value'";
+	}
+	return $line;
+}
+
+sub usage
+{
+	die <<EOM;
+Usage: rewrite_dat.pl [options] datafile...
+
+Options:
+    -o               output path
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
-- 
2.7.4

v10-0002-Hand-edits-of-data-files.patchtext/x-patch; charset=US-ASCII; name=v10-0002-Hand-edits-of-data-files.patchDownload
From 9454316187349a2918409274464397b125815005 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:18:06 +0700
Subject: [PATCH] Hand edits of data files

Re-doublequote values that are macros expanded by initdb.c, remove stray
comments, fix up whitespace, and do a minimum of comment editing to
reflect the new data format.
---
 src/include/catalog/pg_amop.dat      | 72 ++++++++++++++++++++++++++++++++++++
 src/include/catalog/pg_amproc.dat    | 23 ++++++++++++
 src/include/catalog/pg_authid.dat    |  9 ++---
 src/include/catalog/pg_cast.dat      |  6 +++
 src/include/catalog/pg_class.dat     | 10 +----
 src/include/catalog/pg_database.dat  |  5 ++-
 src/include/catalog/pg_namespace.dat |  2 -
 src/include/catalog/pg_opclass.dat   |  9 +++++
 src/include/catalog/pg_operator.dat  |  3 +-
 src/include/catalog/pg_proc.dat      | 46 +++++------------------
 src/include/catalog/pg_range.dat     |  2 -
 src/include/catalog/pg_type.dat      | 45 ++++++----------------
 12 files changed, 143 insertions(+), 89 deletions(-)

diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index a77bab0..86fecba 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -20,48 +20,56 @@
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '94', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '524', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '520', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int24
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '532', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '542', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '536', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int28
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '1864', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '1866', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '1862', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '1867', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '21', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '1865', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int4
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '97', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '523', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '3', amoppurpose => 's', amopopr => '96', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '4', amoppurpose => 's', amopopr => '525', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '23', amopstrategy => '5', amoppurpose => 's', amopopr => '521', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int42
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '541', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '533', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '543', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '537', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int48
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '37', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '80', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '15', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '82', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '23', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '76', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators int8
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '3', amoppurpose => 's', amopopr => '410', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '4', amoppurpose => 's', amopopr => '415', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '20', amopstrategy => '5', amoppurpose => 's', amopopr => '413', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int82
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1870', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '2', amoppurpose => 's', amopopr => '1872', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '3', amoppurpose => 's', amopopr => '1868', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '4', amoppurpose => 's', amopopr => '1873', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '21', amopstrategy => '5', amoppurpose => 's', amopopr => '1871', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators int84
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '418', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1976', amoplefttype => '20', amoprighttype => '23', amopstrategy => '2', amoppurpose => 's', amopopr => '420', amopmethod => '403', amopsortfamily => '0' },
@@ -101,18 +109,21 @@
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '3', amoppurpose => 's', amopopr => '620', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '4', amoppurpose => 's', amopopr => '625', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '700', amopstrategy => '5', amoppurpose => 's', amopopr => '623', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float48
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1122', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '1124', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '1120', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '1125', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '700', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '1123', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators float8
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '672', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '2', amoppurpose => 's', amopopr => '673', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '3', amoppurpose => 's', amopopr => '670', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '4', amoppurpose => 's', amopopr => '675', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '701', amopstrategy => '5', amoppurpose => 's', amopopr => '674', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators float84
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1132', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '1970', amoplefttype => '701', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '1134', amopmethod => '403', amopsortfamily => '0' },
@@ -176,48 +187,56 @@
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '1093', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '1098', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '1097', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2345', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2346', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2347', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2348', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2349', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2358', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2359', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2360', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2361', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1082', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2362', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamp
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '3', amoppurpose => 's', amopopr => '2060', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '4', amoppurpose => 's', amopopr => '2065', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '5', amoppurpose => 's', amopopr => '2064', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2371', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2372', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2373', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2374', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2375', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamptz
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '2534', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '2535', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '2536', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '2537', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1114', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '2538', amopmethod => '403', amopsortfamily => '0' },
+
 # default operators timestamptz
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1322', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '2', amoppurpose => 's', amopopr => '1323', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '3', amoppurpose => 's', amopopr => '1320', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '4', amoppurpose => 's', amopopr => '1325', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '5', amoppurpose => 's', amopopr => '1324', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs date
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '2384', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '2', amoppurpose => 's', amopopr => '2385', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '3', amoppurpose => 's', amopopr => '2386', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '4', amoppurpose => 's', amopopr => '2387', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1082', amopstrategy => '5', amoppurpose => 's', amopopr => '2388', amopmethod => '403', amopsortfamily => '0' },
+
 # crosstype operators vs timestamp
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2540', amopmethod => '403', amopsortfamily => '0' },
 { amopfamily => '434', amoplefttype => '1184', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2541', amopmethod => '403', amopsortfamily => '0' },
@@ -389,17 +408,22 @@
 
 # bpchar_ops
 { amopfamily => '427', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # char_ops
 { amopfamily => '431', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '92', amopmethod => '405', amopsortfamily => '0' },
+
 # date_ops
 { amopfamily => '435', amoplefttype => '1082', amoprighttype => '1082', amopstrategy => '1', amoppurpose => 's', amopopr => '1093', amopmethod => '405', amopsortfamily => '0' },
+
 # float_ops
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '620', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '670', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '700', amoprighttype => '701', amopstrategy => '1', amoppurpose => 's', amopopr => '1120', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1971', amoplefttype => '701', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '1130', amopmethod => '405', amopsortfamily => '0' },
+
 # network_ops
 { amopfamily => '1975', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1201', amopmethod => '405', amopsortfamily => '0' },
+
 # integer_ops
 { amopfamily => '1977', amoplefttype => '21', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '94', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '96', amopmethod => '405', amopsortfamily => '0' },
@@ -410,52 +434,76 @@
 { amopfamily => '1977', amoplefttype => '23', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '15', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '21', amopstrategy => '1', amoppurpose => 's', amopopr => '1868', amopmethod => '405', amopsortfamily => '0' },
 { amopfamily => '1977', amoplefttype => '20', amoprighttype => '23', amopstrategy => '1', amoppurpose => 's', amopopr => '416', amopmethod => '405', amopsortfamily => '0' },
+
 # interval_ops
 { amopfamily => '1983', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '1', amoppurpose => 's', amopopr => '1330', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr_ops
 { amopfamily => '1985', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1220', amopmethod => '405', amopsortfamily => '0' },
+
 # macaddr8_ops
 { amopfamily => '3372', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3362', amopmethod => '405', amopsortfamily => '0' },
+
 # name_ops
 { amopfamily => '1987', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '93', amopmethod => '405', amopsortfamily => '0' },
+
 # oid_ops
 { amopfamily => '1990', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '607', amopmethod => '405', amopsortfamily => '0' },
+
 # oidvector_ops
 { amopfamily => '1992', amoplefttype => '30', amoprighttype => '30', amopstrategy => '1', amoppurpose => 's', amopopr => '649', amopmethod => '405', amopsortfamily => '0' },
+
 # text_ops
 { amopfamily => '1995', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # time_ops
 { amopfamily => '1997', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1108', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamptz_ops
 { amopfamily => '1999', amoplefttype => '1184', amoprighttype => '1184', amopstrategy => '1', amoppurpose => 's', amopopr => '1320', amopmethod => '405', amopsortfamily => '0' },
+
 # timetz_ops
 { amopfamily => '2001', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1550', amopmethod => '405', amopsortfamily => '0' },
+
 # timestamp_ops
 { amopfamily => '2040', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2060', amopmethod => '405', amopsortfamily => '0' },
+
 # bool_ops
 { amopfamily => '2222', amoplefttype => '16', amoprighttype => '16', amopstrategy => '1', amoppurpose => 's', amopopr => '91', amopmethod => '405', amopsortfamily => '0' },
+
 # bytea_ops
 { amopfamily => '2223', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1955', amopmethod => '405', amopsortfamily => '0' },
+
 # xid_ops
 { amopfamily => '2225', amoplefttype => '28', amoprighttype => '28', amopstrategy => '1', amoppurpose => 's', amopopr => '352', amopmethod => '405', amopsortfamily => '0' },
+
 # cid_ops
 { amopfamily => '2226', amoplefttype => '29', amoprighttype => '29', amopstrategy => '1', amoppurpose => 's', amopopr => '385', amopmethod => '405', amopsortfamily => '0' },
+
 # abstime_ops
 { amopfamily => '2227', amoplefttype => '702', amoprighttype => '702', amopstrategy => '1', amoppurpose => 's', amopopr => '560', amopmethod => '405', amopsortfamily => '0' },
+
 # reltime_ops
 { amopfamily => '2228', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '566', amopmethod => '405', amopsortfamily => '0' },
+
 # text_pattern_ops
 { amopfamily => '2229', amoplefttype => '25', amoprighttype => '25', amopstrategy => '1', amoppurpose => 's', amopopr => '98', amopmethod => '405', amopsortfamily => '0' },
+
 # bpchar_pattern_ops
 { amopfamily => '2231', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1054', amopmethod => '405', amopsortfamily => '0' },
+
 # aclitem_ops
 { amopfamily => '2235', amoplefttype => '1033', amoprighttype => '1033', amopstrategy => '1', amoppurpose => 's', amopopr => '974', amopmethod => '405', amopsortfamily => '0' },
+
 # uuid_ops
 { amopfamily => '2969', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2972', amopmethod => '405', amopsortfamily => '0' },
+
 # pg_lsn_ops
 { amopfamily => '3254', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3222', amopmethod => '405', amopsortfamily => '0' },
+
 # numeric_ops
 { amopfamily => '1998', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1752', amopmethod => '405', amopsortfamily => '0' },
+
 # array_ops
 { amopfamily => '627', amoplefttype => '2277', amoprighttype => '2277', amopstrategy => '1', amoppurpose => 's', amopopr => '1070', amopmethod => '405', amopsortfamily => '0' },
 
@@ -699,24 +747,28 @@
 { amopfamily => '3794', amoplefttype => '869', amoprighttype => '869', amopstrategy => '27', amoppurpose => 's', amopopr => '934', amopmethod => '4000', amopsortfamily => '0' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '1', amoppurpose => 's', amopopr => '1957', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '2', amoppurpose => 's', amopopr => '1958', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '3', amoppurpose => 's', amopopr => '1955', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '4', amoppurpose => 's', amopopr => '1960', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4064', amoplefttype => '17', amoprighttype => '17', amopstrategy => '5', amoppurpose => 's', amopopr => '1959', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax "char"
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '1', amoppurpose => 's', amopopr => '631', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '2', amoppurpose => 's', amopopr => '632', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '3', amoppurpose => 's', amopopr => '92', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '4', amoppurpose => 's', amopopr => '634', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4062', amoplefttype => '18', amoprighttype => '18', amopstrategy => '5', amoppurpose => 's', amopopr => '633', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax name
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '1', amoppurpose => 's', amopopr => '660', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '2', amoppurpose => 's', amopopr => '661', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '3', amoppurpose => 's', amopopr => '93', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '4', amoppurpose => 's', amopopr => '663', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4065', amoplefttype => '19', amoprighttype => '19', amopstrategy => '5', amoppurpose => 's', amopopr => '662', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax integer
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '1', amoppurpose => 's', amopopr => '412', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4054', amoplefttype => '20', amoprighttype => '20', amopstrategy => '2', amoppurpose => 's', amopopr => '414', amopmethod => '3580', amopsortfamily => '0' },
@@ -770,18 +822,21 @@
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '3', amoppurpose => 's', amopopr => '98', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '4', amoppurpose => 's', amopopr => '667', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4056', amoplefttype => '25', amoprighttype => '25', amopstrategy => '5', amoppurpose => 's', amopopr => '666', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax oid
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '1', amoppurpose => 's', amopopr => '609', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '2', amoppurpose => 's', amopopr => '611', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '3', amoppurpose => 's', amopopr => '607', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '4', amoppurpose => 's', amopopr => '612', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4068', amoplefttype => '26', amoprighttype => '26', amopstrategy => '5', amoppurpose => 's', amopopr => '610', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax tid
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '1', amoppurpose => 's', amopopr => '2799', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '2', amoppurpose => 's', amopopr => '2801', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '3', amoppurpose => 's', amopopr => '387', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '4', amoppurpose => 's', amopopr => '2802', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4069', amoplefttype => '27', amoprighttype => '27', amopstrategy => '5', amoppurpose => 's', amopopr => '2800', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax float (float4, float8)
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '1', amoppurpose => 's', amopopr => '622', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4070', amoplefttype => '700', amoprighttype => '700', amopstrategy => '2', amoppurpose => 's', amopopr => '624', amopmethod => '3580', amopsortfamily => '0' },
@@ -810,30 +865,35 @@
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '3', amoppurpose => 's', amopopr => '560', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '4', amoppurpose => 's', amopopr => '565', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4072', amoplefttype => '702', amoprighttype => '702', amopstrategy => '5', amoppurpose => 's', amopopr => '563', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax reltime
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '1', amoppurpose => 's', amopopr => '568', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '2', amoppurpose => 's', amopopr => '570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '3', amoppurpose => 's', amopopr => '566', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '4', amoppurpose => 's', amopopr => '571', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4073', amoplefttype => '703', amoprighttype => '703', amopstrategy => '5', amoppurpose => 's', amopopr => '569', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '1', amoppurpose => 's', amopopr => '1222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '2', amoppurpose => 's', amopopr => '1223', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '3', amoppurpose => 's', amopopr => '1220', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '4', amoppurpose => 's', amopopr => '1225', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4074', amoplefttype => '829', amoprighttype => '829', amopstrategy => '5', amoppurpose => 's', amopopr => '1224', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax macaddr8
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '1', amoppurpose => 's', amopopr => '3364', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '2', amoppurpose => 's', amopopr => '3365', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '3', amoppurpose => 's', amopopr => '3362', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '4', amoppurpose => 's', amopopr => '3367', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4109', amoplefttype => '774', amoprighttype => '774', amopstrategy => '5', amoppurpose => 's', amopopr => '3366', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax inet
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '1', amoppurpose => 's', amopopr => '1203', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '2', amoppurpose => 's', amopopr => '1204', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '4', amoppurpose => 's', amopopr => '1206', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4075', amoplefttype => '869', amoprighttype => '869', amopstrategy => '5', amoppurpose => 's', amopopr => '1205', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion inet
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '3', amoppurpose => 's', amopopr => '3552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '7', amoppurpose => 's', amopopr => '934', amopmethod => '3580', amopsortfamily => '0' },
@@ -841,18 +901,21 @@
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '18', amoppurpose => 's', amopopr => '1201', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '24', amoppurpose => 's', amopopr => '933', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4102', amoplefttype => '869', amoprighttype => '869', amopstrategy => '26', amoppurpose => 's', amopopr => '931', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax character
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '1', amoppurpose => 's', amopopr => '1058', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '2', amoppurpose => 's', amopopr => '1059', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '3', amoppurpose => 's', amopopr => '1054', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '4', amoppurpose => 's', amopopr => '1061', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4076', amoplefttype => '1042', amoprighttype => '1042', amopstrategy => '5', amoppurpose => 's', amopopr => '1060', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time without time zone
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '1', amoppurpose => 's', amopopr => '1110', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '2', amoppurpose => 's', amopopr => '1111', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '3', amoppurpose => 's', amopopr => '1108', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '4', amoppurpose => 's', amopopr => '1113', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4077', amoplefttype => '1083', amoprighttype => '1083', amopstrategy => '5', amoppurpose => 's', amopopr => '1112', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '1', amoppurpose => 's', amopopr => '2062', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4059', amoplefttype => '1114', amoprighttype => '1114', amopstrategy => '2', amoppurpose => 's', amopopr => '2063', amopmethod => '3580', amopsortfamily => '0' },
@@ -906,36 +969,42 @@
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '3', amoppurpose => 's', amopopr => '1330', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '4', amoppurpose => 's', amopopr => '1335', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4078', amoplefttype => '1186', amoprighttype => '1186', amopstrategy => '5', amoppurpose => 's', amopopr => '1334', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax time with time zone
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '1', amoppurpose => 's', amopopr => '1552', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '2', amoppurpose => 's', amopopr => '1553', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '3', amoppurpose => 's', amopopr => '1550', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '4', amoppurpose => 's', amopopr => '1555', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4058', amoplefttype => '1266', amoprighttype => '1266', amopstrategy => '5', amoppurpose => 's', amopopr => '1554', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '1', amoppurpose => 's', amopopr => '1786', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '2', amoppurpose => 's', amopopr => '1788', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '3', amoppurpose => 's', amopopr => '1784', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '4', amoppurpose => 's', amopopr => '1789', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4079', amoplefttype => '1560', amoprighttype => '1560', amopstrategy => '5', amoppurpose => 's', amopopr => '1787', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax bit varying
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '1', amoppurpose => 's', amopopr => '1806', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '2', amoppurpose => 's', amopopr => '1808', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '3', amoppurpose => 's', amopopr => '1804', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '4', amoppurpose => 's', amopopr => '1809', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4080', amoplefttype => '1562', amoprighttype => '1562', amopstrategy => '5', amoppurpose => 's', amopopr => '1807', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax numeric
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '1', amoppurpose => 's', amopopr => '1754', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '2', amoppurpose => 's', amopopr => '1755', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '3', amoppurpose => 's', amopopr => '1752', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '4', amoppurpose => 's', amopopr => '1757', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4055', amoplefttype => '1700', amoprighttype => '1700', amopstrategy => '5', amoppurpose => 's', amopopr => '1756', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax uuid
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '1', amoppurpose => 's', amopopr => '2974', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '2', amoppurpose => 's', amopopr => '2976', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '3', amoppurpose => 's', amopopr => '2972', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '4', amoppurpose => 's', amopopr => '2977', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4081', amoplefttype => '2950', amoprighttype => '2950', amopstrategy => '5', amoppurpose => 's', amopopr => '2975', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion range types
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '1', amoppurpose => 's', amopopr => '3893', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '2', amoppurpose => 's', amopopr => '3895', amopmethod => '3580', amopsortfamily => '0' },
@@ -951,12 +1020,14 @@
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '21', amoppurpose => 's', amopopr => '3885', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '22', amoppurpose => 's', amopopr => '3887', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4103', amoplefttype => '3831', amoprighttype => '3831', amopstrategy => '23', amoppurpose => 's', amopopr => '3886', amopmethod => '3580', amopsortfamily => '0' },
+
 # minmax pg_lsn
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '1', amoppurpose => 's', amopopr => '3224', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '2', amoppurpose => 's', amopopr => '3226', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '3', amoppurpose => 's', amopopr => '3222', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '4', amoppurpose => 's', amopopr => '3227', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4082', amoplefttype => '3220', amoprighttype => '3220', amopstrategy => '5', amoppurpose => 's', amopopr => '3225', amopmethod => '3580', amopsortfamily => '0' },
+
 # inclusion box
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '1', amoppurpose => 's', amopopr => '493', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '2', amoppurpose => 's', amopopr => '494', amopmethod => '3580', amopsortfamily => '0' },
@@ -970,6 +1041,7 @@
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '10', amoppurpose => 's', amopopr => '2570', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '11', amoppurpose => 's', amopopr => '2573', amopmethod => '3580', amopsortfamily => '0' },
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '603', amopstrategy => '12', amoppurpose => 's', amopopr => '2572', amopmethod => '3580', amopsortfamily => '0' },
+
 # we could, but choose not to, supply entries for strategies 13 and 14
 { amopfamily => '4104', amoplefttype => '603', amoprighttype => '600', amopstrategy => '7', amoppurpose => 's', amopopr => '433', amopmethod => '3580', amopsortfamily => '0' },
 
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index 8c4df85..1b44d8d 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -293,21 +293,25 @@
 { amprocfamily => '5008', amproclefttype => '604', amprocrighttype => '604', amprocnum => '6', amproc => '5011' },
 
 # BRIN opclasses
+
 # minmax bytea
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4064', amproclefttype => '17', amprocrighttype => '17', amprocnum => '4', amproc => '3386' },
+
 # minmax "char"
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4062', amproclefttype => '18', amprocrighttype => '18', amprocnum => '4', amproc => '3386' },
+
 # minmax name
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4065', amproclefttype => '19', amprocrighttype => '19', amprocnum => '4', amproc => '3386' },
+
 # minmax integer: int2, int4, int8
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4054', amproclefttype => '20', amprocrighttype => '20', amprocnum => '2', amproc => '3384' },
@@ -353,16 +357,19 @@
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4056', amproclefttype => '25', amprocrighttype => '25', amprocnum => '4', amproc => '3386' },
+
 # minmax oid
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4068', amproclefttype => '26', amprocrighttype => '26', amprocnum => '4', amproc => '3386' },
+
 # minmax tid
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4069', amproclefttype => '27', amprocrighttype => '27', amprocnum => '4', amproc => '3386' },
+
 # minmax float
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4070', amproclefttype => '700', amprocrighttype => '700', amprocnum => '2', amproc => '3384' },
@@ -389,26 +396,31 @@
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4072', amproclefttype => '702', amprocrighttype => '702', amprocnum => '4', amproc => '3386' },
+
 # minmax reltime
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4073', amproclefttype => '703', amprocrighttype => '703', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4074', amproclefttype => '829', amprocrighttype => '829', amprocnum => '4', amproc => '3386' },
+
 # minmax macaddr8
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4109', amproclefttype => '774', amprocrighttype => '774', amprocnum => '4', amproc => '3386' },
+
 # minmax inet
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4075', amproclefttype => '869', amprocrighttype => '869', amprocnum => '4', amproc => '3386' },
+
 # inclusion inet
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '2', amproc => '4106' },
@@ -417,16 +429,19 @@
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '11', amproc => '4063' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '12', amproc => '4071' },
 { amprocfamily => '4102', amproclefttype => '869', amprocrighttype => '869', amprocnum => '13', amproc => '930' },
+
 # minmax character
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4076', amproclefttype => '1042', amprocrighttype => '1042', amprocnum => '4', amproc => '3386' },
+
 # minmax time without time zone
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4077', amproclefttype => '1083', amprocrighttype => '1083', amprocnum => '4', amproc => '3386' },
+
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4059', amproclefttype => '1114', amprocrighttype => '1114', amprocnum => '2', amproc => '3384' },
@@ -472,31 +487,37 @@
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4078', amproclefttype => '1186', amprocrighttype => '1186', amprocnum => '4', amproc => '3386' },
+
 # minmax time with time zone
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4058', amproclefttype => '1266', amprocrighttype => '1266', amprocnum => '4', amproc => '3386' },
+
 # minmax bit
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4079', amproclefttype => '1560', amprocrighttype => '1560', amprocnum => '4', amproc => '3386' },
+
 # minmax bit varying
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4080', amproclefttype => '1562', amprocrighttype => '1562', amprocnum => '4', amproc => '3386' },
+
 # minmax numeric
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4055', amproclefttype => '1700', amprocrighttype => '1700', amprocnum => '4', amproc => '3386' },
+
 # minmax uuid
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4081', amproclefttype => '2950', amprocrighttype => '2950', amprocnum => '4', amproc => '3386' },
+
 # inclusion range types
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '2', amproc => '4106' },
@@ -505,11 +526,13 @@
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '11', amproc => '4057' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '13', amproc => '3859' },
 { amprocfamily => '4103', amproclefttype => '3831', amprocrighttype => '3831', amprocnum => '14', amproc => '3850' },
+
 # minmax pg_lsn
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '1', amproc => '3383' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '2', amproc => '3384' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '3', amproc => '3385' },
 { amprocfamily => '4082', amproclefttype => '3220', amprocrighttype => '3220', amprocnum => '4', amproc => '3386' },
+
 # inclusion box
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '1', amproc => '4105' },
 { amprocfamily => '4104', amproclefttype => '603', amprocrighttype => '603', amprocnum => '2', amproc => '4106' },
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index cb109dd..e493a39 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -12,12 +12,11 @@
 
 [
 
-# The uppercase quantities will be replaced at initdb time with
-# user choices.
-# The C code typically refers to these roles using the #define symbols,
-# so be sure to keep those in sync with the DATA lines.
+# POSTGRES will be replaced at initdb time with a user choice that might
+# contain non-word characters, so we must double-quote it.
+
 { oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
-  rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
+  rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR',
   rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', rolpassword => '_null_', rolvaliduntil => '_null_' },
 { oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS',
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index fc394ef..8c2aed5 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -65,6 +65,7 @@
 # between alias types must pass through OID.)	Lastly, there are implicit
 # casts from text and varchar to regclass, which exist mainly to support
 # legacy forms of nextval() and related functions.
+
 { castsource => '20', casttarget => '26', castfunc => '1287', castcontext => 'i', castmethod => 'f' },
 { castsource => '21', casttarget => '26', castfunc => '313', castcontext => 'i', castmethod => 'f' },
 { castsource => '23', casttarget => '26', castfunc => '0', castcontext => 'i', castmethod => 'b' },
@@ -204,6 +205,7 @@
 { castsource => '1186', casttarget => '703', castfunc => '1194', castcontext => 'a', castmethod => 'f' },
 { castsource => '1186', casttarget => '1083', castfunc => '1419', castcontext => 'a', castmethod => 'f' },
 { castsource => '1266', casttarget => '1083', castfunc => '2046', castcontext => 'a', castmethod => 'f' },
+
 # Cross-category casts between int4 and abstime, reltime
 { castsource => '23', casttarget => '702', castfunc => '0', castcontext => 'e', castmethod => 'b' },
 { castsource => '702', casttarget => '23', castfunc => '0', castcontext => 'e', castmethod => 'b' },
@@ -238,6 +240,7 @@
 # BitString category
 { castsource => '1560', casttarget => '1562', castfunc => '0', castcontext => 'i', castmethod => 'b' },
 { castsource => '1562', casttarget => '1560', castfunc => '0', castcontext => 'i', castmethod => 'b' },
+
 # Cross-category casts between bit and int4, int8
 { castsource => '20', casttarget => '1560', castfunc => '2075', castcontext => 'e', castmethod => 'f' },
 { castsource => '23', casttarget => '1560', castfunc => '1683', castcontext => 'e', castmethod => 'f' },
@@ -252,6 +255,7 @@
 # parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
 # behavior will ensue when the automatic cast is applied instead of the
 # pg_cast entry!
+
 { castsource => '650', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '25', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '16', casttarget => '25', castfunc => '2971', castcontext => 'a', castmethod => 'f' },
@@ -259,6 +263,7 @@
 { castsource => '25', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from VARCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1043', castfunc => '730', castcontext => 'a', castmethod => 'f' },
@@ -267,6 +272,7 @@
 { castsource => '1043', casttarget => '142', castfunc => '2896', castcontext => 'e', castmethod => 'f' },
 
 # Cross-category casts to and from BPCHAR
+
 # We support all the same casts as for TEXT.
 { castsource => '650', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
 { castsource => '869', casttarget => '1042', castfunc => '730', castcontext => 'a', castmethod => 'f' },
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index 770add8..1d1e108 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -12,12 +12,13 @@
 
 [
 
-# NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
+# Note: only "bootstrapped" relations need to be declared here.  Be sure that
 # the OIDs listed here match those given in their CATALOG macros, and that
 # the relnatts values are correct.
 
 # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
 # similarly, "1" in relminmxid stands for FirstMultiXactId
+
 { oid => '1247',
   relname => 'pg_type', relnamespace => 'PGNSP', reltype => '71', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '30', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1249',
@@ -27,11 +28,4 @@
 { oid => '1259',
   relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', relhasoids => 't', relhaspkey => 'f', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', reloptions => '_null_', relpartbound => '_null_' },
 
-# default selection for replica identity (primary key or nothing)
-# no replica identity is logged for this relation
-# all columns are logged as replica identity
-# an explicitly chosen candidate key's columns are used as replica identity.
-# Note this will still be set if the index has been dropped; in that case it
-# has the same meaning as 'd'.
-
 ]
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index bdbccea..6704f0b 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -12,7 +12,10 @@
 
 [
 
+# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices
+# that might contain non-word characters, so we must double-quote them.
+
 { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
+  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat
index 04eec9f..6483027 100644
--- a/src/include/catalog/pg_namespace.dat
+++ b/src/include/catalog/pg_namespace.dat
@@ -19,6 +19,4 @@
 { oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', descr => 'standard public schema',
   nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' },
 
-# prototypes for functions in pg_namespace.c
-
 ]
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index 4f0cbfa..a3972d4 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -55,12 +55,14 @@
 { opcmethod => '405', opcname => 'macaddr_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1985', opcintype => '829', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '403', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3371', opcintype => '774', opcdefault => 't', opckeytype => '0' },
 { opcmethod => '405', opcname => 'macaddr8_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '3372', opcintype => '774', opcdefault => 't', opckeytype => '0' },
+
 # Here's an ugly little hack to save space in the system catalog indexes.
 # btree doesn't ordinarily allow a storage type different from input type;
 # but cstring and name are the same thing except for trailing padding,
 # and we can safely omit that within an index entry.  So we declare the
 # btree opclass for name as using cstring storage type.
 { opcmethod => '403', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1986', opcintype => '19', opcdefault => 't', opckeytype => '2275' },
+
 { opcmethod => '405', opcname => 'name_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1987', opcintype => '19', opcdefault => 't', opckeytype => '0' },
 { oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID',
   opcmethod => '403', opcname => 'numeric_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '1988', opcintype => '1700', opcdefault => 't', opckeytype => '0' },
@@ -136,7 +138,9 @@
 { opcmethod => '2742', opcname => 'jsonb_path_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4037', opcintype => '3802', opcdefault => 'f', opckeytype => '23' },
 
 # BRIN operator classes
+
 # no brin opclass for bool
+
 { opcmethod => '3580', opcname => 'bytea_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4064', opcintype => '17', opcdefault => 't', opckeytype => '17' },
 { opcmethod => '3580', opcname => 'char_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4062', opcintype => '18', opcdefault => 't', opckeytype => '18' },
 { opcmethod => '3580', opcname => 'name_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4065', opcintype => '19', opcdefault => 't', opckeytype => '19' },
@@ -164,12 +168,17 @@
 { opcmethod => '3580', opcname => 'bit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4079', opcintype => '1560', opcdefault => 't', opckeytype => '1560' },
 { opcmethod => '3580', opcname => 'varbit_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4080', opcintype => '1562', opcdefault => 't', opckeytype => '1562' },
 { opcmethod => '3580', opcname => 'numeric_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4055', opcintype => '1700', opcdefault => 't', opckeytype => '1700' },
+
 # no brin opclass for record, anyarray
+
 { opcmethod => '3580', opcname => 'uuid_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4081', opcintype => '2950', opcdefault => 't', opckeytype => '2950' },
 { opcmethod => '3580', opcname => 'range_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4103', opcintype => '3831', opcdefault => 't', opckeytype => '3831' },
 { opcmethod => '3580', opcname => 'pg_lsn_minmax_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4082', opcintype => '3220', opcdefault => 't', opckeytype => '3220' },
+
 # no brin opclass for enum, tsvector, tsquery, jsonb
+
 { opcmethod => '3580', opcname => 'box_inclusion_ops', opcnamespace => 'PGNSP', opcowner => 'PGUID', opcfamily => '4104', opcintype => '603', opcdefault => 't', opckeytype => '603' },
+
 # no brin opclass for the geometric types except box
 
 ]
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index fd1aae8..a54bc1b17 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -12,7 +12,7 @@
 
 [
 
-# Note: every entry in pg_operator.h is expected to have a DESCR() comment.
+# Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
 # If the operator is a deprecated equivalent of some other entry, be sure
 # to comment it as such so that initdb doesn't think it's a preferred name
 # for the underlying function.
@@ -1592,6 +1592,7 @@
   oprname => '&&', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_and', oprrest => '-', oprjoin => '-' },
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => 'tsquery_or', oprrest => '-', oprjoin => '-' },
+
 # <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprnamespace => 'PGNSP', oprowner => 'PGUID', oprkind => 'b', oprcanmerge => 'f', oprcanhash => 'f', oprleft => '3615', oprright => '3615', oprresult => '3615', oprcom => '0', oprnegate => '0', oprcode => '5003', oprrest => '-', oprjoin => '-' },
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 8c37869..943749f 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -12,14 +12,16 @@
 
 [
 
-# Note: every entry in pg_proc.h is expected to have a DESCR() comment,
-# except for functions that implement pg_operator.h operators and don't
+# Note: every entry in pg_proc.dat is expected to have a 'descr' comment,
+# except for functions that implement pg_operator.dat operators and don't
 # have a good reason to be called directly rather than via the operator.
 # (If you do expect such a function to be used directly, you should
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
+
 # "I/O" for typinput, typoutput, typreceive, typsend functions
 # "I/O typmod" for typmodin, typmodout functions
 # "aggregate transition function" for aggtransfn functions, unless
@@ -28,7 +30,7 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# keep the following ordered by OID so that later changes can be made easier
+# Keep the following ordered by OID so that later changes can be made easier.
 
 # OIDS 1 - 99
 
@@ -1807,6 +1809,7 @@
 # OIDs are not unique across system catalogs.  Use the other form instead.
 { oid => '1348', descr => 'deprecated, use two-argument form instead',
   proname => 'obj_description', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '14', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '30', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'oidvectortypes', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -1967,7 +1970,6 @@
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
-
 { oid => '1433', descr => 'close path',
   proname => 'pclose', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '602', proargtypes => '602', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'path_close', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1434', descr => 'open path',
@@ -2763,6 +2765,7 @@
   proname => 'interval_hash_extended', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '2', pronargdefaults => '0', prorettype => '20', proargtypes => '1186 20', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'interval_hash_extended', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # OID's 1700 - 1799 NUMERIC data type
+
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '3', pronargdefaults => '0', prorettype => '1700', proargtypes => '2275 26 23', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'numeric_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '1702', descr => 'I/O',
@@ -4806,6 +4809,7 @@
   proname => 'bool_anytrue', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '2281', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'bool_anytrue', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'a', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # ANY, SOME? These names conflict with subquery operators. See doc.
 { oid => '2518', descr => 'boolean-or aggregate',
   proname => 'bool_or', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'a', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '16', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'aggregate_dummy', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -4855,6 +4859,7 @@
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_postmaster_start_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '1184', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_conf_load_time', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -5711,6 +5716,7 @@
   proname => 'jsonb_pretty', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '3802', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_pretty', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '3802', proargtypes => '3802 1009 3802 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'jsonb_insert', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
+
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '2970', proargtypes => '2275', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'txid_snapshot_in', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
@@ -6129,37 +6135,26 @@
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_create', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_drop', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6005', descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 's', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '26', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_oid', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6006', descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '2278', proargtypes => '25', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6008', descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '16', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_is_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6009', descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '1', pronargdefaults => '0', prorettype => '3220', proargtypes => '16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_session_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '3220 1184', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_setup', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2278', proargtypes => '', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_xact_reset', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6012', descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '2278', proargtypes => '25 3220', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_advance', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6013', descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'u', pronargs => '2', pronargdefaults => '0', prorettype => '3220', proargtypes => '25 16', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_replication_origin_progress', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '100', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{26,25,3220,3220}', proargmodes => '{o,o,o,o}', proargnames => '{local_id, external_id, remote_lsn, local_lsn}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_show_replication_origin_status', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6182,20 +6177,16 @@
 # pg_controldata related functions
 { oid => '3441', descr => 'pg_controldata general state information as a function',
   proname => 'pg_control_system', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,20,1184}', proargmodes => '{o,o,o,o}', proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_system', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3442', descr => 'pg_controldata checkpoint state information as a function',
   proname => 'pg_control_checkpoint', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_checkpoint', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3443', descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{3220,23,3220,3220,16}', proargmodes => '{o,o,o,o,o}', proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_recovery', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3444', descr => 'pg_controldata init state information as a function',
   proname => 'pg_control_init', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '0', pronargdefaults => '0', prorettype => '2249', proargtypes => '', proallargtypes => '{23,23,23,23,23,23,23,23,23,16,16,23}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_control_init', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 'r', pronargs => '1', pronargdefaults => '0', prorettype => '23', proargtypes => '4089', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_import_system_collations', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
-
 { oid => '3448', descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '100', prorows => '0', provariadic => '0', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 't', proretset => 'f', provolatile => 'v', proparallel => 's', pronargs => '1', pronargdefaults => '0', prorettype => '25', proargtypes => '26', proallargtypes => '_null_', proargmodes => '_null_', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'pg_collation_actual_version', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
@@ -6209,21 +6200,4 @@
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', pronamespace => 'PGNSP', proowner => 'PGUID', prolang => '12', procost => '1', prorows => '0', provariadic => '2276', protransform => '0', prokind => 'f', prosecdef => 'f', proleakproof => 'f', proisstrict => 'f', proretset => 'f', provolatile => 'i', proparallel => 's', pronargs => '4', pronargdefaults => '0', prorettype => '16', proargtypes => '26 23 23 2276', proallargtypes => '_null_', proargmodes => '{i,i,i,v}', proargnames => '_null_', proargdefaults => '_null_', protrftypes => '_null_', prosrc => 'satisfies_hash_partition', probin => '_null_', proconfig => '_null_', proacl => '_null_' },
 
-# Symbolic values for prokind column
-
-# Symbolic values for provolatile column: these indicate whether the result
-# of a function is dependent *only* on the values of its explicit arguments,
-# or can change due to outside factors (such as parameter variables or
-# table contents).  NOTE: functions having side-effects, such as setval(),
-# must be labeled volatile to ensure they will not get optimized away,
-# even if the actual return value is not changeable.
-
-# Symbolic values for proparallel column: these indicate whether a function
-# can be safely be run in a parallel backend, during parallelism but
-# necessarily in the master, or only in non-parallel mode.
-
-# Symbolic values for proargmodes column.  Note that these must agree with
-# the FunctionParameterMode enum in parsenodes.h; we declare them here to
-# be accessible from either header.
-
 ]
diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat
index 682721e..e8c81f2 100644
--- a/src/include/catalog/pg_range.dat
+++ b/src/include/catalog/pg_range.dat
@@ -19,6 +19,4 @@
 { rngtypid => '3912', rngsubtype => '1082', rngcollation => '0', rngsubopc => '3122', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' },
 { rngtypid => '3926', rngsubtype => '20', rngcollation => '0', rngsubopc => '3124', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' },
 
-# prototypes for functions in pg_range.c
-
 ]
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index daeb647..0cc91e2 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -14,52 +14,40 @@
 
 # Keep the following ordered by OID so that later changes can be made more
 # easily.
+
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
 # OIDS 1 - 99
+
 { oid => '16', oid_symbol => 'BOOLOID', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'B', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1000', typinput => 'boolin', typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '17', oid_symbol => 'BYTEAOID', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1001', typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '18', oid_symbol => 'CHAROID', descr => 'single character',
   typname => 'char', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '1', typbyval => 't', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1002', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '19', oid_symbol => 'NAMEOID', descr => '63-byte type for storing system identifiers',
   typname => 'name', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'NAMEDATALEN', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '18', typarray => '1003', typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '20', oid_symbol => 'INT8OID', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1016', typinput => 'int8in', typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '21', oid_symbol => 'INT2OID', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '2', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1005', typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', typsend => 'int2send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '22', oid_symbol => 'INT2VECTOROID', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '21', typarray => '1006', typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '23', oid_symbol => 'INT4OID', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1007', typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', typsend => 'int4send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '24', oid_symbol => 'REGPROCOID', descr => 'registered procedure',
   typname => 'regproc', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1008', typinput => 'regprocin', typoutput => 'regprocout', typreceive => 'regprocrecv', typsend => 'regprocsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '25', oid_symbol => 'TEXTOID', descr => 'variable-length string, no limit specified',
   typname => 'text', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1009', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '26', oid_symbol => 'OIDOID', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 't', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1028', typinput => 'oidin', typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '27', oid_symbol => 'TIDOID', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '6', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1010', typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', typsend => 'tidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 's', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '28', oid_symbol => 'XIDOID', descr => 'transaction id',
   typname => 'xid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1011', typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', typsend => 'xidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '29', oid_symbol => 'CIDOID', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1012', typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', typsend => 'cidsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '30', oid_symbol => 'OIDVECTOROID', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '26', typarray => '1013', typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -76,6 +64,7 @@
   typname => 'pg_class', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '1259', typelem => '0', typarray => '0', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 100 - 199
+
 { oid => '114', oid_symbol => 'JSONOID',
   typname => 'json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '199', typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', typsend => 'json_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '142', oid_symbol => 'XMLOID', descr => 'XML content',
@@ -84,16 +73,12 @@
   typname => '_xml', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '142', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '199',
   typname => '_json', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '114', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '194', oid_symbol => 'PGNODETREEOID', descr => 'string representing an internal node tree',
   typname => 'pg_node_tree', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID', descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'S', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '100', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID', descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', typsend => 'pg_ddl_command_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'ALIGNOF_POINTER', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
@@ -109,6 +94,7 @@
 # OIDS 500 - 599
 
 # OIDS 600 - 699
+
 { oid => '600', oid_symbol => 'POINTOID', descr => 'geometric point \'(x, y)\'',
   typname => 'point', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '16', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '1017', typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '601', oid_symbol => 'LSEGOID', descr => 'geometric line segment \'(pt1,pt2)\'',
@@ -119,7 +105,6 @@
   typname => 'box', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '32', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\073', typrelid => '0', typelem => '600', typarray => '1020', typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '604', oid_symbol => 'POLYGONOID', descr => 'geometric polygon \'(pt1,...)\'',
   typname => 'polygon', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1027', typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', typsend => 'poly_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '628', oid_symbol => 'LINEOID', descr => 'geometric line',
   typname => 'line', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '701', typarray => '629', typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '629',
@@ -139,7 +124,6 @@
   typname => 'tinterval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '12', typbyval => 'f', typtype => 'b', typcategory => 'T', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1025', typinput => 'tintervalin', typoutput => 'tintervalout', typreceive => 'tintervalrecv', typsend => 'tintervalsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '705', oid_symbol => 'UNKNOWNOID',
   typname => 'unknown', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-2', typbyval => 'f', typtype => 'p', typcategory => 'X', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'unknownin', typoutput => 'unknownout', typreceive => 'unknownrecv', typsend => 'unknownsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'c', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '718', oid_symbol => 'CIRCLEOID', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '24', typbyval => 'f', typtype => 'b', typcategory => 'G', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '719', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '719',
@@ -162,6 +146,7 @@
 # OIDS 900 - 999
 
 # OIDS 1000 - 1099
+
 { oid => '1000',
   typname => '_bool', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '16', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1001',
@@ -242,6 +227,7 @@
   typname => 'time', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1183', typinput => 'time_in', typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', typmodout => 'timetypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1100 - 1199
+
 { oid => '1114', oid_symbol => 'TIMESTAMPOID', descr => 'date and time',
   typname => 'timestamp', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typtype => 'b', typcategory => 'D', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1115', typinput => 'timestamp_in', typoutput => 'timestamp_out', typreceive => 'timestamp_recv', typsend => 'timestamp_send', typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', typanalyze => '-', typalign => 'd', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1115',
@@ -260,6 +246,7 @@
   typname => '_interval', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1186', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1200 - 1299
+
 { oid => '1231',
   typname => '_numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1700', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1266', oid_symbol => 'TIMETZOID', descr => 'time of day with time zone',
@@ -268,6 +255,7 @@
   typname => '_timetz', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1266', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 1500 - 1599
+
 { oid => '1560', oid_symbol => 'BITOID', descr => 'fixed-length bit string',
   typname => 'bit', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'V', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1561', typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '1561',
@@ -280,37 +268,30 @@
 # OIDS 1600 - 1699
 
 # OIDS 1700 - 1799
+
 { oid => '1700', oid_symbol => 'NUMERICOID', descr => 'numeric(precision, decimal), arbitrary precision number',
   typname => 'numeric', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '1231', typinput => 'numeric_in', typoutput => 'numeric_out', typreceive => 'numeric_recv', typsend => 'numeric_send', typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', typanalyze => '-', typalign => 'i', typstorage => 'm', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '1790', oid_symbol => 'REFCURSOROID', descr => 'reference to cursor (portal name)',
   typname => 'refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'U', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2201', typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
 # OIDS 2200 - 2299
+
 { oid => '2201',
   typname => '_refcursor', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '1790', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2202', oid_symbol => 'REGPROCEDUREOID', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2207', typinput => 'regprocedurein', typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', typsend => 'regproceduresend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2203', oid_symbol => 'REGOPEROID', descr => 'registered operator',
   typname => 'regoper', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2208', typinput => 'regoperin', typoutput => 'regoperout', typreceive => 'regoperrecv', typsend => 'regopersend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2204', oid_symbol => 'REGOPERATOROID', descr => 'registered operator (with args)',
   typname => 'regoperator', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2209', typinput => 'regoperatorin', typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2205', oid_symbol => 'REGCLASSOID', descr => 'registered class',
   typname => 'regclass', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2210', typinput => 'regclassin', typoutput => 'regclassout', typreceive => 'regclassrecv', typsend => 'regclasssend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2206', oid_symbol => 'REGTYPEOID', descr => 'registered type',
   typname => 'regtype', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2211', typinput => 'regtypein', typoutput => 'regtypeout', typreceive => 'regtyperecv', typsend => 'regtypesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4096', oid_symbol => 'REGROLEOID', descr => 'registered role',
   typname => 'regrole', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4097', typinput => 'regrolein', typoutput => 'regroleout', typreceive => 'regrolerecv', typsend => 'regrolesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '4089', oid_symbol => 'REGNAMESPACEOID', descr => 'registered namespace',
   typname => 'regnamespace', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '4090', typinput => 'regnamespacein', typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '2207',
   typname => '_regprocedure', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '2202', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2208',
@@ -349,7 +330,6 @@
   typname => 'regconfig', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3735', typinput => 'regconfigin', typoutput => 'regconfigout', typreceive => 'regconfigrecv', typsend => 'regconfigsend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3769', oid_symbol => 'REGDICTIONARYOID', descr => 'registered text search dictionary',
   typname => 'regdictionary', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '4', typbyval => 't', typtype => 'b', typcategory => 'N', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '3770', typinput => 'regdictionaryin', typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'i', typstorage => 'p', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
-
 { oid => '3643',
   typname => '_tsvector', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'b', typcategory => 'A', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '3614', typarray => '0', typinput => 'array_in', typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', typmodin => '-', typmodout => '-', typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '3644',
@@ -406,6 +386,7 @@
 # Note: cstring is a borderline case; it is still considered a pseudo-type,
 # but there is now support for it in records and arrays.  Perhaps we should
 # just treat it as a regular base type?
+
 { oid => '2249', oid_symbol => 'RECORDOID',
   typname => 'record', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '2287', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 { oid => '2287', oid_symbol => 'RECORDARRAYOID',
@@ -443,8 +424,4 @@
 { oid => '3831', oid_symbol => 'ANYRANGEOID',
   typname => 'anyrange', typnamespace => 'PGNSP', typowner => 'PGUID', typlen => '-1', typbyval => 'f', typtype => 'p', typcategory => 'P', typispreferred => 'f', typisdefined => 't', typdelim => '\054', typrelid => '0', typelem => '0', typarray => '0', typinput => 'anyrange_in', typoutput => 'anyrange_out', typreceive => '-', typsend => '-', typmodin => '-', typmodout => '-', typanalyze => '-', typalign => 'd', typstorage => 'x', typnotnull => 'f', typbasetype => '0', typtypmod => '-1', typndims => '0', typcollation => '0', typdefaultbin => '_null_', typdefault => '_null_', typacl => '_null_' },
 
-# macros
-
-# Is a type OID a polymorphic pseudotype?	(Beware of multiple evaluation)
-
 ]
-- 
2.7.4

v10-0003-Update-catalog-scripts-to-read-data-files.patchtext/x-patch; charset=US-ASCII; name=v10-0003-Update-catalog-scripts-to-read-data-files.patchDownload
From 6edf5df1130558ddc2b4e62ce5a54a7fde603a61 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:30:51 +0700
Subject: [PATCH] Update catalog scripts to read data files.

Teach genbki.pl, Gen_fmgrtab.pl, duplicate_oids, and unused_oids to read
the data files, and arrange for genbki.pl to double-quote certain values
so bootscanner.l can read them. Introduce Makefile dependencies on the
data files.
---
 doc/src/sgml/bki.sgml              |   5 +-
 src/backend/Makefile               |   2 +-
 src/backend/catalog/Makefile       |  11 ++-
 src/backend/catalog/README         |  72 ++++++++++++++-----
 src/backend/catalog/genbki.pl      | 142 ++++++++++++++++++++++++++-----------
 src/backend/utils/Gen_fmgrtab.pl   |  56 +++++++++------
 src/backend/utils/Makefile         |   4 +-
 src/include/catalog/duplicate_oids |   6 +-
 src/include/catalog/unused_oids    |   6 +-
 src/tools/msvc/Solution.pm         |   9 ++-
 10 files changed, 220 insertions(+), 93 deletions(-)

diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 33378b4..a3962c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -21,8 +21,9 @@
   input file used by <application>initdb</application> is created as
   part of building and installing <productname>PostgreSQL</productname>
   by a program named <filename>genbki.pl</filename>, which reads some
-  specially formatted C header files in the <filename>src/include/catalog/</filename>
-  directory of the source tree.  The created <acronym>BKI</acronym> file
+  specially formatted C header files and data files in the
+  <filename>src/include/catalog/</filename> directory of the source tree.
+  The created <acronym>BKI</acronym> file
   is called <filename>postgres.bki</filename> and is
   normally installed in the
   <filename>share</filename> subdirectory of the installation tree.
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 4a28267..2fadcea 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -142,7 +142,7 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
 # see explanation in parser/Makefile
 utils/fmgrprotos.h: utils/fmgroids.h ;
 
-utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
+utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
 	$(MAKE) -C utils $(notdir $@)
 
 utils/probes.h: utils/probes.d
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 30ca509..23858b8 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -49,6 +49,15 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	toasting.h indexing.h \
     )
 
+POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
+	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
+	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
+	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
+	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
+	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
+	pg_ts_template.dat pg_type.dat \
+	)
+
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
@@ -67,7 +76,7 @@ schemapg.h: postgres.bki ;
 # even in distribution tarballs.  So this is cheating a bit, but it
 # will achieve the goal of updating the version number when it
 # changes.
-postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
+postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
 	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 7e0ddf3..c177ba0 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -7,24 +7,57 @@ This directory contains .c files that manipulate the system catalogs;
 src/include/catalog contains the .h files that define the structure
 of the system catalogs.
 
-When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl)
-execute, they grep the DATA statements out of the .h files and munge
-these in order to generate the postgres.bki file.  The .bki file is then
+When the compile-time script genbki.pl executes, it parses the .h files
+and .dat files in order to generate the postgres.* files.  These are then
 used as input to initdb (which is just a wrapper around postgres
 running single-user in bootstrapping mode) in order to generate the
 initial (template) system catalog relation files.
 
+backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
+.h files used by the function manager.
+
 -----------------------------------------------------------------
 
-People who are going to hose around with the .h files should be aware
-of the following facts:
+The data file format and bootstrap data conventions
 
-- It is very important that the DATA statements be properly formatted
+- As far as the bootstrap code is concerned, it is very important
+that the insert statements in postgres.bki be properly formatted
 (e.g., no broken lines, proper use of white-space and _null_).  The
 scripts are line-oriented and break easily.  In addition, the only
 documentation on the proper format for them is the code in the
-bootstrap/ directory.  Just be careful when adding new DATA
-statements.
+bootstrap/ directory.  Fortunately, the source bootstrap data is much
+more tolerant with respect to formatting, but it still pays to be
+careful when adding new data.
+
+- The .dat files contain Perl data structure literals that are simply
+eval'd to produce in-memory data structures.  As such, the code reading
+them doesn't care about ordering and layout, but in order to maintain
+a standard appearance, src/include/catalog/rewrite_dat.pl should be run
+before submitting catalog data patches.  Each file contains an array of
+hash references, which represent the data entries.  The best examples are
+the existing data files, but an altered subset of pg_database.dat will
+demonstrate the key features:
+
+# pg_database_example.dat
+[
+
+# a comment
+{ oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
+  datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
+
+]
+
+-The layout is: open bracket, one or more sets of curly brackets containing
+comma-separated key-value pairs, close bracket.
+-All values are single-quoted.
+-Single quotes within values must be escaped.
+-If a value is a macro to be expanded by initdb.c, it must also have double-
+quotes, since we don't know what kind of characters will be substituted.
+-Nulls are represented as "_null_".
+-Comments must be on their own lines.
+-The metadata fields oid, oid_symbol, descr, and shdescr are on their own
+line within the curly brackets.  This is done automatically during rewriting
+so their placement is not crucial during development.
 
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
@@ -38,9 +71,9 @@ catalog that has no OIDs).  In practice we usually preassign OIDs
 for all or none of the pre-loaded tuples in a given catalog, even if only
 some of them are actually cross-referenced.
 
-- We also sometimes preallocate OIDs for catalog tuples whose OIDs must
-be known directly in the C code.  In such cases, put a #define in the
-catalog's .h file, and use the #define symbol in the C code.  Writing
+- We also sometimes preallocate OIDs for catalog tuples whose OIDs must be
+known directly in the C code.  In such cases, put an 'oid_symbol' entry in
+the catalog's data file, and use the #define symbol in the C code.  Writing
 the actual numeric value of any OID in C code is considered very bad form.
 Direct references to pg_proc OIDs are common enough that there's a special
 mechanism to create the necessary #define's automatically: see
@@ -49,19 +82,26 @@ up #define's for the pg_class OIDs of system catalogs and indexes.  For all
 the other system catalogs, you have to manually create any #define's you
 need.
 
-- If you need to find a valid OID for a new predefined tuple,
-use the unused_oids script.  It generates inclusive ranges of
+- If you need to find a valid OID for a new predefined tuple, use the
+script src/include/catalog/unused_oids.  It generates inclusive ranges of
 *unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
 not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
 assignment; the unused_oids script simply looks through the include/catalog
-headers to see which ones do not appear in "OID =" clauses in DATA lines.
+headers and .dat files to see which ones do not appear.
 (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
-You can also use the duplicate_oids script to check for mistakes.
+You can use the duplicate_oids script to check for mistakes.  This script
+is also run at compile time, and will stop the build if a duplicate is
+found.
 
 - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
 table that requires OIDs, but no OID was preassigned by an "OID =" clause,
 then it will receive an OID of 10000 or above.
 
+-----------------------------------------------------------------
+
+People who are going to hose around with the .h files should be aware
+of the following facts:
+
 - To create a "BOOTSTRAP" table you have to do a lot of extra work: these
 tables are not created through a normal CREATE TABLE operation, but spring
 into existence when first written to during initdb.  Therefore, you must
@@ -98,7 +138,7 @@ catalog tuples that contain NULL attributes except in their
 variable-length portions!  (The bootstrapping code is fairly good about
 marking NOT NULL each of the columns that can legally be referenced via
 C struct declarations ... but those markings won't be enforced against
-DATA commands, so you must get it right in a DATA line.)
+insert commands, so you must get it right in the data files.)
 
 - Modification of the catalogs must be performed with the proper
 updating of catalog indexes!  That is, most catalogs have indexes
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index b4abbff..027dd95 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -4,8 +4,8 @@
 # genbki.pl
 #    Perl script that generates postgres.bki, postgres.description,
 #    postgres.shdescription, and schemapg.h from specially formatted
-#    header files.  The .bki files are used to initialize the postgres
-#    template database.
+#    header files and data files.  The BKI files are used to initialize
+#    the postgres template database.
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -93,8 +93,43 @@ my $PG_CATALOG_NAMESPACE =
   Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
 							 'PG_CATALOG_NAMESPACE');
 
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# Read all the files into internal data structures. Not all catalogs
+# will have a data file.
+my @catnames;
+my %catalogs;
+my %catalog_data;
+my @toast_decls;
+my @index_decls;
+foreach my $header (@input_files)
+{
+	$header =~ /(.+)\.h$/
+	  or die "Input files need to be header files.\n";
+	my $datfile = "$1.dat";
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	if (defined $catname)
+	{
+		push @catnames, $catname;
+		$catalogs{$catname} = $catalog;
+	}
+
+	if (-e $datfile)
+	{
+		$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+	}
+
+	foreach my $toast_decl (@{ $catalog->{toasting} })
+	{
+		push @toast_decls, $toast_decl;
+	}
+	foreach my $index_decl (@{ $catalog->{indexing} })
+	{
+		push @index_decls, $index_decl;
+	}
+}
 
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
@@ -108,18 +143,17 @@ my %regprocoids;
 my %types;
 
 # produce output, one catalog at a time
-foreach my $catname (@{ $catalogs->{names} })
+foreach my $catname (@catnames)
 {
 
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs->{$catname};
+	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
 	  . $catalog->{without_oids}
 	  . $catalog->{rowtype_oid} . "\n";
 
-	my @attnames;
 	my $first = 1;
 
 	print $bki " (\n";
@@ -128,7 +162,6 @@ foreach my $catname (@{ $catalogs->{names} })
 	{
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
-		push @attnames, $attname;
 
 		if (!$first)
 		{
@@ -161,17 +194,13 @@ foreach my $catname (@{ $catalogs->{names} })
 	# of catalog names, since we use info from pg_type.h here.
 	if ($catname eq 'pg_attribute')
 	{
-		gen_pg_attribute($schema, @attnames);
+		gen_pg_attribute($schema);
 	}
 
-	# Ordinary catalog with DATA line(s)
-	foreach my $row (@{ $catalog->{data} })
+	# Ordinary catalog with a data file
+	foreach my $row (@{ $catalog_data{$catname} })
 	{
-
-		# Split line into tokens without interpreting their meaning.
-		my %bki_values;
-		@bki_values{@attnames} =
-		  Catalog::SplitDataLine($row->{bki_values});
+		my %bki_values = %$row;
 
 		# Perform required substitutions on fields
 		foreach my $column (@$schema)
@@ -205,7 +234,7 @@ foreach my $catname (@{ $catalogs->{names} })
 			}
 			else
 			{
-				$regprocoids{ $bki_values{proname} } = $row->{oid};
+				$regprocoids{ $bki_values{proname} } = $bki_values{oid};
 			}
 		}
 
@@ -213,26 +242,23 @@ foreach my $catname (@{ $catalogs->{names} })
 		if ($catname eq 'pg_type')
 		{
 			my %type = %bki_values;
-			$type{oid} = $row->{oid};
 			$types{ $type{typname} } = \%type;
 		}
 
 		# Write to postgres.bki
-		my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
-		printf $bki "insert %s( %s )\n", $oid,
-		  join(' ', @bki_values{@attnames});
+		print_bki_insert(\%bki_values, $schema);
 
 		# Write comments to postgres.description and
 		# postgres.shdescription
-		if (defined $row->{descr})
+		if (defined $bki_values{descr})
 		{
 			printf $descr "%s\t%s\t0\t%s\n",
-			  $row->{oid}, $catname, $row->{descr};
+			  $bki_values{oid}, $catname, $bki_values{descr};
 		}
-		if (defined $row->{shdescr})
+		if (defined $bki_values{shdescr})
 		{
 			printf $shdescr "%s\t%s\t%s\n",
-			  $row->{oid}, $catname, $row->{shdescr};
+			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
 	}
 
@@ -243,12 +269,12 @@ foreach my $catname (@{ $catalogs->{names} })
 # (i.e., not contained in a header with a CATALOG() statement) comes here
 
 # Write out declare toast/index statements
-foreach my $declaration (@{ $catalogs->{toasting}->{data} })
+foreach my $declaration (@toast_decls)
 {
 	print $bki $declaration;
 }
 
-foreach my $declaration (@{ $catalogs->{indexing}->{data} })
+foreach my $declaration (@index_decls)
 {
 	print $bki $declaration;
 }
@@ -314,11 +340,16 @@ exit 0;
 sub gen_pg_attribute
 {
 	my $schema = shift;
-	my @attnames = @_;
 
-	foreach my $table_name (@{ $catalogs->{names} })
+	my @attnames;
+	foreach my $column (@$schema)
+	{
+		push @attnames, $column->{name};
+	}
+
+	foreach my $table_name (@catnames)
 	{
-		my $table = $catalogs->{$table_name};
+		my $table = $catalogs{$table_name};
 
 		# Currently, all bootstrapped relations also need schemapg.h
 		# entries, so skip if the relation isn't to be in schemapg.h.
@@ -341,7 +372,7 @@ sub gen_pg_attribute
 			$priornotnull &= ($row{attnotnull} eq 't');
 
 			# If it's bootstrapped, put an entry in postgres.bki.
-			print_bki_insert(\%row, @attnames) if $table->{bootstrap};
+			print_bki_insert(\%row, $schema) if $table->{bootstrap};
 
 			# Store schemapg entries for later.
 			morph_row_for_schemapg(\%row, $schema);
@@ -377,7 +408,7 @@ sub gen_pg_attribute
 					  && $attr->{name} eq 'oid';
 
 				morph_row_for_pgattr(\%row, $schema, $attr, 1);
-				print_bki_insert(\%row, @attnames);
+				print_bki_insert(\%row, $schema);
 			}
 		}
 	}
@@ -448,14 +479,45 @@ sub morph_row_for_pgattr
 	}
 }
 
-# Write a pg_attribute entry to postgres.bki
+# Write an entry to postgres.bki. Adding quotes here allows us to keep
+# most double quotes out of the catalog data files for readability. See
+# bootscanner.l for what tokens need quoting.
 sub print_bki_insert
 {
-	my $row        = shift;
-	my @attnames   = @_;
-	my $oid        = $row->{oid} ? "OID = $row->{oid} " : '';
-	my $bki_values = join ' ', @{$row}{@attnames};
-	printf $bki "insert %s( %s )\n", $oid, $bki_values;
+	my $row    = shift;
+	my $schema = shift;
+
+	my @bki_values;
+	my $oid = $row->{oid} ? "OID = $row->{oid} " : '';
+
+	foreach my $column (@$schema)
+	{
+		my $attname   = $column->{name};
+		my $atttype   = $column->{type};
+		my $bki_value = $row->{$attname};
+
+		$bki_value = sprintf(qq'"%s"', $bki_value)
+		  if  $bki_value ne '_null_'
+		  and $bki_value !~ /^"[^"]*"$/
+		  and ( length($bki_value) == 0       # Empty string
+				or $bki_value =~ /\s/         # Contains whitespace
+
+				# Quote strings that have special characters
+				# unless they are entirely octals or digits.
+				or (    $bki_value =~ /\W/
+					and $bki_value !~ /^\\\d{3}$/
+					and $bki_value !~ /^-\d*$/)
+
+				# XXX Not needed, but keeps the .bki diff down to a
+				# reasonable size during review.
+				or $attname eq 'oprname'      # Operator names
+				or $atttype eq 'oidvector'    # Multi-element types
+				or $atttype eq 'int2vector'
+				or $atttype =~ /\[\]$/ );
+
+		push @bki_values, $bki_value;
+	}
+	printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values);
 }
 
 # Given a row reference, modify it so that it becomes a valid entry for
@@ -512,8 +574,8 @@ Options:
     --set-version    PostgreSQL version number for initdb cross-check
 
 genbki.pl generates BKI files from specially formatted
-header files.  These BKI files are used to initialize the
-postgres template database.
+header files and .dat files.  These BKI files are used
+to initialize the postgres template database.
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 4ae86df..5faaadc 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -3,7 +3,7 @@
 #
 # Gen_fmgrtab.pl
 #    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
-#    from pg_proc.h
+#    from pg_proc.dat
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 # Collect arguments
-my $infile;    # pg_proc.h
+my @input_files;
 my $output_path = '';
 my @include_path;
 
@@ -29,7 +29,7 @@ while (@ARGV)
 	my $arg = shift @ARGV;
 	if ($arg !~ /^-/)
 	{
-		$infile = $arg;
+		push @input_files, $arg;
 	}
 	elsif ($arg =~ /^-o/)
 	{
@@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !$infile;
+die "No input files.\n"                                     if !@input_files;
 die "No include path; you must specify -I at least once.\n" if !@include_path;
 
+# Read all the input files into internal data structures.
+# Note: We pass data file names as arguments and then look for matching
+# headers to parse the schema from. This is backwards from genbki.pl,
+# but the Makefile dependencies look more sensible this way.
+my %catalogs;
+my %catalog_data;
+foreach my $datfile (@input_files)
+{
+	$datfile =~ /(.+)\.dat$/
+	  or die "Input files need to be data (.dat) files.\n";
+
+	my $header = "$1.h";
+	die "There in no header file corresponding to $datfile"
+	  if ! -e $header;
+
+	my $catalog = Catalog::ParseHeader($header);
+	my $catname = $catalog->{catname};
+	my $schema  = $catalog->{columns};
+
+	$catalogs{$catname} = $catalog;
+	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0);
+}
+
+# Fetch some values for later.
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
 	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
-
-# Collect the raw data from pg_proc.h.
+# Collect certain fields from pg_proc.dat.
 my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
-	push @attnames, $column->{name};
-}
 
-my $data = $catalogs->{pg_proc}->{data};
-foreach my $row (@$data)
+foreach my $row (@{ $catalog_data{pg_proc} })
 {
-
-	# Split line into tokens without interpreting their meaning.
-	my %bki_values;
-	@bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+	my %bki_values = %$row;
 
 	# Select out just the rows for internal-language procedures.
 	next if $bki_values{prolang} ne $INTERNALlanguageId;
 
 	push @fmgr,
-	  { oid    => $row->{oid},
+	  { oid    => $bki_values{oid},
 		strict => $bki_values{proisstrict},
 		retset => $bki_values{proretset},
 		nargs  => $bki_values{pronargs},
@@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile,    $tmpext);
 sub usage
 {
 	die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
 
 Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index efb8b53..f71cdc5 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -24,8 +24,8 @@ $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 7342d61..9732f61 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -5,7 +5,7 @@ use warnings;
 
 BEGIN
 {
-	@ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+	@ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
 }
 
 my %oidcounts;
@@ -14,7 +14,7 @@ while (<>)
 {
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
-	  unless /^DATA\(insert *OID *= *(\d+)/
+	  unless /\boid *=> *'(\d+)'/
 		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "$oid\n";
+	print "***Duplicate OID: $oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 97769d3..a930560 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -25,11 +25,11 @@ export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
 # note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data lines in pg_class.dat and pg_type.dat
 
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n	-e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
+sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 36e9fd7..9263f5a 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -458,8 +458,11 @@ EOF
 	$mf =~ s{\\\r?\n}{}g;
 	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
-	my @allbki = split /\s+/, $1;
-	foreach my $bki (@allbki)
+	my @bki_srcs = split /\s+/, $1;
+	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
+	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
+	my @bki_data = split /\s+/, $1;
+	foreach my $bki (@bki_srcs, @bki_data)
 	{
 		next if $bki eq "";
 		if (IsNewer(
@@ -468,7 +471,7 @@ EOF
 		{
 			print "Generating postgres.bki and schemapg.h...\n";
 			chdir('src/backend/catalog');
-			my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
+			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
 			system(
 "perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
 			);
-- 
2.7.4

v10-0004-Clean-up-header-files-and-update-comments.patchtext/x-patch; charset=US-ASCII; name=v10-0004-Clean-up-header-files-and-update-comments.patchDownload
From cdea6681d3c61e4719135be54e4cc0506c82cdd9 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 02:41:03 +0700
Subject: [PATCH] Clean up header files and update comments

The previous commit left behind detritus in the form of DATA() comments
and blank lines. Other comments are now out of date or out of place.
Remove or fix as appropriate.

---
 src/include/catalog/genbki.h                  |   8 +-
 src/include/catalog/indexing.h                |   2 +-
 src/include/catalog/pg_aggregate.h            |  53 +--
 src/include/catalog/pg_am.h                   |  13 +-
 src/include/catalog/pg_amop.h                 | 372 +----------------
 src/include/catalog/pg_amproc.h               |  61 +--
 src/include/catalog/pg_attrdef.h              |   5 +-
 src/include/catalog/pg_attribute.h            |  19 +-
 src/include/catalog/pg_auth_members.h         |   6 +-
 src/include/catalog/pg_authid.h               |  15 +-
 src/include/catalog/pg_cast.h                 |  97 +----
 src/include/catalog/pg_class.h                |  19 +-
 src/include/catalog/pg_collation.h            |  11 +-
 src/include/catalog/pg_constraint.h           |  13 +-
 src/include/catalog/pg_conversion.h           |  10 +-
 src/include/catalog/pg_database.h             |   5 +-
 src/include/catalog/pg_db_role_setting.h      |  12 +-
 src/include/catalog/pg_default_acl.h          |   9 +-
 src/include/catalog/pg_depend.h               |  30 +-
 src/include/catalog/pg_description.h          |  22 +-
 src/include/catalog/pg_enum.h                 |  13 +-
 src/include/catalog/pg_event_trigger.h        |   5 +-
 src/include/catalog/pg_extension.h            |  10 +-
 src/include/catalog/pg_foreign_data_wrapper.h |   5 +-
 src/include/catalog/pg_foreign_server.h       |   4 +-
 src/include/catalog/pg_foreign_table.h        |   4 +-
 src/include/catalog/pg_index.h                |   5 +-
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  26 +-
 src/include/catalog/pg_language.h             |  10 +-
 src/include/catalog/pg_largeobject.h          |   3 -
 src/include/catalog/pg_largeobject_metadata.h |   5 +-
 src/include/catalog/pg_namespace.h            |  12 +-
 src/include/catalog/pg_opclass.h              |  27 +-
 src/include/catalog/pg_operator.h             | 161 +-------
 src/include/catalog/pg_opfamily.h             |  11 +-
 src/include/catalog/pg_partitioned_table.h    |   5 +-
 src/include/catalog/pg_pltemplate.h           |  12 +-
 src/include/catalog/pg_proc.h                 | 556 +-------------------------
 src/include/catalog/pg_publication.h          |   4 +-
 src/include/catalog/pg_publication_rel.h      |   4 +-
 src/include/catalog/pg_range.h                |  15 +-
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |   5 +-
 src/include/catalog/pg_shdepend.h             |  24 +-
 src/include/catalog/pg_shdescription.h        |  22 +-
 src/include/catalog/pg_statistic.h            |   5 +-
 src/include/catalog/pg_statistic_ext.h        |   5 +-
 src/include/catalog/pg_tablespace.h           |   5 +-
 src/include/catalog/pg_transform.h            |   4 +-
 src/include/catalog/pg_trigger.h              |   5 +-
 src/include/catalog/pg_ts_config.h            |  12 +-
 src/include/catalog/pg_ts_config_map.h        |  13 +-
 src/include/catalog/pg_ts_dict.h              |  13 +-
 src/include/catalog/pg_ts_parser.h            |  13 +-
 src/include/catalog/pg_ts_template.h          |  13 +-
 src/include/catalog/pg_type.h                 | 116 +-----
 src/include/catalog/pg_user_mapping.h         |   4 +-
 src/include/catalog/toasting.h                |   2 +-
 59 files changed, 153 insertions(+), 1806 deletions(-)

diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 96ac402..9b769c2 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -3,7 +3,7 @@
  * genbki.h
  *	  Required include file for all POSTGRES catalog header files
  *
- * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
+ * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
  * so that the catalog header files can be read by the C compiler.
  * (These same words are recognized by genbki.pl to build the BKI
  * bootstrap file from these header files.)
@@ -44,10 +44,4 @@
  */
 #undef CATALOG_VARLEN
 
-/* Declarations that provide the initial content of a catalog */
-/* In C, these need to expand into some harmless, repeatable declaration */
-#define DATA(x)   extern int no_such_variable
-#define DESCR(x)  extern int no_such_variable
-#define SHDESCR(x) extern int no_such_variable
-
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 0bb8754..fb9dd23 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -43,7 +43,7 @@ extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
 
 /*
  * These macros are just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
 #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 0291032..4f9edf9 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -2,7 +2,6 @@
  *
  * pg_aggregate.h
  *	  definition of the system "aggregate" relation (pg_aggregate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_aggregate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -144,52 +143,4 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
-
-/* ----------------
- * initial contents of pg_aggregate
- * ---------------
- */
-
-/* avg */
-
-/* sum */
-
-/* max */
-
-/* min */
-
-/* count */
-
-/* var_pop */
-
-/* var_samp */
-
-/* variance: historical Postgres syntax for var_samp */
-
-/* stddev_pop */
-
-/* stddev_samp */
-
-/* stddev: historical Postgres syntax for stddev_samp */
-
-/* SQL2003 binary regression aggregates */
-
-/* boolean-and and boolean-or */
-
-/* bitwise integer */
-
-/* xml */
-
-/* array */
-
-/* text */
-
-/* bytea */
-
-/* json */
-
-/* jsonb */
-
-/* ordered-set and hypothetical-set aggregates */
-
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index b85c653..fe59a29 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -2,7 +2,6 @@
  *
  * pg_am.h
  *	  definition of the system "access method" relation (pg_am)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_am.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,11 +56,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-/* ----------------
- *		initial contents of pg_am
- * ----------------
- */
-
 #define BTREE_AM_OID 403
 #define HASH_AM_OID 405
 #define GIST_AM_OID 783
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 4038d17..e978c32 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -2,7 +2,6 @@
  *
  * pg_amop.h
  *	  definition of the system "amop" relation (pg_amop)
- *	  along with the relation's initial contents.
  *
  * The amop table identifies the operators associated with each index operator
  * family and operator class (classes are subsets of families).  An associated
@@ -36,8 +35,8 @@
  * src/include/catalog/pg_amop.h
  *
  * NOTES
- *	 the genbki.pl script reads this file and generates .bki
- *	 information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -90,371 +89,4 @@ typedef FormData_pg_amop *Form_pg_amop;
 #define Anum_pg_amop_amopmethod			7
 #define Anum_pg_amop_amopsortfamily		8
 
-/* ----------------
- *		initial contents of pg_amop
- * ----------------
- */
-
-/*
- *	btree integer_ops
- */
-
-/* default operators int2 */
-/* crosstype operators int24 */
-/* crosstype operators int28 */
-/* default operators int4 */
-/* crosstype operators int42 */
-/* crosstype operators int48 */
-/* default operators int8 */
-/* crosstype operators int82 */
-/* crosstype operators int84 */
-
-/*
- *	btree oid_ops
- */
-
-
-/*
- * btree tid_ops
- */
-
-
-/*
- *	btree oidvector_ops
- */
-
-
-/*
- *	btree float_ops
- */
-
-/* default operators float4 */
-/* crosstype operators float48 */
-/* default operators float8 */
-/* crosstype operators float84 */
-
-/*
- *	btree char_ops
- */
-
-
-/*
- *	btree name_ops
- */
-
-
-/*
- *	btree text_ops
- */
-
-
-/*
- *	btree bpchar_ops
- */
-
-
-/*
- *	btree bytea_ops
- */
-
-
-/*
- *	btree abstime_ops
- */
-
-
-/*
- *	btree datetime_ops
- */
-
-/* default operators date */
-/* crosstype operators vs timestamp */
-/* crosstype operators vs timestamptz */
-/* default operators timestamp */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamptz */
-/* default operators timestamptz */
-/* crosstype operators vs date */
-/* crosstype operators vs timestamp */
-
-/*
- *	btree time_ops
- */
-
-
-/*
- *	btree timetz_ops
- */
-
-
-/*
- *	btree interval_ops
- */
-
-
-/*
- *	btree macaddr
- */
-
-
-/*
- *	btree macaddr8
- */
-
-
-/*
- *	btree network
- */
-
-
-/*
- *	btree numeric
- */
-
-
-/*
- *	btree bool
- */
-
-
-/*
- *	btree bit
- */
-
-
-/*
- *	btree varbit
- */
-
-
-/*
- *	btree text pattern
- */
-
-
-/*
- *	btree bpchar pattern
- */
-
-
-/*
- *	btree money_ops
- */
-
-
-/*
- *	btree reltime_ops
- */
-
-
-/*
- *	btree tinterval_ops
- */
-
-
-/*
- *	btree array_ops
- */
-
-
-/*
- *	btree record_ops
- */
-
-
-/*
- *	btree record_image_ops
- */
-
-
-/*
- * btree uuid_ops
- */
-
-
-/*
- * btree pg_lsn_ops
- */
-
-
-/*
- *	hash index _ops
- */
-
-/* bpchar_ops */
-/* char_ops */
-/* date_ops */
-/* float_ops */
-/* network_ops */
-/* integer_ops */
-/* interval_ops */
-/* macaddr_ops */
-/* macaddr8_ops */
-/* name_ops */
-/* oid_ops */
-/* oidvector_ops */
-/* text_ops */
-/* time_ops */
-/* timestamptz_ops */
-/* timetz_ops */
-/* timestamp_ops */
-/* bool_ops */
-/* bytea_ops */
-/* xid_ops */
-/* cid_ops */
-/* abstime_ops */
-/* reltime_ops */
-/* text_pattern_ops */
-/* bpchar_pattern_ops */
-/* aclitem_ops */
-/* uuid_ops */
-/* pg_lsn_ops */
-/* numeric_ops */
-/* array_ops */
-
-
-/*
- *	gist box_ops
- */
-
-
-/*
- * gist point_ops
- */
-
-
-/*
- *	gist poly_ops (supports polygons)
- */
-
-
-/*
- *	gist circle_ops
- */
-
-
-/*
- * gin array_ops
- */
-
-/*
- * btree enum_ops
- */
-
-/*
- * hash enum_ops
- */
-
-/*
- * btree tsvector_ops
- */
-
-/*
- * GiST tsvector_ops
- */
-
-/*
- * GIN tsvector_ops
- */
-
-/*
- * btree tsquery_ops
- */
-
-/*
- * GiST tsquery_ops
- */
-
-/*
- * btree range_ops
- */
-
-/*
- * hash range_ops
- */
-
-/*
- * GiST range_ops
- */
-
-/*
- * SP-GiST quad_point_ops
- */
-
-/*
- * SP-GiST kd_point_ops
- */
-
-/*
- * SP-GiST text_ops
- */
-
-/*
- * btree jsonb_ops
- */
-
-/*
- * hash jsonb_ops
- */
-
-/*
- * GIN jsonb_ops
- */
-
-/*
- * GIN jsonb_path_ops
- */
-
-/*
- * SP-GiST range_ops
- */
-
-/*
- * SP-GiST box_ops
- */
-
-/*
- * SP-GiST poly_ops (supports polygons)
- */
-
-/*
- * GiST inet_ops
- */
-
-/*
- * SP-GiST inet_ops
- */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer */
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float (float4, float8) */
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-/* we could, but choose not to, supply entries for strategies 13 and 14 */
-
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 15edd86..83ce03b 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -2,7 +2,6 @@
  *
  * pg_amproc.h
  *	  definition of the system "amproc" relation (pg_amproc)
- *	  along with the relation's initial contents.
  *
  * The amproc table identifies support procedures associated with index
  * operator families and classes.  These procedures can't be listed in pg_amop
@@ -25,8 +24,8 @@
  * src/include/catalog/pg_amproc.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,60 +68,4 @@ typedef FormData_pg_amproc *Form_pg_amproc;
 #define Anum_pg_amproc_amprocnum		4
 #define Anum_pg_amproc_amproc			5
 
-/* ----------------
- *		initial contents of pg_amproc
- * ----------------
- */
-
-/* btree */
-
-
-/* hash */
-
-
-/* gist */
-
-
-/* gin */
-
-/* sp-gist */
-
-/* BRIN opclasses */
-/* minmax bytea */
-/* minmax "char" */
-/* minmax name */
-/* minmax integer: int2, int4, int8 */
-
-
-
-/* minmax text */
-/* minmax oid */
-/* minmax tid */
-/* minmax float */
-
-
-
-
-/* minmax abstime */
-/* minmax reltime */
-/* minmax macaddr */
-/* minmax macaddr8 */
-/* minmax inet */
-/* inclusion inet */
-/* minmax character */
-/* minmax time without time zone */
-/* minmax datetime (date, timestamp, timestamptz) */
-
-
-
-/* minmax interval */
-/* minmax time with time zone */
-/* minmax bit */
-/* minmax bit varying */
-/* minmax numeric */
-/* minmax uuid */
-/* inclusion range types */
-/* minmax pg_lsn */
-/* inclusion box */
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 8a8b8ca..3aab48d 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -2,7 +2,6 @@
  *
  * pg_attrdef.h
  *	  definition of the system "attribute defaults" relation (pg_attrdef)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_attrdef.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 8159383..3c78871 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -2,7 +2,10 @@
  *
  * pg_attribute.h
  *	  definition of the system "attribute" relation (pg_attribute)
- *	  along with the relation's initial contents.
+ *
+ * The initial contents of pg_attribute are generated at compile time by
+ * genbki.pl, so there is no pg_attribute.dat file.  Only "bootstrapped"
+ * relations need be included.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +14,8 @@
  * src/include/catalog/pg_attribute.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -215,16 +218,6 @@ typedef FormData_pg_attribute *Form_pg_attribute;
 #define Anum_pg_attribute_attoptions	21
 #define Anum_pg_attribute_attfdwoptions 22
 
-
-/* ----------------
- *		initial contents of pg_attribute
- *
- * The initial contents of pg_attribute are generated at compile time by
- * genbki.pl.  Only "bootstrapped" relations need be included.
- * ----------------
- */
-
-
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index ae3c14a..a702dff 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -2,7 +2,7 @@
  *
  * pg_auth_members.h
  *	  definition of the system "authorization identifier members" relation
- *	  (pg_auth_members) along with the relation's initial contents.
+ *	  (pg_auth_members).
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +11,8 @@
  * src/include/catalog/pg_auth_members.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b5f6602..b101e30 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -2,7 +2,6 @@
  *
  * pg_authid.h
  *	  definition of the system "authorization identifier" relation (pg_authid)
- *	  along with the relation's initial contents.
  *
  *	  pg_shadow and pg_group are now publicly accessible views on pg_authid.
  *
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_authid.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -88,16 +87,6 @@ typedef FormData_pg_authid *Form_pg_authid;
 #define Anum_pg_authid_rolpassword		10
 #define Anum_pg_authid_rolvaliduntil	11
 
-/* ----------------
- *		initial contents of pg_authid
- *
- * The uppercase quantities will be replaced at initdb time with
- * user choices.
- *
- * The C code typically refers to these roles using the #define symbols,
- * so be sure to keep those in sync with the DATA lines.
- * ----------------
- */
 #define BOOTSTRAP_SUPERUSERID			10
 #define DEFAULT_ROLE_MONITOR		3373
 #define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 597079c..1930d4b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -2,7 +2,6 @@
  *
  * pg_cast.h
  *	  definition of the system "type casts" relation (pg_cast)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 8.0, pg_cast describes not only type coercion functions
  * but also length coercion functions.
@@ -13,8 +12,8 @@
  * src/include/catalog/pg_cast.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,96 +80,4 @@ typedef enum CoercionMethod
 #define Anum_pg_cast_castcontext	4
 #define Anum_pg_cast_castmethod		5
 
-/* ----------------
- *		initial contents of pg_cast
- *
- * Note: this table has OIDs, but we don't bother to assign them manually,
- * since nothing needs to know the specific OID of any built-in cast.
- * ----------------
- */
-
-/*
- * Numeric category: implicit casts are allowed in the direction
- * int2->int4->int8->numeric->float4->float8, while casts in the
- * reverse direction are assignment-only.
- */
-
-/* Allow explicit coercions between int4 and bool */
-
-/*
- * OID category: allow implicit conversion from any integral type (including
- * int8, to support OID literals > 2G) to OID, as well as assignment coercion
- * from OID to int4 or int8.  Similarly for each OID-alias type.  Also allow
- * implicit coercions between OID and each OID-alias type, as well as
- * regproc<->regprocedure and regoper<->regoperator.  (Other coercions
- * between alias types must pass through OID.)	Lastly, there are implicit
- * casts from text and varchar to regclass, which exist mainly to support
- * legacy forms of nextval() and related functions.
- */
-
-/*
- * String category
- */
-
-/* Allow explicit coercions between int4 and "char" */
-
-/* pg_node_tree can be coerced to, but not from, text */
-
-/* pg_ndistinct can be coerced to, but not from, bytea and text */
-
-/* pg_dependencies can be coerced to, but not from, bytea and text */
-
-/*
- * Datetime category
- */
-/* Cross-category casts between int4 and abstime, reltime */
-
-/*
- * Geometric category
- */
-
-/*
- * MAC address category
- */
-
-/*
- * INET category
- */
-
-/*
- * BitString category
- */
-/* Cross-category casts between bit and int4, int8 */
-
-/*
- * Cross-category casts to and from TEXT
- *
- * We need entries here only for a few specialized cases where the behavior
- * of the cast function differs from the datatype's I/O functions.  Otherwise,
- * parse_coerce.c will generate CoerceViaIO operations without any prompting.
- *
- * Note that the castcontext values specified here should be no stronger than
- * parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd
- * behavior will ensue when the automatic cast is applied instead of the
- * pg_cast entry!
- */
-
-/*
- * Cross-category casts to and from VARCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Cross-category casts to and from BPCHAR
- *
- * We support all the same casts as for TEXT.
- */
-
-/*
- * Length-coercion functions
- */
-
-/* json to/from jsonb */
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 99bda41..7bc09bb 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -2,7 +2,6 @@
  *
  * pg_class.h
  *	  definition of the system "relation" relation (pg_class)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_class.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -134,20 +133,6 @@ typedef FormData_pg_class *Form_pg_class;
 #define Anum_pg_class_reloptions			32
 #define Anum_pg_class_relpartbound			33
 
-/* ----------------
- *		initial contents of pg_class
- *
- * NOTE: only "bootstrapped" relations need to be declared here.  Be sure that
- * the OIDs listed here match those given in their CATALOG macros, and that
- * the relnatts values are correct.
- * ----------------
- */
-
-/*
- * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
- * similarly, "1" in relminmxid stands for FirstMultiXactId
- */
-
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index beef6b5..50cbe1e 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -2,7 +2,6 @@
  *
  * pg_collation.h
  *	  definition of the system "collation" relation (pg_collation)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -12,8 +11,8 @@
  *		src/include/catalog/pg_collation.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,16 +64,10 @@ typedef FormData_pg_collation *Form_pg_collation;
 #define Anum_pg_collation_collctype		7
 #define Anum_pg_collation_collversion	8
 
-/* ----------------
- *		initial contents of pg_collation
- * ----------------
- */
-
 #define DEFAULT_COLLATION_OID	100
 #define C_COLLATION_OID			950
 #define POSIX_COLLATION_OID		951
 
-
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 8fca86d..41d97d4 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -2,7 +2,6 @@
  *
  * pg_constraint.h
  *	  definition of the system "constraint" relation (pg_constraint)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_constraint.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -176,14 +175,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
 #define Anum_pg_constraint_conbin			23
 #define Anum_pg_constraint_consrc			24
 
-/* ----------------
- *		initial contents of pg_constraint
- * ----------------
- */
-
-/* nothing, at present */
-
-
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
 #define CONSTRAINT_FOREIGN			'f'
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 29f3c9d..88098fa 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -2,7 +2,6 @@
  *
  * pg_conversion.h
  *	  definition of the system "conversion" relation (pg_conversion)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_conversion.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -69,9 +68,4 @@ typedef FormData_pg_conversion *Form_pg_conversion;
 #define Anum_pg_conversion_conproc		6
 #define Anum_pg_conversion_condefault	7
 
-/* ----------------
- * initial contents of pg_conversion
- * ---------------
- */
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index bbf131a..b7972fa 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -2,7 +2,6 @@
  *
  * pg_database.h
  *	  definition of the system "database" relation (pg_database)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_database.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 86cc17d..09546bd 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_db_role_setting.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +50,6 @@ typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 #define Anum_pg_db_role_setting_setrole			2
 #define Anum_pg_db_role_setting_setconfig		3
 
-/* ----------------
- *		initial contents of pg_db_role_setting are NOTHING
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 11b3060..7778276 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -10,8 +10,8 @@
  * src/include/catalog/pg_default_acl.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,11 +56,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define Anum_pg_default_acl_defaclobjtype		3
 #define Anum_pg_default_acl_defaclacl			4
 
-/* ----------------
- *		pg_default_acl has no initial contents
- * ----------------
- */
-
 /*
  * Types of objects for which the user is allowed to specify default
  * permissions through pg_default_acl.  These codes are used in the
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index be3867b..7c60e63 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -2,7 +2,18 @@
  *
  * pg_depend.h
  *	  definition of the system "dependency" relation (pg_depend)
- *	  along with the relation's initial contents.
+ *
+ * pg_depend has no preloaded contents, so there is no pg_depend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_depend;
+ * for example, there's not much value in creating an explicit dependency
+ * from an attribute to its relation.  Usually we make a dependency for
+ * cases where the relationship is conditional rather than essential
+ * (for example, not all triggers are dependent on constraints, but all
+ * attributes are dependent on relations) or where the dependency is not
+ * convenient to find from the contents of other catalogs.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +22,8 @@
  * src/include/catalog/pg_depend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -74,17 +85,4 @@ typedef FormData_pg_depend *Form_pg_depend;
 #define Anum_pg_depend_deptype		7
 
 
-/*
- * pg_depend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_depend;
- * for example, there's not much value in creating an explicit dependency
- * from an attribute to its relation.  Usually we make a dependency for
- * cases where the relationship is conditional rather than essential
- * (for example, not all triggers are dependent on constraints, but all
- * attributes are dependent on relations) or where the dependency is not
- * convenient to find from the contents of other catalogs.
- */
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index d291000..71eed4e 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -3,6 +3,10 @@
  * pg_description.h
  *	  definition of the system "description" relation (pg_description)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_description.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a function is identified by the OID of its pg_proc row
@@ -25,11 +29,8 @@
  * src/include/catalog/pg_description.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -73,15 +74,4 @@ typedef FormData_pg_description * Form_pg_description;
 #define Anum_pg_description_objsubid	3
 #define Anum_pg_description_description 4
 
-/* ----------------
- *		initial contents of pg_description
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index a65a8f4..3327688 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -2,7 +2,6 @@
  *
  * pg_enum.h
  *	  definition of the system "enum" relation (pg_enum)
- *	  along with the relation's initial contents.
  *
  *
  * Copyright (c) 2006-2018, PostgreSQL Global Development Group
@@ -10,11 +9,8 @@
  * src/include/catalog/pg_enum.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -54,11 +50,6 @@ typedef FormData_pg_enum *Form_pg_enum;
 #define Anum_pg_enum_enumsortorder		2
 #define Anum_pg_enum_enumlabel			3
 
-/* ----------------
- *		pg_enum has no initial contents
- * ----------------
- */
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index e03c819..20e7e38 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_event_trigger.h
  *	  definition of the system "event trigger" relation (pg_event_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_event_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index 9ca6ca7..c2d528f 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -2,7 +2,6 @@
  *
  * pg_extension.h
  *	  definition of the system "extension" relation (pg_extension)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_extension.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,9 +63,4 @@ typedef FormData_pg_extension *Form_pg_extension;
 #define Anum_pg_extension_extconfig			6
 #define Anum_pg_extension_extcondition		7
 
-/* ----------------
- *		pg_extension has no initial contents
- * ----------------
- */
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index dd00586..6cf321d 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -2,7 +2,6 @@
  *
  * pg_foreign_data_wrapper.h
  *	  definition of the system "foreign-data wrapper" relation (pg_foreign_data_wrapper)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_foreign_data_wrapper.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index a8c9e87..f909b26 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_server.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 210e77b..9bee001 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_foreign_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 057a9f7..ef0dea6 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -2,7 +2,6 @@
  *
  * pg_index.h
  *	  definition of the system "index" relation (pg_index)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_index.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3c572f4..3af1647 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -2,7 +2,6 @@
  *
  * pg_inherits.h
  *	  definition of the system "inherits" relation (pg_inherits)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_inherits.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -51,9 +50,4 @@ typedef FormData_pg_inherits *Form_pg_inherits;
 #define Anum_pg_inherits_inhparent		2
 #define Anum_pg_inherits_inhseqno		3
 
-/* ----------------
- *		pg_inherits has no initial contents
- * ----------------
- */
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 65f02c2..51adc7a 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -15,17 +15,20 @@
  * for a table itself, so that it is distinct from any column privilege.
  * Currently, objsubid is unused and zero for all other kinds of objects.
  *
+ * Because the contents of this table depend on what is done with the other
+ * objects in the system (and, in particular, may change due to changes in
+ * system_views.sql), there is no pg_init_privs.dat file. The initial contents
+ * are loaded near the end of initdb.
+ *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_init_privs.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -84,17 +87,4 @@ typedef enum InitPrivsType
 	INITPRIVS_EXTENSION = 'e'
 } InitPrivsType;
 
-/* ----------------
- *		initial contents of pg_init_privs
- * ----------------
- */
-
-/*
- *	Because the contents of this table depend on what is done with the other
- *	objects in the system (and, in particular, may change due to changes is
- *	system_views.sql), there is no initialization here.
- *
- *	The initial contents are loaded near the end of initdb.
- */
-
 #endif							/* PG_INIT_PRIVS_H */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 614ca67..5f82158 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -2,7 +2,6 @@
  *
  * pg_language.h
  *	  definition of the system "language" relation (pg_language)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_language.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,11 +63,6 @@ typedef FormData_pg_language *Form_pg_language;
 #define Anum_pg_language_lanvalidator	7
 #define Anum_pg_language_lanacl			8
 
-/* ----------------
- *		initial contents of pg_language
- * ----------------
- */
-
 #define INTERNALlanguageId 12
 #define ClanguageId 13
 #define SQLlanguageId 14
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 0a15649..1857ca4 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject.h
  *	  definition of the system "largeobject" relation (pg_largeobject)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,6 @@
  * src/include/catalog/pg_largeobject.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 4535b51..0cf7bcd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -2,7 +2,6 @@
  *
  * pg_largeobject_metadata.h
  *	  definition of the system "largeobject_metadata" relation (pg_largeobject_metadata)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_largeobject_metadata.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 5b6f9eb..19b559f9 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -2,7 +2,6 @@
  *
  * pg_namespace.h
  *	  definition of the system "namespace" relation (pg_namespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_namespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,17 +59,10 @@ typedef FormData_pg_namespace *Form_pg_namespace;
 #define Anum_pg_namespace_nspowner		2
 #define Anum_pg_namespace_nspacl		3
 
-
-/* ----------------
- * initial contents of pg_namespace
- * ---------------
- */
-
 #define PG_CATALOG_NAMESPACE 11
 #define PG_TOAST_NAMESPACE 99
 #define PG_PUBLIC_NAMESPACE 2200
 
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 5cff871..b10ceb9 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -2,7 +2,6 @@
  *
  * pg_opclass.h
  *	  definition of the system "opclass" relation (pg_opclass)
- *	  along with the relation's initial contents.
  *
  * The primary key for this table is <opcmethod, opcname, opcnamespace> ---
  * that is, there is a row for each valid combination of opclass name and
@@ -31,8 +30,8 @@
  * src/include/catalog/pg_opclass.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -81,37 +80,15 @@ typedef FormData_pg_opclass *Form_pg_opclass;
 #define Anum_pg_opclass_opcdefault		7
 #define Anum_pg_opclass_opckeytype		8
 
-/* ----------------
- *		initial contents of pg_opclass
- *
- * Note: we hard-wire an OID only for a few entries that have to be explicitly
- * referenced in the C code or in built-in catalog entries.  The rest get OIDs
- * assigned on-the-fly during initdb.
- * ----------------
- */
-
 #define DATE_BTREE_OPS_OID 3122
 #define FLOAT8_BTREE_OPS_OID 3123
 #define INT2_BTREE_OPS_OID 1979
 #define INT4_BTREE_OPS_OID 1978
 #define INT8_BTREE_OPS_OID 3124
-/*
- * Here's an ugly little hack to save space in the system catalog indexes.
- * btree doesn't ordinarily allow a storage type different from input type;
- * but cstring and name are the same thing except for trailing padding,
- * and we can safely omit that within an index entry.  So we declare the
- * btree opclass for name as using cstring storage type.
- */
 #define NUMERIC_BTREE_OPS_OID 3125
 #define OID_BTREE_OPS_OID 1981
 #define TEXT_BTREE_OPS_OID 3126
 #define TIMESTAMPTZ_BTREE_OPS_OID 3127
 #define TIMESTAMP_BTREE_OPS_OID 3128
 
-/* BRIN operator classes */
-/* no brin opclass for bool */
-/* no brin opclass for record, anyarray */
-/* no brin opclass for enum, tsvector, tsquery, jsonb */
-/* no brin opclass for the geometric types except box */
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index d9f303b..cbe6884 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -2,7 +2,6 @@
  *
  * pg_operator.h
  *	  definition of the system "operator" relation (pg_operator)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_operator.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,195 +73,42 @@ typedef FormData_pg_operator *Form_pg_operator;
 #define Anum_pg_operator_oprrest		13
 #define Anum_pg_operator_oprjoin		14
 
-/* ----------------
- *		initial contents of pg_operator
- * ----------------
- */
-
-/*
- * Note: every entry in pg_operator.h is expected to have a DESCR() comment.
- * If the operator is a deprecated equivalent of some other entry, be sure
- * to comment it as such so that initdb doesn't think it's a preferred name
- * for the underlying function.
- */
-
-
 #define BooleanNotEqualOperator   85
 #define BooleanEqualOperator   91
-
 #define Int4EqualOperator	96
 #define Int4LessOperator	97
 #define TextEqualOperator	98
-
-
-
 #define TIDEqualOperator   387
 #define TIDLessOperator    2799
-
 #define Int8LessOperator	412
-
-
-
-
-
-
-
-
 #define OID_NAME_REGEXEQ_OP		639
 #define OID_TEXT_REGEXEQ_OP		641
-
-
 #define Float8LessOperator	672
-
-
-
-
-
-
-/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-
-
-/* additional operators for geometric types - thomas 1997-07-09 */
-
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
 #define OID_BPCHAR_REGEXEQ_OP		1055
-
-/* generic array comparison operators */
 #define ARRAY_EQ_OP 1070
 #define ARRAY_LT_OP 1072
 #define ARRAY_GT_OP 1073
-
-/* date operators */
-
-/* time operators */
-
-/* timetz operators */
-
-/* float48 operators */
-
-/* float84 operators */
-
-
-/* LIKE hacks by Keith Parks. */
 #define OID_NAME_LIKE_OP		1207
 #define OID_TEXT_LIKE_OP		1209
 #define OID_BPCHAR_LIKE_OP		1211
-
-/* case-insensitive regex hacks */
 #define OID_NAME_ICREGEXEQ_OP		1226
 #define OID_TEXT_ICREGEXEQ_OP		1228
 #define OID_BPCHAR_ICREGEXEQ_OP		1234
-
-/* timestamptz operators */
-
-/* interval operators */
-
-
-
-
-/* additional geometric operators - thomas 97/04/18 */
-
-
-
-
-/* additional geometric operators - thomas 1997-07-09 */
-
-
-
-
-
-
-
-
-/* MACADDR type */
-
-
-/* MACADDR8 type */
-
-
-/* INET type (these also support CIDR via implicit cast) */
 #define OID_INET_SUB_OP			931
 #define OID_INET_SUBEQ_OP		932
 #define OID_INET_SUP_OP			933
 #define OID_INET_SUPEQ_OP		934
 #define OID_INET_OVERLAP_OP		3552
-
-
-/* case-insensitive LIKE hacks */
 #define OID_NAME_ICLIKE_OP		1625
 #define OID_TEXT_ICLIKE_OP		1627
 #define OID_BPCHAR_ICLIKE_OP	1629
-
-/* NUMERIC type - OID's 1700-1799 */
-
-
-
-
-
-
-
-
-
-
-
-/* bytea operators */
-
 #define OID_BYTEA_LIKE_OP		2016
-
-/* timestamp operators */
-
-/* character-by-character (not collation order) comparison operators for character types */
-
-
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* formerly-missing interval + datetime operators */
-
-/* new operators for Y-direction rtree opfamilies */
-
-/* overlap/contains/contained for arrays */
 #define OID_ARRAY_OVERLAP_OP	2750
 #define OID_ARRAY_CONTAINS_OP	2751
 #define OID_ARRAY_CONTAINED_OP	2752
-
-/* capturing operators to preserve pre-8.3 behavior of text concatenation */
-
-/* obsolete names for contains/contained-by operators; remove these someday */
-
-/* uuid operators */
-
-/* pg_lsn operators */
-
-/* enum operators */
-
-/*
- * tsearch operations
- */
-/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */
-
-/* generic record comparison operators */
 #define RECORD_EQ_OP 2988
 #define RECORD_LT_OP 2990
 #define RECORD_GT_OP 2991
-
-/* byte-oriented tests for identical rows and fast sorting */
-
-/* generic range type operators */
 #define OID_RANGE_LESS_OP 3884
 #define OID_RANGE_LESS_EQUAL_OP 3885
 #define OID_RANGE_GREATER_EQUAL_OP 3886
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 86f86e3..e9d8d3d 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -2,7 +2,6 @@
  *
  * pg_opfamily.h
  *	  definition of the system "opfamily" relation (pg_opfamily)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_opfamily.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -53,11 +52,6 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define Anum_pg_opfamily_opfnamespace	3
 #define Anum_pg_opfamily_opfowner		4
 
-/* ----------------
- *		initial contents of pg_opfamily
- * ----------------
- */
-
 #define BOOL_BTREE_FAM_OID 424
 #define BPCHAR_BTREE_FAM_OID 426
 #define BYTEA_BTREE_FAM_OID 428
@@ -71,5 +65,4 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
 #define BOOL_HASH_FAM_OID 2222
 #define TEXT_SPGIST_FAM_OID 4017
 
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 9dc66f4..a8bda00 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -2,7 +2,6 @@
  *
  * pg_partitioned_table.h
  *	  definition of the system "partitioned table" relation
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -10,8 +9,8 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 8995fe9..b1d9ece 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -2,7 +2,6 @@
  *
  * pg_pltemplate.h
  *	  definition of the system "PL template" relation (pg_pltemplate)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_pltemplate.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -65,11 +64,4 @@ typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 #define Anum_pg_pltemplate_tmpllibrary		7
 #define Anum_pg_pltemplate_tmplacl			8
 
-
-/* ----------------
- *		initial contents of pg_pltemplate
- * ----------------
- */
-
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index cd2f52c..f05eb32 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -2,7 +2,6 @@
  *
  * pg_proc.h
  *	  definition of the system "procedure" relation (pg_proc)
- *	  along with the relation's initial contents.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -10,13 +9,8 @@
  * src/include/catalog/pg_proc.h
  *
  * NOTES
- *	  The script catalog/genbki.pl reads this file and generates .bki
- *	  information from the DATA() statements.  utils/Gen_fmgrtab.pl
- *	  generates fmgroids.h and fmgrtab.c the same way.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
- *	  XXX (eg. #if 0 #endif won't do what you think)
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -115,552 +109,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define Anum_pg_proc_proconfig			27
 #define Anum_pg_proc_proacl				28
 
-/* ----------------
- *		initial contents of pg_proc
- * ----------------
- */
-
-/*
- * Note: every entry in pg_proc.h is expected to have a DESCR() comment,
- * except for functions that implement pg_operator.h operators and don't
- * have a good reason to be called directly rather than via the operator.
- * (If you do expect such a function to be used directly, you should
- * duplicate the operator's comment.)  initdb will supply suitable default
- * comments for functions referenced by pg_operator.
- *
- * Try to follow the style of existing functions' comments.
- * Some recommended conventions:
- *		"I/O" for typinput, typoutput, typreceive, typsend functions
- *		"I/O typmod" for typmodin, typmodout functions
- *		"aggregate transition function" for aggtransfn functions, unless
- *					they are reasonably useful in their own right
- *		"aggregate final function" for aggfinalfn functions (likewise)
- *		"convert srctypename to desttypename" for cast functions
- *		"less-equal-greater" for B-tree comparison functions
- */
-
-/* keep the following ordered by OID so that later changes can be made easier */
-
-/* OIDS 1 - 99 */
-
-
-
-
-
-/* OIDS 100 - 199 */
-
-
-
-
-
-
-
-/* OIDS 200 - 299 */
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 300 - 399 */
-
-
-
-/* Index access method handlers */
-
-
-
-
-
-
-/* OIDS 400 - 499 */
-
-
-
-
-
-
-
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
-
-
-
-
-
-
-
-
-/* OIDS 700 - 799 */
-
-
-
-
-
-
-
-
-
-
-/* OIDS 800 - 899 */
-
-
-
-
-
-
-
-
-
-/* OIDS 900 - 999 */
-
-
-
-
-
-
-
-
-
-/* OIDS 1000 - 1999 */
-
-
-
-/* OIDS 1100 - 1199 */
-
-
-
-
-
-
-/* OIDS 1200 - 1299 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1300 - 1399 */
-
-
-
-
-
-
-
-
-
-/*
- * This form of obj_description is now deprecated, since it will fail if
- * OIDs are not unique across system catalogs.  Use the other form instead.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* OIDS 1400 - 1499 */
-
-
-
-
-
-
-
-
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - thomas 97/04/20
- */
-
-
-
-
-
-
-
-/* OIDS 1500 - 1599 */
-
-
-
-
-
-
-
-/* SEQUENCE functions */
-
-
-
-
-/* OIDS 1600 - 1699 */
-
-
-
-
-
-
-
-
-
-
-
-/* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
-
-
-/* for character set encoding support */
-
-/* return database encoding name */
-
-/* return client encoding name i.e. session encoding */
-
-
-
-
-
-
-
-
-
-/* System-view support functions */
-
-
-
-
-
-
-/* Deferrable unique constraint trigger */
-
-/* Generic referential integrity constraint triggers */
-
-
-/* avoid the C names bitand and bitor, since they are C++ keywords */
-
-
-
-
-/* for macaddr type support */
-
-
-
-/* for macaddr8 type support */
-
-
-
-/* for inet type support */
-
-/* for cidr type support */
-
-/* these are used for both inet and cidr */
-
-/* inet/cidr functions */
-
-
-
-/* GiST support for inet and cidr */
-
-/* SP-GiST support for inet and cidr */
-
-/* Selectivity estimation for inet and cidr */
-
-
-
-
-
-/* OID's 1700 - 1799 NUMERIC data type */
-
-
-
-/* formatting */
-
-
-
-
-
-/* Selectivity estimators for LIKE and related operators */
-
-/* Aggregate-related functions */
-
-
-
-/* To ASCII conversion */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Aggregates (moved here from pg_aggregate for 7.3) */
-
-
-
-
-
-/* count has two forms: count(any) and count(*) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* tablesample method handlers */
-
-/* cryptographic */
-
-/* crosstype operations for date vs. timestamp and timestamptz */
-
-
-
-
-/* crosstype operations for timestamp vs. timestamptz */
-
-
-
-/* send/receive functions */
-
-
-/* System-view support functions with pretty-print option */
-
-/* asynchronous notifications */
-
-/* non-persistent series generator */
-
-/* boolean aggregates */
-/* ANY, SOME? These names conflict with subquery operators. See doc. */
-
-/* bitwise integer aggregates */
-
-/* formerly-missing interval + datetime operators */
-
-
-
-/* start time function */
-/* config reload time function */
-
-/* new functions for Y-direction rtree opclasses */
-
-/* support functions for GiST r-tree emulation */
-
-/* GIN array support */
-
-/* overlap/contains/contained */
-
-/* BRIN minmax */
-
-/* BRIN inclusion */
-
-/* userlock replacements */
-
-/* XML support */
-
-
-
-
-
-
-
-/* json */
-
-
-/* uuid */
-
-/* pg_lsn */
-
-/* enum related procs */
-
-/* text search stuff */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* jsonb */
-
-
-/* txid */
-
-/* record comparison using normal comparison rules */
-
-/* record comparison using raw byte images */
-
-/* Extensions */
-
-/* SQL-spec window functions */
-
-/* functions for range types */
-
-
-
-/* date, time, timestamp constructors */
-
-/* spgist opclasses */
-
-
-
-
-
-
-/* replication slots */
-
-/* event triggers */
-
-/* generic transition functions for ordered-set aggregates */
-
-/* inverse distribution aggregates (and their support functions) */
-
-/* hypothetical-set aggregates (and their support functions) */
-
-/* pg_upgrade support */
-
-/* replication/origin.h */
-
-
-
-
-
-
-
-
-
-
-
-
-/* publications */
-
-/* rls */
-
-/* pg_config */
-
-/* pg_controldata related functions */
-
-
-
-
-/* collation management functions */
-
-
-/* system management/monitoring related functions */
-
-/* hash partitioning constraint function */
-
 /*
  * Symbolic values for prokind column
  */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 37e77b8..62772b6 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 033b600..661466f 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_publication_rel.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index bbd28f2..b7113bf 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -2,7 +2,6 @@
  *
  * pg_range.h
  *	  definition of the system "range" relation (pg_range)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,11 +10,8 @@
  * src/include/catalog/pg_range.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
- *
- *	  XXX do NOT break up DATA() statements into multiple lines!
- *		  the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -60,13 +56,6 @@ typedef FormData_pg_range *Form_pg_range;
 #define Anum_pg_range_rngcanonical		5
 #define Anum_pg_range_rngsubdiff		6
 
-
-/* ----------------
- *		initial contents of pg_range
- * ----------------
- */
-
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 9656179..0c5a05e 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_replication_origin.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -62,9 +62,4 @@ typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 #define Anum_pg_replication_origin_roident			1
 #define Anum_pg_replication_origin_roname			2
 
-/* ----------------
- *		pg_replication_origin has no initial contents
- * ----------------
- */
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index 81f2b19..a310ecb 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -2,7 +2,6 @@
  *
  * pg_rewrite.h
  *	  definition of the system "rewrite-rule" relation (pg_rewrite)
- *	  along with the relation's initial contents.
  *
  * As of Postgres 7.3, the primary key for this table is <ev_class, rulename>
  * --- ie, rule names are only unique among the rules of a given table.
@@ -14,8 +13,8 @@
  * src/include/catalog/pg_rewrite.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index ae40377..17ac34a 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -2,8 +2,16 @@
  *
  * pg_shdepend.h
  *	  definition of the system "shared dependency" relation (pg_shdepend)
- *	  along with the relation's initial contents.
  *
+ * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat
+ * file; system-defined dependencies are loaded into it during a late stage
+ * of the initdb process.
+ *
+ * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
+ * for example, there's not much value in creating an explicit dependency
+ * from a relation to its database.  Currently, only dependencies on roles
+ * are explicitly stored in pg_shdepend.
+
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -11,8 +19,8 @@
  * src/include/catalog/pg_shdepend.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -77,14 +85,4 @@ typedef FormData_pg_shdepend *Form_pg_shdepend;
 #define Anum_pg_shdepend_deptype	7
 
 
-/*
- * pg_shdepend has no preloaded contents; system-defined dependencies are
- * loaded into it during a late stage of the initdb process.
- *
- * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
- * for example, there's not much value in creating an explicit dependency
- * from a relation to its database.  Currently, only dependencies on roles
- * are explicitly stored in pg_shdepend.
- */
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index d4ec616..c0ecc0c 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -4,6 +4,10 @@
  *	  definition of the system "shared description" relation
  *	  (pg_shdescription)
  *
+ * Because the contents of this table are taken from the *.dat files
+ * of other catalogs, there is no pg_shdescription.dat file. The initial
+ * contents are assembled by genbki.pl and loaded during initdb.
+ *
  * NOTE: an object is identified by the OID of the row that primarily
  * defines the object, plus the OID of the table that that row appears in.
  * For example, a database is identified by the OID of its pg_database row
@@ -18,11 +22,8 @@
  * src/include/catalog/pg_shdescription.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -64,15 +65,4 @@ typedef FormData_pg_shdescription * Form_pg_shdescription;
 #define Anum_pg_shdescription_classoid	2
 #define Anum_pg_shdescription_description 3
 
-/* ----------------
- *		initial contents of pg_shdescription
- * ----------------
- */
-
-/*
- *	Because the contents of this table are taken from the other *.h files,
- *	there is no initialization here.  The initial contents are extracted
- *	by genbki.pl and loaded during initdb.
- */
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index a5c85fe..8ef2e55 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic.h
  *	  definition of the system "statistic" relation (pg_statistic)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 2f5ef78c..d656cd8 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -2,7 +2,6 @@
  *
  * pg_statistic_ext.h
  *	  definition of the system "extended statistic" relation (pg_statistic_ext)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_statistic_ext.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 6db2ee2..75a3a2e 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -2,7 +2,6 @@
  *
  * pg_tablespace.h
  *	  definition of the system "tablespace" relation (pg_tablespace)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_tablespace.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index d4fc464..21109db 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -7,8 +7,8 @@
  * src/include/catalog/pg_transform.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index c80a3aa..e307039 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -2,7 +2,6 @@
  *
  * pg_trigger.h
  *	  definition of the system "trigger" relation (pg_trigger)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_trigger.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 7667585..21e6c2c 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,9 +47,4 @@ typedef FormData_pg_ts_config *Form_pg_ts_config;
 #define Anum_pg_ts_config_cfgowner		3
 #define Anum_pg_ts_config_cfgparser		4
 
-/* ----------------
- *		initial contents of pg_ts_config
- * ----------------
- */
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 5d4820f..3b5e791 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_config_map.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 #define Anum_pg_ts_config_map_mapseqno		3
 #define Anum_pg_ts_config_map_mapdict		4
 
-/* ----------------
- *		initial contents of pg_ts_config_map
- * ----------------
- */
-
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 175cbb3..74c80f0 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_dict.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -55,10 +52,4 @@ typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 #define Anum_pg_ts_dict_dicttemplate	4
 #define Anum_pg_ts_dict_dictinitoption	5
 
-/* ----------------
- *		initial contents of pg_ts_dict
- * ----------------
- */
-
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index de1943d..5b5edd0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_parser.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -56,10 +53,4 @@ typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 #define Anum_pg_ts_parser_prsheadline		6
 #define Anum_pg_ts_parser_prslextype		7
 
-/* ----------------
- *		initial contents of pg_ts_parser
- * ----------------
- */
-
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index d33145a..b641788 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -10,11 +10,8 @@
  * src/include/catalog/pg_ts_template.h
  *
  * NOTES
- *		the genbki.pl script reads this file and generates .bki
- *		information from the DATA() statements.
- *
- *		XXX do NOT break up DATA() statements into multiple lines!
- *			the scripts are not as smart as you might think...
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -50,10 +47,4 @@ typedef FormData_pg_ts_template *Form_pg_ts_template;
 #define Anum_pg_ts_template_tmplinit		3
 #define Anum_pg_ts_template_tmpllexize		4
 
-/* ----------------
- *		initial contents of pg_ts_template
- * ----------------
- */
-
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 07bedd3..6aa9185 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -2,7 +2,6 @@
  *
  * pg_type.h
  *	  definition of the system "type" relation (pg_type)
- *	  along with the relation's initial contents.
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -11,8 +10,8 @@
  * src/include/catalog/pg_type.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
@@ -268,106 +267,45 @@ typedef FormData_pg_type *Form_pg_type;
 #define Anum_pg_type_typdefault			29
 #define Anum_pg_type_typacl				30
 
-
-/* ----------------
- *		initial contents of pg_type
- * ----------------
- */
-
-/*
- * Keep the following ordered by OID so that later changes can be made more
- * easily.
- *
- * For types used in the system catalogs, make sure the values here match
- * TypInfo[] in bootstrap.c.
- */
-
-/* OIDS 1 - 99 */
 #define BOOLOID			16
-
 #define BYTEAOID		17
-
 #define CHAROID			18
-
 #define NAMEOID			19
-
 #define INT8OID			20
-
 #define INT2OID			21
-
 #define INT2VECTOROID	22
-
 #define INT4OID			23
-
 #define REGPROCOID		24
-
 #define TEXTOID			25
-
 #define OIDOID			26
-
 #define TIDOID		27
-
 #define XIDOID 28
-
 #define CIDOID 29
-
 #define OIDVECTOROID	30
-
-/* hand-built rowtype entries for bootstrapped catalogs */
-/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */
-
-
-/* OIDS 100 - 199 */
 #define JSONOID 114
 #define XMLOID 142
-
 #define PGNODETREEOID	194
-
 #define PGNDISTINCTOID	3361
-
 #define PGDEPENDENCIESOID	3402
-
 #define PGDDLCOMMANDOID 32
-
-/* OIDS 200 - 299 */
-
-
-/* OIDS 300 - 399 */
-
-/* OIDS 400 - 499 */
-
-/* OIDS 500 - 599 */
-
-/* OIDS 600 - 699 */
 #define POINTOID		600
 #define LSEGOID			601
 #define PATHOID			602
 #define BOXOID			603
 #define POLYGONOID		604
-
 #define LINEOID			628
-
-/* OIDS 700 - 799 */
-
 #define FLOAT4OID 700
 #define FLOAT8OID 701
 #define ABSTIMEOID		702
 #define RELTIMEOID		703
 #define TINTERVALOID	704
 #define UNKNOWNOID		705
-
 #define CIRCLEOID		718
 #define CASHOID 790
-
-/* OIDS 800 - 899 */
 #define MACADDROID 829
 #define INETOID 869
 #define CIDROID 650
 #define MACADDR8OID 774
-
-/* OIDS 900 - 999 */
-
-/* OIDS 1000 - 1099 */
 #define INT2ARRAYOID		1005
 #define INT4ARRAYOID		1007
 #define TEXTARRAYOID		1009
@@ -375,84 +313,35 @@ typedef FormData_pg_type *Form_pg_type;
 #define FLOAT4ARRAYOID 1021
 #define ACLITEMOID		1033
 #define CSTRINGARRAYOID		1263
-
 #define BPCHAROID		1042
 #define VARCHAROID		1043
-
 #define DATEOID			1082
 #define TIMEOID			1083
-
-/* OIDS 1100 - 1199 */
 #define TIMESTAMPOID	1114
 #define TIMESTAMPTZOID	1184
 #define INTERVALOID		1186
-
-/* OIDS 1200 - 1299 */
 #define TIMETZOID		1266
-
-/* OIDS 1500 - 1599 */
 #define BITOID	 1560
 #define VARBITOID	  1562
-
-/* OIDS 1600 - 1699 */
-
-/* OIDS 1700 - 1799 */
 #define NUMERICOID		1700
-
 #define REFCURSOROID	1790
-
-/* OIDS 2200 - 2299 */
-
 #define REGPROCEDUREOID 2202
-
 #define REGOPEROID		2203
-
 #define REGOPERATOROID	2204
-
 #define REGCLASSOID		2205
-
 #define REGTYPEOID		2206
-
 #define REGROLEOID		4096
-
 #define REGNAMESPACEOID		4089
-
 #define REGTYPEARRAYOID 2211
-
-/* uuid */
 #define UUIDOID 2950
-
-/* pg_lsn */
 #define LSNOID			3220
-
-/* text search */
 #define TSVECTOROID		3614
 #define GTSVECTOROID	3642
 #define TSQUERYOID		3615
 #define REGCONFIGOID	3734
 #define REGDICTIONARYOID	3769
-
-
-/* jsonb */
 #define JSONBOID 3802
-
-
-/* range types */
 #define INT4RANGEOID		3904
-
-/*
- * pseudo-types
- *
- * types with typtype='p' represent various special cases in the type system.
- *
- * These cannot be used to define table columns, but are valid as function
- * argument and result types (if supported by the function's implementation
- * language).
- *
- * Note: cstring is a borderline case; it is still considered a pseudo-type,
- * but there is now support for it in records and arrays.  Perhaps we should
- * just treat it as a regular base type?
- */
 #define RECORDOID		2249
 #define RECORDARRAYOID	2287
 #define CSTRINGOID		2275
@@ -472,7 +361,6 @@ typedef FormData_pg_type *Form_pg_type;
 #define TSM_HANDLEROID	3310
 #define ANYRANGEOID		3831
 
-
 /*
  * macros
  */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 686562a..3da6496 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -9,8 +9,8 @@
  * src/include/catalog/pg_user_mapping.h
  *
  * NOTES
- *	  the genbki.pl script reads this file and generates .bki
- *	  information from the DATA() statements.
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
index f6387ae..3db39b8 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -30,7 +30,7 @@ extern void BootstrapToastTable(char *relName,
 
 /*
  * This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
  */
 #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
 
-- 
2.7.4

v10-0005-Remove-symbols-from-catalog-headers.patchtext/x-patch; charset=US-ASCII; name=v10-0005-Remove-symbols-from-catalog-headers.patchDownload
From ea8785f3d8739dbff04fb2da450e851425eb8ef8 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 4 Mar 2018 03:09:56 +0700
Subject: [PATCH] Remove symbols from catalog headers

When we removed the catalog data from the headers, the OID symbols were left
behind. Since we don't want them to be separate from the data they refer to,
genbki.pl now copies them from the metadata in the .dat files to new pg_*_d.h
headers which are now included by the relevant header file. This required
an analog of FindDefinedSymbol() that retrieves the symbol from the data.

Since we had to build this mechanism anyway, take this opportunity to
generate the Anum_* and Natts_* compiler constants, so we don't have to
maintain those by hand.

Since the new generated headers can be included separately from the static
catalog header, we can now arrange to have client code include these
instead. To make certain macros visible to client code, introduce the
EXPOSE_TO_CLIENT_CODE symbol, which is never defined, and just prevents
the compiler from seeing them where they are. Catalog.pm knows to save
these lines so they can be copied to the definition headers, where both
client and server code can see them.

Once clients migrate to using the *_d headers, it will be possible to get
rid of the pg_*_fn.h headers which only exist to quarantine code away from
clients. That is left for future work, however.

This patch does not change the way #define symbols for pg_proc entries
are built. It's not clear that it would be worth the work to write them
to pg_proc_d.h instead of utils/fmgroids.h, and would likely result in
duplication of code.
---
 src/backend/Makefile                          |  21 ++--
 src/backend/catalog/.gitignore                |   1 +
 src/backend/catalog/Catalog.pm                |  77 +++++++++++----
 src/backend/catalog/Makefile                  |  49 ++++++----
 src/backend/catalog/README                    |   8 +-
 src/backend/catalog/genbki.pl                 |  91 +++++++++++++-----
 src/backend/utils/Gen_fmgrtab.pl              |   2 +-
 src/backend/utils/Makefile                    |   6 +-
 src/common/Makefile                           |   2 +
 src/include/Makefile                          |   2 +-
 src/include/catalog/.gitignore                |   1 +
 src/include/catalog/genbki.h                  |  13 ++-
 src/include/catalog/pg_aggregate.h            |  32 +------
 src/include/catalog/pg_am.h                   |  17 +---
 src/include/catalog/pg_amop.h                 |  25 ++---
 src/include/catalog/pg_amproc.h               |  12 +--
 src/include/catalog/pg_attrdef.h              |  11 +--
 src/include/catalog/pg_attribute.h            |  32 +------
 src/include/catalog/pg_auth_members.h         |  11 +--
 src/include/catalog/pg_authid.h               |  26 +----
 src/include/catalog/pg_cast.h                 |  18 ++--
 src/include/catalog/pg_class.h                |  44 +--------
 src/include/catalog/pg_collation.h            |  21 +---
 src/include/catalog/pg_constraint.h           |  33 +------
 src/include/catalog/pg_conversion.h           |  15 +--
 src/include/catalog/pg_database.h             |  22 +----
 src/include/catalog/pg_db_role_setting.h      |  10 +-
 src/include/catalog/pg_default_acl.h          |  14 +--
 src/include/catalog/pg_depend.h               |  15 +--
 src/include/catalog/pg_description.h          |  11 +--
 src/include/catalog/pg_enum.h                 |  10 +-
 src/include/catalog/pg_event_trigger.h        |  13 +--
 src/include/catalog/pg_extension.h            |  15 +--
 src/include/catalog/pg_foreign_data_wrapper.h |  14 +--
 src/include/catalog/pg_foreign_server.h       |  15 +--
 src/include/catalog/pg_foreign_table.h        |  11 +--
 src/include/catalog/pg_index.h                |  26 +----
 src/include/catalog/pg_inherits.h             |  10 +-
 src/include/catalog/pg_init_privs.h           |  12 +--
 src/include/catalog/pg_language.h             |  19 +---
 src/include/catalog/pg_largeobject.h          |  10 +-
 src/include/catalog/pg_largeobject_metadata.h |   9 +-
 src/include/catalog/pg_namespace.h            |  15 +--
 src/include/catalog/pg_opclass.h              |  26 +----
 src/include/catalog/pg_operator.h             |  72 +-------------
 src/include/catalog/pg_opfamily.h             |  24 +----
 src/include/catalog/pg_partitioned_table.h    |  15 +--
 src/include/catalog/pg_pltemplate.h           |  15 +--
 src/include/catalog/pg_policy.h               |  19 +---
 src/include/catalog/pg_proc.h                 |  37 +------
 src/include/catalog/pg_publication.h          |  15 +--
 src/include/catalog/pg_publication_rel.h      |  11 +--
 src/include/catalog/pg_range.h                |  13 +--
 src/include/catalog/pg_replication_origin.h   |   9 +-
 src/include/catalog/pg_rewrite.h              |  14 +--
 src/include/catalog/pg_seclabel.h             |  12 +--
 src/include/catalog/pg_sequence.h             |  16 ++--
 src/include/catalog/pg_shdepend.h             |  15 +--
 src/include/catalog/pg_shdescription.h        |  10 +-
 src/include/catalog/pg_shseclabel.h           |  13 +--
 src/include/catalog/pg_statistic.h            |  33 +------
 src/include/catalog/pg_statistic_ext.h        |  15 +--
 src/include/catalog/pg_subscription.h         |  16 +---
 src/include/catalog/pg_subscription_rel.h     |  13 +--
 src/include/catalog/pg_tablespace.h           |  15 +--
 src/include/catalog/pg_transform.h            |  17 ++--
 src/include/catalog/pg_trigger.h              |  24 +----
 src/include/catalog/pg_ts_config.h            |  11 +--
 src/include/catalog/pg_ts_config_map.h        |  11 +--
 src/include/catalog/pg_ts_dict.h              |  12 +--
 src/include/catalog/pg_ts_parser.h            |  14 +--
 src/include/catalog/pg_ts_template.h          |  11 +--
 src/include/catalog/pg_type.h                 | 133 +-------------------------
 src/include/catalog/pg_user_mapping.h         |  11 +--
 src/interfaces/ecpg/ecpglib/pg_type.h         |  65 +------------
 src/tools/msvc/Solution.pm                    |  24 +++--
 src/tools/msvc/clean.bat                      |   2 +
 src/tools/pgindent/pgindent                   |   8 +-
 78 files changed, 341 insertions(+), 1251 deletions(-)

diff --git a/src/backend/Makefile b/src/backend/Makefile
index 2fadcea..ef00b38 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -51,7 +51,7 @@ endif
 
 ##########################################################################
 
-all: submake-libpgport submake-schemapg postgres $(POSTGRES_IMP)
+all: submake-libpgport submake-catalog-headers postgres $(POSTGRES_IMP)
 
 ifneq ($(PORTNAME), cygwin)
 ifneq ($(PORTNAME), win32)
@@ -149,12 +149,10 @@ utils/probes.h: utils/probes.d
 	$(MAKE) -C utils probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
-catalog/schemapg.h: | submake-schemapg
+submake-catalog-headers:
+	$(MAKE) -C catalog distprep builddir-headers
 
-submake-schemapg:
-	$(MAKE) -C catalog schemapg.h
-
-.PHONY: submake-schemapg
+.PHONY: submake-catalog-headers
 
 # Make symlinks for these headers in the include directory. That way
 # we can cut down on the -I options. Also, a symlink is automatically
@@ -169,18 +167,13 @@ submake-schemapg:
 
 .PHONY: generated-headers
 
-generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h
+generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h submake-catalog-headers
 
 $(top_builddir)/src/include/parser/gram.h: parser/gram.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
-$(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
-	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
-	  cd '$(dir $@)' && rm -f $(notdir $@) && \
-	  $(LN_S) "$$prereqdir/$(notdir $<)" .
-
 $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
@@ -216,7 +209,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS)
 distprep:
 	$(MAKE) -C parser	gram.c gram.h scan.c
 	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
-	$(MAKE) -C catalog	schemapg.h postgres.bki postgres.description postgres.shdescription
+	$(MAKE) -C catalog	distprep
 	$(MAKE) -C replication	repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c
 	$(MAKE) -C storage/lmgr	lwlocknames.h
 	$(MAKE) -C utils	fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h
@@ -308,6 +301,7 @@ endif
 clean:
 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
 		$(top_builddir)/src/include/parser/gram.h \
+		$(top_builddir)/src/include/catalog/pg_*_d.h \
 		$(top_builddir)/src/include/catalog/schemapg.h \
 		$(top_builddir)/src/include/storage/lwlocknames.h \
 		$(top_builddir)/src/include/utils/fmgroids.h \
@@ -329,6 +323,7 @@ maintainer-clean: distclean
 	      parser/gram.c \
 	      parser/gram.h \
 	      parser/scan.c \
+	      catalog/pg_*_d.h \
 	      catalog/schemapg.h \
 	      catalog/postgres.bki \
 	      catalog/postgres.description \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 557af3c..1044a1c 100644
--- a/src/backend/catalog/.gitignore
+++ b/src/backend/catalog/.gitignore
@@ -2,3 +2,4 @@
 /postgres.description
 /postgres.shdescription
 /schemapg.h
+/pg_*_d.h
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index dc6e0d3..1ec79c9 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -36,10 +36,12 @@ sub ParseHeader
 		my %catalog;
 		my $declaring_attributes = 0;
 		my $is_varlen     = 0;
+		my $is_client_code = 0;
 
 		$catalog{columns} = [];
 		$catalog{toasting} = [];
 		$catalog{indexing} = [];
+		$catalog{client_code} = [];
 
 		open(my $ifh, '<', $input_file) || die "$input_file: $!";
 
@@ -47,24 +49,39 @@ sub ParseHeader
 		while (<$ifh>)
 		{
 
-			# Strip C-style comments.
-			s;/\*(.|\n)*\*/;;g;
-			if (m;/\*;)
+			# Set appropriate flag when we're in certain code sections.
+			if (/^#/)
 			{
-
-				# handle multi-line comments properly.
-				my $next_line = <$ifh>;
-				die "$input_file: ends within C-style comment\n"
-				  if !defined $next_line;
-				$_ .= $next_line;
-				redo;
+				$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+				if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/)
+				{
+					$is_client_code = 1;
+					next;
+				}
+				next if !$is_client_code;
 			}
 
-			# Strip useless whitespace and trailing semicolons.
-			chomp;
-			s/^\s+//;
-			s/;\s*$//;
-			s/\s+/ /g;
+			if (!$is_client_code)
+			{
+				# Strip C-style comments.
+				s;/\*(.|\n)*\*/;;g;
+				if (m;/\*;)
+				{
+
+					# handle multi-line comments properly.
+					my $next_line = <$ifh>;
+					die "$input_file: ends within C-style comment\n"
+					  if !defined $next_line;
+					$_ .= $next_line;
+					redo;
+				}
+
+				# Strip useless whitespace and trailing semicolons.
+				chomp;
+				s/^\s+//;
+				s/;\s*$//;
+				s/\s+/ /g;
+			}
 
 			# Push the data into the appropriate data structure.
 			if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
@@ -102,14 +119,20 @@ sub ParseHeader
 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
-			elsif ($declaring_attributes)
+			elsif ($is_client_code)
 			{
-				next if (/^{|^$/);
-				if (/^#/)
+				if (/^#endif/)
 				{
-					$is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
-					next;
+					$is_client_code = 0;
+				}
+				else
+				{
+					push @{ $catalog{client_code} }, $_;
 				}
+			}
+			elsif ($declaring_attributes)
+			{
+				next if (/^{|^$/);
 				if (/^}/)
 				{
 					$declaring_attributes = 0;
@@ -345,4 +368,18 @@ sub FindDefinedSymbol
 	die "$catalog_header: not found in any include directory\n";
 }
 
+# Similar to FindDefinedSymbol, but looks in the bootstrap metadata.
+sub FindDefinedSymbolFromData
+{
+	my ($data, $symbol) = @_;
+	foreach my $row (@{ $data })
+	{
+		if ($row->{oid_symbol} eq $symbol)
+		{
+			return $row->{oid};
+		}
+		die "no definition found for $symbol\n";
+	}
+}
+
 1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 23858b8..9b87f85 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -2,6 +2,9 @@
 #
 # Makefile for backend/catalog
 #
+# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
 # src/backend/catalog/Makefile
 #
 #-------------------------------------------------------------------------
@@ -22,13 +25,9 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: $(BKIFILES) schemapg.h
-
 # Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.  In particular,
-# indexing.h had better be last, and toasting.h just before it.
-
-POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
+# the catalog header files are assembled into postgres.bki.
+CATALOG_HEADERS := \
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
 	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
 	pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
@@ -46,8 +45,20 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
 	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
 	pg_subscription_rel.h \
-	toasting.h indexing.h \
-    )
+
+GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h
+
+distprep: $(BKIFILES) $(GENERATED_HEADERS)
+
+.PHONY: builddir-headers
+
+builddir-headers: $(addprefix $(top_builddir)/src/include/catalog/, $(GENERATED_HEADERS))
+
+all: distprep builddir-headers
+
+# In the list of headers used to assemble postgres.bki, indexing.h needs
+# be last, and toasting.h just before it.
+POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS) toasting.h indexing.h)
 
 POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
@@ -61,15 +72,10 @@ POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
-# locations of headers that genbki.pl needs to read
-pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog
-
 # see explanation in ../parser/Makefile
 postgres.description: postgres.bki ;
-
 postgres.shdescription: postgres.bki ;
-
-schemapg.h: postgres.bki ;
+$(GENERATED_HEADERS): postgres.bki ;
 
 # Technically, this should depend on Makefile.global, but then
 # postgres.bki would need to be rebuilt after every configure run,
@@ -78,7 +84,18 @@ schemapg.h: postgres.bki ;
 # changes.
 postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
 	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
-	$(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+
+# see explanation in src/backend/Makefile
+$(top_builddir)/src/include/catalog/%_d.h: %_d.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
+
+$(top_builddir)/src/include/catalog/schemapg.h: schemapg.h
+	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+	  cd '$(dir $@)' && rm -f $(notdir $@) && \
+	  $(LN_S) "$$prereqdir/$(notdir $<)" .
 
 .PHONY: install-data
 install-data: $(BKIFILES) installdirs
@@ -96,7 +113,7 @@ installdirs:
 uninstall-data:
 	rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
 
-# postgres.bki, postgres.description, postgres.shdescription, and schemapg.h
+# postgres.bki, postgres.description, postgres.shdescription, and the generated headers
 # are in the distribution tarball, so they are not cleaned here.
 clean:
 
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index c177ba0..84e6e07 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -111,7 +111,7 @@ catalogs if at all possible; generally, only tables that must be written to
 in order to create a table should be bootstrapped.
 
 - Certain BOOTSTRAP tables must be at the start of the Makefile
-POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
+CATALOG_HEADERS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
@@ -121,6 +121,12 @@ the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
 reputedly some other order dependencies in the .bki list, too.
 
+-Client code should not include the catalog headers directly.  Instead, it
+should include the corresponding generated pg_*_d.h header.  If you want
+macros or other code in the catalog headers to be visible to clients, use
+the undefined macro EXPOSE_TO_CLIENT_CODE to instruct genbki.pl to copy
+that section to the pg_*_d.h header.
+
 -----------------------------------------------------------------
 
 When munging the .c files, you should be aware of certain conventions:
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 027dd95..9f67a24 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 my @input_files;
-my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -36,10 +35,6 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
-	elsif ($arg =~ /^-I/)
-	{
-		push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
-	}
 	elsif ($arg =~ /^--set-version=(.*)$/)
 	{
 		$major_version = $1;
@@ -53,8 +48,7 @@ while (@ARGV)
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n" if !@input_files;
 die "--set-version must be specified.\n" if !defined $major_version;
 
 # Make sure output_path ends in a slash.
@@ -78,21 +72,6 @@ my $shdescrfile = $output_path . 'postgres.shdescription';
 open my $shdescr, '>', $shdescrfile . $tmpext
   or die "can't open $shdescrfile$tmpext: $!";
 
-# Fetch some special data that we will substitute into the output file.
-# CAUTION: be wary about what symbols you substitute into the .bki file here!
-# It's okay to substitute things that are expected to be really constant
-# within a given Postgres release, such as fixed OIDs.  Do not substitute
-# anything that could depend on platform or configuration.  (The right place
-# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-# NB: make sure that the files used here are known to be part of the .bki
-# file's dependencies by src/backend/catalog/Makefile.
-my $BOOTSTRAP_SUPERUSERID =
-  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
-							 'BOOTSTRAP_SUPERUSERID');
-my $PG_CATALOG_NAMESPACE =
-  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
-							 'PG_CATALOG_NAMESPACE');
-
 # Read all the files into internal data structures. Not all catalogs
 # will have a data file.
 my @catnames;
@@ -131,6 +110,17 @@ foreach my $header (@input_files)
 	}
 }
 
+# Fetch some special data that we will substitute into the output file.
+# CAUTION: be wary about what symbols you substitute into the .bki file here!
+# It's okay to substitute things that are expected to be really constant
+# within a given Postgres release, such as fixed OIDs.  Do not substitute
+# anything that could depend on platform or configuration.  (The right place
+# to handle those sorts of things is in initdb.c's bootstrap_template1().)
+my $BOOTSTRAP_SUPERUSERID
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID');
+my $PG_CATALOG_NAMESPACE
+	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -146,6 +136,35 @@ my %types;
 foreach my $catname (@catnames)
 {
 
+	# Create one definition header with macro definitions for each catalog.
+	my $def_file = $output_path . $catname . '_d.h';
+	open my $def, '>', $def_file . $tmpext
+	  or die "can't open $def_file$tmpext: $!";
+
+	# Opening boilerplate for pg_*_d.h
+	printf $def <<EOM, $catname, $catname, uc $catname, uc $catname;
+/*-------------------------------------------------------------------------
+ *
+ * %s_d.h
+ *    Macro definitions for %s
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ *  ******************************
+ *  *** DO NOT EDIT THIS FILE! ***
+ *  ******************************
+ *
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef %s_D_H
+#define %s_D_H
+
+EOM
+
 	# .bki CREATE command for this catalog
 	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
@@ -158,11 +177,14 @@ foreach my $catname (@catnames)
 
 	print $bki " (\n";
 	my $schema = $catalog->{columns};
+	my $attnum = 0;
 	foreach my $column (@$schema)
 	{
+		$attnum++;
 		my $attname = $column->{name};
 		my $atttype = $column->{type};
 
+		# Emit column definitions
 		if (!$first)
 		{
 			print $bki " ,\n";
@@ -179,9 +201,22 @@ foreach my $catname (@catnames)
 		{
 			print $bki " FORCE NULL";
 		}
+
+		# Emit Anum_* constants
+		print $def
+		  sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum);
 	}
 	print $bki "\n )\n";
 
+	# Emit Natts_* constant
+	print $def "\n#define Natts_$catname $attnum\n\n";
+
+	# Emit client code copied from source header
+	foreach my $line (@{ $catalog->{client_code} })
+	{
+		print $def $line;
+	}
+
 	# Open it, unless bootstrap case (create bootstrap does this
 	# automatically)
 	if (!$catalog->{bootstrap})
@@ -260,9 +295,21 @@ foreach my $catname (@catnames)
 			printf $shdescr "%s\t%s\t%s\n",
 			  $bki_values{oid}, $catname, $bki_values{shdescr};
 		}
+
+		# Emit OID symbols
+		if (defined $bki_values{oid_symbol})
+		{
+			printf $def "#define %s %s\n",
+			  $bki_values{oid_symbol}, $bki_values{oid};
+		}
 	}
 
 	print $bki "close $catname\n";
+	print $def sprintf("\n#endif /* %s_D_H */\n", uc $catname);
+
+	# Close and rename definition header
+	close $def;
+	Catalog::RenameTempFile($def_file, $tmpext);
 }
 
 # Any information needed for the BKI that is not contained in a pg_*.h header
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 5faaadc..2a5381d 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -82,7 +82,7 @@ foreach my $datfile (@input_files)
 my $FirstBootstrapObjectId =
 	Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
-	Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
+	Catalog::FindDefinedSymbolFromData($catalog_data{pg_language}, 'INTERNALlanguageId');
 
 # Collect certain fields from pg_proc.dat.
 my @fmgr = ();
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index f71cdc5..26500be 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -20,12 +20,14 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h
 
 $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h
 
+FMGR_DATA = $(addprefix $(top_srcdir)/src/include/catalog/, pg_proc.dat pg_language.dat)
+
 # see explanation in ../parser/Makefile
 fmgrprotos.h: fmgroids.h ;
 fmgroids.h: fmgrtab.c ;
 
-fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h
-	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.dat
+fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h
+	$(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA)
 
 errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl
 	$(PERL) $(srcdir)/generate-errcodes.pl $< > $@
diff --git a/src/common/Makefile b/src/common/Makefile
index 80e78d7..f28c136 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -88,6 +88,8 @@ libpgcommon_srv.a: $(OBJS_SRV)
 %_srv.o: %.c %.o
 	$(CC) $(CFLAGS) $(subst -DFRONTEND ,, $(CPPFLAGS)) -c $< -o $@
 
+$(OBJS_COMMON): | submake-generated-headers
+
 $(OBJS_SRV): | submake-errcodes
 
 .PHONY: submake-errcodes
diff --git a/src/include/Makefile b/src/include/Makefile
index a689d35..7fe4d45 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -73,7 +73,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h
+	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h catalog/pg_*_d.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index 650202e..dfd5616 100644
--- a/src/include/catalog/.gitignore
+++ b/src/include/catalog/.gitignore
@@ -1 +1,2 @@
 /schemapg.h
+/pg_*_d.h
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 9b769c2..4702932 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,9 +34,9 @@
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
 
+/* The following are never defined; they are here only for documentation. */
+
 /*
- * This is never defined; it's here only for documentation.
- *
  * Variable-length catalog fields (except possibly the first not nullable one)
  * should not be visible in C structures, so they are made invisible by #ifdefs
  * of an undefined symbol.  See also MARKNOTNULL in bootstrap.c for how this is
@@ -44,4 +44,13 @@
  */
 #undef CATALOG_VARLEN
 
+/*
+ * There is code in the catalog headers that needs to be visible to clients,
+ * but we don't want them to include the full header because of safety issues
+ * with other code in the header. This symbol instructs genbki.pl to copy this
+ * section when generating the corresponding definition header, where it can
+ * be included by both client and backend code.
+ */
+#undef EXPOSE_TO_CLIENT_CODE
+
 #endif							/* GENBKI_H */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 4f9edf9..97d8f22 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -19,6 +19,7 @@
 #define PG_AGGREGATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_aggregate_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_aggregate definition.
@@ -87,34 +88,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_aggregate *Form_pg_aggregate;
 
-/* ----------------
- *		compiler constants for pg_aggregate
- * ----------------
- */
-
-#define Natts_pg_aggregate					22
-#define Anum_pg_aggregate_aggfnoid			1
-#define Anum_pg_aggregate_aggkind			2
-#define Anum_pg_aggregate_aggnumdirectargs	3
-#define Anum_pg_aggregate_aggtransfn		4
-#define Anum_pg_aggregate_aggfinalfn		5
-#define Anum_pg_aggregate_aggcombinefn		6
-#define Anum_pg_aggregate_aggserialfn		7
-#define Anum_pg_aggregate_aggdeserialfn		8
-#define Anum_pg_aggregate_aggmtransfn		9
-#define Anum_pg_aggregate_aggminvtransfn	10
-#define Anum_pg_aggregate_aggmfinalfn		11
-#define Anum_pg_aggregate_aggfinalextra		12
-#define Anum_pg_aggregate_aggmfinalextra	13
-#define Anum_pg_aggregate_aggfinalmodify	14
-#define Anum_pg_aggregate_aggmfinalmodify	15
-#define Anum_pg_aggregate_aggsortop			16
-#define Anum_pg_aggregate_aggtranstype		17
-#define Anum_pg_aggregate_aggtransspace		18
-#define Anum_pg_aggregate_aggmtranstype		19
-#define Anum_pg_aggregate_aggmtransspace	20
-#define Anum_pg_aggregate_agginitval		21
-#define Anum_pg_aggregate_aggminitval		22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for aggkind column.  We distinguish normal aggregates
@@ -143,4 +117,6 @@ typedef FormData_pg_aggregate *Form_pg_aggregate;
 #define AGGMODIFY_SHARABLE			's'
 #define AGGMODIFY_READ_WRITE		'w'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_AGGREGATE_H */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index fe59a29..4004c96 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -19,6 +19,7 @@
 #define PG_AM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_am_d.h"
 
 /* ----------------
  *		pg_am definition.  cpp turns this into
@@ -41,14 +42,7 @@ CATALOG(pg_am,2601)
  */
 typedef FormData_pg_am *Form_pg_am;
 
-/* ----------------
- *		compiler constants for pg_am
- * ----------------
- */
-#define Natts_pg_am						3
-#define Anum_pg_am_amname				1
-#define Anum_pg_am_amhandler			2
-#define Anum_pg_am_amtype				3
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		compiler constant for amtype
@@ -56,11 +50,6 @@ typedef FormData_pg_am *Form_pg_am;
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
-#define BTREE_AM_OID 403
-#define HASH_AM_OID 405
-#define GIST_AM_OID 783
-#define GIN_AM_OID 2742
-#define SPGIST_AM_OID 4000
-#define BRIN_AM_OID 3580
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AM_H */
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index e978c32..68ee321 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -44,6 +44,7 @@
 #define PG_AMOP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amop_d.h"
 
 /* ----------------
  *		pg_amop definition.  cpp turns this into
@@ -64,10 +65,6 @@ CATALOG(pg_amop,2602)
 	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
 } FormData_pg_amop;
 
-/* allowed values of amoppurpose: */
-#define AMOP_SEARCH		's'		/* operator is for search */
-#define AMOP_ORDER		'o'		/* operator is for ordering */
-
 /* ----------------
  *		Form_pg_amop corresponds to a pointer to a tuple with
  *		the format of pg_amop relation.
@@ -75,18 +72,12 @@ CATALOG(pg_amop,2602)
  */
 typedef FormData_pg_amop *Form_pg_amop;
 
-/* ----------------
- *		compiler constants for pg_amop
- * ----------------
- */
-#define Natts_pg_amop					8
-#define Anum_pg_amop_amopfamily			1
-#define Anum_pg_amop_amoplefttype		2
-#define Anum_pg_amop_amoprighttype		3
-#define Anum_pg_amop_amopstrategy		4
-#define Anum_pg_amop_amoppurpose		5
-#define Anum_pg_amop_amopopr			6
-#define Anum_pg_amop_amopmethod			7
-#define Anum_pg_amop_amopsortfamily		8
+#ifdef EXPOSE_TO_CLIENT_CODE
+
+/* allowed values of amoppurpose: */
+#define AMOP_SEARCH		's'		/* operator is for search */
+#define AMOP_ORDER		'o'		/* operator is for ordering */
+
+#endif /* EXPOSE_TO_CLIENT_CODE */
 
 #endif							/* PG_AMOP_H */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 83ce03b..66e1cdc 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -33,6 +33,7 @@
 #define PG_AMPROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_amproc_d.h"
 
 /* ----------------
  *		pg_amproc definition.  cpp turns this into
@@ -57,15 +58,4 @@ CATALOG(pg_amproc,2603)
  */
 typedef FormData_pg_amproc *Form_pg_amproc;
 
-/* ----------------
- *		compiler constants for pg_amproc
- * ----------------
- */
-#define Natts_pg_amproc					5
-#define Anum_pg_amproc_amprocfamily		1
-#define Anum_pg_amproc_amproclefttype	2
-#define Anum_pg_amproc_amprocrighttype	3
-#define Anum_pg_amproc_amprocnum		4
-#define Anum_pg_amproc_amproc			5
-
 #endif							/* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 3aab48d..068ab64 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -19,6 +19,7 @@
 #define PG_ATTRDEF_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attrdef_d.h"
 
 /* ----------------
  *		pg_attrdef definition.  cpp turns this into
@@ -45,14 +46,4 @@ CATALOG(pg_attrdef,2604)
  */
 typedef FormData_pg_attrdef *Form_pg_attrdef;
 
-/* ----------------
- *		compiler constants for pg_attrdef
- * ----------------
- */
-#define Natts_pg_attrdef				4
-#define Anum_pg_attrdef_adrelid			1
-#define Anum_pg_attrdef_adnum			2
-#define Anum_pg_attrdef_adbin			3
-#define Anum_pg_attrdef_adsrc			4
-
 #endif							/* PG_ATTRDEF_H */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 3c78871..db3e860 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -23,6 +23,7 @@
 #define PG_ATTRIBUTE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_attribute_d.h"
 
 /* ----------------
  *		pg_attribute definition.  cpp turns this into
@@ -189,36 +190,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK
  */
 typedef FormData_pg_attribute *Form_pg_attribute;
 
-/* ----------------
- *		compiler constants for pg_attribute
- * ----------------
- */
-
-#define Natts_pg_attribute				22
-#define Anum_pg_attribute_attrelid		1
-#define Anum_pg_attribute_attname		2
-#define Anum_pg_attribute_atttypid		3
-#define Anum_pg_attribute_attstattarget 4
-#define Anum_pg_attribute_attlen		5
-#define Anum_pg_attribute_attnum		6
-#define Anum_pg_attribute_attndims		7
-#define Anum_pg_attribute_attcacheoff	8
-#define Anum_pg_attribute_atttypmod		9
-#define Anum_pg_attribute_attbyval		10
-#define Anum_pg_attribute_attstorage	11
-#define Anum_pg_attribute_attalign		12
-#define Anum_pg_attribute_attnotnull	13
-#define Anum_pg_attribute_atthasdef		14
-#define Anum_pg_attribute_attidentity	15
-#define Anum_pg_attribute_attisdropped	16
-#define Anum_pg_attribute_attislocal	17
-#define Anum_pg_attribute_attinhcount	18
-#define Anum_pg_attribute_attcollation	19
-#define Anum_pg_attribute_attacl		20
-#define Anum_pg_attribute_attoptions	21
-#define Anum_pg_attribute_attfdwoptions 22
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  ATTRIBUTE_IDENTITY_ALWAYS		'a'
 #define		  ATTRIBUTE_IDENTITY_BY_DEFAULT 'd'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_ATTRIBUTE_H */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index a702dff..b8ac653 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -20,6 +20,7 @@
 #define PG_AUTH_MEMBERS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_auth_members_d.h"
 
 /* ----------------
  *		pg_auth_members definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O
  */
 typedef FormData_pg_auth_members *Form_pg_auth_members;
 
-/* ----------------
- *		compiler constants for pg_auth_members
- * ----------------
- */
-#define Natts_pg_auth_members				4
-#define Anum_pg_auth_members_roleid			1
-#define Anum_pg_auth_members_member			2
-#define Anum_pg_auth_members_grantor		3
-#define Anum_pg_auth_members_admin_option	4
-
 #endif							/* PG_AUTH_MEMBERS_H */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index b101e30..036bc67 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -21,6 +21,7 @@
 #define PG_AUTHID_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_authid_d.h"
 
 /*
  * The CATALOG definition has to refer to the type of rolvaliduntil as
@@ -62,7 +63,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
 
 #undef timestamptz
 
-
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
  *		the format of pg_authid relation.
@@ -70,28 +70,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC
  */
 typedef FormData_pg_authid *Form_pg_authid;
 
-/* ----------------
- *		compiler constants for pg_authid
- * ----------------
- */
-#define Natts_pg_authid					11
-#define Anum_pg_authid_rolname			1
-#define Anum_pg_authid_rolsuper			2
-#define Anum_pg_authid_rolinherit		3
-#define Anum_pg_authid_rolcreaterole	4
-#define Anum_pg_authid_rolcreatedb		5
-#define Anum_pg_authid_rolcanlogin		6
-#define Anum_pg_authid_rolreplication	7
-#define Anum_pg_authid_rolbypassrls		8
-#define Anum_pg_authid_rolconnlimit		9
-#define Anum_pg_authid_rolpassword		10
-#define Anum_pg_authid_rolvaliduntil	11
-
-#define BOOTSTRAP_SUPERUSERID			10
-#define DEFAULT_ROLE_MONITOR		3373
-#define DEFAULT_ROLE_READ_ALL_SETTINGS	3374
-#define DEFAULT_ROLE_READ_ALL_STATS 3375
-#define DEFAULT_ROLE_STAT_SCAN_TABLES	3377
-#define DEFAULT_ROLE_SIGNAL_BACKENDID	4200
-
 #endif							/* PG_AUTHID_H */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 1930d4b..6d98213 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -21,6 +21,7 @@
 #define PG_CAST_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_cast_d.h"
 
 /* ----------------
  *		pg_cast definition.  cpp turns this into
@@ -38,6 +39,11 @@ CATALOG(pg_cast,2605)
 	char		castmethod;		/* cast method */
 } FormData_pg_cast;
 
+/* ----------------
+ *		Form_pg_cast corresponds to a pointer to a tuple with
+ *		the format of pg_cast relation.
+ * ----------------
+ */
 typedef FormData_pg_cast *Form_pg_cast;
 
 /*
@@ -68,16 +74,4 @@ typedef enum CoercionMethod
 	COERCION_METHOD_INOUT = 'i' /* use input/output functions */
 } CoercionMethod;
 
-
-/* ----------------
- *		compiler constants for pg_cast
- * ----------------
- */
-#define Natts_pg_cast				5
-#define Anum_pg_cast_castsource		1
-#define Anum_pg_cast_casttarget		2
-#define Anum_pg_cast_castfunc		3
-#define Anum_pg_cast_castcontext	4
-#define Anum_pg_cast_castmethod		5
-
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 7bc09bb..d9f5aff 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -19,6 +19,7 @@
 #define PG_CLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_class_d.h"
 
 /* ----------------
  *		pg_class definition.  cpp turns this into
@@ -93,46 +94,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_class *Form_pg_class;
 
-/* ----------------
- *		compiler constants for pg_class
- * ----------------
- */
-
-#define Natts_pg_class						33
-#define Anum_pg_class_relname				1
-#define Anum_pg_class_relnamespace			2
-#define Anum_pg_class_reltype				3
-#define Anum_pg_class_reloftype				4
-#define Anum_pg_class_relowner				5
-#define Anum_pg_class_relam					6
-#define Anum_pg_class_relfilenode			7
-#define Anum_pg_class_reltablespace			8
-#define Anum_pg_class_relpages				9
-#define Anum_pg_class_reltuples				10
-#define Anum_pg_class_relallvisible			11
-#define Anum_pg_class_reltoastrelid			12
-#define Anum_pg_class_relhasindex			13
-#define Anum_pg_class_relisshared			14
-#define Anum_pg_class_relpersistence		15
-#define Anum_pg_class_relkind				16
-#define Anum_pg_class_relnatts				17
-#define Anum_pg_class_relchecks				18
-#define Anum_pg_class_relhasoids			19
-#define Anum_pg_class_relhaspkey			20
-#define Anum_pg_class_relhasrules			21
-#define Anum_pg_class_relhastriggers		22
-#define Anum_pg_class_relhassubclass		23
-#define Anum_pg_class_relrowsecurity		24
-#define Anum_pg_class_relforcerowsecurity	25
-#define Anum_pg_class_relispopulated		26
-#define Anum_pg_class_relreplident			27
-#define Anum_pg_class_relispartition		28
-#define Anum_pg_class_relfrozenxid			29
-#define Anum_pg_class_relminmxid			30
-#define Anum_pg_class_relacl				31
-#define Anum_pg_class_reloptions			32
-#define Anum_pg_class_relpartbound			33
-
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define		  RELKIND_RELATION		  'r'	/* ordinary table */
 #define		  RELKIND_INDEX			  'i'	/* secondary index */
@@ -162,4 +124,6 @@ typedef FormData_pg_class *Form_pg_class;
  */
 #define		  REPLICA_IDENTITY_INDEX	'i'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CLASS_H */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 50cbe1e..0c6d47f 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -20,6 +20,7 @@
 #define PG_COLLATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_collation_d.h"
 
 /* ----------------
  *		pg_collation definition.  cpp turns this into
@@ -50,26 +51,12 @@ CATALOG(pg_collation,3456)
  */
 typedef FormData_pg_collation *Form_pg_collation;
 
-/* ----------------
- *		compiler constants for pg_collation
- * ----------------
- */
-#define Natts_pg_collation				8
-#define Anum_pg_collation_collname		1
-#define Anum_pg_collation_collnamespace 2
-#define Anum_pg_collation_collowner		3
-#define Anum_pg_collation_collprovider	4
-#define Anum_pg_collation_collencoding	5
-#define Anum_pg_collation_collcollate	6
-#define Anum_pg_collation_collctype		7
-#define Anum_pg_collation_collversion	8
-
-#define DEFAULT_COLLATION_OID	100
-#define C_COLLATION_OID			950
-#define POSIX_COLLATION_OID		951
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 #define COLLPROVIDER_DEFAULT	'd'
 #define COLLPROVIDER_ICU		'i'
 #define COLLPROVIDER_LIBC		'c'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_COLLATION_H */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 41d97d4..758325e 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -19,6 +19,7 @@
 #define PG_CONSTRAINT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_constraint_d.h"
 
 /* ----------------
  *		pg_constraint definition.  cpp turns this into
@@ -145,35 +146,7 @@ CATALOG(pg_constraint,2606)
  */
 typedef FormData_pg_constraint *Form_pg_constraint;
 
-/* ----------------
- *		compiler constants for pg_constraint
- * ----------------
- */
-#define Natts_pg_constraint					24
-#define Anum_pg_constraint_conname			1
-#define Anum_pg_constraint_connamespace		2
-#define Anum_pg_constraint_contype			3
-#define Anum_pg_constraint_condeferrable	4
-#define Anum_pg_constraint_condeferred		5
-#define Anum_pg_constraint_convalidated		6
-#define Anum_pg_constraint_conrelid			7
-#define Anum_pg_constraint_contypid			8
-#define Anum_pg_constraint_conindid			9
-#define Anum_pg_constraint_confrelid		10
-#define Anum_pg_constraint_confupdtype		11
-#define Anum_pg_constraint_confdeltype		12
-#define Anum_pg_constraint_confmatchtype	13
-#define Anum_pg_constraint_conislocal		14
-#define Anum_pg_constraint_coninhcount		15
-#define Anum_pg_constraint_connoinherit		16
-#define Anum_pg_constraint_conkey			17
-#define Anum_pg_constraint_confkey			18
-#define Anum_pg_constraint_conpfeqop		19
-#define Anum_pg_constraint_conppeqop		20
-#define Anum_pg_constraint_conffeqop		21
-#define Anum_pg_constraint_conexclop		22
-#define Anum_pg_constraint_conbin			23
-#define Anum_pg_constraint_consrc			24
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* Valid values for contype */
 #define CONSTRAINT_CHECK			'c'
@@ -189,4 +162,6 @@ typedef FormData_pg_constraint *Form_pg_constraint;
  * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
  */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CONSTRAINT_H */
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 88098fa..eacc09a 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -19,6 +19,7 @@
 #define PG_CONVERSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_conversion_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_conversion definition.
@@ -54,18 +55,4 @@ CATALOG(pg_conversion,2607)
  */
 typedef FormData_pg_conversion *Form_pg_conversion;
 
-/* ----------------
- *		compiler constants for pg_conversion
- * ----------------
- */
-
-#define Natts_pg_conversion				7
-#define Anum_pg_conversion_conname		1
-#define Anum_pg_conversion_connamespace 2
-#define Anum_pg_conversion_conowner		3
-#define Anum_pg_conversion_conforencoding		4
-#define Anum_pg_conversion_contoencoding		5
-#define Anum_pg_conversion_conproc		6
-#define Anum_pg_conversion_condefault	7
-
 #endif							/* PG_CONVERSION_H */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index b7972fa..9435f24 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -19,6 +19,7 @@
 #define PG_DATABASE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_database_d.h"
 
 /* ----------------
  *		pg_database definition.  cpp turns this into
@@ -55,25 +56,4 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M
  */
 typedef FormData_pg_database *Form_pg_database;
 
-/* ----------------
- *		compiler constants for pg_database
- * ----------------
- */
-#define Natts_pg_database				13
-#define Anum_pg_database_datname		1
-#define Anum_pg_database_datdba			2
-#define Anum_pg_database_encoding		3
-#define Anum_pg_database_datcollate		4
-#define Anum_pg_database_datctype		5
-#define Anum_pg_database_datistemplate	6
-#define Anum_pg_database_datallowconn	7
-#define Anum_pg_database_datconnlimit	8
-#define Anum_pg_database_datlastsysoid	9
-#define Anum_pg_database_datfrozenxid	10
-#define Anum_pg_database_datminmxid		11
-#define Anum_pg_database_dattablespace	12
-#define Anum_pg_database_datacl			13
-
-#define TemplateDbOid			1
-
 #endif							/* PG_DATABASE_H */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 09546bd..013e6a2 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -18,6 +18,7 @@
 #ifndef PG_DB_ROLE_SETTING_H
 #define PG_DB_ROLE_SETTING_H
 
+#include "catalog/pg_db_role_setting_d.h"
 #include "utils/guc.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
@@ -41,15 +42,6 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
 
-/* ----------------
- *		compiler constants for pg_db_role_setting
- * ----------------
- */
-#define Natts_pg_db_role_setting				3
-#define Anum_pg_db_role_setting_setdatabase		1
-#define Anum_pg_db_role_setting_setrole			2
-#define Anum_pg_db_role_setting_setconfig		3
-
 /*
  * prototypes for functions in pg_db_role_setting.h
  */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 7778276..868ac0c 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -19,6 +19,7 @@
 #define PG_DEFAULT_ACL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_default_acl_d.h"
 
 /* ----------------
  *		pg_default_acl definition.  cpp turns this into
@@ -45,16 +46,7 @@ CATALOG(pg_default_acl,826)
  */
 typedef FormData_pg_default_acl *Form_pg_default_acl;
 
-/* ----------------
- *		compiler constants for pg_default_acl
- * ----------------
- */
-
-#define Natts_pg_default_acl					4
-#define Anum_pg_default_acl_defaclrole			1
-#define Anum_pg_default_acl_defaclnamespace		2
-#define Anum_pg_default_acl_defaclobjtype		3
-#define Anum_pg_default_acl_defaclacl			4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Types of objects for which the user is allowed to specify default
@@ -67,4 +59,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl;
 #define DEFACLOBJ_TYPE			'T' /* type */
 #define DEFACLOBJ_NAMESPACE		'n' /* namespace */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_DEFAULT_ACL_H */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 7c60e63..030f655 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -31,6 +31,7 @@
 #define PG_DEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_depend_d.h"
 
 /* ----------------
  *		pg_depend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_depend *Form_pg_depend;
 
-/* ----------------
- *		compiler constants for pg_depend
- * ----------------
- */
-#define Natts_pg_depend				7
-#define Anum_pg_depend_classid		1
-#define Anum_pg_depend_objid		2
-#define Anum_pg_depend_objsubid		3
-#define Anum_pg_depend_refclassid	4
-#define Anum_pg_depend_refobjid		5
-#define Anum_pg_depend_refobjsubid	6
-#define Anum_pg_depend_deptype		7
-
-
 #endif							/* PG_DEPEND_H */
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 71eed4e..d3c8644 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -38,6 +38,7 @@
 #define PG_DESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_description_d.h"
 
 /* ----------------
  *		pg_description definition.  cpp turns this into
@@ -64,14 +65,4 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_description * Form_pg_description;
 
-/* ----------------
- *		compiler constants for pg_description
- * ----------------
- */
-#define Natts_pg_description			4
-#define Anum_pg_description_objoid		1
-#define Anum_pg_description_classoid	2
-#define Anum_pg_description_objsubid	3
-#define Anum_pg_description_description 4
-
 #endif							/* PG_DESCRIPTION_H */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 3327688..edea5e3 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -18,6 +18,7 @@
 #define PG_ENUM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_enum_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -41,15 +42,6 @@ CATALOG(pg_enum,3501)
  */
 typedef FormData_pg_enum *Form_pg_enum;
 
-/* ----------------
- *		compiler constants for pg_enum
- * ----------------
- */
-#define Natts_pg_enum					3
-#define Anum_pg_enum_enumtypid			1
-#define Anum_pg_enum_enumsortorder		2
-#define Anum_pg_enum_enumlabel			3
-
 /*
  * prototypes for functions in pg_enum.c
  */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index 20e7e38..3ca0a88 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -19,6 +19,7 @@
 #define PG_EVENT_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_event_trigger_d.h"
 
 /* ----------------
  *		pg_event_trigger definition.    cpp turns this into
@@ -48,16 +49,4 @@ CATALOG(pg_event_trigger,3466)
  */
 typedef FormData_pg_event_trigger *Form_pg_event_trigger;
 
-/* ----------------
- *		compiler constants for pg_event_trigger
- * ----------------
- */
-#define Natts_pg_event_trigger					6
-#define Anum_pg_event_trigger_evtname			1
-#define Anum_pg_event_trigger_evtevent			2
-#define Anum_pg_event_trigger_evtowner			3
-#define Anum_pg_event_trigger_evtfoid			4
-#define Anum_pg_event_trigger_evtenabled		5
-#define Anum_pg_event_trigger_evttags			6
-
 #endif							/* PG_EVENT_TRIGGER_H */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index c2d528f..a60bd44 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -19,6 +19,7 @@
 #define PG_EXTENSION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_extension_d.h"
 
 /* ----------------
  *		pg_extension definition.  cpp turns this into
@@ -49,18 +50,4 @@ CATALOG(pg_extension,3079)
  */
 typedef FormData_pg_extension *Form_pg_extension;
 
-/* ----------------
- *		compiler constants for pg_extension
- * ----------------
- */
-
-#define Natts_pg_extension					7
-#define Anum_pg_extension_extname			1
-#define Anum_pg_extension_extowner			2
-#define Anum_pg_extension_extnamespace		3
-#define Anum_pg_extension_extrelocatable	4
-#define Anum_pg_extension_extversion		5
-#define Anum_pg_extension_extconfig			6
-#define Anum_pg_extension_extcondition		7
-
 #endif							/* PG_EXTENSION_H */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index 6cf321d..ae9b0be 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -19,6 +19,7 @@
 #define PG_FOREIGN_DATA_WRAPPER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_data_wrapper_d.h"
 
 /* ----------------
  *		pg_foreign_data_wrapper definition.  cpp turns this into
@@ -47,17 +48,4 @@ CATALOG(pg_foreign_data_wrapper,2328)
  */
 typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper;
 
-/* ----------------
- *		compiler constants for pg_fdw
- * ----------------
- */
-
-#define Natts_pg_foreign_data_wrapper				6
-#define Anum_pg_foreign_data_wrapper_fdwname		1
-#define Anum_pg_foreign_data_wrapper_fdwowner		2
-#define Anum_pg_foreign_data_wrapper_fdwhandler		3
-#define Anum_pg_foreign_data_wrapper_fdwvalidator	4
-#define Anum_pg_foreign_data_wrapper_fdwacl			5
-#define Anum_pg_foreign_data_wrapper_fdwoptions		6
-
 #endif							/* PG_FOREIGN_DATA_WRAPPER_H */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index f909b26..34fc827 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_SERVER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_server_d.h"
 
 /* ----------------
  *		pg_foreign_server definition.  cpp turns this into
@@ -47,18 +48,4 @@ CATALOG(pg_foreign_server,1417)
  */
 typedef FormData_pg_foreign_server *Form_pg_foreign_server;
 
-/* ----------------
- *		compiler constants for pg_foreign_server
- * ----------------
- */
-
-#define Natts_pg_foreign_server					7
-#define Anum_pg_foreign_server_srvname			1
-#define Anum_pg_foreign_server_srvowner			2
-#define Anum_pg_foreign_server_srvfdw			3
-#define Anum_pg_foreign_server_srvtype			4
-#define Anum_pg_foreign_server_srvversion		5
-#define Anum_pg_foreign_server_srvacl			6
-#define Anum_pg_foreign_server_srvoptions		7
-
 #endif							/* PG_FOREIGN_SERVER_H */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 9bee001..1a1fefc 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -18,6 +18,7 @@
 #define PG_FOREIGN_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_foreign_table_d.h"
 
 /* ----------------
  *		pg_foreign_table definition.  cpp turns this into
@@ -43,14 +44,4 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_foreign_table *Form_pg_foreign_table;
 
-/* ----------------
- *		compiler constants for pg_foreign_table
- * ----------------
- */
-
-#define Natts_pg_foreign_table					3
-#define Anum_pg_foreign_table_ftrelid			1
-#define Anum_pg_foreign_table_ftserver			2
-#define Anum_pg_foreign_table_ftoptions			3
-
 #endif							/* PG_FOREIGN_TABLE_H */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index ef0dea6..f8371f0 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -19,6 +19,7 @@
 #define PG_INDEX_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_index_d.h"
 
 /* ----------------
  *		pg_index definition.  cpp turns this into
@@ -65,31 +66,6 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_index *Form_pg_index;
 
-/* ----------------
- *		compiler constants for pg_index
- * ----------------
- */
-#define Natts_pg_index					19
-#define Anum_pg_index_indexrelid		1
-#define Anum_pg_index_indrelid			2
-#define Anum_pg_index_indnatts			3
-#define Anum_pg_index_indisunique		4
-#define Anum_pg_index_indisprimary		5
-#define Anum_pg_index_indisexclusion	6
-#define Anum_pg_index_indimmediate		7
-#define Anum_pg_index_indisclustered	8
-#define Anum_pg_index_indisvalid		9
-#define Anum_pg_index_indcheckxmin		10
-#define Anum_pg_index_indisready		11
-#define Anum_pg_index_indislive			12
-#define Anum_pg_index_indisreplident	13
-#define Anum_pg_index_indkey			14
-#define Anum_pg_index_indcollation		15
-#define Anum_pg_index_indclass			16
-#define Anum_pg_index_indoption			17
-#define Anum_pg_index_indexprs			18
-#define Anum_pg_index_indpred			19
-
 /*
  * Index AMs that support ordered scans must support these two indoption
  * bits.  Otherwise, the content of the per-column indoption fields is
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3af1647..478a587 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -19,6 +19,7 @@
 #define PG_INHERITS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_inherits_d.h"
 
 /* ----------------
  *		pg_inherits definition.  cpp turns this into
@@ -41,13 +42,4 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_inherits *Form_pg_inherits;
 
-/* ----------------
- *		compiler constants for pg_inherits
- * ----------------
- */
-#define Natts_pg_inherits				3
-#define Anum_pg_inherits_inhrelid		1
-#define Anum_pg_inherits_inhparent		2
-#define Anum_pg_inherits_inhseqno		3
-
 #endif							/* PG_INHERITS_H */
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 51adc7a..7dcb70c 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -36,6 +36,7 @@
 #define PG_INIT_PRIVS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_init_privs_d.h"
 
 /* ----------------
  *		pg_init_privs definition.  cpp turns this into
@@ -63,17 +64,6 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_init_privs * Form_pg_init_privs;
 
-/* ----------------
- *		compiler constants for pg_init_privs
- * ----------------
- */
-#define Natts_pg_init_privs				5
-#define Anum_pg_init_privs_objoid		1
-#define Anum_pg_init_privs_classoid		2
-#define Anum_pg_init_privs_objsubid		3
-#define Anum_pg_init_privs_privtype		4
-#define Anum_pg_init_privs_initprivs	5
-
 /*
  * It is important to know if the initial privileges are from initdb or from an
  * extension.  This enum is used to provide that differentiation and the two
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index 5f82158..d2d878c 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -19,6 +19,7 @@
 #define PG_LANGUAGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_language_d.h"
 
 /* ----------------
  *		pg_language definition.  cpp turns this into
@@ -49,22 +50,4 @@ CATALOG(pg_language,2612)
  */
 typedef FormData_pg_language *Form_pg_language;
 
-/* ----------------
- *		compiler constants for pg_language
- * ----------------
- */
-#define Natts_pg_language				8
-#define Anum_pg_language_lanname		1
-#define Anum_pg_language_lanowner		2
-#define Anum_pg_language_lanispl		3
-#define Anum_pg_language_lanpltrusted	4
-#define Anum_pg_language_lanplcallfoid	5
-#define Anum_pg_language_laninline		6
-#define Anum_pg_language_lanvalidator	7
-#define Anum_pg_language_lanacl			8
-
-#define INTERNALlanguageId 12
-#define ClanguageId 13
-#define SQLlanguageId 14
-
 #endif							/* PG_LANGUAGE_H */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 1857ca4..2157bab 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -17,6 +17,7 @@
 #define PG_LARGEOBJECT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_d.h"
 
 /* ----------------
  *		pg_largeobject definition.  cpp turns this into
@@ -42,15 +43,6 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_largeobject *Form_pg_largeobject;
 
-/* ----------------
- *		compiler constants for pg_largeobject
- * ----------------
- */
-#define Natts_pg_largeobject			3
-#define Anum_pg_largeobject_loid		1
-#define Anum_pg_largeobject_pageno		2
-#define Anum_pg_largeobject_data		3
-
 extern Oid	LargeObjectCreate(Oid loid);
 extern void LargeObjectDrop(Oid loid);
 extern bool LargeObjectExists(Oid loid);
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 0cf7bcd..3d5e0cd 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -19,6 +19,7 @@
 #define PG_LARGEOBJECT_METADATA_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_largeobject_metadata_d.h"
 
 /* ----------------
  *		pg_largeobject_metadata definition. cpp turns this into
@@ -43,12 +44,4 @@ CATALOG(pg_largeobject_metadata,2995)
  */
 typedef FormData_pg_largeobject_metadata *Form_pg_largeobject_metadata;
 
-/* ----------------
- *		compiler constants for pg_largeobject_metadata
- * ----------------
- */
-#define Natts_pg_largeobject_metadata			2
-#define Anum_pg_largeobject_metadata_lomowner	1
-#define Anum_pg_largeobject_metadata_lomacl		2
-
 #endif							/* PG_LARGEOBJECT_METADATA_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 19b559f9..5f80e86 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -19,6 +19,7 @@
 #define PG_NAMESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_namespace_d.h"
 
 /* ----------------------------------------------------------------
  *		pg_namespace definition.
@@ -49,20 +50,6 @@ CATALOG(pg_namespace,2615)
  */
 typedef FormData_pg_namespace *Form_pg_namespace;
 
-/* ----------------
- *		compiler constants for pg_namespace
- * ----------------
- */
-
-#define Natts_pg_namespace				3
-#define Anum_pg_namespace_nspname		1
-#define Anum_pg_namespace_nspowner		2
-#define Anum_pg_namespace_nspacl		3
-
-#define PG_CATALOG_NAMESPACE 11
-#define PG_TOAST_NAMESPACE 99
-#define PG_PUBLIC_NAMESPACE 2200
-
 /*
  * prototypes for functions in pg_namespace.c
  */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index b10ceb9..1f64710 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -39,6 +39,7 @@
 #define PG_OPCLASS_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opclass_d.h"
 
 /* ----------------
  *		pg_opclass definition.  cpp turns this into
@@ -66,29 +67,4 @@ CATALOG(pg_opclass,2616)
  */
 typedef FormData_pg_opclass *Form_pg_opclass;
 
-/* ----------------
- *		compiler constants for pg_opclass
- * ----------------
- */
-#define Natts_pg_opclass				8
-#define Anum_pg_opclass_opcmethod		1
-#define Anum_pg_opclass_opcname			2
-#define Anum_pg_opclass_opcnamespace	3
-#define Anum_pg_opclass_opcowner		4
-#define Anum_pg_opclass_opcfamily		5
-#define Anum_pg_opclass_opcintype		6
-#define Anum_pg_opclass_opcdefault		7
-#define Anum_pg_opclass_opckeytype		8
-
-#define DATE_BTREE_OPS_OID 3122
-#define FLOAT8_BTREE_OPS_OID 3123
-#define INT2_BTREE_OPS_OID 1979
-#define INT4_BTREE_OPS_OID 1978
-#define INT8_BTREE_OPS_OID 3124
-#define NUMERIC_BTREE_OPS_OID 3125
-#define OID_BTREE_OPS_OID 1981
-#define TEXT_BTREE_OPS_OID 3126
-#define TIMESTAMPTZ_BTREE_OPS_OID 3127
-#define TIMESTAMP_BTREE_OPS_OID 3128
-
 #endif							/* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index cbe6884..a0b20f2 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -19,6 +19,7 @@
 #define PG_OPERATOR_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_operator_d.h"
 
 /* ----------------
  *		pg_operator definition.  cpp turns this into
@@ -52,75 +53,4 @@ CATALOG(pg_operator,2617)
  */
 typedef FormData_pg_operator *Form_pg_operator;
 
-/* ----------------
- *		compiler constants for pg_operator
- * ----------------
- */
-
-#define Natts_pg_operator				14
-#define Anum_pg_operator_oprname		1
-#define Anum_pg_operator_oprnamespace	2
-#define Anum_pg_operator_oprowner		3
-#define Anum_pg_operator_oprkind		4
-#define Anum_pg_operator_oprcanmerge	5
-#define Anum_pg_operator_oprcanhash		6
-#define Anum_pg_operator_oprleft		7
-#define Anum_pg_operator_oprright		8
-#define Anum_pg_operator_oprresult		9
-#define Anum_pg_operator_oprcom			10
-#define Anum_pg_operator_oprnegate		11
-#define Anum_pg_operator_oprcode		12
-#define Anum_pg_operator_oprrest		13
-#define Anum_pg_operator_oprjoin		14
-
-#define BooleanNotEqualOperator   85
-#define BooleanEqualOperator   91
-#define Int4EqualOperator	96
-#define Int4LessOperator	97
-#define TextEqualOperator	98
-#define TIDEqualOperator   387
-#define TIDLessOperator    2799
-#define Int8LessOperator	412
-#define OID_NAME_REGEXEQ_OP		639
-#define OID_TEXT_REGEXEQ_OP		641
-#define Float8LessOperator	672
-#define OID_BPCHAR_REGEXEQ_OP		1055
-#define ARRAY_EQ_OP 1070
-#define ARRAY_LT_OP 1072
-#define ARRAY_GT_OP 1073
-#define OID_NAME_LIKE_OP		1207
-#define OID_TEXT_LIKE_OP		1209
-#define OID_BPCHAR_LIKE_OP		1211
-#define OID_NAME_ICREGEXEQ_OP		1226
-#define OID_TEXT_ICREGEXEQ_OP		1228
-#define OID_BPCHAR_ICREGEXEQ_OP		1234
-#define OID_INET_SUB_OP			931
-#define OID_INET_SUBEQ_OP		932
-#define OID_INET_SUP_OP			933
-#define OID_INET_SUPEQ_OP		934
-#define OID_INET_OVERLAP_OP		3552
-#define OID_NAME_ICLIKE_OP		1625
-#define OID_TEXT_ICLIKE_OP		1627
-#define OID_BPCHAR_ICLIKE_OP	1629
-#define OID_BYTEA_LIKE_OP		2016
-#define OID_ARRAY_OVERLAP_OP	2750
-#define OID_ARRAY_CONTAINS_OP	2751
-#define OID_ARRAY_CONTAINED_OP	2752
-#define RECORD_EQ_OP 2988
-#define RECORD_LT_OP 2990
-#define RECORD_GT_OP 2991
-#define OID_RANGE_LESS_OP 3884
-#define OID_RANGE_LESS_EQUAL_OP 3885
-#define OID_RANGE_GREATER_EQUAL_OP 3886
-#define OID_RANGE_GREATER_OP 3887
-#define OID_RANGE_OVERLAP_OP 3888
-#define OID_RANGE_CONTAINS_ELEM_OP 3889
-#define OID_RANGE_CONTAINS_OP 3890
-#define OID_RANGE_ELEM_CONTAINED_OP 3891
-#define OID_RANGE_CONTAINED_OP 3892
-#define OID_RANGE_LEFT_OP 3893
-#define OID_RANGE_RIGHT_OP 3894
-#define OID_RANGE_OVERLAPS_LEFT_OP 3895
-#define OID_RANGE_OVERLAPS_RIGHT_OP 3896
-
 #endif							/* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index e9d8d3d..6ec28ae 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -19,6 +19,7 @@
 #define PG_OPFAMILY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_opfamily_d.h"
 
 /* ----------------
  *		pg_opfamily definition. cpp turns this into
@@ -42,27 +43,4 @@ CATALOG(pg_opfamily,2753)
  */
 typedef FormData_pg_opfamily *Form_pg_opfamily;
 
-/* ----------------
- *		compiler constants for pg_opfamily
- * ----------------
- */
-#define Natts_pg_opfamily				4
-#define Anum_pg_opfamily_opfmethod		1
-#define Anum_pg_opfamily_opfname		2
-#define Anum_pg_opfamily_opfnamespace	3
-#define Anum_pg_opfamily_opfowner		4
-
-#define BOOL_BTREE_FAM_OID 424
-#define BPCHAR_BTREE_FAM_OID 426
-#define BYTEA_BTREE_FAM_OID 428
-#define NETWORK_BTREE_FAM_OID 1974
-#define INTEGER_BTREE_FAM_OID 1976
-#define NAME_BTREE_FAM_OID 1986
-#define OID_BTREE_FAM_OID 1989
-#define TEXT_BTREE_FAM_OID 1994
-#define TEXT_PATTERN_BTREE_FAM_OID 2095
-#define BPCHAR_PATTERN_BTREE_FAM_OID 2097
-#define BOOL_HASH_FAM_OID 2222
-#define TEXT_SPGIST_FAM_OID 4017
-
 #endif							/* PG_OPFAMILY_H */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index a8bda00..39ee67e 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -18,6 +18,7 @@
 #define PG_PARTITIONED_TABLE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_partitioned_table_d.h"
 
 /* ----------------
  *		pg_partitioned_table definition.  cpp turns this into
@@ -59,18 +60,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
 
-/* ----------------
- *		compiler constants for pg_partitioned_table
- * ----------------
- */
-#define Natts_pg_partitioned_table				8
-#define Anum_pg_partitioned_table_partrelid		1
-#define Anum_pg_partitioned_table_partstrat		2
-#define Anum_pg_partitioned_table_partnatts		3
-#define Anum_pg_partitioned_table_partdefid		4
-#define Anum_pg_partitioned_table_partattrs		5
-#define Anum_pg_partitioned_table_partclass		6
-#define Anum_pg_partitioned_table_partcollation 7
-#define Anum_pg_partitioned_table_partexprs		8
-
 #endif							/* PG_PARTITIONED_TABLE_H */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index b1d9ece..116a4a0 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -19,6 +19,7 @@
 #define PG_PLTEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_pltemplate_d.h"
 
 /* ----------------
  *		pg_pltemplate definition.  cpp turns this into
@@ -50,18 +51,4 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_pltemplate *Form_pg_pltemplate;
 
-/* ----------------
- *		compiler constants for pg_pltemplate
- * ----------------
- */
-#define Natts_pg_pltemplate					8
-#define Anum_pg_pltemplate_tmplname			1
-#define Anum_pg_pltemplate_tmpltrusted		2
-#define Anum_pg_pltemplate_tmpldbacreate	3
-#define Anum_pg_pltemplate_tmplhandler		4
-#define Anum_pg_pltemplate_tmplinline		5
-#define Anum_pg_pltemplate_tmplvalidator	6
-#define Anum_pg_pltemplate_tmpllibrary		7
-#define Anum_pg_pltemplate_tmplacl			8
-
 #endif							/* PG_PLTEMPLATE_H */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 0d94f1a..543077c 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -1,15 +1,19 @@
-/*
+/*-------------------------------------------------------------------------
+ *
  * pg_policy.h
  *	 definition of the system "policy" relation (pg_policy)
  *
+ *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
+ *-------------------------------------------------------------------------
  */
 #ifndef PG_POLICY_H
 #define PG_POLICY_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_policy_d.h"
 
 /* ----------------
  *		pg_policy definition. cpp turns this into
@@ -39,17 +43,4 @@ CATALOG(pg_policy,3256)
  */
 typedef FormData_pg_policy *Form_pg_policy;
 
-/* ----------------
- *		compiler constants for pg_policy
- * ----------------
- */
-#define Natts_pg_policy					7
-#define Anum_pg_policy_polname			1
-#define Anum_pg_policy_polrelid			2
-#define Anum_pg_policy_polcmd			3
-#define Anum_pg_policy_polpermissive	4
-#define Anum_pg_policy_polroles			5
-#define Anum_pg_policy_polqual			6
-#define Anum_pg_policy_polwithcheck		7
-
 #endif							/* PG_POLICY_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index f05eb32..29ca0ee 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -18,6 +18,7 @@
 #define PG_PROC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_proc_d.h"
 
 /* ----------------
  *		pg_proc definition.  cpp turns this into
@@ -75,39 +76,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_proc *Form_pg_proc;
 
-/* ----------------
- *		compiler constants for pg_proc
- * ----------------
- */
-#define Natts_pg_proc					28
-#define Anum_pg_proc_proname			1
-#define Anum_pg_proc_pronamespace		2
-#define Anum_pg_proc_proowner			3
-#define Anum_pg_proc_prolang			4
-#define Anum_pg_proc_procost			5
-#define Anum_pg_proc_prorows			6
-#define Anum_pg_proc_provariadic		7
-#define Anum_pg_proc_protransform		8
-#define Anum_pg_proc_prokind			9
-#define Anum_pg_proc_prosecdef			10
-#define Anum_pg_proc_proleakproof		11
-#define Anum_pg_proc_proisstrict		12
-#define Anum_pg_proc_proretset			13
-#define Anum_pg_proc_provolatile		14
-#define Anum_pg_proc_proparallel		15
-#define Anum_pg_proc_pronargs			16
-#define Anum_pg_proc_pronargdefaults	17
-#define Anum_pg_proc_prorettype			18
-#define Anum_pg_proc_proargtypes		19
-#define Anum_pg_proc_proallargtypes		20
-#define Anum_pg_proc_proargmodes		21
-#define Anum_pg_proc_proargnames		22
-#define Anum_pg_proc_proargdefaults		23
-#define Anum_pg_proc_protrftypes		24
-#define Anum_pg_proc_prosrc				25
-#define Anum_pg_proc_probin				26
-#define Anum_pg_proc_proconfig			27
-#define Anum_pg_proc_proacl				28
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * Symbolic values for prokind column
@@ -149,4 +118,6 @@ typedef FormData_pg_proc *Form_pg_proc;
 #define PROARGMODE_VARIADIC 'v'
 #define PROARGMODE_TABLE	't'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_PROC_H */
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 62772b6..92cdcf1 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -18,12 +18,12 @@
 #define PG_PUBLICATION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_d.h"
 #include "catalog/objectaddress.h"
 
 /* ----------------
  *		pg_publication definition.  cpp turns this into
  *		typedef struct FormData_pg_publication
- *
  * ----------------
  */
 #define PublicationRelationId			6104
@@ -58,19 +58,6 @@ CATALOG(pg_publication,6104)
  */
 typedef FormData_pg_publication *Form_pg_publication;
 
-/* ----------------
- *		compiler constants for pg_publication
- * ----------------
- */
-
-#define Natts_pg_publication				6
-#define Anum_pg_publication_pubname			1
-#define Anum_pg_publication_pubowner		2
-#define Anum_pg_publication_puballtables	3
-#define Anum_pg_publication_pubinsert		4
-#define Anum_pg_publication_pubupdate		5
-#define Anum_pg_publication_pubdelete		6
-
 typedef struct PublicationActions
 {
 	bool		pubinsert;
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 661466f..864d6ca 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -18,11 +18,11 @@
 #define PG_PUBLICATION_REL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_publication_rel_d.h"
 
 /* ----------------
  *		pg_publication_rel definition.  cpp turns this into
  *		typedef struct FormData_pg_publication_rel
- *
  * ----------------
  */
 #define PublicationRelRelationId				6106
@@ -40,13 +40,4 @@ CATALOG(pg_publication_rel,6106)
  */
 typedef FormData_pg_publication_rel *Form_pg_publication_rel;
 
-/* ----------------
- *		compiler constants for pg_publication_rel
- * ----------------
- */
-
-#define Natts_pg_publication_rel				2
-#define Anum_pg_publication_rel_prpubid			1
-#define Anum_pg_publication_rel_prrelid			2
-
 #endif							/* PG_PUBLICATION_REL_H */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index b7113bf..4c806fd 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -19,6 +19,7 @@
 #define PG_RANGE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_range_d.h"
 
 /* ----------------
  *		pg_range definition.  cpp turns this into
@@ -44,18 +45,6 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_range *Form_pg_range;
 
-/* ----------------
- *		compiler constants for pg_range
- * ----------------
- */
-#define Natts_pg_range					6
-#define Anum_pg_range_rngtypid			1
-#define Anum_pg_range_rngsubtype		2
-#define Anum_pg_range_rngcollation		3
-#define Anum_pg_range_rngsubopc			4
-#define Anum_pg_range_rngcanonical		5
-#define Anum_pg_range_rngsubdiff		6
-
 /*
  * prototypes for functions in pg_range.c
  */
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 0c5a05e..02856dd 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -18,6 +18,7 @@
 #define PG_REPLICATION_ORIGIN_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_replication_origin_d.h"
 #include "access/xlogdefs.h"
 
 /* ----------------
@@ -54,12 +55,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 
 typedef FormData_pg_replication_origin *Form_pg_replication_origin;
 
-/* ----------------
- *		compiler constants for pg_replication_origin
- * ----------------
- */
-#define Natts_pg_replication_origin					2
-#define Anum_pg_replication_origin_roident			1
-#define Anum_pg_replication_origin_roname			2
-
 #endif							/* PG_REPLICATION_ORIGIN_H */
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index a310ecb..d656990 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -22,6 +22,7 @@
 #define PG_REWRITE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_rewrite_d.h"
 
 /* ----------------
  *		pg_rewrite definition.  cpp turns this into
@@ -51,17 +52,4 @@ CATALOG(pg_rewrite,2618)
  */
 typedef FormData_pg_rewrite *Form_pg_rewrite;
 
-/* ----------------
- *		compiler constants for pg_rewrite
- * ----------------
- */
-#define Natts_pg_rewrite				7
-#define Anum_pg_rewrite_rulename		1
-#define Anum_pg_rewrite_ev_class		2
-#define Anum_pg_rewrite_ev_type			3
-#define Anum_pg_rewrite_ev_enabled		4
-#define Anum_pg_rewrite_is_instead		5
-#define Anum_pg_rewrite_ev_qual			6
-#define Anum_pg_rewrite_ev_action		7
-
 #endif							/* PG_REWRITE_H */
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 70dc01e..d6d2f97 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -12,6 +12,7 @@
 #define PG_SECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_seclabel_d.h"
 
 /* ----------------
  *		pg_seclabel definition.  cpp turns this into
@@ -32,15 +33,4 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
 #endif
 } FormData_pg_seclabel;
 
-/* ----------------
- *		compiler constants for pg_seclabel
- * ----------------
- */
-#define Natts_pg_seclabel			5
-#define Anum_pg_seclabel_objoid		1
-#define Anum_pg_seclabel_classoid	2
-#define Anum_pg_seclabel_objsubid	3
-#define Anum_pg_seclabel_provider	4
-#define Anum_pg_seclabel_label		5
-
 #endif							/* PG_SECLABEL_H */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index a78417e..de6ed1a 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -12,6 +12,7 @@
 #define PG_SEQUENCE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_sequence_d.h"
 
 #define SequenceRelationId	2224
 
@@ -27,16 +28,11 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
 	bool		seqcycle;
 } FormData_pg_sequence;
 
+/* ----------------
+ *		Form_pg_sequence corresponds to a pointer to a tuple with
+ *		the format of pg_sequence relation.
+ * ----------------
+ */
 typedef FormData_pg_sequence *Form_pg_sequence;
 
-#define Natts_pg_sequence				8
-#define Anum_pg_sequence_seqrelid		1
-#define Anum_pg_sequence_seqtypid		2
-#define Anum_pg_sequence_seqstart		3
-#define Anum_pg_sequence_seqincrement	4
-#define Anum_pg_sequence_seqmax			5
-#define Anum_pg_sequence_seqmin			6
-#define Anum_pg_sequence_seqcache		7
-#define Anum_pg_sequence_seqcycle		8
-
 #endif							/* PG_SEQUENCE_H */
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 17ac34a..708980b 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -28,6 +28,7 @@
 #define PG_SHDEPEND_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdepend_d.h"
 
 /* ----------------
  *		pg_shdepend definition.  cpp turns this into
@@ -71,18 +72,4 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdepend *Form_pg_shdepend;
 
-/* ----------------
- *		compiler constants for pg_shdepend
- * ----------------
- */
-#define Natts_pg_shdepend			7
-#define Anum_pg_shdepend_dbid		1
-#define Anum_pg_shdepend_classid	2
-#define Anum_pg_shdepend_objid		3
-#define Anum_pg_shdepend_objsubid	4
-#define Anum_pg_shdepend_refclassid 5
-#define Anum_pg_shdepend_refobjid	6
-#define Anum_pg_shdepend_deptype	7
-
-
 #endif							/* PG_SHDEPEND_H */
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index c0ecc0c..1777144 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -31,6 +31,7 @@
 #define PG_SHDESCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shdescription_d.h"
 
 /* ----------------
  *		pg_shdescription definition.    cpp turns this into
@@ -56,13 +57,4 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_shdescription * Form_pg_shdescription;
 
-/* ----------------
- *		compiler constants for pg_shdescription
- * ----------------
- */
-#define Natts_pg_shdescription			3
-#define Anum_pg_shdescription_objoid		1
-#define Anum_pg_shdescription_classoid	2
-#define Anum_pg_shdescription_description 3
-
 #endif							/* PG_SHDESCRIPTION_H */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 57b854c..9fceeee 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  *
  * pg_shseclabel.h
- *	  definition of the system "security label" relation (pg_shseclabel)
+ *	  definition of the system "shared security label" relation (pg_shseclabel)
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -12,6 +12,7 @@
 #define PG_SHSECLABEL_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_shseclabel_d.h"
 
 /* ----------------
  *		pg_shseclabel definition. cpp turns this into
@@ -34,14 +35,4 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU
 
 typedef FormData_pg_shseclabel * Form_pg_shseclabel;
 
-/* ----------------
- *		compiler constants for pg_shseclabel
- * ----------------
- */
-#define Natts_pg_shseclabel				4
-#define Anum_pg_shseclabel_objoid		1
-#define Anum_pg_shseclabel_classoid		2
-#define Anum_pg_shseclabel_provider		3
-#define Anum_pg_shseclabel_label		4
-
 #endif							/* PG_SHSECLABEL_H */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 8ef2e55..81984d4 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_d.h"
 
 /* ----------------
  *		pg_statistic definition.  cpp turns this into
@@ -127,38 +128,6 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_statistic *Form_pg_statistic;
 
-/* ----------------
- *		compiler constants for pg_statistic
- * ----------------
- */
-#define Natts_pg_statistic				26
-#define Anum_pg_statistic_starelid		1
-#define Anum_pg_statistic_staattnum		2
-#define Anum_pg_statistic_stainherit	3
-#define Anum_pg_statistic_stanullfrac	4
-#define Anum_pg_statistic_stawidth		5
-#define Anum_pg_statistic_stadistinct	6
-#define Anum_pg_statistic_stakind1		7
-#define Anum_pg_statistic_stakind2		8
-#define Anum_pg_statistic_stakind3		9
-#define Anum_pg_statistic_stakind4		10
-#define Anum_pg_statistic_stakind5		11
-#define Anum_pg_statistic_staop1		12
-#define Anum_pg_statistic_staop2		13
-#define Anum_pg_statistic_staop3		14
-#define Anum_pg_statistic_staop4		15
-#define Anum_pg_statistic_staop5		16
-#define Anum_pg_statistic_stanumbers1	17
-#define Anum_pg_statistic_stanumbers2	18
-#define Anum_pg_statistic_stanumbers3	19
-#define Anum_pg_statistic_stanumbers4	20
-#define Anum_pg_statistic_stanumbers5	21
-#define Anum_pg_statistic_stavalues1	22
-#define Anum_pg_statistic_stavalues2	23
-#define Anum_pg_statistic_stavalues3	24
-#define Anum_pg_statistic_stavalues4	25
-#define Anum_pg_statistic_stavalues5	26
-
 /*
  * Several statistical slot "kinds" are defined by core PostgreSQL, as
  * documented below.  Also, custom data types can define their own "kind"
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index d656cd8..be84037 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -19,6 +19,7 @@
 #define PG_STATISTIC_EXT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_statistic_ext_d.h"
 
 /* ----------------
  *		pg_statistic_ext definition.  cpp turns this into
@@ -59,20 +60,6 @@ CATALOG(pg_statistic_ext,3381)
  */
 typedef FormData_pg_statistic_ext *Form_pg_statistic_ext;
 
-/* ----------------
- *		compiler constants for pg_statistic_ext
- * ----------------
- */
-#define Natts_pg_statistic_ext					8
-#define Anum_pg_statistic_ext_stxrelid			1
-#define Anum_pg_statistic_ext_stxname			2
-#define Anum_pg_statistic_ext_stxnamespace		3
-#define Anum_pg_statistic_ext_stxowner			4
-#define Anum_pg_statistic_ext_stxkeys			5
-#define Anum_pg_statistic_ext_stxkind			6
-#define Anum_pg_statistic_ext_stxndistinct		7
-#define Anum_pg_statistic_ext_stxdependencies	8
-
 #define STATS_EXT_NDISTINCT			'd'
 #define STATS_EXT_DEPENDENCIES		'f'
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 46d0b48..1b2981f 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -12,6 +12,7 @@
 #define PG_SUBSCRIPTION_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -57,21 +58,6 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE
 
 typedef FormData_pg_subscription *Form_pg_subscription;
 
-/* ----------------
- *		compiler constants for pg_subscription
- * ----------------
- */
-#define Natts_pg_subscription					8
-#define Anum_pg_subscription_subdbid			1
-#define Anum_pg_subscription_subname			2
-#define Anum_pg_subscription_subowner			3
-#define Anum_pg_subscription_subenabled			4
-#define Anum_pg_subscription_subconninfo		5
-#define Anum_pg_subscription_subslotname		6
-#define Anum_pg_subscription_subsynccommit		7
-#define Anum_pg_subscription_subpublications	8
-
-
 typedef struct Subscription
 {
 	Oid			oid;			/* Oid of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index d936973..64aa121 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -14,6 +14,7 @@
 
 #include "access/xlogdefs.h"
 #include "catalog/genbki.h"
+#include "catalog/pg_subscription_rel_d.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
@@ -34,15 +35,7 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 
-/* ----------------
- *		compiler constants for pg_subscription_rel
- * ----------------
- */
-#define Natts_pg_subscription_rel				4
-#define Anum_pg_subscription_rel_srsubid		1
-#define Anum_pg_subscription_rel_srrelid		2
-#define Anum_pg_subscription_rel_srsubstate		3
-#define Anum_pg_subscription_rel_srsublsn		4
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /* ----------------
  *		substate constants
@@ -60,6 +53,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
 #define SUBREL_STATE_SYNCWAIT	'w' /* waiting for sync */
 #define SUBREL_STATE_CATCHUP	'c' /* catching up with apply */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 typedef struct SubscriptionRelState
 {
 	Oid			relid;
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 75a3a2e..bd9c118 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -19,6 +19,7 @@
 #define PG_TABLESPACE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_tablespace_d.h"
 
 /* ----------------
  *		pg_tablespace definition.  cpp turns this into
@@ -45,18 +46,4 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
  */
 typedef FormData_pg_tablespace *Form_pg_tablespace;
 
-/* ----------------
- *		compiler constants for pg_tablespace
- * ----------------
- */
-
-#define Natts_pg_tablespace				4
-#define Anum_pg_tablespace_spcname		1
-#define Anum_pg_tablespace_spcowner		2
-#define Anum_pg_tablespace_spcacl		3
-#define Anum_pg_tablespace_spcoptions	4
-
-#define DEFAULTTABLESPACE_OID 1663
-#define GLOBALTABLESPACE_OID 1664
-
 #endif							/* PG_TABLESPACE_H */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 21109db..c571fb5 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -1,8 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * pg_transform.h
+ *	  definition of the system "transform" relation (pg_transform)
  *
- * Copyright (c) 2012-2018, PostgreSQL Global Development Group
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/catalog/pg_transform.h
  *
@@ -16,6 +19,7 @@
 #define PG_TRANSFORM_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_transform_d.h"
 
 /* ----------------
  *		pg_transform definition.  cpp turns this into
@@ -32,16 +36,11 @@ CATALOG(pg_transform,3576)
 	regproc		trftosql;
 } FormData_pg_transform;
 
-typedef FormData_pg_transform *Form_pg_transform;
-
 /* ----------------
- *		compiler constants for pg_transform
+ *		Form_pg_transform corresponds to a pointer to a tuple with
+ *		the format of pg_transform relation.
  * ----------------
  */
-#define Natts_pg_transform			4
-#define Anum_pg_transform_trftype	1
-#define Anum_pg_transform_trflang	2
-#define Anum_pg_transform_trffromsql	3
-#define Anum_pg_transform_trftosql	4
+typedef FormData_pg_transform *Form_pg_transform;
 
 #endif							/* PG_TRANSFORM_H */
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index e307039..2a5d05e 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -19,6 +19,7 @@
 #define PG_TRIGGER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_trigger_d.h"
 
 /* ----------------
  *		pg_trigger definition.  cpp turns this into
@@ -70,29 +71,6 @@ CATALOG(pg_trigger,2620)
  */
 typedef FormData_pg_trigger *Form_pg_trigger;
 
-/* ----------------
- *		compiler constants for pg_trigger
- * ----------------
- */
-#define Natts_pg_trigger				17
-#define Anum_pg_trigger_tgrelid			1
-#define Anum_pg_trigger_tgname			2
-#define Anum_pg_trigger_tgfoid			3
-#define Anum_pg_trigger_tgtype			4
-#define Anum_pg_trigger_tgenabled		5
-#define Anum_pg_trigger_tgisinternal	6
-#define Anum_pg_trigger_tgconstrrelid	7
-#define Anum_pg_trigger_tgconstrindid	8
-#define Anum_pg_trigger_tgconstraint	9
-#define Anum_pg_trigger_tgdeferrable	10
-#define Anum_pg_trigger_tginitdeferred	11
-#define Anum_pg_trigger_tgnargs			12
-#define Anum_pg_trigger_tgattr			13
-#define Anum_pg_trigger_tgargs			14
-#define Anum_pg_trigger_tgqual			15
-#define Anum_pg_trigger_tgoldtable		16
-#define Anum_pg_trigger_tgnewtable		17
-
 /* Bits within tgtype */
 #define TRIGGER_TYPE_ROW				(1 << 0)
 #define TRIGGER_TYPE_BEFORE				(1 << 1)
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 21e6c2c..d0b7aa9 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_d.h"
 
 /* ----------------
  *		pg_ts_config definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config,3602)
 
 typedef FormData_pg_ts_config *Form_pg_ts_config;
 
-/* ----------------
- *		compiler constants for pg_ts_config
- * ----------------
- */
-#define Natts_pg_ts_config				4
-#define Anum_pg_ts_config_cfgname		1
-#define Anum_pg_ts_config_cfgnamespace	2
-#define Anum_pg_ts_config_cfgowner		3
-#define Anum_pg_ts_config_cfgparser		4
-
 #endif							/* PG_TS_CONFIG_H */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 3b5e791..cdee4b4 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -19,6 +19,7 @@
 #define PG_TS_CONFIG_MAP_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_config_map_d.h"
 
 /* ----------------
  *		pg_ts_config_map definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
 
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
 
-/* ----------------
- *		compiler constants for pg_ts_config_map
- * ----------------
- */
-#define Natts_pg_ts_config_map				4
-#define Anum_pg_ts_config_map_mapcfg		1
-#define Anum_pg_ts_config_map_maptokentype	2
-#define Anum_pg_ts_config_map_mapseqno		3
-#define Anum_pg_ts_config_map_mapdict		4
-
 #endif							/* PG_TS_CONFIG_MAP_H */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 74c80f0..58af179 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -19,6 +19,7 @@
 #define PG_TS_DICT_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_dict_d.h"
 
 /* ----------------
  *		pg_ts_dict definition.  cpp turns this into
@@ -41,15 +42,4 @@ CATALOG(pg_ts_dict,3600)
 
 typedef FormData_pg_ts_dict *Form_pg_ts_dict;
 
-/* ----------------
- *		compiler constants for pg_ts_dict
- * ----------------
- */
-#define Natts_pg_ts_dict				5
-#define Anum_pg_ts_dict_dictname		1
-#define Anum_pg_ts_dict_dictnamespace	2
-#define Anum_pg_ts_dict_dictowner		3
-#define Anum_pg_ts_dict_dicttemplate	4
-#define Anum_pg_ts_dict_dictinitoption	5
-
 #endif							/* PG_TS_DICT_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 5b5edd0..3baaef0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -19,6 +19,7 @@
 #define PG_TS_PARSER_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_parser_d.h"
 
 /* ----------------
  *		pg_ts_parser definition.  cpp turns this into
@@ -40,17 +41,4 @@ CATALOG(pg_ts_parser,3601)
 
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
 
-/* ----------------
- *		compiler constants for pg_ts_parser
- * ----------------
- */
-#define Natts_pg_ts_parser					7
-#define Anum_pg_ts_parser_prsname			1
-#define Anum_pg_ts_parser_prsnamespace		2
-#define Anum_pg_ts_parser_prsstart			3
-#define Anum_pg_ts_parser_prstoken			4
-#define Anum_pg_ts_parser_prsend			5
-#define Anum_pg_ts_parser_prsheadline		6
-#define Anum_pg_ts_parser_prslextype		7
-
 #endif							/* PG_TS_PARSER_H */
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index b641788..7ea6e15 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -19,6 +19,7 @@
 #define PG_TS_TEMPLATE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_ts_template_d.h"
 
 /* ----------------
  *		pg_ts_template definition.  cpp turns this into
@@ -37,14 +38,4 @@ CATALOG(pg_ts_template,3764)
 
 typedef FormData_pg_ts_template *Form_pg_ts_template;
 
-/* ----------------
- *		compiler constants for pg_ts_template
- * ----------------
- */
-#define Natts_pg_ts_template				4
-#define Anum_pg_ts_template_tmplname		1
-#define Anum_pg_ts_template_tmplnamespace	2
-#define Anum_pg_ts_template_tmplinit		3
-#define Anum_pg_ts_template_tmpllexize		4
-
 #endif							/* PG_TS_TEMPLATE_H */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 6aa9185..f7ddb0c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -19,6 +19,7 @@
 #define PG_TYPE_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_type_d.h"
 
 /* ----------------
  *		pg_type definition.  cpp turns this into
@@ -231,135 +232,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_type *Form_pg_type;
 
-/* ----------------
- *		compiler constants for pg_type
- * ----------------
- */
-#define Natts_pg_type					30
-#define Anum_pg_type_typname			1
-#define Anum_pg_type_typnamespace		2
-#define Anum_pg_type_typowner			3
-#define Anum_pg_type_typlen				4
-#define Anum_pg_type_typbyval			5
-#define Anum_pg_type_typtype			6
-#define Anum_pg_type_typcategory		7
-#define Anum_pg_type_typispreferred		8
-#define Anum_pg_type_typisdefined		9
-#define Anum_pg_type_typdelim			10
-#define Anum_pg_type_typrelid			11
-#define Anum_pg_type_typelem			12
-#define Anum_pg_type_typarray			13
-#define Anum_pg_type_typinput			14
-#define Anum_pg_type_typoutput			15
-#define Anum_pg_type_typreceive			16
-#define Anum_pg_type_typsend			17
-#define Anum_pg_type_typmodin			18
-#define Anum_pg_type_typmodout			19
-#define Anum_pg_type_typanalyze			20
-#define Anum_pg_type_typalign			21
-#define Anum_pg_type_typstorage			22
-#define Anum_pg_type_typnotnull			23
-#define Anum_pg_type_typbasetype		24
-#define Anum_pg_type_typtypmod			25
-#define Anum_pg_type_typndims			26
-#define Anum_pg_type_typcollation		27
-#define Anum_pg_type_typdefaultbin		28
-#define Anum_pg_type_typdefault			29
-#define Anum_pg_type_typacl				30
-
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define JSONOID 114
-#define XMLOID 142
-#define PGNODETREEOID	194
-#define PGNDISTINCTOID	3361
-#define PGDEPENDENCIESOID	3402
-#define PGDDLCOMMANDOID 32
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define MACADDROID 829
-#define INETOID 869
-#define CIDROID 650
-#define MACADDR8OID 774
-#define INT2ARRAYOID		1005
-#define INT4ARRAYOID		1007
-#define TEXTARRAYOID		1009
-#define OIDARRAYOID			1028
-#define FLOAT4ARRAYOID 1021
-#define ACLITEMOID		1033
-#define CSTRINGARRAYOID		1263
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
-#define RECORDOID		2249
-#define RECORDARRAYOID	2287
-#define CSTRINGOID		2275
-#define ANYOID			2276
-#define ANYARRAYOID		2277
-#define VOIDOID			2278
-#define TRIGGEROID		2279
-#define EVTTRIGGEROID		3838
-#define LANGUAGE_HANDLEROID		2280
-#define INTERNALOID		2281
-#define OPAQUEOID		2282
-#define ANYELEMENTOID	2283
-#define ANYNONARRAYOID	2776
-#define ANYENUMOID		3500
-#define FDW_HANDLEROID	3115
-#define INDEX_AM_HANDLEROID 325
-#define TSM_HANDLEROID	3310
-#define ANYRANGEOID		3831
+#ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
  * macros
@@ -396,4 +269,6 @@ typedef FormData_pg_type *Form_pg_type;
 	 (typid) == ANYENUMOID || \
 	 (typid) == ANYRANGEOID)
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_TYPE_H */
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 3da6496..ec62ee2 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -18,6 +18,7 @@
 #define PG_USER_MAPPING_H
 
 #include "catalog/genbki.h"
+#include "catalog/pg_user_mapping_d.h"
 
 /* ----------------
  *		pg_user_mapping definition.  cpp turns this into
@@ -44,14 +45,4 @@ CATALOG(pg_user_mapping,1418)
  */
 typedef FormData_pg_user_mapping *Form_pg_user_mapping;
 
-/* ----------------
- *		compiler constants for pg_user_mapping
- * ----------------
- */
-
-#define Natts_pg_user_mapping				3
-#define Anum_pg_user_mapping_umuser			1
-#define Anum_pg_user_mapping_umserver		2
-#define Anum_pg_user_mapping_umoptions		3
-
 #endif							/* PG_USER_MAPPING_H */
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index f75c887..79a6cf8 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -1,9 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_type.h
- *	  Hard-wired knowledge about some standard type OIDs.
- *
- * XXX keep this in sync with src/include/catalog/pg_type.h
+ *	  Interface to generated type OID symbols.
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -15,65 +13,6 @@
 #ifndef PG_TYPE_H
 #define PG_TYPE_H
 
-#define BOOLOID			16
-#define BYTEAOID		17
-#define CHAROID			18
-#define NAMEOID			19
-#define INT8OID			20
-#define INT2OID			21
-#define INT2VECTOROID	22
-#define INT4OID			23
-#define REGPROCOID		24
-#define TEXTOID			25
-#define OIDOID			26
-#define TIDOID		27
-#define XIDOID 28
-#define CIDOID 29
-#define OIDVECTOROID	30
-#define POINTOID		600
-#define LSEGOID			601
-#define PATHOID			602
-#define BOXOID			603
-#define POLYGONOID		604
-#define LINEOID			628
-#define FLOAT4OID 700
-#define FLOAT8OID 701
-#define ABSTIMEOID		702
-#define RELTIMEOID		703
-#define TINTERVALOID	704
-#define UNKNOWNOID		705
-#define CIRCLEOID		718
-#define CASHOID 790
-#define INETOID 869
-#define CIDROID 650
-#define BPCHAROID		1042
-#define VARCHAROID		1043
-#define DATEOID			1082
-#define TIMEOID			1083
-#define TIMESTAMPOID	1114
-#define TIMESTAMPTZOID	1184
-#define INTERVALOID		1186
-#define TIMETZOID		1266
-#define BITOID	 1560
-#define VARBITOID	  1562
-#define NUMERICOID		1700
-#define REFCURSOROID	1790
-#define REGPROCEDUREOID 2202
-#define REGOPEROID		2203
-#define REGOPERATOROID	2204
-#define REGCLASSOID		2205
-#define REGTYPEOID		2206
-#define REGROLEOID		4096
-#define REGNAMESPACEOID		4089
-#define REGTYPEARRAYOID 2211
-#define UUIDOID 2950
-#define LSNOID			3220
-#define TSVECTOROID		3614
-#define GTSVECTOROID	3642
-#define TSQUERYOID		3615
-#define REGCONFIGOID	3734
-#define REGDICTIONARYOID	3769
-#define JSONBOID 3802
-#define INT4RANGEOID		3904
+#include "catalog/pg_type_d.h"
 
 #endif							/* PG_TYPE_H */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 9263f5a..e2389b5 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -456,9 +456,11 @@ EOF
 
 	my $mf = Project::read_file('src/backend/catalog/Makefile');
 	$mf =~ s{\\\r?\n}{}g;
-	$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
-	  || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
+	$mf =~ /^CATALOG_HEADERS\s*:?=(.*)$/gm
+	  || croak "Could not find CATALOG_HEADERS in Makefile\n";
 	my @bki_srcs = split /\s+/, $1;
+	push @bki_srcs, 'toasting.h';
+	push @bki_srcs, 'indexing.h';
 	$mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm
 	  || croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
 	my @bki_data = split /\s+/, $1;
@@ -469,13 +471,23 @@ EOF
 				'src/backend/catalog/postgres.bki',
 				"src/include/catalog/$bki"))
 		{
-			print "Generating postgres.bki and schemapg.h...\n";
+			print "Generating postgres.bki and catalog headers...\n";
 			chdir('src/backend/catalog');
 			my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
-			system(
-"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
-			);
+			system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
 			chdir('../../..');
+
+			# Copy generated headers to include directory.
+			opendir(my $dh, 'src/backend/catalog/')
+			  || die "Can't opendir src/backend/catalog/ $!";
+			my @def_headers = grep { /pg_\w+_d\.h$/  } readdir($dh);
+			closedir $dh;
+			foreach my $def_header (@def_headers)
+			{
+				copyFile(
+				"src/backend/catalog/$def_header",
+				"src/include/catalog/$def_header");
+			}
 			copyFile(
 				'src/backend/catalog/schemapg.h',
 				'src/include/catalog/schemapg.h');
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 0a88b52..b052496 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -48,6 +48,7 @@ if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h
 if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
 if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h
+if exist src\include\catalog\pg_*_d.h del /q src\include\catalog\pg_*_d.h
 if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
 
 if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h
@@ -67,6 +68,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalo
 if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
 if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
 if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
+if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
 if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
 if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index a32aaa6..79243a1 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -198,8 +198,8 @@ sub pre_indent
 s!(^#ifdef[ \t]+__cplusplus.*\nextern[ \t]+"C"[ \t]*\n)\{[ \t]*$!$1$extern_c_start!gm;
 	$source =~ s!(^#ifdef[ \t]+__cplusplus.*\n)\}[ \t]*$!$1$extern_c_stop!gm;
 
-	# Protect backslashes in DATA() and wrapping in CATALOG()
-	$source =~ s!^((DATA|CATALOG)\(.*)$!/*$1*/!gm;
+	# Protect wrapping in CATALOG()
+	$source =~ s!^(CATALOG\(.*)$!/*$1*/!gm;
 
 	return $source;
 }
@@ -210,8 +210,8 @@ sub post_indent
 	my $source          = shift;
 	my $source_filename = shift;
 
-	# Restore DATA/CATALOG lines
-	$source =~ s!^/\*((DATA|CATALOG)\(.*)\*/$!$1!gm;
+	# Restore CATALOG lines
+	$source =~ s!^/\*(CATALOG\(.*)\*/$!$1!gm;
 
 	# Put back braces for extern "C"
 	$source =~ s!^/\* Open extern "C" \*/$!{!gm;
-- 
2.7.4

v10-0006-Use-default-values-on-more-catalogs.patchtext/x-patch; charset=US-ASCII; name=v10-0006-Use-default-values-on-more-catalogs.patchDownload
From eaa7e5635d1880131a3daa75d7b7ac3bb50d54e8 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 11 Mar 2018 17:50:20 +0700
Subject: [PATCH] Use default values on more catalogs

When the default values mechanism was introduced in commit 49c784ece, it
could only be used for pg_attribute. Add default values to some other
catalogs. More could be done here, but this is enough for a first pass.
---
 src/backend/catalog/Catalog.pm     | 11 ++++-
 src/backend/catalog/README         | 14 ++++++
 src/include/catalog/pg_aggregate.h | 38 ++++++++---------
 src/include/catalog/pg_amop.h      | 31 ++++++++++----
 src/include/catalog/pg_opclass.h   | 17 ++++++--
 src/include/catalog/pg_operator.h  | 43 +++++++++++++------
 src/include/catalog/pg_opfamily.h  |  8 +++-
 src/include/catalog/pg_proc.h      | 87 +++++++++++++++++++++++++-------------
 src/include/catalog/pg_type.h      | 47 +++++++++++---------
 src/include/catalog/rewrite_dat.pl | 34 +++++++++++++++
 10 files changed, 233 insertions(+), 97 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 1ec79c9..0a88c08 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -203,8 +203,9 @@ sub ParseData
 	my ($input_file, $schema, $preserve_formatting) = @_;
 
 	open(my $ifd, '<', $input_file) || die "$input_file: $!";
-	$input_file =~ /\w+\.dat$/
+	$input_file =~ /(\w+)\.dat$/
 	  or die "Input file needs to be a .dat file.\n";
+	my $catname = $1;
 	my $data = [];
 	my $prev_blank = 0;
 
@@ -247,6 +248,14 @@ sub ParseData
 				{
 					die "Error parsing $_\n$!";
 				}
+
+				# Expand tuples to their full representation.
+				my $error = AddDefaultValues($datum, $schema);
+				if ($error)
+				{
+					print "Failed to form full tuple for $catname\n";
+					die $error;
+				}
 			}
 			else
 			{
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 84e6e07..aa0785e 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -59,6 +59,20 @@ quotes, since we don't know what kind of characters will be substituted.
 line within the curly brackets.  This is done automatically during rewriting
 so their placement is not crucial during development.
 
+- If the .h file specifies a default value for a column, and a data entry
+has that same value, rewrite_dat.pl will omit it from the data file. This
+keeps the data representation compact.
+
+- If you want to add a new default value, you must change the relevant .h
+file to use the new default, and then run
+"perl -I ../../backend/catalog rewrite_dat.pl pg_foo.dat".
+If you want to change an existing default value, you must first run
+rewrite_dat.pl with the "--expand" argument before proceeding as above.
+
+-If you want to add a new method of making the data representation
+smaller, you must implement it in rewrite_dat.pl and also teach
+Catalog::ParseData() how to expand the data back into the full representation.
+
 - Some catalogs require that OIDs be preallocated to tuples because
 of cross-references from other pre-loaded tuples.  For example, pg_type
 contains pointers into pg_proc (e.g., pg_type.typinput), and pg_proc
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 97d8f22..74f2b27 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -55,29 +55,29 @@
 CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 {
 	regproc		aggfnoid;
-	char		aggkind;
-	int16		aggnumdirectargs;
+	char		aggkind				BKI_DEFAULT(n);
+	int16		aggnumdirectargs	BKI_DEFAULT(0);
 	regproc		aggtransfn;
-	regproc		aggfinalfn;
-	regproc		aggcombinefn;
-	regproc		aggserialfn;
-	regproc		aggdeserialfn;
-	regproc		aggmtransfn;
-	regproc		aggminvtransfn;
-	regproc		aggmfinalfn;
-	bool		aggfinalextra;
-	bool		aggmfinalextra;
-	char		aggfinalmodify;
-	char		aggmfinalmodify;
-	Oid			aggsortop;
+	regproc		aggfinalfn			BKI_DEFAULT(-);
+	regproc		aggcombinefn		BKI_DEFAULT(-);
+	regproc		aggserialfn			BKI_DEFAULT(-);
+	regproc		aggdeserialfn		BKI_DEFAULT(-);
+	regproc		aggmtransfn			BKI_DEFAULT(-);
+	regproc		aggminvtransfn		BKI_DEFAULT(-);
+	regproc		aggmfinalfn			BKI_DEFAULT(-);
+	bool		aggfinalextra		BKI_DEFAULT(f);
+	bool		aggmfinalextra		BKI_DEFAULT(f);
+	char		aggfinalmodify		BKI_DEFAULT(r);
+	char		aggmfinalmodify		BKI_DEFAULT(r);
+	Oid			aggsortop			BKI_DEFAULT(0);
 	Oid			aggtranstype;
-	int32		aggtransspace;
-	Oid			aggmtranstype;
-	int32		aggmtransspace;
+	int32		aggtransspace		BKI_DEFAULT(0);
+	Oid			aggmtranstype		BKI_DEFAULT(0);
+	int32		aggmtransspace		BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		agginitval;
-	text		aggminitval;
+	text		agginitval			BKI_DEFAULT(_null_);
+	text		aggminitval			BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_aggregate;
 
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 68ee321..e638c30 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -55,14 +55,29 @@
 
 CATALOG(pg_amop,2602)
 {
-	Oid			amopfamily;		/* the index opfamily this entry is for */
-	Oid			amoplefttype;	/* operator's left input data type */
-	Oid			amoprighttype;	/* operator's right input data type */
-	int16		amopstrategy;	/* operator strategy number */
-	char		amoppurpose;	/* is operator for 's'earch or 'o'rdering? */
-	Oid			amopopr;		/* the operator's pg_operator OID */
-	Oid			amopmethod;		/* the index access method this entry is for */
-	Oid			amopsortfamily; /* ordering opfamily OID, or 0 if search op */
+	/* the index opfamily this entry is for */
+	Oid			amopfamily;
+
+	/* operator's left input data type */
+	Oid			amoplefttype;
+
+	/* operator's right input data type */
+	Oid			amoprighttype;
+
+	/* operator strategy number */
+	int16		amopstrategy;
+
+	/* is operator for 's'earch or 'o'rdering? */
+	char		amoppurpose		BKI_DEFAULT(s);
+
+	/* the operator's pg_operator OID */
+	Oid			amopopr;
+
+	/* the index access method this entry is for */
+	Oid			amopmethod;
+
+	/* ordering opfamily OID, or 0 if search op */
+	Oid			amopsortfamily	BKI_DEFAULT(0);
 } FormData_pg_amop;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 1f64710..6d0fed8 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -52,12 +52,21 @@ CATALOG(pg_opclass,2616)
 {
 	Oid			opcmethod;		/* index access method opclass is for */
 	NameData	opcname;		/* name of this opclass */
-	Oid			opcnamespace;	/* namespace of this opclass */
-	Oid			opcowner;		/* opclass owner */
+
+	/* namespace of this opclass */
+	Oid			opcnamespace	BKI_DEFAULT(PGNSP);
+
+	/* opclass owner */
+	Oid			opcowner		BKI_DEFAULT(PGUID);
+
 	Oid			opcfamily;		/* containing operator family */
 	Oid			opcintype;		/* type of data indexed by opclass */
-	bool		opcdefault;		/* T if opclass is default for opcintype */
-	Oid			opckeytype;		/* type of data in index, or InvalidOid */
+
+	/* T if opclass is default for opcintype */
+	bool		opcdefault		BKI_DEFAULT(t);
+
+	/* type of data in index, or InvalidOid */
+	Oid			opckeytype		BKI_DEFAULT(0);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index a0b20f2..e111914 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -24,26 +24,41 @@
 /* ----------------
  *		pg_operator definition.  cpp turns this into
  *		typedef struct FormData_pg_operator
+ *
+ *	oprname			name of operator
+ *	oprnamespace	OID of namespace containing this oper
+ *	oprowner		operator owner
+ *	oprkind			'l', 'r', or 'b'
+ *	oprcanmerge		can be used in merge join?
+ *	oprcanhash		can be used in hash join?
+ *	oprleft			left arg type, or 0 if 'l' oprkind
+ *	oprright		right arg type, or 0 if 'r' oprkind
+ *	oprresult		result datatype
+ *	oprcom			OID of commutator oper, or 0 if none
+ *	oprnegate		OID of negator oper, or 0 if none
+ *	oprcode			OID of underlying function
+ *	oprrest			OID of restriction estimator, or 0
+ *	oprjoin			OID of join estimator, or 0
  * ----------------
  */
 #define OperatorRelationId	2617
 
 CATALOG(pg_operator,2617)
 {
-	NameData	oprname;		/* name of operator */
-	Oid			oprnamespace;	/* OID of namespace containing this oper */
-	Oid			oprowner;		/* operator owner */
-	char		oprkind;		/* 'l', 'r', or 'b' */
-	bool		oprcanmerge;	/* can be used in merge join? */
-	bool		oprcanhash;		/* can be used in hash join? */
-	Oid			oprleft;		/* left arg type, or 0 if 'l' oprkind */
-	Oid			oprright;		/* right arg type, or 0 if 'r' oprkind */
-	Oid			oprresult;		/* result datatype */
-	Oid			oprcom;			/* OID of commutator oper, or 0 if none */
-	Oid			oprnegate;		/* OID of negator oper, or 0 if none */
-	regproc		oprcode;		/* OID of underlying function */
-	regproc		oprrest;		/* OID of restriction estimator, or 0 */
-	regproc		oprjoin;		/* OID of join estimator, or 0 */
+	NameData	oprname;
+	Oid			oprnamespace	BKI_DEFAULT(PGNSP);
+	Oid			oprowner		BKI_DEFAULT(PGUID);
+	char		oprkind			BKI_DEFAULT(b);
+	bool		oprcanmerge		BKI_DEFAULT(f);
+	bool		oprcanhash		BKI_DEFAULT(f);
+	Oid			oprleft;
+	Oid			oprright;
+	Oid			oprresult;
+	Oid			oprcom			BKI_DEFAULT(0);
+	Oid			oprnegate		BKI_DEFAULT(0);
+	regproc		oprcode;
+	regproc		oprrest			BKI_DEFAULT(-);
+	regproc		oprjoin			BKI_DEFAULT(-);
 } FormData_pg_operator;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 6ec28ae..571615d 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -32,8 +32,12 @@ CATALOG(pg_opfamily,2753)
 {
 	Oid			opfmethod;		/* index access method opfamily is for */
 	NameData	opfname;		/* name of this opfamily */
-	Oid			opfnamespace;	/* namespace of this opfamily */
-	Oid			opfowner;		/* opfamily owner */
+
+	/* namespace of this opfamily */
+	Oid			opfnamespace	BKI_DEFAULT(PGNSP);
+
+	/* opfamily owner */
+	Oid			opfowner		BKI_DEFAULT(PGUID);
 } FormData_pg_opfamily;
 
 /* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 29ca0ee..d181d67 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -23,6 +23,36 @@
 /* ----------------
  *		pg_proc definition.  cpp turns this into
  *		typedef struct FormData_pg_proc
+ *
+ *	proname				procedure name
+ *	pronamespace		OID of namespace containing this proc
+ *	proowner			procedure owner
+ *	prolang				OID of pg_language entry
+ *	procost				estimated execution cost
+ *	prorows				estimated # of rows out (if proretset)
+ *	provariadic			element type of variadic array, or 0
+ *	protransform		transforms calls to it during planning
+ *	prokind				see PROKIND_ categories below
+ *	prosecdef			security definer
+ *	proleakproof		is it a leak-proof function?
+ *	proisstrict			strict with respect to NULLs?
+ *	proretset			returns a set?
+ *	provolatile			see PROVOLATILE_ categories below
+ *	proparallel			see PROPARALLEL_ categories below
+ *	pronargs			number of arguments
+ *	pronargdefaults		number of arguments with defaults
+ *	prorettype			OID of result type
+ *	proargtypes			parameter types (excludes OUT params)
+ *	proallargtypes		all param types (NULL if IN only)
+ *	proargmodes			parameter modes (NULL if IN only)
+ *	proargnames			parameter names (NULL if no names)
+ *	proargdefaults		list of expression trees for argument
+ *						defaults (NULL if none)
+ *	protrftypes			types for which to apply transforms
+ *	prosrc				procedure source
+ *	probin				secondary procedure info (can be NULL)
+ *	proconfig			procedure-local GUC settings
+ *	proacl				access permissions
  * ----------------
  */
 #define ProcedureRelationId  1255
@@ -30,42 +60,41 @@
 
 CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 {
-	NameData	proname;		/* procedure name */
-	Oid			pronamespace;	/* OID of namespace containing this proc */
-	Oid			proowner;		/* procedure owner */
-	Oid			prolang;		/* OID of pg_language entry */
-	float4		procost;		/* estimated execution cost */
-	float4		prorows;		/* estimated # of rows out (if proretset) */
-	Oid			provariadic;	/* element type of variadic array, or 0 */
-	regproc		protransform;	/* transforms calls to it during planning */
-	char		prokind;		/* see PROKIND_ categories below */
-	bool		prosecdef;		/* security definer */
-	bool		proleakproof;	/* is it a leak-proof function? */
-	bool		proisstrict;	/* strict with respect to NULLs? */
-	bool		proretset;		/* returns a set? */
-	char		provolatile;	/* see PROVOLATILE_ categories below */
-	char		proparallel;	/* see PROPARALLEL_ categories below */
-	int16		pronargs;		/* number of arguments */
-	int16		pronargdefaults;	/* number of arguments with defaults */
-	Oid			prorettype;		/* OID of result type */
+	NameData	proname;
+	Oid			pronamespace		BKI_DEFAULT(PGNSP);
+	Oid			proowner			BKI_DEFAULT(PGUID);
+	Oid			prolang				BKI_DEFAULT(12);
+	float4		procost				BKI_DEFAULT(1);
+	float4		prorows				BKI_DEFAULT(0);
+	Oid			provariadic			BKI_DEFAULT(0);
+	regproc		protransform		BKI_DEFAULT(0);
+	char		prokind				BKI_DEFAULT(f);
+	bool		prosecdef			BKI_DEFAULT(f);
+	bool		proleakproof		BKI_DEFAULT(f);
+	bool		proisstrict			BKI_DEFAULT(f);
+	bool		proretset			BKI_DEFAULT(f);
+	char		provolatile 		BKI_DEFAULT(v);
+	char		proparallel 		BKI_DEFAULT(u);
+	int16		pronargs;
+	int16		pronargdefaults		BKI_DEFAULT(0);
+	Oid			prorettype;
 
 	/*
 	 * variable-length fields start here, but we allow direct access to
 	 * proargtypes
 	 */
-	oidvector	proargtypes;	/* parameter types (excludes OUT params) */
+	oidvector	proargtypes;
 
 #ifdef CATALOG_VARLEN
-	Oid			proallargtypes[1];	/* all param types (NULL if IN only) */
-	char		proargmodes[1]; /* parameter modes (NULL if IN only) */
-	text		proargnames[1]; /* parameter names (NULL if no names) */
-	pg_node_tree proargdefaults;	/* list of expression trees for argument
-									 * defaults (NULL if none) */
-	Oid			protrftypes[1]; /* types for which to apply transforms */
-	text		prosrc BKI_FORCE_NOT_NULL;	/* procedure source text */
-	text		probin;			/* secondary procedure info (can be NULL) */
-	text		proconfig[1];	/* procedure-local GUC settings */
-	aclitem		proacl[1];		/* access permissions */
+	Oid			proallargtypes[1]	BKI_DEFAULT(_null_);
+	char		proargmodes[1]		BKI_DEFAULT(_null_);
+	text		proargnames[1]		BKI_DEFAULT(_null_);
+	pg_node_tree proargdefaults		BKI_DEFAULT(_null_);
+	Oid			protrftypes[1]		BKI_DEFAULT(_null_);
+	text		prosrc 				BKI_FORCE_NOT_NULL;
+	text		probin				BKI_DEFAULT(_null_);
+	text		proconfig[1]		BKI_DEFAULT(_null_);
+	aclitem		proacl[1]			BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_proc;
 
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index f7ddb0c..b52e677 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -37,8 +37,12 @@
 CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 {
 	NameData	typname;		/* type name */
-	Oid			typnamespace;	/* OID of namespace containing this type */
-	Oid			typowner;		/* type owner */
+
+	/* OID of namespace containing this type */
+	Oid			typnamespace	BKI_DEFAULT(PGNSP);
+
+	/* type owner */
+	Oid			typowner		BKI_DEFAULT(PGUID);
 
 	/*
 	 * For a fixed-size type, typlen is the number of bytes we use to
@@ -66,7 +70,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class.
 	 */
-	char		typtype;
+	char		typtype			BKI_DEFAULT(b);
 
 	/*
 	 * typcategory and typispreferred help the parser distinguish preferred
@@ -76,17 +80,20 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 */
 	char		typcategory;	/* arbitrary type classification */
 
-	bool		typispreferred; /* is type "preferred" within its category? */
+	/* is type "preferred" within its category? */
+	bool		typispreferred	BKI_DEFAULT(f);
 
 	/*
 	 * If typisdefined is false, the entry is only a placeholder (forward
 	 * reference).  We know the type name, but not yet anything else about it.
 	 */
-	bool		typisdefined;
+	bool		typisdefined	BKI_DEFAULT(t);
 
-	char		typdelim;		/* delimiter for arrays of this type */
+	/* delimiter for arrays of this type */
+	char		typdelim		BKI_DEFAULT(\054);
 
-	Oid			typrelid;		/* 0 if not a composite type */
+	/* 0 if not a composite type */
+	Oid			typrelid		BKI_DEFAULT(0);
 
 	/*
 	 * If typelem is not 0 then it identifies another row in pg_type. The
@@ -99,7 +106,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * typelem != 0 and typlen == -1.
 	 */
-	Oid			typelem;
+	Oid			typelem			BKI_DEFAULT(0);
 
 	/*
 	 * If there is a "true" array type having this type as element type,
@@ -118,13 +125,13 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	/*
 	 * I/O functions for optional type modifiers.
 	 */
-	regproc		typmodin;
-	regproc		typmodout;
+	regproc		typmodin		BKI_DEFAULT(-);
+	regproc		typmodout		BKI_DEFAULT(-);
 
 	/*
 	 * Custom ANALYZE procedure for the datatype (0 selects the default).
 	 */
-	regproc		typanalyze;
+	regproc		typanalyze		BKI_DEFAULT(-);
 
 	/* ----------------
 	 * typalign is the alignment required when storing a value of this
@@ -162,7 +169,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * 'm' MAIN		  like 'x' but try to keep in main tuple
 	 * ----------------
 	 */
-	char		typstorage;
+	char		typstorage		BKI_DEFAULT(p);
 
 	/*
 	 * This flag represents a "NOT NULL" constraint against this datatype.
@@ -172,32 +179,32 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 *
 	 * Used primarily for domain types.
 	 */
-	bool		typnotnull;
+	bool		typnotnull		BKI_DEFAULT(f);
 
 	/*
 	 * Domains use typbasetype to show the base (or domain) type that the
 	 * domain is based on.  Zero if the type is not a domain.
 	 */
-	Oid			typbasetype;
+	Oid			typbasetype		BKI_DEFAULT(0);
 
 	/*
 	 * Domains use typtypmod to record the typmod to be applied to their base
 	 * type (-1 if base type does not use a typmod).  -1 if this type is not a
 	 * domain.
 	 */
-	int32		typtypmod;
+	int32		typtypmod		BKI_DEFAULT(-1);
 
 	/*
 	 * typndims is the declared number of dimensions for an array domain type
 	 * (i.e., typbasetype is an array type).  Otherwise zero.
 	 */
-	int32		typndims;
+	int32		typndims		BKI_DEFAULT(0);
 
 	/*
 	 * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for
 	 * collatable base types, possibly other OID for domains
 	 */
-	Oid			typcollation;
+	Oid			typcollation	BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 
@@ -206,7 +213,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * a default expression for the type.  Currently this is only used for
 	 * domains.
 	 */
-	pg_node_tree typdefaultbin;
+	pg_node_tree typdefaultbin	BKI_DEFAULT(_null_);
 
 	/*
 	 * typdefault is NULL if the type has no associated default value. If
@@ -216,12 +223,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	 * external representation of the type's default value, which may be fed
 	 * to the type's input converter to produce a constant.
 	 */
-	text		typdefault;
+	text		typdefault		BKI_DEFAULT(_null_);
 
 	/*
 	 * Access permissions
 	 */
-	aclitem		typacl[1];
+	aclitem		typacl[1]		BKI_DEFAULT(_null_);
 #endif
 } FormData_pg_type;
 
diff --git a/src/include/catalog/rewrite_dat.pl b/src/include/catalog/rewrite_dat.pl
index 614ec01..54434ea 100644
--- a/src/include/catalog/rewrite_dat.pl
+++ b/src/include/catalog/rewrite_dat.pl
@@ -22,6 +22,7 @@ use warnings;
 
 my @input_files;
 my $output_path = '';
+my $expand_tuples = 0;
 
 # Process command line switches.
 while (@ARGV)
@@ -35,6 +36,10 @@ while (@ARGV)
 	{
 		$output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
 	}
+	elsif ($arg eq '--expand')
+	{
+		$expand_tuples = 1;
+	}
 	else
 	{
 		usage();
@@ -99,6 +104,14 @@ foreach my $datfile (@input_files)
 			my %values = %$data;
 			print $dat "{ ";
 
+			# Write out tuples in a compact representation.
+			# Note: This is also a convenient place to do one-off
+			# bulk-editing.
+			if (!$expand_tuples)
+			{
+				strip_default_values(\%values, $schema, $catname);
+			}
+
 			# Separate out metadata fields for readability.
 			my $metadata_line = format_line(\%values, @METADATA);
 			if ($metadata_line)
@@ -123,6 +136,26 @@ foreach my $datfile (@input_files)
 	}
 }
 
+# Leave values out if there is a matching default.
+sub strip_default_values
+{
+	my ($row, $schema, $catname) = @_;
+
+	foreach my $column (@$schema)
+	{
+		my $attname = $column->{name};
+		die "strip_default_values: $catname.$attname undefined\n"
+		  if ! defined $row->{$attname};
+
+		# Delete values that match defaults.
+		if (defined $column->{default}
+			and ($row->{$attname} eq $column->{default}))
+		{
+			delete $row->{$attname};
+		}
+	}
+}
+
 # Format the individual elements of a Perl hash into a valid string
 # representation. We do this ourselves, rather than use native Perl
 # facilities, so we can keep control over the exact formatting of the
@@ -162,6 +195,7 @@ Usage: rewrite_dat.pl [options] datafile...
 
 Options:
     -o               output path
+    --expand         write out full tuples
 
 Expects a list of .dat files as arguments.
 
-- 
2.7.4

v10-0007-Implement-OID-macro-lookups.patchtext/x-patch; charset=US-ASCII; name=v10-0007-Implement-OID-macro-lookups.patchDownload
From 3ae7f95d9cf61c1327fabcd1c75fd530d1d0c379 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 11 Mar 2018 18:34:01 +0700
Subject: [PATCH] Implement OID macro lookups

Teach genbki.pl to do the necessary OID lookups to turn the macros introduced
in last commit back into numeric OIDs when writing postgres.bki. Since
all the lookup tables are now built before we start writing the data to
BKI files, genbki.pl can be less stringent about the order the catalogs
are processed -- the only ordering constraints are those imposed by the
bootstrap code.
---
 src/backend/catalog/Catalog.pm       |   4 +
 src/backend/catalog/README           |   1 -
 src/backend/catalog/genbki.pl        | 137 +++++++++++++++++++++++++++++------
 src/include/catalog/genbki.h         |   5 +-
 src/include/catalog/pg_aggregate.h   |  22 +++---
 src/include/catalog/pg_am.h          |   2 +-
 src/include/catalog/pg_amop.h        |  12 +--
 src/include/catalog/pg_amproc.h      |  19 +++--
 src/include/catalog/pg_cast.h        |   4 +-
 src/include/catalog/pg_opclass.h     |  16 ++--
 src/include/catalog/pg_operator.h    |  16 ++--
 src/include/catalog/pg_opfamily.h    |   7 +-
 src/include/catalog/pg_proc.h        |   4 +-
 src/include/catalog/pg_range.h       |  23 ++++--
 src/include/catalog/pg_ts_parser.h   |  27 +++++--
 src/include/catalog/pg_ts_template.h |  15 +++-
 src/include/catalog/pg_type.h        |  16 ++--
 17 files changed, 238 insertions(+), 92 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 0a88c08..6fe5566 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -174,6 +174,10 @@ sub ParseHeader
 						{
 							$column{default} = $1;
 						}
+						elsif ($attopt =~ /BKI_LOOKUP\((\S+)\)/)
+						{
+							$column{lookup} = $1;
+						}
 						else
 						{
 							die
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index aa0785e..447fce6 100644
--- a/src/backend/catalog/README
+++ b/src/backend/catalog/README
@@ -129,7 +129,6 @@ CATALOG_HEADERS variable, as these cannot be created through the standard
 heap_create_with_catalog process, because it needs these tables to exist
 already.  The list of files this currently includes is:
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h
-Within this list, pg_type.h must come before pg_attribute.h.
 Also, indexing.h must be last, since the indexes can't be created until all
 the tables are in place, and toasting.h should probably be next-to-last
 (or at least after all the tables that need toast tables).  There are
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 9f67a24..fe83f3b 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -121,6 +121,83 @@ my $BOOTSTRAP_SUPERUSERID
 my $PG_CATALOG_NAMESPACE
 	= Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE');
 
+# Build lookup tables for OID macro substitutions and for pg_attribute
+# copies of pg_type values.
+
+# index access method OID lookup
+my %amoids;
+foreach my $row (@{ $catalog_data{pg_am} })
+{
+	$amoids{$row->{amname}} = $row->{oid};
+}
+
+# operator OID lookup
+my %operoids;
+foreach my $row (@{ $catalog_data{pg_operator} })
+{
+	# There is no unique name, so we need to invent one that contains
+	# the relevant type names.
+	my $key = sprintf "%s(%s,%s)",
+	  $row->{oprname}, $row->{oprleft}, $row->{oprright};
+	$operoids{$key} = $row->{oid};
+}
+
+# opclass OID lookup
+my %opcoids;
+foreach my $row (@{ $catalog_data{pg_opclass} })
+{
+	# There is no unique name, so we need to combine access method
+	# and opclass name.
+	my $key = sprintf "%s/%s",
+	  $row->{opcmethod}, $row->{opcname};
+	$opcoids{$key} = $row->{oid};
+}
+
+# opfamily OID lookup
+my %opfoids;
+foreach my $row (@{ $catalog_data{pg_opfamily} })
+{
+	# There is no unique name, so we need to combine access method
+	# and opfamily name.
+	my $key = sprintf "%s/%s",
+	  $row->{opfmethod}, $row->{opfname};
+	$opfoids{$key} = $row->{oid};
+}
+
+# procedure OID lookup
+my %procoids;
+foreach my $row (@{ $catalog_data{pg_proc} })
+{
+	if (defined($procoids{ $row->{proname} }))
+	{
+		$procoids{ $row->{proname} } = 'MULTIPLE';
+	}
+	else
+	{
+		$procoids{ $row->{proname} } = $row->{oid};
+	}
+}
+
+# type lookups
+my %typeoids;
+my %types;
+foreach my $row (@{ $catalog_data{pg_type} })
+{
+	$typeoids{ $row->{typname} } = $row->{oid};
+	$types{ $row->{typname} } = $row;
+}
+
+# Map catalog name to OID lookup.
+my %lookup_kind = (
+	pg_am       => \%amoids,
+	pg_operator => \%operoids,
+	pg_opclass  => \%opcoids,
+	pg_opfamily => \%opfoids,
+	pg_proc     => \%procoids,
+	pg_type     => \%typeoids
+);
+
+
 # Generate postgres.bki, postgres.description, and postgres.shdescription
 
 # version marker for .bki file
@@ -129,8 +206,6 @@ print $bki "# PostgreSQL $major_version\n";
 # vars to hold data needed for schemapg.h
 my %schemapg_entries;
 my @tables_needing_macros;
-my %regprocoids;
-my %types;
 
 # produce output, one catalog at a time
 foreach my $catname (@catnames)
@@ -225,8 +300,6 @@ EOM
 	}
 
 	# For pg_attribute.h, we generate data entries ourselves.
-	# NB: pg_type.h must come before pg_attribute.h in the input list
-	# of catalog names, since we use info from pg_type.h here.
 	if ($catname eq 'pg_attribute')
 	{
 		gen_pg_attribute($schema);
@@ -248,38 +321,54 @@ EOM
 			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
 			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
-			# Replace regproc columns' values with OIDs.
-			# If we don't have a unique value to substitute,
-			# just do nothing (regprocin will complain).
-			if ($atttype eq 'regproc')
+			# Replace OID macros with OIDs.
+			# If we don't have a unique value to substitute, just do
+			# nothing. This should only happen in the case for functions,
+			# in which case regprocin will complain.
+			if ($column->{lookup})
 			{
-				my $procoid = $regprocoids{ $bki_values{$attname} };
-				$bki_values{$attname} = $procoid
-				  if defined($procoid) && $procoid ne 'MULTIPLE';
+				my $lookup = $lookup_kind{ $column->{lookup} }
+				  if defined $column->{lookup};
+				my $lookupoid = $lookup->{ $bki_values{$attname} };
+				$bki_values{$attname} = $lookupoid
+				  if defined($lookupoid) && $lookupoid ne 'MULTIPLE';
 			}
 		}
 
-		# Save pg_proc oids for use in later regproc substitutions.
-		# This relies on the order we process the files in!
+		# We can't always do type lookups in a general way for
+		# pg_proc, so do special handling here.
 		if ($catname eq 'pg_proc')
 		{
-			if (defined($regprocoids{ $bki_values{proname} }))
+
+			# proargtypes
+			if ($bki_values{proargtypes})
 			{
-				$regprocoids{ $bki_values{proname} } = 'MULTIPLE';
+				my @argtypenames = split /\s+/, $bki_values{proargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
+				{
+					my $argtypeoid  = $typeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
+				}
+				$bki_values{proargtypes} = join(' ', @argtypeoids);
 			}
-			else
+
+			# proallargtypes
+			if ($bki_values{proallargtypes} ne '_null_')
 			{
-				$regprocoids{ $bki_values{proname} } = $bki_values{oid};
+				$bki_values{proallargtypes} =~ s/[{}]//g;
+				my @argtypenames = split /,/, $bki_values{proallargtypes};
+				my @argtypeoids;
+				foreach my $argtypename (@argtypenames)
+				{
+					my $argtypeoid  = $typeoids{$argtypename};
+					push @argtypeoids, $argtypeoid;
+				}
+				$bki_values{proallargtypes} =
+					sprintf "{%s}", join(',', @argtypeoids);
 			}
 		}
 
-		# Save pg_type info for pg_attribute processing below
-		if ($catname eq 'pg_type')
-		{
-			my %type = %bki_values;
-			$types{ $type{typname} } = \%type;
-		}
-
 		# Write to postgres.bki
 		print_bki_insert(\%bki_values, $schema);
 
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 4702932..9566b44 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -28,11 +28,14 @@
 #define BKI_WITHOUT_OIDS
 #define BKI_ROWTYPE_OID(oid)
 #define BKI_SCHEMA_MACRO
+
+/* Options that may appear after an attribute (on the same line) */
 #define BKI_FORCE_NULL
 #define BKI_FORCE_NOT_NULL
-
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
+/* Indicates where to perform OID lookups for OID macros */
+#define BKI_LOOKUP(kind)
 
 /* The following are never defined; they are here only for documentation. */
 
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 74f2b27..0fe6b03 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -57,22 +57,22 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
 	regproc		aggfnoid;
 	char		aggkind				BKI_DEFAULT(n);
 	int16		aggnumdirectargs	BKI_DEFAULT(0);
-	regproc		aggtransfn;
-	regproc		aggfinalfn			BKI_DEFAULT(-);
-	regproc		aggcombinefn		BKI_DEFAULT(-);
-	regproc		aggserialfn			BKI_DEFAULT(-);
-	regproc		aggdeserialfn		BKI_DEFAULT(-);
-	regproc		aggmtransfn			BKI_DEFAULT(-);
-	regproc		aggminvtransfn		BKI_DEFAULT(-);
-	regproc		aggmfinalfn			BKI_DEFAULT(-);
+	regproc		aggtransfn			BKI_LOOKUP(pg_proc);
+	regproc		aggfinalfn			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggcombinefn		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggserialfn			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggdeserialfn		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggmtransfn			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggminvtransfn		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		aggmfinalfn			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
 	bool		aggfinalextra		BKI_DEFAULT(f);
 	bool		aggmfinalextra		BKI_DEFAULT(f);
 	char		aggfinalmodify		BKI_DEFAULT(r);
 	char		aggmfinalmodify		BKI_DEFAULT(r);
-	Oid			aggsortop			BKI_DEFAULT(0);
-	Oid			aggtranstype;
+	Oid			aggsortop			BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
+	Oid			aggtranstype		BKI_LOOKUP(pg_type);
 	int32		aggtransspace		BKI_DEFAULT(0);
-	Oid			aggmtranstype		BKI_DEFAULT(0);
+	Oid			aggmtranstype		BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
 	int32		aggmtransspace		BKI_DEFAULT(0);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index 4004c96..193711b 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -31,7 +31,7 @@
 CATALOG(pg_am,2601)
 {
 	NameData	amname;			/* access method name */
-	regproc		amhandler;		/* handler function */
+	regproc		amhandler BKI_LOOKUP(pg_proc);	/* handler function */
 	char		amtype;			/* see AMTYPE_xxx constants below */
 } FormData_pg_am;
 
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index e638c30..c99530d 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -56,13 +56,13 @@
 CATALOG(pg_amop,2602)
 {
 	/* the index opfamily this entry is for */
-	Oid			amopfamily;
+	Oid			amopfamily		BKI_LOOKUP(pg_opfamily);
 
 	/* operator's left input data type */
-	Oid			amoplefttype;
+	Oid			amoplefttype	BKI_LOOKUP(pg_type);
 
 	/* operator's right input data type */
-	Oid			amoprighttype;
+	Oid			amoprighttype	BKI_LOOKUP(pg_type);
 
 	/* operator strategy number */
 	int16		amopstrategy;
@@ -71,13 +71,13 @@ CATALOG(pg_amop,2602)
 	char		amoppurpose		BKI_DEFAULT(s);
 
 	/* the operator's pg_operator OID */
-	Oid			amopopr;
+	Oid			amopopr			BKI_LOOKUP(pg_operator);
 
 	/* the index access method this entry is for */
-	Oid			amopmethod;
+	Oid			amopmethod		BKI_LOOKUP(pg_am);
 
 	/* ordering opfamily OID, or 0 if search op */
-	Oid			amopsortfamily	BKI_DEFAULT(0);
+	Oid			amopsortfamily	BKI_DEFAULT(0) BKI_LOOKUP(pg_opfamily);
 } FormData_pg_amop;
 
 /* ----------------
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 66e1cdc..1db7db5 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -44,11 +44,20 @@
 
 CATALOG(pg_amproc,2603)
 {
-	Oid			amprocfamily;	/* the index opfamily this entry is for */
-	Oid			amproclefttype; /* procedure's left input data type */
-	Oid			amprocrighttype;	/* procedure's right input data type */
-	int16		amprocnum;		/* support procedure index */
-	regproc		amproc;			/* OID of the proc */
+	/* the index opfamily this entry is for */
+	Oid			amprocfamily	BKI_LOOKUP(pg_opfamily);
+
+	/* procedure's left input data type */
+	Oid			amproclefttype	BKI_LOOKUP(pg_type);
+
+	/* procedure's right input data type */
+	Oid			amprocrighttype	BKI_LOOKUP(pg_type);
+
+	/* support procedure index */
+	int16		amprocnum;
+
+	/* OID of the proc */
+	regproc		amproc;
 } FormData_pg_amproc;
 
 /* ----------------
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 6d98213..d980c25 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -32,8 +32,8 @@
 
 CATALOG(pg_cast,2605)
 {
-	Oid			castsource;		/* source datatype for cast */
-	Oid			casttarget;		/* destination datatype for cast */
+	Oid			castsource BKI_LOOKUP(pg_type);		/* source datatype for cast */
+	Oid			casttarget BKI_LOOKUP(pg_type);		/* destination datatype for cast */
 	Oid			castfunc;		/* cast function; 0 = binary coercible */
 	char		castcontext;	/* contexts in which cast can be used */
 	char		castmethod;		/* cast method */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 6d0fed8..9c41aab 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -50,8 +50,11 @@
 
 CATALOG(pg_opclass,2616)
 {
-	Oid			opcmethod;		/* index access method opclass is for */
-	NameData	opcname;		/* name of this opclass */
+	/* index access method opclass is for */
+	Oid			opcmethod		BKI_LOOKUP(pg_am);
+
+	/* name of this opclass */
+	NameData	opcname;
 
 	/* namespace of this opclass */
 	Oid			opcnamespace	BKI_DEFAULT(PGNSP);
@@ -59,14 +62,17 @@ CATALOG(pg_opclass,2616)
 	/* opclass owner */
 	Oid			opcowner		BKI_DEFAULT(PGUID);
 
-	Oid			opcfamily;		/* containing operator family */
-	Oid			opcintype;		/* type of data indexed by opclass */
+	/* containing operator family */
+	Oid			opcfamily		BKI_LOOKUP(pg_opfamily);
+
+	/* type of data indexed by opclass */
+	Oid			opcintype		BKI_LOOKUP(pg_type);
 
 	/* T if opclass is default for opcintype */
 	bool		opcdefault		BKI_DEFAULT(t);
 
 	/* type of data in index, or InvalidOid */
-	Oid			opckeytype		BKI_DEFAULT(0);
+	Oid			opckeytype		BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
 } FormData_pg_opclass;
 
 /* ----------------
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index e111914..0962c39 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -51,14 +51,14 @@ CATALOG(pg_operator,2617)
 	char		oprkind			BKI_DEFAULT(b);
 	bool		oprcanmerge		BKI_DEFAULT(f);
 	bool		oprcanhash		BKI_DEFAULT(f);
-	Oid			oprleft;
-	Oid			oprright;
-	Oid			oprresult;
-	Oid			oprcom			BKI_DEFAULT(0);
-	Oid			oprnegate		BKI_DEFAULT(0);
-	regproc		oprcode;
-	regproc		oprrest			BKI_DEFAULT(-);
-	regproc		oprjoin			BKI_DEFAULT(-);
+	Oid			oprleft			BKI_LOOKUP(pg_type);
+	Oid			oprright		BKI_LOOKUP(pg_type);
+	Oid			oprresult		BKI_LOOKUP(pg_type);
+	Oid			oprcom			BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
+	Oid			oprnegate		BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
+	regproc		oprcode			BKI_LOOKUP(pg_proc);
+	regproc		oprrest			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		oprjoin			BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
 } FormData_pg_operator;
 
 /* ----------------
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 571615d..8cf5d17 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -30,8 +30,11 @@
 
 CATALOG(pg_opfamily,2753)
 {
-	Oid			opfmethod;		/* index access method opfamily is for */
-	NameData	opfname;		/* name of this opfamily */
+	/* index access method opfamily is for */
+	Oid			opfmethod		BKI_LOOKUP(pg_am);
+
+	/* name of this opfamily */
+	NameData	opfname;
 
 	/* namespace of this opfamily */
 	Oid			opfnamespace	BKI_DEFAULT(PGNSP);
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index d181d67..01dadd4 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -67,7 +67,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 	float4		procost				BKI_DEFAULT(1);
 	float4		prorows				BKI_DEFAULT(0);
 	Oid			provariadic			BKI_DEFAULT(0);
-	regproc		protransform		BKI_DEFAULT(0);
+	regproc		protransform		BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
 	char		prokind				BKI_DEFAULT(f);
 	bool		prosecdef			BKI_DEFAULT(f);
 	bool		proleakproof		BKI_DEFAULT(f);
@@ -77,7 +77,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 	char		proparallel 		BKI_DEFAULT(u);
 	int16		pronargs;
 	int16		pronargdefaults		BKI_DEFAULT(0);
-	Oid			prorettype;
+	Oid			prorettype			BKI_LOOKUP(pg_type);
 
 	/*
 	 * variable-length fields start here, but we allow direct access to
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index 4c806fd..2046441 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -30,12 +30,23 @@
 
 CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
 {
-	Oid			rngtypid;		/* OID of owning range type */
-	Oid			rngsubtype;		/* OID of range's element type (subtype) */
-	Oid			rngcollation;	/* collation for this range type, or 0 */
-	Oid			rngsubopc;		/* subtype's btree opclass */
-	regproc		rngcanonical;	/* canonicalize range, or 0 */
-	regproc		rngsubdiff;		/* subtype difference as a float8, or 0 */
+	/* OID of owning range type */
+	Oid			rngtypid		BKI_LOOKUP(pg_type);
+
+	/* OID of range's element type (subtype) */
+	Oid			rngsubtype		BKI_LOOKUP(pg_type);
+
+	/* collation for this range type, or 0 */
+	Oid			rngcollation;
+
+	/* subtype's btree opclass */
+	Oid			rngsubopc		BKI_LOOKUP(pg_opclass);
+
+	/* canonicalize range, or 0 */
+	regproc		rngcanonical	BKI_LOOKUP(pg_proc);
+
+	/* subtype difference as a float8, or 0 */
+	regproc		rngsubdiff		BKI_LOOKUP(pg_proc);
 } FormData_pg_range;
 
 /* ----------------
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 3baaef0..8274ff0 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -30,13 +30,26 @@
 
 CATALOG(pg_ts_parser,3601)
 {
-	NameData	prsname;		/* parser's name */
-	Oid			prsnamespace;	/* name space */
-	regproc		prsstart;		/* init parsing session */
-	regproc		prstoken;		/* return next token */
-	regproc		prsend;			/* finalize parsing session */
-	regproc		prsheadline;	/* return data for headline creation */
-	regproc		prslextype;		/* return descriptions of lexeme's types */
+	/* parser's name */
+	NameData	prsname;
+
+	/* name space */
+	Oid			prsnamespace;
+
+	/* init parsing session */
+	regproc		prsstart		BKI_LOOKUP(pg_proc);
+
+	/* return next token */
+	regproc		prstoken		BKI_LOOKUP(pg_proc);
+
+	/* finalize parsing session */
+	regproc		prsend			BKI_LOOKUP(pg_proc);
+
+	/* return data for headline creation */
+	regproc		prsheadline		BKI_LOOKUP(pg_proc);
+
+	/* return descriptions of lexeme's types */
+	regproc		prslextype		BKI_LOOKUP(pg_proc);
 } FormData_pg_ts_parser;
 
 typedef FormData_pg_ts_parser *Form_pg_ts_parser;
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 7ea6e15..0cb5f9f 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -30,10 +30,17 @@
 
 CATALOG(pg_ts_template,3764)
 {
-	NameData	tmplname;		/* template name */
-	Oid			tmplnamespace;	/* name space */
-	regproc		tmplinit;		/* initialization method of dict (may be 0) */
-	regproc		tmpllexize;		/* base method of dictionary */
+	/* template name */
+	NameData	tmplname;
+
+	/* name space */
+	Oid			tmplnamespace;
+
+	/* initialization method of dict (may be 0) */
+	regproc		tmplinit	BKI_LOOKUP(pg_proc);
+
+	/* base method of dictionary */
+	regproc		tmpllexize	BKI_LOOKUP(pg_proc);
 } FormData_pg_ts_template;
 
 typedef FormData_pg_ts_template *Form_pg_ts_template;
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index b52e677..ad04fdb 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -117,21 +117,23 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 	/*
 	 * I/O conversion procedures for the datatype.
 	 */
-	regproc		typinput;		/* text format (required) */
-	regproc		typoutput;
-	regproc		typreceive;		/* binary format (optional) */
-	regproc		typsend;
+	/* text format (required) */
+	regproc		typinput		BKI_LOOKUP(pg_proc);
+	regproc		typoutput		BKI_LOOKUP(pg_proc);
+	/* binary format (optional) */
+	regproc		typreceive		BKI_LOOKUP(pg_proc);
+	regproc		typsend			BKI_LOOKUP(pg_proc);
 
 	/*
 	 * I/O functions for optional type modifiers.
 	 */
-	regproc		typmodin		BKI_DEFAULT(-);
-	regproc		typmodout		BKI_DEFAULT(-);
+	regproc		typmodin		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+	regproc		typmodout		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
 
 	/*
 	 * Custom ANALYZE procedure for the datatype (0 selects the default).
 	 */
-	regproc		typanalyze		BKI_DEFAULT(-);
+	regproc		typanalyze		BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
 
 	/* ----------------
 	 * typalign is the alignment required when storing a value of this
-- 
2.7.4

v10-0008-Generate-pg_type-OID-symbols.patchtext/x-patch; charset=US-ASCII; name=v10-0008-Generate-pg_type-OID-symbols.patchDownload
From 72cd6678b6a6c7b3cb5cba75a48459b32d53a6c9 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 12 Mar 2018 18:44:55 +0700
Subject: [PATCH] Generate pg_type OID symbols

If there is no oid_symbol entry already in the pg_type.dat, genbki.pl
will generate one when writing pg_type_d.h.
---
 src/backend/catalog/genbki.pl   | 28 ++++++++++++++++++++++++++++
 src/include/catalog/pg_type.dat |  9 +++++++++
 2 files changed, 37 insertions(+)

diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index cff661e..aafeb7b 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -368,6 +368,12 @@ EOM
 					sprintf "{%s}", join(',', @argtypeoids);
 			}
 		}
+		elsif ($catname eq 'pg_type' and !exists $bki_values{oid_symbol})
+		{
+			my $symbol = form_pg_type_symbol($bki_values{typname});
+			$bki_values{oid_symbol} = $symbol
+			  if defined $symbol;
+		}
 
 		# Write to postgres.bki
 		print_bki_insert(\%bki_values, $schema);
@@ -699,6 +705,28 @@ sub morph_row_for_schemapg
 	}
 }
 
+# Determine canonical pg_type OID #define symbol from the type name.
+sub form_pg_type_symbol
+{
+	my $typename = shift;
+
+	# Skip for rowtypes of bootstrap tables, since they have their
+	# own naming convention defined elsewhere.
+	return
+	  if $typename eq 'pg_type'
+	    or $typename eq 'pg_proc'
+	    or $typename eq 'pg_attribute'
+	    or $typename eq 'pg_class';
+
+	# Transform like so:
+	#  foo_bar  ->  FOO_BAROID
+	# _foo_bar  ->  FOO_BARARRAYOID
+	$typename =~ /(_)?(.+)/;
+	my $arraystr = $1 ? 'ARRAY' : '';
+	my $name = uc $2;
+	return $name . $arraystr . 'OID';
+}
+
 sub usage
 {
 	die <<EOM;
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 0a7de54..9264f79 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -18,6 +18,15 @@
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
+# The defined symbols for pg_type OIDs are generated by genbki.pl
+# according to the following rule, so you don't need to specify them
+# here:
+#  foo_bar  ->  FOO_BAROID
+# _foo_bar  ->  FOO_BARARRAYOID
+#
+# The only symbols in this file are ones that don't match this rule, and
+# are grandfathered in.
+
 # OIDS 1 - 99
 
 { oid => '16', descr => 'boolean, \'true\'/\'false\'',
-- 
2.7.4

v10-convert_header2dat.plapplication/x-perl; name=v10-convert_header2dat.plDownload
v10-rewrite_dat_oid2name.plapplication/x-perl; name=v10-rewrite_dat_oid2name.plDownload
v10-remove_pg_type_oid_symbols.plapplication/x-perl; name=v10-remove_pg_type_oid_symbols.plDownload
#45Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#44)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

It didn't take that long to rebase the remaining parts of the
patchset, so despite what I said above I went ahead and put them in
version 10 (attached), this time via scripted bulk editing rather than
as large patches.

Starting to look into this version now, but a small suggestion while
it's still fresh in mind: it might be easier, in future rounds, to
put all the files in a tarball and attach 'em as one big attachment.
At least with my mail setup, it's way easier to save off a tarball
and "tar xf" it than it is to individually save a dozen attachments.
I suspect that way might be easier on your end, too.

There's some value in posting a patchset as separate attachments
when it's possible to just apply the patches in series; Munro's patch
tester knows what to do with that, but not with a tarball AFAIK.
But in this case, there's little hope that the patch tester would
get it right anyhow.

regards, tom lane

#46John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#45)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 3/15/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

John Naylor <jcnaylor@gmail.com> writes:

It didn't take that long to rebase the remaining parts of the
patchset, so despite what I said above I went ahead and put them in
version 10 (attached), this time via scripted bulk editing rather than
as large patches.

Starting to look into this version now, but a small suggestion while
it's still fresh in mind: it might be easier, in future rounds, to
put all the files in a tarball and attach 'em as one big attachment.

Sure thing. I've done so here for version 11, which is just a rebase
over the removal of pg_class.relhaspkey.

-John Naylor

Attachments:

v11-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v11-bootstrap-data-conversion.tar.gzDownload
#47Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#46)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

[ v11-bootstrap-data-conversion.tar.gz ]

I've done a round of review work on this, focusing on the Makefile
infrastructure. I found a bunch of problems with parallel builds and
VPATH builds, which are addressed in the attached incremental patch.

The parallel-build issues are a bit of a mess really: it's surprising
we've not had problems there earlier. For instance, catalog/Makefile has

postgres.description: postgres.bki ;
postgres.shdescription: postgres.bki ;
schemapg.h: postgres.bki ;

However, genbki.pl doesn't make any particular guarantee that postgres.bki
will be written sooner than its other output files, which means that in
principle make might think it needs to rebuild these other files on every
subsequent check. That was somewhat harmless given the empty update rule,
but it's not really the right thing. Your patch extended this to make
all the generated headers dependent on postgres.bki, and those are
definitely written before postgres.bki, meaning make *will* think they
are out of date. Worse, it'll also think the symlinks to them are out
of date. So I was running into problems with different parallel make
sub-tasks removing and recreating the symlinks. VPATH builds didn't
work well either, because out-of-date-ness ties into whether make will
accept a file in the source dir as a valid replacement target.

I resolved this mess by setting up a couple of stamp files, which is
a technique we also use elsewhere. bki-stamp is a single file
representing the action of having run genbki.pl, and header-stamp
likewise represents the action of having made the symlinks to the
generated headers. By depending on those rather than individual
files, we avoid questions of exactly what the timestamps on the
individual output files are.

In the attached, I've also done some more work on the README file
and cleaned up a few other little things.

I've not really looked at the MSVC build code at all. Personally,
I'm willing to just commit this (when the time comes) and let the
buildfarm see if the MSVC code works ... but if anyone else wants
to check that part beforehand, please do.

I also have not spent much time yet looking at the end-product .h and .dat
files. I did note a bit of distressing inconsistency in the formatting of
the catalog struct declarations, some of which predates this patch but it
seems like you've introduced more. I think what we ought to standardize
on is a format similar to this in pg_opclass.h:

CATALOG(pg_opclass,2616)
{
/* index access method opclass is for */
Oid opcmethod BKI_LOOKUP(pg_am);

/* name of this opclass */
NameData opcname;

/* namespace of this opclass */
Oid opcnamespace BKI_DEFAULT(PGNSP);

/* opclass owner */
Oid opcowner BKI_DEFAULT(PGUID);

The former convention used in some places, of field descriptions in
same-line comments, clearly won't work anymore if we're sticking
BKI_DEFAULT annotations there. I also don't like the format used in, eg,
pg_aggregate.h of putting field descriptions in a separate comment block
before the struct proper. Bitter experience has shown that there are a
lot of people on this project who won't update comments that are more than
about two lines away from the code they change; so the style in
pg_aggregate.h is just inviting maintenance oversights.

I've got mixed feelings about the whitespace lines between fields. They
seem like they are mostly bulking up the code and we could do without 'em.
On the other hand, pgindent will insist on putting one before any
multi-line field comment, and so that would create inconsistent formatting
if we don't use 'em elsewhere. Thoughts?

Speaking of pgindent, those prettily aligned BKI annotations are a waste
of effort, because when pgindent gets done with the code it will look
like

regproc aggfnoid;
char aggkind BKI_DEFAULT(n);
int16 aggnumdirectargs BKI_DEFAULT(0);
regproc aggtransfn BKI_LOOKUP(pg_proc);
regproc aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);

I'm not sure if there's anything much to be done about this. BKI_DEFAULT
isn't so bad, but additional annotations get unreadable fast. Maybe
BKI_LOOKUP was a bad idea after all, and we should just invent more
Oid-equivalent typedef names.

The attached is just one incremental patch on top of your v11 series.
I couldn't think of an easy way to migrate the changes back into the
most relevant diffs of your series, so I didn't try.

regards, tom lane

Attachments:

v11-bootstrap-data-adjustments-1.patchtext/x-diff; charset=us-ascii; name=v11-bootstrap-data-adjustments-1.patchDownload
diff --git a/src/Makefile b/src/Makefile
index febbced..433d00b 100644
*** a/src/Makefile
--- b/src/Makefile
*************** SUBDIRS = \
*** 37,42 ****
--- 37,47 ----
  
  $(recurse)
  
+ # Update the commonly used headers before building the subdirectories;
+ # otherwise, in a parallel build, several different sub-jobs will try to
+ # remake them concurrently
+ $(SUBDIRS:%=all-%-recurse): | submake-generated-headers
+ 
  install: install-local
  
  install-local: installdirs-local
diff --git a/src/backend/Makefile b/src/backend/Makefile
index ef00b38..775f7a3 100644
*** a/src/backend/Makefile
--- b/src/backend/Makefile
*************** utils/probes.h: utils/probes.d
*** 150,156 ****
  
  # run this unconditionally to avoid needing to know its dependencies here:
  submake-catalog-headers:
! 	$(MAKE) -C catalog distprep builddir-headers
  
  .PHONY: submake-catalog-headers
  
--- 150,156 ----
  
  # run this unconditionally to avoid needing to know its dependencies here:
  submake-catalog-headers:
! 	$(MAKE) -C catalog distprep generated-header-symlinks
  
  .PHONY: submake-catalog-headers
  
*************** endif
*** 299,312 ****
  ##########################################################################
  
  clean:
! 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
! 		$(top_builddir)/src/include/parser/gram.h \
! 		$(top_builddir)/src/include/catalog/pg_*_d.h \
! 		$(top_builddir)/src/include/catalog/schemapg.h \
! 		$(top_builddir)/src/include/storage/lwlocknames.h \
! 		$(top_builddir)/src/include/utils/fmgroids.h \
! 		$(top_builddir)/src/include/utils/fmgrprotos.h \
! 		$(top_builddir)/src/include/utils/probes.h
  ifeq ($(PORTNAME), cygwin)
  	rm -f postgres.dll libpostgres.a
  endif
--- 299,305 ----
  ##########################################################################
  
  clean:
! 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP)
  ifeq ($(PORTNAME), cygwin)
  	rm -f postgres.dll libpostgres.a
  endif
*************** distclean: clean
*** 318,333 ****
  	rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c
  
  maintainer-clean: distclean
  	rm -f bootstrap/bootparse.c \
  	      bootstrap/bootscanner.c \
  	      parser/gram.c \
  	      parser/gram.h \
  	      parser/scan.c \
- 	      catalog/pg_*_d.h \
- 	      catalog/schemapg.h \
- 	      catalog/postgres.bki \
- 	      catalog/postgres.description \
- 	      catalog/postgres.shdescription \
  	      replication/repl_gram.c \
  	      replication/repl_scanner.c \
  	      replication/syncrep_gram.c \
--- 311,322 ----
  	rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c
  
  maintainer-clean: distclean
+ 	$(MAKE) -C catalog $@
  	rm -f bootstrap/bootparse.c \
  	      bootstrap/bootscanner.c \
  	      parser/gram.c \
  	      parser/gram.h \
  	      parser/scan.c \
  	      replication/repl_gram.c \
  	      replication/repl_scanner.c \
  	      replication/syncrep_gram.c \
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
index 1044a1c..9abe91d 100644
*** a/src/backend/catalog/.gitignore
--- b/src/backend/catalog/.gitignore
***************
*** 3,5 ****
--- 3,6 ----
  /postgres.shdescription
  /schemapg.h
  /pg_*_d.h
+ /bki-stamp
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 6fe5566..39dae86 100644
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub ParseHeader
*** 201,207 ****
  #
  # The parameter $preserve_formatting needs to be set for callers that want
  # to work with non-data lines in the data files, such as comments and blank
! # lines. If a caller just wants consume the data, leave it unset.
  sub ParseData
  {
  	my ($input_file, $schema, $preserve_formatting) = @_;
--- 201,207 ----
  #
  # The parameter $preserve_formatting needs to be set for callers that want
  # to work with non-data lines in the data files, such as comments and blank
! # lines. If a caller just wants to consume the data, leave it unset.
  sub ParseData
  {
  	my ($input_file, $schema, $preserve_formatting) = @_;
*************** sub ParseData
*** 299,304 ****
--- 299,305 ----
  
  # Fill in default values of a record using the given schema. It's the
  # caller's responsibility to specify other values beforehand.
+ # If we fail to fill all fields, return a nonempty error message.
  sub AddDefaultValues
  {
  	my ($row, $schema) = @_;
*************** sub FindDefinedSymbolFromData
*** 391,398 ****
  		{
  			return $row->{oid};
  		}
- 		die "no definition found for $symbol\n";
  	}
  }
  
  1;
--- 392,399 ----
  		{
  			return $row->{oid};
  		}
  	}
+ 	die "no definition found for $symbol\n";
  }
  
  1;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 9b87f85..17213d4 100644
*** a/src/backend/catalog/Makefile
--- b/src/backend/catalog/Makefile
*************** CATALOG_HEADERS := \
*** 44,68 ****
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h \
  
  GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h
  
- distprep: $(BKIFILES) $(GENERATED_HEADERS)
- 
- .PHONY: builddir-headers
- 
- builddir-headers: $(addprefix $(top_builddir)/src/include/catalog/, $(GENERATED_HEADERS))
- 
- all: distprep builddir-headers
- 
  # In the list of headers used to assemble postgres.bki, indexing.h needs
  # be last, and toasting.h just before it.
! POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS) toasting.h indexing.h)
  
  POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
  	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
! 	pg_cast.dat pg_class.dat pg_collation.dat pg_database.dat pg_language.dat \
  	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
  	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
  	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
--- 44,64 ----
  	pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
  	pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
  	pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
! 	pg_subscription_rel.h
  
  GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h
  
  # In the list of headers used to assemble postgres.bki, indexing.h needs
  # be last, and toasting.h just before it.
! POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/,\
! 	$(CATALOG_HEADERS) toasting.h indexing.h \
! 	)
  
+ # The .dat files we need can just be listed alphabetically.
  POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\
  	pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \
! 	pg_cast.dat pg_class.dat pg_collation.dat \
! 	pg_database.dat pg_language.dat \
  	pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \
  	pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \
  	pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \
*************** POSTGRES_BKI_DATA = $(addprefix $(top_sr
*** 72,104 ****
  # location of Catalog.pm
  catalogdir = $(top_srcdir)/src/backend/catalog
  
! # see explanation in ../parser/Makefile
! postgres.description: postgres.bki ;
! postgres.shdescription: postgres.bki ;
! $(GENERATED_HEADERS): postgres.bki ;
  
! # Technically, this should depend on Makefile.global, but then
! # postgres.bki would need to be rebuilt after every configure run,
! # even in distribution tarballs.  So this is cheating a bit, but it
! # will achieve the goal of updating the version number when it
! # changes.
! postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
  
! # see explanation in src/backend/Makefile
! $(top_builddir)/src/include/catalog/%_d.h: %_d.h
! 	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
! 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
! 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
! 
! $(top_builddir)/src/include/catalog/schemapg.h: schemapg.h
  	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
! 	  cd '$(dir $@)' && rm -f $(notdir $@) && \
! 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
  
  .PHONY: install-data
! install-data: $(BKIFILES) installdirs
  	$(INSTALL_DATA) $(call vpathsearch,postgres.bki) '$(DESTDIR)$(datadir)/postgres.bki'
  	$(INSTALL_DATA) $(call vpathsearch,postgres.description) '$(DESTDIR)$(datadir)/postgres.description'
  	$(INSTALL_DATA) $(call vpathsearch,postgres.shdescription) '$(DESTDIR)$(datadir)/postgres.shdescription'
--- 68,105 ----
  # location of Catalog.pm
  catalogdir = $(top_srcdir)/src/backend/catalog
  
! all: distprep generated-header-symlinks
  
! distprep: bki-stamp
! 
! .PHONY: generated-header-symlinks
! 
! generated-header-symlinks: $(top_builddir)/src/include/catalog/header-stamp
! 
! # Technically, this should depend on Makefile.global which supplies
! # $(MAJORVERSION); but then postgres.bki would need to be rebuilt after every
! # configure run, even in distribution tarballs.  So depending on configure.in
! # instead is cheating a bit, but it will achieve the goal of updating the
! # version number when it changes.
! bki-stamp: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure.in $(top_srcdir)/src/include/catalog/duplicate_oids
  	cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids
  	$(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS)
+ 	touch $@
  
! # The generated headers must all be symlinked into builddir/src/include/,
! # using absolute links for the reasons explained in src/backend/Makefile.
! # We use header-stamp to record that we've done this because the symlinks
! # themselves may appear older than bki-stamp.
! $(top_builddir)/src/include/catalog/header-stamp: bki-stamp
  	prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
! 	cd '$(dir $@)' && for file in $(GENERATED_HEADERS); do \
! 	  rm -f $$file && $(LN_S) "$$prereqdir/$$file" . ; \
! 	done
! 	touch $@
  
+ # Note: installation of generated headers is handled elsewhere
  .PHONY: install-data
! install-data: bki-stamp installdirs
  	$(INSTALL_DATA) $(call vpathsearch,postgres.bki) '$(DESTDIR)$(datadir)/postgres.bki'
  	$(INSTALL_DATA) $(call vpathsearch,postgres.description) '$(DESTDIR)$(datadir)/postgres.description'
  	$(INSTALL_DATA) $(call vpathsearch,postgres.shdescription) '$(DESTDIR)$(datadir)/postgres.shdescription'
*************** installdirs:
*** 113,121 ****
  uninstall-data:
  	rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
  
! # postgres.bki, postgres.description, postgres.shdescription, and the generated headers
! # are in the distribution tarball, so they are not cleaned here.
  clean:
  
  maintainer-clean: clean
! 	rm -f $(BKIFILES)
--- 114,123 ----
  uninstall-data:
  	rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
  
! # postgres.bki, postgres.description, postgres.shdescription,
! # and the generated headers are in the distribution tarball,
! # so they are not cleaned here.
  clean:
  
  maintainer-clean: clean
! 	rm -f bki-stamp $(BKIFILES) $(GENERATED_HEADERS)
diff --git a/src/backend/catalog/README b/src/backend/catalog/README
index 447fce6..4aa2adb 100644
*** a/src/backend/catalog/README
--- b/src/backend/catalog/README
*************** src/backend/catalog/README
*** 3,20 ****
  System Catalog
  ==============
  
! This directory contains .c files that manipulate the system catalogs;
! src/include/catalog contains the .h files that define the structure
! of the system catalogs.
  
! When the compile-time script genbki.pl executes, it parses the .h files
  and .dat files in order to generate the postgres.* files.  These are then
  used as input to initdb (which is just a wrapper around postgres
  running single-user in bootstrapping mode) in order to generate the
  initial (template) system catalog relation files.
  
! backend/utils/Gen_fmgrtab.pl uses the same mechanism to genarate .c and
! .h files used by the function manager.
  
  -----------------------------------------------------------------
  
--- 3,27 ----
  System Catalog
  ==============
  
! This directory contains .c files that manipulate the system catalogs.
! src/include/catalog contains the pg_XXX.h files that define the structure
! of the system catalogs, as well as pg_XXX.dat files that define the
! initial contents of the catalogs.
  
! When the compile-time script genbki.pl executes, it parses the pg_XXX.h files
  and .dat files in order to generate the postgres.* files.  These are then
  used as input to initdb (which is just a wrapper around postgres
  running single-user in bootstrapping mode) in order to generate the
  initial (template) system catalog relation files.
  
! genbki.pl also produces some generated header files that are used in
! compiling the C code.  These include a pg_XXX_d.h file corresponding
! to each pg_XXX.h catalog header file, which contains #define's extracted
! from the corresponding .dat file as well as some automatically-generated
! symbols.
! 
! backend/utils/Gen_fmgrtab.pl uses the same catalog-data-reading code
! to generate .c and .h files used by the function manager.
  
  -----------------------------------------------------------------
  
*************** The data file format and bootstrap data 
*** 22,33 ****
  
  - As far as the bootstrap code is concerned, it is very important
  that the insert statements in postgres.bki be properly formatted
! (e.g., no broken lines, proper use of white-space and _null_).  The
! scripts are line-oriented and break easily.  In addition, the only
! documentation on the proper format for them is the code in the
! bootstrap/ directory.  Fortunately, the source bootstrap data is much
! more tolerant with respect to formatting, but it still pays to be
! careful when adding new data.
  
  - The .dat files contain Perl data structure literals that are simply
  eval'd to produce in-memory data structures.  As such, the code reading
--- 29,39 ----
  
  - As far as the bootstrap code is concerned, it is very important
  that the insert statements in postgres.bki be properly formatted
! (e.g., no broken lines, proper use of white-space and _null_).
! In addition, the only documentation on the proper format for them
! is the code in the bootstrap/ directory.  Fortunately, the source
! bootstrap data is much more tolerant with respect to formatting,
! but it still pays to be careful when adding new data.
  
  - The .dat files contain Perl data structure literals that are simply
  eval'd to produce in-memory data structures.  As such, the code reading
*************** demonstrate the key features:
*** 43,54 ****
  
  # a comment
  { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
!   datname => 'Berkely\'s DB', datcollate => '"LC_COLLATE"', datacl => '_null_' },
  
  ]
  
! -The layout is: open bracket, one or more sets of curly brackets containing
! comma-separated key-value pairs, close bracket.
  -All values are single-quoted.
  -Single quotes within values must be escaped.
  -If a value is a macro to be expanded by initdb.c, it must also have double-
--- 49,61 ----
  
  # a comment
  { oid => '1', oid_symbol => 'TemplateDbOid', shdescr => 'default template',
!   datname => 'Berkeley\'s DB', datcollate => '"LC_COLLATE"',
!   datacl => '_null_' },
  
  ]
  
! -The overall file layout is: open bracket, one or more sets of curly brackets
! containing comma-separated key-value pairs, close bracket.
  -All values are single-quoted.
  -Single quotes within values must be escaped.
  -If a value is a macro to be expanded by initdb.c, it must also have double-
*************** the catalog's data file, and use the #de
*** 91,100 ****
  the actual numeric value of any OID in C code is considered very bad form.
  Direct references to pg_proc OIDs are common enough that there's a special
  mechanism to create the necessary #define's automatically: see
! backend/utils/Gen_fmgrtab.pl.  We also have standard conventions for setting
! up #define's for the pg_class OIDs of system catalogs and indexes.  For all
! the other system catalogs, you have to manually create any #define's you
! need.
  
  - If you need to find a valid OID for a new predefined tuple, use the
  script src/include/catalog/unused_oids.  It generates inclusive ranges of
--- 98,109 ----
  the actual numeric value of any OID in C code is considered very bad form.
  Direct references to pg_proc OIDs are common enough that there's a special
  mechanism to create the necessary #define's automatically: see
! backend/utils/Gen_fmgrtab.pl.  Similarly (but, for historical reasons, not
! done the same way), there's an automatic method for creating #define's
! for pg_type OIDs.  We also have standard conventions for setting up #define's
! for the pg_class OIDs of system catalogs and indexes.  For all the other
! system catalogs, you have to manually specify any #define's you need, via
! oid_symbol entries.
  
  - If you need to find a valid OID for a new predefined tuple, use the
  script src/include/catalog/unused_oids.  It generates inclusive ranges of
*************** script src/include/catalog/unused_oids. 
*** 102,111 ****
  not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
  assignment; the unused_oids script simply looks through the include/catalog
  headers and .dat files to see which ones do not appear.
! (As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
! You can use the duplicate_oids script to check for mistakes.  This script
! is also run at compile time, and will stop the build if a duplicate is
! found.
  
  - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
  table that requires OIDs, but no OID was preassigned by an "OID =" clause,
--- 111,119 ----
  not been allocated yet).  Currently, OIDs 1-9999 are reserved for manual
  assignment; the unused_oids script simply looks through the include/catalog
  headers and .dat files to see which ones do not appear.
! You can also use the duplicate_oids script to check for mistakes.
! (This script is run automatically at compile time, and will stop the build
! if a duplicate is found.)
  
  - The OID counter starts at 10000 at bootstrap.  If a catalog row is in a
  table that requires OIDs, but no OID was preassigned by an "OID =" clause,
*************** the tables are in place, and toasting.h 
*** 134,144 ****
  (or at least after all the tables that need toast tables).  There are
  reputedly some other order dependencies in the .bki list, too.
  
! -Client code should not include the catalog headers directly.  Instead, it
! should include the corresponding generated pg_*_d.h header.  If you want
! macros or other code in the catalog headers to be visible to clients, use
! the undefined macro EXPOSE_TO_CLIENT_CODE to instruct genbki.pl to copy
! that section to the pg_*_d.h header.
  
  -----------------------------------------------------------------
  
--- 142,155 ----
  (or at least after all the tables that need toast tables).  There are
  reputedly some other order dependencies in the .bki list, too.
  
! - Frontend code should not include any pg_XXX.h header directly, as these
! files may contain C code that won't compile outside the backend.  Instead,
! frontend code may include the corresponding generated pg_*_d.h header, which
! will contain OID #defines and any other data that might be of use on the
! client side.  If you want macros or other code in a catalog header to be
! visible to frontend code, write "#ifdef EXPOSE_TO_CLIENT_CODE" ... "#endif"
! around that section to instruct genbki.pl to copy that section to the
! pg_*_d.h header.
  
  -----------------------------------------------------------------
  
*************** piece of code will likely perform "typet
*** 155,163 ****
  random errors or even segmentation violations.  Hence, do NOT insert
  catalog tuples that contain NULL attributes except in their
  variable-length portions!  (The bootstrapping code is fairly good about
! marking NOT NULL each of the columns that can legally be referenced via
! C struct declarations ... but those markings won't be enforced against
! insert commands, so you must get it right in the data files.)
  
  - Modification of the catalogs must be performed with the proper
  updating of catalog indexes!  That is, most catalogs have indexes
--- 166,176 ----
  random errors or even segmentation violations.  Hence, do NOT insert
  catalog tuples that contain NULL attributes except in their
  variable-length portions!  (The bootstrapping code is fairly good about
! automatically marking NOT NULL each of the columns that can legally be
! referenced via C struct declarations, and it can be helped along with
! BKI_FORCE_NOT_NULL and BKI_FORCE_NULL annotations where needed.  But
! attnotnull constraints are only enforced in the executor, not against
! tuples that are generated by random C code.)
  
  - Modification of the catalogs must be performed with the proper
  updating of catalog indexes!  That is, most catalogs have indexes
*************** method calls to insert new or modified t
*** 167,170 ****
  also make the calls to insert the tuple into ALL of its indexes!  If
  not, the new tuple will generally be "invisible" to the system because
  most of the accesses to the catalogs in question will be through the
! associated indexes.
--- 180,185 ----
  also make the calls to insert the tuple into ALL of its indexes!  If
  not, the new tuple will generally be "invisible" to the system because
  most of the accesses to the catalogs in question will be through the
! associated indexes.  Current practice is to always use CatalogTupleInsert,
! CatalogTupleUpdate, CatalogTupleDelete, or one of their sibling functions
! when updating the system catalogs, so that this is handled automatically.
diff --git a/src/common/Makefile b/src/common/Makefile
index f28c136..80e78d7 100644
*** a/src/common/Makefile
--- b/src/common/Makefile
*************** libpgcommon_srv.a: $(OBJS_SRV)
*** 88,95 ****
  %_srv.o: %.c %.o
  	$(CC) $(CFLAGS) $(subst -DFRONTEND ,, $(CPPFLAGS)) -c $< -o $@
  
- $(OBJS_COMMON): | submake-generated-headers
- 
  $(OBJS_SRV): | submake-errcodes
  
  .PHONY: submake-errcodes
--- 88,93 ----
diff --git a/src/include/Makefile b/src/include/Makefile
index 7fe4d45..59e18c7 100644
*** a/src/include/Makefile
--- b/src/include/Makefile
*************** install: all installdirs
*** 54,60 ****
  	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$dir/*.h  || exit; \
  	done
  ifeq ($(vpath_build),yes)
! 	for file in dynloader.h catalog/schemapg.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \
  	  cp $$file '$(DESTDIR)$(includedir_server)'/$$file || exit; \
  	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$file || exit; \
  	done
--- 54,60 ----
  	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$dir/*.h  || exit; \
  	done
  ifeq ($(vpath_build),yes)
! 	for file in dynloader.h catalog/schemapg.h catalog/pg_*_d.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \
  	  cp $$file '$(DESTDIR)$(includedir_server)'/$$file || exit; \
  	  chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$file || exit; \
  	done
*************** uninstall:
*** 73,79 ****
  
  
  clean:
! 	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h catalog/pg_*_d.h
  
  distclean maintainer-clean: clean
  	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
--- 73,81 ----
  
  
  clean:
! 	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h
! 	rm -f parser/gram.h storage/lwlocknames.h utils/probes.h
! 	rm -f catalog/schemapg.h catalog/pg_*_d.h catalog/header-stamp
  
  distclean maintainer-clean: clean
  	rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
index dfd5616..6c8da54 100644
*** a/src/include/catalog/.gitignore
--- b/src/include/catalog/.gitignore
***************
*** 1,2 ****
--- 1,3 ----
  /schemapg.h
  /pg_*_d.h
+ /header-stamp
#48John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#47)
Re: WIP: a way forward on bootstrap data

On 3/21/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

John Naylor <jcnaylor@gmail.com> writes:

[ v11-bootstrap-data-conversion.tar.gz ]

I've done a round of review work on this, focusing on the Makefile
infrastructure. I found a bunch of problems with parallel builds and
VPATH builds, which are addressed in the attached incremental patch.

[explanation of Make issues and stamp files]

In the attached, I've also done some more work on the README file
and cleaned up a few other little things.

Thanks for pulling my attempt at makefile hackery across the finish
line. It sounds like there are no more obvious structural issues
remaining (fingers crossed). Your other improvements make sense.

I did note a bit of distressing inconsistency in the formatting of
the catalog struct declarations, some of which predates this patch but it
seems like you've introduced more. I think what we ought to standardize
on is a format similar to this in pg_opclass.h:

CATALOG(pg_opclass,2616)
{
/* index access method opclass is for */
Oid opcmethod BKI_LOOKUP(pg_am);

[snip]

That is the most sensible format. Did you mean all 62 catalog headers
for future-proofing, or just the ones with annotations now?

The former convention used in some places, of field descriptions in
same-line comments, clearly won't work anymore if we're sticking
BKI_DEFAULT annotations there.

Yeah.

I also don't like the format used in, eg,
pg_aggregate.h of putting field descriptions in a separate comment block
before the struct proper. Bitter experience has shown that there are a
lot of people on this project who won't update comments that are more than
about two lines away from the code they change; so the style in
pg_aggregate.h is just inviting maintenance oversights.

Okay.

I've got mixed feelings about the whitespace lines between fields. They
seem like they are mostly bulking up the code and we could do without 'em.
On the other hand, pgindent will insist on putting one before any
multi-line field comment, and so that would create inconsistent formatting
if we don't use 'em elsewhere. Thoughts?

I'll do it both ways for one header and post the results for people to look at.

Speaking of pgindent, those prettily aligned BKI annotations are a waste
of effort, because when pgindent gets done with the code it will look
like

[snip]

regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);

I'm not sure if there's anything much to be done about this. BKI_DEFAULT
isn't so bad, but additional annotations get unreadable fast. Maybe
BKI_LOOKUP was a bad idea after all, and we should just invent more
Oid-equivalent typedef names.

Well, until version 7, I used "fake" type aliases that only genbki.pl
could see. The C compiler and postgres.bki could only see the actual
Oid/oid type. Perhaps it was a mistake to model their appearance after
regproc (regtype, etc), because that was misleading. Maybe something
more obviously transient like 'lookup_typeoid? I'm leaning towards
this idea.

Another possibility is to teach the pgindent pre_/post_indent
functions to preserve annotation formatting, but I'd rather not add
yet another regex to that script. Plus, over the next 10+ years, I
could see people adding several more BKI_* macros, leading to
readability issues regardless of formatting, so maybe we should nip
this one in the bud.

The attached is just one incremental patch on top of your v11 series.
I couldn't think of an easy way to migrate the changes back into the
most relevant diffs of your series, so I didn't try.

I've done that quite a few times while developing this patch series,
so I'm used to it. I'll incorporate your changes soon and also rebase
over the new pg_class column that landed recently. I'll have a new
version by this weekend, assuming we conclude the formatting
discussion, so if you or others have any more comments by then, I'll
include them.

-John Naylor

#49Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#48)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 3/21/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);

I'm not sure if there's anything much to be done about this. BKI_DEFAULT
isn't so bad, but additional annotations get unreadable fast. Maybe
BKI_LOOKUP was a bad idea after all, and we should just invent more
Oid-equivalent typedef names.

Well, until version 7, I used "fake" type aliases that only genbki.pl
could see. The C compiler and postgres.bki could only see the actual
Oid/oid type. Perhaps it was a mistake to model their appearance after
regproc (regtype, etc), because that was misleading. Maybe something
more obviously transient like 'lookup_typeoid? I'm leaning towards
this idea.

Looking at this again, I think a big chunk of the readability problem here
is just from the fact that we have long, similar-looking lines tightly
packed. If it were reformatted to have comment lines and whitespace
between, it might not look nearly as bad.

Another possibility is to teach the pgindent pre_/post_indent
functions to preserve annotation formatting, but I'd rather not add
yet another regex to that script. Plus, over the next 10+ years, I
could see people adding several more BKI_* macros, leading to
readability issues regardless of formatting, so maybe we should nip
this one in the bud.

Well, whether or not we invent BKI_LOOKUP, the need for other kinds
of annotations isn't likely to be lessened.

I wondered whether we could somehow convert the format into multiple
lines, say

regproc aggmfinalfn
BKI_DEFAULT(-)
BKI_LOOKUP(pg_proc);

but some quick experimentation was discouraging: either Emacs' C
syntax mode, or pgindent, or both would make a hash of it. It
wasn't great from the vertical-space-consumption standpoint either.

Anyway, for the moment I'd stick with BKI_LOOKUP rather than undoing
that work. I think it's a more transparent way of saying what we
want than the magic-OID-typedefs approach. The formatting issue is
just a mild annoyance, and it's not really BKI_LOOKUP's fault anyway.

While I'm thinking of it --- I noticed one or two places where you
had "BKI_DEFAULT(\0)". That coding scares me a bit --- gcc seems to
tolerate it, but other C compilers might feel that \0 is not a valid
preprocessing token, or it might confuse some editors' syntax highlight
rules. I'd rather write cases like this as "BKI_DEFAULT('\0')". IOW,
the argument should be a valid C identifier, number, or string literal.

regards, tom lane

#50John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#48)
2 attachment(s)
Re: WIP: a way forward on bootstrap data

I wrote:

On 3/21/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I've got mixed feelings about the whitespace lines between fields. They
seem like they are mostly bulking up the code and we could do without
'em.
On the other hand, pgindent will insist on putting one before any
multi-line field comment, and so that would create inconsistent
formatting
if we don't use 'em elsewhere. Thoughts?

I'll do it both ways for one header and post the results for people to look
at.

I've attached an earlier version of pg_proc.h with both formats as I
understand them. I turned a couple comments into multi-line comments
to demonstrate. I think without spaces it's just as hard to read as
with multiple annotations. I'd vote for spaces, but then again I'm not
the one who has to read these things very often.

-John Naylor

Attachments:

pg_proc_format_withspace.htext/x-chdr; charset=US-ASCII; name=pg_proc_format_withspace.hDownload
pg_proc_format_nospace.htext/x-chdr; charset=US-ASCII; name=pg_proc_format_nospace.hDownload
#51John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#49)
Re: WIP: a way forward on bootstrap data

On 3/22/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Looking at this again, I think a big chunk of the readability problem here
is just from the fact that we have long, similar-looking lines tightly
packed. If it were reformatted to have comment lines and whitespace
between, it might not look nearly as bad.

...

Anyway, for the moment I'd stick with BKI_LOOKUP rather than undoing
that work. I think it's a more transparent way of saying what we
want than the magic-OID-typedefs approach. The formatting issue is
just a mild annoyance, and it's not really BKI_LOOKUP's fault anyway.

Okay, I'll do it with comments and whitespace.

While I'm thinking of it --- I noticed one or two places where you
had "BKI_DEFAULT(\0)". That coding scares me a bit --- gcc seems to
tolerate it, but other C compilers might feel that \0 is not a valid
preprocessing token, or it might confuse some editors' syntax highlight
rules. I'd rather write cases like this as "BKI_DEFAULT('\0')". IOW,
the argument should be a valid C identifier, number, or string literal.

Hmm, I only see this octal in pg_type.h

char typdelim BKI_DEFAULT(\054);

Which I hope is fine. Were you thinking of this comment in
pg_attribute.h? We use the double-quoted empty string for postgres.bki
and change it to '\0' for schemapg.h.

/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
char attidentity BKI_DEFAULT("");

-John Naylor

#52Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: John Naylor (#50)
Re: WIP: a way forward on bootstrap data

John Naylor wrote:

I've attached an earlier version of pg_proc.h with both formats as I
understand them. I turned a couple comments into multi-line comments
to demonstrate. I think without spaces it's just as hard to read as
with multiple annotations. I'd vote for spaces, but then again I'm not
the one who has to read these things very often.

how about letting the line go long, with the comment at the right of
each definition, with one blank line between struct members, as in the
sample below? You normally don't care that these lines are too long
since you seldom edit them -- one mostly adds or remove entire lines
instead, so there's not as much need for side-by-side diffs as with
regular code. (One issue with this proposal is how to convince pgindent
to leave the long lines alone.)

To me, an important property of these structs is fitting as much as
possible (vertically) in a screenful; the other proposed modes end up
with too many lines.

CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
{
NameData proname; /* procedure name */

Oid pronamespace BKI_DEFAULT(PGNSP); /* OID of namespace containing this proc */

Oid proowner BKI_DEFAULT(PGUID); /* procedure owner */

Oid prolang BKI_DEFAULT(12); /* OID of pg_language entry */

float4 procost BKI_DEFAULT(1); /* estimated execution cost */

float4 prorows BKI_DEFAULT(0); /* estimated # of rows out (if proretset) */

Oid provariadic BKI_DEFAULT(0); /* element type of variadic array, or 0 */

regproc protransform BKI_DEFAULT(0); /* transforms calls to it during planning */

bool proisagg BKI_DEFAULT(f); /* is it an aggregate? */

bool proiswindow BKI_DEFAULT(f); /* is it a window function? */

bool prosecdef BKI_DEFAULT(f); /* security definer */

bool proleakproof BKI_DEFAULT(f); /* is it a leak-proof function? */

bool proisstrict BKI_DEFAULT(f); /* strict with respect to NULLs? */

bool proretset BKI_DEFAULT(f); /* returns a set? */

char provolatile BKI_DEFAULT(v); /* see PROVOLATILE_ categories below */

char proparallel BKI_DEFAULT(u); /* see PROPARALLEL_ categories below */

int16 pronargs; /* number of arguments */

int16 pronargdefaults BKI_DEFAULT(0); /* number of arguments with defaults */

Oid prorettype; /* OID of result type */

/*
* variable-length fields start here, but we allow direct access to
* proargtypes
*/

oidvector proargtypes; /* parameter types (excludes OUT params) */

#ifdef CATALOG_VARLEN

Oid proallargtypes[1] BKI_DEFAULT(_null_); /* all param types (NULL if IN only) */

char proargmodes[1] BKI_DEFAULT(_null_); /* parameter modes (NULL if IN only) */

text proargnames[1] BKI_DEFAULT(_null_); /* parameter names (NULL if no names) */

pg_node_tree proargdefaults BKI_DEFAULT(_null_); /* list of expression trees for argument defaults (NULL if none) */

Oid protrftypes[1] BKI_DEFAULT(_null_); /* types for which to apply transforms */

text prosrc BKI_FORCE_NOT_NULL; /* procedure source text */

text probin BKI_DEFAULT(_null_); /* secondary procedure info (can be NULL) */

text proconfig[1] BKI_DEFAULT(_null_); /* procedure-local GUC settings */

aclitem proacl[1] BKI_DEFAULT(_null_); /* access permissions */
#endif
} FormData_pg_proc;

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#53Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#51)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 3/22/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

While I'm thinking of it --- I noticed one or two places where you
had "BKI_DEFAULT(\0)".

Hmm, I only see this octal in pg_type.h
char typdelim BKI_DEFAULT(\054);

Sorry, I was going by memory rather than looking at the code.

Which I hope is fine.

I don't really think it's legal C; I'd rather write BKI_DEFAULT('\054').

Were you thinking of this comment in
pg_attribute.h? We use the double-quoted empty string for postgres.bki
and change it to '\0' for schemapg.h.

/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
char attidentity BKI_DEFAULT("");

That definitely seems like a hack --- why not BKI_DEFAULT('\0') ?

regards, tom lane

#54Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#50)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 3/21/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I've got mixed feelings about the whitespace lines between fields.

I've attached an earlier version of pg_proc.h with both formats as I
understand them. I turned a couple comments into multi-line comments
to demonstrate. I think without spaces it's just as hard to read as
with multiple annotations. I'd vote for spaces, but then again I'm not
the one who has to read these things very often.

Yeah, after looking at this example I agree --- it's too tight without
the blank lines.

regards, tom lane

#55Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#52)
Re: WIP: a way forward on bootstrap data

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

how about letting the line go long, with the comment at the right of
each definition, with one blank line between struct members, as in the
sample below?

NameData proname; /* procedure name */

Oid pronamespace BKI_DEFAULT(PGNSP); /* OID of namespace containing this proc */

Oid proowner BKI_DEFAULT(PGUID); /* procedure owner */

I don't think this is going to work: pgindent is going to wrap most of
these comments, ending up with something that's ugly *and* consumes
just as much vertical space as if we'd given the comments their own
lines. The problem is that in the headers where we were using
same-line comments, the comments were written to fit in the space
available without this extra annotation. (For my money, having spent
lots of time shaving a character or two off such comments to make 'em
fit, I'd much prefer the luxury of having a whole line to write in.)

We could go with some scheme that preserves the old formatting of the
struct definition proper and puts the added info somewhere else, ie

Oid pronamespace; /* OID of namespace containing this proc */

Oid prolang; /* OID of pg_language entry */

then after the struct:

BKI_DEFAULT(pronamespace, PGNSP);
BKI_DEFAULT(prolang, 12);

but on the whole I don't think that's an improvement. I'd rather keep
the info about a field together.

regards, tom lane

#56John Naylor
jcnaylor@gmail.com
In reply to: Alvaro Herrera (#52)
Re: WIP: a way forward on bootstrap data

On 3/22/18, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

how about letting the line go long, with the comment at the right of
each definition, with one blank line between struct members, as in the
sample below? You normally don't care that these lines are too long
since you seldom edit them -- one mostly adds or remove entire lines
instead, so there's not as much need for side-by-side diffs as with
regular code. (One issue with this proposal is how to convince pgindent
to leave the long lines alone.)

Yeah, it seems when perltidy or pgindent mangle things badly, it's to
try and shoehorn a long line into a smaller number of characters. If
memory serves, I've come across things like this:

pg_node_tree proargdefaults BKI_DEFAULT(_null_); /* list of expression

trees for argument

defaults (NULL if none) */

And thought "only a machine could be so precisely awkward"

-John Naylor

#57John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#53)
Re: WIP: a way forward on bootstrap data

On 3/22/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I don't really think it's legal C; I'd rather write BKI_DEFAULT('\054').

Okay, I'll do that.

Were you thinking of this comment in
pg_attribute.h? We use the double-quoted empty string for postgres.bki
and change it to '\0' for schemapg.h.

/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
char attidentity BKI_DEFAULT("");

That definitely seems like a hack --- why not BKI_DEFAULT('\0') ?

Hmm, yes, the way I had it, the comment is a mystery. I'll switch it around.

-John Naylor

#58John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#47)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 3/21/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

The attached is just one incremental patch on top of your v11 series.
I couldn't think of an easy way to migrate the changes back into the
most relevant diffs of your series, so I didn't try.

I've applied your changes to the v12 patch series (attached), but I
hope you'll allow two nit-picky adjustments:

-s/pg_XXX.h/pg_xxx.h/ in the README. There seems to be greater
precedent for the lower-case spelling if the rest of the word is lower
case.
-I shortened the data example in the README so it would comfortably
fit on two lines. Spreading it out over three lines doesn't match
what's in the data files. It's valid syntax, but real data is
formatted to at most two lines (See rewrite_dat.pl. Hmm, maybe I
should make that more explicit elsewhere in the README)

I also have not spent much time yet looking at the end-product .h and .dat
files. I did note a bit of distressing inconsistency in the formatting of
the catalog struct declarations, some of which predates this patch but it
seems like you've introduced more. I think what we ought to standardize
on is a format similar to this in pg_opclass.h:

CATALOG(pg_opclass,2616)
{
/* index access method opclass is for */
Oid opcmethod BKI_LOOKUP(pg_am);

Done, with blank lines interspersed. I put most changes of this sort
in with the other cleanups in patch 0004. I neglected to do this
separately for couple of tiny tables that have lookups, but no default
values. I don't think it impacts the readability of patch 0007 much.

On 3/22/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I don't really think it's legal C; I'd rather write BKI_DEFAULT('\054').

[snip]

/* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */
char attidentity BKI_DEFAULT("");

That definitely seems like a hack --- why not BKI_DEFAULT('\0') ?

Done (patch 0006).

Other changes:
-A README note about OID macros (patch 0007).
-A couple minor cosmetic rearrangements and comment/commit message edits.

Open items:
-Test MSVC.
-Arrange for rewrite_dat.pl to run when perltidy does.
-I was a bit cavalier about when to use =/:= in the Makefiles. Not
sure if there's a preferred project style for when the choice doesn't
really matter.
-Maybe document examples of how to do bulk-editing of data files?

-John Naylor

Attachments:

v12-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v12-bootstrap-data-conversion.tar.gzDownload
���Z�}y���������y��C�+s�2��F�����x��b���ee���[Gw�q�d���'��������������7��z����,lsU���7�9����Y�~�\�������.��*�kk3�n�����6���^�������V�e4Z�N������z����������������AW��������i0uC��w��{�]���2��5�L�~�����;V�1������2gf�l�M���2�������3��F�s�<3���qf�-\����������t5 �ov^!=3���b4��k������h>k�5{F����w�6���V�����x|���h���
�M�h��4�6
I�;;��X{�{�����	��=��}�@��xNe��v�zK��/����!"D>]��w��Y�~�8hO��g+��p7V�^������������t������0��z��k�������`�����q�,�9�K�>��h���r3p��o���K[Lti�K������m����7l�w������Z��d0
��>uP ��Jz�Z���g:+k����������^M�9�#����}���,���Y]'kb���z���y}���8s7�z�f�(��v�.�z�Mf5�t�)5�i�AJa���,��V���#��a�f�<^g���m����2��z��f���S���H{��z�,m���~Z��No�����^ua�~*e�rb���4�����3�U��X��S�=�f�A�W������~l��~6�x����vhl��e2���Y�Z�Mb{��9���*u�[���}�s���@��������r�:��A�M�-��m/D�;����^%�/�@������qr����fs���|�{�u�eJ*Y�faG��Y��q�0������6�$}f���r�	l���8?43E����:���[�����:���Q����e,�|+si�k����I��:U�A�N?s�p�������DZ������\:����f/�������$�;?�E`/A9�mM�����b�n��\���y�^o��Jl�����x�B���< �8�vH�^��\^w7W,{�-pg�����oRz����Rz�8�Q���J�KN?e=���D�I����Q!���yIl8E��Qs�;���#��di�#���=B��c%��"�@����&����S�5�v_(�[�n��8-���#{
t���Jg ��
���b�[]8_B{tp�/T@-N���?Uvv��fT��pB53Y������A����f�6����	;c��n�.���6�����*pB������xj�B�Q2�K�����3C �Y��	���������!PG���a��������8�s����}�B>�W�d���||5�<� +�b�$88����;�D�pp>����i]��+cj�1{zGp'x�^C�W#�c:z����7c��g[�����M�DG�<�O7�bF����b���<�b6�\���3�Z�v�����-��p��j�1����p|y:<�1v��O�6���/�pa�}���aPYs�jZ06L5�1�V�IE�he��`��5N*�������K�c_�&IaX�6!��W�����*��
�+w�o���{�s��>�:�$�B�W�T�Lx�7��y���H_��p^agsYW�s�3V ��7�
f�z��n���j(�3�DB<�f&�3��uf�	Wo���){����2��~T�H�fML�����8|J����Dt��� 9���u�=����C�T���d�#�Y~F��O2D�I��;H��^�$�+299=�NFg/�?���^�QW��)!�����/o�(�fb6����	��7�zD��7g�|����N?1@��&�P��"�?�MPt �w>P���`wY�"����)P@`�o����K�=?.����������8q�w�����u���[E�s ������r�N����p�h
5^z�fM�m4*�Z4���b�+0M�g����
�?��-������Y��� <��S`Q�Y���3%7i�Fm����
�F+x����mvjc��8��)�������5��5������DH�J��&��&e��9��J��h�X��dk
Ri�����n��%n���n���f�Zptl���W��%j
������$��u'���\Vy,�;JX�_*�o������2�M���,�h�VV^m�3P���������,�m�����m�(}wp7,�H�0��>�_������?�����  �K��u���t[	X�S��-������%�=�Ja��N�B�Bt�f8o*4iX�".�B��e�P�������~�ehu]
�
8)��z�p9d���j���
����3q�74�k��
�f�6���N7��z�+�E��a���Mg~X���7nol�N�4	^#Jl��l��,�����]#��k9���7C���S�4���L'�`/��>5v�W�f�6�J%�Kn���*<���,�����l�	���K����	�	<�.)T(T����<���k�g��������7��:�lG��Jn��g3R:���C���fh
��qo�'H}3�`��(�:�:3��p�c��S�CC���:P�OXR���N�Q�k�`d�Jr�Q���]0*��Rb�QHS�����dT��o))��l��f�0��jk
������*��L��;Pi���h�'%Q/���*q��m[��b���}�0F9u�E)���2�2
�����j��v��{]�2
m�����������c�w�"�
���E%�Z�Rt�M���.���HG�l���.������3OZ���$-������0,��q��@������s� ����mG��'��->aM�1>������nW:M8mw�d�T���:�S�Cn�/_�>1�����������C��=/
�rx�b����`�n��8J������������b��xM�v(������f�X���*�a��U�����u��o.�_se��8�S;tY�<�v�V4�������>������Bj����6�������0uP-Ba���(s�=-��'~��	n����Z���B�}�3���H�
�������*�k�t������u��n��|p�cl	����	������xX��,}������(8�w�n�U���S���3
.s���3������`��%�h�,n\~Q�?�+b�[���J�b�+5�I�T��4f.�oL��whYO���k	;�������\�����.����K�k��;w�	gz�zW���,��VeD;�4������x�k���Z:3�6n9%s�F�#���X@���������^�����R/[�^���T�z���p�����
M\,u�+oo��������/��VV(��H�[��h�!�V�['��6Hp�o�KmgGl�#:w��_H��9{�*(������n���!��/��p����<_����x�G�����������]�eA��*(��	9C c����������~�Y/*�	C��'�L�O����]��'��8�XvfP,�EP"�5�~��l��t#�����Rg"���m�c�l�7S���j�4xP3����K�.^!�:69����O�<�O�;�tP��;�Js�&��5
����<����,�����_�9
fTR���I`���-	�m�uu�g��|��cg�.�"i�YGI�-�oP�@@����6�Wi��l0�z�����-��T5��l����=Th�l�m����p��^k��d��Uc������n48�%3�����j���
��N���Z��E���$�#X�r�������T*�cH[�r*���{�/�����.|9F/z��_NR���{-|*�$�d��b.@��m��$��ix&e��^i��8��0O�F��/��R^`���I8L�l/(D���F��3u�H��g�4,��.�9+�P�)��������v@_�������@;?�z?��6��3�L�,6�8�R�~o[�B�|��A�X�,2D�4@�D1D�L�T�W���B�U>]��@V�,s�&��^���L�d���}�T�-
��%�a��l_������B��@���4��[,��A�� ��`��e�f^Nq+�������Z�Y��em%M�]l-s�mE�M/��l�k3@W�l���Z�+�.k��x��J����
Y��p��uz���l�E3���W�-���<0�A(���~#;�����)����X�$�S~D���i@�Z�[lR��p����U��(M�?'����?�[�j��C��V��&��'�"#C�i��,������O�l���L��2�G�H�����0���H�kt�N'CQ�`���f�
��O���?�R�r<k��9��U
F8����Wl+B�O�g�K�j�
0:�,�M�����������w��ok)!�ZzuQ%�_7�l�\���0	}(2���:���8�
�Un���;
q���i}����9Y)���K�xpk���Y��kx~�E1���L����������O��"�%H|����g��"T��v!c���}�B��~b8��6�*�vV�*qzL+��x�hh��(���O���bm��_�p���[Kr�r����AqJ���b��"=�������E NS�U$k3����e��U�)��u�b@�{������#k	����!6Zd�m��W�-�����\0���w!�{6�wk�V�3m�����[�y� `�o0q��?����<�B���:��m�1"~	AsH�BK��M��r�f�V*�\�a`#c�;��T��/�p(7���||��{���,���YO�z�����V�������> e^F����B������@x��l�O��
U�n�����[��&~y�`+�6��D\d2��s�����>:��}����S)k�NM|�&l�9��}@o�z�,�5�����A&���R;���0�5��3Y�7<������cO�������Z��@3|F��
Y�+��Y��s��!���J����E���<?��z���m��$�P��f��LP�Ls����)x
I�����T<�������r���=F�E�|_�O������e%1�<�d�Fg���[����{��khr�Aj���p��+�)�@�����a���6q���-%�nf�.%�@�����[��
�^��
@K+7:^����@t�EqWEH�f�0����dj��4��a&.p����#g�1q@�S�XvMX��.���B-V~JSde��R�2��l��g��h63��l�k%>�"����OU��t����LE[MK	V�x<�=3NF/�g�������_��*����<��?M^�?~s:6�f���������.;#pB\�v�j�Aw1{��+$����%vV�����B��mw=������E�����cm�W�������|����G��)4��El�$k����:�n��M����f#���@�u�0e���C�>��(��9soi���5�
��B�����w�[C]�C"��-b�f!��s��
����������eh4���@���*���f#��J�z�{s��6@��R�� K���&m�����+��k����r���(g���A0&�09������gd��7�|�9�=z���0������!���-����&����6����o.���G�V�gHX*��V$|n##6N��\/�\
/G/J������t8y}~6�_�J�V���^���N���������P�~�\�r!?;�^�7�j��5m��B�S`���&Cv
�<�I�m��[L�����)����Z�"�ep�����e��Z+��
�c�pLN�5@a�%|�v?Y���$����&�{���^8�x����zA������M*��x�C���T�o2c\g�V<�����J�82�����9�
n�T��= 8���������(����n��vRt��?x!��b9o���|�������������r|�`;E&��2����������V�V�c�5��.��p�D���+
�*,%^S{���L����j)�`�A�Z�@m�g.�B"�f����k@��@n�R\��w)���5������0W������Fnpo��=m��P%!��-��U*suG���*,,	���6����Q�����;�����4"����T��~�`����7����
;:���I�m!v$��0x6�.Rx�Q��U�Ej�-�1v���
r�'���m����+1�W8Z�6f���e<�*]�y�����X9zFEw��]M��o|c4_`)=mb��1!��
Nu��Q����@(`5��r����`?EIA]�
�(��(����4$��r�a8?)x�����;�?U��8G��F.R�+c_����?�h;l�7�Q��57p�����J�@$�
�h�� C���x��U��{|0f�DY�t�["�����K�!uD-�Z���E��$�^>��aW���k�H�11�Wl��F�����E^��>��6,��:��fq���@%���0��8�._�cX8q����06��������Y�vN�IU~��q�]�\p������$pV�*������i���������� }����7�"tz�C@ N��;�!����"$��$� %���s��w�1�F�gJ�3�q���}c�w\z#���r��Q��RA����\c��a���(o��)�f��U���e�?8��\��'H?� Z�kJ��Q���jG��:�6C�1�7�s���r���6���������,���m����3��tMT�={/�1���M����0���a�+c�<�E�w^��m�p63gb��SB"��?�	/�>~8�<yu|�����0I�
�Rn�&{^!Q%$YnS�/>SK�t����	5�I������B5��L�_��;L��L��� O��A����j��������(���(��/@����?�c���k�6��s|�9��j�	��h���D9�Ix���)Q�����-j��jf�a����������P�*����xO����,�9G���=���T��A�py�&]�i�Xb�ca���e[����I�H{Qa�FG���;�^lA&%|���R��E�����<PF����l��b����2����gHG�1�~4-�c|$��\P1v����"�cy�!�~��������Rb���xt~����=��

|���zE�	�9{~
�{����l!����.?C y�e����S�u���n��d��&[^k�Y2[���
6.���/Hx7c��R�yz��E$x�]b�mvK�rV5!.?�	rYFYa>%(IN�?�D�����{���S�6E���k�?'��Ri���/��F?�A����@������K��R"o�T����A���t������rLK3�!XB(�=���5Z�Z��lY����$����2
2S�ip��L'��,���Ya]46��,W�5�-
���73R5��@��R%�,�?�&Ti���#p���0�����rE��+���}[�w��<?���T��Z��49s����3����'.��I+���r8z������%Q��<K.((!���y��j�~�>�����(��'�B�lI��D8)�D��SE��Q�J���w���iw>�����(�?�Q\7L<^Al���6bJ�B�Z�b;?�axy��Qa�|�����"�������j����7�5�
K����2���'$hL6���C���\����`��~���� +�k�|W���F������N�=�K"�f�8�M�h��d�$�<F��b(��$�hq;���ulUa5��+I��b�_��*t!`�V_*=��8.�����l���X�q��g���^I�H��������i-2e�&��4��z�^��z�~�W,�{Q���
�/�mD�>����������pZC�R���va)�m�Z�w����@��/Q�������VnB�)�hc�1`Z��m�n�l�KL.�x�-<����n���+nfW�[:�#(���Q�����,��GQ���\tc�fZ�Pw�~�7~��u��*��G�
(�%p?��J�\5V:���Y*��G�
���5��3�)�i�zE�A%,��G��U&a�]��T��r�!?�X��n�6!�O ���z����cI;�gK+:'�]�`'�3cm:�������>�KP,��{�/7@��8
�,A0�&�
}�B�������'��W����'�O���|�M�#���y�]������&��&H���b���)sAX�#C#�7��r�>?��m��7B��papB���RIu�� � ������I���+�������BW�eV����y����@���=3w���+
v��v3�7�v����a�G]i��'���W�Db��\��M"E=>U"U?�D�~.�T�,���$R��I��'H�3�������=Lp6�[}L(/���<l4l{�.�E���������r+hb$����PdT	e�-��m��&D{x�$�j���3�Ku"����2"�Q��w��@<Z�����1����B�9�2��C�
`�����3!nLr�<zBWM������a�&�d���^l�xu�%�X������$�C;
��3��C8�k(H�"A:��A+����TcT�h���7u`��Q�e���VT7B�_S�wU:�7Sg�~��v����O!�">|��� 8Ok7,��m��K�;�@�4�F�A������t��������N.G�{�����]��e��n�����Z���u��B�����/	���!��!Xl�O�z'=�4a��=��M?_����7L�5�O�����`�i������:�a6!)W�&��j��z�0�6������O1�X��X��fx`�U0��L������~cP�5�v�n?1T�r(�%�b����=�I>.�t\������x4�d��B��V7��K\2���e�j5�9�4��"��h�9D��
,�3$l�+���#GD���
��@�^mr�jm?��9�6T�)mW�e����Ns����������������~��xxv?�/X��^����^[en�����4��;�:�k�[�F1��-3���:eK�<�"�U)e���3i��"g�=J�L�s.�m�}1�������vv���>�6���$p�)M9��z������d�9��lJE�FJ��t��a0��z�Xl�8�B4#�@2��#�|����� (�����9�{^��f1�"QdR����%H�Lp�M���wYm������zd��a���N�IVhs���{i^a�!{�I�
*��4A���w���� ��N���m���h+�4<��/)[Y��M�#�\�����+���X��shGg�����U��,69Y�b��J��ng^oZ�Z��0gV��#����A�t�+
��T��K��|{1~����Tl7�P�A�@��6���l<\Y"�Q��fE�H���=�\,���;���~���x]�+#���WL��D5���kX@�n:U��D��Y�^�X�w�j3l�6�����2�����^�]$9��O����|C�����o0Q6����6��U|fcjW�KXW5���f���������q��J���G�/\����d,�#]��`%/p!��(��F����W�	��C�a4���C$B��\���"�<��:^��i�^��a�����m4�����0��y�i
a���h[f�y�y�������d�l\���A���4�����C�7:�G�7W�u�5���N�i���/):�,�?(��*N�������B�h��B����g����hf44��D����}�%��\,0�<��l��Ic���t��Z����,�X(�(�A��f�0_�(��DQ%_�P��
��,����������di&^]$j
^Pw���L;�Z�n�{S�����E�\�S���� |Um;(�/����m���~2�atmZ�*��'w�{
��`��
����dr���::X�(�����C�����2��T�:�;��`�jVC�S}J�>U�d������)������"F)<��dM�NQ�'g���W�'C�����1�zX<D�/�<?�h��&��,�R�=���un(w"e�5��{��7��i��d
�,C�@y�H@�D���)������������a����y�*������U��#,���9����,5t����S��
��<
"��KBi�|���G��+�:u���T��d�71��f����zSD���%?�	��::���?���dI����@YMK��S����6�ISnC����\:�;��
X����I�.�Ur(F'W�h���������^a�)�)b�p�������4e��X���[���+��y���s'�JWl���E�	���T9��z��kUN[aY3�d�������/Z9���^�u+'V\V.�r���o�@��%?�IO������"q^v�A_gn�^����"��$�d,5��&:�@��@FQ�l	��L��Uo�<����y�dN$��n����!#!,8���WV��Nd��Tkz=���x���~��y��N�f�EF�U���������������p89���H�F���t��O����$H+bEl��� �N�#)M�Ux�W{V`s
]8A@y�w�	g��@��FN&���<��f3��1)�H/���I�L�n]���@��
�@�+;��&0�I��|N���-+"��%�L���^3�b�~[�3L��Y���-']���
�q��x&�j�<�)�07�Ka>8	���O�����	�ew�a��"�go^/A�N,I'��/�5�k�;�`J"��1�G����__��o��������rt�g���Di+�GqdJT��-��me`�;����,X�=�o[�:������*Z��-5Ye�Y���"(e�~�~}w~qrz|u��;�#1��"a�����U�Tv>0g��g�%����2O-
*�����s��,(��FG�o:p<>�.|�i�(VsPi���;��x������z�3�h���WD�P�V��%^��"��/�Y��-���{��D���t/z��`�Z��5�HO��
������d������#��@�������x�]�����:���UC�=V����2�T��V�}u����$�QH�]��k���g�;lm��'����������)��H�+��E+o@�{�;�J'Q��H-�[Ac��%.�����������w9��S���i��T^�s�M��r�%���Y�^N��-5��^N���W���1v��R}9�2�~���	��\.����_�L�/''V}���L����$��lg��$��L����^��tP��W���'n�e��[!O��h"�T*5R �P�}�zP�#���c�8�c��;>�����:�;�m�K��B:���
�*�p������0N�Ei��_7�{sAq����.e%j�����	��1nt�Fm�#*�i�(O����e1D$-1�$
,q{�B�a6�pI�����L�����8��1�~'4"�@���(
���S���B�|fbU����~�{o�����^����h��X��>�M�L��"�S��\_��L�R�5�B�5�nD�|�p�X��^�]�|8���~��q��s�����n;��_��W3�����g�;�wu���i��&���^�����a��x3pD����92y�z�#�#���30�����6���//��8e������(i�K^���hy��R#��w����{����9.}�����NQ����C�M�h����g��{���YQ(���5��������A4�(���|���v�k8�s�R�1:�,fS����$���=�����t�iq�N�s8=�����|�EFj6��������'�/^\���O���c��Ptys��Lf~2\��p�"�.f4?H�b�\�yN3[���b�ze��BVo���������������4�D����i��.
��!z[�M��@�E�0y���n�W�W���.���.��8
F[�i<<�Yot��F�x����^uzWU?�}����V)��A���$~�"��p,����>_�P%�Za-���A
�=�,�G&6���B����,Q��R���^��l��+�66���3�]��x��MWn���sAC\��CqJ���d��
nGIR��D��fOO�������GgW��3|!���7�_��\N���G�����@����#h��Z���j��b�:�A��%���J�u�nEsG�,��tU����0m�����-�9���z�����o���!�
����M�ff����|���@�p�m=���]�-]o}�X5������e��#H��J}����
��������H��~?Q�*Is0�'�^���&N������p�����-U�����s���S�J���#���F2�<>{	Z��
���~{k��/o�OT'
����x<��v^9��x����Q�����������j��ynjXr�\������r`�������9mF����o����&���&��
l����<��I��lqr�ourJ�)��{9�V�\��Z������8���5��fy��y���l��a���4�I����L�7��r,�ch�S��v6.���H�H�
��O1�������B����t!���b�<��)Y�������`��������:�����j����[��qu�rt5�Po���8���F�?�z�g�(��Y~4�`ufu�;��Ogf��e|��-2�B�^���iju��7�=����^,����?����f!�Y�����(�]4(�A��=��������%����f2�3t�<��85$tL������<�E&[� NZ���m�j����R���p���3��To������D�+��/u��8__��oj���s�LaA�BLX�����j5{��L��S��- &K40D�>�y�f/!��������#�B�����,+�2��{���-Sc8�������������"�"���C12�H+t�5���va���u����u��������%��������J��:� �g�A7yFG��4��������	��W����uy���OC<��qu�j��x�����<����C�b`>�j�jv>�l�����/��#uD���&�KA����X��,����6l���D4`��|E�4h�t7 ���|����N�7=��9M�� JW/Xd!��S����'^�#A����e=�&�K����
�.@�;��m\\��yt�b���v�����7�#��m|�"�Y�Bp'R�y1�05�����)���	_��Y���Ut|vG�z�'�}���d?{sz��+�tK��`����>}�{7������N���@U��L���+__��O�U1��
f����"2����mX��@�'A���:47*Fk0
����=�B��T.'Y����d�r��XR8�g�X���\���������H����rB$(y��"����<]�"$�\�.��BX1����(��y^N���<./����S3����L�MF6��S$EA6��S�����s}9!#�*$X>^]	���g���U�(��Id9]�����0���}4P��1:_]���A_[Ky�2�]��{��
tE~CT�JI���-�����@��o��s��(�Ha�-���A�����������L�0>Y���/�QJ1��e�H������V������Ak��F���y[}���I�&������r��@����	90����p|���?��<��AP_x0�����2�im����xs5a��04���c� �����Nv�!�������/O�8+L�������6!��V�����e�j���z���)���o|�9�\nU��p����8xy-�mZ.�X��*�0;�m�<C��o!**o%�$dS9��8���N��k�5eP9�`��h��N�I$FD�\�v���U�f�[���F��z�I+���)~��xQ���S�t���

���2�q��}
>OT�a	�iF8���R�A���'9�kZ!�z~��=q���<&�&�z��.,d"@[a�\���	���o�Q������]Cm���FV�9�;�����hNf��+����Z^q�Lq$�
U�o���R����hr�[�����Cz��: �����os�8�p�*�pDZ|��]d�TH�1,N���I� KOp��Y�Pt����������G���1j0&�D�gLJ����]v��[�C�
�������{���1��j.��e E"��YU�_���%������a1��P	�h�EXX�W��ja���#��L�.�|�Qz����m%���z����yg�:���)��D��2�a�`	�oF�������6>��BW�'?�����"5�c�;�^)0U�w!:�2��+_��%�Sa��^�385��#,�j]
�j$�dUa���T/Z	�$�f��m�"�V=�S|K`��s�q�	W{K��CP%�w�{7�v�����%d� �[!%����p0�b�cs��bi��F���4��&R������v�Y�lz�{v~�������������	�:Q6����u��#��{�=�������}g@�L{7�7F&�F������E{
z%l�SPM��)[�@�*(�� 1������GC�D_,4��V�d�mt�1���/o�g'CMd�^@0���6B�=PDl�Q�L�Z?.��	��j�j<�3����������5����y��k3��-D��t;�>,�*�����l��g�S��U���������F���5h�uoU��������_u'}>E����6{A��-��%������F��2���c�5���5#����pd��L25c��U�O|l�\�v��r#������\��i��b�������.���Ew���?���:�qZ������
?�����iv������%]]T��|���I�EI]�R#�u��	����
���RO'� H�iz7�;	zq�������K��*�����5��NF#�=?|����z_A���3����,������Z�����*��P�-eZ�������;�E��O���eR�}O=[���w��k��
����z'U��;��
�?�@r�$d�dC��=g�:�����V�����
j�3�S��
�z�Uu�����:Efeq��j�9�g���S~mr|�S��:=�o�}�bO�eb�7Sz:�K
��Y5�'@������{��'9�dE&�H��b4 [��,D��
W`��)=@7�X<�JB������,b�^������$�x��`(f��Y-������G��
�[��;>�%��� ���4eC��Cq��KO�Tu��I��gMR4�%D/��0���6��g���S������wK�m���B��m��n�����,����Z�0����oW9��p�j��&�}�r�wJ1�F���V41�����R�����1r�L�����pu����I
�0|K�bm���t��4�vh+�)#��L�U�'�L��_�hn��xZ��_��
����a��(S���0	��v�w_o�������B�>�� M&K��L�s]�+ >���/���.�j�D�[����p:�9���:uTh�8�Ww������aE��"��=���i�tH��d������j�f���K�E����G��h�Go�<��{���� �0����jM�$��m����}�E +J3�at#*?�����a�(F:�Ng���Y�M{�FkZ�N$�L��@�$����b�����z�P0x�6����_2���+-���n��e�V�����+^�>�V��	'W��J�N;��K����Y���r�0��#��bN���]P�@����N��`��Y�{���/[T����^�Z�q;+�`M�$��x���\��ei������2_j�G�P�r$e�bzo?W��������x<:?��_�^�������[��~3�@�����9m���F���yO"�a8	��(�\��!�h���	\�)��I�
E�GS2%�KYd��p�� �|C�p���
�#n��=B�f.]�����Y�k������������I��G��)��0������)��d��z����=�j��B��a��'
�����s���R����"o��x,����U��H
�5[��
��+���D��13��ds$�^eq����#i�I�
�����
�"3!�����g
�b�J�3j��M���4@����;a:y�9cm:���d�����%�]��e{t��6g*�P��8��J�5�����p�h��������;etc#a�4� kNV����p8j}�w�_��Q~����Ey�Q:fJG_�m����*��j���d�P�d��Cy�0�����
	�\�'T�����U�������������������^�z1���(��"Z����j�2M����n�f��j���;��*w{���
���������n��h�m��~���O>�-s#���S��pR�'�������;������Np�;��������k$��.N�T�U��[N�WJJ�R��b�����}�T�Y��M�=�;��Ep���:�z7��2�u
����0U��b����<�Dg���I�IeX��f�W��5d4�;xy��A��,������J����k,}�U���nlc*�r7g�[�����[6CU��G����f�B����.$������������L�B���!�?�L�X"r&z�[U@����TP��^W'��2���0��8��f4 y(�X��������iw:��.
M���f�Yt���L������u#S,Ul��G�Lx/n�{�\��w�y�o�j�n�k���c��k�"�!@�X�F?):�����N�#�|2��o0��bJpKw6m�v�V�u���,vG���)�6����H����w��)x��O�
�@=�)B e�[�n�Vk6�������&�%4@��!}���C��H��:��7�6�������4k5�U��&�������
(WH2d\B����x�G�H��N�������Hp@���u���v�j3��h�y@�!<����5M`_0mRN�:���{�-`j9�K �)����&��Z$+HIi[�����
���p�W�����������Ks]�]P�lg��7��Z�5���A�~,+Pc[�@�����g_�NS�qMSx?g�1������+7������O�f�����!O�>��_c�s8�A/7zk:m�q�
���X��I�{������_:�v�s;�b5#<;��i,�%�?2*��
������A��h��/F'�{�'�9*����n��Y����v6+��
M�*�{������_:�v�Q[����aU����\6Y{�
����dB.��VE~U�VF�0~�8��^��c�����I�m���Y�M��F�_��(�(�oc)~����)oy����B�q2���1�#Yt���)���<����5�O��,|��;8_��K���ro
{,�����?3��C6�2L�)�!r��7�����V
����+Z]4q�:���H�3Yi4����0���0�+LCa��ya�=����a!-/�~�$k��[Nv�p:�x��H�����L�������iI|��+ �2��]�9i-����k|t�&�4�/�����>��������0X�>�s���m�@��Ya��0t��YU=K/n�;�%]L�u������Od�sE�����!��h����{S'�dn<��F�BhaECe�������
z��"��E�U�wI�A���U��������)��Ra����NG�e4�(��|	���\��c/#Y��o3��]�p�`qnMoF$�'�����M20��@DO�hU�D����dv�?����rd-��R�LS2�5�X60G$;�s�y�T�q�\�	�h�91�)��_��3d�D��!+`pvEm~�@�r����*���K���T����z�C�^D��B�o���L�gF�������e�{��(X�������?rH��X�"Tw`���Sel�1z2AR1����K�AR�� {�]P���J��U�&�Q�4gXIh��yB�K���Q�`;����?,��).���!����0��"LH[ o��p��x��
 y���<����������0�w��O?��X@�j]�j�����#Y����ww������
=�;&��}�������>�����}����#���{#�������Zi6cemQ������<?��f[/����FG��������s32�������D|���}o�U����JJ<b��!k������Xy���3���������S�EL�������XKtW]�?W�gX���l�?�>�o��2\�<;1�T�8���+|1���Nh�[�n#Z�/��g'��A��1�/^����~}|F3�j��OF�?�U�pK������{u�G�����+�����u-���������y�G����>��%M>D&�tt&��K��-$������1�B�>����9,�`�������V���l<����DF������?����LT�DY���T �~?�zE}���E��+`���_�@�2���34���A�9	���'0�4��z��x������XgPH_^���^�D����^TE�|,�u*�6L��J�a;)/��
=n��|r:_�F[�z���4:{��������J�7�m�D~8��K"�^�G��~S�����Vd���"5����/H�Dd�*�_.��#��������9"NC�J48=#
P��G�F`ID�%c��-\���.��zd�~����7�F���BX6bBl��o.���5�2��/���P�l��X��Q��'��WW�n'V�{�,���.���h��2�/�.�O$@��X���h�D��������;r��*&�&�Y��Z����G�*��K��i��R/kuu_�����'Y��C�\�J�V;R������c���u����m�9m�}Zb�5�7"�.��^�$�����`3s���P����-�w���������3(b�o)L���SN~�K�H��RQ�nP���(�5Q��#?C�0�>����
P�a�M_E:/�E�5��r?���T��
�3�.ze+S!��W���Q�����spN���W+4�#:�b�H�y��i>B���rV-N��M�F�8k���h�-�f�wc��B�%��;������>E���bh��fl�[>"h�ur~)t�f{/P�D���%vQ�����=2����5�^��6�z=yJ�)�V�������4B��t�����V��#�����3=o�p��N�2���Z3�����y���G�X��K��K�\b	\���m��@������L�c�L�ak(���D*d��
�~�{EoeP����x9�c���h,4�z��*h��C��{P�q��c'd�E�x����IK6k�8 $y6k�H��%,'�s�9l
���+*�C�+.������x�*40�
�4�q G���W���Md_�Uc�Y���;;�������7�U��-�.�?�)��K����W��6���^����5�^�h���N���3���V����gh;��sw@W��������y0������W8�����Y�A�1��;_}&1���WF&i���h��s��d��T-�4b ���4I;x*D���9���[���[��w�wt�0��G��	_)L�&h�_{{����1<	6k�O��Q��0C/KJi�2|P�ag���������/_�p���N	1��
��gTr�Su{�
������UvJ]Zo��H+T*|�)�_U�����^l��� �o���-���9�O�y`<�u(������Vy�d#�)i�z6Cl|8����8]W��������0_}
��=�P(����T{���=z�����������]��/L���C��!`m�����o5z��bTq�GK�Y���(^��I�=(J� g�h%�z=��S����W1�B.�_y�Ah�h\���Q\5����Bp��I�����,1x%W������s4�E�U?�fCdRY�}'���/t���0��?��)����v��m��i��3ikk��&��$�k���W�������Wz�
me��u�W��>��4C\���)�}��������p��t��@��������_�k;�TeTm�U���4mG��\���0y����U��Bh�&�ZU�~����Q������a�#�B�c�S,�	�#�m����!�RQ�����Q������/��";]18�yp���A�+�6�F��n�����=PT��1��E��k��E���YU'(�\��aT?3��a���W�����Eg�����0�Le��71�������MO=�zgF��<d8�x������� %�%N��`�XBT^B�	M���=XI�8d#��d��Y!'������j�Gq#����'�<��3h�Jj�0+���$I)Y���}�K���:�mg��T�iS�QZo�M�p����|������=s����h���	��R��{=����[18�@%��8?��]��$���b��%�����tx]������R�{X�.+���
����,������[(�?j�"�@_a����G�������#�4�6t%9�xS��%TP���������]�k��T�������8��	�����=�pR��>�K[3�G��h2#5�i�6
s/��V"^�r&�+RRHV8Ep8���V����I�m�@����~�0������I�����V�3	�7 ��6F�s�Jh�s�Z��lpy8"� -���J�G�v@]J�O���\�B�e�{��Y3���>��m��
��������Y
I�'��'�����e� ��=��6�]&���rx$�v�'��<i��G��=����@ b6���y$G&>�45cs�
u��6�+�d5��L��B�r��D��O`���"t�����2���z�L5XS6+!�P�/IL�(�/������pI���!O"��=_n��*"{) ��P���� ��?P��������=����>s�;�
����I�tp�J�G:�)nb�J��������^w���=�(������hGZ4�"s�B��:��8���"!e!ew���k	���X���^HK��B]LQ�m!���@�!��%Y��'DI+��@fRL������p#H�����p�2�J
�
����_��d��g��{�o��^S%VKh4�2xx��4G"S#�S=���7�7����d)X�A�������O��>�y���e�}���g�������j;;����J��kD���m������n�R8����4���!�9(���t�+���z�����&����J��+�)��v1c��=�a+��8���aX���q�D���
���q��I���X~�_����hv�1�o���=���������%����������%���aI�F(�/9M�~{�Y�+��/lF�����-9:'�F�/���h�4��Izg���]�.�P�oJ�w�����$��>�/k����5<t���+U�8L��|�,fDD���/m�H6�J�'�%��v���S?��g&�0���~,+wU�����k��8����3�`S�^�e��hk�e�P��|n�c���	iW���n�A�-��K;�q�X��e
��C���~���C������H=1'�h�o�
R�#-����b�������F�3�?�����W�C4��#�����#���l��f!�vr���1V�[����I����zn.��]b��z~�w���I����d=g��nh�QE����)����zOhr:o��������o���S�B�8H���p/���Q�����|�����?���+�v+�u5���b���[�����B�S?���^�+Z �[��"x�05{����79�5�eER)��A&��t<�8����dE�OCcA�(���i;�)�7rR�i���CG�W�b��w���>�1�$���W�j�)m-m�����:�48�$��
����JVH�w} ������n&��$_���p"�m�t�!.��V	��P�]T����P�x��:"����ZK�L@�5|U)���I���]����_>�i��5%�����W!F�o�
�@vAr��+*����m�-��F�w�Y���%7�T\�~L���"}~���Q���>�r�F�����&R��e�ed���o�D��V��Z��=mj���!F����g_����]�����w��]$#5P��$`�K���|s�O�����(����l���d�Q�;�����N�2������>�@�1AiC��J� 4N�lJ%M��T���Z�y���I�
=�(�5�)F��E*��okY��X�(`���%�[X�MIz�4����L��-+�J���E�8]d
[�c���CW*	ig����j+Vv+V:�B�Z��	��A��X� Y��}�1��v���
���'�OT�d�:q�!�Z����X��[�:vY��J����@�gM$��h����(�D,`r����������m]|�7�b�R�I���jby��,�����}w�Y������%($�6R�dYWt��Op�{��z��z��z�����Ju$�t��G���5�����'��m����gl�N����5;�z�����4��������RIk��yk�����\X}}����)h+�zu@i�#�**(�n���+�	���(8B���@�v���L�n,I���bs�	���Os\1�z�7s����]o�������"��������+��!l�t������5� F�
�:��5�j�\�B�Y1no����Ja�����v9����t����\�����u���2�?���������h�e�x����oTQ�2g3��0�6��<��<{6��3������-����DD�}��+���}�+�aA�g
Q��	z[�y"������/����7{��8�Edm����%��$����S��5�Mg��� *G��@��#E>z@���|��I���p@� �1���F��v[�g
�gt�G��;�Xr�+hP;����gioq��}q�U.-[���q_w889�qk�-�r=nP�^���������l�~����`�"��|W��
��D�2��]���� �������51���{Z:��M\:��'�z��Wx��wsA�Pg��������@�d:��:x�����@}E��k�g�����sjw�HX���FbV%�b�<,_����sD��T
<�Fj���+�|�����L��k�'�������|
����.}`d������x��6W�E>��L�9��H������)&�(�&�x�/mC!�GeT�h��t���e���&k����Z���?����+v�q7Se�J����.��oP+@�pU�QD��3<�*N��y���~���b_�M���qw���%hk�J��[�b�����?�����*����K�������_�G��;�+2�0&fA�#5�!l������3��6C��)��D3Tr,wfS�u�y��rr�FF�"*BK����\�
�(�) ;T
l#�&}�	VNN�<�(��_XRsg�q|n����7,~���"����zb�U����0�!���x(��("(9���M����D�y���x9�X����C�"��
���5�{�0�vJ������V3Q�V��v������,,�BzR�e��������ct)1�^F�?��?�����ux{�"G��(��J�$��2��X���3�nZ	�\�����clB�x�%uY��H_�mI{0n��Tsj���p�;x`�����k�f_��"�p"�8�-����<�[7E8��0��>E��i�u����P�G��D�)d#����!��q����p��h�?��R�v�[{�S����dZqq�.���'Y���aP���l������[��%���~��\��&�H�jc����o��f�����=������'�����;M��;��c�PY���wM���P�5W���~IT|�/��#�G�T���y�
~�r$5yu��q�9K�^'�)���+������Qj=	�X����T���T�v#^~��B����>9��1ZI����Ep�:c�b��������G[p,F�MNw�������~R����%��t���~��oWO�.���C��%��F��G6'��rHjIp�E��]-�(�cy��'f,)T�� Rz���W�%y;�.�v�������=s#s��;pN%��r�U�g�����K�0(�4,��]�	Y����#Zn�KqU����'}��f	��5N����D�������y����n�}�{>z��5r��Y���[��-�*>=�����yr�O����NP��s
���4a�Wj"}i���nE����X��l�I�xmGg3����
������u�H3~p����\m���!��zXJQk�������4�")����1�z��l�`[��m��k9���$��+C�*���_TGmU1�t��F>�#a�c��bM�:w���U�N=;���F����v*���	�2���cL�s2�_�^�^N(�P��8��fO��M.9�����/>�Y�(���9=�
�s"��X'��?���M�|�������"�������t�N��P{�"�"�|���U�I��k}��d i��
D�.I����!A�c�'�M'p>T��%���F&�6y���2�TJ��������kx�������5E��������
�G!�RR-�������>�K�,����h"�@�����o���[������D�N{�.0����	IMUG���(h�S5��%S"J�%���)+#]0����l�w���4��v>�&.
R�<��������91��+��~��s��K��di*t�������/
����r��A���D�d9��)p(����Y�~����X�s��������G��V%rw��v��A�������/�h ���j��-��P�������jR���o�Z�E����kmZ�h��D�6�d���������tG���Frx�\��@<�D���j1:����@�F��bvn��
'|�In��x��+|0��08|�m����;Bc 
u/8jK���v��c8��D�-j�*,e�5)1
�����9'[����9���5�W�������x6H���7�afm)y������������fT�>S���sMX�mU�u��Q�����aDM����:
�����vy��O86��Y���P��1��Cs{���uzL�&�	�a�&�����Xm����p"���49������-WU��*]j�Mv!�o>��z���u��������z�z����_���?������B��4���im�>�������4�k��||�o���0���
���
'���g���C�(�
��8����]~����m�rxq+�[�.v�9�gh[�Bb�bQl(`x��q����~��`�x8F�} 0;s'�Q6]����{5<~�lA�����IUy��e'�hR�,cd,s|J'?%����(�����x�_�Q���/�v�OzX��v.���D{:�����='��������o��/~5(������Z�vP&����k�C'M�C�D�@"`�O<+���XPfc���p�����-:o���D���1/�/����E;�����;L�c
�*���`�>�k:���=j���K*D�^��j����Y�7Ln�b��<6'NG�;8w�c?1���4s�����<�3�L��
��wn����pK���h	����X�>
�&A��]8��\;PD,q#�EN1?92��$P�W���^NU��BNK�7h��#�[4�����L�=b�d#������^��Le'`��ile�/��cn��'������qh<	%��G�ki�l��dVtt���4
�����}TS�m8"��x����P�>�
����:*fZ�
�Il��u��7�E���q�/-�?���k�69x<�S!7�ow����h��E�BT^m:���[:�k���wyt�������[����sj2��_���5�?������zM������C���!|�d�.�#m����M\o��n��������'+������������j�����:���:�������F[��t�X���H_�y�k�t&��Z�Lo&^��tV�$���H4wW
�%�IQ��)s���rj�����[]�J����,�7�7{��F&��s^�ZQ�����acM����j`�8y�
�+
RY@���IyB0��
{)���%;��-���������$���S���`��t����A������3z%��j�d���~���<*�.�������mCed�����p����k�q1��6y?�d
'J.�%�_�K��n�#��g]���1��7t����
�9\����������������xx�^�_:�H%�?�'�]�����~��A���S�b�}���\��$�)�WI�=|:����;j+Q�s�/�g0
v��;$�w�s���d��3����� C����A/k�Mm5<������%�Qc#����������3��3G�	����V�<���Q�/]^!N�����&��b"��+c�0@���s��!�����\�P�P  P�_�,�����yYD���&�T �+�G_�nE~��=�?Y�aIM+�pS�/�,$���K�^�J')���L��z���`�11 �-mZ�������e���+����"�b����]�\`eZ1�k�$n�s}~yu����1z=�w���[�=w}~��n_��/O;�rvvqz��C���>��n��7��/�E��[���i|�:��$aq+���
c��Ok�����PO�z�8��+�
����8_~�."3)��&�u��6�����8V8��]-�+����W�yG��k#�iy�F���}w8�*���V������Z��U\�fb�YuV.������!���#��& �������=0�I	���rg.j3o���,��]2t�aV��j�Xe�/����
������;�����������o��E%'x9}B-��>~��A"W�	���V���8��1�I�G��Rx?�v ��R%j�P
�~[-Q���Z�1�}pe��`E<st��Sp�c��n���Jpa�,�u�q�%>E��%��C��s��C!a����Ka+5�ST �|���d�M��� 3������dJ�3x bCu"fW���n�����>>�
 ��@����|��@���G����=����m��4�N�����4�6���G�=��*�G��p������S)��\�����wf[M���u�uD�����(>�O��b��#��U��[�B�G�#k����K�(�|�M�I��L<Cr�:��b����
3�����qs�
�j�Tj^y�����ol#3�����gE�Pgy����s����7�����+�/���I�@���!�;h's��qh~�����g7����c���
'�c��|r���DL����P�*0�P,�8f� #���Z?>�2L	�t�-p{-8L�#I_�ja0�9b����Q�Kp�#��q�Jdt��v�������T���1����/��s���I�i�����2�`9�bNk��^kHRN����q
�����(,�_�mr�Ku+�}A$��X^-�7�+��\�pj]���>gy�H�f}�)��Y������ggk���pH!M\����@]��%x����C�2$�Z��P+b	Az�0�W�����X*� ;2a���R���v��w�UItx'g�'�Y����T�j
Q�`�c����0���\���3X��q|D�_����NZ�iB���)~����(Y������
,����[����k�d���}t���>{Y,�E���g�����"���d^���#�����6���g���
7H3����V1��?�,�����n�w{�������@?���������'��o�s)a���i!�#�L
�-v�U
���a��x~h����e��s��c���U ��9z��i�F���k�����|YF���}�y��j�$_'qv�������_?�{G�\��N��R����Js�
d��l���S�#�M�~�Lx0er������]g/���Y���{j2�����[��S&��c`f��v�Z�7�
	��F�`9�g}h��~�\��`�;��sBS��y�AF<�|Z�������������������%x��z�0�-��s;e�N7�P���4������������n����)���!�@6�����z	��{�Xg�n��u����(Cu$b���C�.���b�4�3�T'�<�����j��|n��m�]�k�f3�o��W����.�L_�"U���G>B��\������l/�@�����IQ��_�����#�&�3w�z�'�@����L����U����������;&��kaU��H���H���?��r�o#jt1�����W1�Q),�/�2��:�������]���0P���-u�[����@��	)�I�������,ck"�+l,QI����
h�����p�Z�� �C��u�AiR�X�G�]����>��J��'��s������f�",S����C�
��3�OHb;����	gsB�yL6n8�� X~�	\	�C/���(Z���(iB�	]�@�F����qC���PLC�[��������b��!��
��*:,��0&4��yhu����S��S���x�<>?>�`V/��x&.Q�7p�'�Ch7t��T�)�����+�r�*Q�S��P���L1;Ef��CMM[4�N[��)��A6�I���Y��-��%!�h	�%�����J��MR^W$
��w�/J���S^{��#���@z�k���$`�c� �������/"�/}0������������ 05�/�hN��������(;����|dK�5�W��V
��h�<�?'E]���s���������f>����8�>��6�O�t���a_r��l��1}�*%?c�l4�.�=�#C��%>P��������=��b���<�y�55P8*yU����5���eh�u�yP�o����9���90Q��Z��\(=��B1�0X-a�����K��+}V:
Q�;�u|��<�
;H
3'��pG�v�q=��dE~Io�k�|8�bs�	KJ����
�$*�!R��~(�����C�6	?D���WuQ��������%��C8�����Ga��f����h��!��v����<*R��o��o���=kc�)QG�u���@�pq�)q��>��D%~E����%r�:����nR��WE�FK'S��'V(#?I�zhP5^~Q�3�������F0��k��~F��0�H8�.I�p5�k"#m-����������
�o9V%xq��z���.�a�^��mF_����[�P���'yd.e�(�Y����MA��E�\Y2� ���f��#��G`��$�u�S����3�n��	Z0�t@%\��Y��[�`����T9��3���)L���*!�}N������:>����n�O\��'. ��GO�>�b����7u������+��S���J
J�*��C�~G�@(O��4�����+���F���Dy@�������mE`l"JE��o�X�+�� :��C�*u(�~t�z*uU���@�����4��8��
�����c��d���0�o�G������M���>&^F��(�N~E��1�`����C�)������Vy�R�fU�A�"������x��f!��	�pX��Z�|�=���T�/e;�/��>����(K+�44W|A�Q��+��U&�_�����+�%��A��Q���Py��k��-���t����������#dI�]3E�^�j%�a�y���A����(�*���4���6PI>���>���IO6�7�����+ZL��|L�qKL9�����#������6<�R����|"��������,&	���$��L ���@�x�V��4�A;������/T<l3Eo��������
�iwL��9F�A���w��q����[Z�
��YxK�#D!M��1�fuE
Vh'd?.
�AY�C:��K�6�HC#8D�#=L^�!�a���@,�&���!���
s����">���>u�ri=�W��%������qr�[9��G�����<&*�I>K��Jz�M+���#���#/�E�e(~s�d8-'O��Y4���JG&uMWppo]��-�'Y��2���&�g��;���(����sr����x-���k�
��\���u66�D>&�Dp���'!�Y�2J��SJ���HOi���p'���7J7�]�d���>y�����k������r�y!P�l�BYN�VI����t2!�rx}d*�x�gZ:�@C �������Dn���$����y����J�\O<���������Iz��,�a��W��,�z���z�+1Y�V�����*_o�C33�J��s�R��Y{��h���D����b����{���&�.�1�@o���_"wo~c�^�����t��R�T���u�����Y-rG��p.�l,s��D6w�����%��U�V�C��V�����%������`P�nud�Q�\uGu�Qn����l��������������sb��
'N�>����$^�D�h�eO#��������7Z��\ 1�|f��poEiG"DF��� ���
�{o��4F&��(���yT���%\���d������S���
b:&�#���3�V�6�����s�C�����~D��>�\�����"3�x�0�[���<=���K�$My��G�	�O.4-��jM���<'����8/��xBQ�D�)Ai�#��+���>���1�������9EA���)�w���|E�o�3�� �8\|0���s�ks2F�"�Z�/����,�P#c���%u\��A��>�����9MQl�|}u�&����N���wzu�+UtB�B?��.�1A84@� �B�)����'����s�]I�0
���q�cn/��y
1�"y��%��w
����1b��D�"*���Na�_\QJ�M�~���l��X�����y<"�*�Dh����6��|�n�O���~]q�U��r��ybn���B��G�Bw�����7����FA����~�B�2D�G�������2n����=��|+���&�r�q�h��FoRe0�����F������W��<��/���_z9�	+3P�&�U�r����H��sL�R�~�2�/���w�����Yw��\���u1�5�t�w?����&m����mV��Mgl�����<�Sm0E�n�u���4z�KB��X�����8��b\O8I�{�����GP�������X����g�L��*�z[.z�������v�����
5���/C�&6YL�IAv�j�hO��Ay��SK�U#z���d<��&��}��A?7:5��I��&�N����S��^QL�]�z�fsV�{���.6�����$(��W1��h�l�h���jTt��Rl�G9;��(�1K��^(u�zZ<�m���9s=�y��d|���d��m�S�_�e=-����x���6ly3��6
��L�XO^����� �{d��t>��������MC2h>�z��H��;����X�<:QK�b�L�@�S=�<[==����=S=������[�S����Ry���z1���~>��p���	���P���������% ?����
��6�b=�����s#�v����3�TOdq���H��u?UV�-������x������,6zZ�J;�D+o9�����������1��z�j��j>�k���<8��O�D�Q���bW�gG�R��R�]��]]y��=JJ���!��8�F8D�Sk�C��u3D\��W�������?���j�T��5����qS�\�	�o+V�������Gh���p�
�
�~����B�9%�E��=a�M�j�k����c������-��
����&�b����C�5�
��9��\�����C�
E��$2,�VU��r�W�7��u�7'�~����XN`�V,*u�|���r�j������;�	1>�r�/`����0�Y,��
�F�.���c�^JH��%���V��=_��je�y�?�V@�%�v��� �n��g2������y�}��|�>��7`=�&#�5��_�!�to1�������xv_%�}����u[�-��q���}d���a���:����}�����IX�&����Yf=�i��G[��!-��!�����\��_�P{��sp,g{�{d��J"n�N��2��z�Ic#�|���g�|\�p+'�.�,��N���_]�r��pI��|����i��#H�Q��]�����X��`�bC4���&lCJ�5����m����^�1%Ia!�"��[u-�HhN��rdQ���x���/z��`G�i;�����L���F*8f��;�����'��n����[.��!p�����j�
\m���lJ�����M�y�N��+�=�K�W�������!�������rBC����?��;������/��8����+�9�~uxq��9b��^����?�������	�~v����[
��u@��u�%L`��3P�Y�_�X<:M%
��sQ���y��dR<�z��8��1tb�������Ll[�Q��*F�����F��A�����L)T�����/�� �h�b�=9"���nf�������p��I��_��H���3��� FZ�����1#��msj�0>8t $�j����A��t�^�nB��HB�q �B��P�����\]��������`���_�{P��n�T
��[����Dtn��rn�����������v���W%���G��������,%2��Wk������^@�B�Yp�	�gW����nO���&A�K�s|������������7o����S,{s�|,VFd������7���4��)�=�� �78��7A�9
�'H`��d5.N�A����my���il`��?�X���)Bc�.���)���)�fx�=��cb�A�G�����,H?����c-t�kv
�%g��������~�V8�������L�� ���P���
w,�?�!��$�L�8�N�t������d$.�D]ZD�m��W��$)��Na_�pvY0�(V�O�Z2��Z3���h_���������e�����,����g���G��*�������V�C��{��-v�b&-��$Zd�XXNl"L�ZM�a���X]g�:W �Y8��vL�f1��lrH1�H�Q�h�@�=E�%�a���,J���`�""k� �C�`H�.�;���6A��t��[`D��q���Y)���A���He4��0���P���v�*������?�C\)�_��-�0����+�[Jt�S���R�_�8=4m��8eM�z���Cf#$�|2^|���������^��N��,����# $���-�����]��}3��u������E:����3��Q�~R��W���#S��d� m5�E����1���j]���`x2E�-���i��kI��ml��P�"�'��#>��F��*db4�v�Dy��<���-r\
�@�r]<��1�R��������8��������o1V��(������C�o��w��9������f"(j��ac>��I��2
k�L�0�������n��%�&��T
^G���0u�4�Y��a��B7�L0��SBO��f�1������.��,�0K4���J����3�*Jk���v�u�>����a��N�-=|�-����N�\�����������l�pA�&��DLY7a>J '�����8�X�L�������6��������'MF9�,����	�F�E���{M	ij��� C8����1�-�;7'�*8�K; 8��-q�:Q�{���&�b��\��'��bgc�L��[<�f{����~��w��N�RI���A\�;^O��
�J\h��V�8��������HM�F�X1�QH���$����
D���!��i������=~�}���b��	�\�r��v\�����<��:F�����f���sGxfSpfD�
���i�.���0�}~��*��%�e�q�o����`T/�g�N�!��H�sEp��x%�V�x�����9�a����� ��Q	w�4Pc�r�J
}�'������{�dwG���#�3�ae����r\;V����[lo0�\�`�+���+�Q��/����o���>h\@���*�e�.D��s"b>��P���������G.�AQ��)?.w:�\��r��U@T����h3F���e�e98�C4��F��Z+cN;��S�S��;�L^��1W�2.���q�x��������t.�O�2�����5m��t^���!0�}$�K���aD�7�SU&_)�%'��P*�g%�����E�@di�W�������P{B���]�4��;y���f^�4��\�S�i��Z����	��`�1��+:x(��g��}s{����nZP�`K������m3�9��!�@h-�YVEXYi3y����1��W<<R^l���������y�=B?~�P
W����?���~$o����G�7s���u-�7z(�������y���H-�t����.�����M]�������	���e�DA�b�%/���������,���f��B����#wX/���5�Y�z�K��Th_��N��k�n�������UX�\�L8����VO�mE?����6��P�4��"�����#?���V� �J�q�a��F�G�!���B<r'>�(��	>�x�)KF����i���GD�����]f���95�����GC4��0"��r0��0�X
"!�/]�|����*�R]}q�0�K#5��\^D�M,��{���KgQ�.� b�8+9c�J��b>��AD'Q���p�C/	�FmYe����
sDS���2����F�D�R�|<�
N����Vf]��%2�����M) K�R,��N���J�%[����r*�7��G�:���r�
�D�P�e�����l�����0G���B�[�8H� {�"<�o��i��
j@���G���lP|ShI��j�mM��3�F����b�S�]&�d��N%z$����U�%F�.�~�����j^D�V���+	���Y�V�,q�E �����k�shB���}@���W��~�>�SV�TL�����8^��
��
=����)�$����&�
��W���.x��_B���9"���$M��������] ��u
qj�lB�(`��)��C�y���Na&��x<_��)SP�bKS �>�W�4+"���}�����k�I��u��D�h�vRb��Z�c�e����Xk�}u ������s��.�X���_���;%[<E@it��#^����1)�(\�t=��'���p�8�Gt)��H3���g:J�Q�	�/z�r�!T��M�+�l���f�&��,�0����C�t"5FP����K���H�(B��l������cr��>yV=�c>A��z�O�q�`�^��~_�L���"
l$�Q��T��?��Z"#nSh���cx��l_�����h�L�4Lr�-2��!���/%���E���-E�~C@1Q������|�z,i�'�'��f�~��$�=���K4B�R%�%�����CCEJm���a6�W����y	����)4X���"ghfD���������N��?��� M�b�$l�=��R�*s|��&:�L���4��G�T.ov����������(���mN�?��-�L[�T5����.Jd�t_��ZM ��X|(u
X@*Z`��<�Fr��u�|�����H��*m�����5��c�������<}:N�6e|7:�cp��H�A����b��?�������.�;���-_m������EtE�k�j1���>�2��h���
������e�!�d�Nl~z�B�����|yA��!���,O�&si��c:�����1����r�4��P9�nn��(���m�����M��*��r��Y��Qa���$�q�L�J��_��d���u�����)�;��9''���Z�* �;��
���=v�srP���=y�D�����i;S�Z��������?A���<�XA��[rLi)e�'J���2��9<*��n�&D�P�<��������������������������|��K�yiMy�O�������_)�-���voVmAl9i����u.�qY�����
{�m�j�f?t�%m��(�y���D��>�D^����.��2��rEv�4EN��T�p�-��P�12��2}�dG�d�Q�S�(�����G$�@-�V�_i	�X:�������ppb�T0�H���(I&1+�5��� p�����_�D<Y�0��p�
�\P`Z�D��z��t����
������?������������W�/�.�69�D�.�n�7|�S�(vv��X��s�n�wn>6���0�p������D�3U���iVx�]�c`��	����~1���"q��pVp�mC�U:n�fi�Jk%��H������^"����V�7%�O��/�n41�L��7��$$L���P{��{����re�$X����N�sg1�������cJ&����B�����oS�t��������1�B��eT��e��f��X����p�^~�����.S?E�x)�dj!����\��������>� �<�y����\�#��0W�n����������������EYE������'�@(/B�s�|�HC���y�j�8Hi�?N��1���iC�������Ndy
<S )O��)�L��q�Ru�-�N�%U�+w��kd~a7��(�F+������\��1�-#�:�=w����b,�V&�|�!� y���Q��t�	'C�~���H��M!�y�k������x�l16�OK[c�������4��`?��xJh��L�Q�(��sC6�$^3i���U
R�9
�w���J����7T�p�8^�(�d����T�l�h����}u��tjv9��#r51��)x��2��	�*)�;!��u�@�G���&p��#%d��� 2���/��R��#^.{��CDS��+����>W46?5�w/��!��lH{f���W��o%��-��!�E��������{��I��^V�uR�/���(�$>���[�7���#�u��R�v�N#-"E,��{Y,���fk��lR�R�;�J�~E��;C�p�4E�;@�cr�A��������/����mw/[23�ZLmU�n�k:����)���>r��8�&�%&x:�L`��
Vf��� �(0�W��a���'�P��829P���Z}X)���F�����-�}2 �'k�;��,�3DP��E�`��Q�!�&vt�T��w���5g7W%m��N9�;�N������-���+F����QV���g�R����(�V�3�NttdpZ��',��+y=4����g&:��7���$\�u
�]��&�@�:�
�F��tl���j�S���#�����g�%�8@����^",%����Y��a����Q�TmzVcP���H���D�H��h^�w`�}B��;c����Tt�����v�4\f/EZ����W���I����6^�!?Rr`��IV�������'aqOwB>�&s�$b�����X|d?3h��`��m7pE�����.��D�9$8c���*Q��"��\E�����B���6���;�0&�a8h�����)���~�����%��e<�0��]��>7�~����i�:MQKE�/�Q�D\KI��� xE�Z���W*���[�$����k)@��by���xkI����8R�+*�}Y,F���k��]*U�e���V����@xp�x��7�����,�����l$��$Au�*�����>^�R
�
(�z59u�H�k�{�g|�d��:�lcc2��xD�0v���y��p��7l�O�iX�2��_���t���������[��U��N�4��L@32�cjs����=���k�k�?f������?1nG�BL<>��Bq����
#�-|hu���EE��8��0���#���}���ql0f'i�x�3���u�w�[��]��F�`h���xJ�����
�q�s��&�#t�Wvij���#o�}�����g6��7H�*��
u�4��c�k����%�_!�H+X��9���	*Q	\��������LK])�1��P<{����#�����1����%�:T�m�=�ls����aA �7��W-���QLD�
h��Q��n��g�t6�����:?���[���{��J����}|A
�M!��G0��~������c���$|k�q�,���v��*��r����O���Wo{W���Q��i��|I����k�l|"����!���&����
������0�f������r����@��D��`�'���j=���.�������V�����{-Y�0�1��d���_z7�[����6��� �z?u;�s�x@�?J�_��S��j�o�
;M���@Tp*��]+�l{0������t���n��v����ml�����V�`QL��%?��%s%f�MqoYGi[i���t��3M�5�L�$D��h�O�^�����!��>��r��u.��?���?"�)-0�����|����n��6>yU�NP��u�>(����[YPo8z���n�+vPps�����e����Sm�3mP�A?l�3)4V���rb����V�T��p��O��a��j$���������|�q����)H�>m�c���Sm|��aa���Pe�����BnVo k���g(]�� �{'tn�3r�nuO��'��P����#D�]u��]�6�����A�<g�f���K�]�w��+�e�^L<�vyU��qG)qH�.r4���Q��	����k������bg�����������]W6�,6��1;���)L�CfS)��&�Q���^��22�c�P�;p����1��{u�;����30�r����j�!j�B%�	�'}GP[����w�X;U��'>���G��L^S	"/{��5���R��p���5I:�(�
2��-l�w;So&	q��"f��^��4�� UR�H�P��3�������mIz��.�R��^@��;^�V�LL�Fr���TL���H0��������2Ag#+��$�#`�"{a�����&�'��������y�pX�b�
$��j%}zY��)���[���3����k]�����k�`��_�f��y�()��Y�zS
����c�I��J��z6ZW4�A��Q�f�J�E&��J��Wrt#}�}���������y/i
f�NZ�����5(r{h7i�`C�,��P�>�u�-������v���`Ci_w�S�����l�.:��Bb���]v� ;8�������c#��'�z��c��s��5�$%&�_	2����;��4
���p?Y�'pY���.q	�L�jN��K�"9���Qg�v�bH���F��V��G���Db�r	�<�����:�i�X�O�^|�a��E��ks����a��tRq~�-Mo%$�E�����s{wO��;	0��F+����m����+�o[�7 �	�������*����`;����������3R�FU\"���eg6�_��^.���y5�+�>p��Pw�R���Ig2����]Y6���C����3VQ�q����
�����O\�Q�a��f�V^g����"�,G�*�q�*�����k�?o�&�S�*F����Cw����@�h�����=v�#�g��%��7���)�0K�m����}
!$����Al}�sR���D��d���&�>�X�~���*�[�&zJ��L����8�h��,eR�vBf�jM�Rk7+�7&B���+�~�5���M�(y�R�_w=��r����N�:�������<]�3�e�)j�MzE���p�a5���X�� ������kW�_�&*���E��\y���
Z���$%��$;�a;��\{PV2�vu4��RL��^]��yw����P	�m�VA�D�_+���0�J�����HJ~�y�I��H){�
��HM�<
��5�Z1�p��0H�je���^w�~����J�=R��BtN?���[|�y{
��g������7-OR��dP�j��G��lW�j������4�
���%(���eO�X�]'�3�1q���eU����p�<�a��f��'����$�g�h���z��	K����Shk���{��i��&��j���l��P�~�o������U�4��!��[����?k����>�6���OCw�5�R�s�r3�UO��i�7�����
(�� �#�U�R�Ba-LP	wf}����u������3�
�i)�5�J��e7���8���U�B�:��=�jXR�P�K'At�y����K6���K��BW���EG%����4} �7�[R
Y�~*��_v%IY?��v+|����f�J��`�2Sj���O����D��d
�
����h���`9^-�97�t����WM����b�'��P'rE&�N���$j6�D�r���� �������[�����0_a!��,���Q��:Q���J�G%���lbTtm��L�&�t��x!o7���S')%�q$�2���3��t0A�vy�/W��R���{� q��	�����e�uz�3w�������+D���|��*4�T�\o5������2@�"��D���S�O���3�7�+�B��)�(���G;����da=�|��������I���[�1G�����3Vq�+��}�b�����!�u��e�gB�)�j�lh�c��Pd�H�5N�s�Y��}���0o$�~�x�����]�nG�%���xc+o ��F�����k� ����NPz�������p���j
^
@SIKG���tP"2�i�F���v;����j�e$� M|6X���E��z,V����ttCU����`hv�w1c9��"��� /�!����[�J%���e{R�N������/?��w�
Dde�Q����J!�taQ�j��=�*6���J!X�%�W��Av��z������$��	(���5��������hd#��t
����QX��v������Jo2�2j�,E�m�e_3��l�RKb��b�?�L�:��9Wh12��o+o�I����;U��7�R������G��&�5�
$��m��9�U�T6����M�e��aS�
N��L�8�d@m����&� �i3���0���~F������Fn���	��F����5��~L>��S�0�N:=����;��<��O������1���4�bf�0��nD6g�v�F��vD�q\��=>�@����-Y��QYZB*/���FRv*�A��f�����t�x('������K����H�Wy)b��
V�J}�
5!P�}g�4�<�J��lK�dI��<��`���b���eS��Qe"N	��6�����IMnE��-a:�0+��I�
�em��1��S��\2%$��R�<Y��h-�8��=�l��6K�Q��[�l��E*1J������v%>j"�	!;�r���k�������hKRaQ)��~����r��w�Zm}a����bd�3=�5�3�1[�l��l�����x����0����O��\��W%`[`@C��B��A��~FR���Tj�0���R�ec�5�j#��a�@�
nY�ow;�;M��27��L)_C%���h��������F����d��o}k&>;��z����:��U��6F�j�T������
��A��5�'Cm���u���3�M6���$xF��p�Z���S�q��-�N�"�ww�=�!_���)�L��8��������\���>C{�"���!P�������C'��v��d����X��G>�F�������v&�"�'�b��x^���JC{��7����%��5�t&{��<��:�Yv�
e"y	�]Q��*�$����T����/������*&A���;��k��75jT�t�vY���]�{�� �V50�>9�*�pj����n��|&�
��r�b"�z�v��Wo��>��|\k.#�*���k�w�����
	���_����Z}����t���u9chx�uxR�A����|<���3��4���|���':\�����u�-	�7�V.��2R�/���h0*WJ%gX���l��0f�}��&�l����_`7�l�-TEc��#����8��������n�mU��D��Z��_��L\KO�LR��7��Uk��Q5�^����u4�$����2��XUS����"-�v��H���0GWu����f�&�S}��$�
������lY��:c���Q|���E�T+�E��l6
�la�0_lt�V �����G�r�T��J����&@�J�],���z��~���h&7�������1�Y�4H��v�9E�����,�g�'���<`���
��k��p����u���8�xn��f�iT�
 �	-�����.�����Dih�����mAM��6�m}����Q�z\��pT)���Ky���m*a��U������nc���H��a�*�����3E_���(��WE@�l��ig8�Y9�����Am��/��W^?���D|��]�W�_���Jv��F5ij�3[U���f�,��|?(��\7BU�9��4�
t�cF�.����v�h����q��������?��
��Ws�&mw�����d�����Cm��>}��8�rU��V����GE����p���(��%�����E��6o�.�c��7c��A��j�sj����j&��m+�TL��e��w��-�5+�X�o:vl�������q�_���^�8
�Z�#��i0g���"�C��'�������r�n+c����s���j���
����m�sy#`�������m�^u����F#R��n��H��,
��m]���o�W������_?�.T5�����k��9H=$�Ni����l_�?�f* �4�q0�C�|����0�?a�nE�W������3.��c��t���%�3���.��p��������rm�P�����hO�a� �(�M�������/��3�������il;V�/�`���0W�i��J���8��g�x!��w2��.�������am��	��U��\@�f��m�#0ZCtN���)R�q�����[��������D�zh�)��*����)����+[���/7C���p�+�co��\-X�m<8��A��y�z6��8t�L!�B���u�{�A�"`��2_�4��_Dje���$��(���+8Nu�d�.)�)���Dm�<�Y��=Y�����A���V����Us+n67O:����g���m����3���e�S�9^[���ET!*X�S�V!�Z��d���L�
����-Mf���z�����!����8v�T�8�z=�����N��(�`U1c�E�d��A��ux6v���`��\k)N��-��'���s�}f���$')���%����O������������(���_z7�`��y���3��7�/0�,;_���
�*���1������"�����;E�����������`��������|��I��fc�I�u���8Q�@8
���Q4lw�}��N����bb3o�
��|On}�����Q5��lO�Y�=i��RD�gdz���){�'���z�S��8�4O�]�n��km������PrB='�*����
c!�m����&�cS���ju1SjGwZg�Sv�� �������"n��j���,l�k��3�����U*5��p0��m*Q��2@�������&���g�����K0n���Ki7o�����SF���MJ��$�I�����JW���V��.X�9�6"�ZkO=B�a[!���n7G����7m�-n$�c_rl
�`e�������l�_:e���q�pPi�n;�r��8\�a-c:�(��;F��]c�]c���-������Xf���p�bl�%5�Y,s7���*��ta+4����/�c�,l�����g�������^�W+e8?*�F�6�&�I��@�����G��&2�9AfN�E���/&$�Z������H�~�����KD��������[(���}q�*��AK��mZ^eP*���2R\�t����~Ex�n�|�J���#��U~����I1",r36*r��B�\N�S�%�g�F����i9�i��j��e'���8][�@����5�����f3��4@��^%e��)��G�?u;�kHE3��&���%��j��P`A����5������E�w�)1�Y	����.�02G�-�����5���jXRiI����x1�t�>�h��]��
e"'	��������$8�������i8i���+9��[�S0��	���7K�`T����ZC�������j�a�@P
nA��c�rw���"(�6'
���m�!v��dy;&��DX@�8jwQ�<
��/L7A��s��I����)��}����IU�^fR}�g7�Q`�y�R�^n4�l���tR}0���$��1��������
e�}/sW�)X��9z{2�<�c��/;s�������
�e��dX��QwJ%�^�[C
�Qm��Hd����8���k4��4���H{5�������u��7;D20�?�`w��Z����If|�H�U��X
L�2x�'#�f���#��T_���>�Hn����R^�t���h�z10��������>Y����/����������b��D!��NT��A1?c2�J�f\��Z'un�����w��;�V@��j���	2��A��J
���3�z�t��+~1�w�������j*aJ����u�^cG��*Til�>�E q�O;��D�I-|�h	,I���'���Ww����U���c<������|�F~�P��a.[^`����Oy�s���bF���K6�����#t#���9��vUo��J}�Q);5-!T��^g%|4r~6�C��m�����RE��
d�S���MG)??����+U	�74��g�������T�����������d"�u?�������a����$V�n6�l��C��)��� D||��k����R:��#�RBo�S�@t� 5+�D�AC�Q��ug�pli]q�W%�
��o>���F��r�1��"��jL.���_��T���T�U\���Y(�`�L���E���"�z���3�:0���������E`��o;N��L���C��%�x��C�����6�B�x��L���[�B#�8p���3��[4�����������V�v���r�=�cJy����f����y��?^cZe��3x������X����R�@������F� �~'�����t(�0�Z�����5l,+[�O��6 ��+2�|V���LrU�=��C�
�w�jw���+E��:��;����0d�!��iA>�p0�Wo[Q��h���f=�VKw���J*-@2U�U�W�f�4���Q?[@M:%k�\�� OKh�����]�f�n�ZL��Ta�;��!-�j+�l�[(���s���i���th�Y��|JKXK�E��������	�Ts�8�������;�}4U�
N����p���M���j9Z��_'�wRU�8M,�R��SP�?�M�I"0�a���� 
b��Y�������r����I����4��H�a���5!cb��)����m�4n�	��`��;�V��)3��5������l{f��Ly��[4�$=���}$c��p��E���b�#���B�mc���:�F�~1���������T�"yX��]���*54�t�n������s�3m���Q�������rME���Zh'P�j.�O�ig
��~���:3�S�;u�(��g�����yC����=��Qe�4���>���Oq��vT�5^��R_l��
�H���$~~6Y"�g�&-��9�GbW ��������R����zf�'�l"F���:�G^�d%=�}fR�������)����3(
��BK|v������7�u��j��W�JN�u��I�t4�hIn���V����l*+Eq��4E�<*�h
R��FU�9����gPG�m��������1�T�������R�sk��QKb �Dc������7Fk.+�m9&��T�c�z��Fm��0��gP��Qa���Lu0�Tr�r����Y����Z��F����t�0(o?��4��������l��+,oWj�'"DS��J}S���vA#�R��3�A������{�4S�>[Z(9�9'`fX<�����_����_-������+������^Siw����
�P�<m���P�����g��������4�����/7W��[��.�����U�A]�_^��1d����P$�$�S3�	�T^)x��.N�>|h]R��H��W0�4�ZY���M��O��t������������������`.:��0j��R@y\UV�������ZWZoo0�:����(�Z��/-f���Ed]�;�������.E�������J'����{���vq����5l�������4� k�(>�PJ�����W���[�(��i�e&�EP]
Y_�����9�w��]��\k��_�xpJQO'�[]�D��Ydzp�����c~���������
s�i`Q(�?����ya�6����1Y�%Z�E��=�F�w��7�uXu3�2�����n���4i�#�r�e��HIK�N������zU�O)YR3J�Wb3T�M�D%*�ztS�RQ�m���Q�����n�sl����	X��@mL�z�S��������_d%s�\�@���9GxO�\]�xU��A!SK��Q�KN�7�4ge���4�j����Z�)Q����{>�����"
����g�Y6��Y������V/t�V-������(�����WP���n�����n�s	���WDNU=4�6l2���q����w��,��bz��
���N?���U6���X�#oM��r���I�k�P��k�
�{�~��w�i�g��������G����%��W�5j��b1��>B�p�C��T<kT*y���yv��GS�$���#��?���a?�z%��t5�+d�R��)�����`U�c
+����z	�q���h.C����x��7X��_�q?���N�T���F�W��[�����I��M��,���}��h�?�U
o�;|�w����=�09���{����+����+��C����_��R��?��3��yI�� ���6(����4	�-��W��!��A
��k�j��!m97�JF�Z����p��N�bw��w�_��}����r�A������9w<�?�o��5�z�������9�����4�qF�	��$��LS����*�������O��t��c��9F�=9Yz��7�������'�u�p?yXz�������b��������f_�|��(���&����M������;�������?
�K����^�O�
�[\��Ol�t���l�b#dA�"����l�M.�(s��o���]��D����	U��B��=\z03>L���������{ea?k�!�)�����Wt?9�-����,a�0r����3�HR�D��1c"��5��}�*��" ��T����_��'J���#����Dw�%��l��K�xy�q1�a�?x���3V*���g�(e@� ������p���xN�{�S����|<;<`��1�/np�`��������a�����&���	+v�P���U������W�7��e��s���_���S3G|NDk��2#;2fG��$O
|Cr�&������d�P�|�T�*sn�p>�������`���c`����`�D]W�����$h��=���P��}a������]���1c_2;��DL�`2�=l>�/pI����+��Po�w��
W���;d������j��\dhp��_���F�wa�Q�<�kC;��r����-��U��QE����W�R�_���&�S�c����,�{����H�S�61`��
i�N�����7��/)�+&�zv���\<:�����&����e�������-����	h�"���*
�������e�4dF��p>�CP�~:����H<�(��o���������
���l>��-	���VG��D��!5F��i��e�z�3*s<�N���Tmn����E����E��u<1������X:,f��������b�Y0�����Z�����x�	�Il}q��z�R?�7R*��8���5T������{�~��G!�=Q��������l��z��8����[�=��
�����^����V�r���O���|t�������W�7������$}���r���&�����������o�V��������H��������K����R��7(�'�8<�*���;������+��15���G��EQ\����m��*������2.�G.��2$&�v��T<�G�7F1�1����i����_j�N�	��������������*jb$FYxB�>':���5_I�_���D�����&D��@b�`!�B8a���R�T������?�-�X.�k���Wzw��P>��|V���g�K�����2i3�k����/���V��cW��z�^vX��ju����7�g�,�����,
nS9S��_���r>e�����*��=�7F5�.�FMg��]����A���vud� <��u���r���c6,g������K�i{����������xR�����=������+���D���uRm���,_F�������]c���3�M&hS���� m�k������
�zB�So������=����������NM�P�4�F�x6^��F��&O���5�����Z-����+��pn����6�N,sj���,[����d�0_���X(�2ZO�:2��u�.���(���}	��G>��r���(�}|�_�6�k�M=�rq.w5���Xh��H��s3�	h>����r�Rb�=C���^��,�}��������l���0Z���x��'4t����d2����A�
������N�a��b��?�U}�5��MS�����5�_�R���1\������p1��������G�X�l	G��(2��������0'��Pb��G�H��;�+0��N{Atg�}�iC(�66��O�f�o�q��S�/������C����z�v��C[�P�b���h�D-�d��N���{Sr��%~gN�h��
=v'!���cQ6�N���m�O��/ ���`���]�[
k���1mC��>�D�H1�J-<uq����0����|Q�l�
�V��5��,�����3�@pM����S�a���U��x�C�(�����4����4��qb�\RP� �z�L!���zK���x|Oj=��C���a�O���p��j��L���l�� _I�����W@����H������������~��?�T28�X��O��<`�tp �/U��M�O
8%p]���^�i�rc���	Zb���.����o���P1-��Fs�����������?��gN�U��W��������/b�r��������P
p_!=�@�~��.�����{����iRk�����xUDGJ��}<�Zk���h�w�����W�xO	B��,��X=��A8�]l�yCyr�a��|/�n����$Rp�G���]~�1��'��|.���"*�O��V������,���r��"@���w7��3�.�1������*B���NA.������'^e<���cg|�$R>����j��|�h�*�m!���	���h�4�@&�q����6���G��/\E������/"����B�����C��YD��B�Za������3��|�%�Y�d�h�C�%�������x��O(�.��x���T����K��!��7�3B�esA3�}�-?{�!��BA���|���S��{�������GU�-��?+#v�F&/d�x��e���V����^-;��i	��� u2���mb������T�	���G�xa��[����g���J���5
�9RM��#(���xYbWVp��b���l����� ����O~"�q&�E�ZL��GB$T����r=�4/���Zq��}��p�{(��B:�	W�����.\��\��d]�W�5B�
I
4s�j���(I�����:�GE?(2F0�%�&����nY0fT4�~������@S��pi��/A���Q3M��2,�p�Kl��z���w�bG�
��'<h�F�9r�}�s���7x�@m�����h�����i]=P���E�8+�����b�3��yCl�h��g��`��$R3�
�,H.�O�i}O��r:��c��D=x�[��k./D���!��l*��'�
�8)����>��9Vd7tY7s�u=^�;*����Zx�p+��<�����m�����Ko�-1!�����S�^��A��l�w�*tq������+$_R��������+��x	���?�t'�63�����T�7����~�Tr���Uc���1$s��gct(�	�c9����C�~�cx���5�B�+��~��F�`-����zxR��S(^��O��.����rN��_�A:�SY/)p���(�B�x����;i�ae��(z�����qwW~u|��,���������>�����]����
G�A���0���hH�������>I�i �}�&�!�x�������C)5�j��qA�#c��w��R,��� ����<$&q��]���R�t�\<�`)Q����Bl�+��@����p�4c"T���g.q�����rI��7���k�,�p��H������#�cZ�,�\���o���B3����1r��fI����dj�r�Z9�Rn��Z6wM���(B5�0��c:�(��]�A�C)�T4E��0\7]��_3U��.��<�����\����{������tT�C: LX�����;���H54[O�)��*�#�s��}����U�j��s�����"��r�<E@�Hefbr2���I��J���>XF2F	��w��V������F��A�@
����
mE$�����4�}���O	1��>���:�1��!������CaAu"�����zP���|���<�(�O�����������"�|�����8d�{~��(�AQ�,���k�|���W�5����}|�]��g=IDcs��j�g��_�6��hw�C�����	-O34�M&xv{$�jC�Y�wC�'�0�&{%x~2����h{���t���I�O34�=��2���r������#�#��[
}Jd��3�4��{`���u�/;��^�r.��S�]T��GbJ�2�7��OJ�#uB9v�V�>��~�4��~4{�0sSm<���I�FGt@4{d���qO�.�������E��;�|v���'p-$�Z(�Y1 h_V2WXo`l�v%B���L��������
v.u�CU�y���i~m�yz�����4;�kw��p|�iE,o�J��-0Y��r!�]k8���R�:�f�T*C�x�aH9��]ek����"-��U�|C{=�K�����Kq�x�r�������r��=���<��r1�=���5������-`8��&������K�R�t��w���\i�Z��!0���px�|1���p����
k0�Gwf���s
���������dj�$���Q+�J��w�}�4������C4��	-��Pg��Pg�U+���UT�o������������H�~�m�:g�����/��Zx��
��Z���j����z�7��]"��Y�����K�pF�����s8����u�����a�}Y1<�,T�$��S��J=m�����B�HR�%�������Pk�"1O#e1�t������L�atv���V�8U��������Wcr��/o������3�j��oJe���9�o����\H2[�C4��$�!�������O���^��n�����K��E��+h]j��&���o�WQ�����������3�����{2����&�*��,��Y�����F���5J�a�Z�g�B�a��M��.�UVVXe%!q�����46
���,�kt(�M�����f�q����5���Yn�5��;XpF�7�4�75h������@.OJ����������&�/�
u�W�N�v8���cY7�'��x#T���&��&�l��%V��� ��l�!U}����MB����/���d?�RZi�5�~O�EIE!<������OX��]N��`2^�I�F���0�����eM���������:�
$���*��jF���%_�g�Ke?���$�������R�V�;U���.�
�R������1V����^uB�r�Q�N��G�<r��G
�1<r���^f):<c���g���r��2jVkp�m�����gZ^�!ui�8�6��������juS�Fl��
�v�&��k'�B��Fd1D+�E@Q�"���SS��h��������cB���@������~�ka��8��d��*�?"��'q�o���q=�;�U������LC�p�V�j��N�H9�td�������s\5��"U/��
�|����	V��i3LTd�vt2����Z������G@f�K�C����*/�~�#�,uA�B1r����-����8�~*"��I��n!����c:��!�!�{"�?j�pc�C-��I
p3D���c��j����'�V��+Lz���z����n�+(?�|�4r���..�Y�K4�����F#���i����8!=<�T�e�L��ZT�e��u�d��[�R����E��iV�����=rb����g2A�ewJ��!�-J��K�
;
�'�������\�,J��S�:s��eb��/�&��gl�������1t�1}
�}Om�x��{����O�KOx!(�DEAZ�[,<��a=���i1�8�g|���_R)��v��K��<��[��>�J���8�|+�y��p�����{�W�=��T�cd�'
�x6�'��`H~q����"�EN���S��+��3Q�Laa�P_S��>��G�1Q�@�&��7�d6����[�4a��>2m�rEdZ)���������+�2\�^����$���vRx���A I���4)�K�a��p�%EG/��d����y�"�s�
�=�f��58���n�L&5����z��1{L������m�H�������:��������6M��o�$�$���MW/J�ln$R%%;�4���A�(�������6	`0f��~��+�:t8=$�(��PL����P�%`	!l����mBT��
�e�I�B5�fG������9 ��������O}���*E�6d���`7�����HJu��zx�h9����U�����F�c��f�Q�?7d��ln/Bd�y�C#����q�/PL�uq=����aa���`�)\?5k�2���v0��vna���}v�h�%�'	��N�.]�x��3Z�L2��W�A�c�FO�Ws��v9',�k�'Y���3�Z
������k����N���
D�{C�n���N�b=����^8|����jstk@��t�������|4���X86���� ����������G�����t;��k���M���g���H=y�����"��A!���W�I�(���
_{��au����h�p�*���l:f��n������x����s��d��#�U�{h�:]���������t���Y��t�`0{��������03t�Cg#�l$�p
�]D5�9���4jH��������F�x���$�Pz�RNX�xcdc����w�����@��	&�,6����R��|a���>@'���#H�s�rX�����)��NT���� ?���*p�v�Vmrx�y��Lb�D�ylK�rw�gTm���jb��@�_�b���������Z�[p=�<.,��+����h��h����
�P����<���	/v����[A�x�A�p0tE|�Xb3�����F��3�a��	[T��;�����>4Q_�?��Q�Q�����VZ����2�������>R}����J��9������#��4j���M�����K�o�\�8��:C���D�M�S������;P�y'Fy*��5K�1~��9Z�^��������(:iFS_��NA2TZ|"�!L3�j1�������R\y�`&�G�9
���6rGc
	v>P��5ZKD�2)�<I�fM�L5�%R;�>��6����\
�H#�&����gw,��Zl�� ���������d��<�a�aR�S�qf������)��6��W�_��]4l��-��h�u���8�e�A�#m�QOw��H���6�D����/$�����p�j4������r��6�$
�:&x�6�bbp&D���:B�g�
J)>Z� #[�4O�"=����"�H�%t ���p8F�)��.�G�=y����/�t���/`1�G�
>j����V��#C��f�����hQ=��	B�u��)C�	��:R�"�}
XD�a(���'(nv\I��^��;��2���Z�c<��&p�,a�|`|�D�1���|�m�����i����&��>"�I`�4�u����s+,��"������r�Y��;3B{��p���69����b9s�nx�NtR��('
s�����7��>.��-Phc�!�m�i�A�/���[�Ci�����'�)`��b�27���N��v��t~BS��g=w�KG����$v &6
qF��MCW�~d0�8��6~�nt*9���(��E���Q��"��*�tL�<T�6T�dEv�w��C_�`IcO:R��Q��|K�)�4,�Z��
'HU�H��K�9Kn
�N�?&NeF�q�������h7@y ��Kw���T�+j�+�� �>�W�@�2v�^ra��m�w�M��K�O�{Ta4<���F�����=E�w		�G�1^��Y
�����K�u&���GJl����6�S��&�3J��I����!$��N���@��%?X����o�����PJW�TBXU�J���(��O?��\a�+<�+z��9F:>x�/��������+�N��[g������(���gu���Q����N����m:_����;�Z�a��a���`��9���Nl�������������x��"��V�as������%�T)|o����EXQl���Y8S�~t�1&���=�=���
�SD0�����*=��Vb(T�6�	u�Y��3��e|Zk
g.��5��!�m�+-�AS�dr&�h1���M]�:��!�KV�]c�����������n=K�g]D�sR T����ktMZ�@x������	�!�6{M�a	P��*I	{%��5wG�(l�M],���-�G0�kw��Xq*�l@��<�qG���	cx�z@����,�&G�A(�M����)��0��	��"���
��S���H�B�pgA�&>C���D�-�k����V(�V������t��Q���CM�n6�����h��6��=����3_�T��YX_����pF�>��
�'�jA&�j�,��Tk�����08t:��p�E��Q�=M����d��'n��
�y��a$�B7���!���T�o1t{6��D��e
��ev������w�r7��b�~�'R���r�~s�?��&t���n�g�72A�����9Q��
�MH��R����9�j
�<I��d
��n� �!�V�0�V9��8a2:j\����������|�'���Q�.@ a$���ma������R���~��	����vi��1<���3p���:ra�^�S��*�,�]���S�eb|,���Ns&����c@�J}��S�8}4�<����E�PS��x(��Lyu�
dl�����"����j�Df+�����Ep�;<p%_���}�h��0�����0�����K���	9e�K��G?=����U��XZ��x�79�2��������iu���|
�����!!��<����U�C���|����������p������J�y���c�"�����M��d�P��������#n�O�I��~���]�P��
~�R�UwaL���j���o1�2l����+�CS"�efv�N��vE�����>�i���:���3h���6B�uv��(����<B�y���X:�D�B�x�p���]5����g(��e�5�#��F���
�����E%t��z~�~.������/��/cY�r^�	�r��3�E4��}N��q�w��������������;Z����S8����h�
���dC��v:��z�=�{*
�����T�Y�|V�)]l���������u<���H9�~\�{a=�0������[�^;����z���K&��I<�.��6��d���z�t'��{l�T��(����A
�����
l��w����V�I���}j{������
���<q���Z�buaO�(�b:��T�=~����O����~W
��Y_�3�KT3������,��>zi����C��#D��.Ip���P�(g���b�,W�wz/�`$���M�=Q�:s��*&�A
jg�t���b4QS�r��E�����������D
G����0�����(mr���,Y�3r�et$�
o������cn��}LxA���<��1�f�$7�B����}��+N��8��+pP}�;Gk�8t����f��jX��0�2t�C�`���p�{�+��
�����fR�5VB������8q�2a��)a�EF\��u���=� 0������	2�h���qb2�nn_�q�I���E��
��Q%�������u����������>kX]|���K�o^�y���:<u��6sV�M)Ve��hJ��OiJ>g�3tk�������e�� )���[�t�U�JE�(��|������q1���@�v����wl<a4�K����eT�YE�NaP�g�O�k��L�Xe�+8����;����
�MW����S�S�lNa��5p�R2^�z��2��T"�Ja�,��Y�sW���������*u����#�>�2����f�����u+^;,�2�D��mD�~����U3���$��E�Z��JU�t"
�����`��\���t���Q�L�&;%p�+u���p�k��x��G0���b�����cU�
��J��h�c�G����/6]�s�VR���5q^o4I)�)�&)E�	�T�Fm��S�@\����M�B�2�6R�Y�M���#����\���9��)���>E��"�����"u��$��}�IhE�I��8�d���U=q���7>�Tso�6r�)��t( y?���JU�,N��O�^����(X�����W��w�W>M����D-��*F[��Q�
M]��lM��}�#JpT�t>���)�8J�sF��\�K4�PJ��3��(�'���*u��
(������&��;��k�9��R��2�V�G�~_G�	�~PxS��r�7�u�aF���Et���g���|����������K`�S-�����	hh�?�At
�a\R��}��:��P�DB^���mSGd��])�l����`Lf ��F��N����N����k�;�Z9y|�O���^��Y��tV����v��LR�ce�����]dm_^'��4�����������4�K��V�X��.am\���Yl���_	��������Q��� '����#�LTplp.���L��w���Y����`�:X�NH3d	�w���oH���UH��hm_�3q��$��IaB^B4�96� ��.���5J&�{����eC�P�V�d�t��2���f��w�9�o�������Uf?VN2����	�2�I#-���WC>%���	��7�a���	�<M�3��A�����������������X�T������\�~���b=��:l!��;������Go���l����ka��w2(Bn��5�Z����P�?}��ah=����l��W���P��~kO�I����TCR!f�E��s��+�!4z2C`
�-o��wXE�'�T5�
�C;u�p(�����aj��L�����O��I��
������{��]yB{����*�T8_O9)#�TVX�jLI$S=�(������R--c��b�Xa694	Ngu���s���2Ec���*�������<���l��W�b&�[�k�TKMY�7=���E���Z�I�
����^H�1�5+�|�Ydnhx��0��h,Xa�7LK0���Sdq��a�J���U&�]���4��:7���p�������y'���S�dB�H������j1l�'6s���N��t4��AM!i��wO9��&�A&th�0)b��Bj&�������T���-�:��[���R�E�-��I����Ek���(x��(�A� P���;�m����M��K��g�=m�����4�K(���7��X`�-��* ~����K�YE�?�v�\=E�3]l<D����w�c��H+
FS�ib`�WZs2�T^�p�0eM�V"|�fp����!g��2�`�Q"�t,O�9�=�FD�������L�����R�':��*m�s���rP��d���2@���V�K����`���V�a�,���bB7H!�c7j]�3�~��lq�,B���?x�'N6�C�������<�=1����a�MQ��������5����Y\��[���3ed�q�����rw�G#-�k���CE��b�Q��o�=Dnd�6�c9N��t\�8���� ��N�B�=!�W��5l�H������������N�>��t|�����z�A'4%�Y[H��+���4�0�h���#DI���{YP�������!
�op�H(�Z�,��,HI�
1�4�k������	+	�6�cV2�
��)<���{�1jQ���N���X�2z!�o� "(�_�l%U�QB(Q+Wv)�t��9�Uhu�����$*S�+�S)[e���P����i���V[�m�X�1|�0�a��0��3���?���+���'�&��T�3[��ZO_����z�����"S4pV(%�y�#�����R���)�� ���C@:G������Y�[�^�EW!+�adq��iJo�A' ���1Ax���0SfR�?� ����<��'�/t�#C���
 �O��a;F&:N�<����A�*mf��:���A�����X	'�?X��[�����W�%s��p��3�UT�K;������@y�@���6���sN���d��g��T�M�w�j4���V4
������c@�R'�)��9�R�?w�r�>@��+Y�"2.����T�{f;��]����G�4>4���RM�w�7�c~�E�$�&J�e}�S�0X���
�����)�� ��. F��3	�����,T[!�"��i�B�e��+���	"�=V�q\j���*�\�6n%5k����^6��_�-/yR���>��fk,j>d!h0��F���w�4��[�67��x]�����)x�&���`D������P���$Mxh�*9P9�$V�PY���F@0�9��p��_7���!��S�k�&Ra�I?T�Ut"v9��
m��!������3�Z��?���Z� ���{tvva���	?�J�z�	&�����^+/8��0� ��s���R�R�����kO&�y�1i�z#��~)��}/�!�@�����;et���?�fK�� ���k��e�y��J��X����������G�ORI����;q
u��v�*���RKYv� �h #�q����Ho��������[�>���t���]rbA(�W?�%0z��y������;�r{��`�g|�{C�����W��a�z��8�:K��5��uhj�!9a�^���d�v�D,
�0J���:qM�,�G�_�8D�#��X�i z
} �ZH(��aGL� P��DF�9_G.)��c�z���v���(�I�D�����!�����Z'G�������xn��$L��(&Www���w��#FQ@'����-<0z�6����B��?Q]G���GQq8"����(~��XRX�B�;	��8�@@��&�Mx
�B��O>������G�PwT�#L }�bu�q����^K�8jC��h�aR?�=�����O�.jS�k-���X)Y���N���_M������r�G�XQ`� yk�'��*_�!j_]����E��������&�<4%�Ts�/�$k��I��J=�#XQ�P���<����@c�H�d�x{gL�u��F
j������\�bz!KCa��,�h�&W������E�4��9�b��%�����or2�^�N�
oH�X<�	��A�1�	c�J��:�/�����;� ���][����������W��������X�'B��(wZ�����H���O?����%�&	H���	�!��J���gz��C��c���^�����U��!�p��Y/�����_RMg6u�>�uT�I*4�%D�Z!��*�����K�����/���{�����_K�y�f�z���Q=X�<C�Q���Vg7`Y��E��]��G5~�_�;M��vq�x��"���O?����'�8()x�*�dKR������F���Ka,�FX�!}v<����A�}%���b��-T��i���i��{\u<(<�����Z��I���:��Vmw��^���S�w	�'dH�-���/��d_-�;I�D"����%w�����N��C�'��	����{x`=$D��@��+_�G�?�Dq���1c��Ct3�3�R�c,����D�G����J��gz%l�\>C��'����T��I��F�,��R	;L|�[���������4R<k�������>H�"&��#���>E�R��� �_;tJV�k�������	���pw��yO�E����Vi�C��3$��q�Yy�\�7MV.#�M`m��}����%3�_jv��J���m�_k�>k��z��}����	Q�AB�AB�A�x��C*4�&�X��L�\�v
|����Z�@��������	�� `fJ�KCf�u:A����BU"y�>�$��t�D1!9�;l�VDW2���/�_�����������{w%���s�K��l2�%}�Y[)sQg�a��<�������f������1�z ����������I�0��J��D���M��2��C0��B������yX�e}.Y$�cI��5�I���cLgD8�~��C�cx1����=9�8�]�&s�Q$c�>��J��PR�hzu��
�'�Y�O���Q�����kh_���v��\��������s�.��m�!X#�UUi�\�a=a�p�dJ7e�5r�W2A�C�)�*k�K1�h��%��7Y���}�!o$�B+��
HrlQ���>�_����+EQ}������N%���u����'M����z��."���S5��:�]��u�����<e��`��
���:"*��+�p���!�o���>VX�z�p�����
V��?��u��������d;E��z���j
��g�.W�k�wLk8X�j~�(<��d0���M���[�`�+���<A�R���$j�H*J�'���[��s��C�ApQIL�9#U���SaM� �k)D�.������6��J6 �
����[b!�/)�%�=�j;��������#���	�G?�>������0�L��N��x��J���R��k���Zp�\}�8�<-�_I�x�l����B��$�r��d������L<���������ye��f�����j[����������x�=:7���7�&�0��Qc��k�>��.�1�1C�S����Kp����xC��M/l�P�z�:]�F��	�.�.��j��Fw��Mot��}E���
�����@�Ui5u)��4C���������A�%k�9����y������N~������B���?e��CR'[��[�����y�����=��P2V���7��|��IQw��B[}"�Z���sdMSq�.���/�C�>��q���eF����iR�Qj(��W��|�z���x����h^��%�K$�#��-��d��1�s�
EOT���'�*(E]^?�o��5����OTm��6_TG��]�	~�G)\���?T>�H"��h/kV�uL%N��*�����b/a
��N��/��4�k��?LO!g�R�iM�9���	�$�"�B��%���vr�#`��&Eu��Oz,htn�[�O��/]k��Be�*pP��B7q���YJ�"�G��x�g��wC���L�$�b+�0�����;����+����/RA�k��(���%�c����'�|%h���q�aB3�yL\�'�����x�
�mx�V��3H4!i; b(�
z#�7w�~����7�OB����`(�Mh���I��Y��v����6C���������i�%��\5�����oO_�x�\��hU���(q���u���x=�*3��H,��>RB�q������+����l��d"��)���L}�������q+l�x���pE}�4�D�n7����:��P�W�f��'��;d�0a7�.���:���ox���Y��X��N9�J�p��"}2C���/>X��S�e!������R^%nj��'��
�G8�\"��L�#��h�m�2��c�e��	M���%_!n����<����.��N����gx��V��-�_JZG��SS����1��XkGh4f��'��r#v,�F(�������7p�yI������P�E;����d�����v6.~�T������/��a�����r�#I8;F*t�q�� ��Kq�s�����6�A�?�u���r@p�_�-vY{��.�G�zO��G�nD��o??�]+���H.q�*"w����V,*J4'��,��S���������u���h��W�S�yb������s��YVe����j?vD���.�bKO��
����$���A��$�1����|�,���6!�����������k4f��n��s�$^�.�/��G1\M��Le0H������1�q�~����1�q�Qs.��$��J���	0�P��%��E��4���D~�i�����	���-i��Y������m���Fc4����r�����z�D	��z�(H�)d�^F���O<{���d7��
�
�p=�s�q����H�?�@���!�3�o��R�P3�)(=��]�~����|+|q��}�w������ �.���(Fj��[`v����7��#q���C<���U��"K������������b���7�����������I�r��;��������A�������f�]�>
QM���m}C���	Q�Bm��q]��^~�OW�����W�	@������u�%D��x����g
v���Rex���+{�}��f��J�6� �
g8q:���������R��P�{�-C�����p�����������g���K�<��u4Cxv
2�W�:��X�	p&�L���#��� �q$����{��M.^9�b��y�����i�������+����>T
g;��}4X�<>�oSF�[�zf��D_+%eGVq`%��_���0SR�u���{_a��@j��k�G����u|��]�du���>o<���������H����J�K��S-&$�Q�������k�bb���������o��RfS�;��l�`������:��y�<3
�'UoH��������P�-�h�?�{�.��;���Ot�#���=��.|����qh�5�+��O���"z��{��)���kJ�q#�~��'i���wtgA3����zR���x�E9:��/'�b`B�������g�O�pHP$��$���=�}�E���%����!�d�Y���r�#��>EGu-�y�u_o�@�������c�
����p�8:4��
O@��$�@�I���q�@'
1��$�g��C�!�G��lZ��C�,��d>��Y���~\���x�)"����~I;��?��{P?C`E��A��	����~����������n+����n}���������d2�[������t>
��fk����fg��gSg����������� +���M�b�X������*�o(
3i��8T
��s���}k���"�5
V��h�@G�%F5��������F�xXW���W���������(����;�2D� v*�aa�iCdXi
1��-�%PHb=�W��I@!iB�����JY�M '�]������Bi��9��d�����~^��x���%���5���/�fv���m�[��d�5@-�s[��hZq������������W�2��
������]�^�M������R��.

����s���x�c���
�D���$�������k2a|���sW|6����?>����4�EQ�9m�;CLN���f��v$��l $��L��?�vo[5�	Z�Q��_�����]Z���O�9r�[�����xHx����~�V�+�z���/�������R�;i�f�Sf��Q��N��F�iOg���(z�Q�M	���h"���s;����@���m�v�s�+�r+�$�N����"�q�`�M�q������WLnI����
�nq�_F�5g�!|N����!	���o��L�������o}x�!���D��*�$B��Zj �.h����9��-Bh��>���v!�Q��u�(��~%QI�4������zU��DS�I[�+�)H�CS���?3��(5��'��])�������r+<�I�b!�aS}G@J��?�Z8}�FAi�Dv���ch��)yY
��
���W�X��P�jr\���gQ6 �C	s�������S��H��`�]#�I�[��C��Q�b���w���7�J�/2�������h�b0�Z��z`-=�uZ���5�Zd��p�8�����xkw�xkj2�j1)�`���*L�x+�	V�0�5Um�#������"Rj�r�����(���6�b�J�tz�a�9�=t�������l�)93�vr�tw��/$�H���1�?�p�>�����5�{t�H��P�E'�8��g��Rf���Qa�=��n�#����'5�
�/2h�QU�I�^rD:�#������$��4����:E<��QMD�=����Cj��`��)���_N��16T�$�l�bL���k�������dWS��SM{������}��rFFD���	v�h��q)!����!�!���K[D�#~�0}����CE���@g��= �*9t��mc�G#���w:���J�+c���5�k�}p�wkjt"h���ih4������aG(�9�0������={���PF8�����	��O�����V��F��"_�!���H���M1��M
)�h4e?����������$���r6=��*�F^�k�b����l�WB&�wB��w���K����\{G��jON�x)b��K9V�*���������=��xF�q�����rHm7����}�t���tq2�)|�tU��3	,�.��s���	�D�= �������O@K�����5!����p�l�y���`\��`Wak(�T�����������"4���?,�K�u�C����e�@+��A��iwj�N4@:lAA������>{�nrr_�*��������oN_�=;9T��o^a&}�j��J��!��,#�����t����,o�Wlay��TL�&>��	��B>"G�9W��c��h������Q��
F�J��Z��PI��X*���DG����$�)[�:��D
�5�
CE2���2�� a�:��q
�M�=�/��O�&�KTu\����1���f15��
��Y����6��V�?���G�7����J5�+�6.��z���ZNt(�����4r?"g+��,�t�VM�P����s0}����|Mt�.�b��@���
H�*�dH�
m@�B_$��������`#������A2]�| o���(�%1����D=M�xh�Dw������8���41�w�F	�w?�h<��P����)j������kK��V��[����"��|Q�5�Q�SzU���<G��$�KaL��!]���b�,EE>��9�LZ���'�E������/''�[g�f�g�����
��O�>~~:�H-�,0�;�uY9J(pRn�>q������K~�
���Z'v�x�vV��]�n�������4��N�����~wn�/�� ��X�8J�(&8�.�1�V�/go�������&�Fw�0����?���d�����_�8y �u�R���e�=a����X�����=���'��4K��"+N,4��� \�i�YQ���Q��X��g�?<�$����3oF~�2���@���a�2b�U�R����O��	�}K�F&�����(���fIi��b��������{0�J��`��������v2i�3e��l�L$�f�����#��9�����f����_��m���
Jz�%G�Rt�>�M~	3@qj.ApJ������t�&*4�P���+���~�G�V�U5Q������f���O�Z?N�j.�K�4�#C��JHV����$�M���,]8�$��z����DvTF���c��~T��K��)H`f�|�!`"R	N��	RW��������7���b�$��qlnL"TT�������}�,�p3�����@C��s�Y.�5l!��I�
����"�����\��}D�����%-�j�|z;A�-}E�)�njd_���x�B9���-%�)��W0&��]<�m��������H	��X�����V1������z� {��0��]E�e5��N;j��o3�3���[��e�/��Yj��h���!5��!(�-sU���y���5�4�~������<����Rh9���A���[��k����x��_[����A����H>�8����O�������m3tF���+����7l���{1��������h�m���#O5l{*C�}����<�&�_��E�*�*������Gg�__JKYN[8�YJB��h�������.���q�%Z�2	��=�]�ZK2onST(��z\�1t{��~~-�T�'�����.EX-���l��*���j�	��=& BMF��4��~�HQ��.C�������0q���\���
�o�m�Km`e��h@�[I��p��|��dc�j,i�y�r�����X��#q�Ma� �1.gq�1���`0�7�f�719����E��RJ*�H	,�����(�J��$z�U�(�B�K�$��<w���*X�(Vb/r[7+���\Ix��%W�-l"�,�v�	�r������U�Yl1����O���dj7�>Er�`QC.��2���Z�#�b����w{���&��Is�����	���\4���������q>��m�U�Y���g�mPURoz���5��|'�.*MpT+�.6�Q�M���"R�������h�&���9+4�Q%�c�sBii	�jm�E9��V?�l��%}t�bJ�F3���\d���U��i���+\Y�wH����.��ED��	�W�\�����F�7P���aR
�G[E�<��d�j
6�����)&��\�~�{�6C��3����,���:�l���3��_��������cf����	���Zh[���e�:��z����h����h�,�NU-[�*G:��
���\�D.k3Lm��/Rv1���#�8�k�.�7r���#y���Fr���zCAV�E��#�'D�U�C�Fz��?(��c��fM��9��J
A�7��zdDP"�"xl��!�X�(`�`q�B1��@��91#�x�kb
��N,V,lC��q�!,�g^5)BeU��>��o�P$���H���LS��9RF�2���tzN�-N�[�����E��r����]F�����^g��!�[��1O��]��h��) sV@�L��cj��:��������z�f��s����7����&����3��������^���a�8}�/�+����f�4����1�l��B8�����H���9����d\�r[���^�����gc�p�}rN�9�3��L�'C�a�c+��+F�JZ�v$Pq�K��+���+����}!����:g)�P��z�n	�z%r�Y|�.W��/�ldx&G�*�}���gp6nv�>S`��*rW�,$��~��H�[T���u[����j�]��������3	�<���1�"�Lh��o��ah�Y��#Q�8Q��_0F�#>���D:1�&UM�{�N����h3����Z�J�Fm�S0;7*���-����!��Z��	GSH�5_��zUQ�6����Y��h�WS��[o����fN��3������;*���3)U�d��h���e��B�y#�H�\�Z!	8�mg����=�����|z5��F/(�M��M?-lT�Z��Q�(
e������r�$�B��H)?|���|C�\!&��Zq�����:
��w�?��!�_��K;�C��������B��GZ�?�L���t����d��>
�"_x(��T����V��/WD|T����E�F�����Eh�jzzr+���jr����?7U����������Q��~�����'>*(�4��<�����wZ�F�9���������	%��KMK��Q,������M
�5��$����L�X��Eq�D��rT2[�c��#PA���x�X���V\���`����O�R�H�:�/���E@�T����^�t�0E����U��L_'���V
Rf�+��7)��`� D��5���������<&~�}�������C��|�c7n>2�$����H�=���G���;%���b�<��,n�$�>�b{a ���{�$I��?��(Z���H?�����B)�-�j=9,���U�t|�������\�dFEEzi�|{��n`�_ZO^<y���9���e&ie:?j����8xP����a��]����Ws�\fJ��^`]���@[���r`O����"�C���������.�
�BpH�@7F��~&�os�!������������?��{���������5�t{3{jw:������Nk��g����~�l?D�K3�o�!b��"x�R9#�c���1�^QQMd������[�Hx��eq�_�
�7rPou��,T{��v ��,�����!�9(~������$D��$~hwW������C��Y9��f���\��V�M��FMJC<>��)3��FdE�!u�=r�S�3�(��*��1]o`����j�=b���Cd;ttvg�+����&�%l�������c)b�^�M�'��5��!Z�(5����6����K
0"����!~��}�xir�o,*�������7	�Bbr ��A���Q�oVZsR=X	�A��)��%��!0�#B�����!0|(��^��;${��%+u���t�� p	�k��q������	"���%5m��h����Q��JLD�^������y��S9��������t��:�>\��Sa���T�M��������\T����i��,��R>R�\���[��B�P����5��+"��QDj)���gk-�)
��@Vb��������� ����]?yw��N����KC	��_~5�M6E�����J�$n���OF�P���g�1	���O�i�A��$�#��J�t����g��RB�)���"���@�V!H��V���C��"���>1�3g�K2a�[]�IlK*m8�z��a��
�X�B<�����*������E$��$A���]5=/pLvM`60�X�	�G
7�v\1V����Z���D$��Co-��I��-1�}{�S�D����[u��p����1�?���i��������'�a*��������O��%���_��h|���F��D$�o�
r3 �p���!}zh=�e1Q��u��H
�x���hX�������A]� ��b��
���X*{0sz]J���J\^��bX���!A�k�cJ�f����[jj��hi��n��P�(	���zu�������(�oL�6����xY�(��~L��6��V���W��\��+L�`�`,M��Lntr���XR������yO���dw$�3e��	B!3I2��.o��L�n���	���������`�`��P�r����Z��>l-t�B���c�q��!#�;<yw8�~;���Y>������	�����uX��u<@���x��O���O�5��{q�<�
��~�d�i���Y�8vg6pZ����'#g6���3�����;��d��!pk��%���z����M�xS�oV*������
���_��88N����f������O�+�k+xG@8���@uu*#���$~�m��.7K���e$�e��hG�+u�
�U�e���,�G�v�-h�MH����n���M`}�F�mi�4�-���]\e_���N��b`b���o~��L9i~��4����9����z�=��$��5C�64��L�����&��+�;J����4d�98#&L�-(��-4�f�c��(�H����=A/����N���:���K
���u	&��c����QO��h��K,���[�iL{����iG<�!��,�0��u�a�g���R����C�S��������l��"��3���R�X��v0�L�[Bo:������s�o$�]�����K�Y��N�s!��J�~6�Z��������a	�i�zSd%����X�Fz�,E�w���%z��E��.��Ho���>z��F���3��e�wl1��+v�}�{W����Bm�MQ}z���NoUl�Bm1�tw��%r�i��������zc���i�w1�Fr�i���-�[L;����9����[L;�}�]�;i���[;��3�Dm��8��S�.��L�B����oU����"�p��������;���
��nu�w!����n�4��E�`�u�"cr�,�����]�-�
�������p��V�������pp���Z
�����[/m
�����b����j���[�R3(��8��X�����5��]p������G������0��[�7�MS'Ms/��;/����5����~Y��2.�L�{��2W)��d!w���g�]�FT����VY��eP\h�l�����l����m��4��J�!��?�����~Y�aY����2.�[�ub(��B���v��N�-����2K���G�;���)��b���D����<'�L����;��VS$���^���6Ge��H.��6Ge��"��6����=s�^���]:��^���XK0w^��N��Y�E�.�\��|Y$Y�@r�Re�\d��w�H3H.�H����,��?K�����w7�a&��2��>�Gr�e�/C�-��b��_�#GY$[�{x7fI��F#	S�6�,�c�,���f�6�]I.�>���>w%���l��jz{$Z��=������_F�2��b���H�Gr���SWY$�?K1v�Er��sc���\l����U���-zn����U���i9��e�\h���t{$Z��������i����m����
��B[�R�E�"����SJ�IY$2�vJ�-��BF�N)W�e�\�������LE7�O7Rt�����H.����sn��ou���b���Vw�I.����AK�t�<7���
P����=��s8�t'�nsXk�E��{�d�)����c���c�n�52z��B��fo;��t��2v`h&�/�#�.��t��2I���~�[�bco�����z��Ak40���~�����jZ.��|�S�K�m�a����fw���=g}������2���������n���.�4�d�E��Q��|TH.�.�w��c���7�F]2�ZJm�j�zm�Y;�� �k�>���F��/?,��s����!���,��cpi/2��c���}c�{����K{j�f�Reh������`�c7��0��C'����O�*=�=<>�����d/��F���n����3����x�Y���N�m�
h������^��Kg
�����cC���]���`�l���WY����sv��L�����������j/��+�7���=������[�B�S�bG2�����>��{Y�bu�w�>�ddv�kG����g7�>���Q�2�a�I�yH�\�;�x�F40?���F��Uf"�C�V��e�����������BL�h75�5��u��������0g/��{��i��E�w��w��"�Cs��Y�|��y�!Ebe��T�ew���}6
�0}o�E�	��������v����0&w�����<52;rm��f�-�F}3/�zG��������������"���N�g�&��3�����k��R�p��%�T�lje��[7�����(SUF����
�j���cA�c�'�b4�a��AW�u3��`dd�M�j@���e���+0��>{a��N(�0���?�h���\�o]�3:�a~�n��BNT#S�\����_����F&���.�>52xm#X_����`>B�}�����{����-�&a���#z��B����[d
�M���[I����
D���f��ls~�4�wsz�?S���[h����Dn��g
I�#z�?�U�.�O�K�`>��>`���y	������^JX=h*����D%�^�����
-�����-�0K:��@o��i00��0}wf,F3�-���Z�����VY����-���w�wDo��W��.��B���Q���[g�?�=6����}�=��oNp!����e��.���(wDo���a��%xs�E��7\��do1oM 
�T
�p1���f��m�� �"�����u����{�N/K_��������5�:�5�eP\d��L�+wFq�DL���%+n���0:����~I��R(.�
�t]vg[�{pn��B����sg[�7��N��^�oPo�g��-��]6�M�
wFr��Fcd���\���mBl�3�]9��Q�K��b�m5�����`�s�T�E�$�\��Cr�#�1���H.�&��r����\dM�7�����6���1���
���������K!��Y�����������2H.�G6��"Zt�����e.�V�x�f��LN�{I�2H��U�������F�V��d9�P�&��B-��v��:����H�"y�Q�7Nt�����s���
 (��S��v��>���Ht�=��q�D�E�e�M�Dt��/���w�K��r��������e�f�8�}�fo��b���r0(��Bk��}�DZ�-S�;$�X��}�#����h�D���Z�]������=�Q�w�3��#V9D��i��b<j�k�>(��Q����5����aShI1l�Z�]��Q~�D���4e�~���=s�n	6���[����^���$�-T#@�]h����Y+��B����$��f��[T����D�b��_��^"��-��	��.�0&��;$����2�Ct��9���2�0�K;�v�scgTM��d���{ 6�e�/��BtX��$�-�aYK%]h��
�(��Bt�OB,|�A3�*�9��3Jb���.�{��l�Ct����D9D�=��(��b�g��n
�+d1Fd���*K��Ct!{�hP�^_�EV����.�XD
l��������c!=�$-����+�fV�b@�����"��;�p��$�M�����V��l7k�n��CI})6&L����bSPR]iT���ci��UF�3K!3�-!�����Ct!��@V?�qLi%]��7���<�.���WD@bg���B�$�����~�-m;-��B�&�|5���A�������
2w�R�Y�����J��X.>S�����X2�}��N�k�o��5������mx��Z�5+��V�����	��X�8����lof�����(��x�v�r�����������e�����$��9��k{����Za/W�?m���5�^��z3��5�vg�a��hM������w��z�^��J�Z-�������U���c����0;���tt����Do�����'�ZXP;��&(S��)�e�0�������h�(o��v���-��I����������i"�D���tjKhq��-������Lm��&��A�(���M'��w��Z�qbKh���
����K������t�2d�8V���^�7�e��5�������@M����(k�T�ti:zYt�n�ue�����b�S�yi���M��,
�7��2Z�Q�����������:{^Gd� �kv%���������ZB�E����2h4�4���4������6sw�����]a��uZ��� C�0O&J�7��r�����i��:HU��N�L::7��R��q�Kis�9.��"s�>J����Ih�4��=���6w��R��q�Kis�9�8HH�4�
��P���&��6w�����i�Kj������2N��~&��o��Kis�U\J�;��R���`�G��2���1T������N��W�_�5 �@�=�����d�1����J��9h�~�	&u��V�9?�B�b����^�)WJjuG�RR�;���Z-f/��@H6�"l����^�9�%��������S_R�E�~�����
G�(�_�i�.��<�Cw�F�C�;�:��C�IOEU�h��tYV�;�eI��$����^U2\�@��jO,���"Jju����Z-2�*�8�}Y�^F_��_����������Vw\�%�Zp��Q�)j��e�g���*fY��6�e���|��j!�=2-a����oZ7��(��exI��(�Kj��\G1ui�k��P�Fi2b��\�%����.��uI��J�B�����*@%MP������Z�3P���Z��v����������7�� i/���&9p��3J/�s���0P����TY��(lJjuGaSR����ZI3]�}Z?�����>z��)��,S�~��pg[\�U�
?��������;��t6*�
���
�C	�jsi[��V���������Y��`j�������������8V�����Y�9�s��Id�
6�`h�;u�F�z�z����_��)T�e�X�(���������]��|�~����������&\[33Y8�_7����u��{������N�pL���kk�CSt8��W�j��X�f���+�^N�EX�BK��p8��{�YAQ���ko*�#���'o�X��G>\������p���ua��������#�b���1�\�Z|����o��}�������N_�������C ����[2�s��p�K�����.���M�����H?�	���0�]{�S#�F��=�\��0a�{���R4_o�S,Hs���f��w��\��H(��| ;}����t:���`�g�?<��������O�?�|q���k�+>Z #�>,F?H����h�
�57���<Zs�h�ou��[F����g�'������}{��GX?��?��u���%���O;��3o4�����z�d��#W��R(��=�x���������x� :.������������W����u
%�/��.q
�2����<�������h�K;@�b2p�)��f]]�����B+K� ��=F����p���5�-C��[T3ztLu����o�)�N(�$��o��8;���gk;8w�o�k���,R����psA���+�i1rs�>�vZE����~�f:E�ikd�NJ�f�����D��� �4;����Eq�����}47%n��mu)��&m��@[0D�]�"]�i��a}���>���6�Z� be{��S�}:�;{�n�x'k���D5�����Z!�����M%p�w�o��WrtL��������s�76d����~
m�4�#��
�0mmvx*05��SK���$�2["&���	z������O}8e8��!(����U`*���)��B
��6�c�Y����f�]��������
�#.`�Q���j���
6,�=\;�w(H$�N�
��[J�g�Sz�1tL���lb���o�e���f��Ak�vx�G4��N�������Z����$|�9;s�3�z#6��'�����k^�q��J���&D��?�9�����me�V�����%�D���t
��Z@��]L���ny�R�����iK���ho9�"�2����3h4&�	R��DU�Q���N����������������b�rf����g��k2���8�?�8�����M��&k���U�2��BkQ�/����������aI7��>y��������F���Dx�X�L=!���~8�u��w��s *�O`9���>�v�/6K�
�P13�n�_���^�
l/��|t6{���pz������E5Bmh�������}�����Y����������xX�O��-���_�y�/"g�?���QS<�������?���j����C��lmOZ����>w�X��j��
��"^�~�>��v�KE�%�D^�h�VN"�x��?~���&�{:����}�h^3��`#{1W�@�>?GCf�q������U�L7������O��wn��W>vk��g
=�TY;@��n���WPkl�#V�Q���#���$McVf����sl{�o��I(a������	���DR�
�3���i<�r�����uN�|����t�Jg��n����]�d���Z����*p�6�\��k
x�����X�����	
��s��Ai(��?A}��%��DY;L�D�=����C�����z��x3=��$8��mBse
R���(��`��M!�^.��,fj�k��|��<���%��r�XR����=4X����!�V�~)��A?�	T������66�M�S�n4��fw����b��*d��B'�J��T2���??}����������o�����U�~��E�y�����,�Wb�)�[g���l������b��S��rY�Ebc������|u*�/�bS�|6�cb��?C����/��|v��G.
�K���h �;�!�1��(OmR� m�0�Dh���<�\��&��i\��I	��K�O���������q:�� 9Rr�����**2�N�/3b���hvg:����;������W�+5�EIl���������������W?��������N��z���^�N:�� V��������Y��U���k���(i4LH�U��}�����n�p�upZ\�����
���>��mt�
��n������*� 9�����?�T���m�KY���d�U�����/�S5���h(*w�D�<<�"Y.Vx;��.K�=Ao�L���;:��	���1�%��!�dZ��8����9���z
��{��nh�KP��>a��	�������]�l�N��A��oH/�g��l��j�B��A�&s���0������VC�4B-���&����Hkmr��������g+c�Y�z�[Dp�����b|�H-A�ze{BK�k��e�!]D���]wN,2�!�$�8$����(���K9+����V��nz�#�3qy�%����h��Bb�y��O��a���������Wo�/�Q
�����!��s��'���)m��>)��amd���A����?B���W������ �'�3l���x������X� .�@'��bm��k
c���;f�R���������]�@5�J%:�3����&��@�D�����5�I��7
�a�50.���2{2�{������N���L�l"N�a��Io�!_K��g`��b�
*��$�g

^�\�A`_H~U���T1T`�����������.�?:�B�S���s$J����"x��X0��X5k^:S���_7Np]�h/����������s���X.�����;>t	��pB�<E�?����0������m;C8����ik�*f<����@���Y\�;p���c�6�*�@#��a��W�x,��g�o��>:���r	6����p����Y�0������JYC*8�@��������x���V�i��+�m�d�]���f'4��4��aLX���Of��M�El�Mc��S�����,;
���<��'�7*��Z-����A��L�#P�\������G�����/�G������]*�`��3'�K*zc&NL�snk7MT@�
�1�3��O?������:?�ic��r/_����s�����)��~�?;|
�}�H�}S�V�
�o���P
���"�C���H������K?X]���������<�t*���S�k��<�*.�?]@���������"����o!��4���N�5�As2�5m����C���S]����6���[��i6��<�By�Z8$�����5$���������-�����]i��MTY�d+����$6hT���+2s��
�m�����t���G���������-���7WL����}^`)�d��('V?]{��{l���o�9�T�q��I^�S�
�����=4f��:6J"(2����OfY2����f=�����������B�l��K�w�W�P�!Wpv���w���uk���Y�_�{��t�������=�Y�3U��k�7_���}~��X��g�"\	�w��EX�a��!�
Q;�DQ��&9��H�0n��k�7�MN�q���:(G��~�s\��:��a�Vv���!�jZ������s��d�!5&���v<��d���s"HG`r�	p�����"|��jYuk4�$��M�$��#5v�4��sL���\��,��a��~�Z���!`�W����t���/RCk�����_���
	��A
�����cL��j�����^��Fx����6a#���C����'�p��.������S�3%�=T����<o�O��)�=tC���F�2��Y��Z/u����p
�0#
������d�[�!}b��&"C��AQ>����x�X��+�&����M��E���:������}$')K�������:�h����������]�7z"Fc"t�U�$s�<���E��GqU/ M���
�������������X��d�/��3t���1�i�o��B���2gpFU�L�Y����qi�@�����F�j�|Z�*������xp��pB���QG_��Z��I�{�n����H8�e�H�n��J�&��u
�%��~�mX���g��6�7\1������^0���;h�"��,����K{1�S����&�����h{1�4p(�[��OV���Me6+�p���.����hd		r`$�"��q� ���2U^��7T���3m�8��k�����6pn����$�'_� ���
>l�@w�j%+���m�zl�l�%m����1����%��_S�{�1%���^�>�-*-)I���n������[���A��x�Y.���F��>y������O�D��P���E���	]%E������t��S�L���\��+�/,���o��������[����@�����8��o�f%6Z�!�O
���qTrL%�\��d���B����[����?;V�����(����,���	S���c#'c�1���	�=X��7���A��W�sh<c��W�+[0_-?C�jz�K;cuz������e<!� x�o�����L�K|a���gJ���l��O#���4�43����?pV�w�:	n5YJ��q�����_���'0G�,{�g��f��N�ouZ��
�j��8;i��'~���^�Bg�>;QjJ'y+�l����K���s�1W����������������������`��Y	�},+���.;���1�zQN�Z��qI|��������B�|w��I_H��4C�;dFGT�f���e��w?�{�����o#�#����C��
���P��c����j?L<����{.��0�v�����z�E|�YLQ.��o������,�f�\�+s�����q�s�`��`�1��X�\���S�A��8������lW�v�/�;��7��0�+�b���r�;n�C���������n�.���eu_��D@q$Y�3�F���2y+�#Ak�#���x��|z����!X��UQ�U}��[��..�f�y��.�?wO2F���S'M������]�n���z'��\��{���K�.�z�2oS��p�L������}Q�U��u�����4E�sg�O����G�����tg{�a�6��E���].�g(����2:�m�������da�q33���������[�gd��rt��~���!��PL���������'_�k����7�����,��<�G�,�����5������YE�`�>Ijp4��[����\����`� ��;�������������	�����y%������(������~P������S��o�������&����^M@�����_��G
rM����S
CJZ_&�*qW�5��[�_��o�,�j�,��XjK����I���q�����_�-���3.��h7
���rf*���d�zn^���������pL����{����_|����A:�d���0O5�o'���_��I�7�w.�W�z��v�z�EW���`�J���V�����
��#���H
Y�9qgr�C$/Z�|`\�K�S9v����C��k{�~�1rXT<�_�O>O2~��q����8���z�y���n�r��/��O���.�mg�]�����lsl/�s�me���u����OXJ�k8^a��sN�p[�K\��I��,��GJ�x�x��~���c�<��P�_�h6������8��������1:��'�c������C�m���w��Jw��;Z$% q�I\�K��!4��w�u�+?XG5��)@�1����
��'�qTE���_n���f���a�w���Y��2�����.[db����.V+:�D��8K�o�\�\�_X��
Aw+3�bLl�Z�v�����v*�l����9%"�2�?����?�_b��!�����3
�F2�����W���A����DD����a�bG���]��?�5��K��Uw�3�MY�~�zCi*a�I��{!9����L�.����>Dg����sn��G$3@�����s��\$3g���
=������,��1(�AF��5��]=���|�	�xk���$�A?����R1q���%L���cm������a��
�z����C-���}I�T\w�s�^1e����=:&�(��������j��4��TD��kN�����5�+8��<��+��sb\:0@��)vN`�M�I�����#����R�i�tE���	~��~6xO��d}x��!�	8�-�p�%�*c-�3u��3��$��uS��i�����U����;�V$w����5{-�F3a�c��!�����{%��'���	�(Y����7.%��.-B`_�X����"����������N[9x_��B����	����}�!���6�`�&��'G����(��<�o���JH�Y�������B��ogG��38�����r/�������~����/��Y1
�����U��|Q����,����F�[��AGF�^
�����W�c�/R���?�Z�2����`,re��bX0n���C��$Z��KD�%s������d�y��\tJ]����g�T���Z�P�C�w���]���]�fx/#(�������P�z�v���$��Qd���nPd�$*�|��Z����!K�3�=r~�e��k
N����X��i�����~���C0�&.Q�$���`��@��t��������};����������_�Jd���qxV��d��	d��5�ql���wO�	|C�O�;�����/��m�`Q�.��A�l��8��gz�[����}&j������-���g�f�u�6^�=�uLRF|�f��,Y�'����-��D����W����Y��O��;��^�	�i���_���mD<?;+6na�f D��?�4�����x$���	G
J��[����^�y9��_{�z��l*r����4v1cFL#���x}b(���E	��`����~��p���N��dh=�2���E�*���{��%9`�����l@�-02� ������fU�u�Th&A�)4����&c��_7����"�v^o	�D���4|��43�tY�����U���Y��������N��$�  `�!�a�`�5��0���j��U�?���2�o�U��axZ�j�W�z�zS��}��s���w���"E1A14����L14������ )6�-���<��k���|�gs��U��]�9���4���`�&�|=���"��	��l�:�������bo�0,�!N����[��������4�)U,�@�3*��b�\�����"�%mjw��P��Z|���y5m���}0j�B�m�\�*�m�e;�����)�6?�t;�,�S�a�d�������M	ZY/����,���	f���V�r�$����$��k~���S<�5FD/�D��8�������b���,�p���Lrbh>h��o�ab����E��('\l��;oa�p>�F��2�<��^h���kJ���9�/k%�e���5��4��F]O&�C�YO<����<>�ee�$r3�}�c�������!m4�$�����d7|Mv��;A��}��Md��3�'���@��OiyN�9W�9'����U�'�#��������Mf�bwU��?3rcA��3������L2�*vI���a��b#�������Y��u��	����xh;w��7��6o��M����T�}\����I���	����06^F�,������*����/�(|_�P<��B�Fw�*�,���ZQ3�`_�������Fu��
n_q�`��I�-�u
Tl'1E	)��s�uM�h;�_���s��u:����6�I{W�
�I�����Z��{����Z�bQD��$�\D��+����h<f�A�H�Fn�C��9�#3���
���\6{����7� �*��c2��@�M
Nj��#<����w.�6��=�O�zJN��A����
��
2�*�����m��nH�����|COc0�]�X�������q���,���p��J��
�cy��2W�N��7/�7��e��h5o��0`����;�&��1P����>��f>�%�^�=
��U�s}]oK[�	F�� /�7
v��z����@�����O���O����7�V���f�Cv'dBL������P��D�dH�Q��D���
����3���=����.j��Y8�J��+�j	g`��Yg`Y'6`p��s���G�E�x��og������:�%�]y�+�d|��4��D��!$����A=3PDM�'��KY'l����G5���WYA�Ih&��)�)e��dzg��B�p+���u����P[��b=�uY�C7�5��<E54+�Z�)��9������t��~�3
u<|z`W&h���P�d��}[~�Z�b���C���
�<$=����7�U�����V[�9�5�L+o]US�8�T	�lJ����*�����`�s]K�Zv��[|�7mr��%�7g�\V+���]hN�t<d���)�����:�<z������>���������3�Z��e�rM|�:��Y*���SHH8��@SH��)�_!�U����%��;��CLT��y_�:��, 
U�����!-�����_HQ�(##�Q����5b�lb�X��v���iVK9� �#���R\&��@�M��� R�q��X�L���i#��Y!c��B�:h�B������FU
����@�v�i;"�-�S�� j��]������B�� e"J�
S��������M�������B�)���MNw�x���b���s��~.TM�.��'2R��"�]�Qu�&I��x
����Fuo��h����;��>g{�8��M��MI���A�����c����pE�R��b����+|L��Y&r�����I:���+8��w��Z�74���/�h%�v��c����^��y���O]}��!�$��R�z�����s�%�����p����0�A���[���\Ua@�A3E1 �������+Y�e/���I����J���
��L9[z��g� 9��v�UxkE�*x�����mIy�"{�v�A�F��mAs���L�I,����";��v�;�����O��HD��B*O�m�vz��������s��������3x 9�s&�5w6
��v�}��c�-�*��w�>��?�n�r�<��F������;+���C���Z����|[GN�O�y������<��Y;�WU(JLj��D���?���lH�H���S4�xY�f��N���<�I:�6����i&E��?��&�"��iM����a��c���$�WE/�s)��i���U��O�h)L*1j�UV��\M��g�[B8��o\�o�s�	�E�;���s��r���i�Q���4�(�VLl�0�{_o��pO$�\p
�J�	q�4� Q�2]������z�&������N}*q>��GO.7�E��&$*rAF���\�U"_9#j��������$NHOd������9���;�\��n�AQ!}���M�Sw�pH����������@��m�x���t��+�+�����	hO�bI����+��P�|C��
e��$��*e��l5z�N�����5���Z�9S�Q��h�3}"M�����P��bh�r��4�yN;���l[�}G[��*�����4���
l��X�����z�\�zh�v�O��sg�����
B���6[��A����1��E�������	����]f���d��+c�W���>��B�n���3	��=-x�g�>��/� �D�N_u�����
�����-�a�M���$)�������f���iV	�H^�e{z������w�un�Yj[����6����41���������?6I�����?l��t? ��q����H����9�<���'m��S?`6�w�2^$���4���G�U����?���~w�x�SS3�4��4�}��o�E��yQ�����C���������%^�'�
#59Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#58)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

-I shortened the data example in the README so it would comfortably
fit on two lines. Spreading it out over three lines doesn't match
what's in the data files. It's valid syntax, but real data is
formatted to at most two lines (See rewrite_dat.pl. Hmm, maybe I
should make that more explicit elsewhere in the README)

Well, as I said, I hadn't really reviewed the .dat files, but if that's
what you're doing I'm going to request a change. Project style is to
fit in 80 columns as much as possible. I do not see a reason to exempt
the .dat files from that, especially not since it would presumably be a
trivial change in rewrite_dat.pl to insert extra newlines between fields
when needed. (Obviously, if a field value is so wide it runs past 80
columns on its own, it's not rewrite_dat.pl's charter to fix that.)

Open items:
-Test MSVC.

Again, while I'd be happy if someone did that manually, I'm prepared
to let the buildfarm do it.

-Arrange for rewrite_dat.pl to run when perltidy does.

What I was thinking we should have is a convenience target in
include/Makefile to do this, say "make reformat-dat-files".
I'm not that excited about bundling it into pgindent runs.

-Maybe document examples of how to do bulk-editing of data files?

+1. In the end, that's the reason we're doing all this work, so showing
people how to benefit seems like a good thing.

regards, tom lane

#60John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#59)
Re: WIP: a way forward on bootstrap data

On 3/25/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Well, as I said, I hadn't really reviewed the .dat files, but if that's
what you're doing I'm going to request a change. Project style is to
fit in 80 columns as much as possible. I do not see a reason to exempt
the .dat files from that, especially not since it would presumably be a
trivial change in rewrite_dat.pl to insert extra newlines between fields
when needed. (Obviously, if a field value is so wide it runs past 80
columns on its own, it's not rewrite_dat.pl's charter to fix that.)

This feature is working now. I've attached a 100-line sample of all
the catalogs' files for viewing. Note, this is pretty raw output,
without the clean-up step from patch 0002. In the most of the original
DATA() lines, there was no spacing between entries except in some
cases to separate groups (often with a comment to describe the group).
My clean-up patch tried to make that more consistent. For this sample,
it would add blank lines before the comments in pg_amop, and remove
blank lines from the first few entries in pg_type. If you wanted to
opine on that before I rework that patch, I'd be grateful.

Also, these data entries have default values removed, but they don't
have human-readable OID macros. (I'll have to adjust that script to
the 80-column limit as well).

-Arrange for rewrite_dat.pl to run when perltidy does.

What I was thinking we should have is a convenience target in
include/Makefile to do this, say "make reformat-dat-files".
I'm not that excited about bundling it into pgindent runs.

I've attached a draft patch for this. If it's okay, I'll incorporate
it into the series. I think reformat_dat_files.pl also works as a
better script name.

-Maybe document examples of how to do bulk-editing of data files?

+1. In the end, that's the reason we're doing all this work, so showing
people how to benefit seems like a good thing.

It seems like with that, it'd be good to split off the data-format
section of the README into a new file, maybe README.data, which will
contain code snippets and some example scenarios. I'll include the
example pg_proc.prokind merger among those.

-John Naylor

#61John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#60)
2 attachment(s)
Re: WIP: a way forward on bootstrap data

With the attachments this time.

-John Naylor

Attachments:

80-column-data-file-sample-v1.txttext/plain; charset=US-ASCII; name=80-column-data-file-sample-v1.txtDownload
reformat_dat_files_make_target.patchtext/x-patch; charset=US-ASCII; name=reformat_dat_files_make_target.patchDownload
diff --git a/src/include/Makefile b/src/include/Makefile
index 59e18c7..12e9d60 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -71,6 +71,13 @@ uninstall:
 # heuristic...
 	rm -rf $(addprefix '$(DESTDIR)$(includedir_server)'/, $(SUBDIRS) *.h)
 
+# location of Catalog.pm
+catalogdir = $(top_srcdir)/src/backend/catalog
+
+reformat-dat-files:
+	$(PERL) -I $(catalogdir) $< catalog/rewrite_dat.pl -o catalog catalog/pg_*.dat
+
+.PHONY: reformat-dat-files
 
 clean:
 	rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h
#62Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#61)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

With the attachments this time.

Layout of .dat files seems generally reasonable, but I don't understand
the proposed make rule:

+reformat-dat-files:
+	$(PERL) -I $(catalogdir) $< catalog/rewrite_dat.pl -o catalog catalog/pg_*.dat

This rule has no prerequisite, so what's $< supposed to be? Also, I think
the rule probably ought to be located in src/include/catalog/Makefile,
because that's typically where you'd be cd'd to when messing with the
.dat files, I'd think. (Hm, I see no such makefile, but maybe it's time
for one. A convenience rule located one level up doesn't seem very
convenient.)

My clean-up patch tried to make that more consistent. For this sample,
it would add blank lines before the comments in pg_amop, and remove
blank lines from the first few entries in pg_type. If you wanted to
opine on that before I rework that patch, I'd be grateful.

No particular objection to either.

-Maybe document examples of how to do bulk-editing of data files?

+1. In the end, that's the reason we're doing all this work, so showing
people how to benefit seems like a good thing.

It seems like with that, it'd be good to split off the data-format
section of the README into a new file, maybe README.data, which will
contain code snippets and some example scenarios. I'll include the
example pg_proc.prokind merger among those.

It would be more work, but maybe we should move this into the main
SGML docs. It seems rather silly to have SGML documentation for the
.BKI file format, which now will be an internal matter that hardly
any developers need worry about, but not for the .DAT file format.
But I understand if that seems a bridge too far for today --- certainly
a README file is way better than nothing.

regards, tom lane

#63John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#62)
Re: WIP: a way forward on bootstrap data

On Mar 26, 2018, at 10:44 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote

Layout of .dat files seems generally reasonable, but I don't understand
the proposed make rule:

+reformat-dat-files:
+    $(PERL) -I $(catalogdir) $< catalog/rewrite_dat.pl -o catalog catalog/pg_*.dat

This rule has no prerequisite, so what's $< supposed to be? Also, I think
the rule probably ought to be located in src/include/catalog/Makefile,
because that's typically where you'd be cd'd to when messing with the
.dat files, I'd think. (Hm, I see no such makefile, but maybe it's time
for one. A convenience rule located one level up doesn't seem very
convenient.)

Oops, copy-pasto. And I’ll see about a new Makefile.

It seems like with that, it'd be good to split off the data-format
section of the README into a new file, maybe README.data, which will
contain code snippets and some example scenarios. I'll include the
example pg_proc.prokind merger among those.

It would be more work, but maybe we should move this into the main
SGML docs. It seems rather silly to have SGML documentation for the
.BKI file format, which now will be an internal matter that hardly
any developers need worry about, but not for the .DAT file format.
But I understand if that seems a bridge too far for today --- certainly
a README file is way better than nothing.

Makes sense on all points. I’m not optimistic about creating a new sgml doc on time, but I’ll keep it in mind.

-John Naylor

#64John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#63)
4 attachment(s)
Re: WIP: a way forward on bootstrap data

Tom Lane wrote:

-Maybe document examples of how to do bulk-editing of data files?

+1. In the end, that's the reason we're doing all this work, so showing
people how to benefit seems like a good thing.

I'll hold off on posting a new patchset until I add this to the
documentation, but I wanted to report on a couple of other things:

While adjusting to the 80-column limit, I encountered a separation of
concerns violation between Catalog.pm and reformat_dat_files.pl that I
hadn't noticed before. Fixing that made things easier to read, with
fewer lines of code.

Speaking of bulk editing, that would be done via adopting
reformat_dat_files.pl to the task at hand. I did this myself for two
of the conversion helper scripts. However, enough bitrot has now
occurred that to make the relationship murky. Since I had to adopt
them to the 80-column limit as well, I shaved all the irrelevant
differences away, and now they're just a small diff away from the
reformat script. I also added block comments to help developers find
where they need to edit the script. Since reformat_dat_files.pl has
been substantially altered, I'll attach it here, along with the diffs
to the the helper scripts.

I wrote:

I’ll see about a new Makefile.

I've attached a draft of this. I thought about adding a call to
duplicate_oids here, but this won't run unless you've run configure
first, and if you've done that, you've likely built already, running
duplicate_oids in the process.

I think I'll consolidate all documentation patches into one, at the
end of the series for maximum flexibility. I liked the idea of
spreading the doc changes over the patches, but there is not a huge
amount of time left.

-John Naylor

Attachments:

remove_pg_type_oid_symbols.difftext/plain; charset=US-ASCII; name=remove_pg_type_oid_symbols.diffDownload
--- /home/john/pgdev/postgresql/src/include/catalog/reformat_dat_files.pl	2018-03-27 18:04:54.698464144 +0700
+++ remove_pg_type_oid_symbols.pl	2018-03-27 18:13:42.270611897 +0700
@@ -1,18 +1,12 @@
 #!/usr/bin/perl -w
 #----------------------------------------------------------------------
 #
-# reformat_dat_files.pl
-#    Perl script that reads in a catalog data file and writes out
-#    a functionally equivalent file in a standard format.
-#
-#    Metadata entries (if any) come first, with normal attributes
-#    starting on the following line, in the same order they would be in
-#    the actual table.
+# remove_pg_type_oid_symbols.pl
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# /src/include/catalog/reformat_dat_files.pl
+# /src/include/catalog/remove_pg_type_oid_symbols.pl
 #
 #----------------------------------------------------------------------
 
@@ -85,22 +79,6 @@
 	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 1);
 }
 
-########################################################################
-# At this point, we have read all the data. If you are modifying this
-# script for bulk editing, this is a good place to build lookup tables,
-# if you need to. In the following example, the "next if !ref $row"
-# check below is a hack to filter out non-hash objects. This is because
-# we build the lookup tables from data that we read using the
-# "preserve_formatting" parameter.
-#
-##Index access method lookup.
-#my %amnames;
-#foreach my $row (@{ $catalog_data{pg_am} })
-#{
-#	next if !ref $row;
-#	$amnames{$row->{oid}} = $row->{amname};
-#}
-########################################################################
 
 # Write the data.
 foreach my $catname (@catnames)
@@ -131,10 +109,15 @@
 			my %values = %$data;
 
 			############################################################
-			# At this point we have the full tuple in memory as a hash
-			# and can do any operations we want. As written, it only
-			# removes default values, but this script can be adopted to
-			# do one-off bulk-editing.
+			# Remove pg_type OID symbols if they can match the rule
+			# we use to generate them.
+			if ($catname eq 'pg_type' and exists $values{oid_symbol})
+			{
+				my $symbol = form_pg_type_symbol($values{typname});
+				delete $values{oid_symbol}
+				  if defined $symbol
+					and $values{oid_symbol} eq $symbol;
+			}
 			############################################################
 
 			if (!$full_tuples)
@@ -181,6 +164,26 @@
 	}
 }
 
+########################################################################
+# Determine canonical pg_type OID #define symbol from the type name.
+sub form_pg_type_symbol
+{
+	my $typename = shift;
+
+	# Skip for rowtypes of bootstrap tables.
+	return
+	  if $typename eq 'pg_type'
+	    or $typename eq 'pg_proc'
+	    or $typename eq 'pg_attribute'
+	    or $typename eq 'pg_class';
+
+	$typename =~ /(_)?(.+)/;
+	my $arraystr = $1 ? 'ARRAY' : '';
+	my $name = uc $2;
+	return $name . $arraystr . 'OID';
+}
+########################################################################
+
 # Leave values out if there is a matching default.
 sub strip_default_values
 {
convert_oid2name.difftext/plain; charset=US-ASCII; name=convert_oid2name.diffDownload
--- /home/john/pgdev/postgresql/src/include/catalog/reformat_dat_files.pl	2018-03-27 18:41:30.097479755 +0700
+++ convert_oid2name.pl	2018-03-27 18:17:16.154549365 +0700
@@ -1,18 +1,14 @@
 #!/usr/bin/perl -w
 #----------------------------------------------------------------------
 #
-# reformat_dat_files.pl
-#    Perl script that reads in a catalog data file and writes out
-#    a functionally equivalent file in a standard format.
-#
-#    Metadata entries (if any) come first, with normal attributes
-#    starting on the following line, in the same order they would be in
-#    the actual table.
+# convert_oid2name.pl
+#    Perl script that replaces some numeric OIDs with human readable
+#    macros.
 #
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# /src/include/catalog/reformat_dat_files.pl
+# /src/include/catalog/convert_oid2name.pl
 #
 #----------------------------------------------------------------------
 
@@ -85,22 +81,68 @@
 	$catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 1);
 }
 
-########################################################################
-# At this point, we have read all the data. If you are modifying this
-# script for bulk editing, this is a good place to build lookup tables,
-# if you need to. In the following example, the "next if !ref $row"
-# check below is a hack to filter out non-hash objects. This is because
-# we build the lookup tables from data that we read using the
-# "preserve_formatting" parameter.
-#
-##Index access method lookup.
-#my %amnames;
-#foreach my $row (@{ $catalog_data{pg_am} })
-#{
-#	next if !ref $row;
-#	$amnames{$row->{oid}} = $row->{amname};
-#}
-########################################################################
+# Build lookup tables.
+# Note: the "next if !ref $row" checks below are a hack to filter out
+# non-hash objects. This is because we build the lookup tables from data
+# that we read using the "preserve_formatting" switch.
+
+# Index access method lookup.
+my %amnames;
+foreach my $row (@{ $catalog_data{pg_am} })
+{
+	next if !ref $row;
+	$amnames{$row->{oid}} = $row->{amname};
+}
+
+# Type oid lookup.
+my %typenames;
+$typenames{'0'} = '0';  # Easier than adding a check at every type lookup
+foreach my $row (@{ $catalog_data{pg_type} })
+{
+	next if !ref $row;
+	$typenames{$row->{oid}} = $row->{typname};
+}
+
+# Opfamily oid lookup.
+my %opfnames;
+foreach my $row (@{ $catalog_data{pg_opfamily} })
+{
+	next if !ref $row;
+	$opfnames{$row->{oid}} = $amnames{$row->{opfmethod}} . '/' . $row->{opfname};
+}
+
+# Opclass oid lookup.
+my %opcnames;
+foreach my $row (@{ $catalog_data{pg_opclass} })
+{
+	next if !ref $row;
+	$opcnames{$row->{oid}} = $amnames{$row->{opcmethod}} . '/' . $row->{opcname}
+	  if exists $row->{oid};
+}
+
+# Operator oid lookup.
+my %opernames;
+foreach my $row (@{ $catalog_data{pg_operator} })
+{
+	next if !ref $row;
+	$opernames{$row->{oid}} = sprintf "%s(%s,%s)",
+	  $row->{oprname}, $typenames{$row->{oprleft}}, $typenames{$row->{oprright}};
+}
+
+# Proc oid lookup.
+my %procoids;
+foreach my $row (@{ $catalog_data{pg_proc} })
+{
+	next if !ref $row;
+	if (defined($procoids{ $row->{proname} }))
+	{
+		$procoids{ $row->{proname} } = 'MULTIPLE';
+	}
+	else
+	{
+		$procoids{ $row->{oid} } = $row->{proname};
+	}
+}
 
 # Write the data.
 foreach my $catname (@catnames)
@@ -131,17 +173,102 @@
 			my %values = %$data;
 
 			############################################################
-			# At this point we have the full tuple in memory as a hash
-			# and can do any operations we want. As written, it only
-			# removes default values, but this script can be adopted to
-			# do one-off bulk-editing.
-			############################################################
 
+			# We strip default values first because at the time it seemed
+			# easier to check for existence rather than add sentinel values
+			# to the lookups.
 			if (!$full_tuples)
 			{
 				strip_default_values(\%values, $schema, $catname);
 			}
 
+			# Replace OIDs with names
+
+			if ($catname eq 'pg_proc')
+			{
+				$values{prorettype} = $typenames{$values{prorettype}};
+				if ($values{proargtypes})
+				{
+					my @argtypeoids = split /\s+/, $values{proargtypes};
+					my @argtypenames;
+					foreach my $argtypeoid (@argtypeoids)
+					{
+						push @argtypenames, $typenames{$argtypeoid};
+					}
+					$values{proargtypes} = join(' ', @argtypenames);
+				}
+				if ($values{proallargtypes})
+				{
+					$values{proallargtypes} =~ s/[{}]//g;
+					my @argtypeoids = split /,/, $values{proallargtypes};
+					my @argtypenames;
+					foreach my $argtypeoid (@argtypeoids)
+					{
+						push @argtypenames, $typenames{$argtypeoid};
+					}
+					$values{proallargtypes} = '{' . join(',', @argtypenames) . '}';
+				}
+			}
+			elsif ($catname eq 'pg_aggregate')
+			{
+				$values{aggsortop}     = $opernames{$values{aggsortop}}
+				  if exists $values{aggsortop};
+				$values{aggtranstype}  = $typenames{$values{aggtranstype}};
+				$values{aggmtranstype} = $typenames{$values{aggmtranstype}}
+				  if exists $values{aggmtranstype};
+			}
+			elsif ($catname eq 'pg_amop')
+			{
+				$values{amoplefttype}   = $typenames{$values{amoplefttype}};
+				$values{amoprighttype}  = $typenames{$values{amoprighttype}};
+				$values{amopmethod}     = $amnames{$values{amopmethod}};
+				$values{amopfamily}     = $opfnames{$values{amopfamily}};
+				$values{amopopr}        = $opernames{$values{amopopr}};
+				$values{amopsortfamily} = $opfnames{$values{amopsortfamily}}
+				  if exists $values{amopsortfamily};
+			}
+			elsif ($catname eq 'pg_amproc')
+			{
+				$values{amprocfamily}    = $opfnames{$values{amprocfamily}};
+				$values{amproclefttype}  = $typenames{$values{amproclefttype}};
+				$values{amprocrighttype} = $typenames{$values{amprocrighttype}};
+			}
+			elsif ($catname eq 'pg_cast')
+			{
+				$values{castsource} = $typenames{$values{castsource}};
+				$values{casttarget} = $typenames{$values{casttarget}};
+			}
+			elsif ($catname eq 'pg_opclass')
+			{
+				$values{opcmethod}  = $amnames{$values{opcmethod}};
+				$values{opcfamily}  = $opfnames{$values{opcfamily}};
+				$values{opcintype}  = $typenames{$values{opcintype}};
+				$values{opckeytype} = $typenames{$values{opckeytype}}
+				  if exists $values{opckeytype};
+			}
+			elsif ($catname eq 'pg_operator')
+			{
+				$values{oprleft}   = $typenames{$values{oprleft}};
+				$values{oprright}  = $typenames{$values{oprright}};
+				$values{oprresult} = $typenames{$values{oprresult}};
+				$values{oprcom}    = $opernames{$values{oprcom}}
+				  if exists $values{oprcom};
+				$values{oprnegate} = $opernames{$values{oprnegate}}
+				  if exists $values{oprnegate};
+			}
+			elsif ($catname eq 'pg_opfamily')
+			{
+				$values{opfmethod}  = $amnames{$values{opfmethod}};
+			}
+			elsif ($catname eq 'pg_range')
+			{
+				$values{rngtypid}   = $typenames{$values{rngtypid}};
+				$values{rngsubtype} = $typenames{$values{rngsubtype}};
+				$values{rngsubopc}  = $opcnames{$values{rngsubopc}};
+			}
+
+			############################################################
+
 			print $dat "{";
 
 			# Separate out metadata fields for readability.
@@ -286,7 +413,7 @@
 sub usage
 {
 	die <<EOM;
-Usage: rewrite_dat.pl [options] datafile...
+Usage: convert_oid2name.pl [options] datafile...
 
 Options:
     -o               output path
v13alpha-reformat_dat_files.plapplication/x-perl; name=v13alpha-reformat_dat_files.plDownload
v13alpha-Makefileapplication/octet-stream; name=v13alpha-MakefileDownload
#65John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#64)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

Attached is v13, rebased against b0c90c85fc.

Patch 0001:
-The data files are formatted to at most 80 columns wide.
-Rename rewrite_dat.pl to reformat_dat_file.pl.
-Refactor Catalog.pm and reformat_dat_file.pl to have better
separation of concerns.
-Add src/include/catalog/Makefile with convenience targets for
rewriting data files.

Patch 0002:
-Some adjustments to the post-conversion cleanup of data files.

Patch 0005:
-I made a stub version of Solution.pm to simulate testing the MSVC
build. This found one bug, and also allowed me to bring in some of the
more pedantic dependencies I added to utils/Makefile.

Patch 0009:
-New patch that puts all doc changes in one patch, for flexibility.
-Split the parts of catalog/README having to do with data into a new
README.data file. Add recipes for how to edit data, with code
examples.

On 3/26/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

It would be more work, but maybe we should move this into the main
SGML docs. It seems rather silly to have SGML documentation for the
.BKI file format, which now will be an internal matter that hardly
any developers need worry about, but not for the .DAT file format.
But I understand if that seems a bridge too far for today --- certainly
a README file is way better than nothing.

I had an idea to make it less silly without doing as much work: Get
rid of the SGML docs for the BKI format, and turn them into
bootstrap/README. Thoughts?

And in the department of second thoughts, it occurred to me that the
only reason that the .dat files are in include/catalog is because
that's where the DATA() statements were. Since they are separate now,
one could make the case that they actually belong in backend/catalog.
One trivial advantage here is that there is already an existing
Makefile in which to put convenience targets for formatting. On the
other hand, it kind of makes sense to have the files describing the
schema (.h) and the contents (.dat) in the same directory. I'm
inclined to leave things as they are for that reason.

-John Naylor

Attachments:

v13-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v13-bootstrap-data-conversion.tar.gzDownload
#66Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#65)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

And in the department of second thoughts, it occurred to me that the
only reason that the .dat files are in include/catalog is because
that's where the DATA() statements were. Since they are separate now,
one could make the case that they actually belong in backend/catalog.
One trivial advantage here is that there is already an existing
Makefile in which to put convenience targets for formatting. On the
other hand, it kind of makes sense to have the files describing the
schema (.h) and the contents (.dat) in the same directory. I'm
inclined to leave things as they are for that reason.

Yeah. The fact that, eg, both the .h and .dat files are inputs to
duplicate_oids and unused_oids makes me think it's better to keep
them together.

I'd actually been thinking of something that's about the reverse:
instead of building the derived .h files in backend/catalog and
then symlinking them into include/catalog, it'd be saner to build
them in include/catalog to begin with. However, that would mean
that the Perl scripts need to produce output in two different
places, so maybe it'd end up more complicated not less so.
In any case, that seems like something to leave for another day.

regards, tom lane

#67Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#66)
Re: WIP: a way forward on bootstrap data

I'm starting to look through v13 seriously, and one thing struck
me that could use some general discussion: what is our policy
going to be for choosing the default values for catalog columns?
In particular, I noticed that you have for pg_proc

bool proisstrict BKI_DEFAULT(f);

char provolatile BKI_DEFAULT(v);

char proparallel BKI_DEFAULT(u);

which do not comport at all with the most common values in those
columns. As of HEAD, I see

postgres=# select proisstrict, count(*) from pg_proc group by 1;
proisstrict | count
-------------+-------
f | 312
t | 2640
(2 rows)

postgres=# select provolatile, count(*) from pg_proc group by 1;
provolatile | count
-------------+-------
i | 2080
s | 570
v | 302
(3 rows)

postgres=# select proparallel, count(*) from pg_proc group by 1;
proparallel | count
-------------+-------
r | 139
s | 2722
u | 91
(3 rows)

(Since this is from the final initdb state, this overstates the number
of .bki entries for pg_proc a bit, but not by much.)

I think there's no question that the default for proisstrict ought
to be "true" --- not only is that by far the more common choice,
but it's actually the safer choice. A C function that needs to be
marked strict and isn't will at best do the wrong thing, and quite
likely will crash, if passed a NULL value.

The defaults for provolatile and proparallel maybe require more thought
though. What you've chosen corresponds to the default assumptions of
CREATE FUNCTION, which are what we need for user-defined functions that
we don't know anything about; but I'm not sure that makes them the best
defaults for built-in functions. I'm inclined to go with the majority
values here, in part because that will make the outliers stand out when
looking at pg_proc.dat. I don't think it's great that we'll have 2800+
entries explicitly marked with proparallel 'i' or 's', but the less-than-
100 with proparallel 'u' will be so only implicitly because the rewrite
script will strip out any field entries that match the default. That's
really the worst of all worlds: it'd be better to have no default
in this column at all, I think, than to behave like that.

In short, I'm tempted to say that when there's a clear majority of
entries that would use a particular default, that's the default we
should use, whether or not it's "surprising" or "unsafe" according
to the semantics. It's clearly not "surprising" for a C function
to be marked proparallel 's'; the other cases are more so.

I'm not seeing any other BKI_DEFAULT choices that I'm inclined to
question, so maybe it's a mistake to try to derive any general
policy choices from such a small number of cases. But anyway
I'm inclined to change these cases.

Comments anyone?

regards, tom lane

#68Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#67)
Re: WIP: a way forward on bootstrap data

Hi,

On 2018-04-04 18:29:31 -0400, Tom Lane wrote:

I'm starting to look through v13 seriously, and one thing struck
me that could use some general discussion: what is our policy
going to be for choosing the default values for catalog columns?

[...]

In short, I'm tempted to say that when there's a clear majority of
entries that would use a particular default, that's the default we
should use, whether or not it's "surprising" or "unsafe" according
to the semantics. It's clearly not "surprising" for a C function
to be marked proparallel 's'; the other cases are more so.

[...]

I'm not seeing any other BKI_DEFAULT choices that I'm inclined to
question, so maybe it's a mistake to try to derive any general
policy choices from such a small number of cases. But anyway
I'm inclined to change these cases.

Comments anyone?

I think choosing SQL defaults is defensible, but so is choosing the most
common value as default to make uncommon stand out more, and so is
choosing the safest values. In short, I don't think it matters terribly
much, we just should try to be reasonably consistent about.

Greetings,

Andres Freund

#69Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#65)
2 attachment(s)
Re: WIP: a way forward on bootstrap data

Here are the results of an evening's desultory hacking on v13.

I was dissatisfied with the fact that we still had several
function-referencing columns that had numeric instead of symbolic
contents, for instance pg_aggregate.aggfnoid. Of course, the main reason
is that those are declared regproc but reference functions with overloaded
names, which regproc can't handle. Now that the lookups are being done in
genbki.pl there's no reason why we have to live with that limitation.
In the attached, I've generalized the BKI_LOOKUP(pg_proc) code so that
you can use either regproc-like or regprocedure-like notation, and then
applied that to relevant columns.

I did not like the hard-wired handling of proargtypes and proallargtypes
in genbki.pl; it hardly seems impossible that we'll want similar
conversions for other array-of-OID columns in future. After a bit of
thought, it seemed like we could allow

oidvector proargtypes BKI_LOOKUP(pg_type);

Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);

and just teach genbki.pl that if a lookup rule is attached to
an oidvector or Oid[] column, it means to apply the rule to
each array element individually.

I also changed genbki.pl so that it'd warn about entries that aren't
recognized by the lookup rules. This seems like a good idea for
catching errors, such as (ahem) applying BKI_LOOKUP to a column
that isn't even an OID.

bootstrap-v13-delta.patch is a diff atop your patch series for the
in-tree files, and convert_oid2name.patch adjusts that script to
make use of the additional conversion capability.

regards, tom lane

Attachments:

bootstrap-v13-delta.patchtext/x-diff; charset=us-ascii; name=bootstrap-v13-delta.patchDownload
diff --git a/src/backend/catalog/README.data b/src/backend/catalog/README.data
index b7c680c..22ad0f2 100644
*** a/src/backend/catalog/README.data
--- b/src/backend/catalog/README.data
*************** teach Catalog::ParseData() how to expand
*** 62,71 ****
  representation.
  
  - To aid readability, some values that are references to other catalog
! entries are represented by macros rather than numeric OIDs. This is
! the case for index access methods, opclasses, operators, opfamilies,
! and types. This is done for functions as well, but only if the proname
! is unique.
  
  Bootstrap Data Conventions
  ==========================
--- 62,103 ----
  representation.
  
  - To aid readability, some values that are references to other catalog
! entries are represented by names rather than numeric OIDs.  Currently
! this is the case for access methods, functions, operators, opclasses,
! opfamilies, and types.  The rules are as follows:
! 
! * Use of names rather than numbers is enabled for a particular catalog
! column by attaching BKI_LOOKUP(lookuprule) to the column's definition,
! where "lookuprule" is pg_am, pg_proc, pg_operator, pg_opclass,
! pg_opfamily, or pg_type.
! 
! * In a name-lookup column, all entries must use the name format except
! when writing "0" for InvalidOid.  (If the column is declared regproc,
! you can optionally write "-" instead of "0".)  genbki.pl will warn
! about unrecognized names.
! 
! * Access methods are just represented by their names, as are types.
! Type names must match the referenced pg_type entry's typname; you
! do not get to use any aliases such as "integer" for "int4".
! 
! * A function can be represented by its proname, if that is unique among
! the pg_proc.dat entries (this works like regproc input).  Otherwise,
! write it as "proname(argtypename,argtypename,...)", like regprocedure.
! The argument type names must be spelled exactly as they are in the
! pg_proc.dat entry's proargtypes field.  Do not insert any spaces.
! 
! * Operators are represented by "oprname(lefttype,righttype)", writing the
! type names exactly as they appear in the pg_operator.dat entry's oprleft
! and oprright fields.  (Write 0 for the omitted operand of a unary
! operator.)
! 
! * The names of opclasses and opfamilies are only unique within an access
! method, so they are represented by "access_method_name/object_name".
! 
! In none of these cases is there any provision for schema-qualification;
! all objects created during bootstrap are expected to be in the pg_catalog
! schema.
! 
  
  Bootstrap Data Conventions
  ==========================
*************** You can also use the duplicate_oids scri
*** 105,111 ****
  build if a duplicate is found.)
  
  - The OID counter starts at 10000 at bootstrap.  If a catalog row is
! in a table that requires OIDs, but no OID was preassigned by an "OID ="
  clause, then it will receive an OID of 10000 or above.
  
  
--- 137,143 ----
  build if a duplicate is found.)
  
  - The OID counter starts at 10000 at bootstrap.  If a catalog row is
! in a table that requires OIDs, but no OID was preassigned by an "oid =>"
  clause, then it will receive an OID of 10000 or above.
  
  
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 27494d9..f6be50a 100644
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** foreach my $row (@{ $catalog_data{pg_opf
*** 169,181 ****
  my %procoids;
  foreach my $row (@{ $catalog_data{pg_proc} })
  {
! 	if (defined($procoids{ $row->{proname} }))
  	{
! 		$procoids{ $row->{proname} } = 'MULTIPLE';
  	}
  	else
  	{
! 		$procoids{ $row->{proname} } = $row->{oid};
  	}
  }
  
--- 169,197 ----
  my %procoids;
  foreach my $row (@{ $catalog_data{pg_proc} })
  {
! 	# Generate an entry under just the proname (corresponds to regproc lookup)
! 	my $prokey = $row->{proname};
! 	if (defined($procoids{ $prokey }))
  	{
! 		$procoids{ $prokey } = 'MULTIPLE';
  	}
  	else
  	{
! 		$procoids{ $prokey } = $row->{oid};
! 	}
! 	# Also generate an entry using proname(proargtypes).  This is not quite
! 	# identical to regprocedure lookup because we don't worry much about
! 	# special SQL names for types etc; we just use the names in the source
! 	# proargtypes field.  These *should* be unique, but do a multiplicity
! 	# check anyway.
! 	$prokey .= '(' . join(',', split(/\s+/, $row->{proargtypes})) . ')';
! 	if (defined($procoids{ $prokey }))
! 	{
! 		$procoids{ $prokey } = 'MULTIPLE';
! 	}
! 	else
! 	{
! 		$procoids{ $prokey } = $row->{oid};
  	}
  }
  
*************** EOM
*** 294,300 ****
  		print $def $line;
  	}
  
! 	# Open it, unless bootstrap case (create bootstrap does this
  	# automatically)
  	if (!$catalog->{bootstrap})
  	{
--- 310,316 ----
  		print $def $line;
  	}
  
! 	# Open it, unless it's a bootstrap catalog (create bootstrap does this
  	# automatically)
  	if (!$catalog->{bootstrap})
  	{
*************** EOM
*** 323,375 ****
  			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
  			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
! 			# Replace OID macros with OIDs.
! 			# If we don't have a unique value to substitute, just do
! 			# nothing. This should only happen in the case for functions,
! 			# in which case regprocin will complain.
  			if ($column->{lookup})
  			{
  				my $lookup = $lookup_kind{ $column->{lookup} };
- 				my $lookupoid = $lookup->{ $bki_values{$attname} };
- 				$bki_values{$attname} = $lookupoid
- 				  if defined($lookupoid) && $lookupoid ne 'MULTIPLE';
- 			}
- 		}
  
! 		# Some pg_proc columns contain lists of types, so we must unpack
! 		# these and do the lookups on each element in turn.
! 		if ($catname eq 'pg_proc')
! 		{
  
! 			# proargtypes
! 			if ($bki_values{proargtypes})
! 			{
! 				my @argtypenames = split /\s+/, $bki_values{proargtypes};
! 				my @argtypeoids;
! 				foreach my $argtypename (@argtypenames)
  				{
! 					my $argtypeoid  = $typeoids{$argtypename};
! 					push @argtypeoids, $argtypeoid;
  				}
! 				$bki_values{proargtypes} = join(' ', @argtypeoids);
! 			}
! 
! 			# proallargtypes
! 			if ($bki_values{proallargtypes} ne '_null_')
! 			{
! 				$bki_values{proallargtypes} =~ s/[{}]//g;
! 				my @argtypenames = split /,/, $bki_values{proallargtypes};
! 				my @argtypeoids;
! 				foreach my $argtypename (@argtypenames)
  				{
! 					my $argtypeoid  = $typeoids{$argtypename};
! 					push @argtypeoids, $argtypeoid;
  				}
- 				$bki_values{proallargtypes} =
- 					sprintf "{%s}", join(',', @argtypeoids);
  			}
  		}
! 		elsif ($catname eq 'pg_type' and !exists $bki_values{oid_symbol})
  		{
  			my $symbol = form_pg_type_symbol($bki_values{typname});
  			$bki_values{oid_symbol} = $symbol
--- 339,423 ----
  			$bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
  			$bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
  
! 			# Replace OID synonyms with OIDs per the appropriate lookup rule.
! 			#
! 			# If the column type is oidvector or oid[], we have to replace
! 			# each element of the array as per the lookup rule.
! 			#
! 			# If we don't have a unique value to substitute, warn and
! 			# leave the entry unchanged.
  			if ($column->{lookup})
  			{
  				my $lookup = $lookup_kind{ $column->{lookup} };
  
! 				die "unrecognized BKI_LOOKUP type " . $column->{lookup}
! 				  if !defined($lookup);
  
! 				if ($atttype eq 'oidvector')
  				{
! 					my @lookupnames = split /\s+/, $bki_values{$attname};
! 					my @lookupoids;
! 					foreach my $lookupname (@lookupnames)
! 					{
! 						my $lookupoid = $lookup->{ $lookupname };
! 						if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
! 						{
! 							$lookupname = $lookupoid;
! 						}
! 						else
! 						{
! 							warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
! 								if $lookupname ne '-' && $lookupname ne '0';
! 						}
! 						push @lookupoids, $lookupname;
! 					}
! 					$bki_values{$attname} = join(' ', @lookupoids);
  				}
! 				elsif ($atttype eq 'oid[]')
  				{
! 					if ($bki_values{$attname} ne '_null_')
! 					{
! 						$bki_values{$attname} =~ s/[{}]//g;
! 						my @lookupnames = split /,/, $bki_values{$attname};
! 						my @lookupoids;
! 						foreach my $lookupname (@lookupnames)
! 						{
! 							my $lookupoid = $lookup->{ $lookupname };
! 							if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
! 							{
! 								$lookupname = $lookupoid;
! 							}
! 							else
! 							{
! 								warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
! 									if $lookupname ne '-' && $lookupname ne '0';
! 							}
! 							push @lookupoids, $lookupname;
! 						}
! 						$bki_values{$attname} =
! 							sprintf "{%s}", join(',', @lookupoids);
! 					}
! 				}
! 				else
! 				{
! 					my $lookupname = $bki_values{$attname};
! 					my $lookupoid = $lookup->{ $lookupname };
! 					if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
! 					{
! 						$bki_values{$attname} = $lookupoid;
! 					}
! 					else
! 					{
! 						warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
! 							if $lookupname ne '-' && $lookupname ne '0';
! 					}
  				}
  			}
  		}
! 
! 		# Special hack to generate OID symbols for pg_type entries
! 		# that lack one.
! 		if ($catname eq 'pg_type' and !exists $bki_values{oid_symbol})
  		{
  			my $symbol = form_pg_type_symbol($bki_values{typname});
  			$bki_values{oid_symbol} = $symbol
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 226bb07..767bab5 100644
*** a/src/include/catalog/pg_aggregate.h
--- b/src/include/catalog/pg_aggregate.h
***************
*** 31,37 ****
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	/* pg_proc OID of the aggregate itself */
! 	regproc		aggfnoid;
  
  	/* aggregate kind, see AGGKIND_ categories below */
  	char		aggkind BKI_DEFAULT(n);
--- 31,37 ----
  CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
  {
  	/* pg_proc OID of the aggregate itself */
! 	regproc		aggfnoid BKI_LOOKUP(pg_proc);
  
  	/* aggregate kind, see AGGKIND_ categories below */
  	char		aggkind BKI_DEFAULT(n);
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index f045bfa..accbe83 100644
*** a/src/include/catalog/pg_amproc.h
--- b/src/include/catalog/pg_amproc.h
*************** CATALOG(pg_amproc,2603)
*** 54,63 ****
  	Oid			amprocrighttype BKI_LOOKUP(pg_type);
  
  	/* support procedure index */
! 	int16		amprocnum BKI_LOOKUP(pg_type);
  
  	/* OID of the proc */
! 	regproc		amproc;
  } FormData_pg_amproc;
  
  /* ----------------
--- 54,63 ----
  	Oid			amprocrighttype BKI_LOOKUP(pg_type);
  
  	/* support procedure index */
! 	int16		amprocnum;
  
  	/* OID of the proc */
! 	regproc		amproc BKI_LOOKUP(pg_proc);
  } FormData_pg_amproc;
  
  /* ----------------
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 2674701..f3bc3c0 100644
*** a/src/include/catalog/pg_cast.h
--- b/src/include/catalog/pg_cast.h
*************** CATALOG(pg_cast,2605)
*** 39,45 ****
  	Oid			casttarget BKI_LOOKUP(pg_type);
  
  	/* cast function; 0 = binary coercible */
! 	Oid			castfunc;
  
  	/* contexts in which cast can be used */
  	char		castcontext;
--- 39,45 ----
  	Oid			casttarget BKI_LOOKUP(pg_type);
  
  	/* cast function; 0 = binary coercible */
! 	Oid			castfunc BKI_LOOKUP(pg_proc);
  
  	/* contexts in which cast can be used */
  	char		castcontext;
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 8d5d044..b9d9cfd 100644
*** a/src/include/catalog/pg_proc.h
--- b/src/include/catalog/pg_proc.h
*************** CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_
*** 49,55 ****
  	float4		prorows BKI_DEFAULT(0);
  
  	/* element type of variadic array, or 0 */
! 	Oid			provariadic BKI_DEFAULT(0);
  
  	/* transforms calls to it during planning */
  	regproc		protransform BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
--- 49,55 ----
  	float4		prorows BKI_DEFAULT(0);
  
  	/* element type of variadic array, or 0 */
! 	Oid			provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
  
  	/* transforms calls to it during planning */
  	regproc		protransform BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
*************** CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_
*** 90,101 ****
  	 */
  
  	/* parameter types (excludes OUT params) */
! 	oidvector	proargtypes;
  
  #ifdef CATALOG_VARLEN
  
  	/* all param types (NULL if IN only) */
! 	Oid			proallargtypes[1] BKI_DEFAULT(_null_);
  
  	/* parameter modes (NULL if IN only) */
  	char		proargmodes[1] BKI_DEFAULT(_null_);
--- 90,101 ----
  	 */
  
  	/* parameter types (excludes OUT params) */
! 	oidvector	proargtypes BKI_LOOKUP(pg_type);
  
  #ifdef CATALOG_VARLEN
  
  	/* all param types (NULL if IN only) */
! 	Oid			proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);
  
  	/* parameter modes (NULL if IN only) */
  	char		proargmodes[1] BKI_DEFAULT(_null_);
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 381da18..8992fcd 100644
*** a/src/include/catalog/pg_type.h
--- b/src/include/catalog/pg_type.h
*************** CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_
*** 109,121 ****
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem BKI_DEFAULT(0);
  
  	/*
  	 * If there is a "true" array type having this type as element type,
  	 * typarray links to it.  Zero if no associated "true" array type.
  	 */
! 	Oid			typarray;
  
  	/*
  	 * I/O conversion procedures for the datatype.
--- 109,121 ----
  	 *
  	 * typelem != 0 and typlen == -1.
  	 */
! 	Oid			typelem BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
  
  	/*
  	 * If there is a "true" array type having this type as element type,
  	 * typarray links to it.  Zero if no associated "true" array type.
  	 */
! 	Oid			typarray BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
  
  	/*
  	 * I/O conversion procedures for the datatype.
convert_oid2name.patchtext/x-diff; charset=us-ascii; name=convert_oid2name.patchDownload
*** boot-13/convert_oid2name.pl~	Sat Mar 31 07:53:29 2018
--- boot-13/convert_oid2name.pl	Wed Apr  4 21:45:05 2018
***************
*** 129,146 ****
  	  $row->{oprname}, $typenames{$row->{oprleft}}, $typenames{$row->{oprright}};
  }
  
! # Proc oid lookup.
  my %procoids;
  foreach my $row (@{ $catalog_data{pg_proc} })
  {
  	next if !ref $row;
  	if (defined($procoids{ $row->{proname} }))
  	{
  		$procoids{ $row->{proname} } = 'MULTIPLE';
  	}
  	else
  	{
! 		$procoids{ $row->{oid} } = $row->{proname};
  	}
  }
  
--- 129,153 ----
  	  $row->{oprname}, $typenames{$row->{oprleft}}, $typenames{$row->{oprright}};
  }
  
! # Proc oid lookup (see lookup_procname).
! my %procshortnames;
! my %proclongnames;
  my %procoids;
  foreach my $row (@{ $catalog_data{pg_proc} })
  {
  	next if !ref $row;
+ 	$procshortnames{ $row->{oid} } = $row->{proname};
+ 	$proclongnames{ $row->{oid} } = sprintf "%s(%s)",
+ 	  $row->{proname},
+       join(',', map($typenames{$_}, split(/\s+/, $row->{proargtypes})));
+ 	# We use this to track whether a proname is duplicated.
  	if (defined($procoids{ $row->{proname} }))
  	{
  		$procoids{ $row->{proname} } = 'MULTIPLE';
  	}
  	else
  	{
! 		$procoids{ $row->{proname} } = $row->{oid};
  	}
  }
  
***************
*** 186,191 ****
--- 193,200 ----
  
  			if ($catname eq 'pg_proc')
  			{
+ 				$values{provariadic} = $typenames{$values{provariadic}}
+ 				  if exists $values{provariadic};
  				$values{prorettype} = $typenames{$values{prorettype}};
  				if ($values{proargtypes})
  				{
***************
*** 211,222 ****
--- 220,236 ----
  			}
  			elsif ($catname eq 'pg_aggregate')
  			{
+ 				$values{aggfnoid}     = lookup_procname($values{aggfnoid});
  				$values{aggsortop}     = $opernames{$values{aggsortop}}
  				  if exists $values{aggsortop};
  				$values{aggtranstype}  = $typenames{$values{aggtranstype}};
  				$values{aggmtranstype} = $typenames{$values{aggmtranstype}}
  				  if exists $values{aggmtranstype};
  			}
+ 			elsif ($catname eq 'pg_am')
+ 			{
+ 				$values{aggfnoid}     = lookup_procname($values{aggfnoid});
+ 			}
  			elsif ($catname eq 'pg_amop')
  			{
  				$values{amoplefttype}   = $typenames{$values{amoplefttype}};
***************
*** 232,242 ****
--- 246,258 ----
  				$values{amprocfamily}    = $opfnames{$values{amprocfamily}};
  				$values{amproclefttype}  = $typenames{$values{amproclefttype}};
  				$values{amprocrighttype} = $typenames{$values{amprocrighttype}};
+ 				$values{amproc}          = lookup_procname($values{amproc});
  			}
  			elsif ($catname eq 'pg_cast')
  			{
  				$values{castsource} = $typenames{$values{castsource}};
  				$values{casttarget} = $typenames{$values{casttarget}};
+ 				$values{castfunc}   = lookup_procname($values{castfunc});
  			}
  			elsif ($catname eq 'pg_opclass')
  			{
***************
*** 255,260 ****
--- 271,277 ----
  				  if exists $values{oprcom};
  				$values{oprnegate} = $opernames{$values{oprnegate}}
  				  if exists $values{oprnegate};
+ 				$values{oprcode}   = lookup_procname($values{oprcode});
  			}
  			elsif ($catname eq 'pg_opfamily')
  			{
***************
*** 266,271 ****
--- 283,295 ----
  				$values{rngsubtype} = $typenames{$values{rngsubtype}};
  				$values{rngsubopc}  = $opcnames{$values{rngsubopc}};
  			}
+ 			elsif ($catname eq 'pg_type')
+ 			{
+ 				$values{typelem}    = $typenames{$values{typelem}}
+ 				  if exists $values{typelem};
+ 				$values{typarray}   = $typenames{$values{typarray}}
+ 				  if exists $values{typarray};
+ 			}
  
  			############################################################
  
***************
*** 412,417 ****
--- 436,454 ----
  	return $hash_str;
  }
  
+ sub lookup_procname
+ {
+ 	my $oid = shift;
+ 	return $oid if !defined($oid) || $oid eq '-' || $oid eq '0';
+ 	my $shortname = $procshortnames{$oid};
+ 	return $shortname if defined($shortname) &&
+ 		defined($procoids{$shortname}) &&
+ 		$procoids{$shortname} eq $oid;
+ 	my $longname = $proclongnames{$oid};
+ 	return $longname if defined($longname);
+ 	return $oid;
+ }
+ 
  sub usage
  {
  	die <<EOM;
#70John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#69)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 4/5/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Here are the results of an evening's desultory hacking on v13.

[numeric function oids with overloaded name]

Thank you for the detailed review and for improving the function
references (not to mention the type references I somehow left on the
table). I was also not quite satisfied with just the regproc columns.

I did not like the hard-wired handling of proargtypes and proallargtypes
in genbki.pl; it hardly seems impossible that we'll want similar
conversions for other array-of-OID columns in future. After a bit of
thought, it seemed like we could allow

oidvector proargtypes BKI_LOOKUP(pg_type);

Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);

and just teach genbki.pl that if a lookup rule is attached to
an oidvector or Oid[] column, it means to apply the rule to
each array element individually.

I think that's a good idea. I went an extra step and extracted the
common logic into a function (attached draft patch to be applied on
top of yours). It treats all lookups as operating on arrays. The
common case is that we pass a single-element array. That may seem
awkward, but I think it's clear. The code is slimmer, and the lines
now fit within 80 characters.

I also changed genbki.pl so that it'd warn about entries that aren't
recognized by the lookup rules. This seems like a good idea for
catching errors, such as (ahem) applying BKI_LOOKUP to a column
that isn't even an OID.

Yikes, I must have fat-fingered that during the comment reformatting.

Unrelated, I noticed my quoting of defaults that contain back-slashes
was half-baked, so I'll include that fix in the next patchset. I'll
put out a new one in a couple days, to give a chance for further
review and discussion of the defaults. I didn't feel the need to
respond to the other messages, but yours and Andres' points are well
taken.

-John Naylor

Attachments:

bootstrap-v13-delta-lookup-function.patchtext/x-patch; charset=US-ASCII; name=bootstrap-v13-delta-lookup-function.patchDownload
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index f6be50a..8d47109 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -343,34 +343,21 @@ EOM
 			#
 			# If the column type is oidvector or oid[], we have to replace
 			# each element of the array as per the lookup rule.
-			#
-			# If we don't have a unique value to substitute, warn and
-			# leave the entry unchanged.
 			if ($column->{lookup})
 			{
 				my $lookup = $lookup_kind{ $column->{lookup} };
+				my @lookupnames;
+				my @lookupoids;
 
 				die "unrecognized BKI_LOOKUP type " . $column->{lookup}
 				  if !defined($lookup);
 
 				if ($atttype eq 'oidvector')
 				{
-					my @lookupnames = split /\s+/, $bki_values{$attname};
-					my @lookupoids;
-					foreach my $lookupname (@lookupnames)
-					{
-						my $lookupoid = $lookup->{ $lookupname };
-						if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
-						{
-							$lookupname = $lookupoid;
-						}
-						else
-						{
-							warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
-								if $lookupname ne '-' && $lookupname ne '0';
-						}
-						push @lookupoids, $lookupname;
-					}
+					@lookupnames = split /\s+/, $bki_values{$attname};
+					@lookupoids = lookup_oids($lookup, $catname,
+												\%bki_values, @lookupnames);
+
 					$bki_values{$attname} = join(' ', @lookupoids);
 				}
 				elsif ($atttype eq 'oid[]')
@@ -378,39 +365,21 @@ EOM
 					if ($bki_values{$attname} ne '_null_')
 					{
 						$bki_values{$attname} =~ s/[{}]//g;
-						my @lookupnames = split /,/, $bki_values{$attname};
-						my @lookupoids;
-						foreach my $lookupname (@lookupnames)
-						{
-							my $lookupoid = $lookup->{ $lookupname };
-							if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
-							{
-								$lookupname = $lookupoid;
-							}
-							else
-							{
-								warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
-									if $lookupname ne '-' && $lookupname ne '0';
-							}
-							push @lookupoids, $lookupname;
-						}
+						@lookupnames = split /,/, $bki_values{$attname};
+						@lookupoids = lookup_oids($lookup, $catname,
+													\%bki_values, @lookupnames);
+
 						$bki_values{$attname} =
 							sprintf "{%s}", join(',', @lookupoids);
 					}
 				}
 				else
 				{
-					my $lookupname = $bki_values{$attname};
-					my $lookupoid = $lookup->{ $lookupname };
-					if (defined($lookupoid) && $lookupoid ne 'MULTIPLE')
-					{
-						$bki_values{$attname} = $lookupoid;
-					}
-					else
-					{
-						warn "unresolved OID reference \"$lookupname\" in $catname row " . join(',', values(%bki_values))
-							if $lookupname ne '-' && $lookupname ne '0';
-					}
+					$lookupnames[0] = $bki_values{$attname};
+					@lookupoids = lookup_oids($lookup, $catname,
+												\%bki_values, @lookupnames);
+
+					$bki_values{$attname} = $lookupoids[0];
 				}
 			}
 		}
@@ -759,6 +728,32 @@ sub morph_row_for_schemapg
 	}
 }
 
+# Perform OID lookups on an array of OID names.
+# If we don't have a unique value to substitute, warn and
+# leave the entry unchanged.
+sub lookup_oids
+{
+	my ($lookup, $catname, $bki_values, @lookupnames) = @_;
+
+	my @lookupoids;
+	foreach my $lookupname (@lookupnames)
+	{
+		my $lookupoid = $lookup->{$lookupname};
+		if (defined($lookupoid) and $lookupoid ne 'MULTIPLE')
+		{
+			push @lookupoids, $lookupoid;
+		}
+		else
+		{
+			push @lookupoids, $lookupname;
+			warn "unresolved OID reference \"$lookupname\" in $catname row "
+				. join(',', values(%$bki_values))
+				if $lookupname ne '-' && $lookupname ne '0';
+		}
+	}
+	return @lookupoids;
+}
+
 # Determine canonical pg_type OID #define symbol from the type name.
 sub form_pg_type_symbol
 {
#71Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#70)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 4/5/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I did not like the hard-wired handling of proargtypes and proallargtypes
in genbki.pl; it hardly seems impossible that we'll want similar
conversions for other array-of-OID columns in future. After a bit of
thought, it seemed like we could allow
oidvector proargtypes BKI_LOOKUP(pg_type);
Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);
and just teach genbki.pl that if a lookup rule is attached to
an oidvector or Oid[] column, it means to apply the rule to
each array element individually.

I think that's a good idea. I went an extra step and extracted the
common logic into a function (attached draft patch to be applied on
top of yours). It treats all lookups as operating on arrays. The
common case is that we pass a single-element array. That may seem
awkward, but I think it's clear. The code is slimmer, and the lines
now fit within 80 characters.

Sounds good. I too was bothered by the duplication of code, but
I'm not a good enough Perl programmer to have thought of that solution.

Something that bothered me a bit while writing the warning-producing code
is that showing %bki_values isn't actually that great a way of identifying
the trouble spot. By this point we've expanded out defaults and possibly
replaced some other macros, so it doesn't look that much like what was
in the .dat file. I think what would be ideal, both here and in some
other places like AddDefaultValues, is to be able to finger the location
of the bad tuple by filename and line number, but I have no idea whether
it's practical to annotate the tuples with that while reading the .dat
files. Any thoughts?

(Obviously, better error messages could be a future improvement; it's not
something we have to get done before the conversion.)

Unrelated, I noticed my quoting of defaults that contain back-slashes
was half-baked, so I'll include that fix in the next patchset. I'll
put out a new one in a couple days, to give a chance for further
review and discussion of the defaults. I didn't feel the need to
respond to the other messages, but yours and Andres' points are well
taken.

We're getting down to the wire here --- I think the plan is to close
the CF on Saturday or Sunday, and then push the bootstrap changes right
after that. So please turn around whatever you're planning to do ASAP.
I'm buckling down to a final review today and tomorrow.

regards, tom lane

#72Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#71)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

I experimented with converting all frontend code to include just the
catalog/pg_foo_d.h files instead of catalog/pg_foo.h, as per the
proposed new policy. I soon found that we'd overlooked one thing:
some clients expect to see the relation OID macros, eg
LargeObjectRelationId. Attached is a patch that changes things around
so that those appear in the _d files instead of the master files.
This is cleaner anyway because it removes duplication of the OIDs in
the master files, with attendant risk of error. For example we
have this change in pg_aggregate.h:

-#define AggregateRelationId  2600
-
-CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
+CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS

Some of the CATALOG lines spill well past 80 characters with this,
although many of the affected ones already were overlength, eg

-#define DatabaseRelationId	1262
-#define DatabaseRelation_Rowtype_Id  1248
-
-CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO

I thought about improving that by removing the restriction that these
BKI annotations appear on the same line as the CATALOG macro, so that
we could break the above into several lines. I think the original key
reason for the restriction was to avoid accidentally taking some bit
of a DATA line as a BKI annotation. With the DATA lines gone from these
files, that's no longer a significant hazard (although passing references
to BKI keywords in comments might still be hazards for the Perl scripts).
However, if we try to format things like

CATALOG(pg_database,1262,DatabaseRelationId)
BKI_SHARED_RELATION
BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id)
BKI_SCHEMA_MACRO
{
fields...
}

I'm afraid that neither pgindent nor a lot of common editors would indent
that very nicely. So at least for the moment I'm inclined to just keep
it all on one line ... we know how that behaves, anyway.

regards, tom lane

Attachments:

catalog-macro-fix.patchtext/x-diff; charset=us-ascii; name=catalog-macro-fix.patchDownload
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 519247e..fb3d62a 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -104,18 +104,29 @@ sub ParseHeader
 			{
 				push @{ $catalog{indexing} }, "build indices\n";
 			}
-			elsif (/^CATALOG\(([^,]*),(\d+)\)/)
+			elsif (/^CATALOG\(([^,]*),(\d+),(\w+)\)/)
 			{
 				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
+				$catalog{relation_oid_macro} = $3;
 
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
 				$catalog{without_oids} =
 				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				$catalog{rowtype_oid} =
-				  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
+				if (/BKI_ROWTYPE_OID\((\d+),(\w+)\)/)
+				{
+					$catalog{rowtype_oid} = $1;
+					$catalog{rowtype_oid_clause} = " rowtype_oid $1";
+					$catalog{rowtype_oid_macro} = $2;
+				}
+				else
+				{
+					$catalog{rowtype_oid} = '';
+					$catalog{rowtype_oid_clause} = '';
+					$catalog{rowtype_oid_macro} = '';
+				}
 				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index f6be50a..fe8c3ca 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -228,6 +228,7 @@ my @tables_needing_macros;
 # produce output, one catalog at a time
 foreach my $catname (@catnames)
 {
+	my $catalog = $catalogs{$catname};
 
 	# Create one definition header with macro definitions for each catalog.
 	my $def_file = $output_path . $catname . '_d.h';
@@ -258,13 +259,21 @@ foreach my $catname (@catnames)
 
 EOM
 
+	# Emit OID macros for catalog's OID and rowtype OID, if wanted
+	print $def
+	  sprintf("#define %s %s\n", $catalog->{relation_oid_macro}, $catalog->{relation_oid})
+	  if $catalog->{relation_oid_macro} ne '';
+	print $def
+	  sprintf("#define %s %s\n", $catalog->{rowtype_oid_macro}, $catalog->{rowtype_oid})
+	  if $catalog->{rowtype_oid_macro} ne '';
+	print $def "\n";
+
 	# .bki CREATE command for this catalog
-	my $catalog = $catalogs{$catname};
 	print $bki "create $catname $catalog->{relation_oid}"
 	  . $catalog->{shared_relation}
 	  . $catalog->{bootstrap}
 	  . $catalog->{without_oids}
-	  . $catalog->{rowtype_oid} . "\n";
+	  . $catalog->{rowtype_oid_clause} . "\n";
 
 	my $first = 1;
 
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 9732f61..0e6285f 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -15,7 +15,7 @@ while (<>)
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
 	  unless /\boid *=> *'(\d+)'/
-		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
+		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+),/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
 		  || /^DECLARE_UNIQUE_INDEX\([^,]*, *(\d+)/
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index af064fc..02c38c4 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -20,13 +20,13 @@
 #define GENBKI_H
 
 /* Introduces a catalog's structure definition */
-#define CATALOG(name,oid)	typedef struct CppConcat(FormData_,name)
+#define CATALOG(name,oid,oidmacro)	typedef struct CppConcat(FormData_,name)
 
 /* Options that may appear after CATALOG (on the same line) */
 #define BKI_BOOTSTRAP
 #define BKI_SHARED_RELATION
 #define BKI_WITHOUT_OIDS
-#define BKI_ROWTYPE_OID(oid)
+#define BKI_ROWTYPE_OID(oid,oidmacro)
 #define BKI_SCHEMA_MACRO
 
 /* Options that may appear after an attribute (on the same line) */
@@ -34,7 +34,7 @@
 #define BKI_FORCE_NOT_NULL
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
-/* Indicates where to perform lookups for OID macros */
+/* Indicates how to perform name lookups for OID fields */
 #define BKI_LOOKUP(catalog)
 
 /* The following are never defined; they are here only for documentation. */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 767bab5..4d0ec01 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -26,9 +26,7 @@
  *		cpp turns this into typedef struct FormData_pg_aggregate
  * ----------------------------------------------------------------
  */
-#define AggregateRelationId  2600
-
-CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
+CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS
 {
 	/* pg_proc OID of the aggregate itself */
 	regproc		aggfnoid BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index d6454c5..5aa2bac 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_am
  * ----------------
  */
-#define AccessMethodRelationId	2601
-
-CATALOG(pg_am,2601)
+CATALOG(pg_am,2601,AccessMethodRelationId)
 {
 	/* access method name */
 	NameData	amname;
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 59842a6..a481691 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -51,9 +51,7 @@
  *		typedef struct FormData_pg_amop
  * ----------------
  */
-#define AccessMethodOperatorRelationId	2602
-
-CATALOG(pg_amop,2602)
+CATALOG(pg_amop,2602,AccessMethodOperatorRelationId)
 {
 	/* the index opfamily this entry is for */
 	Oid			amopfamily BKI_LOOKUP(pg_opfamily);
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index accbe83..d638e0c 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -40,9 +40,7 @@
  *		typedef struct FormData_pg_amproc
  * ----------------
  */
-#define AccessMethodProcedureRelationId  2603
-
-CATALOG(pg_amproc,2603)
+CATALOG(pg_amproc,2603,AccessMethodProcedureRelationId)
 {
 	/* the index opfamily this entry is for */
 	Oid			amprocfamily BKI_LOOKUP(pg_opfamily);
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 068ab64..16b106d 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_attrdef
  * ----------------
  */
-#define AttrDefaultRelationId  2604
-
-CATALOG(pg_attrdef,2604)
+CATALOG(pg_attrdef,2604,AttrDefaultRelationId)
 {
 	Oid			adrelid;		/* OID of table containing attribute */
 	int16		adnum;			/* attnum of attribute */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 1b3f306..69b651a 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -34,10 +34,7 @@
  *		You may need to change catalog/genbki.pl as well.
  * ----------------
  */
-#define AttributeRelationId  1249
-#define AttributeRelation_Rowtype_Id  75
-
-CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO
+CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	Oid			attrelid;		/* OID of relation containing this attribute */
 	NameData	attname;		/* name of attribute */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index b8ac653..75bc2ba 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -27,10 +27,7 @@
  *		typedef struct FormData_pg_auth_members
  * ----------------
  */
-#define AuthMemRelationId	1261
-#define AuthMemRelation_Rowtype_Id	2843
-
-CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843) BKI_SCHEMA_MACRO
+CATALOG(pg_auth_members,1261,AuthMemRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843,AuthMemRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	Oid			roleid;			/* ID of a role */
 	Oid			member;			/* ID of a member of that role */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index f27906f..863ef65 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -28,10 +28,7 @@
  *		typedef struct FormData_pg_authid
  * ----------------
  */
-#define AuthIdRelationId	1260
-#define AuthIdRelation_Rowtype_Id	2842
-
-CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
+CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	NameData	rolname;		/* name of role */
 	bool		rolsuper;		/* read this field via superuser() only! */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 8a5b7f9..a9e7e2b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -28,9 +28,7 @@
  *		typedef struct FormData_pg_cast
  * ----------------
  */
-#define CastRelationId	2605
-
-CATALOG(pg_cast,2605)
+CATALOG(pg_cast,2605,CastRelationId)
 {
 	/* source datatype for cast */
 	Oid			castsource BKI_LOOKUP(pg_type);
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index 914aa63..28d939d 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -26,10 +26,7 @@
  *		typedef struct FormData_pg_class
  * ----------------
  */
-#define RelationRelationId	1259
-#define RelationRelation_Rowtype_Id  83
-
-CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
+CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	NameData	relname;		/* class name */
 	Oid			relnamespace;	/* OID of namespace containing this class */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 0c6d47f..9c643cf 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -27,9 +27,7 @@
  *		typedef struct FormData_pg_collation
  * ----------------
  */
-#define CollationRelationId  3456
-
-CATALOG(pg_collation,3456)
+CATALOG(pg_collation,3456,CollationRelationId)
 {
 	NameData	collname;		/* collation name */
 	Oid			collnamespace;	/* OID of namespace containing collation */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 2024c45..e1ef9cc 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_constraint
  * ----------------
  */
-#define ConstraintRelationId  2606
-
-CATALOG(pg_constraint,2606)
+CATALOG(pg_constraint,2606,ConstraintRelationId)
 {
 	/*
 	 * conname + connamespace is deliberately not unique; we allow, for
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index eacc09a..2a38d71 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -35,9 +35,7 @@
  *	condefault			true if this is a default conversion
  * ----------------------------------------------------------------
  */
-#define ConversionRelationId  2607
-
-CATALOG(pg_conversion,2607)
+CATALOG(pg_conversion,2607,ConversionRelationId)
 {
 	NameData	conname;
 	Oid			connamespace;
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 9435f24..7f03d24 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -26,10 +26,7 @@
  *		typedef struct FormData_pg_database
  * ----------------
  */
-#define DatabaseRelationId	1262
-#define DatabaseRelation_Rowtype_Id  1248
-
-CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	NameData	datname;		/* database name */
 	Oid			datdba;			/* owner of database */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 9793c69..cccb28a 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -29,9 +29,7 @@
  *		typedef struct FormData_pg_db_role_setting
  * ----------------
  */
-#define DbRoleSettingRelationId 2964
-
-CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_db_role_setting,2964,DbRoleSettingRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	Oid			setdatabase;	/* database */
 	Oid			setrole;		/* role */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index 868ac0c..ac81df1 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_default_acl
  * ----------------
  */
-#define DefaultAclRelationId	826
-
-CATALOG(pg_default_acl,826)
+CATALOG(pg_default_acl,826,DefaultAclRelationId)
 {
 	Oid			defaclrole;		/* OID of role owning this ACL */
 	Oid			defaclnamespace;	/* OID of namespace, or 0 for all */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 030f655..bf31c1a 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -38,9 +38,7 @@
  *		typedef struct FormData_pg_depend
  * ----------------
  */
-#define DependRelationId  2608
-
-CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS
+CATALOG(pg_depend,2608,DependRelationId) BKI_WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index d3c8644..b95b188 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -45,9 +45,7 @@
  *		typedef struct FormData_pg_description
  * ----------------
  */
-#define DescriptionRelationId  2609
-
-CATALOG(pg_description,2609) BKI_WITHOUT_OIDS
+CATALOG(pg_description,2609,DescriptionRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index edea5e3..a0922be 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_enum
  * ----------------
  */
-#define EnumRelationId	3501
-
-CATALOG(pg_enum,3501)
+CATALOG(pg_enum,3501,EnumRelationId)
 {
 	Oid			enumtypid;		/* OID of owning enum type */
 	float4		enumsortorder;	/* sort position of this enum value */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index 3ca0a88..f06cbe0 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_event_trigger
  * ----------------
  */
-#define EventTriggerRelationId	3466
-
-CATALOG(pg_event_trigger,3466)
+CATALOG(pg_event_trigger,3466,EventTriggerRelationId)
 {
 	NameData	evtname;		/* trigger's name */
 	NameData	evtevent;		/* trigger's event */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index a60bd44..10bbb69 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_extension
  * ----------------
  */
-#define ExtensionRelationId 3079
-
-CATALOG(pg_extension,3079)
+CATALOG(pg_extension,3079,ExtensionRelationId)
 {
 	NameData	extname;		/* extension name */
 	Oid			extowner;		/* extension owner */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index ae9b0be..67e3319 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_foreign_data_wrapper
  * ----------------
  */
-#define ForeignDataWrapperRelationId	2328
-
-CATALOG(pg_foreign_data_wrapper,2328)
+CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapperRelationId)
 {
 	NameData	fdwname;		/* foreign-data wrapper name */
 	Oid			fdwowner;		/* FDW owner */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index 34fc827..0d25839 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -25,9 +25,7 @@
  *		typedef struct FormData_pg_foreign_server
  * ----------------
  */
-#define ForeignServerRelationId 1417
-
-CATALOG(pg_foreign_server,1417)
+CATALOG(pg_foreign_server,1417,ForeignServerRelationId)
 {
 	NameData	srvname;		/* foreign server name */
 	Oid			srvowner;		/* server owner */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 1a1fefc..13de918 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -25,9 +25,7 @@
  *		typedef struct FormData_pg_foreign_table
  * ----------------
  */
-#define ForeignTableRelationId 3118
-
-CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS
+CATALOG(pg_foreign_table,3118,ForeignTableRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			ftrelid;		/* OID of foreign table */
 	Oid			ftserver;		/* OID of foreign server */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index ecae0db..b70ad73 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_index.
  * ----------------
  */
-#define IndexRelationId  2610
-
-CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_index,2610,IndexRelationId) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 {
 	Oid			indexrelid;		/* OID of the index */
 	Oid			indrelid;		/* OID of the relation it indexes */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 478a587..3b2e03c 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_inherits
  * ----------------
  */
-#define InheritsRelationId	2611
-
-CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS
+CATALOG(pg_inherits,2611,InheritsRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			inhrelid;
 	Oid			inhparent;
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 7dcb70c..6ce2646 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -43,9 +43,7 @@
  *		typedef struct FormData_pg_init_privs
  * ----------------
  */
-#define InitPrivsRelationId  3394
-
-CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS
+CATALOG(pg_init_privs,3394,InitPrivsRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index d2d878c..e2d8d15 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_language
  * ----------------
  */
-#define LanguageRelationId	2612
-
-CATALOG(pg_language,2612)
+CATALOG(pg_language,2612,LanguageRelationId)
 {
 	NameData	lanname;		/* Language name */
 	Oid			lanowner;		/* Language's owner */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 2157bab..07adca0 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -24,9 +24,7 @@
  *		typedef struct FormData_pg_largeobject
  * ----------------
  */
-#define LargeObjectRelationId  2613
-
-CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS
+CATALOG(pg_largeobject,2613,LargeObjectRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			loid;			/* Identifier of large object */
 	int32		pageno;			/* Page number (starting from 0) */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index 3d5e0cd..a8732bc 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_largeobject_metadata
  * ----------------
  */
-#define LargeObjectMetadataRelationId  2995
-
-CATALOG(pg_largeobject_metadata,2995)
+CATALOG(pg_largeobject_metadata,2995,LargeObjectMetadataRelationId)
 {
 	Oid			lomowner;		/* OID of the largeobject owner */
 
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 5f80e86..0d9cada 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -31,9 +31,7 @@
  *	nspacl				access privilege list
  * ----------------------------------------------------------------
  */
-#define NamespaceRelationId  2615
-
-CATALOG(pg_namespace,2615)
+CATALOG(pg_namespace,2615,NamespaceRelationId)
 {
 	NameData	nspname;
 	Oid			nspowner;
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 1b20d0d..16c3875 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -46,9 +46,7 @@
  *		typedef struct FormData_pg_opclass
  * ----------------
  */
-#define OperatorClassRelationId  2616
-
-CATALOG(pg_opclass,2616)
+CATALOG(pg_opclass,2616,OperatorClassRelationId)
 {
 	/* index access method opclass is for */
 	Oid			opcmethod BKI_LOOKUP(pg_am);
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 9c829d0..4950d28 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_operator
  * ----------------
  */
-#define OperatorRelationId	2617
-
-CATALOG(pg_operator,2617)
+CATALOG(pg_operator,2617,OperatorRelationId)
 {
 	/* name of operator */
 	NameData	oprname;
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 598e546..4bedc9a 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_opfamily
  * ----------------
  */
-#define OperatorFamilyRelationId  2753
-
-CATALOG(pg_opfamily,2753)
+CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
 {
 	/* index access method opfamily is for */
 	Oid			opfmethod BKI_LOOKUP(pg_am);
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 39ee67e..676532a 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -25,9 +25,7 @@
  *		typedef struct FormData_pg_partitioned_table
  * ----------------
  */
-#define PartitionedRelationId 3350
-
-CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS
+CATALOG(pg_partitioned_table,3350,PartitionedRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			partrelid;		/* partitioned table oid */
 	char		partstrat;		/* partitioning strategy */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 116a4a0..d84c86b 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_pltemplate
  * ----------------
  */
-#define PLTemplateRelationId	1136
-
-CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_pltemplate,1136,PLTemplateRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	NameData	tmplname;		/* name of PL */
 	bool		tmpltrusted;	/* PL is trusted? */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 543077c..7ad0cde 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -20,9 +20,7 @@
  *		typedef struct FormData_pg_policy
  * ----------------
  */
-#define PolicyRelationId	3256
-
-CATALOG(pg_policy,3256)
+CATALOG(pg_policy,3256,PolicyRelationId)
 {
 	NameData	polname;		/* Policy name. */
 	Oid			polrelid;		/* Oid of the relation with policy. */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index b9d9cfd..fd0b909 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -25,10 +25,7 @@
  *		typedef struct FormData_pg_proc
  * ----------------
  */
-#define ProcedureRelationId  1255
-#define ProcedureRelation_Rowtype_Id  81
-
-CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
+CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	/* procedure name */
 	NameData	proname;
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index 92cdcf1..9a6a64d 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_publication
  * ----------------
  */
-#define PublicationRelationId			6104
-
-CATALOG(pg_publication,6104)
+CATALOG(pg_publication,6104,PublicationRelationId)
 {
 	NameData	pubname;		/* name of the publication */
 
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 864d6ca..2208e42 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -25,9 +25,7 @@
  *		typedef struct FormData_pg_publication_rel
  * ----------------
  */
-#define PublicationRelRelationId				6106
-
-CATALOG(pg_publication_rel,6106)
+CATALOG(pg_publication_rel,6106,PublicationRelRelationId)
 {
 	Oid			prpubid;		/* Oid of the publication */
 	Oid			prrelid;		/* Oid of the relation */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index d507e4e..3762b3e 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_range
  * ----------------
  */
-#define RangeRelationId 3541
-
-CATALOG(pg_range,3541) BKI_WITHOUT_OIDS
+CATALOG(pg_range,3541,RangeRelationId) BKI_WITHOUT_OIDS
 {
 	/* OID of owning range type */
 	Oid			rngtypid BKI_LOOKUP(pg_type);
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 02856dd..1adc3f7 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_replication_origin
  * ----------------
  */
-#define ReplicationOriginRelationId 6000
-
-CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	/*
 	 * Locally known id that get included into WAL.
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index d656990..7712586 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -29,9 +29,7 @@
  *		typedef struct FormData_pg_rewrite
  * ----------------
  */
-#define RewriteRelationId  2618
-
-CATALOG(pg_rewrite,2618)
+CATALOG(pg_rewrite,2618,RewriteRelationId)
 {
 	NameData	rulename;
 	Oid			ev_class;
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index d6d2f97..48d4548 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -19,9 +19,7 @@
  *		typedef struct FormData_pg_seclabel
  * ----------------
  */
-#define SecLabelRelationId		3596
-
-CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS
+CATALOG(pg_seclabel,3596,SecLabelRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of the object itself */
 	Oid			classoid;		/* OID of table containing the object */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index de6ed1a..a13b05e 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -14,9 +14,7 @@
 #include "catalog/genbki.h"
 #include "catalog/pg_sequence_d.h"
 
-#define SequenceRelationId	2224
-
-CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS
+CATALOG(pg_sequence,2224,SequenceRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			seqrelid;
 	Oid			seqtypid;
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 708980b..9f4dcb9 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -35,9 +35,7 @@
  *		typedef struct FormData_pg_shdepend
  * ----------------
  */
-#define SharedDependRelationId	1214
-
-CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index 1777144..00fd0e0 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -38,9 +38,7 @@
  *		typedef struct FormData_pg_shdescription
  * ----------------
  */
-#define SharedDescriptionRelationId  2396
-
-CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdescription,2396,SharedDescriptionRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 9fceeee..22ecf98 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -19,10 +19,7 @@
  *		typedef struct FormData_pg_shseclabel
  * ----------------
  */
-#define SharedSecLabelRelationId			3592
-#define SharedSecLabelRelation_Rowtype_Id	4066
-
-CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_shseclabel,3592,SharedSecLabelRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066,SharedSecLabelRelation_Rowtype_Id) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 {
 	Oid			objoid;			/* OID of the shared object itself */
 	Oid			classoid;		/* OID of table containing the shared object */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index ea4d1be..c0ab74b 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_statistic
  * ----------------
  */
-#define StatisticRelationId  2619
-
-CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS
+CATALOG(pg_statistic,2619,StatisticRelationId) BKI_WITHOUT_OIDS
 {
 	/* These fields form the unique key for the entry: */
 	Oid			starelid;		/* relation containing attribute */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 3c6be71..5d57b81 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_statistic_ext
  * ----------------
  */
-#define StatisticExtRelationId	3381
-
-CATALOG(pg_statistic_ext,3381)
+CATALOG(pg_statistic_ext,3381,StatisticExtRelationId)
 {
 	Oid			stxrelid;		/* relation containing attributes */
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 1b2981f..93b249f 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -20,8 +20,6 @@
  *		typedef struct FormData_pg_subscription
  * ----------------
  */
-#define SubscriptionRelationId			6100
-#define SubscriptionRelation_Rowtype_Id 6101
 
 /*
  * Technically, the subscriptions live inside the database, so a shared catalog
@@ -31,7 +29,7 @@
  *
  * NOTE:  When adding a column, also update system_views.sql.
  */
-CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHEMA_MACRO
+CATALOG(pg_subscription,6100,SubscriptionRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101,SubscriptionRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	Oid			subdbid;		/* Database the subscription is in. */
 	NameData	subname;		/* Name of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 64aa121..d82b262 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -22,9 +22,7 @@
  *		typedef struct FormData_pg_subscription_rel
  * ----------------
  */
-#define SubscriptionRelRelationId			6102
-
-CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
+CATALOG(pg_subscription_rel,6102,SubscriptionRelRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			srsubid;		/* Oid of subscription */
 	Oid			srrelid;		/* Oid of relation */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index bd9c118..4782e78 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_tablespace
  * ----------------
  */
-#define TableSpaceRelationId  1213
-
-CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION
+CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION
 {
 	NameData	spcname;		/* tablespace name */
 	Oid			spcowner;		/* owner of tablespace */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index c571fb5..6059b89 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_transform
  * ----------------
  */
-#define TransformRelationId 3576
-
-CATALOG(pg_transform,3576)
+CATALOG(pg_transform,3576,TransformRelationId)
 {
 	Oid			trftype;
 	Oid			trflang;
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index eabd301..7d60861 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -31,9 +31,7 @@
  * to be associated with a deferrable constraint.
  * ----------------
  */
-#define TriggerRelationId  2620
-
-CATALOG(pg_trigger,2620)
+CATALOG(pg_trigger,2620,TriggerRelationId)
 {
 	Oid			tgrelid;		/* relation trigger is attached to */
 	NameData	tgname;			/* trigger's name */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index d0b7aa9..d344bb7 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_ts_config
  * ----------------
  */
-#define TSConfigRelationId	3602
-
-CATALOG(pg_ts_config,3602)
+CATALOG(pg_ts_config,3602,TSConfigRelationId)
 {
 	NameData	cfgname;		/* name of configuration */
 	Oid			cfgnamespace;	/* name space */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index cdee4b4..2120021 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_ts_config_map
  * ----------------
  */
-#define TSConfigMapRelationId	3603
-
-CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS
+CATALOG(pg_ts_config_map,3603,TSConfigMapRelationId) BKI_WITHOUT_OIDS
 {
 	Oid			mapcfg;			/* OID of configuration owning this entry */
 	int32		maptokentype;	/* token type from parser */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 58af179..1e285ad 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_ts_dict
  * ----------------
  */
-#define TSDictionaryRelationId	3600
-
-CATALOG(pg_ts_dict,3600)
+CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
 {
 	NameData	dictname;		/* dictionary name */
 	Oid			dictnamespace;	/* name space */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 51b70ae..ccaf40b 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_ts_parser
  * ----------------
  */
-#define TSParserRelationId	3601
-
-CATALOG(pg_ts_parser,3601)
+CATALOG(pg_ts_parser,3601,TSParserRelationId)
 {
 	/* parser's name */
 	NameData	prsname;
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index cfb97925..5e66e02 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -26,9 +26,7 @@
  *		typedef struct FormData_pg_ts_template
  * ----------------
  */
-#define TSTemplateRelationId	3764
-
-CATALOG(pg_ts_template,3764)
+CATALOG(pg_ts_template,3764,TSTemplateRelationId)
 {
 	/* template name */
 	NameData	tmplname;
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 8992fcd..4ddc09a 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -31,10 +31,7 @@
  *		See struct FormData_pg_attribute for details.
  * ----------------
  */
-#define TypeRelationId	1247
-#define TypeRelation_Rowtype_Id  71
-
-CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
+CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
 	/* type name */
 	NameData	typname;
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index ec62ee2..6efbed0 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -25,9 +25,7 @@
  *		typedef struct FormData_pg_user_mapping
  * ----------------
  */
-#define UserMappingRelationId	1418
-
-CATALOG(pg_user_mapping,1418)
+CATALOG(pg_user_mapping,1418,UserMappingRelationId)
 {
 	Oid			umuser;			/* Id of the user, InvalidOid if PUBLIC is
 								 * wanted */
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index e8be34c..f71222d 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -30,7 +30,7 @@ export FIRSTOBJECTID
 cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
 sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
-	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
+	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\),.*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
#73Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#72)
Re: WIP: a way forward on bootstrap data

BTW, I experimented with adding blank lines between the hash items in the
.dat files, and that seemed to make a nice improvement in readability,
converting masses of rather gray text into visibly distinct stanzas.
I'm not dead set on that, but try it and see what you think.

A small example from pg_aggregate.dat:

{ aggfnoid => 'avg(int8)', aggtransfn => 'int8_avg_accum',
aggfinalfn => 'numeric_poly_avg', aggcombinefn => 'int8_avg_combine',
aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize',
aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv',
aggmfinalfn => 'numeric_poly_avg', aggtranstype => 'internal',
aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' },
{ aggfnoid => 'avg(int4)', aggtransfn => 'int4_avg_accum',
aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine',
aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv',
aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8',
agginitval => '{0,0}', aggminitval => '{0,0}' },
{ aggfnoid => 'avg(int2)', aggtransfn => 'int2_avg_accum',
aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine',
aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv',
aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8',
agginitval => '{0,0}', aggminitval => '{0,0}' },
{ aggfnoid => 'avg(numeric)', aggtransfn => 'numeric_avg_accum',
aggfinalfn => 'numeric_avg', aggcombinefn => 'numeric_avg_combine',
aggserialfn => 'numeric_avg_serialize',
aggdeserialfn => 'numeric_avg_deserialize',
aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv',
aggmfinalfn => 'numeric_avg', aggtranstype => 'internal',
aggtransspace => '128', aggmtranstype => 'internal',
aggmtransspace => '128' },
{ aggfnoid => 'avg(float4)', aggtransfn => 'float4_accum',
aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine',
aggtranstype => '_float8', agginitval => '{0,0,0}' },

versus

{ aggfnoid => 'avg(int8)', aggtransfn => 'int8_avg_accum',
aggfinalfn => 'numeric_poly_avg', aggcombinefn => 'int8_avg_combine',
aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize',
aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv',
aggmfinalfn => 'numeric_poly_avg', aggtranstype => 'internal',
aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' },

{ aggfnoid => 'avg(int4)', aggtransfn => 'int4_avg_accum',
aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine',
aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv',
aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8',
agginitval => '{0,0}', aggminitval => '{0,0}' },

{ aggfnoid => 'avg(int2)', aggtransfn => 'int2_avg_accum',
aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine',
aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv',
aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8',
agginitval => '{0,0}', aggminitval => '{0,0}' },

{ aggfnoid => 'avg(numeric)', aggtransfn => 'numeric_avg_accum',
aggfinalfn => 'numeric_avg', aggcombinefn => 'numeric_avg_combine',
aggserialfn => 'numeric_avg_serialize',
aggdeserialfn => 'numeric_avg_deserialize',
aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv',
aggmfinalfn => 'numeric_avg', aggtranstype => 'internal',
aggtransspace => '128', aggmtranstype => 'internal',
aggmtransspace => '128' },

{ aggfnoid => 'avg(float4)', aggtransfn => 'float4_accum',
aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine',
aggtranstype => '_float8', agginitval => '{0,0,0}' },

regards, tom lane

#74John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#72)
Re: WIP: a way forward on bootstrap data

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I experimented with converting all frontend code to include just the
catalog/pg_foo_d.h files instead of catalog/pg_foo.h, as per the
proposed new policy. I soon found that we'd overlooked one thing:
some clients expect to see the relation OID macros, eg
LargeObjectRelationId. Attached is a patch that changes things around
so that those appear in the _d files instead of the master files.
This is cleaner anyway because it removes duplication of the OIDs in
the master files, with attendant risk of error. For example we
have this change in pg_aggregate.h:

-#define AggregateRelationId  2600
-
-CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
+CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS

Some of the CATALOG lines spill well past 80 characters with this,
although many of the affected ones already were overlength, eg

-#define DatabaseRelationId	1262
-#define DatabaseRelation_Rowtype_Id  1248
-
-CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248)
BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION
BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO

It seems most of the time the FooRelationId labels are predictable,
although not as pristine as the Anum_* constants. One possibility that
came to mind is to treat these like pg_type OID #defines -- have a
simple rule that can be overridden for historical reasons. In this
case the pg_database change would simply be:

-#define DatabaseRelationId 1262
-#define DatabaseRelation_Rowtype_Id 1248
-

and genbki.pl would know what to do. But for pg_am:

-#define AccessMethodRelationId	2601
-
-CATALOG(pg_am,2601)
+CATALOG(pg_am,2601) BKI_REL_LABEL(AccessMethod)

I haven't thought this through yet. I imagine it will add as well as
remove a bit of complexity, code-wise. The upside is most CATALOG
lines will remain unchanged, and those that do won't end up quite as
long. I can try a draft tomorrow to see how it looks, unless you see
an obvious downside.

-John Naylor

#75John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#69)
Re: WIP: a way forward on bootstrap data

On 4/5/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I've generalized the BKI_LOOKUP(pg_proc) code so that
you can use either regproc-like or regprocedure-like notation, and then
applied that to relevant columns.
[...]
bootstrap-v13-delta.patch is a diff atop your patch series for the
in-tree files, and convert_oid2name.patch adjusts that script to
make use of the additional conversion capability.

Looking at convert_oid2name.patch again, I see this:

+ 			elsif ($catname eq 'pg_am')
+ 			{
+ 				$values{aggfnoid}     = lookup_procname($values{aggfnoid});
+ 			}

aggfnoid is in pg_aggregate, and pg_am already had a regproc lookup.
Do you remember the intent here?

-John Naylor

#76Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#74)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

It seems most of the time the FooRelationId labels are predictable,
although not as pristine as the Anum_* constants. One possibility that
came to mind is to treat these like pg_type OID #defines -- have a
simple rule that can be overridden for historical reasons.

Meh. I'd just as soon avoid having some catalogs done one way and
some another.

regards, tom lane

#77Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#75)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

Looking at convert_oid2name.patch again, I see this:

+ 			elsif ($catname eq 'pg_am')
+ 			{
+ 				$values{aggfnoid}     = lookup_procname($values{aggfnoid});
+ 			}

aggfnoid is in pg_aggregate, and pg_am already had a regproc lookup.
Do you remember the intent here?

Ugh, copy-and-pasteo. I intended to have it lookup pg_am.amhandler, but
must have missed changing the field name after copying code from the
pg_aggregate stanza. Seems to have been unnecessary anyway, since all the
entries in the column are already symbolic.

regards, tom lane

#78Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#76)
Re: WIP: a way forward on bootstrap data

Just had another thought about this business: if practical, we should
remove the distinction between "descr" and "shdescr" and just use the
former name in .dat files. genbki.pl knows which catalogs are shared,
so it ought to be able to figure out where to route the descriptions.

regards, tom lane

#79John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#78)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Just had another thought about this business: if practical, we should
remove the distinction between "descr" and "shdescr" and just use the
former name in .dat files. genbki.pl knows which catalogs are shared,
so it ought to be able to figure out where to route the descriptions.

Fairly trivial (attached), and shouldn't be too hard to integrate into
the series.

-John Naylor

Attachments:

unify-descr.patchtext/x-patch; charset=US-ASCII; name=unify-descr.patchDownload
diff --git a/src/backend/catalog/README.data b/src/backend/catalog/README.data
index 22ad0f2..2c05fab 100644
--- a/src/backend/catalog/README.data
+++ b/src/backend/catalog/README.data
@@ -22,7 +22,7 @@ modified exerpt from pg_database.dat will demonstrate the key features:
 # that might contain non-word characters, so we must double-quote them.
 
 { oid => '1', oid_symbol => 'TemplateDbOid',
-  shdescr => 'database\'s default template',
+  descr => 'database\'s default template',
   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING',
   datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't',
   datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0',
@@ -33,8 +33,8 @@ modified exerpt from pg_database.dat will demonstrate the key features:
 
 -The overall file layout is: open bracket, one or more sets of curly
 brackets containing comma-separated key-value pairs, close bracket.
--The metadata fields oid, oid_symbol, descr, and shdescr come first on
-their own line(s) within the curly brackets.
+-The metadata fields oid, oid_symbol, and descr come first on their own
+line(s) within the curly brackets.
 -All values are single-quoted.
 -Single quotes within values must be escaped.
 -If a value is a macro to be expanded by initdb.c, it must also have
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 8d47109..bbe7da8 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -400,13 +400,16 @@ EOM
 		# postgres.shdescription
 		if (defined $bki_values{descr})
 		{
-			printf $descr "%s\t%s\t0\t%s\n",
-			  $bki_values{oid}, $catname, $bki_values{descr};
-		}
-		if (defined $bki_values{shdescr})
-		{
-			printf $shdescr "%s\t%s\t%s\n",
-			  $bki_values{oid}, $catname, $bki_values{shdescr};
+			if ($catalog->{shared_relation})
+			{
+				printf $shdescr "%s\t%s\t%s\n",
+				  $bki_values{oid}, $catname, $bki_values{descr};
+			}
+			else
+			{
+				printf $descr "%s\t%s\t0\t%s\n",
+				  $bki_values{oid}, $catname, $bki_values{descr};
+			}
 		}
 
 		# Emit OID symbol
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index d5c2038..957ca84 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -16,7 +16,7 @@
 # that might contain non-word characters, so we must double-quote them.
 
 { oid => '1', oid_symbol => 'TemplateDbOid',
-  shdescr => 'default template for new databases',
+  descr => 'default template for new databases',
   datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING',
   datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't',
   datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0',
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index c247a72..f748a45 100644
--- a/src/include/catalog/reformat_dat_file.pl
+++ b/src/include/catalog/reformat_dat_file.pl
@@ -59,7 +59,7 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Metadata of a catalog entry
-my @METADATA = ('oid', 'oid_symbol', 'descr', 'shdescr');
+my @METADATA = ('oid', 'oid_symbol', 'descr');
 
 # Read all the input files into internal data structures.
 # We pass data file names as arguments and then look for matching
#80John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#73)
Re: WIP: a way forward on bootstrap data

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

BTW, I experimented with adding blank lines between the hash items in the
.dat files, and that seemed to make a nice improvement in readability,
converting masses of rather gray text into visibly distinct stanzas.
I'm not dead set on that, but try it and see what you think.

Narrow entries with natural whitespace might be okay as is. The
pg_aggregate example is better with blank lines, but another thing to
consider is that a comment that hugs a block is clear on which entries
it's referring to (pg_amop):

# btree integer_ops

# default operators int2
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)',
amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)',
amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)',
amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)',
amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)',
amopmethod => 'btree' },

# crosstype operators int24
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
...
[more blocks of integer ops
...]
amopmethod => 'btree' },

# btree oid_ops

With a blank line beween every entry, the comments would "float" more,
and the scope is not as clear. I'm okay with whatever the community
thinks, but at this point I'm inclined to leave things as they are and
focus on the other points of review for the next patchset.

While on the subject of viewing, I do have a badly outdated patch that
would create a postgres.sql file which would load into a development
schema so one could query the bootstrap data in a database without
running initdb. I could update it at a future point.

-John Naylor

#81John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#71)
Re: WIP: a way forward on bootstrap data

On 4/5/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Something that bothered me a bit while writing the warning-producing code
is that showing %bki_values isn't actually that great a way of identifying
the trouble spot. By this point we've expanded out defaults and possibly
replaced some other macros, so it doesn't look that much like what was
in the .dat file. I think what would be ideal, both here and in some
other places like AddDefaultValues, is to be able to finger the location
of the bad tuple by filename and line number, but I have no idea whether
it's practical to annotate the tuples with that while reading the .dat
files. Any thoughts?

We could use the $. variable to save the line number, which is what
the old code had. AddDefaultValues will report the line number on
failure, so I left out explicit line number reporting. If memory
serves, Perl is sensitive to how you format the "die" message. If I
delete a default value from the header, I get this, reporting line 16:

Failed to form full tuple for pg_opfamily
Missing values for: opfnamespace
Showing other values for context:
oid => 421, opfmethod => 403, opfowner => PGUID, opfname =>
abstime_ops, at ../../../src/backend/catalog/Catalog.pm line 259,
<$ifd> line 16.
Makefile:23: recipe for target 'reformat-dat-files' failed
make: *** [reformat-dat-files] Error 25

I think the context is good for pg_attribute, because there is no file
to read from.
I'll think about the lookup code.

-John Naylor

#82John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#81)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

For version 14, diffed against f1464c53804:

-Use majority values for proisstrict, provolatile, proparallel (patch 0006)
-Use valid C string for multi-char defaults containing a backslash (patch 0006)
-Apply Tom's patch for additional lookups, slightly modified by me
(convert_oid2name.pl, patch 0007)
-Apply Tom's patch for relation/rowtype OID macros (patch 0005)

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Just had another thought about this business: if practical, we should
remove the distinction between "descr" and "shdescr" and just use the
former name in .dat files. genbki.pl knows which catalogs are shared,
so it ought to be able to figure out where to route the descriptions.

Done (convert_header2dat.pl, patches 0001, 0003, 0009)

On 4/5/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I think what would be ideal, both here and in some
other places like AddDefaultValues, is to be able to finger the location
of the bad tuple by filename and line number, but I have no idea whether
it's practical to annotate the tuples with that while reading the .dat
files. Any thoughts?

Done (patch 0007). So far only lookup_oids() uses it.

-John Naylor

Attachments:

v14-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v14-bootstrap-data-conversion.tar.gzDownload
�yy�Z��{�8�(��&��]���eE��w���]�+����v��Lf|dYN<e[nI�TNw�g�HJ����d���w�7�ID$AA�\��J��q��;��c�i>rf���u�����3����6����K���c���^�2�Yn���O�W1�F��+F�\o�k�:+�F����}S��[y��BW��<,��6��`J,��?��{�g�h6ZV����r�a���z����e��F�T1���V����Y���d�+�N�����G4���@#vm>��}�OkA��x?7�3�r�?����}���S��Y{�B�r������i����F���_��i[�)��m{p�����&���5�`M&Xs��{�m����v4���~U4���{ ~�]�����?��������e#���8�������q�zd/M������'���vN����OS}9c��Y�rj{KPmn�&U�.�o�`������~�z8��E�����z`&��B?g�1{�D\{f��rp���������VS���f.�>������������G@�pm����y�������:=�c��j:�)�����`.��{z4����'��9��������^;H(�������|�*���|������0~Y��.|�C�	���.<�o�$R:��$���n"v$�ln,9�e��S���)14�O��(�i�	��sa�������Y��
3a9�5b���)���8l�T�l�:>7-�����7���D,���W|,��_no����fxv��\�g7�1S�� �&�ec>����������>I�$1����������J�60���8���}�Q�z0�}�A+���%�'!���L�)��@$y+#��#�~z����}����N���=�������0-���Kw���y��m�b���� �3?�f29�E{��A.�������V��F �a������r�xr���A��c����dV��,���/S�h��p��
�!� 6�\��>�$�h����bP�����=:�'�=8�8�0�xZ�AF`B�'��o9K���A?��c1h���G5�2����
43�t����;+�������/8�Gw�ez�	�D=��H��?�y'����L�����c�M?�����Ac���j9��"�@]$��||��<�:��YF}�6����N����'{1�Q��[PO�(k
�p��[�/7�[4X1��"R�j�*4��;>>^���"X�7c��$��Q�u%������^qj}s�@�������h=�W���&�m9s�j�!�!roJ�5�	2?�v�,$kzM#�������h}�Ya��i-�&�9L��,S�BM�D��U�>Q-�bVE�wAE�k��8���S��������<������t�:�V6a-���	[�+�&�����dU�Y�P���H�&���M��\��"U���IY���os3e���^l*%�gU
]gf=���^���=�r&,7C����n����
���h{�;]�gdsWm0��0���h�
AJ���Zx����^$�1����A��|]s����W��`�l��>�y�1fW�
��%]���3]�;��B�����h��KHGv�t+�>M:�*���C���XN�8��W1����������k�*�Y��:\{h"3��F�q�������%���OgOIFeC����i�c�U.�L������Y|��Q�k$��\kB��G�-W#i��9���kXq��3UAgW�M�.�����a�������H[��-�����5�g���qa��+c:���eh����)�P��>��r�
M��ZI���EY��������9��TT�u��Cb�T{�4XY��y�8l�����:��f�dz��|�ss��|@���J���*�r����U1M�����L�9�).5X1��l\RV�q$�R�K7��j���}&Kn5}���y'���������A�2X�.���8��{����3[��$�G��� Q}E}d�iuc{k^my����~YS��-�-�������&��l;�k�Zll�l�����?�N&�����<���F�?��d#k<�j�^�k�
`+�J�j=O���@�8�d���b����AAO'�l����N.�_�o���X��-g>'� N{�6�h�r?�tJ�vO:S�{�x��>N=�3��;{6�g���<t�3���]�2 9��3��7�w�1�\[:O��~��"��i�xp��������~��w,�r
3���q�l����0����*�����c�3$H�CP��Lb���Q�g9���Q��t�U�Z�����D�pJE8�5C
@�Ug������X�� ��{<@	�xL���G���<����N���-�7`����G�s4Y���#,�
��W�1���q�(�BI�(�����k&�,!������
6�i���>�;8�j��S`�g��IX"3sW~��Z�����"�2�3�K��m.+�X0��1n%���grx�p�/ip"����#A��������g�`�,��dqI�#��t���	���ICvm�x�X��ps��iJ�%��r�!3�	r��#��LR]I�$N!�p��0k�����`�u�e�K���3��@�����\���p�8g4�#@��5
,G���	t[�,�W������������N����'�.9F� ���	��`[~2{�����jp��]�4��g&9�An|'x b�I�?C�,!�M�S�����
j�����������!��dl>Y�`����d������wP�1�G����O�#��C�����a��^�����^1�j;�8e�o�����V:�;���yIeLP��3pI����d��4�*ZF��M�:���I�������.�e�4��r��#���[�nEG�������Q5�@_tTH[���)�
}�i�����wD���'G��������bh�{�UX�|����p,����E����b����O�)�(�jB����M9�mo��0',^sd����o
����D��U�5�0�>;I�[�stv��'�'A�S���6��f�(g��a*�fu2��zs2*Y��f�((�FB�T�h���!�v����V	�����N�~#�>�O��5<���[V
�������������p�!��JX�@4��{����
e���H������������2l1���0���W��~�����������4�
�:��7��:m��Q��sK������w}G�c?����f���}��@�%;&z��-5��R�����#���E�����7o���}:aGs,{S�!"�n	��t��73�1b	�]���."�v2Y�T���������Z�����f��x��~xq������)M����	�-�c���K�����+Z��~�x�k1���oDT��] =2�m��k��x�9�-+#6�t�������]v�ODA		��v��t�{Iv.l{�9��W����b���(�+����b��IK�Gx�=���g�� *4�X�zp�KN��0�����;��A�'����7���;�)���M�8�Or����ir2^�]�tk�����������
�}���e����1N�`�������#����/h�v�=�!���bT���q��0O�����;g���x�?�;�����~+��N���	
���RU���h<Tp��%v���Y�����W<�M-����R�<j�<�C!�wGG�����-�N1��{O����pM0}��p=8(����L��M�aH��1�XN����E�lS8� �w77�����=ab���z�N��a�/��	l7�
�8�����a�s�to�9�X�t�($�
Z}q�?wn>�7��>G�BK|�Q�8���4���D	{Et8G|�+�T�yx%�
9��2�Q}����������e�����z`L;_���n����+��8�r�9���j��g���2L@I2�3��"���!M�1��PWF�������IA�Vh��+4y��TK[.����D����k�4��"f&���a�+�F���`�G��(,����l/k�`d�e
L�J��~L���+_Q����[tJ��g�����)�w�*�+?)�O���a;�64]c3��8q
\9������7z��|��T�	�y�xF�#�O�L�������p�h-��d&"�D@����q_��[���|�6,�����I����z}��=��������M��3�x��0�*%cd�u��0��qu��1�)B�hr}�mv@}��^v�@��]'t���;����+��5��O�Y���l�=t`��k/s�tc/x��f0��B�����8p\`s���#��������Z��%���t��=�V�J����Q���1���~����w|��l6�=-�W ��Bw`�q��G��qp�Ez�w��?82���s�%��q'�v������=���>�����-�
���?����au<t7���<Fc�%.�'#���p5��;-�M`�b����5�^����h�n<�2{�R(�8�5�zJ�Y,(G�P��p�An�0$�\��a���
C	�}Py�V���E���k�rU���(�a���o�C[D����].�3���L�sA
H��U����n������
a1� ����^b������?D/`>��:��$R�'s�|^�����t�Z���Q^�u�h�b��U�	��1�
�'��)�C)�6��Z 8.!.Oe
���x��G&a�L�I�B������L���k�w��-]��,g���V"]��p�B|����FW`02�z��R9�'��;��F(gjqk+f�J���D���m�a�9Z��]���9���F����3q��[-�3�-H����7��@�`�\xC�����H���>/~�����!3'�fct��B����~�YC�������.�e��M�wDg��pau}�@t����l�3�h�s�Y���o>���w`�xO#�D���Y�b����7x*�X��P��"�A�[#�]!�e��LuX94@���~1���V�b{�xs-<��tz���Q��#/:�T������E��g��b���6�`"3[�e�����|��5(y?}����o1������4D�o-�##8�bv��j�C
N��\�0gi1n:����E��:��v�z�����t_\���Ud����m<�����O�F�����d@����!��)2Uw8�/�%����5���F���CU�<�? pb��h*~�t���!�l��X"�1X�������1C�	��c�d0%�������<%�r���c��u��@���>/M,m��4U��������+}7M�
s�%Zey��^�����:����!l+�qT.WE��B��}�8G(��A ���������?��6~������f��U���[��?�������_�7��F|��5>n��^�oi�+\Oi��d���LxV�q��u�3���i���L7u
kg���I��2�h ����R$g1��R��x��ijf�3+\��=MA�pg5jc�j�u��2��I����zVC>Q��
y��hB�),�?����K��{�0/ ���||)r�,mkJ�\:�5������A�'���2�)��&o�9��[ ��2�Z�7a�Ufd�M���v��Rbc����:�'��1���u�=v�,��������+�Z�cL�������]�M�9��3g��Bv�:�e6���z�=\�d*S���'���Ma����]�%
�+itx�������?M�\�{t�8b?�����!c���:pV>B�q�C���?w(�=�"~j�":��v��'<O���������L���~`��@�����;���t�3���x6$:���/v����	X���������vh����
E,�#�u��$]�.�l��JT�&+V�<~1F��|�7)+��	8�~%#v�����}�x�~�(�Cb3���q�m�����M6yB3t�tt�����T6)��^�i�� o�{jvj���AE���~��E�t������N�o45�.�08["�
�C���(���p�I-cL��@c�?`\��Og�|i����`A��-�uQuX@q_�D���������h������S77AXO{��������2�.��#�<2�Nz.�T�hp���Q$��I�K�:s/�`�Va[e[����G�/CL"~�d�Stj�JU�	�L����~��?�x0m(�s����e��O�>o���lPq���� w��C��.\��E�({��,jhf�zi�S�-\)�#�rG�����QA/ ��w�<��(u	��q�M"���� z����I@TX�0vog���I'}~���a�����u�1z�I���i2������.�I����;LEX������P:��2T��}�����/!����u�=tv��&�:q7�]H�
"���`�I-��G�F�������)b|<����2j�r����Q���ir�j��d�L�e����R_|1�/���_T��/(�����yup�.6���{ �_�a+����
D[^'gE�`]��y��h�����%�
;�x�B��
��a��p�L��>[� �?��V5��6�Z��W��]�4�zMX��)5Z;�b�)���R�1�Jw.J��shV�B����
4��G���6�TS��2`���J��HyzH��;G��.�a��t&�3E�����Q�"4��c�fI��Y�Gu(�#�u�=���(�L���M
�������R�me��-��NKg����"{��g�y�{�+��J%�w^�2��lL[l,e��o�>���;��Z�s����n������l���������"�wh��8jx����.����|���D���E`<������t�"+N��(�#X��JDZ��n|0��=������( ��H�������u�_�2��]����HD�jk�S����@t����-W�g�p���"��`�)�q���T�oq���u$|Eu�<M�����e��i������pR3�d|/'�a2ua���l�Zj8jv$����3����
�=y���X0L�_��2�5��$�kw��M*^�Xnx�$�[Y
�JB�����[���'�T�-"��R���F�����%�Y"��Q64���SW�T��oz`�]������Q��;���E!��_6$�G�R%�;�4�����&���]g,>�!R�b�e�Z�m�0t�V.�gJ����0s���c,{�C1�������?�\�"�6�;+��'���\��s��O#�F��0]�s�6�W��P�1���!W,Y�A]����Y0M/p� n�Jg����1�	N���9[��G�B)#��kpA,���32�9p�E���J<��E#�������f�jRDY�p�&�Ua�x 3�w��N^��Vs��,&4����&2'i<0�mC6��zTc[��`�F�&��������`�������q���H{Ngq?q��F`��f�D���fa+���]�G����M�)��@���I��_Oy��q7�Q&���������c'+�XE@D|�x���"$�u34��cr��\'b��Yx����+qB�<�"/��h�8r����+�{�g\���C���-��~q�3:
�*fm�����#�V�������mv���(��6����G[w��lj&��Fy{b�������\6���C�T$�s�T0: h�
���,�f�k��;!����+,b[��+|����x'��
�����
[���,XqN(�C���Pv��:p�v���u�R������EE��5�����
8�����#.���.0������9�t"�?����cyuP
�12t���qC'�@�n�4�V�T���T+�J##�[��:������.v�d"Z��CMU��������1[���h�����������UF=���}/�bd4��t>�(���#T{&I��o��I@��Q��Z���;�JQ��R|?e1=	�Ts�l&�J���qy�cJ�����S���2��a��������aTa����X��T��X�	#���%���H�I�~����P)�'BF���7��Q��z�e��V#�FC�("s��6����S:e��T2f=��V��W7��X��|�j���������.ES���_����D��l:�Y)��G��'\�������b������+�����p�fG�c�hE�~z�s�D����AC��������H3B&W
9����J2�40a��dv)	�������/�^L�M��g���5��K�������aN��w��;������t,�qJj��'�F����JF��u�n5�f-�Bp���H"�+��
O��.QV��G{�(���|��F�����	�n4kq�V�q����Q�y�X��r-/�=�x�W���$��h��7�dX��N�F�u�����C�sqx���3\�Ec<7G��`��$w�����)��
!��t��;����x����u��#x�*}�d���Q���]o�&�dlm���zn@DL']�/qw�~�t�E������k���#�2<b
�[T�k�w�F>"H�A���z��sFU��ry�,��{����P#WYx�������-��Q��y)wd��8�;��=t�����C
(���X:�h���&$P����F��SJ����V��DK�d`�'��o����#\a�@����y��'�/�}i�N�������#�A��%��&��u��P��|��6�����,"�K�����5�5�"��P����� ��t�x3���F���#��e/}������.t��}'z����<�pd��bZ/%(,zWcn�k�v��x�:��j!�����73a�i��U���M�Ll(p�c~L�����.�|	�V1�
����'�`��3|���|@��P��jJB!^�5ee�����F��fh�K���Kd��d�=)��5<sb�O�oeSx�=�����	�3��E{g�S���;g�$��py�A~U�������.~!6�������]4X�\�[|��)����xyS���H��G�:r� YRic��KQ�����"
$�%���XWu�����fs��C�~q�����E�Q�,Q����E�s�t�B��d�W���V�����{%��gGr�,�����y��\2���	����j�a*&�/�Ae�nK�=X�3f�K%��"W_���Zq-���F
��0��\<#D!-��g�&������A�dK�8T/��=�b�$,�mF�5����Y`��s��q�0�00��w�epY8��)3�O�v4_
��b[��x�Z�i��iJ��`���_����z�F�ssX�*-�"��Z�������������~w�uu��A�:������`)z98XM��q]��5�<S�C��R��������a������V~�<Z�jgu7��s����
�<	e�a�4�<UU�U�K�l����a$�W>s��r!�d�G-M!�'�+�	����;��k�
;�g�y�&F��Y5Eu�>d���"����<C��k�6� �s�8�'�Y�d�||���}E{��$N�?\h���������� k����*a��v�CXP.���,h4+j���n4�FX��U�TK�����*�f)��a���j�C��24��<yM�1*7u}d�k�zN��c��wF�P����ss���q�9���|	��,��@7"A[T	M�,Qq]$>k�(C����y�y���`K���������t��-p�7���&���.�����D��&�%���{s��w�P�\����O��C��w�������<wr<�C��M����jNz� �!Y@�Y&�F�7���6�&���J��_-g6���+C`p������;[%��4k���5T�X�k���/
���.Er�l����3[�uf�������kZ�?1Cr�m��F����f��s�_U���"�[�4.�H�������u.6�S�����.��V��B{�r�[�JB�"v�J\����Q������uT��VM���Y������{w
A���H������d?]��D������n�z�>��y�S9�H�e)��q@1��Y�xC������<qD�
@���>&F��q�����)%Z*B!>B"��XN�o�����<�"��\�2�.�%v��U�����V�G*,��5��6!a�1d����P�����LL��R&�o1�)�3�_	Qk��z�D�,HXcl�5�f��I@:@�P�^���	a������l*��q��(rr�-�QWC�~����)J�� y&�8�b�]����=��y�����d���2@�=q�
a��%p
���	wf��Q+$�* ���`�6�h�A�tH�1P3�d��������	=<��GB�4mSn5�@�����_��4�������s�!x�{Y�*FC�r�=����a�����}����M��~����p�L�n�`r����0��x������������
�����2F9}�QT��5
+4�<@#i�||^u��uz�����d>=�Tx�F��K���=W4e�^^[���=�YM�&��5DTH��,��z�R�7�%������r�V����YQ��f5~T�=��1 �����~PGx�d3�&�K�;K����P���jT���-���n��0ER��@���F�(�%]����������F�DP���d��SL>h��9�h:V�)���Yj��)r�O�o��tcmg���a���h�q���
��b�mPL�q^��G5Ri]qL!%\��*�Fi�h�����yN-����hk��N��LG��
u��qf������@��|�qe��&���g�G���F�������R���$^�q8�L������j$�K�z�l�4�uK7�aPo�j�v���H�� ��YA��tjxD���
�lY�7a]�/;���������W�4*k`(�/�;�A�������������������#kcl���}9|�>�K���T5(�f�b�=���X��g-"�\.!��m�-]�4�R��g�
����:��G��=k��.�D.�o�"�<���E���y��^�Z�|��(B���P�7Ji���`p���s�7��g������
�g=�.�����X�F�&(PTu �(�,�j@���b��k����7�� E� ��Y��T"��!y���M�����M�w:�9�O���k0R1q1s��T��}"�&���j���B��;iM��m�P.]��x�l�LsyX�����Fs����y�%�l�!��w����v�����F���|��h�()���Z�6�{^jWCi,�,hn�����d'7cOT������OI�%����L�Q\�������fe��'��V9�L���D����?w��8e�U[���z�K�:�"���{H���x��\���G�S+��0����/:=�z\�H����S�f�	B[C�d�����v�}�}8�>��(MnE�<��^��@����V���-�^�X�|
UA��T@�g���3��\�9�Y����)X	�JV��e�I`���R���T�iX3�"eZ
�BL�a
E�c�k3	�O��x�T�`ba�\m%������O!�@�����T0E���r��$�6���,V����)� ��_� �Z9�6dX��w����<�����T����=�sR�/�����z�N
e4�^R���P!��L�Z�6Wu�.����/.*�g�jR 7�t��\�����}�4�S;I��POW>�$�c�I%q?��P�B-
k�����j��QQ�������tD	CfOt�q��������>�5�P����2����R���w8K�Wt����
&�yq�?��Y�|�:��j����`��e��?Q�Q"��^�0~6�������
��98�0����2py�t��Y,<��.H�,MJ��Hd����(W6Nl���4+�q��W�x6��R�"��L�}���{��PD���e�}�6�r����e��`^Aq��B�Vn��8����1��H*<����Pxj���5i�-�}���
��{�Y����'z��������<E��6�����[#��� �c���02��U/�j]oLJ���#�KK��*p��F�s�]��s��l*�� ��o;HLy,�s=�4�D\He���	�l��|�L�e�?)�UKv:C�������)LX|?��)�"��������&/������0C��=��E~�U��k�6�_�G�^�5�&���f4����g�x�9S��A���+v����zib��r>�JY�
J��t�d@4�!^{@B������������Q�]��BP���~e�~w��eZvj��0����c!9�h7�|!���R\����
�`�����v
A��EuP
mM7r�W��k ���(���@5��L���tx�����3h�h���$��gY"����G����l
71i�r�n�Mk��NT0�J��5*��nZ��x�oE��F"���!�=�>����	�g���/`���r���f�i�4�����A�PK�����Y(�2"E��4	� b0P�l���V�����L�C�_M8N���i
M��������Kd0�|Q����y|�Z���0������l�xPV�D��U��j�������s>��y��!�b���i������C��3�+������l��!�Z3M�\��&�I�l��E86h4E�
TI�:��v�w'���Ta���h/��Oq!d����e:��-)�Z��4K����:�������k�>;�[|vq_R)B�G�\�q����,%E��#���j����"/�t�Cf��&�6m�RC9k�F������6�
*�Q����?�uo�s��4�S�������\R��D����P,�(�Qp-��u����4'��!.}�h�?���������&�o=�5�y�Y"���k��.���n����R��Y����k2�z����f�e#;��,`�|��v�?��H8	�8��i�z~��<�P������f���RKdCL~����g-�"b�#t2&0�z�����������:�A������.����+'e���<G����2��"E�5��U���/��&��������4��N��)��zn��d{���0a�=)���]�'\1T�R��������������v�<��\�e�Ft��m�� �%�Xa��U������j
br�(��������^�?����$����p6��b�M�2�425����w��,m���x5��~����#yH��R������'F�Q=�-DM��*�e��A��9�Ac�dSB?��
P��H	����R#n�85,��b�LK����/��#��A	����y�@����LJ`����%O~�Y��Y�~��^^y�W��:f>��4A�R�/WL��lUa[Yo��J9����)�k�l���7�N���?��s�}{��2���\�V�����5��������zm�b��Ci�h���`ZV�qy��Cy(�%�t��>�PD����1��������g�k���Ne�
�Jw�
0��A:�o���Wy���2��&�����5+���W.E@�+��4_�$I���������J�y��x�oQ�Se�.W����(r
!��[������~N5T��3�*�,�����6��h$!��������EY���BL^�<2,e��e����Fel����qT�$X�`���\��F�_��|1�%t[��U��\^�Bj
6�������=���|iR��+z���4h)�B�y����>�F�Y�E��O��+�|~ww��y���6K��t�
�\k��^���r>�D�)�h�ENW#w�bj$��
'�s���*��v2z�S�?lC�4,H�mv�jXS�5��"��(%�j��XY��$E��Zvp���cH���z���b�M)����BK�s9����}%^�V�%:��G���Y&��|��E@(�f�#>26v�������o�����gk������BA�%>�J�����qS/�f���L� ad�j�d%[�+#�.U�]�S�lP�f-����vN� ���+8�K��)������-�������S���G`�$���jsiW�,M���t�E�K�UyS�dYP^g�ew�3���:���K��.���
"B�&e�9����a��W�9�L��A�H����H�z��u��^��g��l.��I��7�+��M�[�������!V
K7
]ZKi�����
_���%y�H�D7��0�"����S�kY�1Hs:����t�����o�I�e�"����yY�f��S�x������W������<�P~�<�t��Sz1�T���
�lR��G'�
�����y��Ma�
?�����u�7� �y���%Sy(p�����������[r�T.�!���4$�<*�R�F��x6M����cM�"-�.�*��U&�N2�R�d��K�wUR��b^/����Y~�U�������tz��KY}��u�3���w���H���%?d��K��t�m��)�
�����x�~�a�-3��;�h������?��F���.:7���9�9���`N	�_B�d���o<�E��-S�tT6��qp-��l`.�2F�_�$��bNO�T�&0��unIC�(K��K�hM+]`���r��1�,����"���k�pz3�\��CB*�?sm����+C�����O��]g����U�����{*���b8�}�s�
^n�kR����lT�Q����y5�Zg�9�����MG�/�[d�U2A���y��	�n�u�D���i��)Z�Z�.nU��2�,D��\�!��*��=��c>=�~F�s)�p���HP��$��m����r�ee��$m}{\��x�������^E�)�*`v������4�/�9^zK���W5+�0h|��3�W�Lp�9d���H0s-�3>��������G�����4�\>p��u��M�x7���r�P����f7a
l8D;V�St>dSV.G7��8,n�"���]v��rC$F�������rc��$xr�Q�TK�^���F+�	"��!�
_�+i����2 ��r-�����(��-_R>�
1�����('��s�D[�2����l�{�yP(���q��e����I�|�{��X6����Kj����t��U���>�l(����7�A3	R��	�@��hE�I�f �	�y���W�����0|I4�T���� ���tA
�W�����k��%��k��@j��'���
J��MJ�fV�������Q���P�
**�������������dS9��xv��������&�q}#��F\E)EZ���1�`���/�����x,���Oj�HW���l&�G���
I�5�I������v��o+s&i�k�Pq�VY=s�����V=Zz	*?,Te�����6U
po���h�s3��2��m7#mWU�*j2�����E���_A�����V��Y����=�g��Qo��xw{�����(�j
���^��!�.i��%�Qb�K.dI%eX���txkF��2(����eB�5��g�A���I5S���U�Q��ug0�|G�{�J9�X�oU���[Y��^TOk���N���QTj�4V���4���MA���@�S����g�(�cD�����h�)�C����A�{�0����R���������f3Q���h�J��Yk��������W ������_?�/T-
������gr�FHHNi����\v�`+�`Z�4��!Si2�	�~ �+i����	�Jq1���)�������^�L~�mb����l�M��c�R�jZ���&�q}����`�`�p�
��������l���~�gX"��^{O5"�F-~%kX7��"m�M{KA����D�\V[�a�"���e���s����d������'��>�������P�!_W��������_b ��T���l���Q�u2W��rE�*;�@U[p���z,�Z�*kA1h�?������6���� $_��*��O����o������x����`�j�]�����Z�W	��e*��
�����{�.f����Y�`�����Z���&P�Q��a%�FL��O`�h�Y~z%-���}��D�+�E��B����">����� ����OA��h���8���k��<*;Q���NN��q)��[Q�|�.:SC(P2�|�\�����f�j�G�T��'['���L���A������j���|������r	��L����/W�~����;�c�a��Z�&s��K�Y�[���?J�0@*�����	J��������L0�����3�@8����v�p���x��s��3�Z�{!	!D|42�J����9.Y�|����-�H�5_��<vEJ���qj�����G�J�(����"��{���W�Ux��(�Lv}���q�����|r��>;�
ha���X.�������%��9#s������Y��r�����0U5��A��������������9�G-����������+����{�k,E~�q'�Kt��w	���T�&��%H5���x��c��$�/U
�8�xh��:��j���(���d�_?�����r�%+dU�I-�v<C��������Y�q�o����Vv�ce�:*�)����w�+��]������8�����mfz7g;K4�Ov����Kp���H�O�P2 �������e|���������nLZJ/7cO�����	���ji	��0<1,<1W�h$�?�R���8����#�<�1?b���|��B}�P�e�"�����w�Z�3���-`��M�wq�j�����;�|�
@���C�y/�rq���V��H���T0i��l��*�z����j�������[Tj��r������g=g�4�H�+�xT�9�6om��!�P�!2��\�2���{{�r)~S��aq����j����j�����{�.A�s�IO�����d�2t��:�����'J��|#�9TH�����L|7
x��v�|�T.�,��rPy!��X�l�����9-����+�7�)��6�%��g�D����"���5"�(���A����&!B[�J����E�Ln���o�;��Q%�=*)�����s��4Q��w9�[�J0t�E�5�w��L
Zo��%X��F}To�K!&Qd
���"���;
,5�KL	���Ih��c���Z5�o \l8�����
wq�6�=�G��>���F�5��c���M�!�v$ ���U~q��X�3G�^Ly��?wI>q/������\{(���O3��4hi4���]�t�l�����OV��enZ���&z��@[�������d�	s��G�|���,Cz��(�������
UR��^*�O<��h��I�LZF��9��A]:�9�=Q����yB�{3����Iy�����|���������a�$REg$�vV I���U�&&����;�>
@�A�m4�v]���Qk��]"��$$	�A�;�H����{���?EC��x��<G�O�	4v�(��S �p�X.n�DK �������^�?��<��UK^/�v c�$T�>�.5�����������@�Q��6��9�kf��Ot��Wk�|���%SD8�:�6p���;g��w��[eS��D?_L$�<r���K�U7��Z+�-�(5,�`G`�d����]�3�y)(�)�!�5�er�X�\����T�U$�Y�V&C.�/����E�E�Fey����l����T�w��`� ��J:��)J��_?v�w�E/[�2�H/P/�F��*�kX�QX-�?[�v,�$|��F��{�,h���8���K	p��EqhqV����i�\DV�K���v]�[:���i�L�t@_���j	"����:J$������*�`�0��5�d��u�o$�k�G�Sn�y��DolG��.�%����{�A��-=��z
k�yd���T�l*����R��JL��������u��YB�V
�v��E�k������W����X��������������)��6"������]�4]/�&�R�G��6Jt�5������~8�hn_�&��r����R��_�$
�������.��I$ZF?�����������j�����*���|�����������v��}m��W��
���$��N������(�6�@�����H�8],#N@W.��R�X�l��@&b&"�7���+7;�u���A<l��xH�C����rD����#�alT"������a_pWo�Wjj@�����XC��a������������zGK�����C%���E�f�!������lg�����;8l|�s��fF(+@b����q�l�z�4�7�9�M�r�n�&�`����Q�Ac����~���D�K�I���C���):�[��H`-��u�$ ���������t������'��?�r�>��������`eUd��}w:Z���q�?�X������8�2��p�)?�,����	>��	��)���g��^ax����D�L0f�'t���%�1�'�;�
������=��Y+�w���� �;*|(������W��|9����2Qb�Y��&��U�:o�;�|�C��!x��z�N�`��'�n+�����C��T"�5(�+��\KG���/y������H���Q�z�C���I����V4������>���9����Ht8>L�^���Y���	^�%��Q>�TN�����8oUFF�5�'�QL�b�;��ID �?�{�[Ji0u�p��G��a&7��Vi��Q"��,�J���T��������{L]V.�l�a1�8����-��`_	z������~�L|��3a�b�l�xl�
�����A�����3�c�jqi�.X��j9���|�=�<�=��m�*���C~3��T���V��N��
�"�q;K���hT��'f��WZ���[�z��Z�F�*�u�u�(^��k7O���W����U�k����\*��pO��������t#	+���+5�6�l��������-�*VodTIW��o
�|�F/d���
��2�|����w��q��*����i��V'�\r���^��F��C��%���J�_��$���j���/y	=���F�k�k�|l���-h�+��Q�F��k�[�?���������a�����������!v������`�������j�,�}�x�whQE�N�k���N��\���=���i����������S�hTrn|�C����f�a���WM�n���F�d�����']�}�as�6�!��w�!�<
�����_�(���B�VPI�="z2VAKk)K4��[Z���*���)O���x��Z��!.���K��{:��o`���v��������������r�p1e6;%����y��L��{�O��������� ��(�G5����R�5j���R�d+��6���"�PH�����zp�����6v�|�'����H�T6�8�,�|@/tL��i�4EH����4��U�k_�����v����|�\B����r�q	������85,���eZ
����w'tIQ���������T�!��>00/�1���x��Q�AR���7 |�z�J����I�3	�
�zfl�(�]?������Uy(�5�����|�$��
�[��u��WG�jN-.�l��,��A�{�I�w}j&���f�O}f
fd3<t��&q����+�1�) ��E#P����F�"����Equ�h	dQUp�vj )7}�����Q��/l;2�x�C/��(���do%b��g�e�'�����-2^}�i"{7�:8�S��}p�;�!��������zTf��p4�P�: ���\�'��1��g
p$c_��U���JD8�mgM�+�7d}|��}�bgQ���f	���D�Kf�g����N����1���iI������>����X��<!��g���U�A����\������>W�ig�
&a���r�����e.���2����qS���Q*���N��'x8��]�o�/���vB�5^P�6�xe.���������7=�����6��:�� �������<#D#����,�E����	�S�\~�/�X��C_����3�'�Y��$�4�I����z�����~�O���D���Y6'c|�h��|��B$�D]��������6������/"��(�0�O)���>E�9as���q�X)���WW���qP#����Y+k�N����^�.�5��*d���E��A�8�m!R\m*	$���q��Nt�*�je;��$*�M����v���}�l,�x	���Q��[���W<p-@��ZN�R�%&�S�^(]���y��yE�o������^��j������A�$�m!dy�����}4�����Z��J�|��Fm�-����?������r/~(��	]���F=~�YA�aqB�"�Z���E��(�>	���1����|�C��!���+�D\�R�L���M0m�<�6r�X9�l��0�����U�0�.�p�v$�S�B_�JtQ����,��0�w�}s:��yU�;�D�Fza$_}#�
B���7%jol��0i��mF���nF�z�����=LPo��z���F5����g�x��>?��M��n����{��n��C�\VX_��C�������5}=h��F)��_���?u�7�]}FJ�^9��u.0�<��:���:����p >�/�B�������}�6�kE���7�PV����%}�*�����9�������>�E2L��W�e�P
���j)���������}M�V�|��R���jp�e�s��CFn�|��
�W~�_+*��_/h�X���{-������M�f�5����&��t���!�Q���|�T���tz?���j�>^�����kQ��Ns��R�RY����@=R_%)n����������>�["�z-��6�^�AMs�+�}DQ���:?R�����S!�a�U��}v���_�T_?m���PZ4�������2�O��Z�T9�Bv��>#��
�W������-IPD��������(����z����Qua���k�Rd,�K�>_����gB{�"�}�?���s�QnD�'��9�����T��~�oCs�e�*��v�;U~����v�/��"E�J��z��w#��ZjEKP�S��(V��(n2���M?JUZ��.�{C]&�P���[����RW�k����N�WY):Z��J�J�F����\�yU���A�RG��Y��K�p�7��R�t�����������)Q��t�}-d>�#�C�"�O��g4q�������O����(�.a���\���~���k!WP�>�~��i�Fd��{��KPV��]��HR5b#������"k���j'+�rD��w~��X"k*�\EjW��H���7+�����M�u<�ED�LH��)�T#p�Q&�{�V?��v�,�-<��3���[�gon.��E�}N�O��U�<���=��|��b�2��1�Mo/D��U��$r����d�M�Z��.[�=�G��������HA�"��<��Ik��#�7�9�����.~�Xw���M�xU���g��T��B����%z? ��I����Xd>�T���;���������K@Whs<t�co��(�i�����3�F�0:�k��vk�R��^U���'����,X���n������>�A���B?��������
u����>��]{��?�c��CL����:�Y?d�;�+�x�������nD�t����>�;<�;�[���w����~�_���O��P�X�������_k�u�oZ��
�vgp���B������Qu�1L�3��t����`�G�����NL��NlkyO��MG)N�
p2P�Q�����7Zf���^���Ie�M�<X��f9����"���9��������x��^���{��#g�3�A76h�1�p�p���kQ��~����yK��E��\��tWR�&a��]
�
6|��-���;�iu�*���X���9���b{q���X/�������;�������sr��m�g�X�N��g����V��[����^(c��#����GF�a�S���&k����%L3?�
����0��:�>��[����?^����k���`���~��(��_�/�k~�
��[�Wi����xh!q����/�+�*\v���_(����0��G��idZ���'0��w����;���[+��-�[v��'�k�	�[�Cu<z��g{�I=�z�����ao/���������nj�pR�_#�N|�x�l��?����4t������T�b��t:�R�������t�E��n'R^�R�_q��?���}=�K�����78�,��r*P���vg����{�����X�:���i��Z���h=�������}
%%�j�5�d�<dN�C-�I���)�m��u��U���{T�$M�	���`r��S�6���tfG�I����dc)�2��_������?�-�����*������?��u�C:f�������z�[��[��]���~U:K-�1?�Wg�j6f�g|l=��9�#�[��E�q~���A���%j���N�j�"���O�!P��y��'w^�����X����,t������C��1����^C9��r�$cL�*2eL�?
��3h��"D���@������X��\b�y�
�e~'��T1*.a�Y��\�����Z��p��E;Y�J�p:l*%�d��=*�F��:���a��mL8�:qM'|���TC�����V�Y��k����C�z��W�L��F��h+7�B�:Q��
|K{x� H�Ni�AU�/���S��lH���X��l$�9b��L�3sq�3Q��Ua��@������e�w���2p�X�������2�y��� �5s<��O���(��Q���Hm�w�w���$y�z���*��
&0����D�=���$hd�0��"E1��Q�
)ix����B����^����I�9�`�jF�UO:�S+�Z�a1�$z���_�������<q'FvG���j������o����y������g����M�1��A�[��G��E!���xNb�$�~1:�q?��L�(=;��z����P0:�!��@��|�QV��}[��Vp�2e��Q������@���L���`�����������7k0����^����-�����f:3��"f�;��\����tT���4��{6RY9@�#��1;���=��6��uj}y?����_"�7Q*�{�1�X�����Yik�{�~\�'!x&�
%����X������y���y����/��r������������/zu��~���������8�����������p�Y��M[��6
w_��9K���oqs���8;���l:�A���@���+���<�+�FJ��?�����pG��oN^�_�PsE��t��8J��5��Q��k`�
f��@�hb���P����,�	����a:��D�i�I��a1��g�2J�����$�M�� ����4���>�Y	#1F��	��T��X�$@��I6r�WFQ|��@}gD�n�bU`!��p���zC�����������\=v������aG1������Q*���*���F������Q��r�����r�TgP\���J/���+T���:�,�M�|0,��?������<�d4]�p'����/<����,���e����lq8�J��l��l��������QD����G�����`�X�|Z���P���/K��c�C�u�����v
}
%�Lk.:�����������������?>Rv�c�w�Sa��}Z�L�^�y�J����
�A��Ia���P��F�����={���sx��z��B{�?d����'J���IcF���:�o����������(U�AU���<���W�X�\ �}`!���
���<��6��s�������D���/��:Ts���c2���}�
�sx���?(�;.P��HM�-~�Gqe�&�M��M�,O�B,u���������K���m������������9f�lF����K�-@t�m]������fKX���������d&����f��������mQx�P��Q����,�9������~��������2����y�H/�����d�1�?�|�U��y����!x!� #�����e���|�#T��E���#��f[��6N��W��A[Xer��JeszJY>���F�������]|�*`�c0�~����*AY�B}Y��]~������tE����P�#IM�Jc��?r�;���B��\�q�t_H���r�h���T��!?v�����\|�9������Jh.R�~8#�eW�eo��t�>�n`�{$:P���S��a�g�M�y �=��Z �	��z�:3� `VE�H���%4��o)M�9~��_QU�+p����=�����^LLA�~������D�}t�
�	>��K���� U�ieC �����\>hp��}6g+Z>�;�z�}�?���
u��5�<����h�� �
	�U)�]��D�9�����q@��C����������G��1s���Ro)kk`��G�����U&��g6t%9����3c��a�Rja�5������F5����B�����	P4�$pA�k?8�Ca�~%���mX�p�0lv.����B:�1G�����	7���)0��p���`���yW+*�R����^�e�}3�:1P��"�Q�#z��-�+e�R@�;-�����S���W�N�����q�3�lfv|���@[�,��\��P�L��It�����u-cLG�;����*C���VY���W:���
hGy8�S��{t���la�>v���G�=Q\���:�6�N".������qu�p���	�P;�!�KT��a���)YXxB�	p�J���p�xw��V>>����W	��v3?WG���{}ph<�q�P�M�H�t���z����2�S�l���GBc����G�f�=<���w��[���
��;(gr
���P	��/���sP~��X��z�,��e��P��gy+�,����2E�J�?E���d�?M�\��<�<�� ,��
{1���XH+u���2���C+����a�OhY���;P�|�J����C
&=�M �u	Dae���~�����Ag�@y���D�L_�&���P��-w���&>�ik����uEry�1�8|)�����^�
��i��]���c�7�PKh2��P��!)���h��&W�'����%���xd$����G�gB�ic�����}<�<�@H��\z�Lv�2\����dt�P([�v	{�g��
��sqV�;�}����L���j��1"������JM=Z����6/1-_,�d�r�`	��^�9��+5������60�;%y��o�`��X9�0����H�p��>��ce��K��8�� �>[:���bnq#t��I�.�0>�4�E,R�\f���S�l�1U:����DF�[)['h?n�b��Q*��`�EOI���A���jA�.5�M\@Z���X��8<1����<+�9C��I����Z�j���U,���l,�!N���
)�TN�;C���Z,
�8�@��\x��<�,1��Gc��4��Q��6����D"~�7��]��m��EL�.$�.���O�f���6w��!-��`������'��y���!���h&Q�#'��?(�
g]s�!�J�	E�
L8����%��Tk��L0<�gm��
lE����_�;��{����km���+P�y)��8������8:��\II�'Ju�$(�&	� m������=`$4�MO�+�`���k��^��������877��|��0(z��.\i�>��O�T�;}��s=���O������qT	�����s��k/z���'��S����)g�c[�b���z;Q]�fJ���G��i��'>���i#��2��M���F���.���a�E���;;���e*�W=�M��y1�y�^��D�v�Tc��Ex���F��}�������m����}���:�a����������J�X��hJ��9���A�4�p�(��W���;���v|����u����M)S�IWI�g���T�-OW����|��xx��Y�G|�4_��p�_�����^�K�	�}ZB~�8���9(g��z_�h�O��w`��N�b>�4-�?,�
��V�3h�m1<���/���U��D
��G��Q����������>-)w�=���*�3��j�!���w+G�~P��B�����`�F��~�]���o5��^L���v:_��������O]Z�~�2�V�|��.�SY�-���E������,�v�~�}qx���)�-������N8v!�\���H��1
�b����3��(�
j�oi1��G�+|�\�3���He�x.��ot�.D06�;g��n�up���">�ED��zCO���F�����rOm�;����j������12����ad^�#��>}��-H��Z��O��S��pQx�g�%,�e���������jj������\].E���`��@�)����|HQ�S�8@��#]������U���f3�k���5������
E��/t�[C�8�W�?�4�"�<D-K�<�
�!�
X�";��G,���1�D�7'�thU<,1�gti�,��x=R#]���9aP������a`��LC�%g��
�������f7B�������o�r�������tU%����L���k��
I��\���k��z�vYT��`�2�#z#��I]�	���dJ�.����R�o��G�o���@��$�W����qI@
;�(bd��1�@~E�~Q�gi��^������%�D��j���;J�9����K�#��1���c5������/�bv�]��@%�3$\@���;��g��j�R��?8zC��O���P?���F�����9�pSk����kL�H���"�����s���K��eq�t�d�?�M�I9��m�%V����&��]e��=�QX���k�[���5�b(�R2�3��	�V.�;lT����A���3�C-�M�8��7$��V%����$�=�pV���%�xG�'�e�y������lV�i���2&��U�4>��������w��"���p^���j3��/7��,@�
�5�!�P:�+�H&I���?���n�L�(����efS���V����P��A�y��F����M]���6&��3�JI�lY4����/L���.�iL�����Q�)��W@�������s�]t�l��C�������I�ic���B�����<���_�"^����9���:�,��5{e��
B>�Z��|l�;�c���8��'��|��d_��T�����}��r�1�k�>~P��*�:�FoV�����&�����2��K��i����M3g2o�&���_��6�n9�6�PB�����D�Fg>!	���#�����>�z)��[('4��\O�"6���x���xI%Y��h=};#�wG��SR4h����Z���l�7"�HYU����8�-W�?b���h���*F��{�����=���8/�� �2������o��������0(�b�,R�2iM�0��,����������`��t�^�vw�������?9�XR�%BN���d����`��5<�tK�{����Y��8�l'��R��+h�n�(��������K����I�����!�Zq(+i�������,{�R���������Q,N��~���-��x��>��Y���l�l�7��{O,����1��
i����#�9eV�r���(��Vu�?�����]�[�3����v1�}���3>zig��Y�b�8[OW~�Z�\oQ2yS7+
�1�7��x���%�
�${��l���L|���.]
}|I*����7"cd�;pO�����v�P:����@����n�����
�,�p�M�z�/���I�^k�q�,��]��-}�Lm��w0����nV;P�����k�������������m����y���[���^P���qy�&�����Yt�{E�-��L�X��2��x�^����,�x���q�����,�7������/��xj�(Y�i�7�J�J+�������EIn7��O���7c�i�����ud����[DVL.�jlXe/����@w���u����G��zJ��Z=���?�2��Kq|\n����s����27���`x���`�q�dV�������q��l3z}j�
��R�2Ob/����5�p
�V}B�h�k�(�K5cx|;�0E�o6W=��ag^��Z��R�*|m��V�;	�W����6����;l$Y��^H<����f-�K��"�62rt��j�����R	Gm�tw;>�������s�]��Y�X�� ��n�$\Y�d�����=�[%"x��<�}�Is�Pr�KZ���$��#"�H6|�����rL3M4�(QmYJ;�M���z��I��Z\�5li)���������N����G�?~�	2-N�c��t���3�bG�o�h��
��j����)~p���$g='�����(������j���l���D�\��)�5����������]�v>�\=f�c��jj�~��������Ro�(��E?k�M=,|��V�"��L��[��\�KJ7��,za_��q����m�ua��&����8�R�?B��Tl�y�Y�2&$�pF�d�6���J���D�o��6������B2�'� �*��4v:ZYF�;�>�=���>h�E��J1��~E#�UP[������!^='��p�U�b��:����G��G�����N�q4�*;������*����T�Hg�����@��O�f���2�����^�Q�e���oi�WJ/U9gZ^���a"��>�$f�p�q��E�����sh�� ,��dzZ������C�I����oa���A�js�}����pl�#����uZQ��V���~���W�|�kn���������z�Q�5�����`�����Q���z���H���p�}��xJ�9-�����#��������������fp�����7�.�3�s���kw��z&�i����u*
��p���������?����t�k�t$�6��]S��*����^���P�8i"mTx�Y�����
������)�������l�e0�+#A����J)J�����*�}!-(���������^�X��4��u���������(�sty�{��%4~������l��/EF�����2X��UL���h�x�!�Aa_#�qMH�P��*���9^z���H�������bP!)��Um9��<	�T*e9��`��P�*���c]n��0����@)�/����(@��H�M\�Ie�B�V�m��H�������������#"ai�i�u���4�a��OD������r"�8���'ubs��<����e�G���<�N���l
�Ne��4�=������[R�3�Qp��������Rh2g������7��z��t&P|"�FNq2'G����_e��<��,%k�f�v��c!��8�����,���&����������J���qc���F�Wm�`L{{`,��rl�P'j �q��K�&����.ip:�m��X�)�:s��
@��d���a���:`D�m��!%A�Wp8o���M��V�����Ae�\TJ��*X�uPbP��}���,u:�V�����y0U�s_];���T��N���6{
�TO����v6��}4O�]�P(UwE@9�?�g�!M��C��(�ek�+�'�Q���M���7����r�[��k�FCy<���		�/u)[���v
o
A���l��������f�C�����m�� 9����w#�����#0��$��r]|'S �i�p��~������6��]�s�4������yQZ��]��9�R�t�D�U��a&'��������T�YjU'�x��,�*��J�.C�x�a��95E�P�YX��������;�J��?H��X�^DG!=z�g#,�Ux;]�����m�v�L�n�������������kTB���UD*��V4#��f������w��x�/���~��gtS�:����yVo�ic�R����i<���Rh?��1��7��*���m��M�8hL��a	>I��e�O<��m�oU�r��:0G�I�������BFg�U=��YCe����^i=�Ei��n+��F����5r����g�&3z!��%�����B��~�0d�g�����/�W����Cle���Zig}l�������}���,:�9�^��?��u���n��JiP��6}�9J����Z�MY�]GQ�{�tS�,]�[�5I~a{�"1��p�
"�B����a��/U�>��K�����������E����i
��$�h�����L��"vl"��$��:����
H�,es��~�M�^���k�����d�#��.�F�R����K�^A��
J�����F�K{H5eM�)��S�n����r������SD&4�(X��I[n���@+&1�����"�
$����vm���h���	4�*���B�Bg�P�IC����t���\�NC��F����� �.�b�
UX�(�	�I<������1��6qr�e0�����A��"���8k�H�lI�����vk?�<CH�!Pf����BgF"=��^[��2�G,��WT
����Q4�PBS������W�<@��w>����R}P��mHE���{�fT�v���b3�W4m���
��r�x����������b,�i�"�����m+vd�,��U�[�G�Oh�2��u(.T�dh���|a�q9�
���x��0S�V�7p�����
���Uf	l������5C���"L��)[ �);E"b|GKZ4������o�p�+����-������#QE�I�Ul�����T�:��������#_�?�����HI�7O>��9q�
���U*�������8�8e��/�.�zp���"��S�X�DC�2����7�e\"�&VU����x��C�D�� .Y�,�iQ�������^�����8���yjSRm��p�pV��9�}'
�g����AVg�"Y��\����
�\l �A��z��F���\WQ=OGt�^-a��t���K����b��5'����)NY��� ����>t��+�J��Uv���m����]�BJ����� Y���������;�
*�>fy0���*��,�M����H�1��z�Qf��|rxBp1J{�Zpz�Ju��u9���������6�j�DF�G�vq��7�4_��ZV)�:;E�V���b!���G�\��+���� \2�������6+E����$Rb40e��o��OI�y����v�m&v��P7�	rk�,|W�w�l�uB%�'���M�iBf�2����
L~D}�@��N��PO�� <'z�����\�mA,#S�lX��
;��iT[pAh����l�n�c2;��)����Z![��(j�o�<����On��������$8#�jq�����Y�7�R�Gs�����NS<�I���mE�F�I�#�j<D�������A3K$o��.���`9\-��+p������S������[�����+te�[�tDD~����*|���x������^W�����$#���d
�4��#"._���pa7S�gZhs?�����YF*�1����A���[dv�7�����@��2�%'Z�0l"\
��-�
����(�1��<C�e��$�F�2{��5�������EB��uK���"GB����a,
r�0�)w�(�N��0����s�
�$u�4*�z����;�.-7
�sE#��<��,U�*.�K�2tY1�,+�H�"[������.�N>�1��:�fM�L
�c8��(-���e���pr���){3�H�*}C�<�����?j��YT����$Qj��6ImI%xP['�IaC���j�w
���SF4�4~t6�srv�v`/�\U��;��.)��U�00	���Ld���'S���J��*�A"�0(D(�%�	�F$`�;�����S�������L�*Q2�����VR<I�
X�bV>��"��(��L�@���CJ�{�&�H��jK|��=�F���O<�YX�����������@������1�O�'/d�61 w�Ww
�X���J����h�G�Q�?V��+@�8�3B@��
�����6LD���9d%-��G���H�:y^(�J�C�:;dec8����>!eC<T�X�+��-��rioR���&X��I�W7���x|fNp�����7�[L���U�9^#-'�|��X��NU,��Zd��wB�[�>���S���^�����6]���
=���x]"m��dH�����P)BT,��J��vcYkH;BA+��i�f�N�m��0����E�	��r�������������M� ���a�U����$,g���Q����V-?�W\��>=��#���^#�d���u��������l�����wl>*���������nVD�@�M����g%��R������[G9��d	v��J�@��:���/)S"TSM"T:~N�����R$+�����������Y�AHw��7�r����df��0&g���8�
P�7+"��*
�^-��:����������B�Z��;%�	�bqI�R�v�I�6���I��+���_vtRnj�����T�R{,n�46�V�����(��>I-��"�V���r�X��{+�Q(����T����������ftn��4��)qK��/�4g����1F/UW�[G��d��TL����x��=*e�@XJ���)�z�ddJ������3���L�L��#TV"De�abTV�A*+�(��I�1�d�d����*+��R$Xe��.�2"�
XY)�����ZY��ZYI
[��V��JZ��JV��8�I^�$����B������R4��e�U0�%��(��E�g�Y �e��}����f�+I���������
1-eN��ZV2�Z*#����<Hd�JJh�J�����y�-�����[V �����\f��[G��%)+�A.�by�(��??�eb���\��PV���}��2^fZ�K��L�d^�i�)mAiUt���tz�K(O�iU6�iq��F��:o�R?D����������8�p,���z����`
�W��#]�T���=��*����x_����~�����V���j���/�_����z�I{<�v����~���o���h����^��hw��A�<���K���������>mw�6;Y�_�4��R�&#p���5�tN���7����T����r2�Z��!=��6�P������9��cz�J-�f0^$�W�C�*�������d�-�3H�`�b�pQ����F���pco�V����1~��,b�v�}��+A'6�|��0�e���Y�j���s������)a'5@k���&���W�$�a�+��&�/8���p]���s��$w��G>P���t�hN��T^�f�\���	���P�N�X`V*��\5�N%�<K�b!�Vz�W���e��D�[��i��Tj�)/;_����&��A�e�0/,�i(q/3����d�x��Y�n�wL�$�������Y��~4��?H�����e�x�,j������{�f�^v�No?��]&��"�p���+��<]�r��W���Sy� Ak�L,����$�p�,��*���w8������
�������<�Ye�-�����e|������+�!Y{fjV���LiF��x�����:�������]%���fh��<����C��
����	�'%�>����Bt�)�����:����������lW��z���]�������������7���$�X��b����%���j�Yx��*�'\K��{���,�%QG�l��s�j��QS�����p��'��p[�����
dhts�����:��C���|��C���d��7I��gQ�=@�9x5��O=����jo��������a���l�v����#\M�������I���R�� ��B�!5kl�=��}�F0��S��w���)����:����5y�����wy�����y��E'Tm\z| ��=��2��D�����7�<��6Rf�h	�>�����m���������f0��.�U�U���U�g J���xw�m�������(�/��=�Y0�r8p�}�nK��4�!t���g������%4�C���zA#��Q�8)���h�B ��J��Wr�r<ft��.��!0Z�@q~��b.z�VV�lOZj	\�����[3��^]�cz�bF�]�u4���~�m�J�����:#�ICGy�K�`)�MM��y��3F�*c1E����;�t�Tl���V!t`>��t2�����r��V�#��XI�� "�N�[����p�Q���+��`�-�R����K��O#AK�	4d>�k
�������0Rl�������������?R&K�-������J����QG!�r=�b���c��
��]BeS�H9��&������2���������U4�,'�`_���?#��s~�����SKBa��e76�����p�bH���"���ze�C	�$�sr���������3=q��5�`�L\�Y������^g��m����Y-6�XT���)��}J�9s����{��v�F���(�8���Ed��=�#��$����z�������:B��[�\�=��^�q�`�I��T_�R�df��-��������uo��,���w33��X����
;�p8�������x����)!�}3i�
��
�C��Yl�����3AL�UZu�����N�Y�j1�d.��Ovb>��M�c#f3��C��LX�*FL��
p�T/���������E ��m�����i�����S��U�������	�]����vh��J���K���k����������N9�F]�����dS��� nm9��
�:��(2I��F��e��N"�,���,��T����o0����|�! ���	��b.J�s��v��O�-����02:�nK��H{-]�Y���(����o*������(=�X�j*��h����`
5Ow����5��k��'�L~�zna���h-��]�r~�����/���L8~��W�K�<(	���EN
�SJ='�Ho6�&��&
��B���;$^�����o���`!J66&�t�Z���r0N���;c!n��j�c�����(��xz~zxp~�r���H�2���r�B*�68�8��+���Fkr#���$��������_4�
�_`���K���p��Z[lG���a�C=f�"2tb�sv('-��5{m)���::XB�q�I�b8������D ����}��4{M\����B��m��p�R�WCsUeE	�%P�#A���ZX�e�����M�bY	�T�����p@��j5�Li8��p7�"�����.a��jz����|���*�8v]��VFZtd�����Kg��p��_4DZ(2���!�n
�w���>b�q����2�*����(:��xd�U��1;���5����HF�:���$��.������Z������E�?�������q�D���m�3Z8���gL����P����w�\�f��V����g������z�>*i�������T�����W�U�C/��A�V�N(��]����}r�"�r[P�k:�7S_V�;_�;�(N`YTf�W�?�Sv��O_��p��KL�BqX����g�io�g��ZN��Q�b��]���M�~X�WI�j���g���b��7����hX	�dWLC�)�m**�G��O��[�����������^N�F{�o�H���R`(7���j�]cB�����"��%!x���u�^%�<��V0�r���In�v��
��fF�/��5a��D:c�e9-���m����9����T0�k�bvZeX�!��Q�!���@CH���`L�
����C�+��G��8���F��du�C�x$.R�\n�C�:%�]a�t��{��4�a>�i�r��[n�3��^��X�B�����U�������
5Ad�0'#C���Ev��[!�:�������	n�W������`�Yf�J?X�E�3����}�>���;��+���b��Q�^���;dI?���r=����0���J��_Y��)�������a(�Pi2+��&�rq}	%#���J��/]�~��c�tHf$����j	��"��ja�����U���%#���
��3����(7�����T�D�3hW;��i
��C"70�v{ di�y1
��O,E�9`G��r8�!���!��&�Cq��(Y%�#�1z<����y$��Z.S�e��+�X	�Pg
[���,�����B��L��p�4e�O��O�g�d����/k�d0���wj��I����o�w��������N�C��V�F���"iT��_-g�]�nW{���"t�%���2'�/��0�$d��%��v�3��eCV�#���n��3�}X�vk�?�����?L���`M�[@��>�9���rn�:�$D���3��+�u�����p�� 7Y���^����[O��"y7i�������ZDcK���J@(�;B������L@#���/8?��&w��.q7��=��[���W����0�1����0r����:��
�����2�5[�}B����g�jW@|q�e��o�����������yijc�vP����E.��A	����k��A}I@���D���g�1�	"@|���k���];�����>p*�A�������M������*c�
8'�"��2�a�as�>�h���5[����u�d}Q�S�V
`c%�S
""g��S��%��C�]g���������i
/����:���o =�f���7&���
z�I�����;e[��42HMF�"q�*`����D�
��x5b���#U�H��J����/aF~��������H^�q:��S���WY���q�>�3�����3�pB����#��[��u��d�<Y��JK���l�Y��3 f��t[���lk�
l�=�U]����e��:E~�F�R&�l��bsj�3�/�2��|����P;BM��C��
�R�����@_5@�g�~5(�@�`���(1��t�a���K�yFf���x�b�
R�n����6��l�� &
��Ct(�I����`��G��wJ�rB��Gc���g)�]K�J9���I&�5���R��j����	|j����m�x?�(�q{P����K�!Gv1�����V-�4#���)'lZ;�y�����\c-Q)l-����Jy���]
��Q�Z#�p�Q2��c�a}5e���31l�8RG|�p��Rc'��YJ�[�����LI���#�Z
(����95�B��g����q`T+��?�!��{�����
����h��o":5"���q���{����!�d0��3��?p�9��a�*Ru��O��5hV�
d���^�)���A�1S>�	�f�]Q�0��C,�����(h��u$����/q�������[m�_4x����6o�K�x���d�r��JA�������!>�}.��/�Q�p�^{4h��z<j7:�Mw��X�MB!@���4�\�j1gA�> *���e�'�@H�aC49�;M���9Y��.�q>�-��D�l$���\���}�$��qWd�Z����*�v����.�	3����e�Qd��%�(4�a+,���;��T|��7��2�]e����v���v�^��N�1I��D�d������~�i����	��`�8�G��=
K����=��R���4�!!!�IN�	dzOi�+��zm��#�L�7��Fw��������]��&=XY��WR��i�{�z}��nMz�%��vSVRF1���b	I:���k${a�w�/��YJr3������6�����:����|���7���Y����� |!g
'��PL�;di��������(~{��b�t�S��y���������{&����{G���Q|<Au����';��.KCT��!��O��}R���=���1k������<�J	����������%~�C�/v7��S�8|����������_�8Z.��I�Xl�N�l"��\����;�M2��GTT���T���5��c+K�������X�t���'O^�U�@��::
O2YCqa���HO�k�J!l���������kwF�7�]F���Sw�%C/�Ev^��tzv~���>??z��\�=�Qv���.�@���-v�3����#J_XI�e�I�IQ��:Y���S,�;����a���-�CAVc�kx�m���C��VxA;a�Y���G�GSi�}6�7D�R����a)��pj�PRX�$e*��*��|��L��X���������������
�d�?���E��������V�_����1F9vb	�M���mNiL������Pk���
*���O��z�����d�2������vf�����K�T���_�KX{T�?%�[W���7��i�j	W�O�)�7�Uu�r������7/q����du?G����[���X9�������,���^���0;p���������J��LB����.��)���Y��G����$Tf;��h��s[�m�����	9���Fo+�o��X���;d�[�*+���2"����<��u�������L�M�������������Hi)�����,��<��k���*J�I�]��k�h�o�x �$X�o6h��n:E{��B���EX��:��_�yL�#��q2�a����������J������i�

�lS�G�U�Uo[2��N�����#��N_8^�g��I��VI���_iLVeYL[�������g�
�Id��;����Q����Cc�������w�����x��mS5�������j?�^MP��>����&����'����4{1�o�����_�C����o���u������OZ�Ns�7�����nk��N:������|�id��^��T�$C-�R����,�r�!���(b������J0�;������q��*��<"������6�'C�xE+�0\HI��$^�7�)UA-A-+��Tj��	I|��k	�:u�WO�#��ULJh����O�G�@Y ���oEC-q4T?�{J��!k��?�Ddo�\4��:G���sC�D]��8��J
��F���
 �[��.0��%g�����\J�v�a�oa�����&���x?\yP5TL�������L����g���a����?/E����%��jXF��T">���N�T�h�7L{U�C�w�a��@_����h:��o�����Dni%��7��Q�������<�����6�t�=�C�'UUY!�����������f��3a�-��k.����
�xM�7pb}��(���E�����N*Z|��/�<qP�������l$���8���W^=e
�c��"mL��Q�Q��G��~o���*"��JD��96�B��,�4�C�QR���G��@a� ��p�O�xf�;��+�
������_�����$���(����!T��q��o=��D���VU�Y�6��hhJ^�^��W�����������u��eo��1��K��������;?�~Uv����9r*�!Z7����
7�j�Y���-��tm�������\E�D1F��!��	,����L�
���'Y?Z/%sm�z���+�3�q�j+M'�J��4�)�'<�2�l*�������|��������!�evOLHkf�q��%�Q�����s���S��w%L�Xb�8��_)D��P�2*�kd�^����1�9�����^���#a>���������rq�-�"B��Q��#�r'�@y�)h�M �4x��q[��%��#~���P����iiE�w����;�Qz�t�c1��-��
kC�-�k�kbU�C��a`2k<���	�������H�.�;gv�gb��\�<������n��tU{��1,;�n�1B��
&�A��I�����.��
�b��t����N�G�D������������?�%�SF9C_��)J�|��r�K���b����������Q�s����e�5l$=`6�>������?�v���$����F���sWN�n����5�n%�S�����!q6��@/�H02���M��^���3�>�j�X?���_�������������=��h�D'�D5������v5Q�������]�u��D�Fq�H`>��l[��b�u�������'+��Jg'��z�F�@=����h�K�����p��9j�������� �d�b$����:o��U���|��G�/.QR�]��z���L<�
*	s�|F^8��3���7%�A�SF��n���������o��h��i�H+����a�'ME��������P��\g������4pi�q����+�������f�L���5{�:$u��!�]>Px���PKM�%�����s�k�S�O��z���:��t#r�{Y��/��Kt�2� ���P��Y�38���0�����>�~�z��
�j���9
��|�6d,���u�Z��
��H�������M��/T�0�fQ6�8�u������W<��yV�jo:�����[]#gv��M"�y��������H����g��|�U��@�0�����d1�&k��o1�t�k���$�H3�4Q����uj������r5��ey���qsQ������b�6��K�����j�L������x��+��mE�����T�^gU���i�T��{����~��;���@����������14����HP3Z��P��b!�PE\	�@$�(>��wP1��R�J����K����[i4_%l��69v9������W�H��}B��/��6C��(���lf����q�����w�qA��K�gy9
]p����3���4�����
zM���%���-�
B�2����Uh�T9,{�rt���rP^�=��|!�P�b�\�g?�22E���Q�$u=����Zt
K�I��Mu�{�!0���L7*�:J��m�b����2�]����,�y�����9C���V$�����8�^K&����"��[�zo��6�b��*&�Z	IJ�f�n��?���lu���1~]3������Y�c�p��"2��������G��x~xy�������o�O��^�t���n/�����g��m2g��3�9
��2 ����:0�h	�b��	v	)X���]�C�1��"+���2�Q'Q��^o��������\5���5c�����[�Wt�H�*Z�T�F���������w2�v�g��%�
��Q����L��N������go�����s�.����H��*Z��G/�;0���B):���"�P�"Ftj�i����P����
�#UT}��S��:�}O�������H�WI���;�V���dxp�����}��D�<�n)����[������(Z�
'�^�^oM�[�����R6l+�NgM�5��3�WE��~�Z{j�Sxv�L��a-Y�b���L�_���KvA�[&6�r�+O��zYfZ?��z����HyCk�2S�LTf���#��o�;b		���%����+V:*��
�o��)}F�SoBS���c��.G��30���hY���/+]���FDW���W<�tPM��^l�!md��9�v��,^�=�[D%�jCk����
��V����n�� �� W�@51*w��[EdN�.K�$u����1U�p��(<NSy��IT�N�Si�C��7�M�z}�k���VA��K�@Tu:"����S�NYm��m����w��u��]1��Y��Tz:)HO��z:I��I=����H�1�bW�9��/NN���h������,M�����7��������*�+:��
n2���Q(5�7��l��\�j�'�Zl�=�R@la�o����I��[�M�I+��p��4Z2~��/"�6[ir:��7���#���B'��]u�|I�$�W������K�I�(E;p@h���D-�.Ve��2Z��X
	������{c�d=*Id�t�<���d�Br}�w0���#L�(J��uL������QU���d��
��X�"�U	a��x�� *K�����>�G��*�1Z��s��pO�Q�m�lLB)"����-f|(
	��B�z��3�W� �"5��Y�%6B�X��y�F�$����������������.@"7�"3�^F*���98=x�����J�����J��,�c�V��/�*X��4mr[�*�%��f��c_60���:����m
�WZ	{�n:��Y��T��V[M�hc�����������1�V�����!��?7�P���\U���3�_3k�K���Re����1v��o8��RVp��^*L{�[��)���-�Z{����X�B����he���]b>����d�����4s�te@U�b��u�D�|������>�5��%���'m	=���Q���>?�<>9���O�`>�H��0
���pBX������Y�@����HyW��-�Ap��C����}|<���2A������f��FS)<��V�2lUQ-�x'd��_�\�7j;�N�>�&�S�+Wy\���`5|K�w�@�������Wq��oZl�\�����@�7�����y\9s�q���r�&�!G�'���p��q�T�,�����[����I�
<�
X�L*�^R��P��H[�&�.hX��a��#��T��\�P�[��6)�*�R�9/T�R>n
$�����n~�������.8X�s����^;:
���;��y�O�J��f~����M�����}*��&�SF{j���s��<��������������]6]�,q��)?{5.G���;��v�#A��������}�nV���^-aqWf=X���������a%������;\�E7������uGo�jEt�6u���,�,�4IchWD���t^������c%
kG�QRg�u�;g��&�}E��hH4���W����	��@s��H���b�V�&���4*���W�m������q�v�E��F.�U�P�4��o�����E93��eX������HW8yn_�N���XM��������+����<����L��8u�E���E�*�yK��k�$���g����#��4!�N�A��.C�?_��`�����;�X��`��XHP�_��������z���,�~�!T����Orz���F��N��`�b�%T�cg����������>8:FOr�,(s$����H��(��0��R�!���!��.2�����W�d�^E�w���A��m�Y"N��^�����@l
��v]U�����?�zp��g����J�8�1�;X�a'����N���;�_P�!s�7����k9��������y%��\�4��z`���E�i.�+�S��j@�$�V�Q�XOx�3,�J#�%:~�E�g'F���j�y�����x�=���p�0�Z8�9;T7��1}R�F����;B�I���P�	9<�X|��qQ
�{3�+�2��$
�=�xD��c�x��'E�C����P��}�F�M�����y"�#[�(�����H��O^�T���EC��8)���S���B,��)Yd���5FV�~�y}��������F�]c�l�U��c�D�%��x�b�j�EDT�S="����'>��]5���g��\�a���x����n����!�>H���C���bM�0i��m&����T����8!��$��G�����T��3�+k@7�AB��+��*�O�2,��V2����W#�!��ik:Pt
�����h���b?�F���f�5��V����|�����<��P�=8��K��������x���1�A�����o��RK���5�T����k\W%(�9�� m!�`(����X�%��|qt��m�[{�(�tz��$�I�P)��4������c]������%��F�A_a����1����)QU]�@�:V��/O�)b��:�������C�<�\
��2_����C
�����^�}�mb���(����&-_�^kD~����?6�_��i�}�?-[��V�v�|�o����LM�1~Z^y!�]����+.�E
���]�P~:2��+~\z�1����������by}5�x���qqC)�.����x=t"3Qe`@A������4�D��KQI����������5�Kc�7�>��^���S��0�A?^���~5�������c�5���M_����S?/��y�P9���w��-�����JE� ����F�C�C}��������K`��W���wjX��2��jX������k&�7ol7d��L-!~��_�(Z����jd��@�a=������m�b�����i�}o��s���	��,JVB�E4Y�	f}���������7��i_^���H�D2$�"��H�z��]"|XCh��c����������u��-w���>s�I�8G:I ��E�j����8R�G�n�F��Y96V�)&�g�/�hcdz�
���1��^^p�7��`���]5��G��^��5pb��Z���*��.�����s�hA�JX����0�.�UM8���a�P�AN���������
#V��,�*X
0�(!t�7����9�O������[W���<;���#����cuI�L�������/��*�#���~,��:�`H�a�D�����H��+}�Y9�4�e��;�N�=�q���	��\-I:E/����/����^�g�_YOIe�����AT�H5�7'|�1����8�
}oY"	F�����(d�UB����C�5B*������}�Vl�[���q1FCx-�e^����0\)���d���n�*��@�7����	��8�yV%
,�;���_���oT��og?��{���x���p�L[0�Mq��m��D����jS������`�<qa9��^'c��w�|B-8�/���#����#z�C�^��E�u$����k�'��qc92���D��]r�
m7>�	T`����UR��^�< d4+��8B��8��HQ����h��!�|xYm#�ee�qj�����d(-8&�7<�������u2�
	�qY����&_�g��'�T�9^#�@I}FtT��F�lH�k7;�\5������<zKW.����Ro��G����F���t�n��Q�j1���>+��y����E�J�g��R1���&%�mf�W���_�R
��J�DJ���>��������p�^nd�������5�DJ���f�����yy|�����������������s|.�y����������G�g����W�O^�>8~A/���@�:;���.B���/O���i�^�>S9>�8����LR7S����R�������{Q[/j|P��d�`��;������>
Dn�S�k��?����������?t���hO:�A��
z����o�{���x��[�v�?�\���vO�������sH��r���Y*��H��B��[y�]����d��g/�W��?����Sw��Y�:k��=^]��Z�w!���Hgm�$������@7�%�����k�F��{��[�"�Z��I�@_B���y@h�%��%���9��'��P��:�$-6=��	�;m
���s��I����~F>+B`J�\,[���l5�
�
fi-����*���|�F��C���b������H,�O�T7���x?���=3II�]_oS>�F'���m�������v���	���r?�JK�����g�B����=@4_#/��#���'�	�����G��O�hH�C;�������NQ���{�<��:E��Vm�f�2t �KhHL;s)U\gR4�R�%�3���*�V���D�=��X��[�UF��v
e�u������Y8NM4_w�{D��j"[������Zs��H��Y6=�-�'��|pap2����;���,������������o8!Su����o����Ks_������|��j��o�����h��^�����X��qI8E������;�qM��/�x4������O[�2_!����s����1;o����Z��u��Jw?G�����h5��1�I+������>+��;�4Z�������1�d���$�6�F���Qr�'��[�s�D��D&�p�Ua}�����c	��U��u��n�������,���I,T,�����6���v��d�F���
�{��q����s�z���}���@��|&��
��)k���T�6���Di�}�C�]O�!�f���9�+9�T,�����yA��J���E,�I�)��^���B��@�\�$�;���"���79�L)Xb�.g�J�S���r~l����IM��]��f,����zt}������9������3��W6��z�������[��s�o,�@�o<�7�z�����
l_���
l%�B{�#�Y2��H��st�z�t��Q�����Pu��j�	|�6�����E+����;q����r��n^����[*J��
X/ �F�,$�v���N�;=�	�WW�_/���N/��_�u�\}��U\��+!Q���G��}��:��~������5n~��:-�����������`)��!�-~�m�v�I/������!���1�+1�JL
��U[�=o>{����f�����.���������������y9
�P���7E�o����`�`g�&F�j6�_9�
�j������t���ib��2�!��}G���B��Jn%;k}$��ho@j�����l��*C4�wP����VezX�oXw���I�]�5�I�����M��K�[[��X����)F�J����GxZ!��%�����pRT��-����,4	S���h�*b�mqT����T�Ht��[F�R�Hl�6K�q�=�'�(;n�J�&����`R�U�!,����T!&RQz)�1�T)33wl�21�����H�9��*����y�]��hSn[�,V��J�u �hc2���G�?
��[�@d����e���Dr��ak�N�q�6����n�Ed6�H�U��X� ���c���"�����0����RB�(����)3r`Z�@b���)p0$#�IP�
q���N"� t���NN�@.�v�%S~(��`�i�wS��hn;���}��}�R��y��n���d��3��9���l��{=''�^��������%������%������y�8uNV���B��s2�	a)X�����I�"l��u��qNV��ho�j��HC�Fzs�"�=���������Ep�*nsd6'-2���kt��t.��k�S��R�8O�u<n�>�_�|}�����]��ppz���C�rXNKqzx���/�G�������Qn&�O��Q��s��=)�}we���<����?7�`=_�GX��1�_��,��w�#���[�jBg8�y������2��d�p5{������kH�{��W�F�������0t
!DdhR#�E�T�X�e�<K+��"��N^y����5�5�b�AG�~�G��OC�H���p����a_V8�2���@���KX���/����-[N(@np����z�����b�
(��`����"�?��!.����hVD�7K�m�G��UT��$R[��_���P�[��g����d�P9�z���Ss�����n5��Y�k�L8����^���8���}X���fG����x�k����f|������,\r������k���[>��������Wp�t�{MX?>|��>��J���O����Z��H;"�O�����B��
�Q�&��~f��XZ����#�Q��_v�UI�K1�U�An$��|�v��3\��;t��<xM�`�F�|������k>�<:;W�������f��~��lz�FQ������Rl$��,A���=h>�,�a���<k��
�;���kY7*�'��X�;0��;�������Q�w_w0�*b��CR�[�QC��Ky�Qw��>;N������H���bn��J��-`XM��9uPJO�j:�G_&�{O����c��i�CX�����ef%5wZ,�HXC�V��"�	�|������z��2��$prl��z�p[a����E_��f�+�%�N��\I[ )�3����J�%��u%=Z��������F��q�+��b�,<�����Cp��O��O��s��x��H��SEs��v����D�B�h��
����&4����tbkkp7�&X��4P"0$�L�A�$���B����
	[��~X�����`����){gS:��6dl*�IBt;��O}v��*�����A
y�(d��9��ry��9�D	r�S��R��n�u%�;Jh���j �N^w�"��V�g"M�`�E��5T�������qX�t�fON��n��B��DPc���4'�}���d�4=/�����r��A���V��������[�����o�*��;w���d�w�����fS�Y0�n��g�g��$�T6�"V/����W����^��f��
��5$�3qB`��^��g�������,%��u���p�w�HS^
"�U�rHY���Q/���~���_'�PB�%����"����hG�G�p�W���tAVz�2���/�+m�R�F=�e�G��z�����
��
����.��:}��)���Czu����,#9�fl�+��#;}o������(D L�g$�K��<?��q�wU��ko��|�!��t���_�W*<����%�u��/�SK��@�?�)�2;�����G�`�k��a�/���Bk�w�.�V�w��S����4����~5@�n��v����W	����:F�
.�oV�7t>8;��W���M�.40�Y�`��
�o��x��$�$���V�����/���V����?K�kg���c�j-�n�c0���
�qJy���hmM2���[<
��d�s
�M�GE2l��=����c?7��uo����^������W��c�M���\�R���O��F�,��9��p��P�����^���w��v�����
ZI��w�4�5�0�{����>��gB� d���WB�RAFR'��X�SuG���F����F��.�����V������������l�]���z����^�S>�{�~�����e[��PH���*;���2�����PK�L���YV��_��YJo���J�X�Q@VP�A��Jr(U�����bR���0g���������Xs�Ff-�&���R7~k��!S�nk��Id-<���0�k=��'�lt�����_�>%yw���U#|��{~��_�$��e3��7�'�o��iP�l�K%o������;�q1O����dy,�N������X:��qQ�+����� |a�r���A�$�.OI$��;�:�>l�A�j�����A%�6D���#T��{"e+���l�J�a�����z/�����wW
�i���FlYL���"��A��*�

�P��!8�m*I5<dD���i��y�jE���6���J�WE��Vk?�dT/5���Wi����M��9lx��joHKq)�W�������U�a*�of��
��5r�E.��Cm l�w?�^�8<>?:��������lk���7%��o*:�S��M!J���&��tB�]�=jv�yq���*+D��%���hZ�j��D;�r#������'�g-UZ:R��Q��;�:voK�����$���d&F�����E�A6�.kL�����^����F�kd{T7����4w�4q�����-r��;��l��.n��X�hGN��>�����{qmu�
�
��
�*�!�X|�
�[�u0�"����>��Z�=�1�!��i!������t�*��5,��V�y'�����kD�a��_���x=�@x�|��,r<4�*q0Q���<�:�s	u�I4�#lM�e(���:�����HD1�1p��#����c&z���>���#
d2 ��FA6^�����������[�	�����������������v���HC���^]����<���B4T��3�WJ��d������������RB.��49�SRl��$���q�	����������U�,�a��#�k�v��mP�D��;�&���d���R36_(�FJ�n����LU|�P���Q{��
���'Z#��4*4�����`���Qf��#����rcF\	�������i8_+os^6x Sfv|���x?��1��M�b�_��k.P�(tg,���Bi�beS�+��R�����$�M���J|
�N�A��a��@$�+���O��J;�������t�7�����Q=���]���k�/yZc)�V���Z:�����^�G�����
������{�F
��p_����9�����5�r�R�_��T��tl�EF�������0!�
�j0�D7)����������?C�z����� �3�DXb�(�����
j���A�����aK'�
7IXoS9��,*a�1v�.�+��A�Z�S�n�	�A�J,-���>����7g?�+�1���-u�����K4G�t}K�zF|�3&E�:����$�p�*��7N�%E�� }��F����SqT)A�"�@������3�.�<EJA�����(�G0�����%n�,s�����,�n��)��X�F�b%8�l_����+gG��z��Q�6U��!�	�iu
��+jL}w�,�
V,n�*����\���C�1W"e]���*$���ja�����,*j�]�#�m�9�<���U8�;�L\��ZRw[���Y#��s�d��������� �#P�a�`�1�R�o��Zp�+/�#Gx��o��o]���������Hj��Llb|D�]�h�����0
�(m(�����
i2��g~��_�O��.��Y���&Rpjf< ��������/���Liw�M����{�'�1���;e����t�k���s��.D8

:�WD��*nG{'�Fp8�B���E�#.y��G|U�4��O�{tb�\��P	-����b3DNT�_����S�A�*�1�F�K\��m*�n���;Oi!�����#���[��1TQu�^���]���!��B�x$���<\{8�|BF�E���"@G(�����=7Jx ���C|�m\?�>����^"�,�(
�+�3u��lz��*A�6V�����]�j)wB�zX�*���cXM�mSv��7f�������V�N�wuN�5���FoR����������*"_& ����d�T@���2��hDau���������U��l������b�d��":��4K)[�����dbl�	,����e�2g��S>����+�_rt9(���N�4�t��pz)��_����������X��RIJ$@��f��f�%Z/g�K�a�x�)x9���v{[���DX����|8���z6���Lk��������A"�#?��\ ��v�����P
������
�U���*���������c|W^���%|	�$�vF����2U�t�1�6�-D������$R�/�����z��
��W�V[���k+a���m��:m�p���#���i���
��
^�������u��,���Q���z�F��7�k�X�)�%�t"'�~�.*�&<�O^1�A���f��=�}����Z�����5�d�K
<������������e��ZRS=����2>�:��9|��1+ qa1�T��~��l��V�=jN�R2��
��J�K��t���J��f������EcC���m$g�A�`���VC���&h�]*ES�����WZi:�H:�ULw7=�.i��������BOA���Oh_�XFR
AM��d��cT�M�����n1�I�������KD/O
S"�<�.�TB�Z���h\�����-J�L9�(�I�O�L��H')�|���D�!�B�6R��>"	��nu�r�&C�.��G����z����2`�d(�����F�[�";9����Y���1��0����Q�����n������o�V)��J�C�T���J�
�� e�v�]���v�����[�����%U�x�����s������������o�DrZ6��p�������w�r	Q�M��mds��Y��T[�K��K���Y�B�9�����D������B����e�HAb�a�
XW�<�V@	�F�j/H���tG�\Z`'S&��a��k���~���z��O"Ie�<6"Y����_��_/g��a5<��2m���������.��-���"���Mk����/Sh����M��F+�nl��SL���34�!��������-�S�����PlU*8�xgrN��bgVl���K���Z����C���^����W)c�V�T��� ���D�Xe�sgd��}��u!j�,P#����D���J���Rp�>���x	�����pB�\:�a"�k2�q��D���0���J��Zh����d�I'��SR�bX��c��Y��R����
�>�3`,�R��f��5,o����@����c0S<������>�z`}��}(6}���f��B�-~�.��_���
���&P�k1�q`�����R);��_�pE�B� �U7�;F�%����
��I�����MPM�zE����m�>����26���m�l��|�jm�G����3s����T�@��l1������r����UZ|�)��M�k#Eb��T)�"E-�K�jG�jE�jB�jE�jF�j��H9b��o�_�B�1�� ��$�e��v/M�w�@D����I����J�@�8�T���:���/G������L`bB,
\+X�}�IB�NDg��dfL'����0n�x7x3h���XG�_�'BG�f0��hZ���il�������I
���EH�����?��b��I<-*��,��0��GI,p�,��\"?t q6;�5��yMCB��P�P�����Rk���[5_Q��C�M�/�� ;���B(�6�|�_/a
���?N��tv=w�{�
(b��u7��I�����o�TGZ�`��1z����#_�$9�������7�����^�)���K��&�z��n�{�A��IJ�=�$M�~HRl:�0Y��W��	E�&-��m�&,��LEM?�ME@���[���v;e���oEa�&h!Eu�0�`K��dSw���0_H�j���p�D������|u)��\�M(��k�G��~��jx}�]������C��y)�t#ezGwN'QvY�������"V�%�v���M_V"�%�#�7r����5������b�w��0owX�6��6�+�������������C�^����S�@U��NU�
�Rz�4S�xB|m�{���t�36��?�������`r<�jN6D����*�hMO��O�F��AFz�I��,f��Qb.���CQ2rl".��F�$[�����Hr�����>��e��|Wl����<�{8�'���a��I��B{J��h��z6_;y�,��\6$S*�j$���o�Em����h4o�hTQ���J|�%��~Y1�bh��V�$�����}���&���#+�������*��3���]z�x�Z}���`�_C�V�p&������o���4{�~�5�K���u����Sm^��4������;�e���7�j�md_m�����z�r�U�������H��B��yP@`���P���O�����g���L��`R	Y�u'���U�w��x�/��)ga�R�~��U�ji�	������N��a��.@��i(C���a�^y���^��"0�R�b���hqE��[\�t*���>�����m�.��*@R�����4I�*��B��E(�4�J�H�h=u�Ug��`P2��5^��?af*�3_d{=�u��0��>���,N�m4&�s��1�6a{�V�%��%u��)��q��q��K���<w�>���w5=-��XX����@�&cA!I)w3�'M�K�����������������7���]$��y(��b�{jA
��@-�0�z����@.rO���K�����:�v�r�&�:������k^w2h5��4�V)�'��.���RmbyU���^�����ay7���F�r����W�I�y�'���} �q����������)�tt|~xz|���g����6������)P;=���	�I�M*���SYR%�m���~ 	J�)�H�j������.W�;i�uzb	�]���������V'#��4�#������Vc���Y���
L:�\��������t�n�T�����T��������H��(T��B%���I��|�
7�������D���nw���c6����;V;�,��*��m����b�W��9@��Ya��Z��/{��\�����;,U95 �8�����A�����N����t��������M1�z����a�Rv ��Efw�_��Sa5V>���S���F��aZ��#���+g�R��'��Y41�:e=�9;|s|uqxtl`<
��S���������/OO�����i<��T�B4p0[��]�H�4�{]���a��*����
��D�@����L�"�t�Bo��|o��x�q�	�1����������~�U��#<���9����r6dla!��,���e���"��MBi�r������T�uZ�����[�lA8�����N�&�".�&���J��&��g��Bkg��(&w�pkZi�����p:u��
X���"i����(6v����(�,����F�O5�)G'7�l�0�$\������X�9L�����uT���2�����1�����m�vf��q��j�T�,��W�R����M
������ef�j���K�/Z-���]�u�eV\6��r����d�2��.�'FBU��TQa�������������]���*�xsO,7��&���LtgQ�j	Xu/5|*Q�����d�$�������!3!L8��������(�K5��b{$�e��f�Es�7� ��p�72�[c�������������������f27l��t�oO��{Y;�E�Rf��O���@�'�*��w�{V`q���9D��O�u����Lf?QFx@e�F�a�DQ^�������!�w�����@�+���bn0�Pg��0�Z^���b!=P�".��}z3�_�#1�g3w�����6~��l�;�`8��/����ssm',�P�.E�_��'Y
�������p�i��"�go�_�b�Y�NO2k���w����@��p}Z������������e�$���<9��3�\�m���f�@���X�>��@X���
C���EA��{C�:�����Z�����2�rsl�J����/�N�V8�S�KM	#�T��vKx�q��*�,��%F��+�Z�r��A3v?�EyP*fIM��g28�\��l��6�����v7����D��+M�
�6�h	=L�+"J�
k
�P��FI��]�74��K0�e1��d���H��%����{/�����A�����?�&�����dE�D+|�7Rc�xca��o@F���,��j3�cO5%�����9����^�+�=�����/XT�����9c�m��'���n��^���QI[QGW|{�l�QN�T*�L+T/��lI�����p�����J��� �Y���kYF�VLe���1Hl������	�G��K����(���-��^���lW��k)v��+R}-�2�}��kI��R��%9'����_�0N�y���L�j��jY�IuP�����L���v�[7��#Z��UlqK.�Mn�y���W7bJ;;fN$
�Pk�>��T	��8�vd�G��5��G�y�a^"4
�w
�-
�!4d��UG���0O���s{?.��������(��9���u�\��H}a�������`rD;�I��Ij
��-�)"���"�(�T�EY��eo�%y	b�s������\��0z�T�o&"���vb��$��zQ���3��<��G�l�6�����^��{���
����F�K��mZ�3��%�S<��<~}���?�������$��	������I����tS��S
�i����0��/�����C6�RF_�h���@=���V����k-:�)-K��{���h���������q�%}$M*��@���t�G���J�d<��������t������7�
X��V����xc����ol��&JM|��S����������{��z��+zyz��c�ME����������e���(�V��C���~�"h�)F��R�4�Ds0�`G�����;����bZ��F
&��Q�nk�k�~��s���}��u^�|��������YH��������KC���������k~�?�����	Y����z���/r�b����Za/7Wo_fw����Z���WQ��_��v�k������/��������Xj���x���b�u��EAp:D���$���X���@p�u�n��0ag�]T5����s�4�������1�Y-�ISx}���������0��Z�Tj�b�����Z�z�aE|�C��k��H2�)���Lk��,
;��H����)4���4��N��x����{H������b���P�������vh�w�LX����,:���(K���hTmu�r�1����������1K`�_	 K��l�4���m�ch���5mP.Au���-T+��Q-Q�T�u��d�����Y7��Q|����{:*��z�H�������-�9F��7t%(����sCP�c�,��}���9`f2����fv��4�z��Y0y����?lWA��,[�0��$��G���\!�<>:�|%4���e^�Jb�����������Fbro4N�Ux�8��S�q�d�����Rf�t�H�����/�^�Vq|�d
jv�]����oOT'�������e��x����GF�.��n6������Enj�,9rPp�G
j���f���/���Z�fr�_B����[��.3������6`�b���c�D�IA���0�)/�h�<�)�Y��@@hN��c�ef^���d�[���3��g���n�!'�{Jr�@^���X<���z������>����:���]�!��Tyy~~*��=|C�m�*�P���M�*t���M��9�����pI�����;����[����x}ru�ev9�8���NN��~�N��Qy����r�er���q0w����V�����J���%{e��MSk��������/[�2�����Y�oV��	Lk�E�J�E��d��{�fs`����Z!�D?��C�q���%.N
	�R%�n���4��E)[� .Z���6���|��="~y3�'� t���h��v
}um"����/w��8�>~sq����7�0�
z/��xd�C��lz�^g`U�N��r�0e��!���X�m�3"�or��8H��+��
uYr�B�d���X�l[��b�O�g������6��>#��;�W�?��b����88��}��#��O�{�M��?6Z�'��O�aH�+S���(�jw0@m�����������/�tr�������uy����/��.���qu������7�G���(>�+6������l�>�l��A3��/en �+�����S�p,5��Nj2d<�`����p��Zx�i��t��H���`��	�y����6��n��#H��&D���|����04�����HP���+��e��&�K������.�"�w�<���<�����(�m@�<����U���n_�?��xa
tL�k7�1bI�9����
z������#Q;���~�a�kr���==��
�2lq��z��I��}����	RL�/�����@5C��M���������E�A���`��V("��>����]���(jC��P)Z4�W��p/�l���r��e��q���kyB@�����4���������6e�\�H�l�e]���GE����u��2O�
$��i){�RB!n���ZFH�e^���S����#�H�4��22!��rf��H�T�_����������(k�a�ts%4���I��H
Tv0��h�D�����x��9�T�&����*^F���O\(�ck� ���C��{z�
tE�C���%�����}�)��q����F��B�T�/�(�4A4>e���^�����'���
�JLc���H������������Ak��Fb����=����$E���T\���Dt���7H��$���Q������T�F"��i��?\�IO���K+:�p���SS<���;�pw6�<��.9e��H������l�������6!�H6P���e�t���v�������o�\�H.�j��x����
<��v�^����0;���"C������
	1�%�T�'�leU��H�_����VJ����
�T�����"��R�v���UKfftU�#HE=���G����>��~Q���S�t0��,)$�w�!��3�5x|��K`�9�{�v����c'�oZ��z���]q���p<�&OF��!,�"@_�$�r#t&`���G�+��
t
�1*>2��I=��#��O���b������"���NM��`1���abD&�\�/�E�V��!#�|�]�	����9L�J}�&�tDZ~��cO*%�5,�3��ZA�����c�B�������#�
/1`�>���@0X�a�3)=9yv����gt������/�������#�6�>���@����wZ�ZL�l����tw��;C%w ,��Q�XL'^$z������b��?�������_|	*�m`A���g���Yc����H���<!D��2���L��������ff�Shxx5�C�����A�^TK���a�<oF��TA��<�d�
������P��r�����F��TP����0�����U/[-xm�F�J�`��H��&h;��9�%0���K��}���v��%T��:
J>w����u�����%d� {���Op��p�{�����X���Q0�4���I��2���������{Q�A/q�����Vu#����c��s����c�	S�(�b����M���S�=��V$}�kZ�}
@�H�7�l�L8f	���� b���T�����g�)�����Ab�a�Fw^�L����`�r��tkv������o����5�����0��E�C���x�
��?�'�����&����
���q<�_���x�����q�~���}Xx����~"��hC�*n�������k���U���������F�ozM�
���U!�]�50]�N>>E�Wt��6{A��-D��%������F��2��a`�-���-����`��Bl�@��rm�/�2W���V��{�5d�����;R��B����.;�������
u������G��U���=�[D�u/�Z����FePo�w��:	�(�+-�\'�� ���!/�P���]!���y�V��"�J��J(�4't�P�>
	T����8�::9a�1��K��������F�g�ZP�5-&�m�Yl
��tN���T}�>z�����/���t���L����S�������<�
]���?��
���*��A-��P�sd��$������Y�"-�%�����tx�`�������}����1C�����A�kY�{������;�qrx�}��:s�
�ZG��Z��f��>�K���
��G�9��,��0����=I��'� );���q�l��uw*^���Sz�,�lf��)	����~1I]Bz}r&��f�y�U,Cy������!���?���`S'��Lc���t�^���i�����q��K��Tsq�I�MW��hDo�~g=b�zS4_��[�b�}����w�8��7���<\L��-j�t5����Vop,��k���|��C(���(x�$���w�R���_'��kb����0�KE�[����5�6$!3�h�4����Z���>U���/��*�y���V�QU���I��Or�|�:���{���Bw�������b[�(G��0�,$����2s|�L�8�$�
A�z4�	i3e*����m�{w
�G���FX{1���`�z.�p����TG�hS��X�N�M�-���~��1{�B����(w�Bs����DL��b��^��X��5�V9�Qy�bt�����_bz����H'7@�i�Ae}$��=���m��J/���4#������l�vh�-� �d0Y���l��i������:$PI��Y�Lp��gz���Q1��6�/�;��&��F����R��y����^z~No�.������tJ���Dv��q��lA-�gQ�"
S�
�P4%�F)���"Z^qt:���c����T����_���k��^����vV��,�'�����"Wc���<�����5�cV�G��UJ*a���n����������������������7�B�!��oN*ym�[x����7T�=����`e��Z�0d�i5�_mr=��D�P"t&S��e����7\��|/H?_Sw�?������'���g����{�m�A��-����o����[�v��!��L*�IU�)����e��vr�v��v�M����[���^J�I�c��!C�i�����Tt�b��{�a:���j]��%G$������D�uW�����s�	���{���6v�KG'u6�$�R+�K����������)�^#�PP�Q�
=�����Q��E�s���C�K����qc��t$$�����h�\�lA�K���DT��2�/�1R'�M�8Z�x���l$l�Aq���Bd��j�,'��q�[�E_ �+��u�$O|����Qf�n�^�XeS\����3��|u�P�&L�b���JBb)�SW�����U	�-�~c{���"�7*�~��z�������W��S�VE�-�T5@Y���
�i6���[��;�����UF6h��Zks]�����EKq�����9P��Ko�.D4�n�k
'U{r�y�����$2"��q(�����m��4e�&�%��SOj�U<��L8�4��(���j��4)���ke��8J~8��3����1�g������;6���P?��n�&�(���D��;w6�\bO�(�b�t�����!��,��P���Ui��+�
�l�������+��kw
���a�Y��A�DY�����z��c���
4'!�����ItW����zR�E���w,�����.����1��Q�03r���0J�2v*��%�������Y�oa��?����f4 iv����k6{���:�j[��M�����Yt����M����/�D�ZR������p%n����(��w�q�7l6GN��z�����k�*�!@�����R(t��
v���/1B����<�������at(�-�h`y��lv;��Z�����rJ��Mp�x$N�F��?�1�(���s���^�1�r	��m��lZ������]�����H1���r���}���PE�����1��@J���g������N���+��
h��d��������Q������#s]J�1�����t;��F�Z���z7�<��D������_\`�`���-�iw�=`j9�C �(��������dANa���
��K��V������N�������}��*�+
����=�5n6�A�����XVtU�m���+Za�_>�b��J��k��������=���8
������������]<��7�+�5z	G3��e��6��m�E������,�b�2��v_8������NI��X���(h�������.�C�����b7�1��������u�%*����3�m{�lv`��*���f�*���T�����tFu�Q�RF��L�*?�gV~w3�;�.�����BN�VEqU�p+w��^^^_���U��$�$���������i��^�C�dG��6U�g%�--|��wY�[I=�����o��r\�b����}�����oPuXx��;��R�����rw{,�����7r+����r~e�2W,C,��X�	��=�j�_��K�������`�s�Db�nZ���1��%b���D%fJW�+T�Q�����0��)Q�5��Zvp��Z�s�'�������P�L$���LH��^9H�){�����Hkq��^a�6��|@�����`�P�ooq|q��}L��[���6���	��d���t�����l�)|�z����{L��xBS��D�����#���K�1�)�P%������y}�e������D=~B�
F����K�(�Y��Z�8��+|-w�	r9S��H�@q�N"�����#��w
�uLF�|�8n8"�����V��I��OD����B���������?�,��[K�����T�L}�>�X60_�<jq�y�W������{�.�Hu��PX�#?��,.{�
��CF1^�o!�.��%6?:�0�>����R��>;�S�T�"o����g�j32s���'��/c?�~\�@�z����>�s�CN��"�y���0�������q'�JAr{N
#��>�AR���-���Yow
�j"�Ms���v�o�v)�:^��C���vk�,
�M����B���@\T����� m��Y�&����)����;��rL��WE�����;N��8;�����^@�1���9ljJ��N���wxm���c�nzav��X�[����g�o�����������1�q��%����9>�>��XV�][�������/.�������`�o���?�g�qb����������a%�{$�S��c�[*C�t� 
%1�Y��5j�fx�M��Ly���H�
���T�D�_Ds������=6l�T���M����?W�g��45_������vb.^���:���8M��N�|uru}rvD��m�L���d�gG'�W�n�z��������3��m�����V�[�YA��g�d��Gu�G�����W��!9--�����w�������S[������||�@����`*���(1�j����!�B������%,�`��>���S���3�����_Idt[��=����_�D�N�U.�NEg 4���W����-}n�T�
���W������9�����O0'A:�V�FC��2���Y*+5R�������l�:�w���nR%���,�v��6�V�n�������a����G�'��o�Gmm=�@w:9{���r�����f����_/�7�F���{A�g���&~n'�,h�hqu}���$MB6�W���_���EPd�������=rg��d�d>�='$���J�F��7	�����hI��o��b/n%v���o��^^��c������	�a�z{yL������������7[|w�v�����G��WW�m'��(��I��<b������~quqx$z����[�i�&��������;]3�X��,�vl��`zB��\���lx!������A�W~{|��l�I��"�Q�n'^�y����!7��N?�Z8����m�GK,��&��&d����kF��o�5uL��(hp1C��r�)}������i����"��������U���T �t^�%�%�GY��J���"�i���W�j��F*����.��q�|U2���"�n���m��+�Y��3Y��@K@u����"b%��x�Bs}A�/���'���g���������7��,U0G�q�g.�����a\x��;#�V����#�1��'�(���C�n5�w�aA#���K�[�~���',����"�Y����������0�^��v}���;POY��������5B��&��2�;����b�q�2�4�6	'/����n�i�\�����7�S��G
v�$v��_	�,%�y�R	�B*�y���u=$���T8���(�
�T�1��������2/�yy�-�Qz�����]�M�L��^�8T���EK� .?vDAX��W;��\�d1��#B�g10��}��v��2"���<��"�Ryz���������>�?�	0�:a~9�3��������J�(!����6������G�yo�`�X���W���y��
t�6�Rs������;N���n����/���c�m9��u�1�u���/���9��,������n�{�L�P����|������9�z-�����x84���g�������;22��_�H0�F������s�yn���8s'�����pJ������'M`��wa�������q8
<K��i>�:F��V���2�<7�~qx}��?$M�H�T��3��^z�Q��q����<�.yJ����0s���Qf��a��RCX��}���4�x6�B�����9g]T/-
�����w�
��K���O��;azb��q5wi�)����`Fz������-�)������mv�_�8���v7S�!�x��0�F�����l@*����;e���i�Gp�(�5G�x�OX*i *���8Fv����G���7K��//�e�k����9kH-�4k�_�8FM�L��63�8��
��a�E�#]�ku<Ry�4v+�����^	!����V��i6[�=����>J5l%T)G�R��O��U������=��u���t����+=�L���A��7(e��-����E8�B��,����ZqkQ`��[����>���3>�1���LQ���b����d���2'�
��Dt(�Zw[�.U%L���1����Z`��9�������P]4�*��au���8"Nbz%���O���x���*��=se��8�j��6��Os�9	�j�#0������0�����[��J�`N����1l����������Q_��U����Y	�����mZ���`+����U�m��6��V�(s�D���nK"�M;���o�����wo���`R���m�'�m�&"������W��?0z�6�k��=�n�_q^��iIab���(�8�C�Fnn����&����|�w3�;]�o�&|w������*�x��}/)+�k#��Gif���4
�6����a�J�����4��oW7|�%v�1=�lo�z�nK��m��	����V�0��'C��_[�`o3�w�n����lw
-�-���k��}�'��$�r���p��
���*a��lW���2�6fV,G��:i�mB�g�Wh{nql�h����k�����64��Gl�Uh�nql����{�B�����'�;�5R� ��f�����URll�g5E3�T��$�wL�V;v�����U5���}��d1Qm��v����w�V�p�����o���h-�l�6�b��;�%on��?�'�v0�8+�;�D����V���hoB�f�S����4R2
���F/�
����I���C�nM�����~���_��X�d[�����X�1V��aI������v����4�Od��/G���?��b$�RK���N���?�U��]>
����&�+~V�a����"�%��`���r�RP�x?�;�(�������=;W��='_���
t�
X����Q1��Y�*`k3V(��<�^�Ll�k�J�n�:��n����>�
���/��`=����07Y��]��Kw��N�����9���/�V��u���{C�����KNv���7��������������V'):��RomZB�x����n�=�����D�^(�N?w:�����������sgb9; �X&��f3��)�L;Wd}B/�����DE���\�e,�&�7��wL�O!_���O��	M�;E������p�,+_�����&���Y_	�� ?h$_�H#�{���;�J��E���m�{������t�M�����G��mm�v���&REf���O&w���$���l.N�_���N��w_<���]�g��Z�?LQ4���O]�N�����Do�����/'�(2f�N�s��
\%��YD0�����{/���Jo��2�\���~���"�b(������6�����
�����Bg�~4U�O1y����*ZN���l�����]e��N���-<���f��i�W�&��,����"%GD�n�itP��\>tZ��=_M�P%4u��&�+��B�����p���O���-81�ntd����F���s^�*2T3���(*&���'g��f�E�%�O��l��JQ��g�f�2����y�V���m
�R8A�����;�R��8~������[������M��>�������[Y��_;_���btK�O#_9�.i�Q6�-����{.B�VFV	���U,��Y�\�5�Owi����p,�����mi.��[��.�{w��]����+O��d6���9Va�;K�.B�9��*���\�q���l�q���|���8��2Mg;S�$���X�-dXwz�JB)�4���|�U���jo�}�	�������c�kPp�|3���K�3����T6��9�`�<���%�������\6��9�`�k/A�OK�/������0�xT�p[[)�-�G��g�g���:��a��T������[Y%��k�<
��"�����7q�Y�~���I��~�,�<leh����Z�c�b��}�\P��
���r3TA���o���;�W��6�M2M�'��\�.�p
�K.nnm:����J|����{�0@o��Xu:�Vb}����y��u���B�m�!�+�(U�E���D�R�\r�?U����@"��\�akc����O��]����Z�����x��]f�nkp�$�UpMy
L��j��\%���(i+T�B��l�[\�{���(����������mN�d�d<����Qtkm�%�ZNT��f+w�Y}2v��tb��G%�l	Aoip��-����wL��/�O8�.�O�����&l'�������*�^�Mp�Q��+,��
���g�7d������8����
��
�����|�|O8��������~�����)���I�8����v�b������6���?��H^q�[����j������#��Mh��P�g5���i����
X�q���i�Dmu5>]"��O�,���a��U[��FI1?�jl%����������6���d~���F�uW�+x���.��gnw������]�������g���yVc+���\
��y5zk���O��.���'M���j�#�$d���n��C�2@��$���Kl�N��>]*	����1_����U�|����*����|����ySI�j_�&&� cZ��������^%Lw{kk�:��6��?�����)=���ldM�Z1����]��nox�"s6�tK�o��j�u�Ow�X����p����mmx������
����������}�jq8�.�v���UR^��;��s*�i��rs����:��g�G?���O${}uTf���.�m�8<�Z>����i�i(?��K��x�al;%�T��F��W$�A�!�v
���t\6�������Ok�76��,��uD�~��a�����`17�w~f��yP70�4�����"�fm�����M���v�I�2���[e����V�XUg.�$,aD���i���l[�A��U�Z�zYR�X�Qfz�-���	T�-��0��Ls�<�8��V��%��E)������ ����M�����4���>�����:�����
��+Goe��H���������
����Qt
F�/Ee��������3�*x��S�:U��k�K3C�0�P�C�����t� l�1�Z��������U��X��f�g�U�����-Bz���H/��E���g����������v�"6:N�@:E��+6�E�����)�����Q�!���mi�U�6/F[�`EJ���Z��I�s�[B�vF\mt��`�V�0��+;��Uu]
��u�������W���|x����%��tI�K�Y?�s1�=�m�����%�S��Z���N�5|��$"��YB�M�X���Y�-0�����X�J�����P����K�-����M��������1WA_�JVv(������v��2�:t��u���m�y����2Sv)�A^h��?�����V���1Wsx��V�[�����:��M��m���5�R�����.c��}�s'F{���J�i�Z��f�mm��u��K�9e���U������U&�>m���v�-����Y|y);�n��zE[�~G�*F{-��{��0��QW�h�I^����)�Vq��b�{�r��1j-Lvu����b��VB��?L���8���3�O�2�����K?������omIs(p�P�\j��5X���R��d�h���X��������v���QWA��L��k������h���g�Qj��5no���7��W��P1��ZY�S��Z���8�J��zi�%��y�������E�lK��-��

����b��#Q���������g�����3i���h�f�=�c2[.R��TY���q��k}��8M��*A�q��a�q����pf���RV��9��V���;�-o��x���H�*03��~B����Tr
+�������%Q{
FD�9�q�q����v;��S-j/��<j/��DdV���S�l���4��w�����p�F�������9F\>���1����M��72`r�������,"/�XN�E���S��������U�W�����=.�4�s���`�x�Q����F`<��"��`1�x���3�y��gv}�H��CwDzchm����	��lz�O��#o�O=#z����3�/�,�E�a�w�7P��E����������Cc����}'�z����[�;72�)*���4YxMn���L��`����������������o��/O^97�
��\�GX_z>���T��|�[K�~"�?�������sam�:,?�5���S�S@_�$X�9r�=x��QN�D�t:��� ��a�X���t1��p@�?ZyO�WUY�c^��B���O��k6����A%�V}�2��"�N���������q~�
�C�� ����a\�&n|����;�C� $�N�l�W����$��a"&^�?x��>�1�9��$�����E������7o�,���A����7w�0��s`�0�,2��r����90`,ni(���S�����l�_���SA�\�'�(�
K�����5fiR`����YQ�s�x��Q��`wb
V��Z����u��4����)tD� 5A>2���9D�
�z��Z|">������A!I�[
�'���\����+E���AhW4�"��R9H}^���kbV�-����#�~Q�b�~���/W��q%�/��c�4���@�d;1N�O}�^<pm��m�-:�k[�8�������4N��O�u�o-G(Z���d�o�������r����3r��,A�h���k�h��]k��&�U'��Y���.;�w��_?7�OA0�[(����0����z��s�>Ft��(�@<��
��K�T�mu���A���2����N�>��{b8��C�����x��T'����AL�9P�9	�a���5��xb?�b����@��=h[s���}����D�;�[5rI(��^`g������z��������Y����?��/�-�i�B9�5��b�.�F3Wp�����~�����`���*x�
����[��h��u��?����J��L�n�x]o���:Y������� ���0����p���*V8�iB��;>@��A��R#�&-
�Z�v�?���x4�g����y�=��2
�b��`� �1���4�F���	h,�J���ez"�)l������� ��#O�pH{Q�;0Rr;k/��A#"��6|"����������0@�|�����/P(�7�&R���N�6�g{��&����X�y���\2�PB8�Z(��f����^��pL�S*�RD��"d����������1�������jv�n�bg�e��Y	+r��������!P����?b>y��y\2�\!O�C�$-���6��G7!.�)��H���������k6���/cdrOC%�$^�9�{1<�:Lu�$��I��'��'����@3N�u���Y�O'�q<F�-�GR��:-���w�	j����q��B%��9,&X���M�7���i�G�J,��������p�S*��"�J�]��P�?4�!P����F�x����Nx������i?{o������}���K7q����D|��l��lvM�v�^%�����]d�F�k�G���Dio<�g
�2k���2�
��.<����M1��T�L�<�I2 <��O�R���(�{��Z�B�>�x�U
�������F)�7�V`{C`��?��AW�y��x�to;?�/7�!�@0\�?���R|{:g���0B	���G��A��-�B�K���@I���~����9��?�g3�4�+*5�t�j�V�Z����_��Nf����$�g._&��v�lc�Hl���n0�8�����2v[��4����\+g����]���C^:'i��,q�_��J�����`M�
Oa�[k�(�w����K�#��<�N'gF�����Z���[10AP�]�����Xq��x�S����T���
����t�������-��V�(n{Z��">�[>-�-]A(�n���`!�����@�gLU�1�p��4u>ALN].�9��Nw�[/���	W����T���#|�Kt�J(=V���[�fs4v��j�~�h=�0��d�uS/����`������(�Uw�V�������������a3�w�t�X��n�t���;X����-]��g w��������TC�1��@��O����|��]����������J�@��*��N��V�(��$z�81�SE?X�p��UJ}n��	[?m�V7�������Xc�7��!�i��"ae�����\#�X�e�<6��>&�a��; ����g�\�O"���O���h��0�� C
 �T�`�����<�|��������?��o��S�o=M��gwnt�?��eG���������q��h�N��v�"o��=�$7;d!z���>j����?�����D��0��U��F�$��e�%��~����	�mw�\,N��#0�[��Qq�_8�8T>�7/n��@�u}-�������?�p��^��,������	����M�=���?��:^[#6"�(���B7�8u��(�g���>gw��i\uxr�0P,����D�i���� �a0E�?�������+��j{<k&���J����5���f�y��=���k�,��5H�'u�L��20F(���k���m�D+4��w3s�wJ���r�4R�}����v���*[�0J��+���b�C��J��=`y���?t��]i9U�K�������w���F�+*j<�y^b��B���GzRR	�u�G�Ie�Bn%m��]�:&�=oT�S��� �
u>aE��x���g.�����}7�n�
�:�c����4Xqtca��I���NM�;�����A�%���,Vv���Q']�>y������"��%������1�%uRX�8 g�����3b
}�u�H-{�P�FS��<<����s6}��?9yv��7��9��[���_����������&����`����#���-��n�����������#M����/�:h��`��� -�������BX���NH.��Z��o�#R#�n`����-��1���V5=\k��(b=�<����b�~)�<�!�}z�*�Hz�.l�@��"�ik��hre�F����]�jw�*�k)}8l���C]�4�}7�l~�/D������5������uGB����������M���$G�=i�����
�`��f��=LI�=R�]m	I�A��1��n1��7�q�MP^���*
��5������tK��$4=��e(RZ"�����q�_}�t�5��W���Sc6�`�	�t�f*�p�)j��A����D>We�����#)���{0���g��3���!LJ��a��F-%�@���86	���ga��ySnR������u����?��F?+�MK�I�_l����}�K�#��������7��'GtBM|�Bg��6�,�������������o������J��}3Z��?n�V��g�����7����H
\���9����'�3V�:�s�a3������:����N�V���Pd]����G��/vz5@�_���It��R	a
<P�c��7��
�7�����I�H�\v�)�(���{��-�7B5�O��
�����,]���(]��^������YG���R�?��L����_.���M4ug`����e��>l�u�������W)��Rt���s$mK ����@>�HX���\�p�H1��}�O�>���5�}��
;-)��ag��	��������0f�wF�a�c��#"i9-�L#�����P���$�����~��J�g�5�)��Bm������69)�>h"(:66��F�;nx�1���':�<�Ac��=P'��C�[�	��MEl���V/�^`�:������������NC�	�X���"�2jwt�As��7K�'?�x�e��v&��{`�c���b�]C�7p��`�u!��?�G���h��"�Q9,f���*.� U�(e�'�DO���#�����{����"���V��B�����0�q�0�0��y�0E�:�]r��<�+@�,8/i�L3�'�y`O�+D��
�r�������o��.{��x�+���1�	���8�{z*E0�dM����V�)^n�^�ut���hnjNhI������x�+�����R,Ky^�Z�a�l�zV�7�TB����
��y��,eon��q�I0�6&��/�m N?���&�-�/�����y�g'�q��`'��Gs��DIZc��Nzz.���Z7~������g?���I�1(�$��������������b�:D����#�J��qU�X���w)�v�����r��G:X|j�=�R��Mn��<g�Oz�9����0�rolL��-��X7�(	���7�YS[k(�G�m-����E�e����KZ=����U��_��b�U������B^���:
���x��J�y@k�����g�~v����p�c7�������R��<��9���Qv���X��pK���.���o�������k������8G�=^��,�Q�X�|��m�hw'�-�}�M�[�[j)��C�7�&��s����Y��m�7{Q�P`h�
k��Xk�H��v~��`�/�_����/s��b��j��HR���/����_�Z�r��]}��y���Up^�p���pn����G��E��8��P���������2��������e�<~}qy~���B����i�Rzdq-~l�8��Q����
m���X5w�N���9jW���*��ux�s�*���^��zcd|73�yCT�r,L��oQ���i�FS�l}Z��1��9K��q�"���?���_�m)��+��U �j�=B���n�:��c�:���I0|��1Lp>�{����E����/c9����|��������#�o���q"���-6�l!�W�G��3?�/hH�OkE;j��+Y�3�(�Q0N��)!��{u#�~\`� y9���pK����Y��U,��c��
,7@�MT�Q�_�m�}������u�,|�v<����zj"����?/�s�!7�@	S)��,��y��?��\���K��/�O��&H�]3;�8s�&�h#���d�0G�I�w[db�����{�����2'f�v�?W�g��<���W�V��Y|������Q�����L����Y!@�������<W�H~�]��0eB [8���Q�������!�>�l�:�jUv�vr�q��W'W�'gGy��=f##j�0|�zR
�������t���[��[���x5������W��g����N���-��}���_�$�:+A1�5����W"^���ysx��/*�4��6�m���.��J��,���P�_gU��5m��[����i�:
��=��=��=�����Y;��C�:�L��=s�����Q/�O���R���/H�����n<���ZHn�d�������I	��3fOO����l�p��E2?�H��2~�*��ky����jw��E�Y��?�/���8�<:�S��E��p�!
=l����(��v-���)&�cY��`�����L/��������<+�o{��_�`3�yQ�^+�����~���8=]��2�-����~B��FM�Z+c��Z�,�n�����]v�'k���Z�����n���.T$Q�3v���|xrP7w�������:K��/����u���:��9������*�2�HrY^^g6���E����n�Jk�L�5�qm�N/G��&�M���q��y}�O�_]���C�J?�w�!��l��^m���^�.��^~����,E����V����5������s��7����*ca���a���>Q��Nf���?-�N���ORI�b�W9��_�>�~�������o���sXs&�d����������9 �x�l ��1�����p����;���
�!���X4p���.-3�{�lx���|��	���<&��pFk�Ml�
-����#��h�VN��������L������������cg�c~L_0����Q?V+?��0�01g��}.��F����}�h�|��������,X��S�yJ��2���\��9��-r}����L��k��%K;������o~L���v8����O/l���_����������/~���K, q��/l/��	���.��|�����]e��Z�a�uN�]x��+�
��J��J�s��N����N'���e�	J=���x�C�^`�gx����3 ���,����_���\P�R
<�B�t.J��D�{N8H^Q�0.����auM-��?1Lj���D�i�N.&nh =�F�M��j�r���e|v��k�'_�Y��\� �N����}����}^J&/W��s�D8��j��)i�������0�A06("�bxx���z�w�
c�jv������U��7��V��k���h,x
�������rs��~k�w��������K?��c�m9��f��-�};��-���g���`(���ep���\���������"���wF�a�i�C���{��5����������o�y���av�V�9���`9w�������3�q����N��?�����9���}�����[���q8�����<����"j�n��{��k���_^}�C��!H�3>0i��r�)�u��	i�	���LL;�&���7�����.����	��fj`�F����nF��&�������D���Bu����
�)��^�Rs��0��oXv2�-Fu��28F���v��?�G9(/ks
�50�����5[�l������0�M�����a���5vvv>�?b������^o��I��R�Q�/	*!��Zd����M|����������c�L[�o(/nd|��D?����{�	��s�h|%7k*}#	����]�m���j[�;f,�_	���G���-^P���=���J5F)���6��&t��(�
~�)e������CgTWF��]��������1a�1	�w��
�C�"���)>���6�+L!t�z�L����S��X-Q��Nd@����s��[Cl#��21�@���s���x���,��S�,�.���F��J;Ei��T.ujY>Nq���M"���"�0�Z�xH:�[�:e�������(t��N��$gO�vo���d5�sz	n�q��
������t6N/o�^^^~����x�s��~�v���X�~�!����tl�g<7��$�X�����z�'�7�>�t��Q#,"0�@;�������\x�i�����������[�n���Rv#J �%A��2o^�y����%��=%W)��&��b�/*x��&��)\L<*�������,l��R)i���~����R�|*gD	��ty��6ISQ/R������RLIO�i�����Ad�Jf�N'n�����k>��/�����H
�&[�F��o�L3����r�������o�-�����f^81�O[��}����!-xj��dbp�v�PQ7:�:^�����r�-�]���#���6�������`�(�=r����^�rhe��t��?��'�t�W�{��N�%^��bV�O�n\z�T}A�y;�avB�'G���:�]P������a|�}���~�!�H���b�rP�vao�#j�!��>���5P���q��ct������Cc@�#.`��2��"X'P'a=�P������_v����T�z�b�up|�P0�����]P�Ak]Dw����94�����j�j�v�p�A_���
��zT7��U�J���V��h0����X1US�����@�?"���)�	�L���������@����6�>�%��7�5�n�(=@�*�V�"�@)+�&�C�������
��:�%�l�V+���|��g�������r��:�dgI�9�>|ux}(�)�b����/�Kt����.����0����2�����0���H�40}<����h�����o�h��9���j!��T`���"GiD�f<e
�#2Q�8��J]����
~���QX����\�3���:�����d��tk��@-��g�;��]�h��������#�AL1�Fb3�
,�����<&���5�H0���0#4:@�,�J�N���.7�1��U~C.���y��1�A�h�~-�����O��G#����l��G�,��������O��G�l���\	���_�_��:������2��(�������0'���`�>a��`���v�������J��v�R�_�
�iF�&h�����t�����?���8�]��x�h����F�Q���
��`c��'Bj7qv'dq&_C���0��9S���H������G"�Np�Dg?���� %>�������@�5������)�G��O{�=��ya��~L�l��WG��Bx.�V���=W�6(�[<���I/����(�����|V�� \��d����D�j��M��\W��������W=u�d�������(��t����Y� ����p�yqGK&&:M�,"��x��h��Q�����:]���}�9D��%?�$����/�t�\����\A�*l}��?�;����I0�M=b�`%<!x)����I_3Cc.Q���l�F�m�Dn��:������W�C_�l_G�
 8�M�����������E�����
I[Y�����1q#�����
X@�5YO����$^J�'����o��^�\�����%
l"U[�|�c���Xm�����[������Z�G��A�ZB��@ ������=�X�I��a4����&�dk)}���C����		�����<��(uW�l����m���U���I�'��BP�4=\b�G���n1<h�X�T6�5���~/���_��������TW7�Sc��#ao��C�y5���5U2�s�bbh~��w�W��IE�����pm����W�[����p�xh
�d1EUA��F+X\/����=���F��'4�@�hD��A9��B��g�o">�]�)�1B(��nL"2;4�1^qd���oSg7�*�f��?v����B��+��>��3	��_�c)�zIM��@|����5�E��7g���@4�	�oc1Koy,@�
J4�� �
)�s������t��;���#�C��C�+��-���;y���.d�':��m���L��S�i���?}���g�Y�$QYO!R������D���P3���$RQu������#�C)�����0�OI���?�������t��`&;��L1�0��)%3a>&`������k0�c��^,��}0�E9<G�WL�`L:PzN��T�R�$�rzf�\6e�dArKsN��8�Z�����q�B�@9m�J��������f��rmD�FCI��4�����i�`EP�}hdQ�G	]��c��S(�`)�� q��y,�a�X5��0���7/i*r�b�����SP��'�y3�m�\�\/��1��R�>�����-�y�%����To�X.��?P$�� =	�9(n�<�vT��p��}��0��X(���2�@��)��{�K;09#y��/��?b�"��������P��o�ST�X{�]:���7+�w
 �)����a^K|�|b��3/|>�ee�'�)@B�HwL�M�S�=3�n�mjs=r���'?=�5F��������gi�d�1B|����Ov<�)$�
G������lTu �DN��7�EZ�	�|��LF��u7�c�Lr�	t3����S���@��(���������J}��X�3�r�%]P���g���e��xqD:�C����Y�4N����Z��Xf;���}Ht��J�|l��}yH���_�c$j�wS�\�1
���p]��${�S�o21�q�=����g6�>���'�3�L�O��#uE��&#�B@�Q^�����sS\Cr�H>�������z�E�=�}7�"��aj��F�������G����1"�Q��d�;�����������}s��>���RJ��qq{��SCUe��\C��wWfK�Vs�'��G������<���7����2o���������v����zf����#�8�xs�Z2���u���Q��F) Hcx�~��{d���������U����$�`����a�Z�2d���Pt�K�.N��9���S�IM�>>B�=�&�Qj���?'������;D��St���1�������
��w87�3b�����)L�����!#����:x#e�"��`e����O��Q�K��%����z$��ww��-s����Vrx��Q�Q��XQ�E2Vhx���czlf#t���<��m"�I;>��v���e�(��:i�+������>���b�u��$�W��o���s��	��T���
��1�����H+��t~xLF���
q��Qb�L�]5����(Ja'��V�}-���c��H�E� #����]?��
*��C�'���J��
���"��a*���%��]x������=��
G0�nWHq�&���J��{��z�����r���6�xU0d��~KmA��'\�y����R����������	��!:��������[���c�g�&b��fmp�������Q�o���<���q�c`��"�2r��9��/����P0�����:�F�x���Z_{<�=��u:���(B��@�v,JHf����p���G`<���}��(4zJ}����D��^�\�}�'k\R�����VL��D��d\�X�*��'����@-���5�����}�H��|��\1^)L��!�P95�����������8�
JF���>��$5�Q�o*��`[�7�����&�$�+��I����d�D��M��Z��X��WbdG��i����@��tAm��5>E�IE	`e*����7�����%�
��I�b,��)�+1l�a��O���o��2�
1�G���T.x(F&#7���H����>,�� �&�_�_���~��->{��n�=�Q`�?H
B-������>�0�F`$���|����
�J�/����Tzy��{�a���(e���B�8��^alq��^$K�<6g�h=`�,o��4t��m�E���w�V�����l<��?3x]��/�^���j?���qr?cE��fECF*lv�����c��������r��s���gl�z��
�Cg�t�gdZN�o:n�o9N����x������~�p���f�y������"M�DL�)�hvw������� B}��3LB�|�w�P���h��.�dJ��	�^Zg�<y)�@�n�4�P�������R��*\-#JC^L���B���?���K<;4���:����Z'�1(�
����~y��u@�77%�#���xY���t��O�=L����U_��c��L���?�����
������O��rS(���C�|G}>���
��Fn�
�Fq�{���U���`7p���q�d�$�r��5�=0W	�8K-��.���^�V)�r��3��[e�tH��q�l��8�FtC�zB����-���R��<cGb
=�?�J����~2iG&�6��HOU�xh,��a#�7��v����n���^�DZ��<4 ��..�����"�v5��z����eGxX���	���?R��d,wP����eO���������j?<;��?�_�X��k�C��e��Ts�u���w&+���W���J�;����f	c�.�)�`�:�]�(�U�ePJ:6�sW�����i���
�%;5�Cya����h��H���	/��s���K}%��d����
cW=k|�����A(n����\L���U����L:�~2���{�f��z�7~�d6�E�$��~)
���7G������oT*CC�}�-�����J�>E��K��d��cS�e����.��!���cM�n����zF
i!�Y+�3f>�T�	#� �4	����:����j|}�o��V�>Fi_���?�n�e�$P����2C����A��Dyj\k��S���7��%
:���O:F�D��D��w�c�F���FO���%s�������+1������kMY�x�j���5�����P�-�R�	(���R-������T�(*DS|+��{-*yJ�QJu<�e�������:���v�JpU�g	k��x9rT��v�{`���.�	���o`�pJ7�?��5�<ukj?��L��H\*s ��%��b���{(�	%���/�*u��F�)eM���6O��I�%7��L�x�`��kMC]���q���F�8��$\12x��~����� ���_��MI�D"�&��C��JZ���/�9��B��g ���bK�#m�|�J#����G��m[�~�J�q������#�#�����}�sG��g����x����@��d{�C���EE?{�v0@������(�����/���F��1/��3��]]GVV��9y|H�����{�����C����������G���������O���,���r���"W0Si���?���,������@S����$, A
�|�����~Q!�W�&���7�N�����^*����S7�m��d����Z}���!��E�~b�'���?�=�d���\��_"��e�hj������R38��!(��k����q�����zqXQ�hIf�dV�=R��$����yW������l������x�������y��O��B6���2�bNS�G�\�0U|����$�jW�p�h�{�	+z"��B)�y�A�r���,�Z�L��3)l�w�g�C�!���5J&iI�u�>H1��|�+��� ��~ IU���9��b�JK�	���t����������a��0���gb��/]��K�����~s}u�������~xs~u���
�x��5��R>�h��%D��zYw�"n�Y�jS?]X����4$^�Y����~���Xq?�����h�$�7�9����b�I�'��K'
V��_z�n�"@���j���/���u'����R_�9��EJ���4��������
 d4�/����E0_M�Z^S>g��dm> ��~��,�_ �����V�m�
���B�pm=��&_�X�����
�(�d��q�qpu���{��^���\���M�E��$���������]��$�'��_�I^��R�iL�,ND�$�-��Y��������F�W)��j?;����9�����Q�������S�U�1G��'�T;������	$����<�|�T�w}/e�#�j
4C`8����U�y�C����������e��\��v��e�"������6�M4\�������*���f:u���]���������a�p�-�u�����������n`��O�`�"����_Kg�	b}�G�9:�Z�`oZ��LI�2����������������)T���]�8D n��&�>lse���q�i����E������I�"�j������.{]�Y)b�����+3a}���)-K�(�|��
�^%�����l��be	y48�.��y!��DB{��i����O��L}s9
a�}�+q����0�_��j|dI��i]�
f%g����W��� Vm���~��[��������5�i��-(9O_a��7�C����m��?|~���}jFm�Q�Nrm���r2h��f���u�{��si��'�vMX�9o��z3�W������������o�.D�7��!����kw�����������O��.q�~i��]0y���&S
R�aw4qG������|Z�������W?�|Y���Z�������zRdr�sp�=ma��������/vy-�>����;��f=��1J
3�^�~�a�"����������BJp�xA�=�r��Hl����z���[������qK������u�=j6�������(�{���|�aCFV.������������V|j^�R&����"F���M��&�2aD�Y��d��jO�XnI�_z��v->D��;�b#-Rt��w������HkBC%�%��	b��w6���8Q�E�%&���|2`���;�A�����p 9A^��W�9F8,���Y�7L�0��+�F8��|�;-�2��
E(m�j6����NU�Z9	�m6
m�v"�����M��X_�</���q�&�'H��p@-i����I�>������
'����)fSK�~���8{G�����8����8D���\�l��|�8��)RG�ri�9�;����f+'�*��:���=-1����� �5��y��te(<����AJ}��c�����B}����P�#{p�<�zC����@AE�2�/��'r�9o�1��iQ��
��s<���C���#�jW�	�9�P��'��������7������8���%b��{�V$I��N�%���8]�jG[�qq-K������Qg���W�`#	r�Rt;�����Q�l$I��T��-�~��8V)��%�����8�1��O9��{�N"A���{"QQ��bb�T�k�"���+i���2���{	O@�%����6���W�uC���������O6���5[�m�)��������N��3���X������9h��=�79��#W:�%w��{�@����#��)����K�\��Z�����+�r0��KY3���V�=�h0�B�x��WGX@�9}/�����R~�O��;��:���Oq;�@u�������,@c+A�_�=X��>�.�"��+���L����H����#O�i��^�������U�V���]��F���"
�lF~�*�
� -�'���^��?���My����i+��~'�;���k��!��S@����y(�O�n��������Q���<�F$)n�T��Xp3�d��}��@�H��.�|��
�7l�)�h�.�gnW���B���#��������08JZ�6�H��q�=�ot����A�����/���
��f8���
�%����h��Bd��0=�g+Q��v"����!y3�c���cpW&�='��u��1����t�vGiy$�.��'k�F�����p7$�����C.T�xx�_l&��hK��5�:���a�G��w��l�\������1�e{�~��V�����|p�GU�V��-�q����~�S��
��6{& �F��yk�V�WT�c�_~��
W�'�=LTM0n��eE,J8?����]W^�,��Z�b�-�u���W
@�#IY����G��M�s��b}���Z�:������0u1��_4���5��R!ji�%k+�
]�'1������fm�\�'���N��r����7<���5����}��UF~i	�?��e��)�A��W�����x�������G��.S����/���V���4cL���_�>V���x=++��o�]���T�W��3)�D��+��4�]����jN:	N���$���IT��t|�e�:��V�����>[��u���������B�U���&�L�U���V���h��Dl;��d�]o_Ax��������A��\7��N�
���e
�s�V;��a�>:�8*�-?�\�Q�\%�e����0^B(1b6��uj|A�O���6���~�{����
*���
_�_E����^�� ���j.L!��xO�"H
FY2�G�[6����]�:@�"�D��GR����YJ���Y�	�gG�3�l����]�|���d��c�>��w���Z�������
��U�lp�5>�G'�����jN�������]���	�9�9����T�Q}�j�?���A�u64M�IZ������:S�2���2���Q��(���3�*�P2%Z��-��������G�?\��\]a.��Ipi��|�Zh�lY7������+��dP��� �\�����v%�~������]<������9`��dv��������mB�-��R��
L�8:��7����v��nD����D�Y�a���b{���������^|�����=��	�����k�?�s����	�o��C^��;�r��A/������i]\rC/�W}A��!h��l��E��e��x��2���@�J(���7��"<�0\��<��wQ_�zi�B���z�6ie�B�^�s��
���;���p�`>+6�^���,�8�
v�b�7�y��$��)��������^�{��&$;���d���	�YI{��F:B+��� � b��
'(*��^����,U?QBO��%)I���.��s'�K�EY:���K�(G��r�f�Y�k��Y�6��������b�t*�����kG��jb?�����z�Rr$W~�(*Gi�{��s�P"�bn�g��E��9)B�^|k�����Xy4+^_�������zy�6�����W��F�n�g��	rG��>��W�"��KmH���t���o������Z�����M	U��:R45b��+G���}���O��Z�^N�f��S,�~�bY�
H��8y�56���c@��t�����Q��N[�H7�$OK#��������+��2��MWP_��s�fY����8V�����7:A��a9�{���������A���L��Vi��>Z������.j�,������k���J��^�k���k���/_�����IiG���^SUdw���2�O������B��-9o�UI&��5euM�AR�c���������Q�_�4~a�0J�b����V5�`�O/�J\>8$�Z%���,�(�L�|�Hg��|8M�t����</=��+��5]r�+>_i'����d�OFD�����<E��J�j�M��\�(C�<*��k����%��������+b�M6_�/Y��&���|����$����W�/��_�ADR�a�����$��Zw�������Yku�������#>�N@)�v�`:`�ARq�Z�b�����@t:���G�����	V�h����\��Q�������gu������#���������������p�������u�u;��ao�ku�A��x��w�e��9$�g��}7������z����u�,���f��p�����d����������U��rf
��^�mXX���#� 
����wc��B]=d����P�N8^3����,zGi8��HFR��Cs�
RHa���n�C� �#��������GOq����S��3�H����Y�}������������I���Z�� ���I1����{u"N��W)z5����-�y�st�%A>���{����/E��~���$���% ;��b�D�#���W�=�V2�~�����i��M �'q��sE����?��D����W��\��H|��~�4|��h���n%<�G_ar��%����{k�'j�����,���$=��L���`����*�'��0�>�Q��Z��%%���WH�0yCAO���[�h���[����Oy�|���3�����!a��p\�}F�	V�e*2�}[HTX�]2M���^��v!Y��L�Ja���K������A���d?i�:�s�����k����vb"U����q��1��~��k���?Hr���<t,	u��)�h���P*���K�V\���
��}���]��&���H/��H0�5���7����}J���=��@��HL�y��]:��o����D�@w�wk��=J,���� $���P�[nYj��KI�����s"�������iy� ?1_]��?�C��V~Rk0qLr����1��C�8�c=L�ceJZ;�E�!j���mH��n�HMy����W������Nr��j+uW�[�n��x)"�r��
�"A��(#'~����Z��p0���������	����>y_��\~��(e�9��/!9�.�h��@�1��ni[�ij�V)c��p	Ro/M����E��������Z]���8�I�$�����g����S���e�V�I�������W;t��<��'�G��-�`/����;DO^i2�e�B��=6����pE
�@#���p�?-��!'?��s	��T+�*�J�otn���}�)K�9�E��<�������u�����w�6��C�dFk�M'���I�rX����R��h@�G-H�.f��w)���q9�+�i9�2	��0T[��Zc'm�6cX4�S�����J���s�BW�����i�m#�G<J�����j���I���9o	�r��FPm�^k�j����K��P;����f���d�S� ?���F���]`�4�Gb����P�&Z����F�&���EH���]�)B�zN�������y.�Z�
��-�|�����,A�l��&����"����p��>����(�j��t��o�X��48Z���5�{������c^��wG�$9��G�
T���V��uD�J�KJ}B�<E��%��-|�u4��z����.j�G^ 
�1���3��n�������q3���	f���Pi��p0�X��y>'������.1l�A�-e4Au�	'�gB��Z�9��@"�!7�58�M���������\6�R���D|�����c>�4�ZB������0(|���(.h/�
u�2�&i�y�� ���	�rY�(�,���"8z����y�a��(y|��\���?J�C-u������&�G��3%&9'�+$P3i�&��~L@z!���y�!C`��\��d��;G���pb
e�1Na��c�%v�bQI�u����	�+%��{�)@�<���N�*�xwL���>�����jU�X^,I�j=��8#^4A�����1�����s
�|�$\3��5P@��>�:5�!3��l�H�����Z�
!�����sS�j������ ��K�Q_Xv���|��B�������8i���q�LX��~�@�x���������t�p&��GDX����	�06i�2)�  �5�dp%�%�"1���T&��\D=/(%������i����\S�[2J:%B��f3b1�e���S����qs�uFE�
��A3��8?{yzu~s����O�������m`��v�?�VZX(��ka
	��������s�t���
�4�=6��?�� L�'�D��a����U�YV�#-��B��1�������a���(\:�|��hx23`3J�c!-���$�r��-)�V8U\�f���-��`g~��]+V��9��!H���������<�>���s�]����Ykok":��	�u���`8����,�Twz�B�5��\C���� 7�;Gq9W=�!~UA���p�����'��U�f���C���98
����5A�`?#1$�k�C�H6���
��E���x}������77�N��:{�n3��.V��[d���3��Z����q~����S���w#Mn�����+7Vk�&BSP\����^�m�����+o*,��Q6�;��L��U�i��K��eQ��4I��q���'��7/�B{��W��*��s��z�VW�e-��!A���D?�#fo�.8F4+�� ��,K�����E��Rk9	��e
[�vp�g�#a��T�Z�9Dheyh$�w���*��>�l����
���{��t�%�%l�,��@�����Y�/R��������@m&�y4�$l�7L���<pZr5.�(I�g���DO�~��`R��f�hv�f��b�#5f��Z�E&Z��F�EOr���)	�`����*���{#(��.L������F �e
jR6� )��n���p�1S/-�b��ODJ�o�/o�^^����9�|q�5�MjB
[��Zx���dC���%�{���BS^]	~��$��E|��eU�%���V�����Y��'Q���4��_5L{���=�M�^i��-����s	�[8~1�#�2��>���tJ���K���7I�fb����)�K�����*���j���^�#K0����������p�
���(�u-Z*M]$CXtn���%��D�����,�0cs#�c����M�bC�����3�B!B,"@�X��r�+�<X�g���@�>�[�hB,#B-" �\q�X�|4�d,��'P�X/h>��.�V/�,�\���KCs�����Q�N�Z|��E��	�#.���z`:-��m��������`A���S��X�qT�-�v`+K�
�z�dlct$�O�g��wE�����z�3�������}R�p�h�8	N��K�)��XR�d�3�����`��4(�8����Z|N~�]1�@����B�=��	& EO���k*���mS��)��`���l����H����7���D����LSs��'���|U���is�#[A�U��i(���g��d�,>t��70
%w��!yd���)���
���������/[!���)jHZ->L&�se��G��*��"�D%h�h���U,A%�����156���$K U��l��~k�f��~��)��Z���n������i,��U���cL#��G�bj��u�V�����)��T�� �(�Y�� Lf��)����*�a��Z�'P�G���~���/SaZ��V�d���@:�Oh��N���r����9��^=��L�KX�fYP�^�!8�k����r��)��>k�5��5�Z�����HN@���S�����6����H�h��1���N@��!����dYQ�q�!o��a:�0<M�v��.���(�_c6�>)��8c)�	�s�r���i�I��������+L����Tz}yF�����>��'�8�E��P��	�^j�4����2"�9���r�A{�M$��Y���inE��R�q!��y&���q��o������Q�3�����a;F��K��/�>��y���V�Bk{�Q�y���c�|F�h�2�,<<Ej����\/rqW:��p���z��q�T}�^~�9�9�nb�e��d4�!����*-�|�R��A��t��?���p2~��n����v�<zh-%�cO~�S�C��c�,�>Jn2���pE���X+��H���JDo>kw&E�&�����PH���=���4�`���S!q&�p0NT�B@���)��&1�e� j�Vi��w�U�y�X��^�r*���mQ����D� �����h��4g��,����*+�
�<���j��1��~���V�NX�V���+D��N$�6��������:�����X��&I$�� ���V13����4�t��R�}&����I8n���OF��(<"���
>*	�����5��j��	�^�~���{Y�����la']�c�,2�EZYO`�CoH�	��c}��)Z�s��p�)�^���'j1c���x��=O�c�A���=|(������� q�zQ����[,�����`n�eU���_�Gy���\�Au����ux����9���3���*n�:���$�L��%�z9���YOF\��q ,(�6�BB����iz�{n��Y���*�I	r|���-9��h�vE������i��&��6d4�\��N��������U��;�V�K���d^Q�$�2tqZ&�����$�!I:���.�:9���hU�����Vy�L�FI�P��w\����\�\
:��A�uDt�\1#LIF�i:��4��d�t����Wl���C'�,�b�2�$�P�x��~��r�]�@�lp���,B����(	@�U��o"6�����(���Y�:-����c�X*c��o���9�Zl~�8�5�HbW6�p������Vh����v����&��9�X*R-@�e�i>�w?�jm1X|VS�N��2gT��'�[�j��Q/��GLM��-6�rbgh��n�N���x#Q]&����V��=- �?�(��U��VxO��`����90c����-�a�%��z7�������m&�T��	Z���00S����S'����e�(95��;��T���������&$����f>���;|����h�
�K��%N��f���l4gtG#�x������V\���)6E�:GrW3�r�����`���>f(/���u�H���'�5o@��\CK�XI����k��������9���X�����6�����53,!6�3��*r,����m��
��(��&�G�C`WVy}gs��pF2��NoU�Q��|�H�����$��2����4���O3���������U��~cS�wM3X�4s���%����Q�����w�F}����Y�L{*sv�`/�xz�����l(:�.�jCQh.���ED��?K�b��/�?K�b���E���T��lYA����v��pEw����e��G!�1[C�N�R�� D"e�(��#���(��C�w?K"+��8����o����Dh���d;�!�����XlDb�^I$���!���U1���$�<s��	I|C:7�a�;�����LC�_�$o�A��-�����H���O���8� �q"c�@�!��dS}Hh�;Kb#��B#iQ)��bp$�c�f�H3������4�W�x�
�>;\G���>5��Vg}R����7��8J����.��,�zZVI[�������t�KK�w����U�\���(j�+�k�p���<��I_$��S����>.�RX�bq8�2���J���h�k����'�oXc��m9t��u+��?��YsTAe���d\����`�=������.�X�U*�1
�f�h��M$�O�2_5T&P�n���5l��5��Xu\�=r0����0B���������Pd)�f�>7Rn��Ogqk�-�2�3��b>S�4���~(B)a�*Xy!l����@��z.88A��21 $�|���L�����	vK������4K@A�/[U.T[���~������}tG�Shf���VZP��B��-K^VK$,iHP�[r�Y����"6��a
�'�n:U�A���;��3��,�=d ��$L�#��
�M���+���fd�d	�b�e}����luF�:������O�|�}8r*��3��L�80 Q����'O��j�	k`��Wj�vA�:��t��c�=�1�Gx�E��^+����8s����+�Zc^<���f���O������
�HRD��/�%<A�[��sP�l�^��L��$��D��,0�glR���Q�s2��X���JC�Kv������a�������W�+M~�_O�f�����v��\��!��Q��#�z?{��N�N�_D�~���7s�Q����W�����0�q����rw�<{���@s���]�>$����2���S�2�y�w6'���G���/���A%�6l�#�������L �����5�2��c7��i�XLA:t��e�������{�nDGJQ6^@����������l�E��(������mQ��a	��n0��4�q���|��������(��d�6���k���Q
��kr9�`o���D������1���������z�f8{&a�A[�����g��%���v�����������s��
#83Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#80)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

BTW, I experimented with adding blank lines between the hash items in the
.dat files, and that seemed to make a nice improvement in readability,
converting masses of rather gray text into visibly distinct stanzas.
I'm not dead set on that, but try it and see what you think.

Narrow entries with natural whitespace might be okay as is. The
pg_aggregate example is better with blank lines,

Yeah, it's somewhat of a worst-case example, because (more or less by
chance) most of the entries have last lines that are mostly full.
In other places it often happens that the last line of an entry is
much shorter than average, and that provides enough of a visual break,
as in your example from pg_amop.

but another thing to
consider is that a comment that hugs a block is clear on which entries
it's referring to (pg_amop):

True, we'd need to rethink vertical spacing for comments. I don't offhand
see why we couldn't keep comments that apply to a specific entry directly
adjacent to that entry, though.

Anyway, as I said, I'm not set on this change. If you're unexcited by
the idea then let's drop it.

regards, tom lane

#84Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#83)
Re: WIP: a way forward on bootstrap data

I wrote:

John Naylor <jcnaylor@gmail.com> writes:

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

BTW, I experimented with adding blank lines between the hash items in the
.dat files, and that seemed to make a nice improvement in readability,

Anyway, as I said, I'm not set on this change. If you're unexcited by
the idea then let's drop it.

On third thought, there's actually a positive reason not to do that.
The more vertical whitespace we have, the less traction there is for
context diffs to find the right place to change, so that we'd be
increasing the risk of patch misapplication. That was one of the
worries that we set out to avoid with this whole design.

So nevermind ... I'll get on with looking at v14.

regards, tom lane

#85Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#82)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

Attached is a round of minor review fixes. Much of this is cleaning
up existing mistakes or out-of-date comments, rather than anything
introduced by this patchset, but I noticed it while going through the
patch.

The additional EXPOSE_TO_CLIENT_CODE bits actually are necessary,
in some cases, as I had compile failures without them after changing
client include lines. (I'll post that separately.)

I added a couple more BKI_DEFAULT markers here, but omitted the ensuing
.dat file updates, because they're just mechanical.

I don't think there's any great need to incorporate this into your patch
set. As far as I'm concerned, v14 is ready as-is, and I'll just apply
this over the top of it. (Note that I'll probably smash the whole thing
to one commit when the time comes.)

I have some other work pending on the documentation aspect, but that's
not quite ready for public consumption yet.

regards, tom lane

Attachments:

v14-bootstrap-review-fixes.patchtext/x-diff; charset=us-ascii; name=v14-bootstrap-review-fixes.patchDownload
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 8729ccd..1626999 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -3566,7 +3566,7 @@ Oid PQftype(const PGresult *res,
        You can query the system table <literal>pg_type</literal> to
        obtain the names and properties of the various data types. The
        <acronym>OID</acronym>s of the built-in data types are defined
-       in the file <filename>src/include/catalog/pg_type.h</filename>
+       in the file <filename>src/include/catalog/pg_type_d.h</filename>
        in the source tree.
       </para>
      </listitem>
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 17213d4..d25d98a 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -25,8 +25,10 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription
 
 include $(top_srcdir)/src/backend/common.mk
 
-# Note: there are some undocumented dependencies on the ordering in which
-# the catalog header files are assembled into postgres.bki.
+# Note: the order of this list determines the order in which the catalog
+# header files are assembled into postgres.bki.  BKI_BOOTSTRAP catalogs
+# must appear first, and there are reputedly other, undocumented ordering
+# dependencies.
 CATALOG_HEADERS := \
 	pg_proc.h pg_type.h pg_attribute.h pg_class.h \
 	pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \
@@ -49,7 +51,8 @@ CATALOG_HEADERS := \
 GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h
 
 # In the list of headers used to assemble postgres.bki, indexing.h needs
-# be last, and toasting.h just before it.
+# be last, and toasting.h just before it.  This ensures we don't try to
+# create indexes or toast tables before their catalogs exist.
 POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/,\
 	$(CATALOG_HEADERS) toasting.h indexing.h \
 	)
diff --git a/src/include/catalog/Makefile b/src/include/catalog/Makefile
index d84a572..1da3ea7 100644
--- a/src/include/catalog/Makefile
+++ b/src/include/catalog/Makefile
@@ -2,9 +2,6 @@
 #
 # Makefile for src/include/catalog
 #
-# 'make reformat-dat-files' is a convenience target for rewriting the
-# catalog data files in a standard format.
-#
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
@@ -19,10 +16,16 @@ include $(top_builddir)/src/Makefile.global
 # location of Catalog.pm
 catalogdir = $(top_srcdir)/src/backend/catalog
 
+# 'make reformat-dat-files' is a convenience target for rewriting the
+# catalog data files in our standard format.  This includes collapsing
+# out any entries that are redundant with a BKI_DEFAULT annotation.
 reformat-dat-files:
 	$(PERL) -I $(catalogdir) reformat_dat_file.pl pg_*.dat
 
+# 'make expand-dat-files' is a convenience target for expanding out all
+# default values in the catalog data files.  This should be run before
+# altering or removing any BKI_DEFAULT annotation.
 expand-dat-files:
 	$(PERL) -I $(catalogdir) reformat_dat_file.pl pg_*.dat --full-tuples
 
-.PHONY: reformat-dat-files
+.PHONY: reformat-dat-files expand-dat-files
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 0e6285f..8c143cf 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -30,7 +30,7 @@ foreach my $oid (sort { $a <=> $b } keys %oidcounts)
 {
 	next unless $oidcounts{$oid} > 1;
 	$found = 1;
-	print "***Duplicate OID: $oid\n";
+	print "$oid\n";
 }
 
 exit $found;
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 02c38c4..b1e2cbd 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -34,7 +34,7 @@
 #define BKI_FORCE_NOT_NULL
 /* Specifies a default value for a catalog field */
 #define BKI_DEFAULT(value)
-/* Indicates how to perform name lookups for OID fields */
+/* Indicates how to perform name lookups for an OID or OID-array field */
 #define BKI_LOOKUP(catalog)
 
 /* The following are never defined; they are here only for documentation. */
@@ -48,11 +48,12 @@
 #undef CATALOG_VARLEN
 
 /*
- * There is code in the catalog headers that needs to be visible to clients,
- * but we don't want them to include the full header because of safety issues
- * with other code in the header. This symbol instructs genbki.pl to copy this
- * section when generating the corresponding definition header, where it can
- * be included by both client and backend code.
+ * There is code in some catalog headers that needs to be visible to clients,
+ * but we don't want clients to include the full header because of safety
+ * issues with other code in the header.  To handle that, surround code that
+ * should be visible to clients with "#ifdef EXPOSE_TO_CLIENT_CODE".  That
+ * instructs genbki.pl to copy the section when generating the corresponding
+ * "_d" header, which can be included by both client and backend code.
  */
 #undef EXPOSE_TO_CLIENT_CODE
 
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index 5aa2bac..9620bcd 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -47,9 +47,8 @@ typedef FormData_pg_am *Form_pg_am;
 
 #ifdef EXPOSE_TO_CLIENT_CODE
 
-/* ----------------
- *		compiler constant for amtype
- * ----------------
+/*
+ * Allowed values for amtype
  */
 #define AMTYPE_INDEX					'i' /* index access method */
 
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index c410b99..863ef65 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -23,17 +23,6 @@
 #include "catalog/genbki.h"
 #include "catalog/pg_authid_d.h"
 
-/*
- * The CATALOG definition has to refer to the type of rolvaliduntil as
- * "timestamptz" (lower case) so that bootstrap mode recognizes it.  But
- * the C header files define this type as TimestampTz.  Since the field is
- * potentially-null and therefore can't be accessed directly from C code,
- * there is no particular need for the C struct definition to show the
- * field type as TimestampTz --- instead we just make it int.
- */
-#define timestamptz int
-
-
 /* ----------------
  *		pg_authid definition.  cpp turns this into
  *		typedef struct FormData_pg_authid
@@ -58,8 +47,6 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
 #endif
 } FormData_pg_authid;
 
-#undef timestamptz
-
 /* ----------------
  *		Form_pg_authid corresponds to a pointer to a tuple with
  *		the format of pg_authid relation.
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index e58eb8d..a9e7e2b 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -53,6 +53,8 @@ CATALOG(pg_cast,2605,CastRelationId)
  */
 typedef FormData_pg_cast *Form_pg_cast;
 
+#ifdef EXPOSE_TO_CLIENT_CODE
+
 /*
  * The allowable values for pg_cast.castcontext are specified by this enum.
  * Since castcontext is stored as a "char", we use ASCII codes for human
@@ -81,4 +83,6 @@ typedef enum CoercionMethod
 	COERCION_METHOD_INOUT = 'i' /* use input/output functions */
 } CoercionMethod;
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_CAST_H */
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index ff972c0..e1450e3 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -12,9 +12,10 @@
 
 [
 
-# Note: only "bootstrapped" relations need to be declared here.  Be sure that
-# the OIDs listed here match those given in their CATALOG macros, and that
-# the relnatts values are correct.
+# Note: only "bootstrapped" relations, ie those marked BKI_BOOTSTRAP, need to
+# have entries here.  Be sure that the OIDs listed here match those given in
+# their CATALOG and BKI_ROWTYPE_OID macros, and that the relnatts values are
+# correct.
 
 # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId;
 # similarly, "1" in relminmxid stands for FirstMultiXactId
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index 0faa81f..896c410 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -1,7 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * pg_db_role_setting.h
- *	definition of configuration settings
+ *	  definition of per-database/per-user configuration settings relation
  *
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
@@ -18,6 +18,7 @@
 #ifndef PG_DB_ROLE_SETTING_H
 #define PG_DB_ROLE_SETTING_H
 
+#include "catalog/genbki.h"
 #include "catalog/pg_db_role_setting_d.h"
 #include "utils/guc.h"
 #include "utils/relcache.h"
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 65c1110..b70ad73 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -64,6 +64,8 @@ CATALOG(pg_index,2610,IndexRelationId) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
  */
 typedef FormData_pg_index *Form_pg_index;
 
+#ifdef EXPOSE_TO_CLIENT_CODE
+
 /*
  * Index AMs that support ordered scans must support these two indoption
  * bits.  Otherwise, the content of the per-column indoption fields is
@@ -72,6 +74,8 @@ typedef FormData_pg_index *Form_pg_index;
 #define INDOPTION_DESC			0x0001	/* values are in reverse order */
 #define INDOPTION_NULLS_FIRST	0x0002	/* NULLs are first instead of last */
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 /*
  * Use of these macros is recommended over direct examination of the state
  * flag columns where possible; this allows source code compatibility with
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 07adca0..481d2ff 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -10,6 +10,8 @@
  * src/include/catalog/pg_largeobject.h
  *
  * NOTES
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
  *
  *-------------------------------------------------------------------------
  */
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index f8118ff..4382738 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -3054,8 +3054,6 @@
 { oid => '3681', descr => 'OR-concatenate',
   oprname => '||', oprleft => 'tsquery', oprright => 'tsquery',
   oprresult => 'tsquery', oprcode => 'tsquery_or' },
-
-# <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase
 { oid => '5005', descr => 'phrase-concatenate',
   oprname => '<->', oprleft => 'tsquery', oprright => 'tsquery',
   oprresult => 'tsquery', oprcode => 'tsquery_phrase(tsquery,tsquery)' },
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 7ad0cde..45fdc28 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -7,6 +7,12 @@
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
+ * src/include/catalog/pg_policy.h
+ *
+ * NOTES
+ *	  The Catalog.pm module reads this file and derives schema
+ *	  information.
+ *
  *-------------------------------------------------------------------------
  */
 #ifndef PG_POLICY_H
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 43e24d2..5b5a1c0 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -30,7 +30,9 @@
 # "convert srctypename to desttypename" for cast functions
 # "less-equal-greater" for B-tree comparison functions
 
-# Keep the following ordered by OID so that later changes can be made easier.
+# Once upon a time these entries were ordered by OID.  Lately it's often
+# been the custom to insert new entries adjacent to related older entries.
+# Try to do one or the other though, don't just insert entries at random.
 
 # OIDS 1 - 99
 
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index 3762b3e..d8e16cc 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -35,7 +35,7 @@ CATALOG(pg_range,3541,RangeRelationId) BKI_WITHOUT_OIDS
 	Oid			rngsubtype BKI_LOOKUP(pg_type);
 
 	/* collation for this range type, or 0 */
-	Oid			rngcollation;
+	Oid			rngcollation BKI_DEFAULT(0);
 
 	/* subtype's btree opclass */
 	Oid			rngsubopc BKI_LOOKUP(pg_opclass);
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 9f4dcb9..0f8508c 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -11,7 +11,6 @@
  * for example, there's not much value in creating an explicit dependency
  * from a relation to its database.  Currently, only dependencies on roles
  * are explicitly stored in pg_shdepend.
-
  *
  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index 30d6868..c0ab74b 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -126,6 +126,8 @@ CATALOG(pg_statistic,2619,StatisticRelationId) BKI_WITHOUT_OIDS
  */
 typedef FormData_pg_statistic *Form_pg_statistic;
 
+#ifdef EXPOSE_TO_CLIENT_CODE
+
 /*
  * Several statistical slot "kinds" are defined by core PostgreSQL, as
  * documented below.  Also, custom data types can define their own "kind"
@@ -255,4 +257,6 @@ typedef FormData_pg_statistic *Form_pg_statistic;
  */
 #define STATISTIC_KIND_BOUNDS_HISTOGRAM  7
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_STATISTIC_H */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 24e4bd8..5d57b81 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -58,7 +58,11 @@ CATALOG(pg_statistic_ext,3381,StatisticExtRelationId)
  */
 typedef FormData_pg_statistic_ext *Form_pg_statistic_ext;
 
+#ifdef EXPOSE_TO_CLIENT_CODE
+
 #define STATS_EXT_NDISTINCT			'd'
 #define STATS_EXT_DEPENDENCIES		'f'
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_STATISTIC_EXT_H */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index d82b262..033f5a1 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -12,9 +12,9 @@
 #ifndef PG_SUBSCRIPTION_REL_H
 #define PG_SUBSCRIPTION_REL_H
 
-#include "access/xlogdefs.h"
 #include "catalog/genbki.h"
 #include "catalog/pg_subscription_rel_d.h"
+#include "access/xlogdefs.h"
 #include "nodes/pg_list.h"
 
 /* ----------------
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index ee64bb4..7d60861 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -69,6 +69,8 @@ CATALOG(pg_trigger,2620,TriggerRelationId)
  */
 typedef FormData_pg_trigger *Form_pg_trigger;
 
+#ifdef EXPOSE_TO_CLIENT_CODE
+
 /* Bits within tgtype */
 #define TRIGGER_TYPE_ROW				(1 << 0)
 #define TRIGGER_TYPE_BEFORE				(1 << 1)
@@ -128,4 +130,6 @@ typedef FormData_pg_trigger *Form_pg_trigger;
 #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \
 	((namepointer) != (char *) NULL)
 
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
 #endif							/* PG_TRIGGER_H */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index 20b3a4b..ccaf40b 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -32,7 +32,7 @@ CATALOG(pg_ts_parser,3601,TSParserRelationId)
 	NameData	prsname;
 
 	/* name space */
-	Oid			prsnamespace;
+	Oid			prsnamespace BKI_DEFAULT(PGNSP);
 
 	/* init parsing session */
 	regproc		prsstart BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 5f5b580..5e66e02 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -32,7 +32,7 @@ CATALOG(pg_ts_template,3764,TSTemplateRelationId)
 	NameData	tmplname;
 
 	/* name space */
-	Oid			tmplnamespace;
+	Oid			tmplnamespace BKI_DEFAULT(PGNSP);
 
 	/* initialization method of dict (may be 0) */
 	regproc		tmplinit BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index a430c79..3c2c813 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -12,20 +12,21 @@
 
 [
 
-# Keep the following ordered by OID so that later changes can be made more
-# easily.
-
 # For types used in the system catalogs, make sure the values here match
 # TypInfo[] in bootstrap.c.
 
-# The defined symbols for pg_type OIDs are generated by genbki.pl
+# OID symbol macro names for pg_type OIDs are generated by genbki.pl
 # according to the following rule, so you don't need to specify them
 # here:
 #  foo_bar  ->  FOO_BAROID
 # _foo_bar  ->  FOO_BARARRAYOID
 #
-# The only symbols in this file are ones that don't match this rule, and
-# are grandfathered in.
+# The only oid_symbol entries in this file are for names that don't match
+# this rule, and are grandfathered in.
+
+# Once upon a time these entries were ordered by OID.  Lately it's often
+# been the custom to insert new entries adjacent to related older entries.
+# Try to do one or the other though, don't just insert entries at random.
 
 # OIDS 1 - 99
 
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 695ed4e..4bcfac9 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -92,7 +92,7 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
 	/* delimiter for arrays of this type */
 	char		typdelim BKI_DEFAULT("\054");
 
-	/* 0 if not a composite type */
+	/* associated pg_class OID if a composite type, else 0 */
 	Oid			typrelid BKI_DEFAULT(0);
 
 	/*
@@ -246,7 +246,7 @@ typedef FormData_pg_type *Form_pg_type;
 #ifdef EXPOSE_TO_CLIENT_CODE
 
 /*
- * macros
+ * macros for values of poor-mans-enumerated-type columns
  */
 #define  TYPTYPE_BASE		'b' /* base type (ordinary scalar type) */
 #define  TYPTYPE_COMPOSITE	'c' /* composite (e.g., table's rowtype) */
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index f748a45..cb7a020 100644
--- a/src/include/catalog/reformat_dat_file.pl
+++ b/src/include/catalog/reformat_dat_file.pl
@@ -13,7 +13,7 @@
 # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# /src/include/catalog/reformat_dat_file.pl
+# src/include/catalog/reformat_dat_file.pl
 #
 #----------------------------------------------------------------------
 
#86Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#85)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

Oh, one more thing: looking again at the contents of pg_proc.dat,
I find myself annoyed at the need to specify pronargs. That's
entirely derivable from proargtypes, and if we did so, we'd get
down to this for the first few pg_proc entries:

{ oid => '1242', descr => 'I/O',
proname => 'boolin', prorettype => 'bool', proargtypes => 'cstring',
prosrc => 'boolin' },
{ oid => '1243', descr => 'I/O',
proname => 'boolout', prorettype => 'cstring', proargtypes => 'bool',
prosrc => 'boolout' },
{ oid => '1244', descr => 'I/O',
proname => 'byteain', prorettype => 'bytea', proargtypes => 'cstring',
prosrc => 'byteain' },

which seems pretty close to the minimum amount of stuff you could expect
to need to write.

I recall that this and some other data compression methods were on the
table awhile back, and I expressed doubt about putting very much magic
knowledge in genbki.pl, but this case seems like a no-brainer. genbki
can always get the right answer, and expecting people to do it just
creates another way to make a mistake.

So attached is an incremental patch to do that. I had to adjust
AddDefaultValues's argument list to tell it the catalog name,
and once I did that, I saw that the API arrangement whereby the
caller throws error was just useless complexity, so I got rid of it.

regards, tom lane

Attachments:

remove-pronargs.patchtext/x-diff; charset=us-ascii; name=remove-pronargs.patchDownload
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 70aea89..3b3bb6b 100644
*** a/src/backend/catalog/Catalog.pm
--- b/src/backend/catalog/Catalog.pm
*************** sub ParseData
*** 254,265 ****
  				}
  
  				# Expand tuples to their full representation.
! 				my $error = AddDefaultValues($hash_ref, $schema);
! 				if ($error)
! 				{
! 					print "Failed to form full tuple for $catname\n";
! 					die $error;
! 				}
  			}
  			else
  			{
--- 254,260 ----
  				}
  
  				# Expand tuples to their full representation.
! 				AddDefaultValues($hash_ref, $schema, $catname);
  			}
  			else
  			{
*************** sub ParseData
*** 289,302 ****
  	return $data;
  }
  
! # Fill in default values of a record using the given schema. It's the
! # caller's responsibility to specify other values beforehand.
! # If we fail to fill all fields, return a nonempty error message.
  sub AddDefaultValues
  {
! 	my ($row, $schema) = @_;
  	my @missing_fields;
- 	my $msg;
  
  	foreach my $column (@$schema)
  	{
--- 284,295 ----
  	return $data;
  }
  
! # Fill in default values of a record using the given schema.
! # It's the caller's responsibility to specify other values beforehand.
  sub AddDefaultValues
  {
! 	my ($row, $schema, $catname) = @_;
  	my @missing_fields;
  
  	foreach my $column (@$schema)
  	{
*************** sub AddDefaultValues
*** 311,316 ****
--- 304,316 ----
  		{
  			$row->{$attname} = $column->{default};
  		}
+ 		elsif ($catname eq 'pg_proc' && $attname eq 'pronargs' &&
+ 			   defined($row->{proargtypes}))
+ 		{
+ 			# pg_proc.pronargs can be derived from proargtypes.
+ 			my @proargtypes = split /\s+/, $row->{proargtypes};
+ 			$row->{$attname} = scalar(@proargtypes);
+ 		}
  		else
  		{
  			# Failed to find a value.
*************** sub AddDefaultValues
*** 320,333 ****
  
  	if (@missing_fields)
  	{
! 		$msg = "Missing values for: " . join(', ', @missing_fields);
! 		$msg .= "\nShowing other values for context:\n";
  		while (my($key, $value) = each %$row)
  		{
  			$msg .= "$key => $value, ";
  		}
  	}
- 	return $msg;
  }
  
  # Rename temporary files to final names.
--- 320,334 ----
  
  	if (@missing_fields)
  	{
! 		my $msg = "Failed to form full tuple for $catname\n";
! 		$msg .= "Missing values for: " . join(', ', @missing_fields);
! 		$msg .= "\nOther values for row:\n";
  		while (my($key, $value) = each %$row)
  		{
  			$msg .= "$key => $value, ";
  		}
+ 		die $msg;
  	}
  }
  
  # Rename temporary files to final names.
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index d4c2ddf..3512952 100644
*** a/src/backend/catalog/genbki.pl
--- b/src/backend/catalog/genbki.pl
*************** sub morph_row_for_pgattr
*** 641,651 ****
  		$row->{attnotnull} = 'f';
  	}
  
! 	my $error = Catalog::AddDefaultValues($row, $pgattr_schema);
! 	if ($error)
! 	{
! 		die "Failed to form full tuple for pg_attribute: ", $error;
! 	}
  }
  
  # Write an entry to postgres.bki. Adding quotes here allows us to keep
--- 641,647 ----
  		$row->{attnotnull} = 'f';
  	}
  
! 	Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute');
  }
  
  # Write an entry to postgres.bki. Adding quotes here allows us to keep
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 2c42b5c..b25546e 100644
*** a/src/include/catalog/pg_proc.h
--- b/src/include/catalog/pg_proc.h
*************** CATALOG(pg_proc,1255,ProcedureRelationId
*** 73,78 ****
--- 73,79 ----
  	char		proparallel BKI_DEFAULT(s);
  
  	/* number of arguments */
+ 	/* Note: need not be given in pg_proc.dat; genbki.pl will compute it */
  	int16		pronargs;
  
  	/* number of arguments with defaults */
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index b20d236..bbceb16 100644
*** a/src/include/catalog/reformat_dat_file.pl
--- b/src/include/catalog/reformat_dat_file.pl
*************** sub strip_default_values
*** 201,206 ****
--- 201,213 ----
  		{
  			delete $row->{$attname};
  		}
+ 
+ 		# Also delete pg_proc.pronargs, since that can be recomputed.
+ 		if ($catname eq 'pg_proc' && $attname eq 'pronargs' &&
+ 			defined($row->{proargtypes}))
+ 		{
+ 			delete $row->{$attname};
+ 		}
  	}
  }
  
#87John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#85)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I don't think there's any great need to incorporate this into your patch
set. As far as I'm concerned, v14 is ready as-is, and I'll just apply
this over the top of it. (Note that I'll probably smash the whole thing
to one commit when the time comes.)

Glad to hear it. A couple recent commits added #define symbols to
headers, which broke the patchset, so I've attached v15, diff'd
against 4f813c7203e. Commit 9fdb675fc added a symbol to pg_opfamily.h
where there were none before, so I went ahead and wrapped it with an
EXPOSE_TO_CLIENT_CODE macro.

All your additional patches apply still apply over it. Your SGML patch
can only apply if my doc patch is not applied, but I've included it
anyway for the sake of no surprises.

I'll check back in 24 hours to see if everything still applies.

-John Naylor

Attachments:

v15-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v15-bootstrap-data-conversion.tar.gzDownload
�(`�Z����8�(~~M�
mO�$4�`�NO�:�����@��nvr�mOf0t:g���~�J�-?0�d����=|f: �J��R�T*}���J�R/�����)�O��7�K��7-Y���x������_��K������F��������_�T�f�Raz�h�z���Y���������Um�Y�KsM��{�e�m���TX�����{�g�W�M�f��J�V���F�����j�[U�Yw�F����Ko����MV�������G4'��0F��|�x��o����p?5�I�������K��
�����3_@a��t�Do�
V�4+���j��c-O�?n:���d�4� M���i2A���?=83����l��@6���0U���u�,@��,6q��������2�3�A��7;\�Gs��R��c#h�37��7�_��cgp���3}r��	�y������s,A���4��;��e����=6s������]~��g����Lh1b�vNV6t{�D������������Y����c��3f�h|�1{�=s����4G@�X8���|�MC�oy?����Y���n�X����P�����n~rx�7�{��j�.���C���;����5����K�	���2��-a}/�������&
��;8$�;h&b�!����"�^f8��`���<�=������?
��q.�����cKx�����LX��FL���B7�<L���8*����OMk�������	aR�h�e�����~����A�nx}wz��^
�N���b�4A'0�3����k4����c�d�X���!�������9�>> wi���)��|�>A��P}��>u�M�g�J��%�'!����KdJ������|�=�v���3M��G�E��)=}��>�;��@���o����O�_n��"s)�����g�g�L&aQ�8��J�O6u�9Mzl����1l����L��s���$
���aA��,,(����9_\����P�l	#��l��s�'���	�����A��W���������'�BO�6�L���C����N�xl�����T�����A�^�Yoy(�Ls�ev�[��������y\������K�������Z��x<�_x���8�r������W�l�o��8I�� ��K��>���%�2�;���'�_g�"/72�O���Q��m('k�%�P8.�Y���E�h�bz1�����5�P��J�u��� ���f������XSBlq||Z���N��%P��@�R�e�D������������x1I��RoJ�5��a~Hm&(Y8��%������s�F�c�*�,8M�QV�ajIo�RJ��������Xi��
.�Q���
��U�����g�|��:��y"����k���0h`��L�>�zC�4i%'��'�b�����dBB49@��Dl�jV�(�42�
������<��h�L?6����
�������%�����f��3a��3��Z�f���9��TJ��G���<>#�������x6D��������-
~Y:��4��#hX�����9�S��r]0�6�%*z�>f���%�������.�L��������'�#��4��y���
��G���HN)x'w�b������M+E*��o�*�P����7����H�OC-E��Tcs�N��(����a��}�c�T�y����3�O�K|���#���ZR�<Ro�I�<NIFv[��wg�
�������?N�}��@����y
�^f{U�w�tG�dk��;���Y�Y�����!u�,��`�2�������B�E�_�VR"l�Q��h���Fi+m��Q
*��Y�!�O������K�498t����wt�>�ic�~��
�M��6�m�J���
�p����U0M��(�4O�9�+�4Y1��l\RV�p����n&������&K�5��b�;��������N�2X�.����`>�?[�o�"~IZ'�j�IC@�4�f���L+�\�b�{��f����b��ls97n��5*h_r�h��X�X�Ra�3qxJ���o��1+�`������h��O� Y��n����SoT�m��J�VC�S��>�C�?�RM��m�_�a�
���}vp�p�Pr~�a��4�[�tJ�A���n8rP���vi��d����� ���OFcf2�gO&�����vBs�p ��2 )���|n�\.�2����N���E���~��h���Y�?8��- /}[�}9�|X�X��i�>L7����R�x�9��$��=_�$�.a��&������H��2�z�1�S�(Ni"��^�@����~�b�V���C
�<��� ��`z��=����������������.o
��
bG����g���s����ex�z�tg��L��-���p���1n��s����m���������V:�yL��0��j�O�V3�O�n�,�/3?��d3�������-�Z�Xx(��'�r��hbk�L��~q�����������A�dqN�3��;����k���!��_�/�o>\_�r���xN��|����l�����q()����y�x:X�	��Z2�{�1��*��G��_f���i �D]x�a���O�p�8e4�"@�����#$%��-{��+0������7�#�(�K+�!��d��L�F&������#�O���P�S��X��F>���$'0�����X�_6����,&�=T',������;�z�?-��Wv�]��}l;��g+X������������0���������2��"9�>8�������������+VF���5NX2
���*m��R����%�0A��d��h��d��4�:j����F�
�����zv���X��2t]Q9���YL���lEG��D��|�Q1(@�
2
�-Y{���JEy��
(v�01b�H]X�d���T�<{��Nt��M��hfA���?��D��s�X�/+E[���S�QD��m�v�rP9� 4�z�i��V��6GN[��k�)(��o
�V���@���8mn����2UN����1�I	6����Q������Z��x[���b5+�FA�~` �j��"�1�R�n�{>�*�7}b���o��mj�Z��L��e����>���3�1���/rG^$�;��a��~:��B�?��&���L����h�����2�1(��=P���U��~w����|���
T���'H&�u�
�_^aq�875�;��Vm�����}�U|_��?p������
`�����i�����s�7�������
�o_�y�����M1�M��X��9��|������G�%t<<\��xp����'��K�����S��m%���w�j��,�������g�,&O��4�3������2�W�����9�>vE�x�og�x);5���`H�X�m2y��M<@�����
:����_~Yw?v���cQD��Ju`;���D����l{�8��+��)��X)�c����w&�O�XKn�%�#<���~�w�.�
M$�������+t��X�zs��>b;���A����������4N�P�������Q����x���%�5A`<]����;�L3��1�2�3�3�;2i_����oV�C������*(�����xe*�i��{z��#�w��#�����X����|�-sI^v���Vk��x(���sl��	�Uc��7.������H.@u&>o����������uA�SL�����w�UZ�	��"\�7���3'q�M��+iw��IpU��(��n������z8�;7��?�a���vxo��`���
`��L��]�{����8�X�t��$�
j}q�?���?��{g�R���J�!���/�L
�c�����9���R���@
�����F�qz[h��C��p/&�Y.�w#*��0�|-z��e��p_�tDjl����C��sw�9�_���0I(k�<=�USa#L�Xc�����������qA�V���+4Y�WK[.����D���r�NiB�E�L�qw�����GT]P����5��5[�
��
]U�Z��SH���
��WT��;n-:!������tb3{J�]���O�����#���Cc�46��O�7�����2����J���q�@7����0��S�=���O�L�������p�h-���L�L����@�(�2��B��X8�|�X��&'��a�y��>^h��h���8 m�4�93�g���j�z��7
�j�6o3�� ������h���}��;���tBgj���������Ycy�)8k:8�����v��m�%]���7uL�g�Pu/r�"��9ji@�t�a��M���re�'��
�h��\�R���Xo����Zh�Lj?x���K	�%�9l{Z~�@no�.���Tw�V�Rp�Er��pd��|s�%e�FP�ys�^�r�C�s����[��Z�1~��Yq	%B���n�YQ�y���	<�\�O������77Z�Z@��ZM��4�^d��QQ7��e��*��$P�~�k��w��S���8j%��R���nHh�N�1��b��4���L-�;���U�������Q��N�-?���mF/"�8�N�~�7��!OW%GhXS��'�>b����$�����{�~���,��y�0z�������h'
$�����8��
_��gP�.t���hhF�-��J0����o�<!�M)J)����m���pyq�*Q��0��+�<	��~�����
S����L���pk�w��
�t��'����D��<��R��z]�A�TXh�fJ��2�,��;������-�}@+�B�F�w���h�{T�t������1*�O��9���|>�����?�z��8���7��.�Ti?��G���T/�g��1����D���o8.V3
�i�p�i��Y\�h���`���������ew����C��3��]r�Y^���>������xQ=�����Y�l����5���,�`���D���B�����OD�/�8S�V	���_����f�=��\
�C�)��E���(���g�z�6h�w��H!)���$��m�nS�T�bf
;�,��:��/��%/�Oq�1�5c��R�\,
Q�k���GN��z��X�Q��8$-�Y��[Q�����T��e�Z=����g��/����*2zi\7���L�'4��ubo�J2 �����.��	2Uw8�/�%����5���J�8���L��8j�7e�be�����%��o���c�p'	��m���F�HIgJ�����_�
��e�_����c�����@���>��%h���z�TX�Q=��g�~�p���0�[�U�����m����+�@r����{ ]�	�Ge$O�a�qh�t	���J���6�	���g�y�v�>�zp��7\��d��n��
����,p�(����������z�J�
�t��)m���<�	+0#�^p����`q�h�
�MM�����?�Q�	�y,ErS�(E���
�&f6���<���sV�n�5�Q.��f�2���bXo�
a�&��_%k(M�7���>7�H��.�C���y(I
>��R7�;�K��;�4������A�tK\�a�K���5�����D�C:P��&,������<�N2TJ�U��]� ��=��>�7�g�N�����X�#���v�Q�O@���/�9�4��j=��h*d�o5�FT�X����kM���%k��w��?sMnB���\E��S�@�����}��h����C���!<���O!��7t����)������o��N�{�cE:��y�w�����x�@�	1�gv�|8:0��=3������4f�	l����<���!y�@���b���z����~v�vF���r%+�h�G������w�qg���D�k�162_�.t`RX(`Z�P��Jz����
�
FNP���U����]b3���q�m�����M6~B5d�t4�����T2)�k^�j��A^'*�T���A���"Al�?n�U�"����OL��Lc�lix]�ip�D�r����Q"/��5*
��>]*�~�~]*�2;XN����>?h��g��p]T\������.��!�d�5�j�m:�����M���;���!���G<�?�E�V����'=
Y*�7����Q$��I�K�2�s/�`(Va[�XK��A��_�������]4j�HQ��L����~���~<�
��G�HX3�Z�'��Wo�l6(�q}�Y�;tn�f�.m�"l��|�x5$���G�hW
{T�`8����j�~T(���|�h�����q�M"����.��Ka������a����)3R���A�r7�{���n�w��L=NN�a���.@��QI*�����a*��_Ln���!/C
n:��\u+�2�O��jG��Gc�l�Q'��;�3�T��Pl<��K���QH;3T'�|�>>>�zUG	������zD,T�#Uh%�g�/��������q}������\_|A�/f�\�K��#4�I���?>��e0[q-��^m��X�:>+��\����mE�|�M�-Qm����������H��g�0;��W��
|T!_��Z����jSk��v�-�R���
��R�J��C�4�"���;�jUY!�
)`@R9O��H1��,�.#"��b]�]�!��dr�(5A�-�
�.]K


�3y�����Q�"T��b��I��Z�{u
��#�u�=��(�L����	
�������R����@M�������/���?��������L�o��e������X�f]]��������]c)�=�
��Co������l���z���@"�uh��jx���c�.�x��zv�~�`���~O�lw�.)����S-
�f�����[���\v�=�
���@i�ER��Os�����PWv�7�7"�5���NmB�t�����7\l���@
��o
8:�����<b���r���3�o���]d,��qo�$D������L�������>�(����a�.`���l�Zj�kv$����3���s{�2�P��P�F,�r9[M��kda#HX�n4��T�L�������T��� �Q!0�:[���'�T�-"��Rh0��)��UGC��V��Z�nhF5�������_�A%��xq�o#�+��"�w��B��_6��GR!�;7���CMNI���X|���Jb�e����m��u�V�a2EXF��]�\��1����!��f�r�J��j0qN�[�����'�1�\��s��O#�F�7]�q�6�WE�P�����.X�FeU$�R'�4��������!T�h��GxH'8�w�������8BJi�_�bq��	����A.Z�tmV��7.)��h�D�/4W�"�z�[6�������#�~v�Z,����(`!P�	--�
sB��s^7da��N�O%��5|��Q��jR�-�	L�rv�*�-��W<�X���t��7[�6�7��p3s��Q7�FI��|�v��������E�L��k�z�-K��E���eh>&k�>e����N`���!X�����p��������0.b���'f�������	Q���O���3��R��k�Wv�R������\Y�[����6gt��U�<����EG������������?o�E�������������P��� ����4M�*��#]7���C�T$�s�T0: h�
����,����Dmw���XD�8�a�}�j�;)��)~l��+lYvP��`�9&�kt5OZB�a:����v�W�*7G�r	��Vuw`�Z��,�/��g��������$��k{Kp�M&�����u&�`cyuP
�14���qC'�@
�n�4m�Z�U�Sj�F���-V|��o�4�bgr;V"����*S���Xy�g����4*��/����{7?x��Q�+�!\��8��
k+�D,
q��H���J����pxPmh����T���S�,uA�	�����d���#�:��|L)m����.�&�����
~�z��t��IJ�(���/��O)HE/��eGO ��{���HI�2JMb�n:5�2.��mGoY��IH"�����q�� �%��E}*��:A���w��g����|��]��������.EU��8_����D���������=j�.��=���~�M<R�R�xE����n��h�{��(��O/v��u.]rs�!�E������H3B*���WI:�����M0�.%`]<:^Px����sx.���uwM���z��}2h�}�:�.�~����*MQM%��K)��2�m��Q��)�V�6�)�3P$�F
��XQ��<���@Y������E������=n7����c$��������z=����'k{��b�?�z�_�;��$��+�I����?�0�aa�:�a���o�g�)���1:S��TpQ,���,qj�
n����v�����*��#��:�����U����o���y������&F�F�2��v{l�mk3�SC"|:�Z|��s������W8�P��f=�>"�'�#���E5`��y�h�+�d�(���,gT������0���[���T�|�q��tz�2�ay�6/���'�aG�Z���94��K��DX!�g�T�����#���)�a�cu+�P�9t2p�'���C�G[n�	�r��p��y��%�-�}ib����;/�GT��J4%�a[�=�-*��>��&�@.l�+�Q��
�b�K�5�5�$�nP����� ��\�x3��y�������r�K���p���.4��}'z����<1s���bX/�),zWcj�s�v��x�zc��j&�����73a�iN�e��7�M�L�(0�c|L������.]��jS�p���G�h�>otX>���P��jJ@�^�5e������F��fh�S���K�����yR�}������|���+����	���4O�9��(��8�b���y�'q��s��
��bg$_��L���b�{��*�/��E�U�����Y��"�����7�/���h~d]�#���%�6����;L_,�@bY�`��l��e�m5F���e)�f��$U��.���Y�n��:����yg���7�l^��W�X�T+Cm��X&�������bW��s���aL_�$�HFW�`
S1�,x�*�tG"��������T0r�\}�Fh�YH�j���ZJ)l���r��Px�c�.}g2&q�I����,��P����@�zEh����KB9���^cr$���S�W���C���,��R��b�1���K�Q@dK��
����@
�\�,��+�O�z���?�����p����������5�0}�������R�:�.� ���4�~�sv�S�7���C�^V�����@\F�Cn�8���P5��u�Q.���0�l���g�i�w����f��PnMU��v�����Yk�*�����������C��������U/D�O���y����
������o��=s�=4I1���j)�C�!CDL^��,�� �,X3��
�|�bG��>��z5����(��K�����8��=��p��N�S6B�~����2�V��9:�aF=�8�
�2����W2�h��0cp���Up��KU��J.�����6��{eH��q�Zfs�����e�+�����A������?)���fw���sJo����o+��E���$2����0��H$k�(C����y�q�x�`K���
q'��k���8���_A�skz��x�D"`_�%���{s��w��;_-`���DG	b���O?��N ���.���r���n�y�������'�P���2�|��c�+Y��r5�8�O�C�t��^J���_�lW�&���W��r��_�m�}Q��uY(��e��w����3[|��Eq�_����R�Ci[�4�6X���c�9��*�
�V@���J��H������2��)ui��r�l+yo��c��-h5!{;2]5.}�m��`�D��
�F]�%d���,�@�����������H������D?]O�D��m}�0�e�1��y�S9�H�y)��qA0����xE�����?qD�
@���>�F�8q�H��)9Z*B�>�#lX,]�
�����%\���_������Xt����D(nu�z���:Zan�C���y�'��dbB��2I|���A�I�H�Z��5&Zg�������$���&��J�{������}|�mVV���8�ld9��V���)N?��~�%�S<�G�d���'x����L�y������n�� w}q�
a���%p
���	sf��Y/$�" ���t`�:�h�N�4H�1P2!d��������	-<��GB�4i��[t ���A���
�J�F�U��iE�g^���!_���7���s�S������&�w��Cavh?��
��"u�|��:x�����8�Vy�=2$k�>��QN�oU�p��J�w�H�3��.�������BV�2��U
��v�`�%M���*�h�k��g�j���R���
in�9Qo����DW�QyYn���&IV�).YM�����7;������"�lFRe{����*m�2TI�Y��t�����md�H�\�h[V�Z.[5�2j�s�'��Q0�$�T>=E������#�\[B$�[Hzf�n���?��=����m�
��g��l�����W�����A0�v^������.;&��e�Y���5b�o��<�ok�J���X'`��#�y�2f�yD�jNR��i��p�����({�;��ys�E�������J�
��I���p0��/��H�4���Fi�%j�n�F���f��}�ngJY���v�9�-K��Gti1�@��
�	�:x������
��{{�j���<����;���\�<� �k ��su7D�����
������@�{�z����#���u#���{�1���_��;�XB_����U���]��o��3��A�@�V��Y�5�2�e�����z��������q��T�|������	�����$����`��Z�U�R���j4b��V�\�p3n\@LhR�G��A�E��E���J�0�E�SI�����'�A���l��f�=��\���s qx�Yo�wqb��@����TqL8Ba\L��Z���Dm����To�����T����z���*�����u�
tKP���zW�1ce�s�~�t��Xq\�������1�$�w�D}�*���r�0�z�����i�\.-�]m�;n�(�e��G
�5G
�����r�$��@���&���Qw���Sf+��z5��fMSu���
v�JK6r3�D��4\G�p���>fb��A(����$&���q�Ut?(���O�3�p��'�$��U������me�U�o��P�����!�,lw��i�1�����j�%-_4��r\�H{��"/X�����[3P��o.z�����p�>�
*MnA����^��@�P���V�^.��F�j��	TM�PU������yz}��|g�*+�'`%�Y�*��&��c�*l�T�i�S�"yZ
�BL�a	E�}�K3	�O��xW�aba�^k'}�����O!���d��r*��\�Q�o
i�v��f�4�����+������ ���[2,��A�������B�N?�q���}�{w
��3eR�������n����d��+��]+����|NZ<D�������
�����������I���x����'	s5I
(	������djiX�-&�6���$���7.j�wD�K&Ot�r5s_9o��!9>j�����N�,�^I*T�g��`�$�vB�D<���hWo�L�������,������O������hd(?���q7�����9<�p����������xH���QC�,Ir��H�
� �(��f%�L�u���������&QB
Q�������x��HT�/���\�T����s����+.�S�����������i�=&��I�'Q~4O����&����j_��{#!�8�W���dJ39'*++�"�(���d����o@�y�7�6���!�<;��6��6���m��7����
�&�@z���3'���=H���S��L�FOL���n�Z1����������l�'E�j�F��(Qx��m*nk����c�a�L���=��cF.�]uy�/.%^d3DK�)Xd��b%��\��E{6�����7!���6�;<����%^��:qP!{���n���rel�-=�m%�,[%�y�yR ZR�OO�@����L��*�����Q�^!�BP�~e��/��eZNj�?3�����L25Qo0Z��;b
�%�F}(1�%�h7���1����u���4��f�D��~��#�E,�-^���N�����xF����3H�h���$F�gY�/���KL���l
71i�r������$S��`B�kT�7�e�j��8�$�([�D@7�C�y�sz��>V�O�	�_@�	����cM��e�
"
V
r���X���3rX��G�{<�*(�i�ADa�b�&\
������r���0�$:��(��a������K�S��x
�����Zd�@o4���k����x�V�D:��@�j������|zq���w����fH��	�N���3�f���DX<�����e�b�4-]�`+�qU��|�@�
M@���{U�����7���}[y59E�4����\3k$vY�F����O
�G�>����lg�t���"��|�v�������W
Hn�%�e\.e�<KH�D(���wM4��@$�������lS�d����T��g��H��-�h����+9���q��~��9g�J�9y/�	���x��	V�#�����RkZ��\_N��{"BQ��	�&����m�,�K'n��6RL�;����|*��0uwn�v[��]��j��bg�/��i7�&��6+m�9��X`�d`�f;��{�q�eXA�H@�A�f��/3�X�&�V�F>+V��7��(��z"<b�0=���ZED�G hd�a��N���r�7�x����`8
���;�.(>��������w�J��!�D��+����V������v>�;}��{O!��S{PF��4��	{�q�a��J>��������}v�GT�����y��3����Z,#%���nfa.��C��g��tGPk��D���<~8�|V������b ��8(%������K=i�`������&����Y�v���jn���tf��� ��L��4[���F�|W"U4�|�n�����������M	�|56@��#%���V+����03���<-c��(<�<~H9t4���e�yL�Z+���6gp_�:�<��3����R�����O��3:f�{\�;	�Ke:�\1�v�]�me��T�z>.\�1�!�����������}��~��f�e4�	�86����7
k>~��!��x)��X��[����.��k���
��>�C~(K���q��>�PX���O1����j��g�k=��Ne 
�rw�
���A:�o+�C\y����h�
�������W.A@�+��4[�qM��������y��cx�oVPe��kz��-�\C�t�V�5��L�/>'���Q��3�*�,����H6���$��<}g������,�v[&&�\������5z�j;m=��8�*K��L�����T�V����/���n�"��r����Pk��l�,����m9�o��^��?�AK���D����/gxJ~.���������vb�,.�|�0L��}�n�����%Qdr�������]��*����H�\������=������Wv��I��vY
Kj���`Rx��v
�%+,	��A�F�L*������QK�����z&���K?weZ*��PM��:��	45��Q�l��d�e]MW~��;l��/��^xV8r�>P�5>f����&�-�X(Fx�o���>ai�`����P��)$�tX�U,�������T����)X6��n�������;�Y�U���%���O`p�H�=~�$1"����������Ci��j��\�][�.��p)�*ojc/��W������b��^���u�w���y��P2��n���:����Z#'�)x6��I�
���He���������&���l�%�M���p���#������w�U���L��Rj�?�Q�K���$o�i���_����o0����%:i�S\q��Q�}�y��!�4@^��!B����]8l����g���~�|u~U������^�������KA
@1�>kP	����'��|�r���9�_�����F��c�i�r�1��
��G|(X2���i���\�����%�U���BCb�#2.lt�����q���������2�Me<a$(�H&���yW5��+���L�z�>��]�;�\��zW�n��s!K��R�Nx��+A ����Y�C���O���#\S3YV���S����W��m��v�QDW�w�9�6Sy���~������,�
srp�L ���~M��-z<l�����a���k�5e+�p��>���'!Wsz_�j�ha�<Q��$��Bv�-�"�i�B ��'t�����*""H�]J�����r��1He�O��t� ��������J
go����U���_�*����n�,M<�)7x�5o��q�V.��f�������W��e6��H��;t��E6a[!�H�g
���R�R�H�v;�5�&
��Z�0-��BT�LB1��<�L����g�;���*M��/ N�	��@�N�y5��ZV�+@R�wl��n��z��v�bzM&����Qg�{f�rtP��$�Lx�-r��������'8����`s��	�_`�J6/�|��?����Q���i)(�{	�h4�$p��
��U�x3���r�P���f7f
l8D+)�)�)����c���v$��������o������C>��W��o�|���5+�Z�\�5-��O�d�����/�������Y�EE��s����@�g���:�b���}�Z��������AFXO{C]�=�V)��h�8W-]30�x�0m�z6�UL,vea9��"mv��;�D��������.���ug�J�T#v#����@-	���T��q������Q^���D%-E
�?�
@��sy3�I�f
\��F}	�6�|�D�-�$���4�f�����37��*��ADp�6#�7�~gx�����*��o`�������SQ�d��ObD���(%K�z�^��t4z���/��!^�o�����(��,q$�	�O�] �q��R����c���e���9�c�k�Pq����9-k���v#�{"?�Ty����m��,^o��g*f��e4U��nE����U�d�
����������kT�Q�g�����x�1ZG�������N?�C���1����_�(d�����#�s.s�)������k3*��N����&+����;�t�P�|PM��ZW�Z���������w��������|�j���������xZ��?v���Z���R�4�F|���B4��������2�v��1*zl�9e(m5�j�����j��]
���=@J������� [��j%�8��v%�u.�b��;W�@���
��U[����������A����v�#��,@�L	�AZi �pv/����	H0�J�P!S�*d���������{�$@����TL���(k�5���W�����<e+lF�L�a��r�n��v%_X1��-������\�.~�]a�U�T�8��-��6��{*�X6��c(�X�����di��n�[�H�\���e��u�%���1K��)�O�]����(��"�=�Z =�����H���->Tx!v]@�����O���3� A
��@mLb��;M���!����8�"yaE������x�j�l/j'`��h����D�"��o��Q����?�W=1*kA��V���jP�:7���0�
l��Kck��_y��j�W{�U��`�
��B6��z����e
������t��F����YWw�����R���'P��7a!�O�����!����BZj��^�I��W�B<9�u������2�����?���xSO�r�y�����`�Id���$'~���f�-(&K�:SB(P2�}S�W��U�U�Z�Q>�����	*�&���b����@S��R �.��/���\!C��a��j�� ��a�1�c��������%����3�_�F*���
ra<E��O���D&8��g��p�C��vf�p���x��s��7q�����,>�f�j��M��Xv�hp�l��P�����i�H�{������O��cV�ZdJ�u�w���5e�8���*�QP��"�o��jO�����X�#��Zh�dT@sy�p�`�odN�����x�)^�:_x��L5��`K_6�����Q�O�rjN\���k�����q�P���\_�N���w��4���.�>{c������3/)rl�D��J�Gw��P&r`�eu�@��IP��W&��i&�\J�*�G5=)%��g?��P�������� ���n�Y����e����2��ru\q*U#������������L��tg��*�����Xr1�9�jqJ�
��%}�9~Wk�����+�7��`�RZ�{�T�wy����K���)�n�`b��L��0dp9�G���kgGy��D`���e��!��,���eq���l������������%T~�c�����N����T�\�.���)g���l5�����M�
\�1jm�\n�
�Q���}Q�x��J)��R���r���'��
�~%��5m{����f��|�"Cj�%)�"������+���
v
�c�F,WK��P<V��f��(��h�[��|��p�L�-C����w�<������Ce�:�����^w�;�e��*��f��k9���mT�J�^�Qi9��IY^�����a�\��^�e^�S�n�aX���� ZrF|�����%r�b�@�Ln���o�;��\�=�)�����bs��4V��`w9�[�EJt�Eya���U�����*�������L��db	��D�}vdX�$�������a�>�'�Z|�@�4��p�j1��g���� �|<�(�A	5����[���'�����/[��e�jb	���z6�m��~���|�^ 6?��-.<,�y ��{�fj�i�Ri6��S��e�������W��e3nZ���1���@Z]�{�����d�	u��t���,Ez��3�������5R��Q��O<��h��I�LZF��9�OX]x�9�<Q��sm���(h4)6	O�S��,�n�������yL3�T����H�4�5��I~)��p��By����(��M�����[
�l������$���O�������|k<�}�U�#����0U*��X�p5GK ��������|�w���(VY=y%*���%W��@��;�����U�����ae�iC��nV���\���Z��O�U�d���M�\N��A����n�}��*�H�������O�u�����Zo�����y�����`��c��|f2�<�2�U�8On����}�5u�we�`�����J�3��+g�}�?�L��[v����WG�z��}���$S�qLQ�'���{���Y��I�x�z��0�UY\������jI����c0!���+�M������(��g=Y��'e�I��F�E$e�Ih ��������14����+�u��\��%���G����eV�#
LeL�|�*`xo1������{6?+����3v*�r{\��Q��(,���y\��n�F�Ev��y����-i/�����kI{0�/�%�Y`�0o�}^���^�.������u�>�l�i�{�8�����!Mo����.�
f�8�j�Y-�+��]��0c�F�N�`��f8���0�T�����c�;�o���d����IE�!��o����k����m$�Q�z����T)���d�����#����������#���!��������!�c�s��D�l��-j�2����0�t������2�dt�@7T*��
1HE�DD��r�c�w����Nc����m�Y!R�����4�i��G����Z%�*o��������x�}%V���[�[�E��0��+�,,��^���$�-t�PMFk|��Yw�����<�X�������%���t3=� ����]��r�Z��F��FA���(���	C�������rPY>)&�_`�)Q�b8v��8@����&3RXK�c�!	�hH����z��B�������y"��$X�O'*�c���(XY^7���;Z-������������2��p�)�v��`^�8@X�*���o�^�{����q�D`����E���������B=�@�x��L|Oc��_zSFAg���e�>�����$���v2_t�%78��Xm��]���F���C��'?p~���-G���d	�xAy����)�/J��j5q�!�ZC�B� 	��t��A�%����6	�z2�kZ+s�>�~��1��"��"{��48 ��:CZ�:���i �*��:�u4�K�8w5�g����c��a\�vud���||����QX�������������
^G3�v|��3����J��
��fFU����
|�/��
��ch]��2t���K~>�e>�Y>�������rh������g.B�)#P��Q;p��j�����~zpf��m�jqi�.X��jn�mf�����:�~��}R��2��Bt��p#R5z���{X	�Z����0A��YB4�Fv�P}&�>1K�$�������(��k���^�\w��E{��)��@�*�;�^����y1�����
����z|0����c$a�}[�G�v�\7m�n��I��-�(Vod�H��or�|�D/d�&�
��2�|����w��q�?+^���i��V&.\r��/��=�8!���K����QM�
����!za#��rb����D�(�X���z.t��Fu��5�D��@����T�w�_�N���{�����G���%A������)���Y<���f��������\���~s>�<q}<���9��;'r��;����d$����
%]eM�i�N�\k���o��)?#����t��Y������x����u����!B�/��F�y�-�TSu������jJ�u���V�=)���g���A�j-^
�d��u�Z�<����7�jUR:�i��Ee>s�?���|�*TL�
%�������Ed���*K����s��!2S�@BzcT7@�jT��Q+����&[(�������Y�L��?��i�u�;��g��O8����FE7�8�,�x@/tL��i�0E8j9�Ai
�������_�,�e����~9.Q��8r��?
pj�5F���[�r1�K�j>}�Fz\�M�ZK�����@�������>Ix�eH����`�C�*���&��@�	6���^�!��
v�\��vz�X�%�Kr����|�%��
�|\�*��Q�j9��D�A�K�������9�������O���>�i8$������rM<2��=�sy���MI�(�=�4�!E�5����0GK �����S9"�qs�4���y�4���)w����v��Z�����h�3�2��E(ag���t����P'����.z3$��,u����C�t��w{�
��|�
�B>����c�>��C ��jV#���p���*�l&V7n���������,+����Vq�*�N	V=�k$�VJ
3c\�������}2�G�Z$��h��	JDvW�&��Frsk�CS8�!����6��m=x���V�65���JG�j��V�l�F�b�{#�*�	���w��y>B��1!�xAFDt�0��9��c�2�bF���t{���ZY���;F}���+�����ge��;�_z� �B�����x`z�}n.|�s>����&f�9N2<&?��i�wg|"�-��v�L�D�����c.4Zu3��Q�d��L~�;���FT����EX�c�3�b����(7'4b�	9�+9Z:�������j%�K	����������m�zV�QW���^4�;0'�-X�K�
L%����a����\�*����{�DE�����u�������e/!�_��8�|,vC�Q��;�(�Z��)yZa">����U6�ap;#k�
y���xs�3�\-��I�`01�;��$�-�,�[��������r�bZ�z��w��6���}@�����Ra^�{�?d��.���j������0;�x�\-
m���Ou#�>	���1����|�CI|��G�s3"t.�)_��l5�fTG��G�fN+���sf�u-R�����b.���5�����x
'����cz;{i�?�U�	4Pk�gF��7� �hXxS���&?��m�f����fD���H	P�a�z��+5V4jI/��u<��K�������ne�������{�dp��DJ�����Xb��+R�����-�jT"��H���?vO���]}jrj^9��w�1�<e�/?���:���HT:8��+�?SS�<I��v��V���up}E�����//(��t�������0"
]}����>��6t5Su���Z%���������sE�V�������7T���A��)�tg�A&*��,S�*��_�����t��w%��������*k�M��OV��y�!�Y��}�dT���v�?v���j�>^�����+Q��Ns��B�RI��3�@-R_R.������������d����;{S����9�U�6"+D�T�
����k�y�������\�9����/P�������]�+5�WjT�S	��N_�Q���z!�R��]���h�`���!�p\�5�<���40�-��`wTY�#�az�Q��Ef`�������~�TH�J������.:�f��ri����.q5J����5�XF�����S�w�<���\=�����iDr���j�v4e=�O�l��Z�2�&��j��Q��zD�pn���21�"������y��J^���?v���B��r;(jV�c�����U�
]�
�w$L[���D�ye����3�bdk�xF�5���/xJk*��\	���F$9d@�Rp�.yFSawq
+K(M��8T3���R�:�����aa���*1��|Y�s�7��aD:�O�w��y�H����f��]`2��zd
9�ImdU�#����]�R��%����e�tU�D*U&�U�s?�35����-"g�0t���IU��E�����������\������;��[�Z���|��2��p2~�S�9��\n8��c��O�����nz{�#��.;77���n�*sm��7�����	?�%W���Db���Q+L"[K�q�YM��8�w�0Qc��gs��xU���g�\
��[tC]y?�B��-1)m_���G��j������l>.J��t5�:�;���5L�@���[#������at������2��c=;�P�O�~:_��H���������>���{
�����{����Kj0���>s����>����{T~��2���V��!�\~};�w��~�^����Rj���y}[������[�x~�K������j�|����r�j�2(p����_
�C�r#{�9�80����;��x�e ?��^:��i9��c�����;J1:n���*���j5��f�lX��;�0���	�;���(gq���������f��]zt�f5>�0q�{��#o�d��fl�N6�p�P�_���P4�������$�~��;7�f������%�Y�c������l�m����@M�*��+�K�q�A��Ml/nb�o+��Y��[�����������sr��m�g^z��O�������hk7�
�!=S���FV/��F��S��)*&k����%3�*���������]�������Y|�5��,�}����������e�0?������4�hN�	|�������_��4*p�{wC8xU���{���.����>��CO&�!���O�foo�L|��o�a�|��[��Hx�R*x����p�#��<��M�Q��r��l���
>O�KsT�5v�	)���Z&�Q�����l�zE�
�ueN��*��B�j�	��AK�Z���5`o�a����Hq$J����������z��\.��^��>gQ���Sat^�����z�'��A�w��9f�v���$��E���3jOP�:)�'{_CN��'M&ID"I�����$�H�
�6z��:��d��=�H�����f�ap����c�wcw�D�I�����\>eT��D���]�����_�q\E���7���y�;��c�����}�oqkY�`�_�-�O�Cc����O������l�-�[O �}�l�V1�Ql��>t;g y}X�S��'V4Q
��O������'�~���c�?�1_�!�Yh9L�m#����F����c�G�d��BE�����i�p��X������0_x�2 t*��(G��I�?H*&E����F����35���h)��>3���K�NV����J��"�DK��"�Q(�7��fK����s��t�V�^�H1T*���D[ao�V��S�7�V��i���Q[����
����-����+�1�hT�j��-��T���9��� ��8�e��vA�;5g�K&���"��/� ��a��d[�2�;��p�},������c��2�y�h�2k���I<e������Zv�������g���G9��Jk��	���z6Q�D��)	*Y��!�HVL�i�BJEE�&�9+�`yKh�AVp����
��+u��n$����S5�0�D�R[�����HQ�4q+zvK������O��������@����N'����M�1��A�k��G��E!���xNb�$�~1�q?��L�(-�=�A����V�2��x��Rh�E/�o�������LWs����!�i4�h!�l�(����T���4=�1������;�bgs��7t���N������'�2���i3��c�!�l��~�,� ���-1:�����z��{
�:�>�w�%��KD�&r�p�6��e��r�aV[�Z��,��I��Jv�>V#6_8w��9��;y���.�Y���������_���/Kg1�Y�N_�H.������@?�@wo^,�r?%%��V���Mv������9�z�7��Z��8;���:�A���@���BdC�<�+�FJm��GGX�OP��m�_�_������RY:�b�r���(h�50Q#��w��41�GN��`fHM��[<����H6m5��;��1�;�����s,�&����r|�:mdn_��#1F����c�b�!�^��d����k��<(������5h�
#�N��}��,���������^/U*�j�#�f.	9Z���/-�j�%�)�hgU�c��m���F��_�Y�������Z��U�Ro6�:�F�Z�7V�WuZ��P@S~�fYp��ygX�����{��?r�q�n�kv[��5���m���F�7*�J�V�Z��b��>`C�7Y�rB�1�s������+�i���o����p?5�I����������Wc
��/0�\����j�D��bs+z���������q���� M�h"i��.8i��i�lx��Oc�j>�G1�v�H��8�����1s8s�0g��rO�����M���+��,�U����@��S��	=�A
�*�e<�_x�
d�4��tZ.��x���Gzy��8����f�#�G��o��K��3�m6]M�.sg��R�>��nj>1�q�03��x�;i2V��C�A9���5���NA�xt'�����
���+���������3�PL�G�jI0�K�r�xn	�������c�0_w���3h�Ws�'H�:G����F3��Y17v��,{�YW"�QB�7x��O�;$i��M*� ���\���Q�	h��_?,0,�en�V�I`�������b���g= ����-|���>$G����'��O)���n�F��B�5k���7��Q�e�){���b����*�L��@�.g��0�y��D�HKZ)����/�����/�',~��[�$<����x�,#69���/N����h��E!���r���	�Z��ajfG���u�t�[�Z��H����D�"e�����{G���>���>��s'��.��4�_\��z����B`?8��9���wyS �=>>��;�#�w���}���n.#la�Q���bq���D`��Y&0��a��;��#L��[���t���(�(a-7��M�Q�����c���k��>�I6l���s
P.��K�/����4�xh.[<a���OM����!#�>��.=��,J{P��B�*J
Qs`U8�oD=P	�p�O4?4P�*��KH���-��[�����X�2�U�XX�r�q��R���]�w	���Q���~����d	Ue��--7��W��2(��(-��Z�.B&4�Z�{d��F��d�,��y�(�Y���--R�3{J={9a:��PuC�iEI�}�)d��|M��c��nIHs����{H��#�%��Z���z�i�~��1����W ��������H����s�ZY�[6�=L�=�a���`���7�
�Z-\�~	4tW��;��o"� +���+	��� ������56o��SFG�1�Af���O��S
�0����Y) [�S���b����%H�n�1X�M?>T���p���)��`o~�b��S��X��%�I����n��O�-}�v��yB��3��%���In�
,���Gp>r
���V���c�����OAD�]�4��3���rJ�?(>����&~���'|�q�p���%o��D$��f���6�N��8|z.M��,N��l5A���5^���p�v�D�PD��t)�&3��f�nI�l=-�v*�j�B�*�_������&���g
�E'.�������g*y��;Ct�]��f����RD�>���w���|^;�������Y��R������_X9�Bf�z�h�w��I��q��(�����@m|-��WD���f�L�'�V+UM�*r���{�AA�7i������3��X�B{���h<.��u��9���[�a�����<5:��u ����AW".���?��KS�5�$]�k1'/'��;���D�nj�;�Gn�c\�A� \�tQ���H�p����PV/�����6�L�����_y}��Yju�ZiZu\O~�V/���1,�[#������;�-\R`oQ�����=������;:��Q���A05h(�-�4��* <��>J\ j:7aG&	o`3�f����t�+�+�n���ztZ,��G?N:�D��b���������"�BK��	����������,�I�*O��T�;��&��A���8���/����C���r�@Nq�'�Q�������k���&9��K���e��������qd{��������/�$���ox'�;��OKjA_Kj�[2f2���9K����Lr��	�]u���S���=�j�n�����N����=�/ �ELi���W���,�����T��Gn�9�d��"�&O=����_U��N��_���FCX��j����W���g�����d��������m��'&�W���M���1������D}������1I�X~U�����Q9�p�����o�<�X��P|Lh}����~P���O(����8+ad6kX�U���E�S��_x�5s@�R4G#���E�c�^\.,FT :��.����t���J������0f�O�{ ��Y�������L��0�������*(�}�!�T�|���G���d	�Ly�Q�0�$���: �
ov�+��/p����#3?�0���^��9{T�������`�~3*�^��h��X�(H�+KP��Y|$�o�!�#�� ��������/<�k���4��L��Bx�bq��#8r=������,@�*B��Q�N�V�_�]�r��>
��rO1/�����UP�����y7-49�^S(;���_g/B�(s`��Y�Z����o�����9�X5��'�%EK`�X������I<X��������[j��>�%t�g�Z(�����|gW�.�8(�i�{��Gq�>,�/��XsOP����d?���k�a���3�����"^�0JrY���R&�v�ma�]�����G��![O
^�+%����bNp�� �`���\[���8c���c����I�f���+���-�B�����z�/��ou�[�H*%�R���~!1��sh��5!>�'�X�O`�j������\�������e���w&�/��/�=�����J4���E����I�t^�Dq����[c@�x���� <K�Rc~�i�����gH�-[T����M��F�e;�i��"����"z���5�	r���g�n���cF�D�?"W�5-^�����$�;I��!��z)j�
9�Mg�!1�2��"�CJ��#�I-������[���a��<q���W�R��$`����P��I��:�K�>�p��x@� ��O�Q�@b���T���e��H����>X�hvm�R!0�Q�,K��N���{F����!�{�#�����[�a����W��q�T���
��2b�����AgTt������sW�`�~�����C��l�]�������_j����>��!�F4�fD]V�$7��U�����R}L/��8�;�Q��Q� ��Y=�PH:PT�X4	��/�u�g�SX:A[t��~�_9$a�����>����'t�d������*�����R$��m�E]�k����L�?����_a�)����,�}I>�r���}��;�,���f�G�b$K�iy�}�N�U0����&�O�����+{kzu��c
�}*�:M_[bT��G������G�`H�����]��oL�(�Ym���u���4��XE�^���;�S�I��1�	����.vXQ���"��<tJ�����_y+�:m�z��u�>\2����Gl�sK���]yh�"}���X{l���Z/Y���u�)�TU��l*���
�O���_��GC��
�dY�����oR�SI=+�&�/������\:y8Z�/�4F�V`8i*���=��S��P�nYe"��_~��lg�8�O&]�H�����v�=*���Bl��r������3�����=���m�U��9^��w��GTO��������(�cj'�,B����"���U��h�>�{���n�h���)rW�.!�yA�����o�����������[?b�(�Ta��~���G�|QUR`�5��;�����4���E���X����B�}�zK@p�����f��Y�F�o������C��Gl2$C�2X�n�p�f������������>L��
y�	���K���*���h�v���7f�O�����{z��p����~+mM�}�v�k����2���/��K���.����/��R���B�F�����u�I����[N����������G?/�f�!�������.���48���g���Y�y2k[e���M��1��DQ
���vW���UY�X���IKpTl�%��Z�Y��0k/��f�+�&�T���s���xsM'��W��/����/��/�z^
������-Hu�����z�;s]w:��0H%�t2H-F�"I�2��0��
�
�p��v����_��e�B�!�������������R~M���
Q�,�\G�|���nx�j���B}�g�1lBV�a��=e��km�[v��R;2��q/<4�xc<�x����9CO�(����Fo�G�k��)��������w$g�rHQ#�Z ��jU����6����}(|������������Tai$_�t�8S���8���,�g�`��)���'9K��O��SM�qyh��`��
 c�#�v���9��pU��������{G�,�������GA~�"E�H*mg����;:>}L��r��]��g��w5{_"O��2G���K;f�_R��0����+mA�������W�O"�)C9Q(�xR�/��p��[���!�=�;���6��� A~\�k��!��*`HhB�m�:�K������G�����d�������FoU�IR��7�.�6�R�rN��'St�����J1&|���t�����e���^�U#�N���6�������ws�TF��c	f��lB�k��so�V�iF�E��A�l�L��<SAIZ��Vl-l-��m�p����D�n
�B�k�D�)�1%�A��������*�����lI��l��D3v���e����:�|
}�hr��B��_|��3�&W(��L�)�;����j��
c��x����hBs�k�J�b�:B5����M����2n"�S�����#~����<\�R��.���2J4E�nxeHD4)�Jk����~EN���`J^�C�1s>�	�+�}a�D0"l��������|������P�v���q��������?oWJ�����I��~��������8	��m�!~��\F���R�����d�t���t�ntRRfgT�������h�[�������W-,H�#CO
!�o�N"�06����CG��c��n;f4��0���8���tl<I����Wk`@=O��XqE��F���,b�C0�M������G�e�Qd��%�(5a+����{�N*�|����2�e��_��D��
��v�^���N�1�NV����ps�II�ZAC'��gH ��a?b��6,AJ���8zHc���h:PCBBJ��m
$�=� �e���}��7#�*t���X��O(^K��*��IOz�F���owZ�^�^���Y�Y�a-��d-V��S���Z�g)�^�:9c�)������{;�vmg���r�g�v��o�7dW3�&��|B��B�:>	6p
W�yZw,�����8R�>���v�\#�z���a�	�|O>�Ds��_9_���V�Y"K�����.f�g�h�U����$������o����%��k�r�$z�-
{���75��3���G��w�l��������O�4�5y�o=���)���$.:�A:���_~�R�BL���Qex������A?F
�a��^]��\��U
�V���GfC�H����ipK�i��r��\�[��fR=����/l�@ZKRm�zh������
�'��'K.��wp�a}�HQ��N�		d5!��@����B:��cV",6���(�9f�pD�����|�Y)�$�NJ��'e�,���#���1�Q��
g�~�.�=vv�.;����o��(�����Q���c�J�����DA������$�����D=�I��f�`����8���"�1tKg��H����%'QN�t/��r���|��$)�^l�e,�'JK����7�N_����8}��SV��J���;���"�f]�vx�''��T:}!���8���,6�	hjO@#&Q�F��$6��������8���w��������n��(B��/g����huBW�w��kh���Z[z��^
<����uZ1��n��������G����p�6[�;���^k�l���`�N[����h��~����/�u�i7��K���n�Y���k���&{����*����4����/�E�^�Q�E��4N������:�;��r"��F
>^s�MW�}�	��9�_�3�m�h/qa0��.@"�DAx1������m�#�,c�o�/s�;�����������w�{�:�"�y
#��T�.���28�^���5���_��[A��|q�����z���oo���w&��������{��� �1"�s�&*��o3��s�vD!DA��p��t��t8(�+` �F��l�Gx<w���*������4���3����<����m�<^�1BUR���@=X�M4w�fR����6z.��������N�Q����'�O�3���ay����4�]'a<�;\A���I��9�F'���m;�8�w�8�w�gCy;�bL�
4�cJWH������OG����k�M��N���:�Y�Y"�D6j�Q���������eW$;��RM����n���`q��*!e>��G�%XQx�����RH�38�������A

�A��L��I��|7\tWbo(?��	��.)�Y���~�|��/c��0OD��PX�/w8�},z+R#�L��5������<��'��j��q�U��"���l�8(U��������9F���8,��k���`4��U~���?KA�Ji�Bw!�oD�
�)0c
�p����"$�8�c�G���\>"�QB��k.���.�9� @���f�rb"�
��V�C��a�����g���7�TN��������r���������:��E�%1���/����c�/#D	��6rTlW��� 6������������	��o<#5�GpS5�,�JV%�i�)~G�a�O�������U�;�U�P��3N��`���2��>Z��U�?��`���B�K76��QA ]�9�?T�p��%�%�^�@+�a���
��^�2������_�@�������n������}*u�mXh$
}�<��S�o���m�MIG���u�:���[�0��Q�BO,VB
p�P�r�f�~�����`\�O�H7�\����Sg�,atqW�0X����<��U2z^�,�C����D��������\�67�E�	F��$��o�����KRaE_���<��p����Z����������3�|�xe�?�N��*�
�|�ne�M����1����pyt��C���"!?��������?wF�~����?��0{�m��rgk_����Y}�0����S����*{�F�te�<k���� �Y�i|wx��.������W�i�	����"�����2�����+������b1���o���9-���&���u�1L��.��f�����7w��x�o��#���>�E�>��JH��Y�����J�����> xh2���e��3�
���i�J<�i[�1d1-��m`X
LX�e��h�h/�F/�V]��#�����oo�G���������7c���b
�J�3�����aS}��7������Dc���������FO��
5�_D|;�"��'�$G�B��o�]��.�T��	���D'L���q����%�O��/��>�v�e�	��	�O�g��J��rD`��~5�03b��[N��F�QS������-!�j�T�����A����B�>�/��L��h+)��.i���������kv��]?��W/��6���������������i
�oe����%`�2!�|3���&}�~w3���Q
(�A!��Z�j�.��j���7S�B~��ZhJ�p7�{no�&���5c�+��q�'K��T���4�A�&�uA~����X�������oQM�	`�.�&b����#H�b/Et�00Z�nt�>q�����g�F�i���	���P�������D�H�4������vc�r�U4pQ/c���;G=���e,y"���.��[�J��$��e�VLc2�����������D�E�j�Wnk�U<�j��� �HDyb<���v�g�.��~�E��6�C�k,��4B�}7�0'�8��i��5�����7�T�,<E��a���R�������j +�K�Q@������n�T�Y�J��q�A�D�b�����d*[���<086|Jl�$	�n ��'�
WN��p�w��+�?�b��:�0kpxn�&�V�*
���n8��$kr�[#,<���7i�\�=P8���p���������tza,����0����H��]1��!�������8UX��K+�%����k�t�pC'�������9;�+{���9`>�z{YA�@MsDQG��LI�D�J�)�;
�
m��~���VL1t�a~ ��E]���w����SuFSe4��Bs�{��L�����+_������Bq�O�Wg/�9��X�5���a�
b�/���+Rs]�I���%u*a����T�)?�����'�����K�"���>��B�=�E��f$D5��
W��,8�\{���<`u2�C��|��-i`��5�����������)�UY���;q8<3\(w�9W��H�]���u��e����`�����k����[W�7�	���!�����	����X#�r������AW�]��6���#!�����������{l"T�����K���$�j:�*)Ea���
���**&�,
(6B�$�	���gE u�Vt��=r�_%�vTu��+��}�
�U�-A��`�������R2>��R|���O�����.���k�y�X`�G���E��: ��eQ���?%[N
�)cOH��o����W��E����p�O��������"�j���K�y�0`�Cwm�c�=�{�pG�<Cim��w�|��]UPj�I��~�d
[�gr@}�!�2_�V�D���_*��\i<
&)��6"� g�hD��a����Qm�0h����p�
"DzG�s���#�P������
t���z���I�R�����/u9`���|���Smz�7~�f�NY$!OS<�I�w�����Rt�}5������L��0��p�4c~4@:�,��� )���{1���}�S�������1n�������������1�<�������m�$cEG�o�w���[}���,Z����y@*g8=��Dk���A���[�vp0�� �bN(�	'z����W +�;�3��.b:�qYv�.2��av��V���(�k��nO�
�*��H����2����;a��
.��-N�'�&+��"[Z&�X�GF��H:Z�Q������"y�J���$���pX�A
6<����f���@���������,�b��T��Nux*�9����?i���
\������`�cy�����n�6I���d�
*�D7� H����f-H�����(�y�!����&�������k����c�;��*9Pwn]���"=))���f%�$&��jx+�o������1�/��2C(&g�Q�	=%$O�����}Df�{o���L�-]�*�Y%����H���������X�kD?�"�n��l,+����`��A���XI�k���K�3��$�Q&��?G�9C�}�k��|�0�Q�i�;������8��������4�{�����{�-�1�q���X��|T(�����5�y�n�x|>�����p��7�N��`fp<�y�}|u(��.����O4�Ef��}�U����,�\s��q~�l��1�2p�9>�cS#:>�?\��k�&���*d�G$�
����������d|N�j3�xS���e2y����Y�]�R����f�xD��>�"VF'�����X�����
�0���K1�1�����������
��P@ �[@�;����JTJ����bcVg�jH;��Zb��V
���(�v��LON���1��&�#�%p�������Nt���	l�'[�AB:[O�_
@@#m������c.9�4D-�������{?5�h23���"}oS���#�<r���i+��j�<FO�sIf7P�)��K5�����B�G�n��������*GI�:&��<.���MN��u���J����D]OL�V�,r�2U�H��;i�=a����jt�;������Q�wJ���@��&�B>i��1����i�B�
�l8}o�X�n$��:�hN�
<���qoY���aDw�����1��D�����j�*0�}��B
�}o��E��F��W�����&Xu��FY��d���1�\/F��������X�D}��+���J$E������fC<]����}!�E	�K��Y��z�D��p��.)�r��3h�Lf�Z�dW��o�H0U���I|�<�������c���^�����2�g�-�����|�����a]
#T�&B>�0��5�m���n�������!�R�(���1�5��������#2S��'�)�<>�����q�P�h"�U���K�
�l?cw4��A(�k
��=#6�)��6>��l����V���Z��r�u�x��uJ�}��4�+`�xrz2��i������A�,D���LL����������zR����x���=m��U�U���r��o���B�9
�Dx��q%4psk1�/���3�3�T�uE����$������*���UO��r�Y	��K4%�������)T8�������LO������������F����):�	�>a�UVv���|d�'Z�#���T8n��4�|��
���C���S,� ��;A�/�2��3!>9p�r�%�aL���\��������g0]-�J�#��_0pK���*�&��`s��������l�}G��pA�~[�8G��U���)�O&�2L���HR��b"#�]�x��,v��Sl%��H�?�7��o�8lS�@-]���ef�2R����zt���Q�����G���j�$����t������2v���4:���P�X�|}��&�O��|%�,&='=���\-��%���^�(p0tO<�Ia����wK�
����H.��U���'�F�������[q���)�9Q�V'%w�M��(������0���G�g������S�*2��("���g_�g|mu\�������SMC���,���rA&��q4qW���$�4����8�����������0;��E(�!����^�~�/����G�����F��
v�$#3-�%��>����h)X�5!��`�_�M����.����X��p���q�b_��= v+3r<����
�=�����:{w<�k~�n�����D�u�b�8��d�2��`T�P���5d���k�A,����
�!��X��7�=@G����I[a�a�C���2D��Y�\���0X�T��5g�����+
MC}������9 ����I�!�,�o�h5��-��^�f%A�)�7�$&K��Ni#�L��j��G�y�����I�W�+hJ���V�w!�-Q�����[�]k��p�2\G
���cr�1�L\��2�lW��&�Q�!�Hd$�,��T/������%���@tBjB� �����W����%^�Q
�_�S����p_�E�_�f/����7�������s��I�m��M�k���iw:k�;�ao:����nk���:����m�W��s���_=���4���`i&\W��J%���6	��7�K.<��iL|	�D.�x���'�A�C������AE@Yc�<e&3�7%��7�!�������^�����M����,��LC+����&�����s�i�eGD�H�-�JH��21�M}�����h��KOa�� Q�����#�a�]�m����D�����C���">�$�h�>��KN��z�Wv��OrK`+�;�����m�Cg
��'�k2w2�����e�st�1"x��1�w<)S-P`����2<�qP����r���F~����H2�K���~�--�����]����^�����5��MN�"���������`��}jqe��0�l�H$�t003������8
X�&��"X
�4����6f��Jv�`%���2u1�+r�`
=�M���f����q��o`<c���^�Z�Q=�W�ZIz)���8([�����
b�l�J�`6nL��z�=iw���o��6`�4N�&\�-�*
�`��Lz�_aK�
���������t��]X� ��������=|sz�&.E�9�l���z�e��A��A�nU���B	��O�/��-���������<�Q�e�eo���(�
N���������������>����SGN�;�@y5��nv4D=N�}`��=<����) ������@j�����i�4��NH�3�6;ii�L^��nWv�c�&�;_j�|��UL���b�<���G/y�`��
}R��o�q�X������G�U�l�a�3r�4F}$Tm�'p8Z�o��P��=V���DDQ�����l=%�Q�_&�Q��������n���7s��2�]\��d�dq�gb���k��/��
��I�t�^*d�ZlH�����0?t;���{��d��a>I!���2�Q�����?4@	-���&���w���8�
}Tx*rY;��J�U_���;F��z!�S�%C�?��@�?�BnUX^��L�/�����R���	�X
jvlw�NlJN l�������0�����E��[5��s�#�eC���~�]<�V����,B��Q���<i��`�����$o��!c�I��7>�tt��Eh"d�N$��5zx���
�������i2����XG"-X��]�'��������C�&��kw�~��G[�M4���hiZSl���kg�_����0A�I�(�~g��hw���� �}X}������d����7��|�����2�d���
R�f��R���2�Y���5�C�����9��S��O��;s�.)�����-�?[�H|���#����V	�������������(��])�<����A������1�����j��iTN��a��Iw�w��|�G��:��$������j����L3"�S��~y*4[�J���5pi�q������b�J�c�[5�-���b/��(�lE��jG�g��������zwk��oN!?����������:�����j]��l?o)�I����D����Oe�}X��QI}���O>K�������_e�������e�(X��p�q�Cq��3�,w&3c�P�� ��]D�����V����Hox����D��|��9��F���S
�D�1�J�������s��0���}_d��(�<v0���2FJUrm���-f"P.XaK�G�y�&r��Z��G���:��]�r-/Z��.*�*	�.7h����,��N�vK�%�MO��E����v/2Fna|O%�qV����M'�=�����^����xB��pxqz|]���w����^M���/{��' N�d�����p������K����v.u�CU�y���i�J�<=�lr�r�]����o�	\ ���������?2��e%`�\g��^����������oM;������E^.C��8��1Y������)�{��^bH���NH�PA!Al��siDI�����T}��i3�����j���3��~hMQd�d4;����y�R�|��P��SN�~���@�e���T ���
�K��xJ$ce�H��\�`,�����-��t��"��/�X
�I�Z���u
i���{�q��t�-[�L��5
���MC�#6�h��������uMg��_�����;�pa�>"3��Jzxuuq�������������O��*.��JG��n���_��)�{���P:��BHLw�$"���2{�Wu`�	���G��������>��d����Y9���9���T��z��pR�7���Wr�h"�kFc��s*��^1� l�f�*7�>�w��� ��T�P2y�F/Mv��	i&inoQI�������~uv�Z��$�b-�,=�Hr)������X��j>���`�@I2#:5�4���aC����aJ�W��7�:�
�U��'�CQF��3���I�O$�`���'Kr<8�|������l9O?+b��{>�����.�H^��g�^�^o���a�]rW)*�J���&+��q��,���_M?A�=Z{
�n���aC��[,������_b�l�0����
�K��.���������,zcc��P+]T^x�Qb�o�BAzin	�0���Q�����.N��g��{3�5^������#?��6!V`^������_V�����W��l�<�+�(������CYk������\�x9(Cz)n����(yNP�U��4��`4I+��h �h��x����I<��7�6p��Rq�T3A<�Sy�?��*/�6'��$}���7s��Y�=mv[%���R�TU9b�,��S�.Ym��m����g��uV(���_��Y*?�����b
?�%��,����_J$�0���*s6�������5�p��:=8K{��]P��sQ���Y�"\(���K�M�V�i�n�������W?�>����������w�^�1��@la�O��J~Ere ��2����V������
�_d�N�2����n�����>PX1!>Dk&:���CT�!���l�it)'b�N���G�a��[G���$�\����e��=B�%����p�����h�"��zy>t���o�����D$�
F�V�������u�/�ZDS����bS)�e,� KT�������T��S�c�=����6k�/{W#�suT��E��E^=��1��6��Bh����(��)��������k2N�W�E�e0��������p������5������h��������ia#_1�{s��0K��fU'�K(D����5�M�����|g��co
�D�&E\���a��J�G��Um7�
��M��T��2[1���IW�p���|rF��1>�a��?�?[��~�kJ��T�����Z@�
�&���l�zU{���X�
&L�E�i�s��j��#��u�	b�
��3���]���m#��p����y��3�f��2�)�������u8K�o�y��+����:8��%����F4�=�8:��_�pD��!@��;�%��48A�1�p��������s���#��k�o�ICof�u|q�����������	�"Z�2�����{���We�d":!S^��B*�&�q��A�����uJI��B�T.��T���v����V�_����s�~��`J�@�~R�V���bR��4O*gI1.����@.������%E�!��oZ#S7�����$ZD���}�"��q�n&O/i�y��wD_Of�/���d��z�&z*��B�P��+�w=b;��� ���F������r��{w+?ZQ������W"���q�>�������J��a�������f��W���/}�����L���#)��Y2���Z���@�ti��� p���H�V�	�8d�e�?��q��jLG%����u�(������i1�f�v�<����0j#�	A��CD�b�';�!�O=B9��)���j>������mV�����PQ��bD/��1�+,~��$]5�/�2�o�qz1n�����.9��5y_/F���6z��_?[� ;�'�1;9�W_AG���Q����P��Q�[;�5�# �h�+�b�nd]����\i�/��8,��B�r0
��D+)_B/�O����rpn��iI&�8dq�i*[C�J���L��9y���EQ�z��
�����J'���y�!�rK}!�&4��2��u����M������O�ul����D_���dm�
���_|�O/�!�8K����n�	9��H��1�rjJ�2�({m	�e�w���nvv����'gI�I�>�2j'�!��_KgA91`���~��f���k�����\�����gs������[�#v�_$t1�����1�D�6g����-?|���U�/��������,�����Q'����/�l����j��H8�G7� ������>od������!����G;��i��s�~(;`�D��<����@����!~�E�W�0~H=����Wkb������-���J-\P��3����*HU
�R�o�?4�r+\���"���������	��e�����W�Zs�G��8������D�=��1�#�[��y�v�y�<c����l�b�'�}Tu����)���-D@WD���W��2��
"��������(�U��
TOG_��S?���1hW�:ke�<�X����PK$��I���+��6X���")��z���y���e��/Ry����l^VT0���<�M����o6���Z���7Zli7�B!x��'�F�JT� s`��3�*qs8�y=�	aM�<��2�p�
,���V�|��a����a�����
k���O�ujGs�]�6�'��,d5�|��5�{|�\��v��i�b�_�~������������5�g������������l�Nf�io��������	}�������f���D(E#�
#�lq�4���89�{S��'�V{7��t�����J6i��TB�&�8K%�[BC����N1����TP���-��g�B�Z�2���������us/#��}:e`3ddp��x"�H|1���������H`�����|���?E���Uu�K��^��M%pydM���s��I���C8K�H��8���X/���6��5[
��j��SB���6iSY�:���T��b�=��N����8R��n�v�f��`���f��P�����^���?M��fn?'n�N�&�3oL5�W��an�R�NM3����[�^����������
�Z�>�p���z���y�@Uk�n.	�R��$��;�So�U��������*�����O���K�`���p����5���D{�����C��zI�8�
��S����zo�;��r9����;����G�8����_�i�Vr}��Fe��|��C+��H���G����,���N�j#	�_f��I6�\J������#��+�*��=G���B-��t�0�,n^oj.���Y���������I=@�^n`�y������$qn��(��{��"�b�q�;^p�W�a�)�,��2�=O�X8?�M*C/��^
C/d�����Ib��S�C}v����
Z\O�0%��;.��l{��}~��GT���]Y��<B��?Ice���B��E��Aq=��j��cv�
t�ee_?��p�������qT;�^G�9��I5�����$_�0��;�4Z�:��{�I�0E �oJ!�)T�Mo�q�t�K�c�q.��Pa�K2	����������K�o���#���ARxkGJo
C�W�jLK����=w�v��P!��(Pf��.��:�f������c���+�zS�� ���@��R=�����")�#��o+1���1/�"}�>MP�C~m��#��`�yB���^���/��d����\������-=�<Ny��E�ZC���QU�H��	F(k,�p�$���','S�6{�3���a�k����F�fr3�F������/U��;U!���@[��W�g�p���n]C����t�}���p�l���Vg8�Jl_�D�6
�
�=��y1�*SY\���S��I�.��QuN�k�(������"X�V*�u�A���a��!��������6+�g�x�f�Tr���8��I��wz!
�\��_-���������������|ua�JHPxsv��7 �"*6Z�&E�
��Ak��m[d;���������7
R�]+��Qew����IcWB���c�AG&��������u�g/�������)<��P�\�����S��<���{o��/0{��`�bg�&"�6�_q��&������K�)����*��G$�(!G�	��RG���)����*��&�$���J�\�t���������2���n4��5�����1i!���I��!
nj��C�om�b,�:'����+Q����B�K8q7�u:6Q�I���[�S���uy�����j[�*V+TV��9���*�lC�6H�x�/c�;(���)�*�L�NY\BL"�{#iJ"�2�J>&����c�0`KEHcFnm=�R���{����8�����r_"�������L&�bPF��
�`	dEk��2b��`�Vm�;lm=�^�v?J"�$2;S�P�{�O�@c�d��G��q#%��@@�*����)9:
%��\Tt0$���t�I�T�I�J3��F;9��L�~P��R>tl0F.�-y�k� ����7�T
��l����N��&�`�e'l�	?E��AQN���R���C@����{R\��\��|N���S�A���	@,KI`a�W��=l���`�`'6���=���~.�t�,��������jc���IC��"W����!���]��!��f�ELuK��|������(�����'��4��������1��n��V���������+(�{���QRn&�TO�����k��A�}���6����`��/���W�	+b���A�.�'���x���b���G$�q��x�h=�z�������-�����i��h;p:c�=��W���s�;5��'�B������N^{����1�j��������������X�I@�Mq�S��n�n�k~���B���,���W�W�%����-
Z�M��^�]��{�I�S����M�e������q��w��C��2��E��o�S�~[e�~R#�������c��y���DyVu-�d�1��z���Sw�������F<k���`�	G��Q��?������`��
Gos�}���4��� ��������X8����ms/|N����H���\���V�=�z|��!,M'|v��Do���~%���B�~X�O��g"�q.�Q�&1��~a��H���s���B�t��uHT�y���P�S�A�5��|�v��3\���������{�
�4���w����]������|��?�tc0m���fs�k5�2�{��d�T���C��V����� 
N�m"�)"��C
x��F�Y��	�K����� p���yc��9O��j@��x�4b�CI�����������G�mG��q*�N�5Lc�"��`�:����	&���9�T�"��B���K�l��K3;��p�])�X�D���,���N��a�Z��R�g0:���sw��5�x�'�0������t�pi3���e���g�+�%"O��\I[ )�3����J�������E����xJb�C)��Jl��5KO|%�z��k������Sq� ���`�����L��a����u��������_�%�����#����~N!�[[��I4�*W��D`L1��
������*lIG0t�a-���ST` ��/��)�@'����������6��?��O�v��:������@y�2�x�Y8�#�D�0Q�����#�\%�3����54y����H��W��J7���(�:XS��/c����@��������������R��B��b��)�|��g^	rT��Wf�N��4,x=�\���6�e��,���d.� �g���Y���a�[�i��5�"����R�`���
\��g��$�V6�!�)Q�_�����w��g��-�[��(,���fCj�����`����| ����8��Gr8�3�HS
����C��S�:��d��o��a�����*h>��o�-Y�|�������`����"�O+�j��,���1�e#���D�.ou��\���t�(���C�B��+t�N_����I�E��
$��]�h?���'���q�/Sv��30�6�-�����	D)��(�����/pr��^6���S�/Z�|/�d~_�["����u�
��q�����J�+Q&!YAF����|�C\�%l����C|��^�Z����u)w�R�;/.~%5y�_�K4�j�~��lb'�P������Q<W6F�(���B�'t>8{,�W�����.x`��`����PH:H|���M�J���OEAw���t��hEP���2S�.$kg��c�j-����`V��
����$�;����df���x$�������Q���A>�E��|�����]�������iK|�*=�g�M����|�Z��?}sQ%YB&%�z���W����q�]�]�(�:��2��L��&l��������?6f����4�D�����#�����2HM��.QRN�'�=4^hp��:%�z?���0��IAt�F������z�v�������A�$�����Tk��K�&�~���:���_CU3e�`^dxA��c��c)U�e��>�i$J���U��q�$�R�J��(&U�2
G��}H1V�~���[�:kA5���#����NA!����X�He-d^}�a)����=���CW����
��3�wWI+]��g����5��g�����b�p�����������d!�
��x0qA�s�qg0-'�)"��*�'��B�2��5�9�����]���/6����+���%1wy�Bb3t��^g���0h�o���A�)����!���!���)[��?d3�T�U'D�j/���\wS�]K���;�e5�2�����������#T��BH�f�(��G�H2�$"��7��%�Z��}�������{UIk��9.�j�i)V>Jd�;�m6���1�V�]P�p������<H���������j�J���"W�V���V��.N^��:��<>�:��itx���O�[[��nQ�?Itvgw�[2`�6�yZ��v�������7ZSh���)��l�����q�m�,��P<��~VZ��$�����kc��=��o�2��,31j��f.�,���9wYc	��@���{f�a�W���Q���T�
@�y����>D�nP�p/�ipK�
]��V����~�����j���a^���ID�6D�6D����c�y+�nJ�9�"���#>�����&8�����q����j6�����O7��[���$"e�D��`��_6��x=�=��)�I	Hr:����8�hb�'��������� �����Djh��1��/��gGw�q0��D)��W*>5�[@��:����4�)��x	�8�|����������-{d���������g'W�[[�v��Q�BOOG��WW'g�.�p����|��K#Yk6l5�zg2nu��R�SP����L�%�8���%T&��Sd���Ud�����n9<��(��#�n��0('ZG�9�0
�,V�/�c���r�v�_�f����^]��E����gjW�.��C+�0U���2����!�<��q%p5z+�s��|%��y���L�9������~�@3�;e���YDP�P��Xm3����0�J��W��%MC��_I��B�)7��j��2�PIB��@$�+n��Wd�J;����A�EEZ�!l����s�[�U�K|O�%Ok�22��f�Red����ZH@�g�B�T��8����O^F�r�Y ������wS����#��iq�o#�JW��{:�U��h�M@V@T������5�Xb�E�6���s���g��@�z�'	�2�FdXb�(qK%X�k���������5{:���S7'��EB���]n���j
O��i&<�!*���X�����%��H\	��q�������3#��Q%[_(S����"�>a������)T������}|K�M�n=��:O��Q$�����)`u�����
EFW�t��5�F�H&_<���>�;�� l�'���Q1?d��s�k��f��\��J]�8{2��h�E����Y �0�5�o��uM���o��"�� �����)^C|�q��#�\�)��l�25�����sr~gL��{���uA�z	�@��S��7���g������z�25���Yg������i�#P�a�`�)�R��e+8�M�S���r�kp�{�1z)���Q�v�0��&���M��0wW-����f���������!"Mf�������/�u�D}��v��" �V������:���:a~���u�v	������[>`�!=�)	h,d�����
���K���sxET"�P�F`�g7����E�#F�B���JQ��l��=9~q���2Z`-��f�NT�_��2�S������
:]�B]�S	w<ho�eJ���.��=��������:����1��7�C*�N3���������<��i����"_4f��<��)!�o����p}�pxq�����D�Y�YHVp��u��
U��6���#�tJ��Z���������V�	}�~���n��G��W�]+d���:P��a�������x�����$�u�P�R@)�
�~\'����N�g��^���^�+�v;[y��(�J���N�9&������v+��Ko�t�BR�l��~��_�]tM�K��
8�^H�&�.D�/k����fF��k����������U}Lb�
��C��Y�Rj�/9%/gt��i���P���Oo���b����0 e��o�0Z��:�_!H�;a����F).Ug�I$�:�!�8��L��@�d*{�X����S,���W'�g�l7�����K���5+J�'���2PL��)��R<�H��?u!	��y���[�w������j�L>�6
��l�X�Ve��[>�1�V���Ub�>s�2��%�W��.d�\������4F.��o��O�/��	=���K�\>�0���2�A���f���^nm
������'�v��g���/�8yy|!�Z���%����B��x}z���OvK�1#!qc��d��~��l���V�=i��%9�A���%sy�Q�����	n&_���YiY46��Y!;k����rR5�&C��R9�|���}L��J�X�`V�����Ra����WJ��E�������@��d��D���g��p~r<�����n1�I{������+D����D:�y_P�'j
g��pZ���`���D�N'�%�9�.W���IN$^�19�5�9Q!'�
I�7��3�C&����x��r�\���sA,�
e�kJi\H�U)z����/.Q4*�C����r�-ty�����[����~�$�0��r�\0JqY4���? g�?�3_���v���Q���y�a���p��d�����v;�q�p�$����(N��Q?Y?�|>c��nV.!*�ir��l�:6�0��`��I9�b%�'��"t����~k�A��x�q�`!|wr�*_� r�a��V�2�2@	����^���=r'�\^`�.��q��k���~����z�	������%�
�������������?=�Z�4�m;��~��X����K	vK����"���M���-��,Sj�]��M��&k�n���SL��h.f��C&�;����)R�����PlUJ8�xgvN�������E��M�%�
�=����_'���k����F�V����A\���
�X��sd����+"r���"�N��DN�]i���~}.�[�%�{��?�	t�D���n�!�u�"���G����X	rX������1��=��A/�U "{��9+���@��s������Bx�����b��S��7&0&>���L�gR�m��Q��HM��7��b��;�of�/D(���l�7�
�o��F`6����#��9Q��>��"���+�5:�d�������/��
������J�k���e��h��������04�B���0���[�7�o����=���,<3��j��������8.yG��}�(��z����qr$v -�JY��d�T�T{<�T{,�T{�T{,�T{4�T�����{y�����=Tp3�]�UL/����l4=o�)�a*�`��mrp���O�D�b9F�N2�
��#��7qALL���K`
K���_*D�H��V�����fb�@��{ ��t`����#���'��0�`��Q�����	M������E���/�����h"�Q�:��&�W�Q��$�^V.�:	�9���jW���!#Y�T�@S�[�}�5,q��V�gE���Po�K?'��1��J?M=�����h3���w`]�l�Ax/�2>|[�A�p���0"��-����IX���
=��)����!��,'���<�8y}u/{����R�^�St���)��~o0(u<	
���(�c%�#,;��������I���W��sQ������d�����{����v;��|��U�"��h���:�0�`KU��bsw���0_I/[�Ea�F������r=��\�c��k�'���^o5���.�~b���P�pC�-�L��N���,����_���g�J.�(�[>��y|��.N������������b3����`��0��Y6�+��?������n��
���!W�v�uD��q��Gi��|��I�v��W� +��r���xUz��"������~_09��$��-E[������i�ht1�Ho2k����^2(����:9%�Fs�j�\@T���4�@��=@��O.���.���}��%K���`2�p*�����U��$A���R�)�2���kg���e����tJeV�((}��p�A_��������$Uj���X2����+�&>o��b�4�}w�8���1��rlE��]�P��,���T.v���?�)k|������z�����e��oO��i��Y����\��J��W�rW�*U���hb���?�0?��.���'n��������!�7[�$�b+_�/+7��HU��"��ePBa���X�����/N�.��g���
&��)�R�-���Fk����Mw:��b��0�$��.yE���r�`�/��ry����D�h�P p
�P@� iX�����6!�,�H3*V�,��W�?�0��sa�|�#^�������B8^A�r_1]�bI�;_�a�"8�t�J�X�d3w���p�0)���n�[����D�+����2�O8r����'�6j������7�R���L������|J��s��F�s�,}
	\���#w��<.}W��2k���������d,)$�N`&_�D�+���urvr�����K�t�B�;���
?���^8��Q�[ ������n�����k�F��=�N�F<m���9|������2�lkv&n�y�������|TrO6�\��k�*ye���+�E^��?��������D;9�Z��ORd^�
�d�i���d���a!I2���N���/�Oe����4$�#�����|S.���������T��n�3����n�����	0�h./1�U:�Q���!S�2��(����N�c��h��]4]�\�Fy��;�vw�m�����?���]fP,���:���Y�_U�����p+��Y�����]�����;�9�B
8�7zc8-��nwX��������9[�,V�_T��&Q���;#����C�v ��A���0�S��>���S�-�Up��p�����I
�{#F):��QE�	�xtv�������c����b]������8=92��Z�Y�X��{x�B(wUD���l6����t\��A\�eH�X;�����(cE���$z�]�qcw�;��L�����
'P�:�+N���f�kG���6��\
'S�l������29���+$���#	����Y�5��Z!C�6��3�����pb4��^�g��S��S�	7$��*3��y�yWS��3�Sd�[b�pm�i�����p��z.+0���E�����Q���]��;��
���v��n���X%�0:��uBW������^a�
�)0L�������/i�T+��acf���W1������N_Wn�*�I����f���Y�J�\U�fX�LLY%>�f���I�$fZ�+1o������g������L^b��)�DO(�^�H 2����v1:3CzQ�.eM8.��7#�a�(�F1����!��@�n1�^8���������I2yH7�{Od��Hs@�\��r���t����L�G\]�a�������pl	��o2j@�6�N%#.K��^�^\]��__"���n�������A�H��"�b����*�IXR��(x��{f`s
:��kJ�8yGO8��l[�L�~"�����M/���"�ng����q����
���D���\m�o"M"����-���q�E���[��E�9>[�S�������-gg����	��G1>�{�s;a��`>8	�h|��j�"wJff��5?S��|��������tux����!�c��$#��������__�W�\?�\����/.N�4{�/y�"��[C�29f��	�L�r���{�W�� �F��	����������f*�&��2��R�J��w���N/�a�S�s�,������
L�
fCw�(ygQT
.-�\��E�*��p������4(%QR���]8>�U�������5�v�i��M�������l���E14KD����@���!�
�8~)	���h���p
f(�nY\lw�[��L$?��w�kG�����Gf�g`x�����_~��u�F72#�U_��T���L\o�7XF�"�,t��b3t�}�U�m�uy�T3+{��X��:��]r,�3�s�5�2�nm��'����a+=7�����"��h{jW�+�w��N���V-|G����Z��v�6��U�U�d-�Jr#�[L��]I� ��_���n�E�Vz%�%t����^I�5��^InY��������]r�W�[F�O��Jb��f�p�W������_Il�X���_In�X��PI����M��;��6����v�_m�(G4��V��[�2}�V���i~5����L@2Ka������$�2�}�:������#���`������/�tw�	�!T�+�	��jpH{<E��	���~����9����(XH%j��;�=-��c��(���#*�ii��Mk��e"���D�B\���,[��VO�`����9�e�����8���(/2lZ�@�u�*�5��oO�(�/����a�:�~��;��x���u�{i���N�?�z8���i�D3����)��F����~�7�3mm��C��Q���M��y�����c�����<^��_'�`��Dwn�������L{���3�4����kA\BZ���T�Z��5����N5]_���a_�)}�5x�F�+�+fR��3l�����Y7d�/.�e��7�W�M+���|�-O(�j��S����������w����+zyz��c�ME�����w��n����f�B�<�_��OY���a�$%�M�J�����p%��.����~�Y��2u5�3�B�����;�p�mq�Js�=z�{k����7R��9xh��-�(}xt��������A�����?�[��;�sBf=?:Z�}��CS��'�
��.������������,�����z;����Iy�����!�hw�-���Eg���5��n/�]�,��Xm���&x
�����7�&�,����c|�����[����Po�V����������Nk������CM�N�JPj��l�����F�z5aEl��J���Z���=�,���L��4
��E���J25J�@�	��+��,���nc��Sm�c�k�P�����{F�$���:��H�B�l�8J.E>J�U����^u��������KQ��S���(�R{c�f���u�I������6� ��x�)D+��Q,^�S��u0�t�U������Q4���E��L�}P��
�6Q�l�i�d��c�L{C!A��,G��(���`���k_��02�y$����M\�a�M��U0�[��������
|�6�-"��Ra�~�@rq|t~�RH$��`�x�"Ik8l$^����;�!�{���
�O�<��h7���;�H	���#c?��������H���LA�t2������(�M+��������*�+ir`�x��A��9�������������*�
mP)09�r�&U����E&~��29�s��?���S��������o���y8�p�c>N�b'�f���4�trJ�)�{9�V�L���D-��J��3L�����y��y���t����}nR!'�{rr"AW/'������)�J�	���x����v���3���+�����0�{�=���/'��w����"�S�1�r�%)���Y���/a�9Y����.������X'�i�L���\�~ury���h���8�2�NN*o��0bdS��m+��O�Nz=��q���(g�O#�{��U�9K���Fv�����<m�C�����j��Zj����V�)w��dv���;�����9z�r�j,:��,��3�rE[���#K�DMM�(l�������"�Imz9�O����O?K�����5�����
�R�mcE�0��K�V�0��}}zu���S�]-���$�Y�{�&f��;�
�uo<��[%�S��� �Lk���$�}�n�K�����;�9H���[5t	^r�\��W��f-��Sg�����+o9�-�C8��AC�W�?�@2R����<|����=�t�{�u�y�������m�Vm�a�`e����b��.:P�~�K��qMU��nw�y�����.�._�_�?^����{�&��<��������G�1/?��/�j���v�b�����g6���[JD(�+D����L����
l�*�@��	����M6�����*���WyB�6��6�`=aAoyl�2:��
}w�Oh8�9�t�"_�z?�M
�@�<��h��"�~6�m���\J
�p��2�<����_O�^���x�E��=�!0��V�a��7��w"e^+
��w8w3�#��[c�OxZ��J!�M������_���f�&5�����(^��[�5�7�]S��7�o��1�)>��s8�ON���@U���77+�>�8<==>��l���!����G�x�a~�RZ�E������R����C��;z�i���
\In��~�rW�������+�-k1u7Wb�_�����H�*���KP4J��J
OPo��t%�3HJ���c
�brW�@�.���4���*�����=9�[���	������N#���+)�Bi{�w}%�#�*$�|��bIWP{�'8�[8�R'-��������s.zs�w@@����y���36kK�:`*@�D�}z�
dE�1�2���[x�!`��@�q������o@�GJ��h�$A�|J�/N��LF
�'+���3u�RP#y�0.W�����%������������8�>��e}����l5W��?��������o�����J�F�������8I./=���t��L
vXCW�������j5�3����p7"9�������F��s����M�������/xY��"Z���"9���{������Vk�����!�A����;��pq�����"-�+/$��F��[jU2br�,�J�bL��[P���������T�]�fDx��TI_�I$��*�k�8%K����0}�XW���VO��J[�R�7"]�����V�]����d�N)��~B��G��0�4%�(����������'9�mZ)�{�p6B�5
;�c�oZ��G�vq!���h�:��L@/��G�3��
�j��>4�$�J���#�Nf����;�}��;��)PG��R��&��)2H����*W���HE�;2����.���h�KLb��DKT����;k�d�L���I� M��n�1c!�vM���x .1����!�
�����X�/�����v��[Q |I_�
�=��G�G�F����pQE~��U�[`�|�:��uH�=��X*1(�,L����f9�"A�A��H��K��u������8H*�6lA�E�f�����7��y�~$,2[;4� �OD�@wE�&8G��o&������O�y:Q��@OB.��F��pd�jJ��w������������
�2R5����|x�N���F��TM�u�4�����U/
x�L���eZT�����K��t�*��)�'���s7iu�V'�eY�K����|�������������m����_���I�H����Rd����t����(�$A	
I0iYu|�w�����N�Zw�%`w�;3;;���Vyq��e�Z�3[�vj�Y�`/�����I��j��1��&��d�9�c&u�!AcQ������"�s����U6Bo�i=f�8���uH#a*e��O�_�p(P�r"����I��}��@#g���Z�F&3�r����E{
z"l�=M��=�oU�����	����a<�K�F�UK���$�����|�����������7$x�s3����"�q��h���Z?����V}�b|�h��sX�k7���V���{�����/���0w��@���Qq�.L�}�������_�R��f ���o�U�*|�eo�*s�]�U0���N:<E�t��{A�p,��
&������V��3(�a����{��9o@e�X'���1��+�+^F�]�N���C���G�5 "�N��X��b���f ����H�{�B��/�B�<.�{WG}Us||D��P�`��o"���-t}Y)����7�'a%q%�G|���)�����X(�W�.�O��l�V��"�R���J �iJh��}*�Qo|������%� �.)|����
�^p���=� *kR,�U������U��=Pu�q���;��F��Y��ZS&�?tP��\pR��t��^z�o��O�P����$��Y�*�(;%;je K���k.N�8������t0���ii_As�?�L��B�qaRdZ�v_��=��5��`>�)��/��O�B�u(o��&>Rf�p���%�~��6�db���o��?sl7H~l�{Q�dI���D�h8�m�;��&�nU����Uz-����+1���w<%.)�<;w��y�U-���z����y�xH�a�[p(#��3,c���;H�x�*�P�����t���P�������O�5�5D�S�1q�)����-0D1��>��[}��w�8�����<��t�fu���d��q�w8����g�����N(�)�������c��eJ�7������!�z���)N��v� ����0�������]�����V)��P�+(���o��B���^�=�Z�}��dsX�W�0��S�X��X�[���O��Td�|�7��/S����h���}A���f�?"i&O��'��
;v&@~dL=a��5;��s��3�����;*D�R#F�u�m�l���������saK.`Qq����a�z3YH������j�j��^�������cMW(���)�wY���t�j.H+�T�O����@/M��lW�1XQ�������l�v�����@�I�7��C�Z��L���9D.u�F9q�����gj�z�g��+S|j��������d��8l4���,�*?/�������`r�w@wE�ng���O��;;��.[�@��Y����B�M��*!3�Q���W�����`���Sk���:^>�J���Y����qVh�YXo��y�i��f[x���u����1�G��UR������V}����Wg'�7g������g��oB�C����TM��Ish�L�{�m��~�����,�p�Y�t�-��e�I1�_mr=��X�B4&S	�e���7]�vC���/i8����Sar���jLH����qW�m0����=:���,r����]�=i����ryR���sE������q�5���V�����N��������v����������-�R���#�����o�P�n����$�������y��U����:��FB�y.�^av���sc��I��.	8��
�& !��(�0d
���w�L�(�.��m�bT�0����9c�x�����������[r	��f{��i������I�����*2�}�����DH�5��C^5��y��ef#f���}�54+*fCeC8i������)_I_.����'���e��q��I��v��"�_���.�C��0�����
1��{��Z�����*���_����lq�W
��1�������/��8��[v�j
e����o��j�bj��/|��C-=^���
� ���nk��T����������s����E4���k'U�r~v56����2By�q(���+���2e�*�%q��Hj�U���{#�.�8%r)��5�5.���ki��8J�8�x0\���1�g�������;6h��P?�lLG�0���D�p8g:u���0��E[�������
`����|�� hY�N �����MN��U��;�Zw��F�:<<l.9� W�������P�g���i��-������
W����z\�Y�g�{�LtOdG�Cb~���`�����0s>�f0J�2v
��%������%�Y�a��?�y��f�FR)l����[�����6��.m��cKk�cg��-=�d��:(���<2��R%��I�e�+��.l�B;��]a
����W��f���W�b�b[C4.�=D�e[��H)d:K�
���_"�|�3����yFo%vKs��\��V[
�v�b>��8�;%�2g���-�#Q����^�n�$>���w�����)�F�$0����j�2�ZgP�w���%��dC�h-'��'��uPo>m�&�2��pI�Zu�Z�fw
R�d	]�fy|R5Z�$�e�C��G�����oN�����������f��h7�7���U�\�����2�g��8��'���6��A
�v��l�Bg�R�R_�]�?���v;;)�Hc��Nb��j���V������O���,n��=v���+7[�1�����Z�{
��1W��b�b�V4^s��������b
�B�q����q�>������e�/�������6��8����=���r�}��^�����w�j�{=��:���bi��A��b�l��+�}����������	�����eM�����#s�����������V�a���/�NnV��,#,������f�n����A�-��Y�IU������i���7j�7���Q������7+��N�������!�-G�[
����uv+��~�<��>�Zi���k&w�m���S���u��.�4��l�&
���ss�|�����[H<^,��=L���Z:����x}���/w}�x��;��W/�������^^Tn���y�Q�NAS=���_�M�)�[,��B���;Z`��?�_�2��&.����%b�e������i-/cE%b(1S�:�h�Bu�;,A����b%]c�=\�\��������i��Y�I���cP�$�s����=v�R�H��(�?f�	1D�b�|Y:P�j���o�8�(e�>&u����v b��Q��(����*���n�bt:
�b
_�������;��|Q<���p�rH|��S�=o�%��F��haGC������������K$������`��*�������;L��Vc���N:F.gC�U���N�Q�1�2�u�Q��AY������yp��L�H�C���M2}!b��	+
Pw��y�������rn--�R�OS�e�#�a���D��g��z%�)�������AS�E`8�s����V�<�2���|�N1�]��#W�iv���vQ��zt��:T��E�<�+��y����������b�0>�����e��u:r��	��rb�����d}<��7��*���g�O!�I���i�|��!HXxo�	BX�,��B5�������t��D��A/ew�[���vm�,
8L����B���/.*a��QT��@>,�������e�g��pL��WE�����='c~������O8
0�f��V�UmA�t�������7Kz�o,�M/����}��m�����S���??;�i�sLy{n��f��_OOn.�+��xW}l��������ze��7X�[�h����x[��xl���=5��zO��Nb�h�vMe(�*$! ��
�g�'x���o�	��T���<)���������y8c
 �H�>83���y@�k�i����������f+���+zV��������S,���4;���g�7g�'x�n���|��������Z�k��_�xur����9A����/��?��-��'�h�����.���6�}���5HrDH���v����;�����������/	��"�Wg�bS5��������8�=�-���X���
 Jl��>���W�[� �7�W=&���i����_�/�v.�4�[�����F����;�S���-�J_5������XF[?B7����mNj�l�F`0���'�Y��Y�k�� �:��:�;3�Z�{W��k��Q�]���V����bj���z')#^�
3�t<��:�9}->jk�<�����6'�c��\*�o������J��q���N=���v�����7��/���x�zu���e�C�"S|��},^!6"�`�w�����sFL^4k1���&��3��7Z�p�"��8�k�S����������1���Z`��<}���)�bV�����SF.�K���X��q��O^__����K<���f����`�Z'���������IX��e�f)��7�T����!�5UY�5���l��,�LO#������O#���;�������������S#C�\�N-�{������c�j�������c�:F��b��5��7�����_2��N������~��J1��`K�#���bo��]��:����
�0��T�/�R��y�H���h�e�&*�Cs�k���5��������*����.��q�|U2���"�nd��}��+�Y9j0Y��@K@u����"b%���Z��>'�Gb�LM��
����Z\@D��|��*�!�8�3��b[@�0.������L+g�O�g�j�����M�n��A����_�����������z'�B���n-�"�[����[d���-3�^��vs��������������k���M�e�;6�����exn�m�����n�w�U{�4��bi|#�z=mWHb����I��I��Xf�C%�2�$j �c���-�E����^�6D6]h�H���f����x_1�TB��^�`����h,4>���h���:��A�������E�0����eK�S�8M������3q���N�s�9d4�������S�+�N�7��7��(`�e�4�r W���'~�ve%_��dU[�z��_�Q?o�F���V�������mnX
�7��J�V���V������,`������j�������ma}K�Xn��O�~��n�{^����7�y����79�s����8����,�'*�E-d����f���&8/0����_O��@�*��'�,Q���!&d�z����J��7'�u_�]}q��uD��JW���W"3�/�R	��?���T
b�d<'�0	���'(���a�i�^�5��fo�����Q~����ub��N�_�^�
RXuI����{N�g,�#��X�D;������'�0�szt�����H%�bW��j�o��kV�?����*��j	��7	����/����V���:c�h������_*�&(�h�Wp�r�����9Hqo� �h��LH��K6���P����x�*��-��d.V���
t�$�)$�Q� �W����������~=�8���p�s��� ��(k+����w�R���B���Q{Y-����zwZg����A�
�F>K�Z+N~�����w)��	��!�:��$Po����`A�w�I���V�H�e�w�OD����/+�����|����1M+��}��f�'�n��������K��GG���4�8G��o_�d%d_��E�Z!�#�����@`�ZR1���'�!�IiO�k\�VwK����h����c��(����tA������
�ib�<u���")��Ai���w_��p���|NE�q��-U�{	$� /q�T=����XVP�eZ����B-��h�Gt��}�*��_w�(� ���E��!��	���3��/�*���>U�k�DSJ78�����/s&�C�9\�S+�X�@�|�w����|?p��W��$�a�iJ��C�
jQ�����{�n�&���"M8WQ��B�/�E���t�����������,N��Z��(,+?����*g�0i$��9R�������C�9";I\�xwq������e%�
H�b�4cx�2����aIR��%��� �*'�{u_Q6<u�X��*<�`�H4��E0���p�c�V�Y
����;��<v�C��D��S�b(D)[�
a/R�Lc_��H	Z!%�v���S�>�����$�y^�%�P�3���q�����J���U��=8�O��x�>O%��a�����|bq�������OO�
YNUI�<��3�G����A���qy,��' ��vm����������B���"H��~����@���@�H��x@C�"r��@>�H������!P)kq��A"$t'y�����.�

~F���67`�t"-�f.f���'��ql�F�l���5vM6�[d��{E�MO�����cg"N���q"�F9��
_�d��r��?�����}�I,*����dh��j"�SR�<�]�s)smX�iTTY�9b��} \��_��
���.^F���|�K���#-�"�0�kR���Y�x��Q
��t�l4g��"gXl;
�Q�@8I���kT1��m�D�sw0�����xHM9DS.-D���a2eMQ�K������\��|I.��/+L�T�������#_Y�����U�?��t����|E`�������Y�x�5�Y��Z��4��_�f7�����[���������Ns��w�5���;�����u��t�v�n�@r����0[F����������Ha�#�?�gB�}}\mTF�e�������y�h�����O��gV�P�a
�X�Y'yf�H|��|����R8��"��������k*G^��:��h���
�����<K��j��)����Uj�6,&���{om�F���[B��h�A���`Q��7��J�^��Y������m��j�=���ZJ��"ev�P�)�>�cR������������)��<1�E��=�K����
�
*���[DcCW�o�����fD���_�=�o���?�o�$��0�.K��"�z�#���������� �\	�t_B\�z���f��!�������"^P��X�W�7�P�{�<��jx�Y��������e�����w�0&�����-!@����P�
)�6&���BgB���;s�1�����=7{Eq�> ����!Ba�	g_��7���"���A� ��R�����j��G��7�����'!
E�#�@	ww�l9�k��PMI'#zk��o�=�<��+M^#�����o�9�yx1�F� ~�� �~i�^\t���Lz�M{)#y����3���_�W��Dp��,@j5���=��g<3��d��y�xj=W����UcQhCD�T0�H���n�����_x^�N2�����(��������[��S�k�V�D�r��7������E4(@���n{�H��=ho��P�r�����YC��8(�~@>���������x&��=P*]�����!���q��3�%�6����"������,De��VOI�g��'�����
4:$J�H�!BU���0�P�0����3�{e��B�?������Y0wo��n��*���^�w^"�����
w+��C@������?���e��M+�Qo|���(?$�7����s�5��Fo����F�}����M��7��`K����W6���o6���3��%�g�JWn�c���|�v�(���v�P�����
�/K�1r���t����9��A�"<�K������8��������R���J�{�"�!���p<���W���D{8<���*���F��x�������E��EBh7��q���"Ad{1~��T����y�GAB}�)���L��`k��r:�05������9��Q�H���J�8$Aj���d$[7�����(�������l���2^�#�T��<r���d�5fX���Q��,{��K������T+*�T��x��[�!����t�g$6�s�O)�K�q	��o����;�!�O�����,�`nc���l�����-Z�~0�&W�3��YfA�r�
�.�����5�k2����Co����z�mA:kV� m7����T��f�)A��TH����@�5�"��i5���t�� �I��'�NK<H.��)�����a��L�1s�d�w�6^S�,�P�2!v����F��nm�+1��5m�P�\:��,h�0���&\F}ia�r��x�J��m�u��p���]ye8�8�"p�������G�X�&�l�j�u:9�zg[����������+��������ml�6����Z��Z����������K����dr���}��d&���Fs{ ����
`���	��<]������w�&x�������
�x��}�b)+�k#��G�f�X�43�:���3��$�S���x��]��Mh������t�3����������0���>{nE@s�|0������7~C��u��z#S������im���C�D=��kM�m�����Z��V���vY<�<Funce�|���4��DH���3u�-�����7rm��d��f�F�����m�2�-���v�C0����� p�F�8���T��8�B��m���&ke��������4�L�i�s+�j��S���l���lm��1��i������-���3�Dk�g�Ty����)��v���A��b�{�V+��z��Q��~�Z#kg6��H�2l3u��E�7XBG&9�],����F:VW�����e�X���3��u*&V7��gXrKv@���N���V��������A<qg~�s6�S�����.������e�]�o�r��-,$����Ph����-��K�����VG;�����A��Y����qF�`o����l7��
��@V�`+���3dSP;}+X[��l+d�^H;c%���R�S+]�i�6�f�lH�����1�G�@��slt����$��-Y�������am�/��,��r�
��}�����JNv:��7:�3�������������F:*��R{mZB%{��b�b�&g�	���Dd^�^N'u9���>���d���SWb53N@z��J��VB��\L=�e}@+�����)Y���T�ef�d�t���;�ys���.Y�������:�,��r4��<-�J�������.m7�B�y+HI�A6����8pza���H=;Z�t�=_?xq�-���u����~�j������Z�"Sg�����z��Da�[���������1��8{)�3;K��7�^%X�#k�f:uu�Nc�������\�$K����y��0���f�$:�����n�����T�ef�4�
���
E�����f�y�L�p�/6������Y�y�DE�bT��J��*h53N��F�J=�Z�Rj\�R8�B��i�lY|�a"�L�a��%WBzt�O��,0���f-]3����)C*�V��|`e0QH_R}/���<�I=0Z��F.#�QK�J����4
 	Go��R�(����:;7T�>a��&c�-k4iN)
��h�LK��7[u^��y�q[S+N�i����F;�:�wQ"�M_I���|�M�T0��-�����������9�* F�t�2���`�n6���V��>�/�dx+3+�{�*�<|���t����AZ}-��6[��0�-�e�{K�����p7i]$�-FB;;<uK���>�����w��EB�wB������	k�����!���b(h�>h�I:�Y�&y>
��a`]$��>�	���b6�K�1������	���1�Vq�q�|3���(h�b����R6��1P�y�uq`�m�^�L^q-�d��8�4C��(ht�����F��qE7P1�mmN�7�����������q�J-|sncnif��k�-�(����������ob>�Z���,���cy���
�i�6�0������,�wd��m�f(���-�Scn�if_���j6�4���
rI��a��\���r6�?�]L|���b�-C��:&V]N1L�o����7O��."�FD�1���r�R!Y����@�*��%������dvb9���[�[18o��w����|�*�
rt�z����,V�5�5 ��[�n�R��v���@m
&�s�nmr����[����;K'��{�V`�9�����`k�+F���M�xk�?�SA�,H����f���Eh���x�J,��9���)-7�����1E����gn�N5q|��P�~94A;;�6�W,WVF��jf�1���������I�0���
�5|�<��l����WL_���/�����rt����|�2)42.>}�<N�I�p�x���l�[[�F���4$�8���wZ&��f'����m���`c+	����U��Z��wk�(K�V��������L����V���N��q������b�)��������6���������b�%�Fc�S�c'�����AS�������5N���o��`c+������������*v��?���A�9��
���s@�Z�����8T,��Bb���DWo�/����Pf)����[�^!�72n�����ahM�ty=m)�[�k��$dHo���L�����t�����C�x����.uIj���2�Fs#m�]� .�bv��������H���-%�m��U��}����cc����z�����wcs�
��O������}j���]����
	/��
B����r�tI��n����b}�d��\e��m��l�v��S1���koN���!����}�����fN8����Q��I���M���{�.�M2m��4jv��f{s������QG�������l��3���g&����e�@w2<7�j����i�T����T+C!��ZE0�f�X����:sN%a�FT-n�V�i���~��k���U��(K��v���kK�?Q�l���@�Ox��Ls�<�9�\W��%��Y)�����������M�je��^���u}��>��M>�8+c��y�W�\���F{K�����@.�)�8�F�,:Y���7�:6:[��vf\n"U�3*@]���e�|����A�S�����lRA���������gl�����5�>k��m~��^�����z�D>,���>�%��~�����f����hfL��5���lC]T[�]��I4�&�\�A�)�P���mi�E�6�['cYB���X������l	l��q��-��i�j������yh����kQ��a���m���yU�����p,��Y�I�$[����>�}����A��Y=%;9lY��	�����X�v?K�������[���EL^K���.����Z���5�,qI�%U�_�)0�����5�"��]�Z�J��)o>-NE��T|
�|��[�����2�Wy�i��$3/4�_�����V���93���V�Y����csu�c�����mk���K����&�)�`�F>�D�2�|�J����<����x��K�9-"3C�U��g�_'*L�:|���(J[�u13�����ZYskgm���m��<n�[���f]�Eo$eXe2�����2Y-��0�mr0��e�[c�Z��&�z����k��m��h����3��
P��[B��s�g�ouj[�2��*6�60
f�.B)kb2R4ebZ�hQ���j�s;������SE�.�5��d�g�D����3�����D���uA���M&���n����	�,�u���a���8�B^i=�tqKd�y�������E�lgK��-�����Ed��3Q���3��/��&���%c�g]P']��L���e�TH������H���_��43��$(� �(�[�v��F~�"^34e(�2k���N���-���8����3��a'lf�Y��L��E��g��`I��j#����a��t����4:�f���h�����%"������f��d���<1n�]c>��A�	]���3�y3��|�F#���;9}w`����7�"���n���^�
���'���������B#�>�1��6cD���'3��Ry��Ad�	�F�c<�x���?����/s������+;�1����3�	�!�6f>|����
D6��'���;�&�>�{�(,�
�K��p���g��BS�������������cc��q��,��o���[�{'4�	*���4��Un��BM�����o..n�o��/���_�^}}zu���b�R0���I��8�~���x�{1f�Q�0�{Wv�-������u7Q�-?����	�)�/>
�i�;^k�{�:a����d2��bS
�m�X�yw2���@�
�@�#�U�-�c���e��� ~:�v����f����j����Zo'BG�|xbl\��@b��<�(8�j����>��j���c�
$�9��^���%��,�^�=���>�1�)�'���wB."{�������7w�[{���_�o��`��������������~GS������-�K�?���+�d9Ca�bx2���,-
� dU�XE;���{���
vc`k�x/j��H#���j����	D� 5�}d��>�`1�+���<�k���l�w.�
I�g�S��mY���%�&]aS���l���Z��P
���<1aa�M�����^�s��O?+}����2�%6��V��rYw+'!e/N�=��yJx�3t��k��)i�n�'�ne��[\d/��e&a�*|r�+}k9@Q�Gx�#|�\��������t�b����pf�D�f��86��������b�Y
���U���e�������g��\`���3��b�`�7:q���}F������y��o�@r�C;�g[�a�lf��� ��3����/D�;�
m8l��	>�.^�#��LD����83�,�sBb�}?�>Hkt3��k��A�0���� ���|����A�zA8;V��n@W
b�g��8X(����k��0�c8Vr��s�?@��AB���"���/�#�1�{e�4�:b'\�<����W�TC�C��������._~�rak�7z#w�2����i�M��u�`�e�>�L?�T�48H�?���Dj�S&��$����z�|����P6H�����KH!P���.j���4������GQ&>h,��b�/�����;<�5�
ic�X�0u��N�0���A�g8��>��X�d�������%%u�*�e�;hF������O��53�A����u��;�3��"�

a�)n�:�M���`�����
�EX���A�9��J0�Z
u�Z�4Z}�]/�c����XK�"k�,x�������W�7��O����_��+u��4���J��8��-�g7.H�@A/z�����
�������FD����0	Eg���l������c��[�|xz~r����%������/#`�H}��$\�9�{1=M;L����nW���9 ��tT��ZG_I�u�t��c(_Sc�\�['<��4Fm6e�y�G-�P���k&������3�V]�Q����X|��=o�	78��:/"�����]0j��F�Jw:�p�{��	��	~o�t��7�Y�B�W����d�����B�z��|�i��N��2m���^&�zC�ld���=yh+��nx��,��y�jA�@���E4�C�:j��At_����#�
������&|���w0����F.U��I�u��yE���V����h��z��	�w���N~�_N�S&�`8p~��#�R|{2c��L1B	���G��A��#��C��8@I�����Ng,9�7�gS�4�+*5��y5m+WvW��v�dv(: �'y=s9�,�����-#��N�����$cv�n��uYL{��0e����r6��� J��<��s"P�Fi��uh���.�r�5q7<�VQ�A���@���V[e�X��\�����I�m�5�4V��1P�Q�^����X{���R�_j�i-�W;����v�d�z�&���b�����xPD.������t����,|:��o�������Wt7�o��)����1�t�"\�rl��p<��\�N���qD^��"���/�y�VB��n�S�U��A��isD��Y"�h-�B�"}���x��Gw����G�r�6T��X�/N�O��@o��c5�w��PJn�d��h8@�k������S�;dtw�{o��!�tD�G����������#��^��Q�$
T��R�A��gh�����D�'�x��g�FX���*��p���i�����4�K���5~���
,��>
-����/r��`U�q��XQ����B��kv��$��@��:r<IE��-��("�54�8���������������vC��M������	�w�&]��{'��aH��!&6�����q������n�Bw��-��7:�!x���&�F��l?�����D�� ����JK���2��P�?�u����[v*'�/��-��Qq��9�8T>7/n��@����mg���M���?s��^�6��� p�;G�7����]?�G�c7t~~^�2��������	]N&� ���?z�����W�k���!F���=>�N�Z-���I��O��O�)�Q�re>T��g�d��g|}h��N�Zm�V��<��q���ZK�'�����%y`PP��23��9�Ug�0T`$��;uf�J���r�$P�}����z���(}[�0J��+�Z1�!���@g����������]�j�\T�V��^g�{���F�
j<�Y^"��B���%9).F�����<�O���W��V���6+������c����{X�y�D�81��!yO�����MA�A}��0�X�N��x`�D�a��%����8�`�Tnl|�e��{`H�]U�t1�{d!��;:m�G�hK2�;A�K�1%uPX��'c��f�020b
}�e�P��-��(W����.�}'o��M����gG�|�?N�X����L�
�]��K��0L�5�����f�.����������|������KS4�A�	�F/�2H�(`0�� -����vii 9 �	�%�P�L��cc`DbF8lTgT���;n�M�L������(b]�����L</�����'w���(��7v�x"����_�6���.��iT�N���z��r����w`���M�Zw8��A���f���o�����;9�Y���j�;S�1�*:1�����I����$��=�������O
�`��-�c���=R�]l	H�A��!���z�h���A����_Ni�E�j�G��?�-qZ���L���PI��� Ng�EAK|���	����<�����M�S�4����3��/�j��XHd�:s�n(�q�
���A1���j�#��!LJ��A��F)e�<��p������E���N�KA���ZF�u��f��3���6-�'�uPo��%��S
�@�f��1��}zuvBj��	@qF��L�`[�4�{��t��y���v��CR�:����x��=Z}b���l\_�>�
�����@ |�8��?�����)�=���Q��FxD���L*,V���H�^��G��/v �cc54�S1c& �E;~�
gN0��g{g&]#�����YM�E1L��!�7��9�=�pm��D�~��L������-����-��o1��������
�����a�n8q������e��e��v��V����?�VQ)�����a�$�o	$�_S��G	�r;4'�!�8�����6��+�>���7�} �
=5)���` :1�������g3���s�����f�
�4������JOJ�D���r��zS��@?t��%������PZ����`�UN
�������M��Q���+�p�*F���C�oG��(`����sQ�Vp�����>�����T�����/� |p�\Aa�l4����`���	�aG�Z;����.\�h����+�&�����c���b�C��s�?a��f�^8F���hAC�Q9�f��A
A�jT�2�R���8��Hg&�F�p�P�W�����]Jrx��b�
��	B
s���1S�S�%G��|�h�uyH;������}2X!B�n8���Tyq��h��:���{��w��Ar
sQ3a0���xO�@��������X�!��?����������������x;��p�Os�P=�V�e�B�������v�����B@Vc��X�"y��/�K����i�}��mc�(�b�������09`n�}Q�G�/���8=���A�]�j?���(�l�:��)�/��e�vo��������3
�7n
+���{e�h�DF�\��LF1S9�b'b�H���3<C�a�t�.���;�(��,�8��E^k�����N��m����)G|���J��oN�S .��������@1�e��������3u)8�0���@	>�V���#��������z4����c|�2�y@���r�o��)�	<
���x��Z`�,���LL��o��"���_�����]A�gs'W��I��o��$��x�_��*M
�l�TX)���o�)�?�m<<���l�% �`G�c-����U�����;^�����1Z�����b<�\,<X)x��Z��!���g���c�Z#mNZ���n+==���JA�$��L���'�_>J�?�_���I9;-
��|�b�U`�p�c���N�y=��-�F#���P���������2�������h�:}yyuq�������j�Rz,�Z$��Pp��#8�+�
����3qF����u�xEO1�:{�c�*�E����p��22�
��N�>�W)�&uXooQ��C������Y���+E�������"Av��}��7�����z�����Hl5a�S�����K�2~�
��������CX�|z���
�����1��R�3�7%��TE�l���(�?�k��E�</�������^����yatACr�U�84�\���'���(;�bR8�[6B��9���s	N�[�Vm��Z�	v�*X��@�������;�;d�5�--^����{��� @����D��M��y�	��0!L��S�4�;�����{u�7�.�E[<{��&H�-sq�Q��MD���o��!�r"m�u�����[�4�?�-x����/�/�u���?8�2����Y|���n�I�����O���I�������i�)T$?��b�|�2!�.��cP�(N����o��V�B6OX����)�8��������4�i��H���L����Bs8��F;�cC6]v�v�S�c�^K��]�|qzyz�������zBd� "
��`�b�Z���t<�xur����y���x�L�m0�*2��9]�9a�2-�Q�/���PhM�n���Z>�TG!t&�t&�p&W��:=���5�Y�����I�����YK//����R���/H����-�i.}j���&)�v����|P�o�)����O��lp��d~��|e-�E��W/�C�F�����E��"���]��!pvu�*M���������m�w���g������m��P�:�7,�C*mb0�$�i�^��x����������
hl`F37L9kE�������;�f[g��Oz����c�pP��V[P�j��"��k�[mC/;���m�M-�?G/����`�KI����;�>;O�Fo�L~�`�9w�|)C�-��0��)q]�����n�gYX!Tf�������a<P�ht������Z�I��6�6j�S��j�6��O������������4@��3i�
�\eC���`�����M�����������"E����FMY>h,���N1v���������a��*�P����B9�}��$�O\I�}1�?������l>U�i4��7M��-�9�U2�?�����5S �x� ��1�����I}o���<q�~�a��5
����K��6o6tmm��,����&�i�0p��y�����6���7������j)�WW�//.O�����]$-�_�'k�cr���i�GG�X���.D�q�31��>k���L|;k{-�]������,%q�
d��mF�DSa.�����.r}����M���EGujg��N��ls7���mp8�e�G#�^��#���Ub�b*b��o�X���?���& /]_���~5+��bY{��i�b���g:Q��a+U���B�K������f��l���������`��P����^p��?��H/�1
��������r����$�E�^�Hz�	)�+����;S������'�I�0��9�`����	�:h�J�]��prq�n�t����X��`�R�5:���m��Z����d�p�;���!�iTUOI+�N����}����������^�����T��UmU�����~�����z��������V�Q������������?v�4M���&��V�4jf����2j[�E����T���O��-{��1���&?O�t4�#�G�,���C�Ie+?�'�'F
i�S�8���|���A��9����q�)i�������`�,���J_�6M1N��#����`�e�b��vZ�������W����V��}��)�����Os����+�������O<X]����	gpNL<�&���"[�xi��	�9���b��~6�eCx5~4��D�],e	O��S��J���/��=~:DK+B��	�H(���B:kC�S��I=�c������^��������8�������7�K;�����?����������������:�/���Pu�����_bl1�����e|�	�"��lX���������XAT{�Kq�������!����=B��� �|�?G���������(�E���Nv���I�)�#���D�/������(9�}�D�[z�����o�e��jq�G����~����*^�3�RR�*YG�?I�>�9~q|s �W��"a�����Kx�����`_S�P.��`�!�~7K�����3��|�o.��W�G$�CyK�YT�u1_��3	s��F�E!^[��G��
�Q.�*.��2.�����'_��>$�����:=VC���a��,_!
�Wn1���������.�4@�u�q���� �#m3^
 `��Y���;4�
K��ZJ,��E�~��?���0���.Ni���rT�
��/$�y��!������Ek�WU���������w�
�z}��e� �\V�B�#|'�����Out�Z������(�Y�
�@��7so4 "�O��A�A�lv�<<�-p������=�%f���W%��;���[�	%���|����^�a��C�5z4�Tl�t�WUU\:,�9�r��(=x�v���3���]�����3����������[��P8,�������������`�H������%���O~�^�����x���DBn��S��;�+p���:�)e���\Y�3���[O:�\le�!wm�t�W'�5��Q�aa���AA����s�c.L-�Y��V���F�����Z����6{f���'���<
�^�7J�xjU����,7Xm]<����A�+)�����s�������`��SW��n��Y-��y������r�(�ik5�CW�
�����gxr��|6�'w�Gx�� ��y.���}����6�HB�^vQ�Z�n�r2E�V���+��m����.8������mxxT�F��S�^�����$��CQ���,�� �7)��b2PY4bPe9y�A��?�p}��*O��9m�;��������������cl�H��oT�ODe5�my����[���r��X�5R��t)!CH�&p���Rl�PVvb���01��'�HJ�V0����>�l��5�z'����*J�� �����������c�8�TG���������%����28<
u�v���4���dW]��;T������"iqs;	��I��������yb|�b����7�TI=����iC�c���;��U*�.��"������l�/�l����CUx*����^@9jY��|�����\w�xWH��|&t�Z/$r�� pG�3<nx%����te������v�|�<�����&�J� ��!z��]�=E�����W��D<���}�)���=�8���RZ�����5����w�BU�d�����,��0�7�����6$�N��|��d?����h`�#�Wxr
�qhc�����6Cp'mv�>����A��o8�Q:|2��B����OGGw������6�����{�P2���8PQt|�����#�C���H�D�r8!��H�U���'�� ��S9�.0.����Q���)%o��]k���
��_k�;G����p��T��s��2��7J�	�����X���"�����&)��:�p>\�-�����q�L��R�"���g}Yk���x���:�����yi��E�@D��JC#��1r��u#�N&C��K�������C����5HL���!�����AJW�Q�>wq����	�@�
#]?u�i����~���H)z�����g�P�`���R�Q�A������M�����$!,���e!��j_d�]�_�����3��x�0j�0*��}�9�x�;�h�2���O��Q�gBLG�0���1���H�F0A����T��	8p}�z��vR������/_���.|>re-NO6����yr`

��j�;27���M�`�G�����nW(�����Ff�SD��#|i�h�	������Oz<�)d�.���Hv)P�MGUA&rB��QC�6�X�$���Md3P�{��	`Y*,�C�B�@W���o'��@i����������E�J|�x_&����&(�q�3���F�B�FT5��+������&�U�������V�n����C��CYi������NR4@����?��Q�c�W�)��q]��e��^�w4�5I�@���~��,������\k��O�f��d�1�%f���jU��p@�����|����qHf��i%���
?{z�E�<�}w#��05t������
-��LT��0*
���0Qd�:�������'���:�OX��S3�R����%6��W.V4�u��3Q�������j	x��f?��}4����`_w�e5%d�,��V�h%7F?�H��x&
��5���/���`e��N�Y�fG5���hA������c��������83�EB���a��xo��r��u�a
E�_
vpp9���c(�*$Vy������A��[ �T��vc�>�o[�>�P��C�\��
���P��u�3#��h'E�X�La��V}�U#��>��]�S�=�+C�>q8�Q��$���Oz�u���M���X��9�H����9���Q}pYUF�+0��t��<��}w���=[m,�Is��$�+�/#E���+O��0���3����bPe\{�������py�0����rP��3���Qx0�A����[����{ �{4N*��G(F��3v�y���(�x��C��od^k�1���kT&����<E��T9�������D�v�����z����0����%�
:T@�!�����=��
F��VKp�Y���F���������8TG�X)s�R�m��*��RC(V�����y_D��`��T��x~���O��H�wt{�wt'z�q�#��8���Z��V������'��T���pF�ch���#��9�`��@zF:1�!���w�2�F��V�N�/�=^���:���Q�xq W;�%�3�������.;�$t�o�"
���=���gQc��7�u�ED��h@:j�����T����}*G�#������(VN��0�R�L~L����<�n�8�SxE�E��p
b�Gi/]�|nG.�a���M|I���<��T,����o�;D����^�}�X�����:6���0���x��'*Y��H���5a8�',W�����OQbRQ�����W~Cq�{�?k�q��
\t"���p���Dm�k?zz`������5y/���#�����
9�(�#9/�R��|x��/��"TQN�������K���gia���X�t��HB)�Z����>�0��o���Ou���L�8hEz|�	��p��&�KGr������z!�-�@z��E��z�|�X��Q{��Y>Fq��
��-
�}V�[g���h�E���@�[_d������	�1p����u���p;7�����M�n$����v���������������������>���t���
V�?���t�g�7x>E+�V�}G+�p�.J��6��=K���H���O0	���`� �����cl��'���mPL����%��)���D"~����Y�g��t�,9�����r���"K���7v��h�On�On�On�;���~J��>K�����V���	�>���2/]D�t�*k��J�D�E�a<2����J��i������,��B^����|I'��k
��~�xGN�$A/ZJ����P�>z.5PL�DL��	���������@	T~H�y�xji�_z\�F�R�>R����O��"5>Ej|�����)R�S���H�O���9����O1�b
~�=�'�-@�v3����-�e6��?�O�??��G��#������T����&�o�r�����@G���w/N�O��o@��5��2���NH�����;t�@8�0MF��#�I�E� kh �c
~4/&���r������0��c�c<y��ot���l��q�9P���oG�
�#9�`%h"��G=�&��S������2����\H����D�����c�Ym7##��D7��g/��)�T�@k<���UhTP��0����2����]�=�q�M���
�c��~����8�-c��b�
o�"��OK�Z �n��O�R���:�b�\�o�����A���~�����S����=T��;������+����f�S^R�P������:a|��Hr6���%�+��*�k��G��?��%����D'z(�SF @�P��Te(�@
}���'����1���K|�mm�9�=W��|U%RR�v&�a8�7dM�
������^�6��sd��#b�B�N#a~"u��B����U~�N������f�����Qa�����k
���@�]Xd��G���L����<`B/��t���e�3�ES�~��>� ����� ~�BG��_��D
Tuc����v"��V�Ul�f����$v;H'T��
h����}�O�����S|#\��W�BB�n������l���������M�����L��-"qz?{�eE&������M�^�-���.~n_U���d���@�@���{�
������������zw��e�����<�g�9/�?�)��B����G�!��8	w��Y����)���
��f�����$���r�+��-������u\���#�x� ���O����ntG;E��z�������r#c�|�.0�@��C8�aXr���$��0�z0����9V|/$S�O���t�"���CPz^U�h�uE���G*r�c��]����Y�hT���O��y��|�>��A�OO��/MHF�Mla>18I���w�:%nkj(���"G��~*�O�TP��nZ���N��V���k�!��sfs/JN���&3k�,^�����z��/�l��o���_���a� �E�pM����9D/g0�|+;�����r���`Ov��uG����w2��n$H4#�J�)�L�M{�,���;�M`=%~S�/B����-�m�3�zAl����h�tq�}��8�w8*��8��z���h����QIN��=qF.���OG�hP>rx��3�	����l�7b�=L����������*�9.�K��G�12���(��eO2��[���������A��8��6<���6<�R��#==�"�L�1�J�h�������?���������W���|����LR�T��_P�
?G�@�������.����L�c"�;�P��b0zF��L�Cf���] ��wG�����o��k����dv�E����r��y�;x�4z�bu$�H�l�>QS��9x��+�-fM�R�9�#��s��D�;<s`��G����XG�t�����s���Gn�,w��G���W��|t������K������E�PV��v�(@�E��c5�(��$�M��[d*dr@A���\9�gG����5��i�\j���;�c0���SGh��(��xH{��=`� ������xJ���)<zN���C�������q!Y�_�Ax�j��6"���;����f��^����~���vpxp��v������0������(��Z1Lf�����C^����6�?���[t������(�F�h���m&B	���\b���"�����|�c���'#������SS _�(�H��t�oc�������(��	C�������8+C�J����}���QZDQL(�6��
1c���t���:�;���*GZO)b�������?�A���Z�����������������������.�}�-���~6xZ�Y��M��>N�����fe�D���H��_�2X�e��cA��ea���������V$�����.k�F���j���8���I��?��*|��+���v���"��]b'��kl$A�7nH2�N��Y��-�|��A�N���;4YJ��.��&q��d��UJ#��E�����O���n|/��8�T�;P��xy����?�?}vP&&x{C�v}��H��v�.��&�9��� �~���oB0&c9U��ZO}}���,��	J}�_����������-���T�?d����>���g���8����t;��#-�4�����4�F�Y�����d-��.�R8�@��S�1����{�Z����N�N��}Bp���Y]bR���I�5]9N�c�����P�|"br��� Cm����=�I�#��T
W��y�������!�(���6�2����8p�^���������c�� �>���n�k��I$:>��)����ix$b�y�i�&��p�c�6~K�����D�o�R��o�`��Er�����.�DS�kAg3��Q�I��+���@��L�'E����������A� d�P�*���,+�V�����|�NYw �G���b�f��H�hI�c�[MZ��,����"�v���������_A%;�����J��XP����W�+��*/gj������ulI���)G��(����t��9����j������+ �W��nEV���M��c����M�^��Y5��}���?�"�5�f�m���~���7�^s`Z�v�l:���l�l�o��k`����0[F�������%���?#��y����?�����1����?����A��m����q<
��f�Y����4k�Z�t=�����/�oN���P�Iw��4e�R��������67�EP���)S@*2R�v42{���	K�h�>-|+x�%V�:��R5�1��$�*��9e�4�����h�F��-�r<e����_�r�M���I�kG��VBf�q7Hy38�����oT*�nBW_�1_h���@�m�������<f5xW#�6�F�j	��K��?���63�G�S��v�8����T?���0��7������=�	�[u����c��O�r?0��Qhnb����0�#���XG#6<l��������ttYB���������
T�|��+��ky��H�j���
"����Kgf���Z�����)��@z�nq|	m�?�������
��1������A\7��LO*�z�`���`z�d���4(�{��]�4{�j����/�zw��o�\�����F�l��@������%�);B'�(B����x��t���PC��H���}uq���/A�&j�����0;����
5��89�iYV�U6M��j�e�����������*��))���+�dO�b�ev��U���m�)����������� ^�	<1.��S'����mJ�@�SnE\��a�t�DIi��Fw^`Z�����U�|����<�UF!+�"�A�.@�5�2���]������=�q��~�_�6�������@4B�����,��O���������0uQ���<>95��E��_0���L���2(-T�%C�L�
�66:�
������\IRH���"�(���q
;��R�}�t�������	QV�pL�����*�����r�w����%i��t��0x�����4�'Q���7���9�i�k�2�d��j�!B ���8��!��?��F�"�����2��j=�JV�d1kdhO����P9�e�A���F+k�p<��'�W��S2��a�-#����4e��0LQU������Z���R%@��_;Q�}v��@��i�.]�	�JX�E���5\R1���NT�xT!p��2��>V(2�Q(#]0U���Tx���P�c��x�#�B�����e��.8#>�_����$��P��%H���8�Z��h�!)�<�}�,�z�ppf�2��e�5��d���'��(���lA����C�P��a����P�,c����5w���	�0sSP�
�M�M�*D�36`~��-S?��
�fI1X��=�8������yD*�(E�~��������`�w�|����I�� Y�y�g����{u����Y*����:�i��_�Y@�R����*�[$��]�kx�C�|x+d�2���$���z'�1����z)��x9��GP���/	����U��)Xf����n�)G����r��T�J�qd����@s�wc@d#�6��AZVDIx �i�C�������s��)�
��R�����r��o������|�6?��)I!HS��v�]EV2��X.K��l�R�(�B�����w��u�yA����j���,��<������[���}x�7���^-y���]$�[|7���7��D)� d�C��ow�&��v�������`�X�
�p�������T#�r�f\���g
^}�,p��t)V������J&����p�wD��H:��8NG�X��@zT&bti��b�JK�����;,�<��a�98	N���x��.K�D�
^����_O�������������__��������N�����ktQ�|p���"����o������-�Df$�q�4$�$�����3b��8�����xD����4����b	|�}mN�o���V�!�L�����C$��\:���

�*��G��a����6[���2p���i\�G\�O.�Z����|�R��|@R�~�`-��p�+��gU�����B�.m-��� U��m�(�\�v}����i�>N=��m��h@������^�����K�m2�8����d.����_~c���"O@�`r�9�ylq����L@�z���������_��h��~m���}�2l�}���L������"�9�b���av���E|�Y��M$�+&��6*���W����5C�?��������!�.[���x�C��Q���w�',@l����V���>H�W
�&������k�V������wk�q�����?~��B����&�~<l���%���R��o����*�n�������7�_����������Js��j�6�Eh3%�����A2�����l���7����wV�����!�s����9�����@�;o��	�.��IR"r�Na�=�����1�O��������o��,"�b^}��a��tf�������<^��
8�]�N8�(�0S+�z��c�^�h,���Q�K>V��GS>���"1/��r����`4^�H�'�w�]s9
a�~#�]�>
�+9w�bpS
���>���n�F����o��W��� Vm��	~m�-��	q�o9��b����4a���'���0���;>D����]$�o��
[=p�O�/�i�����>�}m�,���(v:���2<X�����9Y�6a��D�q����j�F�C������W?���>]���������.A&���^�Wlv}����n8;s�����@��L��G��I4���8��&�f^t.6v/��iq�����_��������W7��(
}
��zTL���8*������3:3r�w��r���!G�������0F)C���H#������Ho�:�4r���B���|/	R���~�JJ���cP0P�
9�f��"6#e)n�m�����{48�t�n2��oF�R7�������4<&\����.��-��Q���?����
���%X��d�	�.M'��~����'�z�*Q\y���v->D��:�b IJ����?._��&wYX��{����;�|TL�z�?	{0^�/z���y���yP�����E4���w���V��.�u��q�QZ��>�����^m��]�2��
E(m�jf������lU;	�/�n�z�D��������8(V��EA�Kz\$Q�I�o�5�>xz2#D
�y�N/N������S��$��n�\�3����Jw�4�>�����f�Ss�����Hm9��-?�t~�4�;�k��Np1m��c%�h�A��N��h��wT��� �&�V�g��#���!����g�����b9��ca���Q���<�/\T�
����9��.�����%��<8�T���Y�N���]�%�'����,Q(������x�FMH��������y-��H�=�V$�'���
%w���8]�
jG[�iq-k������Qg�
�Lk@��9��Vf��Q/:�:��(�
����u���S��=H����i����g���ix'��ar�<��(a�f;_+�L�A�X������X�z�����G�H��T�v��Q�5��{���^|��$�G'�G�[
����-�6���D{��WYx�f��^ag���vH%v�,Bs��i�U&�I_8�S��;n��
]��n��#r��'�^�����HhS�e������$9�6��V����A��<�54CX���{�wG�����|���I���l���vD�����/���X��V�-�z��qY|*�]nD*iWP�-�M=���"~\���<An4zYL���JR������= }�������do;��WjH��0<��$����N|�?I����c�V���~����
BC�o����M����Dd�����
=���uA���R	�-h�WR������lI���	��d	o�^��<�
[s�,�K���U3�����?�H����h*��8���n�G"Rrx�N�����P{�
�I|�������h��p�����^B	x?����G�-��g�(C�M�$��1`�J�1�Y��������:��s��O��1RH�FB��8x��j�.Hw�%�$��z�p�K����w��v�����v�mE����(�'��?�O��B.�I-~�fLm�^{Pa��v�c�G�����
��X�	h\%�6����}T���f��(�;o��
����A�������������T���9���EW�qR��������>��V�~����r_��7��}��j��
�o��>�t=x�zh���Y���������K
��Js�=y�U��6Y��"���}�����5�F�uot�;=�w:����w�����l8����c�8��2�KK`�qX-�����Kze��n.�7(� �g���3�!t��?���|1��H~P��"�T�1_7QD��ERmXVV�Q�j���j�T�W����[�P���m
�W���9�$R����A*6��IT��v|�e��9^�m5��8)H�������/\���-3+^�����M����6������h��Dlv�����^CxL#������AO�-���e������a�;>�[*�?�^�Q�\%��Ve����0NB(1#b���Mj|A�O���u:��Aop����
�+�G�
��_E����~��0���j6L%��d_�"H�&Y�8@�[6����m�K@�F�q����I�?��6YG����������s�]�f�����$JYr,�����bB���h�~��jsd�q�#�o�����-�sm��8�{~g
h��s�8X��a����=��A�O��`i�m�(�C��a>r�E�� ��e���b'�!2�����IT���9�Dn�U�]���W?���\]a6���wi��|�Z����\���go^^�����D5�A�$��W"�W�.jo�e����K(w�lnn^oI���7|���SAcq��S����$/k��60J�����������d+n��%����:�q�aOlO�rU�q�?<����������Sl�8~��;��]��q�+�����>��7�x'/R�]m�W�`�Mdz�EW���47.��W��L��F_�@]��<I���%�4"�7�eP�<��*�P�F��/�:���O\�M�l�6�� �
m�qke�j������3}���U�����z����V�fV��������
�J��I~�L���ZK�FJw����~�������Vt������

���9��?�������kNPT�E��T=��,U?QBO�w$)I���6��s+�K�EY:���K��0��J:�<_�k���$h�:'�����T��oE7����\��C�n���Ry��{DQYJk�w��sI����"�������*��9)B�U|�td[�[Q{4+�Z���N�6�U��m�S�7������-��b��"A��1�g��*[_�q��-������l�fJ����+���ppx���Pym"U^SC��rE�x�2��$�������5p�|�B�L�-H��89�56������,���1H�n9���!�nQ��>g��3�ae���E�S��"}���
Z�`�=G�U�m��G��� ����p�$Y��1�����Ar���&��vJ��PX�
'���Z��������;8o�_�+����������Hh
��5	\\k�q��e_M���l��6^g��~��\ ��%�U4�����Ll������ *���]�|DX����:A���<�a�2J�b�e�j�l���Wz��Y�
�J�.�S�Q����������<�W�)-ky^z(�W
1�t�����N�1f��"=�TLP�R����\i\S�b�)��%��7�\��2Q�-�7��w��N�W]+m�e��dMG�������>_��6
�^����^xIe�C�5�p
��C-�{���n��J6���U-2��l��OP�`,��?��� ��i�s�;+�"��@t:h�:����Gd�������O�?�-�v�.�'&�������G�������G�?����������G�a�$9����p4���Q|�>�����(�L��o��ap�������uO����,^n4�pK6���t��\����Bu�g��i�]@�RNl��zo"����X?|�Hq������r�Np���,zI<^4��0I	���N�&,�p�A)��
p�������X\��������xE�)���u$����Y�]����:������I���F��"���i1��(�z�N��M�*�B�������|���H����G�a)t��K����z+	��C	��R�9x�BU2\����*|���&�I\E/���D���7�BM�(�W3N��I$�qy�z�?GG4|�����W���76a�WO��P�<Qs<����v`2N�����
���x��*����0�?���\����p�
	���7$@��9���&z5vd��v�)��]m;c ���������J��U��a����^z�������K��.�@ K��i])Lutyi�e%�8�Im��^��9��~�>��6������`?$R�=���9*qi��i���q�;��:�U4�G:�-'&�~.���*�T ���t���4��e��6���h�����!Wr�Mg�O�31e����Iz;�������2�|�5���d���8�!��+�m�?�\dZ�`����K"����
'���2^~b��������#a�V>m��8F��K���
��v��1
���2'���"�!���mH��i�HMy���������|H&N�'�!APew����~��_�^� �t���	���-����6������m��|ll��������V����fd��^Br�[;��1��0�W������ ��\����K������Ux����>N-�S��\�$@�2�=���|2\�r����I�H�}f����W[t��<;�'`H��-6��
#�����W-�P8t'�m�n:*R��1����b<������ '?��s	�6�
�4'�J�otn�A[��S.��st�'$y�������[	���]�u���������\����o�Kz4"��, ��\��m�;uS\��@�*<Hl!w'�4��I����9��/�k����s�BWA��+���6����[`��������Nj<�����.Gi�&���d�6��E��I��P;�����d���*���A~��7��@��y2ZN����	�P�&Z����vp�9��EH���]�	B��V�Z�f�9���"�u�����c5>oO�y��K�,RN�������=�3��E2�E�T;W�;h,�����h���#�^�J�u&�tVL��y���=���@+RT��:�%�$�>�[� ���%��&��:H��p���E���G�����A'�m�u<���[p�%pa���e��	f���Pi�+����*!��L4���%�`�]4����&�����	��@:�&����m �TRE�F�����_�W~YxD]�	��e">PLt��)�L]-�e�8�S"
���>���mC]�L��I�E�s:�R�>�c�JE�g,x'���#�V��g����G�gS�X�}e����!���p[f��qQ�[��\�I��&��
	�LZ'���^Hl�w��c��q�!�lywo�1_��B�hOX6����A���XT�q��|� b�r
�������3b$vbWQ��t0J��7�1�����r��bIU�.��E��[Y���^M<��c"�H�5S�F�9��cS�f4�bf|�M	r�BPtBZSeCkr�Sp�`�R-�q�x�rx�8��n�����@(��������n�L�(U`��9#��%�j2p"��6����������S�al��eR\A@�h�i|�f]$�NQ��s;Q�JI���!83l���G�'���&%����f3�e��9w�O�r�'�}�e*t�������������W/.~�~H��m5n��f�������Bq|�^hL��{b����!�[1��%��>��Vl&�^���8W���*�,+�����s!��rG�E���0�x�
�0>Ie4<��y��ET�H�K#��i]�M)�V8U\�f���-��`g~���(V�]X��A�H-A������������z���5,����5Dt���u���h<����"�Twz�B�5��\C���� 7���a9W�!~UA���p����	�'��U�f���C���Y8
����4A�`?'1$�k�C�Hf��%Ny���l�k���������-���o���mV���1�z�,��6C{f��h����_���x�)]A���J�[(!�����{e�	MAq����
�(^�j�q��e7�Mm]q�;��L�����������eQ�������7�On_^��%�BaU(>yo���M]��^���=@�O��q;����
��'�,�2�b�r@�Y�D$d{��1l#��!_@���BR�jmg�����<�3��%`T��u���Y�c�+�'3��t��%�%l�"��@����Y()Hg\��b��f��#�94�H��o�����i���� $-���3,=���-����������Qf��Gj�h��R�L
�Ve�\��>*�$�S��<`Q�U5�'Pn�]���o���@��(�Q���l����14h���L�H���=?)�����=yy�������E3�t:��>����Zx��c��21%K����JS^]	~��$��E|�
�XT��l|�[��'�>cfqz���.�t�~�8��7o�d�{�JsO7A*��q@$46q�B0G0eH{1���|N���K���3I�gb����w)�K�����*���j���^�%K0�
��BO�x�X���F�K���-�F]EcXt��,��z�i$�e��Ge�_�W�1s#�c���>H�bC�����s�B!B,"@�X7�r�+�<X�g�J G��
4!���s�8iX�|4�dL%:)V�$9�U�|��]X�U\YP�0!�c���>����I�N�F|��E����#.���z`:-��m�E�CT����If�9�I�g,�X*�s;���q�j�G2�1ZH������{"����h��3�����$�}R�p�`�8	N��J�)��XR�dL3�����`��4(�$<Z'Z|N~�]1�@����B��=��	� EO����k*���mS����`�����/G
�7���+n>�q�d��4�����'0I��"�Mx���s�l�V$���J��05J6���C�>:�Xr�N�G6x7�
�t�@!��?�����b+�v�3E�I�����$rb���1�Q���3c�R��4.7�vKPI�?W�;8�����d	��v:�^wG=v!?���Oq47��� t7�����Nc���}���1	z|��}���F����ng��s���#�fE�2E��x�S�i+�U�����O�F�F�����_����������?�t�Li��N���r����9��^=�t!��%�}���[/
�������r��#��>k�5��k����:}	�����A��J�F����#�`��&S8����4\�C�#P��Q
YQ�q�!g�ta:3�R��~�K��,�'������D��$������9x�L�b�b*IS�S��r��>|~�J�/�I�}��`���K#��]�I�����Mc���>#"�s�['�h�Y�&�/Fd�2��)�=�:�Ka�\f2�)o����}����������\,z1��;!"v8@�_H���R{����jVhm�`z"~����mR�����H
�|���E.�JGM���5d�}��Xp����v�)p�y.���d<�C��m�)TZ��J]�a�����{���q:}���n������<�h-%�bO~�S�C��e�,�>�n2���pE���X+��H���H�p9k{&E�&���'�PH����dnB���~����8i8'�@! _D��`���2�5�h����{��*�<�X�g�^�r*���mQ��}�~����#��4��4g��,����*+�
�<���j�2��~�������_�V���+D��N$�6��4��+�iu2���%d9��+M�H�� C��i�������4��V����L^	��p����L'�)<"���
>*	���_�AF��e���$.S��q/���%9�E�I7�X)�
�"����dN�7D���s���>b��
���@�o9n���g���Z��p�2��d���XbP}xwD����&zu4H�.�^T�;�B0`��t33o��6M�y1�7Z��I��u(�tP���w��:��Wp��=���B��x���[��(g2
D:�$����^5�o����dC�jBB;����d�;nj�Y���*�I	r|�k�]�$(I��?�O�s��e5ml��s3U.�AP�}d�Z��g���?D��=S�K���d^Q�$�2tqZF�%��!�c�tC1]*u�"O���&5u[�L��2i %uB�j�s�[BR���R���
B��#����~J2:�V�	m�Q�'��w��b�D�:�fq��yF������e�����px�f�3��������V
������kT{���f�g�P�B$�ic�\�M����9�Zh����k^����l:�)�)�)Wy��x�m�lO �������R�jb.SM�A��A��d������b-e��
+O�b�4UC���=�`jrm7�dJ����:{�g;�����Du�T*�:�X�Y�x�9F�������{$�{HO��&������,�3h��&\�n��w���>\���J������	�3EH�]2p����Y���S�Xi����to�B�@��hDb��(k����l�.@�(s6�����D�y�S�0���%{��Y��H%����N�����=��(��������<`��A����#XD�~4c(/����u�H���'�5o@��\�&&Mb%%k"�'�h���6[<�f���[����_��f��'��a	�!���"��\I-����*!�"���l4=��d�7�fn���@F2���@wTjE &�7�4�5I7�3i{+Mo1���o|���/S?�*�o�\�]��>��$�yI���c���	V�����l�>ogl�,�]&C�9�����<�F�[�1�����P���>9xQ/�����,���������E�����i��H�����+���,'�W�:
���j�sB���!)+D!��VD!����Y�Y��� ������#�����B���Il�~r��c#�bH"1�I/��I> $������`CH�5��$��V��&�>r0��~=��Y���3s2 !�^�f�:�������@\�e4BAeh$������CB#�)XlI�2����>�G�O1do�g�4F���11����$��B���7�Q�-�O��l�@�G)h'�
>!�d�x���Q�n=m�����`���g:�����;�\�
��P.Vfr����`�s�K�e�$�9b*���������D,GUT�"�:Z3M�s;�|�r�\n�������0�������������q5.�F{�_U���]2T�`�Tn�b82����K%�O�2_5T&P�n���5l��
��XuX�=r0����`�	�L��	����R$,->f}v���.{����m�����������S�
����	��`�]����4�>	�h����$�.B�)1�����?��R�!�n���[6:�'b	(����`����j��g��M��!�p�h������+����T��o��%/SK$,�hHP�[r#�Y����"6��am�'YnZU�A���;��3��,�=d ��$��#��
�M���+���N`H�2����V	��Y}F����	�,SO�|�19�`���@cL�80"Q����'O��i�	k`��Wj��A�:��t��c�z`cR��P�{�l�� 0C������k9�y�*s[x�Z�>������V���
)�_�Kx��w�W����4z��3��,�R�<�`�=�I:xXD5]'c�e�:�4��$Qa�y��^������ �'|�{����z�5����v�������L��	����:}�;2|�*�o��/�N�)���2�����:0��f��ypX���^����O�@����L��4�FLI�H�����0�'��bv@x��*4�FC���+��o��L@���[c+C�qh�R;��)H�N���l��L2��&@t�e��_S=���p��"�j�r��=2k���F[T�tX�i�5@�-�,
�y���g�X^�Q�|[O����|FH�k���U
��ir9�`o���D������1��������Wz�f�x&a�^[�������%���v��������
��
#88Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: John Naylor (#87)
Re: WIP: a way forward on bootstrap data

John Naylor wrote:

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I don't think there's any great need to incorporate this into your patch
set. As far as I'm concerned, v14 is ready as-is, and I'll just apply
this over the top of it. (Note that I'll probably smash the whole thing
to one commit when the time comes.)

Glad to hear it. A couple recent commits added #define symbols to
headers, which broke the patchset, so I've attached v15, diff'd
against 4f813c7203e. Commit 9fdb675fc added a symbol to pg_opfamily.h
where there were none before, so I went ahead and wrapped it with an
EXPOSE_TO_CLIENT_CODE macro.

Actually, after pushing that, I was thinking maybe it's better to remove
that #define from there and put it in each of the two .c files that need
it. I don't think it makes sense to expose this macro any further, and
before that commit it was localized to a single file.

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#89Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#88)
Re: WIP: a way forward on bootstrap data

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

John Naylor wrote:

Commit 9fdb675fc added a symbol to pg_opfamily.h
where there were none before, so I went ahead and wrapped it with an
EXPOSE_TO_CLIENT_CODE macro.

Actually, after pushing that, I was thinking maybe it's better to remove
that #define from there and put it in each of the two .c files that need
it. I don't think it makes sense to expose this macro any further, and
before that commit it was localized to a single file.

We're speaking of IsBooleanOpfamily, right? Think I'd leave it where it
is. As soon as you have more than one place using a macro like that,
there's room for maintenance mistakes.

Now it could also be argued that indxpath.c and partprune.c don't
necessarily have the same idea of "boolean opfamily" anyway, in which case
giving them separate copies might be better. Not sure about that.

Anyway, now that John and I have each (separately) rebased the bootstrap
patch over that, I'd appreciate it if you hold off cosmetic refactoring
till said patch goes in, which I expect to do in ~ 24 hours.

regards, tom lane

#90Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Tom Lane (#89)
Re: WIP: a way forward on bootstrap data

Tom Lane wrote:

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

John Naylor wrote:

Commit 9fdb675fc added a symbol to pg_opfamily.h
where there were none before, so I went ahead and wrapped it with an
EXPOSE_TO_CLIENT_CODE macro.

Actually, after pushing that, I was thinking maybe it's better to remove
that #define from there and put it in each of the two .c files that need
it. I don't think it makes sense to expose this macro any further, and
before that commit it was localized to a single file.

We're speaking of IsBooleanOpfamily, right?

Yeah, that's the one.

Think I'd leave it where it is. As soon as you have more than one
place using a macro like that, there's room for maintenance mistakes.

Yeah, that's why I thought it'd be better to have it somewhere central
(the originally submitted patch just added it to partprune.c).

Anyway, now that John and I have each (separately) rebased the bootstrap
patch over that, I'd appreciate it if you hold off cosmetic refactoring
till said patch goes in, which I expect to do in ~ 24 hours.

Understood. I'm going over David Rowley's runtime pruning patch now
(doesn't touch any catalog files), which I intend to be my last
functional commit this cycle, and won't be doing any other commits till
after bootstrap rework has landed. (As I mentioned elsewhere, I intend
to propose some restructuring of partitioning code, without any
functional changes, during next week.)

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#91John Naylor
jcnaylor@gmail.com
In reply to: John Naylor (#87)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

I wrote:

I'll check back in 24 hours to see if everything still applies.

There were a couple more catalog changes that broke patch context, so
attached is version 16.

-John Naylor

Attachments:

v16-bootstrap-data-conversion.tar.gzapplication/x-gzip; name=v16-bootstrap-data-conversion.tar.gzDownload
#92Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#91)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

There were a couple more catalog changes that broke patch context, so
attached is version 16.

Pushed with a few more adjustments (mostly, another round of copy-editing
on bki.sgml). Now we wait to see what the buildfarm thinks, particularly
about the MSVC build ...

Congratulations, and many thanks, to John for seeing this through!
I know it's been a huge amount of work, but we've needed this for years.

regards, tom lane

#93John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#92)
Re: WIP: a way forward on bootstrap data

On 4/9/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Congratulations, and many thanks, to John for seeing this through!
I know it's been a huge amount of work, but we've needed this for years.

Many thanks for your review, advice, and additional hacking. Thanks
also to Álvaro for review and initial commits, and to all who
participated in previous discussion.

-John Naylor

#94Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#92)
Re: WIP: a way forward on bootstrap data

On April 8, 2018 10:19:59 AM PDT, Tom Lane <tgl@sss.pgh.pa.us> wrote:

John Naylor <jcnaylor@gmail.com> writes:

There were a couple more catalog changes that broke patch context, so
attached is version 16.

Pushed with a few more adjustments (mostly, another round of
copy-editing
on bki.sgml). Now we wait to see what the buildfarm thinks,
particularly
about the MSVC build ...

Congratulations, and many thanks, to John for seeing this through!
I know it's been a huge amount of work, but we've needed this for
years.

Seconded and thirded and fourthed (?)!
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

#95John Naylor
jcnaylor@gmail.com
In reply to: Tom Lane (#72)
2 attachment(s)
Re: WIP: a way forward on bootstrap data

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I experimented with converting all frontend code to include just the
catalog/pg_foo_d.h files instead of catalog/pg_foo.h, as per the
proposed new policy. I soon found that we'd overlooked one thing:
some clients expect to see the relation OID macros, eg
LargeObjectRelationId. Attached is a patch that changes things around
so that those appear in the _d files instead of the master files.

[...]

Some of the CATALOG lines spill well past 80 characters with this,
although many of the affected ones already were overlength, eg

-#define DatabaseRelationId	1262
-#define DatabaseRelation_Rowtype_Id  1248
-
-CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248)
BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION
BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO

[ to which I responded with an inadequate alternative ]

Thinking about this some more, a way occurred to me to shorten the
CATALOG lines while still treating all headers the same, and with very
little code (Patch 0001). What we do is automate the use of
'RelationId' and 'Relation_Rowtype_Id' so that the CATALOG macro only
needs the part pertaining to the table name, and the BKI_ROWTYPE_OID
macro can go back to just having the OID, eg:

CATALOG(pg_database,1262,Database) BKI_SHARED_RELATION
BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO

This is shorter, but not quite as short as before the conversion. If
we really wanted to, we could also leave off the BKI_ prefix from the
CATALOG options (Patch 0002), eg:

CATALOG(pg_database,1262,Database) SHARED_RELATION ROWTYPE_OID(1248)
SCHEMA_MACRO

CATALOG itself lacks a prefix, and its options can only go in one
place, so we'd lose some consistency but perhaps we don't lose any
clarity. (This isn't true for the attribute-level options for
nullability etc, which can appear all over the place.)

Results below - number of CATALOG lines with more than 80 characters,
and the longest line:

grep -E '^CATALOG\(' src/include/catalog/pg_*.h | sed 's/.*://' | awk
'{ print length, $0 }' | sort -n -r

--
before conversion: 6 lines > 80 chars
105 CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
BKI_ROWTYPE_OID(2843) BKI_SCHEMA_MACRO

--
after conversion: 14 lines > 80 chars
162 CATALOG(pg_shseclabel,3592,SharedSecLabelRelationId)
BKI_SHARED_RELATION
BKI_ROWTYPE_OID(4066,SharedSecLabelRelation_Rowtype_Id)
BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO

--
with Patch 0001: 11 lines > 80 chars
118 CATALOG(pg_shseclabel,3592,SharedSecLabel) BKI_SHARED_RELATION
BKI_ROWTYPE_OID(4066) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO

--
with Patch 0002: 5 lines > 80 chars
102 CATALOG(pg_shseclabel,3592,SharedSecLabel) SHARED_RELATION
ROWTYPE_OID(4066) WITHOUT_OIDS SCHEMA_MACRO

-John Naylor

Attachments:

0001-Shorten-notation-for-relation-and-rowtype-OID-macros.patchtext/x-patch; charset=US-ASCII; name=0001-Shorten-notation-for-relation-and-rowtype-OID-macros.patchDownload
From ff1384643e47ef423ab13cfd847f12c0969029f1 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 16 Apr 2018 17:42:28 +0700
Subject: [PATCH 1/2] Shorten notation for relation and rowtype OID macros

---
 src/backend/catalog/Catalog.pm                | 8 +++++---
 src/include/catalog/duplicate_oids            | 2 +-
 src/include/catalog/genbki.h                  | 4 ++--
 src/include/catalog/pg_aggregate.h            | 2 +-
 src/include/catalog/pg_am.h                   | 2 +-
 src/include/catalog/pg_amop.h                 | 2 +-
 src/include/catalog/pg_amproc.h               | 2 +-
 src/include/catalog/pg_attrdef.h              | 2 +-
 src/include/catalog/pg_attribute.h            | 2 +-
 src/include/catalog/pg_auth_members.h         | 2 +-
 src/include/catalog/pg_authid.h               | 2 +-
 src/include/catalog/pg_cast.h                 | 2 +-
 src/include/catalog/pg_class.h                | 2 +-
 src/include/catalog/pg_collation.h            | 2 +-
 src/include/catalog/pg_constraint.h           | 2 +-
 src/include/catalog/pg_conversion.h           | 2 +-
 src/include/catalog/pg_database.h             | 2 +-
 src/include/catalog/pg_db_role_setting.h      | 2 +-
 src/include/catalog/pg_default_acl.h          | 2 +-
 src/include/catalog/pg_depend.h               | 2 +-
 src/include/catalog/pg_description.h          | 2 +-
 src/include/catalog/pg_enum.h                 | 2 +-
 src/include/catalog/pg_event_trigger.h        | 2 +-
 src/include/catalog/pg_extension.h            | 2 +-
 src/include/catalog/pg_foreign_data_wrapper.h | 2 +-
 src/include/catalog/pg_foreign_server.h       | 2 +-
 src/include/catalog/pg_foreign_table.h        | 2 +-
 src/include/catalog/pg_index.h                | 2 +-
 src/include/catalog/pg_inherits.h             | 2 +-
 src/include/catalog/pg_init_privs.h           | 2 +-
 src/include/catalog/pg_language.h             | 2 +-
 src/include/catalog/pg_largeobject.h          | 2 +-
 src/include/catalog/pg_largeobject_metadata.h | 2 +-
 src/include/catalog/pg_namespace.h            | 2 +-
 src/include/catalog/pg_opclass.h              | 2 +-
 src/include/catalog/pg_operator.h             | 2 +-
 src/include/catalog/pg_opfamily.h             | 2 +-
 src/include/catalog/pg_partitioned_table.h    | 2 +-
 src/include/catalog/pg_pltemplate.h           | 2 +-
 src/include/catalog/pg_policy.h               | 2 +-
 src/include/catalog/pg_proc.h                 | 2 +-
 src/include/catalog/pg_publication.h          | 2 +-
 src/include/catalog/pg_publication_rel.h      | 2 +-
 src/include/catalog/pg_range.h                | 2 +-
 src/include/catalog/pg_replication_origin.h   | 2 +-
 src/include/catalog/pg_rewrite.h              | 2 +-
 src/include/catalog/pg_seclabel.h             | 2 +-
 src/include/catalog/pg_sequence.h             | 2 +-
 src/include/catalog/pg_shdepend.h             | 2 +-
 src/include/catalog/pg_shdescription.h        | 2 +-
 src/include/catalog/pg_shseclabel.h           | 2 +-
 src/include/catalog/pg_statistic.h            | 2 +-
 src/include/catalog/pg_statistic_ext.h        | 2 +-
 src/include/catalog/pg_subscription.h         | 2 +-
 src/include/catalog/pg_subscription_rel.h     | 2 +-
 src/include/catalog/pg_tablespace.h           | 2 +-
 src/include/catalog/pg_transform.h            | 2 +-
 src/include/catalog/pg_trigger.h              | 2 +-
 src/include/catalog/pg_ts_config.h            | 2 +-
 src/include/catalog/pg_ts_config_map.h        | 2 +-
 src/include/catalog/pg_ts_dict.h              | 2 +-
 src/include/catalog/pg_ts_parser.h            | 2 +-
 src/include/catalog/pg_ts_template.h          | 2 +-
 src/include/catalog/pg_type.h                 | 2 +-
 src/include/catalog/pg_user_mapping.h         | 2 +-
 src/include/catalog/unused_oids               | 2 +-
 66 files changed, 71 insertions(+), 69 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index c32ce2f..5a0d46a 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -108,18 +108,20 @@ sub ParseHeader
 			{
 				$catalog{catname} = $1;
 				$catalog{relation_oid} = $2;
-				$catalog{relation_oid_macro} = $3;
+				my $catalog_label = $3;
+				$catalog{relation_oid_macro} = $catalog_label . 'RelationId';
 
 				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
 				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
 				$catalog{without_oids} =
 				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				if (/BKI_ROWTYPE_OID\((\d+),(\w+)\)/)
+				if (/BKI_ROWTYPE_OID\((\d+)\)/)
 				{
 					$catalog{rowtype_oid} = $1;
 					$catalog{rowtype_oid_clause} = " rowtype_oid $1";
-					$catalog{rowtype_oid_macro} = $2;
+					$catalog{rowtype_oid_macro} =
+					  $catalog_label . 'Relation_Rowtype_Id';
 				}
 				else
 				{
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 8c143cf..61a72d3 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -15,7 +15,7 @@ while (<>)
 	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
 	next
 	  unless /\boid *=> *'(\d+)'/
-		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+),/
+		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
 		  || /^DECLARE_UNIQUE_INDEX\([^,]*, *(\d+)/
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index b1e2cbd..576ca3b 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -20,13 +20,13 @@
 #define GENBKI_H
 
 /* Introduces a catalog's structure definition */
-#define CATALOG(name,oid,oidmacro)	typedef struct CppConcat(FormData_,name)
+#define CATALOG(name,oid,label) typedef struct CppConcat(FormData_,name)
 
 /* Options that may appear after CATALOG (on the same line) */
 #define BKI_BOOTSTRAP
 #define BKI_SHARED_RELATION
 #define BKI_WITHOUT_OIDS
-#define BKI_ROWTYPE_OID(oid,oidmacro)
+#define BKI_ROWTYPE_OID(oid)
 #define BKI_SCHEMA_MACRO
 
 /* Options that may appear after an attribute (on the same line) */
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 8eb5f63..e14b3ba 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -29,7 +29,7 @@
  *		cpp turns this into typedef struct FormData_pg_aggregate
  * ----------------------------------------------------------------
  */
-CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_aggregate,2600,Aggregate) BKI_WITHOUT_OIDS
 {
 	/* pg_proc OID of the aggregate itself */
 	regproc		aggfnoid BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h
index f821749..e41bb37 100644
--- a/src/include/catalog/pg_am.h
+++ b/src/include/catalog/pg_am.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_am
  * ----------------
  */
-CATALOG(pg_am,2601,AccessMethodRelationId)
+CATALOG(pg_am,2601,AccessMethod)
 {
 	/* access method name */
 	NameData	amname;
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 4be3252..76139f2 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -51,7 +51,7 @@
  *		typedef struct FormData_pg_amop
  * ----------------
  */
-CATALOG(pg_amop,2602,AccessMethodOperatorRelationId)
+CATALOG(pg_amop,2602,AccessMethodOperator)
 {
 	/* the index opfamily this entry is for */
 	Oid			amopfamily BKI_LOOKUP(pg_opfamily);
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index d638e0c..dfbcee2 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -40,7 +40,7 @@
  *		typedef struct FormData_pg_amproc
  * ----------------
  */
-CATALOG(pg_amproc,2603,AccessMethodProcedureRelationId)
+CATALOG(pg_amproc,2603,AccessMethodProcedure)
 {
 	/* the index opfamily this entry is for */
 	Oid			amprocfamily BKI_LOOKUP(pg_opfamily);
diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h
index 16b106d..03e2a8a 100644
--- a/src/include/catalog/pg_attrdef.h
+++ b/src/include/catalog/pg_attrdef.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_attrdef
  * ----------------
  */
-CATALOG(pg_attrdef,2604,AttrDefaultRelationId)
+CATALOG(pg_attrdef,2604,AttrDefault)
 {
 	Oid			adrelid;		/* OID of table containing attribute */
 	int16		adnum;			/* attnum of attribute */
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 8eef7d2..c9745e4 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -34,7 +34,7 @@
  *		You may need to change catalog/genbki.pl as well.
  * ----------------
  */
-CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_attribute,1249,Attribute) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO
 {
 	Oid			attrelid;		/* OID of relation containing this attribute */
 	NameData	attname;		/* name of attribute */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index 75bc2ba..4212f4b 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_auth_members
  * ----------------
  */
-CATALOG(pg_auth_members,1261,AuthMemRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843,AuthMemRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_auth_members,1261,AuthMem) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843) BKI_SCHEMA_MACRO
 {
 	Oid			roleid;			/* ID of a role */
 	Oid			member;			/* ID of a member of that role */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index 863ef65..f647177 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -28,7 +28,7 @@
  *		typedef struct FormData_pg_authid
  * ----------------
  */
-CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_authid,1260,AuthId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
 {
 	NameData	rolname;		/* name of role */
 	bool		rolsuper;		/* read this field via superuser() only! */
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 10c796a..95b53b0 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -28,7 +28,7 @@
  *		typedef struct FormData_pg_cast
  * ----------------
  */
-CATALOG(pg_cast,2605,CastRelationId)
+CATALOG(pg_cast,2605,Cast)
 {
 	/* source datatype for cast */
 	Oid			castsource BKI_LOOKUP(pg_type);
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index ef62c30..f194dae 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_class
  * ----------------
  */
-CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_class,1259,Relation) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
 {
 	NameData	relname;		/* class name */
 	Oid			relnamespace;	/* OID of namespace containing this class */
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 5c73bbf..66f000f 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_collation
  * ----------------
  */
-CATALOG(pg_collation,3456,CollationRelationId)
+CATALOG(pg_collation,3456,Collation)
 {
 	NameData	collname;		/* collation name */
 	Oid			collnamespace;	/* OID of namespace containing collation */
diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h
index 017e4de..d6a6619 100644
--- a/src/include/catalog/pg_constraint.h
+++ b/src/include/catalog/pg_constraint.h
@@ -29,7 +29,7 @@
  *		typedef struct FormData_pg_constraint
  * ----------------
  */
-CATALOG(pg_constraint,2606,ConstraintRelationId)
+CATALOG(pg_constraint,2606,Constraint)
 {
 	/*
 	 * conname + connamespace is deliberately not unique; we allow, for
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 7ca54e8..6fc5385 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -37,7 +37,7 @@
  *	condefault			true if this is a default conversion
  * ----------------------------------------------------------------
  */
-CATALOG(pg_conversion,2607,ConversionRelationId)
+CATALOG(pg_conversion,2607,Conversion)
 {
 	NameData	conname;
 	Oid			connamespace;
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 7f03d24..24be0e7 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_database
  * ----------------
  */
-CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,Database) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO
 {
 	NameData	datname;		/* database name */
 	Oid			datdba;			/* owner of database */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index f6ae971..e6d4e72 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -30,7 +30,7 @@
  *		typedef struct FormData_pg_db_role_setting
  * ----------------
  */
-CATALOG(pg_db_role_setting,2964,DbRoleSettingRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_db_role_setting,2964,DbRoleSetting) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	Oid			setdatabase;	/* database */
 	Oid			setrole;		/* role */
diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h
index d672d5b..08dbb86 100644
--- a/src/include/catalog/pg_default_acl.h
+++ b/src/include/catalog/pg_default_acl.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_default_acl
  * ----------------
  */
-CATALOG(pg_default_acl,826,DefaultAclRelationId)
+CATALOG(pg_default_acl,826,DefaultAcl)
 {
 	Oid			defaclrole;		/* OID of role owning this ACL */
 	Oid			defaclnamespace;	/* OID of namespace, or 0 for all */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index bf31c1a..1043ab9 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -38,7 +38,7 @@
  *		typedef struct FormData_pg_depend
  * ----------------
  */
-CATALOG(pg_depend,2608,DependRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_depend,2608,Depend) BKI_WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index b95b188..157b324 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -45,7 +45,7 @@
  *		typedef struct FormData_pg_description
  * ----------------
  */
-CATALOG(pg_description,2609,DescriptionRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_description,2609,Description) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 52ec55d..59d4b41 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_enum
  * ----------------
  */
-CATALOG(pg_enum,3501,EnumRelationId)
+CATALOG(pg_enum,3501,Enum)
 {
 	Oid			enumtypid;		/* OID of owning enum type */
 	float4		enumsortorder;	/* sort position of this enum value */
diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h
index f06cbe0..798ce1d 100644
--- a/src/include/catalog/pg_event_trigger.h
+++ b/src/include/catalog/pg_event_trigger.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_event_trigger
  * ----------------
  */
-CATALOG(pg_event_trigger,3466,EventTriggerRelationId)
+CATALOG(pg_event_trigger,3466,EventTrigger)
 {
 	NameData	evtname;		/* trigger's name */
 	NameData	evtevent;		/* trigger's event */
diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h
index 10bbb69..57a4895 100644
--- a/src/include/catalog/pg_extension.h
+++ b/src/include/catalog/pg_extension.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_extension
  * ----------------
  */
-CATALOG(pg_extension,3079,ExtensionRelationId)
+CATALOG(pg_extension,3079,Extension)
 {
 	NameData	extname;		/* extension name */
 	Oid			extowner;		/* extension owner */
diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h
index 67e3319..25b9e08 100644
--- a/src/include/catalog/pg_foreign_data_wrapper.h
+++ b/src/include/catalog/pg_foreign_data_wrapper.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_foreign_data_wrapper
  * ----------------
  */
-CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapperRelationId)
+CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapper)
 {
 	NameData	fdwname;		/* foreign-data wrapper name */
 	Oid			fdwowner;		/* FDW owner */
diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h
index 0d25839..e0efdc8 100644
--- a/src/include/catalog/pg_foreign_server.h
+++ b/src/include/catalog/pg_foreign_server.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_foreign_server
  * ----------------
  */
-CATALOG(pg_foreign_server,1417,ForeignServerRelationId)
+CATALOG(pg_foreign_server,1417,ForeignServer)
 {
 	NameData	srvname;		/* foreign server name */
 	Oid			srvowner;		/* server owner */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index 13de918..c264c24 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_foreign_table
  * ----------------
  */
-CATALOG(pg_foreign_table,3118,ForeignTableRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_foreign_table,3118,ForeignTable) BKI_WITHOUT_OIDS
 {
 	Oid			ftrelid;		/* OID of foreign table */
 	Oid			ftserver;		/* OID of foreign server */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index 88ff40f..dd3b4d4 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_index.
  * ----------------
  */
-CATALOG(pg_index,2610,IndexRelationId) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_index,2610,Index) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 {
 	Oid			indexrelid;		/* OID of the index */
 	Oid			indrelid;		/* OID of the relation it indexes */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index 3303a9c..a167492 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -29,7 +29,7 @@
  *		typedef struct FormData_pg_inherits
  * ----------------
  */
-CATALOG(pg_inherits,2611,InheritsRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_inherits,2611,Inherits) BKI_WITHOUT_OIDS
 {
 	Oid			inhrelid;
 	Oid			inhparent;
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index 6ce2646..f5f2c56 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -43,7 +43,7 @@
  *		typedef struct FormData_pg_init_privs
  * ----------------
  */
-CATALOG(pg_init_privs,3394,InitPrivsRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_init_privs,3394,InitPrivs) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index e2d8d15..9988fbd 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_language
  * ----------------
  */
-CATALOG(pg_language,2612,LanguageRelationId)
+CATALOG(pg_language,2612,Language)
 {
 	NameData	lanname;		/* Language name */
 	Oid			lanowner;		/* Language's owner */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index 481d2ff..ce8a70c 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_largeobject
  * ----------------
  */
-CATALOG(pg_largeobject,2613,LargeObjectRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_largeobject,2613,LargeObject) BKI_WITHOUT_OIDS
 {
 	Oid			loid;			/* Identifier of large object */
 	int32		pageno;			/* Page number (starting from 0) */
diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h
index a8732bc..a37acfe 100644
--- a/src/include/catalog/pg_largeobject_metadata.h
+++ b/src/include/catalog/pg_largeobject_metadata.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_largeobject_metadata
  * ----------------
  */
-CATALOG(pg_largeobject_metadata,2995,LargeObjectMetadataRelationId)
+CATALOG(pg_largeobject_metadata,2995,LargeObjectMetadata)
 {
 	Oid			lomowner;		/* OID of the largeobject owner */
 
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index 0d9cada..1f56bc7 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -31,7 +31,7 @@
  *	nspacl				access privilege list
  * ----------------------------------------------------------------
  */
-CATALOG(pg_namespace,2615,NamespaceRelationId)
+CATALOG(pg_namespace,2615,Namespace)
 {
 	NameData	nspname;
 	Oid			nspowner;
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 16c3875..2eed9e6 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -46,7 +46,7 @@
  *		typedef struct FormData_pg_opclass
  * ----------------
  */
-CATALOG(pg_opclass,2616,OperatorClassRelationId)
+CATALOG(pg_opclass,2616,OperatorClass)
 {
 	/* index access method opclass is for */
 	Oid			opcmethod BKI_LOOKUP(pg_am);
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index bbf3303..53a78ed 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -29,7 +29,7 @@
  *		typedef struct FormData_pg_operator
  * ----------------
  */
-CATALOG(pg_operator,2617,OperatorRelationId)
+CATALOG(pg_operator,2617,Operator)
 {
 	/* name of operator */
 	NameData	oprname;
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index ddb0641..db3ac32 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_opfamily
  * ----------------
  */
-CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
+CATALOG(pg_opfamily,2753,OperatorFamily)
 {
 	/* index access method opfamily is for */
 	Oid			opfmethod BKI_LOOKUP(pg_am);
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index 676532a..bcec129 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_partitioned_table
  * ----------------
  */
-CATALOG(pg_partitioned_table,3350,PartitionedRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_partitioned_table,3350,Partitioned) BKI_WITHOUT_OIDS
 {
 	Oid			partrelid;		/* partitioned table oid */
 	char		partstrat;		/* partitioning strategy */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index d84c86b..55f7b56 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_pltemplate
  * ----------------
  */
-CATALOG(pg_pltemplate,1136,PLTemplateRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_pltemplate,1136,PLTemplate) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	NameData	tmplname;		/* name of PL */
 	bool		tmpltrusted;	/* PL is trusted? */
diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h
index 45fdc28..925fbfc 100644
--- a/src/include/catalog/pg_policy.h
+++ b/src/include/catalog/pg_policy.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_policy
  * ----------------
  */
-CATALOG(pg_policy,3256,PolicyRelationId)
+CATALOG(pg_policy,3256,Policy)
 {
 	NameData	polname;		/* Policy name. */
 	Oid			polrelid;		/* Oid of the relation with policy. */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 821bc60..94dca57 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -28,7 +28,7 @@
  *		typedef struct FormData_pg_proc
  * ----------------
  */
-CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_proc,1255,Procedure) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
 {
 	/* procedure name */
 	NameData	proname;
diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h
index e81d62d..7111c1d 100644
--- a/src/include/catalog/pg_publication.h
+++ b/src/include/catalog/pg_publication.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_publication
  * ----------------
  */
-CATALOG(pg_publication,6104,PublicationRelationId)
+CATALOG(pg_publication,6104,Publication)
 {
 	NameData	pubname;		/* name of the publication */
 
diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h
index 2208e42..4ee2f1d 100644
--- a/src/include/catalog/pg_publication_rel.h
+++ b/src/include/catalog/pg_publication_rel.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_publication_rel
  * ----------------
  */
-CATALOG(pg_publication_rel,6106,PublicationRelRelationId)
+CATALOG(pg_publication_rel,6106,PublicationRel)
 {
 	Oid			prpubid;		/* Oid of the publication */
 	Oid			prrelid;		/* Oid of the relation */
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index d8e16cc..3681b78 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_range
  * ----------------
  */
-CATALOG(pg_range,3541,RangeRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_range,3541,Range) BKI_WITHOUT_OIDS
 {
 	/* OID of owning range type */
 	Oid			rngtypid BKI_LOOKUP(pg_type);
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index eacdd39..02621a6 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_replication_origin
  * ----------------
  */
-CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_replication_origin,6000,ReplicationOrigin) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	/*
 	 * Locally known id that get included into WAL.
diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h
index 7712586..f74a165 100644
--- a/src/include/catalog/pg_rewrite.h
+++ b/src/include/catalog/pg_rewrite.h
@@ -29,7 +29,7 @@
  *		typedef struct FormData_pg_rewrite
  * ----------------
  */
-CATALOG(pg_rewrite,2618,RewriteRelationId)
+CATALOG(pg_rewrite,2618,Rewrite)
 {
 	NameData	rulename;
 	Oid			ev_class;
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index 48d4548..a3a35f4 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -19,7 +19,7 @@
  *		typedef struct FormData_pg_seclabel
  * ----------------
  */
-CATALOG(pg_seclabel,3596,SecLabelRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_seclabel,3596,SecLabel) BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of the object itself */
 	Oid			classoid;		/* OID of table containing the object */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index a13b05e..4632160 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -14,7 +14,7 @@
 #include "catalog/genbki.h"
 #include "catalog/pg_sequence_d.h"
 
-CATALOG(pg_sequence,2224,SequenceRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_sequence,2224,Sequence) BKI_WITHOUT_OIDS
 {
 	Oid			seqrelid;
 	Oid			seqtypid;
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index 0f8508c..a01d5fa 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -34,7 +34,7 @@
  *		typedef struct FormData_pg_shdepend
  * ----------------
  */
-CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdepend,1214,SharedDepend) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index 00fd0e0..07ff550 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -38,7 +38,7 @@
  *		typedef struct FormData_pg_shdescription
  * ----------------
  */
-CATALOG(pg_shdescription,2396,SharedDescriptionRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdescription,2396,SharedDescription) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 22ecf98..91ff667 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -19,7 +19,7 @@
  *		typedef struct FormData_pg_shseclabel
  * ----------------
  */
-CATALOG(pg_shseclabel,3592,SharedSecLabelRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066,SharedSecLabelRelation_Rowtype_Id) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_shseclabel,3592,SharedSecLabel) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
 {
 	Oid			objoid;			/* OID of the shared object itself */
 	Oid			classoid;		/* OID of table containing the shared object */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index d654d3d..a08f776 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_statistic
  * ----------------
  */
-CATALOG(pg_statistic,2619,StatisticRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_statistic,2619,Statistic) BKI_WITHOUT_OIDS
 {
 	/* These fields form the unique key for the entry: */
 	Oid			starelid;		/* relation containing attribute */
diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h
index 9ccfce7..1add3af 100644
--- a/src/include/catalog/pg_statistic_ext.h
+++ b/src/include/catalog/pg_statistic_ext.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_statistic_ext
  * ----------------
  */
-CATALOG(pg_statistic_ext,3381,StatisticExtRelationId)
+CATALOG(pg_statistic_ext,3381,StatisticExt)
 {
 	Oid			stxrelid;		/* relation containing attributes */
 
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 7fc1c29..3c9b287 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -30,7 +30,7 @@
  *
  * NOTE:  When adding a column, also update system_views.sql.
  */
-CATALOG(pg_subscription,6100,SubscriptionRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101,SubscriptionRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_subscription,6100,Subscription) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHEMA_MACRO
 {
 	Oid			subdbid;		/* Database the subscription is in. */
 	NameData	subname;		/* Name of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index 8971b67..dbfd592 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -23,7 +23,7 @@
  *		typedef struct FormData_pg_subscription_rel
  * ----------------
  */
-CATALOG(pg_subscription_rel,6102,SubscriptionRelRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_subscription_rel,6102,SubscriptionRel) BKI_WITHOUT_OIDS
 {
 	Oid			srsubid;		/* Oid of subscription */
 	Oid			srrelid;		/* Oid of relation */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 4782e78..1d6668e 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_tablespace
  * ----------------
  */
-CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION
+CATALOG(pg_tablespace,1213,TableSpace) BKI_SHARED_RELATION
 {
 	NameData	spcname;		/* tablespace name */
 	Oid			spcowner;		/* owner of tablespace */
diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h
index 6059b89..41efbb4 100644
--- a/src/include/catalog/pg_transform.h
+++ b/src/include/catalog/pg_transform.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_transform
  * ----------------
  */
-CATALOG(pg_transform,3576,TransformRelationId)
+CATALOG(pg_transform,3576,Transform)
 {
 	Oid			trftype;
 	Oid			trflang;
diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h
index 9955e62..0ce8ebe 100644
--- a/src/include/catalog/pg_trigger.h
+++ b/src/include/catalog/pg_trigger.h
@@ -31,7 +31,7 @@
  * to be associated with a deferrable constraint.
  * ----------------
  */
-CATALOG(pg_trigger,2620,TriggerRelationId)
+CATALOG(pg_trigger,2620,Trigger)
 {
 	Oid			tgrelid;		/* relation trigger is attached to */
 	NameData	tgname;			/* trigger's name */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index d344bb7..d607f26 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_config
  * ----------------
  */
-CATALOG(pg_ts_config,3602,TSConfigRelationId)
+CATALOG(pg_ts_config,3602,TSConfig)
 {
 	NameData	cfgname;		/* name of configuration */
 	Oid			cfgnamespace;	/* name space */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index 2120021..aea4f31 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_config_map
  * ----------------
  */
-CATALOG(pg_ts_config_map,3603,TSConfigMapRelationId) BKI_WITHOUT_OIDS
+CATALOG(pg_ts_config_map,3603,TSConfigMap) BKI_WITHOUT_OIDS
 {
 	Oid			mapcfg;			/* OID of configuration owning this entry */
 	int32		maptokentype;	/* token type from parser */
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 1e285ad..46a89fb 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_dict
  * ----------------
  */
-CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
+CATALOG(pg_ts_dict,3600,TSDictionary)
 {
 	NameData	dictname;		/* dictionary name */
 	Oid			dictnamespace;	/* name space */
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index ccaf40b..dba4935 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_parser
  * ----------------
  */
-CATALOG(pg_ts_parser,3601,TSParserRelationId)
+CATALOG(pg_ts_parser,3601,TSParser)
 {
 	/* parser's name */
 	NameData	prsname;
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 5e66e02..f3bd842 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_template
  * ----------------
  */
-CATALOG(pg_ts_template,3764,TSTemplateRelationId)
+CATALOG(pg_ts_template,3764,TSTemplate)
 {
 	/* template name */
 	NameData	tmplname;
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 8f301db..efe9206 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -34,7 +34,7 @@
  *		See struct FormData_pg_attribute for details.
  * ----------------
  */
-CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
+CATALOG(pg_type,1247,Type) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
 {
 	/* type name */
 	NameData	typname;
diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h
index 6efbed0..e50c635 100644
--- a/src/include/catalog/pg_user_mapping.h
+++ b/src/include/catalog/pg_user_mapping.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_user_mapping
  * ----------------
  */
-CATALOG(pg_user_mapping,1418,UserMappingRelationId)
+CATALOG(pg_user_mapping,1418,UserMapping)
 {
 	Oid			umuser;			/* Id of the user, InvalidOid if PUBLIC is
 								 * wanted */
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index f71222d..e8be34c 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -30,7 +30,7 @@ export FIRSTOBJECTID
 cat pg_*.h pg_*.dat toasting.h indexing.h |
 egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
 sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
-	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\),.*$/\1,\2/p' \
+	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
-- 
2.7.4

0002-Dispense-with-BKI_-prefix-for-CATALOG-options.patchtext/x-patch; charset=US-ASCII; name=0002-Dispense-with-BKI_-prefix-for-CATALOG-options.patchDownload
From 7bb1ac7e0a5a1babe169092d18598a06ff3135b1 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Mon, 16 Apr 2018 18:45:27 +0700
Subject: [PATCH 2/2] Dispense with BKI_ prefix for CATALOG options

---
 src/backend/catalog/Catalog.pm              | 10 +++++-----
 src/backend/catalog/catalog.c               |  2 +-
 src/include/catalog/duplicate_oids          |  4 ++--
 src/include/catalog/genbki.h                | 14 +++++++-------
 src/include/catalog/pg_aggregate.h          |  2 +-
 src/include/catalog/pg_attribute.h          |  2 +-
 src/include/catalog/pg_auth_members.h       |  2 +-
 src/include/catalog/pg_authid.h             |  2 +-
 src/include/catalog/pg_class.h              |  2 +-
 src/include/catalog/pg_database.h           |  2 +-
 src/include/catalog/pg_db_role_setting.h    |  2 +-
 src/include/catalog/pg_depend.h             |  2 +-
 src/include/catalog/pg_description.h        |  2 +-
 src/include/catalog/pg_foreign_table.h      |  2 +-
 src/include/catalog/pg_index.h              |  2 +-
 src/include/catalog/pg_inherits.h           |  2 +-
 src/include/catalog/pg_init_privs.h         |  2 +-
 src/include/catalog/pg_largeobject.h        |  2 +-
 src/include/catalog/pg_partitioned_table.h  |  2 +-
 src/include/catalog/pg_pltemplate.h         |  2 +-
 src/include/catalog/pg_proc.h               |  2 +-
 src/include/catalog/pg_range.h              |  2 +-
 src/include/catalog/pg_replication_origin.h |  2 +-
 src/include/catalog/pg_seclabel.h           |  2 +-
 src/include/catalog/pg_sequence.h           |  2 +-
 src/include/catalog/pg_shdepend.h           |  2 +-
 src/include/catalog/pg_shdescription.h      |  2 +-
 src/include/catalog/pg_shseclabel.h         |  2 +-
 src/include/catalog/pg_statistic.h          |  2 +-
 src/include/catalog/pg_subscription.h       |  2 +-
 src/include/catalog/pg_subscription_rel.h   |  2 +-
 src/include/catalog/pg_tablespace.h         |  2 +-
 src/include/catalog/pg_ts_config_map.h      |  2 +-
 src/include/catalog/pg_type.h               |  2 +-
 src/include/catalog/unused_oids             |  6 +++---
 35 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 5a0d46a..eca5ae6 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -111,12 +111,12 @@ sub ParseHeader
 				my $catalog_label = $3;
 				$catalog{relation_oid_macro} = $catalog_label . 'RelationId';
 
-				$catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : '';
+				$catalog{bootstrap} = /BOOTSTRAP/ ? ' bootstrap' : '';
 				$catalog{shared_relation} =
-				  /BKI_SHARED_RELATION/ ? ' shared_relation' : '';
+				  /SHARED_RELATION/ ? ' shared_relation' : '';
 				$catalog{without_oids} =
-				  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
-				if (/BKI_ROWTYPE_OID\((\d+)\)/)
+				  /WITHOUT_OIDS/ ? ' without_oids' : '';
+				if (/ROWTYPE_OID\((\d+)\)/)
 				{
 					$catalog{rowtype_oid} = $1;
 					$catalog{rowtype_oid_clause} = " rowtype_oid $1";
@@ -129,7 +129,7 @@ sub ParseHeader
 					$catalog{rowtype_oid_clause} = '';
 					$catalog{rowtype_oid_macro} = '';
 				}
-				$catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
+				$catalog{schema_macro} = /SCHEMA_MACRO/ ? 1 : 0;
 				$declaring_attributes = 1;
 			}
 			elsif ($is_client_code)
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index 2292deb..b40e2c7 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -219,7 +219,7 @@ IsReservedName(const char *name)
 bool
 IsSharedRelation(Oid relationId)
 {
-	/* These are the shared catalogs (look for BKI_SHARED_RELATION) */
+	/* These are the shared catalogs (look for SHARED_RELATION) */
 	if (relationId == AuthIdRelationId ||
 		relationId == AuthMemRelationId ||
 		relationId == DatabaseRelationId ||
diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids
index 61a72d3..33597b3 100755
--- a/src/include/catalog/duplicate_oids
+++ b/src/include/catalog/duplicate_oids
@@ -12,10 +12,10 @@ my %oidcounts;
 
 while (<>)
 {
-	next if /^CATALOG\(.*BKI_BOOTSTRAP/;
+	next if /^CATALOG\(.*BOOTSTRAP/;
 	next
 	  unless /\boid *=> *'(\d+)'/
-		  || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/
+		  || /^CATALOG\([^,]*, *(\d+).*ROWTYPE_OID\((\d+)\)/
 		  || /^CATALOG\([^,]*, *(\d+)/
 		  || /^DECLARE_INDEX\([^,]*, *(\d+)/
 		  || /^DECLARE_UNIQUE_INDEX\([^,]*, *(\d+)/
diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h
index 576ca3b..75481c5 100644
--- a/src/include/catalog/genbki.h
+++ b/src/include/catalog/genbki.h
@@ -3,8 +3,8 @@
  * genbki.h
  *	  Required include file for all POSTGRES catalog header files
  *
- * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
- * so that the catalog header files can be read by the C compiler.
+ * genbki.h defines CATALOG(), BOOTSTRAP and related macros so
+ * that the catalog header files can be read by the C compiler.
  * (These same words are recognized by genbki.pl to build the BKI
  * bootstrap file from these header files.)
  *
@@ -23,11 +23,11 @@
 #define CATALOG(name,oid,label) typedef struct CppConcat(FormData_,name)
 
 /* Options that may appear after CATALOG (on the same line) */
-#define BKI_BOOTSTRAP
-#define BKI_SHARED_RELATION
-#define BKI_WITHOUT_OIDS
-#define BKI_ROWTYPE_OID(oid)
-#define BKI_SCHEMA_MACRO
+#define BOOTSTRAP
+#define SHARED_RELATION
+#define WITHOUT_OIDS
+#define ROWTYPE_OID(oid)
+#define SCHEMA_MACRO
 
 /* Options that may appear after an attribute (on the same line) */
 #define BKI_FORCE_NULL
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index e14b3ba..1a94f99 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -29,7 +29,7 @@
  *		cpp turns this into typedef struct FormData_pg_aggregate
  * ----------------------------------------------------------------
  */
-CATALOG(pg_aggregate,2600,Aggregate) BKI_WITHOUT_OIDS
+CATALOG(pg_aggregate,2600,Aggregate) WITHOUT_OIDS
 {
 	/* pg_proc OID of the aggregate itself */
 	regproc		aggfnoid BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index c9745e4..53481eb 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -34,7 +34,7 @@
  *		You may need to change catalog/genbki.pl as well.
  * ----------------
  */
-CATALOG(pg_attribute,1249,Attribute) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO
+CATALOG(pg_attribute,1249,Attribute) BOOTSTRAP WITHOUT_OIDS ROWTYPE_OID(75) SCHEMA_MACRO
 {
 	Oid			attrelid;		/* OID of relation containing this attribute */
 	NameData	attname;		/* name of attribute */
diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h
index 4212f4b..eecf98d 100644
--- a/src/include/catalog/pg_auth_members.h
+++ b/src/include/catalog/pg_auth_members.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_auth_members
  * ----------------
  */
-CATALOG(pg_auth_members,1261,AuthMem) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843) BKI_SCHEMA_MACRO
+CATALOG(pg_auth_members,1261,AuthMem) SHARED_RELATION WITHOUT_OIDS ROWTYPE_OID(2843) SCHEMA_MACRO
 {
 	Oid			roleid;			/* ID of a role */
 	Oid			member;			/* ID of a member of that role */
diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h
index f647177..0166b16 100644
--- a/src/include/catalog/pg_authid.h
+++ b/src/include/catalog/pg_authid.h
@@ -28,7 +28,7 @@
  *		typedef struct FormData_pg_authid
  * ----------------
  */
-CATALOG(pg_authid,1260,AuthId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO
+CATALOG(pg_authid,1260,AuthId) SHARED_RELATION ROWTYPE_OID(2842) SCHEMA_MACRO
 {
 	NameData	rolname;		/* name of role */
 	bool		rolsuper;		/* read this field via superuser() only! */
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index f194dae..cac96e5 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_class
  * ----------------
  */
-CATALOG(pg_class,1259,Relation) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
+CATALOG(pg_class,1259,Relation) BOOTSTRAP ROWTYPE_OID(83) SCHEMA_MACRO
 {
 	NameData	relname;		/* class name */
 	Oid			relnamespace;	/* OID of namespace containing this class */
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 24be0e7..380a5c5 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_database
  * ----------------
  */
-CATALOG(pg_database,1262,Database) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO
+CATALOG(pg_database,1262,Database) SHARED_RELATION ROWTYPE_OID(1248) SCHEMA_MACRO
 {
 	NameData	datname;		/* database name */
 	Oid			datdba;			/* owner of database */
diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h
index e6d4e72..6096959 100644
--- a/src/include/catalog/pg_db_role_setting.h
+++ b/src/include/catalog/pg_db_role_setting.h
@@ -30,7 +30,7 @@
  *		typedef struct FormData_pg_db_role_setting
  * ----------------
  */
-CATALOG(pg_db_role_setting,2964,DbRoleSetting) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_db_role_setting,2964,DbRoleSetting) SHARED_RELATION WITHOUT_OIDS
 {
 	Oid			setdatabase;	/* database */
 	Oid			setrole;		/* role */
diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h
index 1043ab9..ebdb08b 100644
--- a/src/include/catalog/pg_depend.h
+++ b/src/include/catalog/pg_depend.h
@@ -38,7 +38,7 @@
  *		typedef struct FormData_pg_depend
  * ----------------
  */
-CATALOG(pg_depend,2608,Depend) BKI_WITHOUT_OIDS
+CATALOG(pg_depend,2608,Depend) WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h
index 157b324..5c47979 100644
--- a/src/include/catalog/pg_description.h
+++ b/src/include/catalog/pg_description.h
@@ -45,7 +45,7 @@
  *		typedef struct FormData_pg_description
  * ----------------
  */
-CATALOG(pg_description,2609,Description) BKI_WITHOUT_OIDS
+CATALOG(pg_description,2609,Description) WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h
index c264c24..a8b4c2b 100644
--- a/src/include/catalog/pg_foreign_table.h
+++ b/src/include/catalog/pg_foreign_table.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_foreign_table
  * ----------------
  */
-CATALOG(pg_foreign_table,3118,ForeignTable) BKI_WITHOUT_OIDS
+CATALOG(pg_foreign_table,3118,ForeignTable) WITHOUT_OIDS
 {
 	Oid			ftrelid;		/* OID of foreign table */
 	Oid			ftserver;		/* OID of foreign server */
diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h
index dd3b4d4..1d2745a 100644
--- a/src/include/catalog/pg_index.h
+++ b/src/include/catalog/pg_index.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_index.
  * ----------------
  */
-CATALOG(pg_index,2610,Index) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_index,2610,Index) WITHOUT_OIDS SCHEMA_MACRO
 {
 	Oid			indexrelid;		/* OID of the index */
 	Oid			indrelid;		/* OID of the relation it indexes */
diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h
index a167492..c5c9985 100644
--- a/src/include/catalog/pg_inherits.h
+++ b/src/include/catalog/pg_inherits.h
@@ -29,7 +29,7 @@
  *		typedef struct FormData_pg_inherits
  * ----------------
  */
-CATALOG(pg_inherits,2611,Inherits) BKI_WITHOUT_OIDS
+CATALOG(pg_inherits,2611,Inherits) WITHOUT_OIDS
 {
 	Oid			inhrelid;
 	Oid			inhparent;
diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h
index f5f2c56..3b89efa 100644
--- a/src/include/catalog/pg_init_privs.h
+++ b/src/include/catalog/pg_init_privs.h
@@ -43,7 +43,7 @@
  *		typedef struct FormData_pg_init_privs
  * ----------------
  */
-CATALOG(pg_init_privs,3394,InitPrivs) BKI_WITHOUT_OIDS
+CATALOG(pg_init_privs,3394,InitPrivs) WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
index ce8a70c..3fd7daa 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_largeobject
  * ----------------
  */
-CATALOG(pg_largeobject,2613,LargeObject) BKI_WITHOUT_OIDS
+CATALOG(pg_largeobject,2613,LargeObject) WITHOUT_OIDS
 {
 	Oid			loid;			/* Identifier of large object */
 	int32		pageno;			/* Page number (starting from 0) */
diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h
index bcec129..a25e949 100644
--- a/src/include/catalog/pg_partitioned_table.h
+++ b/src/include/catalog/pg_partitioned_table.h
@@ -25,7 +25,7 @@
  *		typedef struct FormData_pg_partitioned_table
  * ----------------
  */
-CATALOG(pg_partitioned_table,3350,Partitioned) BKI_WITHOUT_OIDS
+CATALOG(pg_partitioned_table,3350,Partitioned) WITHOUT_OIDS
 {
 	Oid			partrelid;		/* partitioned table oid */
 	char		partstrat;		/* partitioning strategy */
diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h
index 55f7b56..d93c520 100644
--- a/src/include/catalog/pg_pltemplate.h
+++ b/src/include/catalog/pg_pltemplate.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_pltemplate
  * ----------------
  */
-CATALOG(pg_pltemplate,1136,PLTemplate) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_pltemplate,1136,PLTemplate) SHARED_RELATION WITHOUT_OIDS
 {
 	NameData	tmplname;		/* name of PL */
 	bool		tmpltrusted;	/* PL is trusted? */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 94dca57..df738a0 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -28,7 +28,7 @@
  *		typedef struct FormData_pg_proc
  * ----------------
  */
-CATALOG(pg_proc,1255,Procedure) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
+CATALOG(pg_proc,1255,Procedure) BOOTSTRAP ROWTYPE_OID(81) SCHEMA_MACRO
 {
 	/* procedure name */
 	NameData	proname;
diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h
index 3681b78..ff59a0f 100644
--- a/src/include/catalog/pg_range.h
+++ b/src/include/catalog/pg_range.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_range
  * ----------------
  */
-CATALOG(pg_range,3541,Range) BKI_WITHOUT_OIDS
+CATALOG(pg_range,3541,Range) WITHOUT_OIDS
 {
 	/* OID of owning range type */
 	Oid			rngtypid BKI_LOOKUP(pg_type);
diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h
index 02621a6..7324938 100644
--- a/src/include/catalog/pg_replication_origin.h
+++ b/src/include/catalog/pg_replication_origin.h
@@ -27,7 +27,7 @@
  *		typedef struct FormData_pg_replication_origin
  * ----------------
  */
-CATALOG(pg_replication_origin,6000,ReplicationOrigin) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_replication_origin,6000,ReplicationOrigin) SHARED_RELATION WITHOUT_OIDS
 {
 	/*
 	 * Locally known id that get included into WAL.
diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h
index a3a35f4..fd81568 100644
--- a/src/include/catalog/pg_seclabel.h
+++ b/src/include/catalog/pg_seclabel.h
@@ -19,7 +19,7 @@
  *		typedef struct FormData_pg_seclabel
  * ----------------
  */
-CATALOG(pg_seclabel,3596,SecLabel) BKI_WITHOUT_OIDS
+CATALOG(pg_seclabel,3596,SecLabel) WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of the object itself */
 	Oid			classoid;		/* OID of table containing the object */
diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h
index 4632160..45d26b4 100644
--- a/src/include/catalog/pg_sequence.h
+++ b/src/include/catalog/pg_sequence.h
@@ -14,7 +14,7 @@
 #include "catalog/genbki.h"
 #include "catalog/pg_sequence_d.h"
 
-CATALOG(pg_sequence,2224,Sequence) BKI_WITHOUT_OIDS
+CATALOG(pg_sequence,2224,Sequence) WITHOUT_OIDS
 {
 	Oid			seqrelid;
 	Oid			seqtypid;
diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h
index a01d5fa..27a52d1 100644
--- a/src/include/catalog/pg_shdepend.h
+++ b/src/include/catalog/pg_shdepend.h
@@ -34,7 +34,7 @@
  *		typedef struct FormData_pg_shdepend
  * ----------------
  */
-CATALOG(pg_shdepend,1214,SharedDepend) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdepend,1214,SharedDepend) SHARED_RELATION WITHOUT_OIDS
 {
 	/*
 	 * Identification of the dependent (referencing) object.
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
index 07ff550..b737af0 100644
--- a/src/include/catalog/pg_shdescription.h
+++ b/src/include/catalog/pg_shdescription.h
@@ -38,7 +38,7 @@
  *		typedef struct FormData_pg_shdescription
  * ----------------
  */
-CATALOG(pg_shdescription,2396,SharedDescription) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+CATALOG(pg_shdescription,2396,SharedDescription) SHARED_RELATION WITHOUT_OIDS
 {
 	Oid			objoid;			/* OID of object itself */
 	Oid			classoid;		/* OID of table containing object */
diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h
index 91ff667..3cf2738 100644
--- a/src/include/catalog/pg_shseclabel.h
+++ b/src/include/catalog/pg_shseclabel.h
@@ -19,7 +19,7 @@
  *		typedef struct FormData_pg_shseclabel
  * ----------------
  */
-CATALOG(pg_shseclabel,3592,SharedSecLabel) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO
+CATALOG(pg_shseclabel,3592,SharedSecLabel) SHARED_RELATION ROWTYPE_OID(4066) WITHOUT_OIDS SCHEMA_MACRO
 {
 	Oid			objoid;			/* OID of the shared object itself */
 	Oid			classoid;		/* OID of table containing the shared object */
diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h
index a08f776..3a22975 100644
--- a/src/include/catalog/pg_statistic.h
+++ b/src/include/catalog/pg_statistic.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_statistic
  * ----------------
  */
-CATALOG(pg_statistic,2619,Statistic) BKI_WITHOUT_OIDS
+CATALOG(pg_statistic,2619,Statistic) WITHOUT_OIDS
 {
 	/* These fields form the unique key for the entry: */
 	Oid			starelid;		/* relation containing attribute */
diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h
index 3c9b287..7e95e5d 100644
--- a/src/include/catalog/pg_subscription.h
+++ b/src/include/catalog/pg_subscription.h
@@ -30,7 +30,7 @@
  *
  * NOTE:  When adding a column, also update system_views.sql.
  */
-CATALOG(pg_subscription,6100,Subscription) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHEMA_MACRO
+CATALOG(pg_subscription,6100,Subscription) SHARED_RELATION ROWTYPE_OID(6101) SCHEMA_MACRO
 {
 	Oid			subdbid;		/* Database the subscription is in. */
 	NameData	subname;		/* Name of the subscription */
diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h
index dbfd592..ede46cd 100644
--- a/src/include/catalog/pg_subscription_rel.h
+++ b/src/include/catalog/pg_subscription_rel.h
@@ -23,7 +23,7 @@
  *		typedef struct FormData_pg_subscription_rel
  * ----------------
  */
-CATALOG(pg_subscription_rel,6102,SubscriptionRel) BKI_WITHOUT_OIDS
+CATALOG(pg_subscription_rel,6102,SubscriptionRel) WITHOUT_OIDS
 {
 	Oid			srsubid;		/* Oid of subscription */
 	Oid			srrelid;		/* Oid of relation */
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index 1d6668e..ef10ff7 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_tablespace
  * ----------------
  */
-CATALOG(pg_tablespace,1213,TableSpace) BKI_SHARED_RELATION
+CATALOG(pg_tablespace,1213,TableSpace) SHARED_RELATION
 {
 	NameData	spcname;		/* tablespace name */
 	Oid			spcowner;		/* owner of tablespace */
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index aea4f31..08a114b 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -26,7 +26,7 @@
  *		typedef struct FormData_pg_ts_config_map
  * ----------------
  */
-CATALOG(pg_ts_config_map,3603,TSConfigMap) BKI_WITHOUT_OIDS
+CATALOG(pg_ts_config_map,3603,TSConfigMap) WITHOUT_OIDS
 {
 	Oid			mapcfg;			/* OID of configuration owning this entry */
 	int32		maptokentype;	/* token type from parser */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index efe9206..21a6b66 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -34,7 +34,7 @@
  *		See struct FormData_pg_attribute for details.
  * ----------------
  */
-CATALOG(pg_type,1247,Type) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO
+CATALOG(pg_type,1247,Type) BOOTSTRAP ROWTYPE_OID(71) SCHEMA_MACRO
 {
 	/* type name */
 	NameData	typname;
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index e8be34c..3674631 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -24,13 +24,13 @@ FIRSTOBJECTID=`grep '#define[ 	]*FirstBootstrapObjectId' ../access/transam.h | $
 export FIRSTOBJECTID
 
 # this part (down to the uniq step) should match the duplicate_oids script
-# note: we exclude BKI_BOOTSTRAP relations since they are expected to have
+# note: we exclude BOOTSTRAP relations since they are expected to have
 # matching data entries in pg_class.dat and pg_type.dat
 
 cat pg_*.h pg_*.dat toasting.h indexing.h |
-egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
+egrep -v -e '^CATALOG\(.*BOOTSTRAP' | \
 sed -n	-e 's/.*\boid *=> *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \
-	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
+	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
 	-e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
 	-e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \
-- 
2.7.4

#96Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#95)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 4/6/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Some of the CATALOG lines spill well past 80 characters with this,
although many of the affected ones already were overlength, eg ...

Thinking about this some more, a way occurred to me to shorten the
CATALOG lines while still treating all headers the same, and with very
little code (Patch 0001). What we do is automate the use of
'RelationId' and 'Relation_Rowtype_Id' so that the CATALOG macro only
needs the part pertaining to the table name, and the BKI_ROWTYPE_OID
macro can go back to just having the OID, eg:

Hm ... I don't like this too much, because it means that grepping for
those macros will no longer turn up the source of their definition.
Yeah, if you already know how Relation_Rowtype_Id macros are created,
you might not be confused, but I think it'd be problematic for
newcomers. Essentially we'd be shortening these lines by obfuscating,
which doesn't seem like a good tradeoff.

It might be all right to drop the BKI_ prefixes as per your other
suggestion, but I'm worried about possible symbol conflicts. It's
probably not really worth changing that by itself.

regards, tom lane

#97Mark Dilger
hornschnorter@gmail.com
In reply to: Tom Lane (#86)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. Tom mentioned upthread that he did
not want too much magic in genbki.pl or Catalog.pm, but I think
I can propose putting some magic in the header files themselves.

Take, for example, some of the fields in pg_type.dat. I'll elide
the ones I'm not talking about with ...:

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

If we changed pg_type.h:

        /* text format (required) */
-       regproc         typinput BKI_LOOKUP(pg_proc);
-       regproc         typoutput BKI_LOOKUP(pg_proc);
+       regproc         typinput BKI_DEFAULT("${typname}in") BKI_LOOKUP(pg_proc);
+       regproc         typoutput BKI_DEFAULT("${typname}out") BKI_LOOKUP(pg_proc);
        /* binary format (optional) */
-       regproc         typreceive BKI_LOOKUP(pg_proc);
-       regproc         typsend BKI_LOOKUP(pg_proc);
+       regproc         typreceive BKI_DEFAULT("${typname}recv") BKI_LOOKUP(pg_proc);
+       regproc         typsend BKI_DEFAULT("${typname}send") BKI_LOOKUP(pg_proc);

we could remove the typinput, typoutput, typreceive, and typsend
fields from many of the records. The logic for how to derive these
fields would not be hardcoded into genbki.pl or Catalog.pm, but rather
would be in pg_type.h, where it belongs. The pattern "${typname}in",
for example, is not hardcoded in perl, but is rather specified
in pg_type.h, making it obvious for those reading pg_type.h what the
pattern will be for generating the default value.

For those types where the typreceive and/or typsend values are not defined,
owing to receive and send functionality not being implemented, the user
would need to specify something like:

{... typname => 'X', typreceive => '-', typsend => '-'},

but that seems desirable anyway, as it helps to document the lacking
functionality. For types with associated functions named 'X_in', 'X_out',
'X_recv' and 'X_send' rather than 'Xin', 'Xout', 'Xrecv' and 'Xsend'
the user would have to specify those function names. That's not a
regression from how things are now, as all function names are currently
required. Perhaps after this change is applied (if it is) there will be
some pressure to standardize the naming of these functions. I'd consider
that a good thing.

If we changed pg_proc.h:

        /* procedure source text */
-       text            prosrc BKI_FORCE_NOT_NULL;
+       text            prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

we could remove the prosrc field from many of the records, which would
do a better job of calling attention to the remaining records where the
C function name differs from the SQL function name.

These two changes have been made in the patch I am submitting, with the
consequence that pg_type.dat drops from 52954 bytes to 49106 bytes, and
pg_proc.dat drops from 521302 bytes to 464554 bytes. Since postgres.bki
is unchanged, I don't mean to suggest any runtime or initdb time performance
improvement; I only mention the size reduction to emphasize that there
is less text for human programmers to review.

There are further changes possible along these lines, where instead of
specifying s/FOO/BAR/ type substitition, we have something more like
s/FOO/BAR/e and s/FOO/BAR/ee type symantics, but before proposing
them, I'd like to see if the community likes the direction I am going
with this patch. If so, we can debate whether, for example, the default
alignment requirements of a type can be derived from the type's size
rather than having to be specified for every row in pg_type.dat.

mark

Attachments:

bootstrap_data_patch.1application/octet-stream; name=bootstrap_data_patch.1Download
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 6305a2b362..25b6edfd78 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -185,6 +185,12 @@ sub ParseHeader
 						{
 							$column{forcenotnull} = 1;
 						}
+						# We use quoted embedded variables to make sure
+						# syntax highlighters display them properly
+						elsif ($attopt =~ /BKI_DEFAULT\("(.*\${.*}.*)"\)/)
+						{
+							$column{default_substitution} = $1;
+						}
 						# We use quotes for values like \0 and \054, to
 						# make sure all compilers and syntax highlighters
 						# can recognize them properly.
@@ -311,6 +317,22 @@ sub AddDefaultValues
 		{
 			$row->{$attname} = $column->{default};
 		}
+		elsif (defined $column->{default_substitution})
+		{
+			my $substitution = $column->{default_substitution};
+			my @vars = $substitution =~ m/\${(\w+?)}/g;
+			foreach my $var (@vars)
+			{
+				my $replacement = $row->{$var};
+				if (!defined $replacement)
+				{
+					die sprintf "missing default substitution value %s in %s.dat line %s\n",
+						$var, $catname, $row->{line_number};
+				}
+				$substitution =~ s/\${$var}/$replacement/g;
+			}
+			$row->{$attname} = $substitution;
+		}
 		elsif ($catname eq 'pg_proc' && $attname eq 'pronargs' &&
 			   defined($row->{proargtypes}))
 		{
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index f643f564a6..6f5da8b7d8 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -37,147 +37,125 @@
 # OIDS 1 - 99
 
 { oid => '1242', descr => 'I/O',
-  proname => 'boolin', prorettype => 'bool', proargtypes => 'cstring',
-  prosrc => 'boolin' },
+  proname => 'boolin', prorettype => 'bool', proargtypes => 'cstring' },
 { oid => '1243', descr => 'I/O',
-  proname => 'boolout', prorettype => 'cstring', proargtypes => 'bool',
-  prosrc => 'boolout' },
+  proname => 'boolout', prorettype => 'cstring', proargtypes => 'bool' },
 { oid => '1244', descr => 'I/O',
-  proname => 'byteain', prorettype => 'bytea', proargtypes => 'cstring',
-  prosrc => 'byteain' },
+  proname => 'byteain', prorettype => 'bytea', proargtypes => 'cstring' },
 { oid => '31', descr => 'I/O',
-  proname => 'byteaout', prorettype => 'cstring', proargtypes => 'bytea',
-  prosrc => 'byteaout' },
+  proname => 'byteaout', prorettype => 'cstring', proargtypes => 'bytea' },
 { oid => '1245', descr => 'I/O',
-  proname => 'charin', prorettype => 'char', proargtypes => 'cstring',
-  prosrc => 'charin' },
+  proname => 'charin', prorettype => 'char', proargtypes => 'cstring' },
 { oid => '33', descr => 'I/O',
-  proname => 'charout', prorettype => 'cstring', proargtypes => 'char',
-  prosrc => 'charout' },
+  proname => 'charout', prorettype => 'cstring', proargtypes => 'char' },
 { oid => '34', descr => 'I/O',
-  proname => 'namein', prorettype => 'name', proargtypes => 'cstring',
-  prosrc => 'namein' },
+  proname => 'namein', prorettype => 'name', proargtypes => 'cstring' },
 { oid => '35', descr => 'I/O',
-  proname => 'nameout', prorettype => 'cstring', proargtypes => 'name',
-  prosrc => 'nameout' },
+  proname => 'nameout', prorettype => 'cstring', proargtypes => 'name' },
 { oid => '38', descr => 'I/O',
-  proname => 'int2in', prorettype => 'int2', proargtypes => 'cstring',
-  prosrc => 'int2in' },
+  proname => 'int2in', prorettype => 'int2', proargtypes => 'cstring' },
 { oid => '39', descr => 'I/O',
-  proname => 'int2out', prorettype => 'cstring', proargtypes => 'int2',
-  prosrc => 'int2out' },
+  proname => 'int2out', prorettype => 'cstring', proargtypes => 'int2' },
 { oid => '40', descr => 'I/O',
   proname => 'int2vectorin', prorettype => 'int2vector',
-  proargtypes => 'cstring', prosrc => 'int2vectorin' },
+  proargtypes => 'cstring' },
 { oid => '41', descr => 'I/O',
   proname => 'int2vectorout', prorettype => 'cstring',
-  proargtypes => 'int2vector', prosrc => 'int2vectorout' },
+  proargtypes => 'int2vector' },
 { oid => '42', descr => 'I/O',
-  proname => 'int4in', prorettype => 'int4', proargtypes => 'cstring',
-  prosrc => 'int4in' },
+  proname => 'int4in', prorettype => 'int4', proargtypes => 'cstring' },
 { oid => '43', descr => 'I/O',
-  proname => 'int4out', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'int4out' },
+  proname => 'int4out', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '44', descr => 'I/O',
   proname => 'regprocin', provolatile => 's', prorettype => 'regproc',
-  proargtypes => 'cstring', prosrc => 'regprocin' },
+  proargtypes => 'cstring' },
 { oid => '45', descr => 'I/O',
   proname => 'regprocout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regproc', prosrc => 'regprocout' },
+  proargtypes => 'regproc' },
 { oid => '3494', descr => 'convert proname to regproc',
   proname => 'to_regproc', provolatile => 's', prorettype => 'regproc',
-  proargtypes => 'text', prosrc => 'to_regproc' },
+  proargtypes => 'text' },
 { oid => '3479', descr => 'convert proname to regprocedure',
   proname => 'to_regprocedure', provolatile => 's',
-  prorettype => 'regprocedure', proargtypes => 'text',
-  prosrc => 'to_regprocedure' },
+  prorettype => 'regprocedure', proargtypes => 'text' },
 { oid => '46', descr => 'I/O',
-  proname => 'textin', prorettype => 'text', proargtypes => 'cstring',
-  prosrc => 'textin' },
+  proname => 'textin', prorettype => 'text', proargtypes => 'cstring' },
 { oid => '47', descr => 'I/O',
-  proname => 'textout', prorettype => 'cstring', proargtypes => 'text',
-  prosrc => 'textout' },
+  proname => 'textout', prorettype => 'cstring', proargtypes => 'text' },
 { oid => '48', descr => 'I/O',
-  proname => 'tidin', prorettype => 'tid', proargtypes => 'cstring',
-  prosrc => 'tidin' },
+  proname => 'tidin', prorettype => 'tid', proargtypes => 'cstring' },
 { oid => '49', descr => 'I/O',
-  proname => 'tidout', prorettype => 'cstring', proargtypes => 'tid',
-  prosrc => 'tidout' },
+  proname => 'tidout', prorettype => 'cstring', proargtypes => 'tid' },
 { oid => '50', descr => 'I/O',
-  proname => 'xidin', prorettype => 'xid', proargtypes => 'cstring',
-  prosrc => 'xidin' },
+  proname => 'xidin', prorettype => 'xid', proargtypes => 'cstring' },
 { oid => '51', descr => 'I/O',
-  proname => 'xidout', prorettype => 'cstring', proargtypes => 'xid',
-  prosrc => 'xidout' },
+  proname => 'xidout', prorettype => 'cstring', proargtypes => 'xid' },
 { oid => '52', descr => 'I/O',
-  proname => 'cidin', prorettype => 'cid', proargtypes => 'cstring',
-  prosrc => 'cidin' },
+  proname => 'cidin', prorettype => 'cid', proargtypes => 'cstring' },
 { oid => '53', descr => 'I/O',
-  proname => 'cidout', prorettype => 'cstring', proargtypes => 'cid',
-  prosrc => 'cidout' },
+  proname => 'cidout', prorettype => 'cstring', proargtypes => 'cid' },
 { oid => '54', descr => 'I/O',
-  proname => 'oidvectorin', prorettype => 'oidvector', proargtypes => 'cstring',
-  prosrc => 'oidvectorin' },
+  proname => 'oidvectorin', prorettype => 'oidvector', proargtypes => 'cstring' },
 { oid => '55', descr => 'I/O',
   proname => 'oidvectorout', prorettype => 'cstring',
-  proargtypes => 'oidvector', prosrc => 'oidvectorout' },
+  proargtypes => 'oidvector' },
 { oid => '56',
   proname => 'boollt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boollt' },
+  proargtypes => 'bool bool' },
 { oid => '57',
   proname => 'boolgt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boolgt' },
+  proargtypes => 'bool bool' },
 { oid => '60',
   proname => 'booleq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'booleq' },
+  proargtypes => 'bool bool' },
 { oid => '61',
   proname => 'chareq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'chareq' },
+  proargtypes => 'char char' },
 { oid => '62',
   proname => 'nameeq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'nameeq' },
+  proargtypes => 'name name' },
 { oid => '63',
   proname => 'int2eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2eq' },
+  proargtypes => 'int2 int2' },
 { oid => '64',
   proname => 'int2lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2lt' },
+  proargtypes => 'int2 int2' },
 { oid => '65',
   proname => 'int4eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4eq' },
+  proargtypes => 'int4 int4' },
 { oid => '66',
   proname => 'int4lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4lt' },
+  proargtypes => 'int4 int4' },
 { oid => '67',
   proname => 'texteq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'texteq' },
+  proargtypes => 'text text' },
 { oid => '3696',
   proname => 'starts_with', proleakproof => 't', prorettype => 'bool',
   proargtypes => 'text text', prosrc => 'text_starts_with' },
 { oid => '68',
   proname => 'xideq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'xid xid', prosrc => 'xideq' },
+  proargtypes => 'xid xid' },
 { oid => '3308',
   proname => 'xidneq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'xid xid', prosrc => 'xidneq' },
+  proargtypes => 'xid xid' },
 { oid => '69',
   proname => 'cideq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'cid cid', prosrc => 'cideq' },
+  proargtypes => 'cid cid' },
 { oid => '70',
   proname => 'charne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'charne' },
+  proargtypes => 'char char' },
 { oid => '1246',
   proname => 'charlt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'charlt' },
+  proargtypes => 'char char' },
 { oid => '72',
   proname => 'charle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'charle' },
+  proargtypes => 'char char' },
 { oid => '73',
   proname => 'chargt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'chargt' },
+  proargtypes => 'char char' },
 { oid => '74',
   proname => 'charge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'char char', prosrc => 'charge' },
+  proargtypes => 'char char' },
 { oid => '77', descr => 'convert char to int4',
   proname => 'int4', prorettype => 'int4', proargtypes => 'char',
   prosrc => 'chartoi4' },
@@ -186,447 +164,362 @@
   prosrc => 'i4tochar' },
 
 { oid => '79',
-  proname => 'nameregexeq', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameregexeq' },
+  proname => 'nameregexeq', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '1252',
-  proname => 'nameregexne', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameregexne' },
+  proname => 'nameregexne', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '1254',
-  proname => 'textregexeq', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'textregexeq' },
+  proname => 'textregexeq', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1256',
-  proname => 'textregexne', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'textregexne' },
+  proname => 'textregexne', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1257', descr => 'length',
-  proname => 'textlen', prorettype => 'int4', proargtypes => 'text',
-  prosrc => 'textlen' },
+  proname => 'textlen', prorettype => 'int4', proargtypes => 'text' },
 { oid => '1258',
-  proname => 'textcat', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'textcat' },
+  proname => 'textcat', prorettype => 'text', proargtypes => 'text text' },
 
 { oid => '84',
   proname => 'boolne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boolne' },
+  proargtypes => 'bool bool' },
 { oid => '89', descr => 'PostgreSQL version string',
   proname => 'version', provolatile => 's', prorettype => 'text',
   proargtypes => '', prosrc => 'pgsql_version' },
 
 { oid => '86', descr => 'I/O',
   proname => 'pg_ddl_command_in', prorettype => 'pg_ddl_command',
-  proargtypes => 'cstring', prosrc => 'pg_ddl_command_in' },
+  proargtypes => 'cstring' },
 { oid => '87', descr => 'I/O',
   proname => 'pg_ddl_command_out', prorettype => 'cstring',
-  proargtypes => 'pg_ddl_command', prosrc => 'pg_ddl_command_out' },
+  proargtypes => 'pg_ddl_command' },
 { oid => '88', descr => 'I/O',
   proname => 'pg_ddl_command_recv', prorettype => 'pg_ddl_command',
-  proargtypes => 'internal', prosrc => 'pg_ddl_command_recv' },
+  proargtypes => 'internal' },
 { oid => '90', descr => 'I/O',
   proname => 'pg_ddl_command_send', prorettype => 'bytea',
-  proargtypes => 'pg_ddl_command', prosrc => 'pg_ddl_command_send' },
+  proargtypes => 'pg_ddl_command' },
 
 # OIDS 100 - 199
 
 { oid => '101', descr => 'restriction selectivity of = and related operators',
   proname => 'eqsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'eqsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '102',
   descr => 'restriction selectivity of <> and related operators',
   proname => 'neqsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'neqsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '103',
   descr => 'restriction selectivity of < and related operators on scalar datatypes',
   proname => 'scalarltsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'scalarltsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '104',
   descr => 'restriction selectivity of > and related operators on scalar datatypes',
   proname => 'scalargtsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'scalargtsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '105', descr => 'join selectivity of = and related operators',
   proname => 'eqjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal', prosrc => 'eqjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '106', descr => 'join selectivity of <> and related operators',
   proname => 'neqjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'neqjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '107',
   descr => 'join selectivity of < and related operators on scalar datatypes',
   proname => 'scalarltjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'scalarltjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '108',
   descr => 'join selectivity of > and related operators on scalar datatypes',
   proname => 'scalargtjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'scalargtjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 { oid => '336',
   descr => 'restriction selectivity of <= and related operators on scalar datatypes',
   proname => 'scalarlesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'scalarlesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '337',
   descr => 'restriction selectivity of >= and related operators on scalar datatypes',
   proname => 'scalargesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'scalargesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '386',
   descr => 'join selectivity of <= and related operators on scalar datatypes',
   proname => 'scalarlejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'scalarlejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '398',
   descr => 'join selectivity of >= and related operators on scalar datatypes',
   proname => 'scalargejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'scalargejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 { oid => '109', descr => 'I/O',
-  proname => 'unknownin', prorettype => 'unknown', proargtypes => 'cstring',
-  prosrc => 'unknownin' },
+  proname => 'unknownin', prorettype => 'unknown', proargtypes => 'cstring' },
 { oid => '110', descr => 'I/O',
-  proname => 'unknownout', prorettype => 'cstring', proargtypes => 'unknown',
-  prosrc => 'unknownout' },
+  proname => 'unknownout', prorettype => 'cstring', proargtypes => 'unknown' },
 { oid => '111',
-  proname => 'numeric_fac', prorettype => 'numeric', proargtypes => 'int8',
-  prosrc => 'numeric_fac' },
+  proname => 'numeric_fac', prorettype => 'numeric', proargtypes => 'int8' },
 
 { oid => '115',
-  proname => 'box_above_eq', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_above_eq' },
+  proname => 'box_above_eq', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '116',
-  proname => 'box_below_eq', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_below_eq' },
+  proname => 'box_below_eq', prorettype => 'bool', proargtypes => 'box box' },
 
 { oid => '117', descr => 'I/O',
-  proname => 'point_in', prorettype => 'point', proargtypes => 'cstring',
-  prosrc => 'point_in' },
+  proname => 'point_in', prorettype => 'point', proargtypes => 'cstring' },
 { oid => '118', descr => 'I/O',
-  proname => 'point_out', prorettype => 'cstring', proargtypes => 'point',
-  prosrc => 'point_out' },
+  proname => 'point_out', prorettype => 'cstring', proargtypes => 'point' },
 { oid => '119', descr => 'I/O',
-  proname => 'lseg_in', prorettype => 'lseg', proargtypes => 'cstring',
-  prosrc => 'lseg_in' },
+  proname => 'lseg_in', prorettype => 'lseg', proargtypes => 'cstring' },
 { oid => '120', descr => 'I/O',
-  proname => 'lseg_out', prorettype => 'cstring', proargtypes => 'lseg',
-  prosrc => 'lseg_out' },
+  proname => 'lseg_out', prorettype => 'cstring', proargtypes => 'lseg' },
 { oid => '121', descr => 'I/O',
-  proname => 'path_in', prorettype => 'path', proargtypes => 'cstring',
-  prosrc => 'path_in' },
+  proname => 'path_in', prorettype => 'path', proargtypes => 'cstring' },
 { oid => '122', descr => 'I/O',
-  proname => 'path_out', prorettype => 'cstring', proargtypes => 'path',
-  prosrc => 'path_out' },
+  proname => 'path_out', prorettype => 'cstring', proargtypes => 'path' },
 { oid => '123', descr => 'I/O',
-  proname => 'box_in', prorettype => 'box', proargtypes => 'cstring',
-  prosrc => 'box_in' },
+  proname => 'box_in', prorettype => 'box', proargtypes => 'cstring' },
 { oid => '124', descr => 'I/O',
-  proname => 'box_out', prorettype => 'cstring', proargtypes => 'box',
-  prosrc => 'box_out' },
+  proname => 'box_out', prorettype => 'cstring', proargtypes => 'box' },
 { oid => '125',
-  proname => 'box_overlap', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_overlap' },
+  proname => 'box_overlap', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '126',
-  proname => 'box_ge', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_ge' },
+  proname => 'box_ge', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '127',
-  proname => 'box_gt', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_gt' },
+  proname => 'box_gt', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '128',
-  proname => 'box_eq', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_eq' },
+  proname => 'box_eq', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '129',
-  proname => 'box_lt', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_lt' },
+  proname => 'box_lt', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '130',
-  proname => 'box_le', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_le' },
+  proname => 'box_le', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '131',
-  proname => 'point_above', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_above' },
+  proname => 'point_above', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '132',
-  proname => 'point_left', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_left' },
+  proname => 'point_left', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '133',
-  proname => 'point_right', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_right' },
+  proname => 'point_right', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '134',
-  proname => 'point_below', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_below' },
+  proname => 'point_below', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '135',
-  proname => 'point_eq', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_eq' },
+  proname => 'point_eq', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '136',
-  proname => 'on_pb', prorettype => 'bool', proargtypes => 'point box',
-  prosrc => 'on_pb' },
+  proname => 'on_pb', prorettype => 'bool', proargtypes => 'point box' },
 { oid => '137',
-  proname => 'on_ppath', prorettype => 'bool', proargtypes => 'point path',
-  prosrc => 'on_ppath' },
+  proname => 'on_ppath', prorettype => 'bool', proargtypes => 'point path' },
 { oid => '138',
-  proname => 'box_center', prorettype => 'point', proargtypes => 'box',
-  prosrc => 'box_center' },
+  proname => 'box_center', prorettype => 'point', proargtypes => 'box' },
 { oid => '139',
   descr => 'restriction selectivity for area-comparison operators',
   proname => 'areasel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'areasel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '140', descr => 'join selectivity for area-comparison operators',
   proname => 'areajoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'areajoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '141',
-  proname => 'int4mul', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4mul' },
+  proname => 'int4mul', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '144',
   proname => 'int4ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4ne' },
+  proargtypes => 'int4 int4' },
 { oid => '145',
   proname => 'int2ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2ne' },
+  proargtypes => 'int2 int2' },
 { oid => '146',
   proname => 'int2gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2gt' },
+  proargtypes => 'int2 int2' },
 { oid => '147',
   proname => 'int4gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4gt' },
+  proargtypes => 'int4 int4' },
 { oid => '148',
   proname => 'int2le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2le' },
+  proargtypes => 'int2 int2' },
 { oid => '149',
   proname => 'int4le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4le' },
+  proargtypes => 'int4 int4' },
 { oid => '150',
   proname => 'int4ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int4', prosrc => 'int4ge' },
+  proargtypes => 'int4 int4' },
 { oid => '151',
   proname => 'int2ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int2', prosrc => 'int2ge' },
+  proargtypes => 'int2 int2' },
 { oid => '152',
-  proname => 'int2mul', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2mul' },
+  proname => 'int2mul', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '153',
-  proname => 'int2div', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2div' },
+  proname => 'int2div', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '154',
-  proname => 'int4div', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4div' },
+  proname => 'int4div', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '155',
-  proname => 'int2mod', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2mod' },
+  proname => 'int2mod', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '156',
-  proname => 'int4mod', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4mod' },
+  proname => 'int4mod', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '157',
   proname => 'textne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'textne' },
+  proargtypes => 'text text' },
 { oid => '158',
   proname => 'int24eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24eq' },
+  proargtypes => 'int2 int4' },
 { oid => '159',
   proname => 'int42eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42eq' },
+  proargtypes => 'int4 int2' },
 { oid => '160',
   proname => 'int24lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24lt' },
+  proargtypes => 'int2 int4' },
 { oid => '161',
   proname => 'int42lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42lt' },
+  proargtypes => 'int4 int2' },
 { oid => '162',
   proname => 'int24gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24gt' },
+  proargtypes => 'int2 int4' },
 { oid => '163',
   proname => 'int42gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42gt' },
+  proargtypes => 'int4 int2' },
 { oid => '164',
   proname => 'int24ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24ne' },
+  proargtypes => 'int2 int4' },
 { oid => '165',
   proname => 'int42ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42ne' },
+  proargtypes => 'int4 int2' },
 { oid => '166',
   proname => 'int24le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24le' },
+  proargtypes => 'int2 int4' },
 { oid => '167',
   proname => 'int42le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42le' },
+  proargtypes => 'int4 int2' },
 { oid => '168',
   proname => 'int24ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int4', prosrc => 'int24ge' },
+  proargtypes => 'int2 int4' },
 { oid => '169',
   proname => 'int42ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int2', prosrc => 'int42ge' },
+  proargtypes => 'int4 int2' },
 { oid => '170',
-  proname => 'int24mul', prorettype => 'int4', proargtypes => 'int2 int4',
-  prosrc => 'int24mul' },
+  proname => 'int24mul', prorettype => 'int4', proargtypes => 'int2 int4' },
 { oid => '171',
-  proname => 'int42mul', prorettype => 'int4', proargtypes => 'int4 int2',
-  prosrc => 'int42mul' },
+  proname => 'int42mul', prorettype => 'int4', proargtypes => 'int4 int2' },
 { oid => '172',
-  proname => 'int24div', prorettype => 'int4', proargtypes => 'int2 int4',
-  prosrc => 'int24div' },
+  proname => 'int24div', prorettype => 'int4', proargtypes => 'int2 int4' },
 { oid => '173',
-  proname => 'int42div', prorettype => 'int4', proargtypes => 'int4 int2',
-  prosrc => 'int42div' },
+  proname => 'int42div', prorettype => 'int4', proargtypes => 'int4 int2' },
 { oid => '176',
-  proname => 'int2pl', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2pl' },
+  proname => 'int2pl', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '177',
-  proname => 'int4pl', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4pl' },
+  proname => 'int4pl', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '178',
-  proname => 'int24pl', prorettype => 'int4', proargtypes => 'int2 int4',
-  prosrc => 'int24pl' },
+  proname => 'int24pl', prorettype => 'int4', proargtypes => 'int2 int4' },
 { oid => '179',
-  proname => 'int42pl', prorettype => 'int4', proargtypes => 'int4 int2',
-  prosrc => 'int42pl' },
+  proname => 'int42pl', prorettype => 'int4', proargtypes => 'int4 int2' },
 { oid => '180',
-  proname => 'int2mi', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2mi' },
+  proname => 'int2mi', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '181',
-  proname => 'int4mi', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4mi' },
+  proname => 'int4mi', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '182',
-  proname => 'int24mi', prorettype => 'int4', proargtypes => 'int2 int4',
-  prosrc => 'int24mi' },
+  proname => 'int24mi', prorettype => 'int4', proargtypes => 'int2 int4' },
 { oid => '183',
-  proname => 'int42mi', prorettype => 'int4', proargtypes => 'int4 int2',
-  prosrc => 'int42mi' },
+  proname => 'int42mi', prorettype => 'int4', proargtypes => 'int4 int2' },
 { oid => '184',
   proname => 'oideq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oideq' },
+  proargtypes => 'oid oid' },
 { oid => '185',
   proname => 'oidne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oidne' },
+  proargtypes => 'oid oid' },
 { oid => '186',
-  proname => 'box_same', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_same' },
+  proname => 'box_same', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '187',
-  proname => 'box_contain', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_contain' },
+  proname => 'box_contain', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '188',
-  proname => 'box_left', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_left' },
+  proname => 'box_left', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '189',
-  proname => 'box_overleft', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_overleft' },
+  proname => 'box_overleft', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '190',
-  proname => 'box_overright', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_overright' },
+  proname => 'box_overright', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '191',
-  proname => 'box_right', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_right' },
+  proname => 'box_right', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '192',
-  proname => 'box_contained', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_contained' },
+  proname => 'box_contained', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '193',
-  proname => 'box_contain_pt', prorettype => 'bool', proargtypes => 'box point',
-  prosrc => 'box_contain_pt' },
+  proname => 'box_contain_pt', prorettype => 'bool', proargtypes => 'box point' },
 
 { oid => '195', descr => 'I/O',
   proname => 'pg_node_tree_in', prorettype => 'pg_node_tree',
-  proargtypes => 'cstring', prosrc => 'pg_node_tree_in' },
+  proargtypes => 'cstring' },
 { oid => '196', descr => 'I/O',
   proname => 'pg_node_tree_out', prorettype => 'cstring',
-  proargtypes => 'pg_node_tree', prosrc => 'pg_node_tree_out' },
+  proargtypes => 'pg_node_tree' },
 { oid => '197', descr => 'I/O',
   proname => 'pg_node_tree_recv', provolatile => 's',
-  prorettype => 'pg_node_tree', proargtypes => 'internal',
-  prosrc => 'pg_node_tree_recv' },
+  prorettype => 'pg_node_tree', proargtypes => 'internal' },
 { oid => '198', descr => 'I/O',
   proname => 'pg_node_tree_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'pg_node_tree', prosrc => 'pg_node_tree_send' },
+  proargtypes => 'pg_node_tree' },
 
 # OIDS 200 - 299
 
 { oid => '200', descr => 'I/O',
-  proname => 'float4in', prorettype => 'float4', proargtypes => 'cstring',
-  prosrc => 'float4in' },
+  proname => 'float4in', prorettype => 'float4', proargtypes => 'cstring' },
 { oid => '201', descr => 'I/O',
-  proname => 'float4out', prorettype => 'cstring', proargtypes => 'float4',
-  prosrc => 'float4out' },
+  proname => 'float4out', prorettype => 'cstring', proargtypes => 'float4' },
 { oid => '202',
   proname => 'float4mul', prorettype => 'float4',
-  proargtypes => 'float4 float4', prosrc => 'float4mul' },
+  proargtypes => 'float4 float4' },
 { oid => '203',
   proname => 'float4div', prorettype => 'float4',
-  proargtypes => 'float4 float4', prosrc => 'float4div' },
+  proargtypes => 'float4 float4' },
 { oid => '204',
-  proname => 'float4pl', prorettype => 'float4', proargtypes => 'float4 float4',
-  prosrc => 'float4pl' },
+  proname => 'float4pl', prorettype => 'float4', proargtypes => 'float4 float4' },
 { oid => '205',
-  proname => 'float4mi', prorettype => 'float4', proargtypes => 'float4 float4',
-  prosrc => 'float4mi' },
+  proname => 'float4mi', prorettype => 'float4', proargtypes => 'float4 float4' },
 { oid => '206',
-  proname => 'float4um', prorettype => 'float4', proargtypes => 'float4',
-  prosrc => 'float4um' },
+  proname => 'float4um', prorettype => 'float4', proargtypes => 'float4' },
 { oid => '207',
-  proname => 'float4abs', prorettype => 'float4', proargtypes => 'float4',
-  prosrc => 'float4abs' },
+  proname => 'float4abs', prorettype => 'float4', proargtypes => 'float4' },
 { oid => '208', descr => 'aggregate transition function',
   proname => 'float4_accum', prorettype => '_float8',
-  proargtypes => '_float8 float4', prosrc => 'float4_accum' },
+  proargtypes => '_float8 float4' },
 { oid => '209', descr => 'larger of two',
   proname => 'float4larger', prorettype => 'float4',
-  proargtypes => 'float4 float4', prosrc => 'float4larger' },
+  proargtypes => 'float4 float4' },
 { oid => '211', descr => 'smaller of two',
   proname => 'float4smaller', prorettype => 'float4',
-  proargtypes => 'float4 float4', prosrc => 'float4smaller' },
+  proargtypes => 'float4 float4' },
 
 { oid => '212',
-  proname => 'int4um', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'int4um' },
+  proname => 'int4um', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '213',
-  proname => 'int2um', prorettype => 'int2', proargtypes => 'int2',
-  prosrc => 'int2um' },
+  proname => 'int2um', prorettype => 'int2', proargtypes => 'int2' },
 
 { oid => '214', descr => 'I/O',
-  proname => 'float8in', prorettype => 'float8', proargtypes => 'cstring',
-  prosrc => 'float8in' },
+  proname => 'float8in', prorettype => 'float8', proargtypes => 'cstring' },
 { oid => '215', descr => 'I/O',
-  proname => 'float8out', prorettype => 'cstring', proargtypes => 'float8',
-  prosrc => 'float8out' },
+  proname => 'float8out', prorettype => 'cstring', proargtypes => 'float8' },
 { oid => '216',
   proname => 'float8mul', prorettype => 'float8',
-  proargtypes => 'float8 float8', prosrc => 'float8mul' },
+  proargtypes => 'float8 float8' },
 { oid => '217',
   proname => 'float8div', prorettype => 'float8',
-  proargtypes => 'float8 float8', prosrc => 'float8div' },
+  proargtypes => 'float8 float8' },
 { oid => '218',
-  proname => 'float8pl', prorettype => 'float8', proargtypes => 'float8 float8',
-  prosrc => 'float8pl' },
+  proname => 'float8pl', prorettype => 'float8', proargtypes => 'float8 float8' },
 { oid => '219',
-  proname => 'float8mi', prorettype => 'float8', proargtypes => 'float8 float8',
-  prosrc => 'float8mi' },
+  proname => 'float8mi', prorettype => 'float8', proargtypes => 'float8 float8' },
 { oid => '220',
-  proname => 'float8um', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'float8um' },
+  proname => 'float8um', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '221',
-  proname => 'float8abs', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'float8abs' },
+  proname => 'float8abs', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '222', descr => 'aggregate transition function',
   proname => 'float8_accum', prorettype => '_float8',
-  proargtypes => '_float8 float8', prosrc => 'float8_accum' },
+  proargtypes => '_float8 float8' },
 { oid => '276', descr => 'aggregate combine function',
   proname => 'float8_combine', prorettype => '_float8',
-  proargtypes => '_float8 _float8', prosrc => 'float8_combine' },
+  proargtypes => '_float8 _float8' },
 { oid => '223', descr => 'larger of two',
   proname => 'float8larger', prorettype => 'float8',
-  proargtypes => 'float8 float8', prosrc => 'float8larger' },
+  proargtypes => 'float8 float8' },
 { oid => '224', descr => 'smaller of two',
   proname => 'float8smaller', prorettype => 'float8',
-  proargtypes => 'float8 float8', prosrc => 'float8smaller' },
+  proargtypes => 'float8 float8' },
 
 { oid => '225',
-  proname => 'lseg_center', prorettype => 'point', proargtypes => 'lseg',
-  prosrc => 'lseg_center' },
+  proname => 'lseg_center', prorettype => 'point', proargtypes => 'lseg' },
 { oid => '226',
-  proname => 'path_center', prorettype => 'point', proargtypes => 'path',
-  prosrc => 'path_center' },
+  proname => 'path_center', prorettype => 'point', proargtypes => 'path' },
 { oid => '227',
-  proname => 'poly_center', prorettype => 'point', proargtypes => 'polygon',
-  prosrc => 'poly_center' },
+  proname => 'poly_center', prorettype => 'point', proargtypes => 'polygon' },
 
 { oid => '228', descr => 'round to nearest integer',
-  proname => 'dround', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dround' },
+  proname => 'dround', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '229', descr => 'truncate to integer',
-  proname => 'dtrunc', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dtrunc' },
+  proname => 'dtrunc', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '2308', descr => 'nearest integer >= value',
   proname => 'ceil', prorettype => 'float8', proargtypes => 'float8',
   prosrc => 'dceil' },
@@ -640,20 +533,15 @@
   proname => 'sign', prorettype => 'float8', proargtypes => 'float8',
   prosrc => 'dsign' },
 { oid => '230',
-  proname => 'dsqrt', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dsqrt' },
+  proname => 'dsqrt', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '231',
-  proname => 'dcbrt', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dcbrt' },
+  proname => 'dcbrt', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '232',
-  proname => 'dpow', prorettype => 'float8', proargtypes => 'float8 float8',
-  prosrc => 'dpow' },
+  proname => 'dpow', prorettype => 'float8', proargtypes => 'float8 float8' },
 { oid => '233', descr => 'natural exponential (e^x)',
-  proname => 'dexp', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dexp' },
+  proname => 'dexp', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '234', descr => 'natural logarithm',
-  proname => 'dlog1', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dlog1' },
+  proname => 'dlog1', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '235', descr => 'convert int2 to float8',
   proname => 'float8', prorettype => 'float8', proargtypes => 'int2',
   prosrc => 'i2tod' },
@@ -668,227 +556,225 @@
   prosrc => 'ftoi2' },
 { oid => '239',
   proname => 'line_distance', prorettype => 'float8',
-  proargtypes => 'line line', prosrc => 'line_distance' },
+  proargtypes => 'line line' },
 
 { oid => '240', descr => 'I/O',
   proname => 'abstimein', provolatile => 's', prorettype => 'abstime',
-  proargtypes => 'cstring', prosrc => 'abstimein' },
+  proargtypes => 'cstring' },
 { oid => '241', descr => 'I/O',
   proname => 'abstimeout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'abstime', prosrc => 'abstimeout' },
+  proargtypes => 'abstime' },
 { oid => '242', descr => 'I/O',
   proname => 'reltimein', provolatile => 's', prorettype => 'reltime',
-  proargtypes => 'cstring', prosrc => 'reltimein' },
+  proargtypes => 'cstring' },
 { oid => '243', descr => 'I/O',
   proname => 'reltimeout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'reltime', prosrc => 'reltimeout' },
+  proargtypes => 'reltime' },
 { oid => '244',
   proname => 'timepl', prorettype => 'abstime',
-  proargtypes => 'abstime reltime', prosrc => 'timepl' },
+  proargtypes => 'abstime reltime' },
 { oid => '245',
   proname => 'timemi', prorettype => 'abstime',
-  proargtypes => 'abstime reltime', prosrc => 'timemi' },
+  proargtypes => 'abstime reltime' },
 { oid => '246', descr => 'I/O',
   proname => 'tintervalin', provolatile => 's', prorettype => 'tinterval',
-  proargtypes => 'cstring', prosrc => 'tintervalin' },
+  proargtypes => 'cstring' },
 { oid => '247', descr => 'I/O',
   proname => 'tintervalout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'tinterval', prosrc => 'tintervalout' },
+  proargtypes => 'tinterval' },
 { oid => '248',
   proname => 'intinterval', prorettype => 'bool',
-  proargtypes => 'abstime tinterval', prosrc => 'intinterval' },
+  proargtypes => 'abstime tinterval' },
 { oid => '249', descr => 'tinterval to reltime',
   proname => 'tintervalrel', prorettype => 'reltime',
-  proargtypes => 'tinterval', prosrc => 'tintervalrel' },
+  proargtypes => 'tinterval' },
 { oid => '250', descr => 'current date and time (abstime)',
   proname => 'timenow', provolatile => 's', prorettype => 'abstime',
-  proargtypes => '', prosrc => 'timenow' },
+  proargtypes => '' },
 { oid => '251',
   proname => 'abstimeeq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimeeq' },
+  proargtypes => 'abstime abstime' },
 { oid => '252',
   proname => 'abstimene', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimene' },
+  proargtypes => 'abstime abstime' },
 { oid => '253',
   proname => 'abstimelt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimelt' },
+  proargtypes => 'abstime abstime' },
 { oid => '254',
   proname => 'abstimegt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimegt' },
+  proargtypes => 'abstime abstime' },
 { oid => '255',
   proname => 'abstimele', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimele' },
+  proargtypes => 'abstime abstime' },
 { oid => '256',
   proname => 'abstimege', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'abstime abstime', prosrc => 'abstimege' },
+  proargtypes => 'abstime abstime' },
 { oid => '257',
   proname => 'reltimeeq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimeeq' },
+  proargtypes => 'reltime reltime' },
 { oid => '258',
   proname => 'reltimene', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimene' },
+  proargtypes => 'reltime reltime' },
 { oid => '259',
   proname => 'reltimelt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimelt' },
+  proargtypes => 'reltime reltime' },
 { oid => '260',
   proname => 'reltimegt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimegt' },
+  proargtypes => 'reltime reltime' },
 { oid => '261',
   proname => 'reltimele', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimele' },
+  proargtypes => 'reltime reltime' },
 { oid => '262',
   proname => 'reltimege', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'reltime reltime', prosrc => 'reltimege' },
+  proargtypes => 'reltime reltime' },
 { oid => '263',
   proname => 'tintervalsame', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalsame' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '264',
   proname => 'tintervalct', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalct' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '265',
   proname => 'tintervalov', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalov' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '266',
   proname => 'tintervalleneq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervalleneq' },
+  proargtypes => 'tinterval reltime' },
 { oid => '267',
   proname => 'tintervallenne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervallenne' },
+  proargtypes => 'tinterval reltime' },
 { oid => '268',
   proname => 'tintervallenlt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervallenlt' },
+  proargtypes => 'tinterval reltime' },
 { oid => '269',
   proname => 'tintervallengt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervallengt' },
+  proargtypes => 'tinterval reltime' },
 { oid => '270',
   proname => 'tintervallenle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervallenle' },
+  proargtypes => 'tinterval reltime' },
 { oid => '271',
   proname => 'tintervallenge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval reltime', prosrc => 'tintervallenge' },
+  proargtypes => 'tinterval reltime' },
 { oid => '272',
   proname => 'tintervalstart', prorettype => 'abstime',
-  proargtypes => 'tinterval', prosrc => 'tintervalstart' },
+  proargtypes => 'tinterval' },
 { oid => '273', descr => 'end of interval',
   proname => 'tintervalend', prorettype => 'abstime',
-  proargtypes => 'tinterval', prosrc => 'tintervalend' },
+  proargtypes => 'tinterval' },
 { oid => '274',
   descr => 'current date and time - increments during transactions',
   proname => 'timeofday', provolatile => 'v', prorettype => 'text',
-  proargtypes => '', prosrc => 'timeofday' },
+  proargtypes => '' },
 { oid => '275', descr => 'finite abstime?',
   proname => 'isfinite', prorettype => 'bool', proargtypes => 'abstime',
   prosrc => 'abstime_finite' },
 
 { oid => '277',
-  proname => 'inter_sl', prorettype => 'bool', proargtypes => 'lseg line',
-  prosrc => 'inter_sl' },
+  proname => 'inter_sl', prorettype => 'bool', proargtypes => 'lseg line' },
 { oid => '278',
-  proname => 'inter_lb', prorettype => 'bool', proargtypes => 'line box',
-  prosrc => 'inter_lb' },
+  proname => 'inter_lb', prorettype => 'bool', proargtypes => 'line box' },
 
 { oid => '279',
   proname => 'float48mul', prorettype => 'float8',
-  proargtypes => 'float4 float8', prosrc => 'float48mul' },
+  proargtypes => 'float4 float8' },
 { oid => '280',
   proname => 'float48div', prorettype => 'float8',
-  proargtypes => 'float4 float8', prosrc => 'float48div' },
+  proargtypes => 'float4 float8' },
 { oid => '281',
   proname => 'float48pl', prorettype => 'float8',
-  proargtypes => 'float4 float8', prosrc => 'float48pl' },
+  proargtypes => 'float4 float8' },
 { oid => '282',
   proname => 'float48mi', prorettype => 'float8',
-  proargtypes => 'float4 float8', prosrc => 'float48mi' },
+  proargtypes => 'float4 float8' },
 { oid => '283',
   proname => 'float84mul', prorettype => 'float8',
-  proargtypes => 'float8 float4', prosrc => 'float84mul' },
+  proargtypes => 'float8 float4' },
 { oid => '284',
   proname => 'float84div', prorettype => 'float8',
-  proargtypes => 'float8 float4', prosrc => 'float84div' },
+  proargtypes => 'float8 float4' },
 { oid => '285',
   proname => 'float84pl', prorettype => 'float8',
-  proargtypes => 'float8 float4', prosrc => 'float84pl' },
+  proargtypes => 'float8 float4' },
 { oid => '286',
   proname => 'float84mi', prorettype => 'float8',
-  proargtypes => 'float8 float4', prosrc => 'float84mi' },
+  proargtypes => 'float8 float4' },
 
 { oid => '287',
   proname => 'float4eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4eq' },
+  proargtypes => 'float4 float4' },
 { oid => '288',
   proname => 'float4ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4ne' },
+  proargtypes => 'float4 float4' },
 { oid => '289',
   proname => 'float4lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4lt' },
+  proargtypes => 'float4 float4' },
 { oid => '290',
   proname => 'float4le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4le' },
+  proargtypes => 'float4 float4' },
 { oid => '291',
   proname => 'float4gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4gt' },
+  proargtypes => 'float4 float4' },
 { oid => '292',
   proname => 'float4ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float4', prosrc => 'float4ge' },
+  proargtypes => 'float4 float4' },
 
 { oid => '293',
   proname => 'float8eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8eq' },
+  proargtypes => 'float8 float8' },
 { oid => '294',
   proname => 'float8ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8ne' },
+  proargtypes => 'float8 float8' },
 { oid => '295',
   proname => 'float8lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8lt' },
+  proargtypes => 'float8 float8' },
 { oid => '296',
   proname => 'float8le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8le' },
+  proargtypes => 'float8 float8' },
 { oid => '297',
   proname => 'float8gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8gt' },
+  proargtypes => 'float8 float8' },
 { oid => '298',
   proname => 'float8ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float8', prosrc => 'float8ge' },
+  proargtypes => 'float8 float8' },
 
 { oid => '299',
   proname => 'float48eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48eq' },
+  proargtypes => 'float4 float8' },
 
 # OIDS 300 - 399
 
 { oid => '300',
   proname => 'float48ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48ne' },
+  proargtypes => 'float4 float8' },
 { oid => '301',
   proname => 'float48lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48lt' },
+  proargtypes => 'float4 float8' },
 { oid => '302',
   proname => 'float48le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48le' },
+  proargtypes => 'float4 float8' },
 { oid => '303',
   proname => 'float48gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48gt' },
+  proargtypes => 'float4 float8' },
 { oid => '304',
   proname => 'float48ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float4 float8', prosrc => 'float48ge' },
+  proargtypes => 'float4 float8' },
 { oid => '305',
   proname => 'float84eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84eq' },
+  proargtypes => 'float8 float4' },
 { oid => '306',
   proname => 'float84ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84ne' },
+  proargtypes => 'float8 float4' },
 { oid => '307',
   proname => 'float84lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84lt' },
+  proargtypes => 'float8 float4' },
 { oid => '308',
   proname => 'float84le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84le' },
+  proargtypes => 'float8 float4' },
 { oid => '309',
   proname => 'float84gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84gt' },
+  proargtypes => 'float8 float4' },
 { oid => '310',
   proname => 'float84ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'float8 float4', prosrc => 'float84ge' },
+  proargtypes => 'float8 float4' },
 { oid => '320', descr => 'bucket number of operand in equal-width histogram',
   proname => 'width_bucket', prorettype => 'int4',
   proargtypes => 'float8 float8 float8 int4', prosrc => 'width_bucket_float8' },
@@ -921,154 +807,136 @@
 # Index access method handlers
 { oid => '330', descr => 'btree index access method handler',
   proname => 'bthandler', provolatile => 'v', prorettype => 'index_am_handler',
-  proargtypes => 'internal', prosrc => 'bthandler' },
+  proargtypes => 'internal' },
 { oid => '331', descr => 'hash index access method handler',
   proname => 'hashhandler', provolatile => 'v',
-  prorettype => 'index_am_handler', proargtypes => 'internal',
-  prosrc => 'hashhandler' },
+  prorettype => 'index_am_handler', proargtypes => 'internal' },
 { oid => '332', descr => 'gist index access method handler',
   proname => 'gisthandler', provolatile => 'v',
-  prorettype => 'index_am_handler', proargtypes => 'internal',
-  prosrc => 'gisthandler' },
+  prorettype => 'index_am_handler', proargtypes => 'internal' },
 { oid => '333', descr => 'gin index access method handler',
   proname => 'ginhandler', provolatile => 'v', prorettype => 'index_am_handler',
-  proargtypes => 'internal', prosrc => 'ginhandler' },
+  proargtypes => 'internal' },
 { oid => '334', descr => 'spgist index access method handler',
   proname => 'spghandler', provolatile => 'v', prorettype => 'index_am_handler',
-  proargtypes => 'internal', prosrc => 'spghandler' },
+  proargtypes => 'internal' },
 { oid => '335', descr => 'brin index access method handler',
   proname => 'brinhandler', provolatile => 'v',
-  prorettype => 'index_am_handler', proargtypes => 'internal',
-  prosrc => 'brinhandler' },
+  prorettype => 'index_am_handler', proargtypes => 'internal' },
 { oid => '3952', descr => 'brin: standalone scan new table pages',
   proname => 'brin_summarize_new_values', provolatile => 'v',
-  proparallel => 'u', prorettype => 'int4', proargtypes => 'regclass',
-  prosrc => 'brin_summarize_new_values' },
+  proparallel => 'u', prorettype => 'int4', proargtypes => 'regclass' },
 { oid => '3999', descr => 'brin: standalone scan new table pages',
   proname => 'brin_summarize_range', provolatile => 'v', proparallel => 'u',
-  prorettype => 'int4', proargtypes => 'regclass int8',
-  prosrc => 'brin_summarize_range' },
+  prorettype => 'int4', proargtypes => 'regclass int8' },
 { oid => '4014', descr => 'brin: desummarize page range',
   proname => 'brin_desummarize_range', provolatile => 'v', proparallel => 'u',
-  prorettype => 'void', proargtypes => 'regclass int8',
-  prosrc => 'brin_desummarize_range' },
+  prorettype => 'void', proargtypes => 'regclass int8' },
 
 { oid => '338', descr => 'validate an operator class',
   proname => 'amvalidate', provolatile => 'v', prorettype => 'bool',
-  proargtypes => 'oid', prosrc => 'amvalidate' },
+  proargtypes => 'oid' },
 
 { oid => '636', descr => 'test property of an index access method',
   proname => 'pg_indexam_has_property', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid text',
-  prosrc => 'pg_indexam_has_property' },
+  prorettype => 'bool', proargtypes => 'oid text' },
 { oid => '637', descr => 'test property of an index',
   proname => 'pg_index_has_property', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'regclass text', prosrc => 'pg_index_has_property' },
+  proargtypes => 'regclass text' },
 { oid => '638', descr => 'test property of an index column',
   proname => 'pg_index_column_has_property', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'regclass int4 text',
-  prosrc => 'pg_index_column_has_property' },
+  prorettype => 'bool', proargtypes => 'regclass int4 text' },
 
 { oid => '339',
   proname => 'poly_same', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_same' },
+  proargtypes => 'polygon polygon' },
 { oid => '340',
   proname => 'poly_contain', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_contain' },
+  proargtypes => 'polygon polygon' },
 { oid => '341',
   proname => 'poly_left', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_left' },
+  proargtypes => 'polygon polygon' },
 { oid => '342',
   proname => 'poly_overleft', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_overleft' },
+  proargtypes => 'polygon polygon' },
 { oid => '343',
   proname => 'poly_overright', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_overright' },
+  proargtypes => 'polygon polygon' },
 { oid => '344',
   proname => 'poly_right', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_right' },
+  proargtypes => 'polygon polygon' },
 { oid => '345',
   proname => 'poly_contained', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_contained' },
+  proargtypes => 'polygon polygon' },
 { oid => '346',
   proname => 'poly_overlap', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_overlap' },
+  proargtypes => 'polygon polygon' },
 { oid => '347', descr => 'I/O',
-  proname => 'poly_in', prorettype => 'polygon', proargtypes => 'cstring',
-  prosrc => 'poly_in' },
+  proname => 'poly_in', prorettype => 'polygon', proargtypes => 'cstring' },
 { oid => '348', descr => 'I/O',
-  proname => 'poly_out', prorettype => 'cstring', proargtypes => 'polygon',
-  prosrc => 'poly_out' },
+  proname => 'poly_out', prorettype => 'cstring', proargtypes => 'polygon' },
 
 { oid => '350', descr => 'less-equal-greater',
-  proname => 'btint2cmp', prorettype => 'int4', proargtypes => 'int2 int2',
-  prosrc => 'btint2cmp' },
+  proname => 'btint2cmp', prorettype => 'int4', proargtypes => 'int2 int2' },
 { oid => '3129', descr => 'sort support',
   proname => 'btint2sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btint2sortsupport' },
+  proargtypes => 'internal' },
 { oid => '351', descr => 'less-equal-greater',
-  proname => 'btint4cmp', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'btint4cmp' },
+  proname => 'btint4cmp', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '3130', descr => 'sort support',
   proname => 'btint4sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btint4sortsupport' },
+  proargtypes => 'internal' },
 { oid => '842', descr => 'less-equal-greater',
-  proname => 'btint8cmp', prorettype => 'int4', proargtypes => 'int8 int8',
-  prosrc => 'btint8cmp' },
+  proname => 'btint8cmp', prorettype => 'int4', proargtypes => 'int8 int8' },
 { oid => '3131', descr => 'sort support',
   proname => 'btint8sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btint8sortsupport' },
+  proargtypes => 'internal' },
 { oid => '354', descr => 'less-equal-greater',
   proname => 'btfloat4cmp', prorettype => 'int4',
-  proargtypes => 'float4 float4', prosrc => 'btfloat4cmp' },
+  proargtypes => 'float4 float4' },
 { oid => '3132', descr => 'sort support',
   proname => 'btfloat4sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btfloat4sortsupport' },
+  proargtypes => 'internal' },
 { oid => '355', descr => 'less-equal-greater',
   proname => 'btfloat8cmp', prorettype => 'int4',
-  proargtypes => 'float8 float8', prosrc => 'btfloat8cmp' },
+  proargtypes => 'float8 float8' },
 { oid => '3133', descr => 'sort support',
   proname => 'btfloat8sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btfloat8sortsupport' },
+  proargtypes => 'internal' },
 { oid => '356', descr => 'less-equal-greater',
-  proname => 'btoidcmp', prorettype => 'int4', proargtypes => 'oid oid',
-  prosrc => 'btoidcmp' },
+  proname => 'btoidcmp', prorettype => 'int4', proargtypes => 'oid oid' },
 { oid => '3134', descr => 'sort support',
   proname => 'btoidsortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btoidsortsupport' },
+  proargtypes => 'internal' },
 { oid => '404', descr => 'less-equal-greater',
   proname => 'btoidvectorcmp', prorettype => 'int4',
-  proargtypes => 'oidvector oidvector', prosrc => 'btoidvectorcmp' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '357', descr => 'less-equal-greater',
   proname => 'btabstimecmp', prorettype => 'int4',
-  proargtypes => 'abstime abstime', prosrc => 'btabstimecmp' },
+  proargtypes => 'abstime abstime' },
 { oid => '358', descr => 'less-equal-greater',
-  proname => 'btcharcmp', prorettype => 'int4', proargtypes => 'char char',
-  prosrc => 'btcharcmp' },
+  proname => 'btcharcmp', prorettype => 'int4', proargtypes => 'char char' },
 { oid => '359', descr => 'less-equal-greater',
-  proname => 'btnamecmp', prorettype => 'int4', proargtypes => 'name name',
-  prosrc => 'btnamecmp' },
+  proname => 'btnamecmp', prorettype => 'int4', proargtypes => 'name name' },
 { oid => '3135', descr => 'sort support',
   proname => 'btnamesortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btnamesortsupport' },
+  proargtypes => 'internal' },
 { oid => '360', descr => 'less-equal-greater',
-  proname => 'bttextcmp', prorettype => 'int4', proargtypes => 'text text',
-  prosrc => 'bttextcmp' },
+  proname => 'bttextcmp', prorettype => 'int4', proargtypes => 'text text' },
 { oid => '3255', descr => 'sort support',
   proname => 'bttextsortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'bttextsortsupport' },
+  proargtypes => 'internal' },
 { oid => '377', descr => 'less-equal-greater',
-  proname => 'cash_cmp', prorettype => 'int4', proargtypes => 'money money',
-  prosrc => 'cash_cmp' },
+  proname => 'cash_cmp', prorettype => 'int4', proargtypes => 'money money' },
 { oid => '380', descr => 'less-equal-greater',
   proname => 'btreltimecmp', prorettype => 'int4',
-  proargtypes => 'reltime reltime', prosrc => 'btreltimecmp' },
+  proargtypes => 'reltime reltime' },
 { oid => '381', descr => 'less-equal-greater',
   proname => 'bttintervalcmp', prorettype => 'int4',
-  proargtypes => 'tinterval tinterval', prosrc => 'bttintervalcmp' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '382', descr => 'less-equal-greater',
   proname => 'btarraycmp', prorettype => 'int4',
-  proargtypes => 'anyarray anyarray', prosrc => 'btarraycmp' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '4126', descr => 'window RANGE support',
   proname => 'in_range', prorettype => 'bool',
   proargtypes => 'int8 int8 int8 bool bool', prosrc => 'in_range_int8_int8' },
@@ -1105,43 +973,32 @@
 
 { oid => '361',
   proname => 'lseg_distance', prorettype => 'float8',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_distance' },
+  proargtypes => 'lseg lseg' },
 { oid => '362',
-  proname => 'lseg_interpt', prorettype => 'point', proargtypes => 'lseg lseg',
-  prosrc => 'lseg_interpt' },
+  proname => 'lseg_interpt', prorettype => 'point', proargtypes => 'lseg lseg' },
 { oid => '363',
-  proname => 'dist_ps', prorettype => 'float8', proargtypes => 'point lseg',
-  prosrc => 'dist_ps' },
+  proname => 'dist_ps', prorettype => 'float8', proargtypes => 'point lseg' },
 { oid => '364',
-  proname => 'dist_pb', prorettype => 'float8', proargtypes => 'point box',
-  prosrc => 'dist_pb' },
+  proname => 'dist_pb', prorettype => 'float8', proargtypes => 'point box' },
 { oid => '365',
-  proname => 'dist_sb', prorettype => 'float8', proargtypes => 'lseg box',
-  prosrc => 'dist_sb' },
+  proname => 'dist_sb', prorettype => 'float8', proargtypes => 'lseg box' },
 { oid => '366',
-  proname => 'close_ps', prorettype => 'point', proargtypes => 'point lseg',
-  prosrc => 'close_ps' },
+  proname => 'close_ps', prorettype => 'point', proargtypes => 'point lseg' },
 { oid => '367',
-  proname => 'close_pb', prorettype => 'point', proargtypes => 'point box',
-  prosrc => 'close_pb' },
+  proname => 'close_pb', prorettype => 'point', proargtypes => 'point box' },
 { oid => '368',
-  proname => 'close_sb', prorettype => 'point', proargtypes => 'lseg box',
-  prosrc => 'close_sb' },
+  proname => 'close_sb', prorettype => 'point', proargtypes => 'lseg box' },
 { oid => '369',
-  proname => 'on_ps', prorettype => 'bool', proargtypes => 'point lseg',
-  prosrc => 'on_ps' },
+  proname => 'on_ps', prorettype => 'bool', proargtypes => 'point lseg' },
 { oid => '370',
   proname => 'path_distance', prorettype => 'float8',
-  proargtypes => 'path path', prosrc => 'path_distance' },
+  proargtypes => 'path path' },
 { oid => '371',
-  proname => 'dist_ppath', prorettype => 'float8', proargtypes => 'point path',
-  prosrc => 'dist_ppath' },
+  proname => 'dist_ppath', prorettype => 'float8', proargtypes => 'point path' },
 { oid => '372',
-  proname => 'on_sb', prorettype => 'bool', proargtypes => 'lseg box',
-  prosrc => 'on_sb' },
+  proname => 'on_sb', prorettype => 'bool', proargtypes => 'lseg box' },
 { oid => '373',
-  proname => 'inter_sb', prorettype => 'bool', proargtypes => 'lseg box',
-  prosrc => 'inter_sb' },
+  proname => 'inter_sb', prorettype => 'bool', proargtypes => 'lseg box' },
 
 # OIDS 400 - 499
 
@@ -1162,101 +1019,84 @@
   prosrc => 'bpchar_name' },
 
 { oid => '449', descr => 'hash',
-  proname => 'hashint2', prorettype => 'int4', proargtypes => 'int2',
-  prosrc => 'hashint2' },
+  proname => 'hashint2', prorettype => 'int4', proargtypes => 'int2' },
 { oid => '441', descr => 'hash',
   proname => 'hashint2extended', prorettype => 'int8',
-  proargtypes => 'int2 int8', prosrc => 'hashint2extended' },
+  proargtypes => 'int2 int8' },
 { oid => '450', descr => 'hash',
-  proname => 'hashint4', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'hashint4' },
+  proname => 'hashint4', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '425', descr => 'hash',
   proname => 'hashint4extended', prorettype => 'int8',
-  proargtypes => 'int4 int8', prosrc => 'hashint4extended' },
+  proargtypes => 'int4 int8' },
 { oid => '949', descr => 'hash',
-  proname => 'hashint8', prorettype => 'int4', proargtypes => 'int8',
-  prosrc => 'hashint8' },
+  proname => 'hashint8', prorettype => 'int4', proargtypes => 'int8' },
 { oid => '442', descr => 'hash',
   proname => 'hashint8extended', prorettype => 'int8',
-  proargtypes => 'int8 int8', prosrc => 'hashint8extended' },
+  proargtypes => 'int8 int8' },
 { oid => '451', descr => 'hash',
-  proname => 'hashfloat4', prorettype => 'int4', proargtypes => 'float4',
-  prosrc => 'hashfloat4' },
+  proname => 'hashfloat4', prorettype => 'int4', proargtypes => 'float4' },
 { oid => '443', descr => 'hash',
   proname => 'hashfloat4extended', prorettype => 'int8',
-  proargtypes => 'float4 int8', prosrc => 'hashfloat4extended' },
+  proargtypes => 'float4 int8' },
 { oid => '452', descr => 'hash',
-  proname => 'hashfloat8', prorettype => 'int4', proargtypes => 'float8',
-  prosrc => 'hashfloat8' },
+  proname => 'hashfloat8', prorettype => 'int4', proargtypes => 'float8' },
 { oid => '444', descr => 'hash',
   proname => 'hashfloat8extended', prorettype => 'int8',
-  proargtypes => 'float8 int8', prosrc => 'hashfloat8extended' },
+  proargtypes => 'float8 int8' },
 { oid => '453', descr => 'hash',
-  proname => 'hashoid', prorettype => 'int4', proargtypes => 'oid',
-  prosrc => 'hashoid' },
+  proname => 'hashoid', prorettype => 'int4', proargtypes => 'oid' },
 { oid => '445', descr => 'hash',
-  proname => 'hashoidextended', prorettype => 'int8', proargtypes => 'oid int8',
-  prosrc => 'hashoidextended' },
+  proname => 'hashoidextended', prorettype => 'int8', proargtypes => 'oid int8' },
 { oid => '454', descr => 'hash',
-  proname => 'hashchar', prorettype => 'int4', proargtypes => 'char',
-  prosrc => 'hashchar' },
+  proname => 'hashchar', prorettype => 'int4', proargtypes => 'char' },
 { oid => '446', descr => 'hash',
   proname => 'hashcharextended', prorettype => 'int8',
-  proargtypes => 'char int8', prosrc => 'hashcharextended' },
+  proargtypes => 'char int8' },
 { oid => '455', descr => 'hash',
-  proname => 'hashname', prorettype => 'int4', proargtypes => 'name',
-  prosrc => 'hashname' },
+  proname => 'hashname', prorettype => 'int4', proargtypes => 'name' },
 { oid => '447', descr => 'hash',
   proname => 'hashnameextended', prorettype => 'int8',
-  proargtypes => 'name int8', prosrc => 'hashnameextended' },
+  proargtypes => 'name int8' },
 { oid => '400', descr => 'hash',
-  proname => 'hashtext', prorettype => 'int4', proargtypes => 'text',
-  prosrc => 'hashtext' },
+  proname => 'hashtext', prorettype => 'int4', proargtypes => 'text' },
 { oid => '448', descr => 'hash',
   proname => 'hashtextextended', prorettype => 'int8',
-  proargtypes => 'text int8', prosrc => 'hashtextextended' },
+  proargtypes => 'text int8' },
 { oid => '456', descr => 'hash',
-  proname => 'hashvarlena', prorettype => 'int4', proargtypes => 'internal',
-  prosrc => 'hashvarlena' },
+  proname => 'hashvarlena', prorettype => 'int4', proargtypes => 'internal' },
 { oid => '772', descr => 'hash',
   proname => 'hashvarlenaextended', prorettype => 'int8',
-  proargtypes => 'internal int8', prosrc => 'hashvarlenaextended' },
+  proargtypes => 'internal int8' },
 { oid => '457', descr => 'hash',
-  proname => 'hashoidvector', prorettype => 'int4', proargtypes => 'oidvector',
-  prosrc => 'hashoidvector' },
+  proname => 'hashoidvector', prorettype => 'int4', proargtypes => 'oidvector' },
 { oid => '776', descr => 'hash',
   proname => 'hashoidvectorextended', prorettype => 'int8',
-  proargtypes => 'oidvector int8', prosrc => 'hashoidvectorextended' },
+  proargtypes => 'oidvector int8' },
 { oid => '329', descr => 'hash',
-  proname => 'hash_aclitem', prorettype => 'int4', proargtypes => 'aclitem',
-  prosrc => 'hash_aclitem' },
+  proname => 'hash_aclitem', prorettype => 'int4', proargtypes => 'aclitem' },
 { oid => '777', descr => 'hash',
   proname => 'hash_aclitem_extended', prorettype => 'int8',
-  proargtypes => 'aclitem int8', prosrc => 'hash_aclitem_extended' },
+  proargtypes => 'aclitem int8' },
 { oid => '399', descr => 'hash',
-  proname => 'hashmacaddr', prorettype => 'int4', proargtypes => 'macaddr',
-  prosrc => 'hashmacaddr' },
+  proname => 'hashmacaddr', prorettype => 'int4', proargtypes => 'macaddr' },
 { oid => '778', descr => 'hash',
   proname => 'hashmacaddrextended', prorettype => 'int8',
-  proargtypes => 'macaddr int8', prosrc => 'hashmacaddrextended' },
+  proargtypes => 'macaddr int8' },
 { oid => '422', descr => 'hash',
-  proname => 'hashinet', prorettype => 'int4', proargtypes => 'inet',
-  prosrc => 'hashinet' },
+  proname => 'hashinet', prorettype => 'int4', proargtypes => 'inet' },
 { oid => '779', descr => 'hash',
   proname => 'hashinetextended', prorettype => 'int8',
-  proargtypes => 'inet int8', prosrc => 'hashinetextended' },
+  proargtypes => 'inet int8' },
 { oid => '432', descr => 'hash',
-  proname => 'hash_numeric', prorettype => 'int4', proargtypes => 'numeric',
-  prosrc => 'hash_numeric' },
+  proname => 'hash_numeric', prorettype => 'int4', proargtypes => 'numeric' },
 { oid => '780', descr => 'hash',
   proname => 'hash_numeric_extended', prorettype => 'int8',
-  proargtypes => 'numeric int8', prosrc => 'hash_numeric_extended' },
+  proargtypes => 'numeric int8' },
 { oid => '328', descr => 'hash',
-  proname => 'hashmacaddr8', prorettype => 'int4', proargtypes => 'macaddr8',
-  prosrc => 'hashmacaddr8' },
+  proname => 'hashmacaddr8', prorettype => 'int4', proargtypes => 'macaddr8' },
 { oid => '781', descr => 'hash',
   proname => 'hashmacaddr8extended', prorettype => 'int8',
-  proargtypes => 'macaddr8 int8', prosrc => 'hashmacaddr8extended' },
+  proargtypes => 'macaddr8 int8' },
 
 { oid => '438', descr => 'count the number of NULL arguments',
   proname => 'num_nulls', provariadic => 'any', proisstrict => 'f',
@@ -1268,70 +1108,61 @@
   proargmodes => '{v}', prosrc => 'pg_num_nonnulls' },
 
 { oid => '458', descr => 'larger of two',
-  proname => 'text_larger', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'text_larger' },
+  proname => 'text_larger', prorettype => 'text', proargtypes => 'text text' },
 { oid => '459', descr => 'smaller of two',
-  proname => 'text_smaller', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'text_smaller' },
+  proname => 'text_smaller', prorettype => 'text', proargtypes => 'text text' },
 
 { oid => '460', descr => 'I/O',
-  proname => 'int8in', prorettype => 'int8', proargtypes => 'cstring',
-  prosrc => 'int8in' },
+  proname => 'int8in', prorettype => 'int8', proargtypes => 'cstring' },
 { oid => '461', descr => 'I/O',
-  proname => 'int8out', prorettype => 'cstring', proargtypes => 'int8',
-  prosrc => 'int8out' },
+  proname => 'int8out', prorettype => 'cstring', proargtypes => 'int8' },
 { oid => '462',
-  proname => 'int8um', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8um' },
+  proname => 'int8um', prorettype => 'int8', proargtypes => 'int8' },
 { oid => '463',
-  proname => 'int8pl', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8pl' },
+  proname => 'int8pl', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '464',
-  proname => 'int8mi', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8mi' },
+  proname => 'int8mi', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '465',
-  proname => 'int8mul', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8mul' },
+  proname => 'int8mul', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '466',
-  proname => 'int8div', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8div' },
+  proname => 'int8div', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '467',
   proname => 'int8eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8eq' },
+  proargtypes => 'int8 int8' },
 { oid => '468',
   proname => 'int8ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8ne' },
+  proargtypes => 'int8 int8' },
 { oid => '469',
   proname => 'int8lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8lt' },
+  proargtypes => 'int8 int8' },
 { oid => '470',
   proname => 'int8gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8gt' },
+  proargtypes => 'int8 int8' },
 { oid => '471',
   proname => 'int8le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8le' },
+  proargtypes => 'int8 int8' },
 { oid => '472',
   proname => 'int8ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int8', prosrc => 'int8ge' },
+  proargtypes => 'int8 int8' },
 
 { oid => '474',
   proname => 'int84eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84eq' },
+  proargtypes => 'int8 int4' },
 { oid => '475',
   proname => 'int84ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84ne' },
+  proargtypes => 'int8 int4' },
 { oid => '476',
   proname => 'int84lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84lt' },
+  proargtypes => 'int8 int4' },
 { oid => '477',
   proname => 'int84gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84gt' },
+  proargtypes => 'int8 int4' },
 { oid => '478',
   proname => 'int84le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84le' },
+  proargtypes => 'int8 int4' },
 { oid => '479',
   proname => 'int84ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int4', prosrc => 'int84ge' },
+  proargtypes => 'int8 int4' },
 
 { oid => '480', descr => 'convert int8 to int4',
   proname => 'int4', prorettype => 'int4', proargtypes => 'int8',
@@ -1351,11 +1182,10 @@
 # OIDS 600 - 699
 
 { oid => '626', descr => 'hash',
-  proname => 'hash_array', prorettype => 'int4', proargtypes => 'anyarray',
-  prosrc => 'hash_array' },
+  proname => 'hash_array', prorettype => 'int4', proargtypes => 'anyarray' },
 { oid => '782', descr => 'hash',
   proname => 'hash_array_extended', prorettype => 'int8',
-  proargtypes => 'anyarray int8', prosrc => 'hash_array_extended' },
+  proargtypes => 'anyarray int8' },
 
 { oid => '652', descr => 'convert int8 to float4',
   proname => 'float4', prorettype => 'float4', proargtypes => 'int8',
@@ -1373,53 +1203,52 @@
 
 { oid => '655',
   proname => 'namelt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'namelt' },
+  proargtypes => 'name name' },
 { oid => '656',
   proname => 'namele', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'namele' },
+  proargtypes => 'name name' },
 { oid => '657',
   proname => 'namegt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'namegt' },
+  proargtypes => 'name name' },
 { oid => '658',
   proname => 'namege', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'namege' },
+  proargtypes => 'name name' },
 { oid => '659',
   proname => 'namene', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'name name', prosrc => 'namene' },
+  proargtypes => 'name name' },
 
 { oid => '668', descr => 'adjust char() to typmod length',
   proname => 'bpchar', prorettype => 'bpchar',
-  proargtypes => 'bpchar int4 bool', prosrc => 'bpchar' },
+  proargtypes => 'bpchar int4 bool' },
 { oid => '3097', descr => 'transform a varchar length coercion',
   proname => 'varchar_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'varchar_transform' },
+  proargtypes => 'internal' },
 { oid => '669', descr => 'adjust varchar() to typmod length',
   proname => 'varchar', protransform => 'varchar_transform',
-  prorettype => 'varchar', proargtypes => 'varchar int4 bool',
-  prosrc => 'varchar' },
+  prorettype => 'varchar', proargtypes => 'varchar int4 bool' },
 
 { oid => '676',
   proname => 'mktinterval', prorettype => 'tinterval',
-  proargtypes => 'abstime abstime', prosrc => 'mktinterval' },
+  proargtypes => 'abstime abstime' },
 
 { oid => '619',
   proname => 'oidvectorne', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectorne' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '677',
   proname => 'oidvectorlt', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectorlt' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '678',
   proname => 'oidvectorle', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectorle' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '679',
   proname => 'oidvectoreq', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectoreq' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '680',
   proname => 'oidvectorge', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectorge' },
+  proargtypes => 'oidvector oidvector' },
 { oid => '681',
   proname => 'oidvectorgt', prorettype => 'bool',
-  proargtypes => 'oidvector oidvector', prosrc => 'oidvectorgt' },
+  proargtypes => 'oidvector oidvector' },
 
 # OIDS 700 - 799
 { oid => '710', descr => 'deprecated, use current_user instead',
@@ -1427,10 +1256,10 @@
   proargtypes => '', prosrc => 'current_user' },
 { oid => '716',
   proname => 'oidlt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oidlt' },
+  proargtypes => 'oid oid' },
 { oid => '717',
   proname => 'oidle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oidle' },
+  proargtypes => 'oid oid' },
 
 { oid => '720', descr => 'octet length',
   proname => 'octet_length', prorettype => 'int4', proargtypes => 'bytea',
@@ -1455,101 +1284,92 @@
   proargtypes => 'bytea bytea int4', prosrc => 'byteaoverlay_no_len' },
 
 { oid => '725',
-  proname => 'dist_pl', prorettype => 'float8', proargtypes => 'point line',
-  prosrc => 'dist_pl' },
+  proname => 'dist_pl', prorettype => 'float8', proargtypes => 'point line' },
 { oid => '726',
-  proname => 'dist_lb', prorettype => 'float8', proargtypes => 'line box',
-  prosrc => 'dist_lb' },
+  proname => 'dist_lb', prorettype => 'float8', proargtypes => 'line box' },
 { oid => '727',
-  proname => 'dist_sl', prorettype => 'float8', proargtypes => 'lseg line',
-  prosrc => 'dist_sl' },
+  proname => 'dist_sl', prorettype => 'float8', proargtypes => 'lseg line' },
 { oid => '728',
   proname => 'dist_cpoly', prorettype => 'float8',
-  proargtypes => 'circle polygon', prosrc => 'dist_cpoly' },
+  proargtypes => 'circle polygon' },
 { oid => '729',
   proname => 'poly_distance', prorettype => 'float8',
-  proargtypes => 'polygon polygon', prosrc => 'poly_distance' },
+  proargtypes => 'polygon polygon' },
 { oid => '3275',
   proname => 'dist_ppoly', prorettype => 'float8',
-  proargtypes => 'point polygon', prosrc => 'dist_ppoly' },
+  proargtypes => 'point polygon' },
 { oid => '3292',
   proname => 'dist_polyp', prorettype => 'float8',
-  proargtypes => 'polygon point', prosrc => 'dist_polyp' },
+  proargtypes => 'polygon point' },
 { oid => '3290',
   proname => 'dist_cpoint', prorettype => 'float8',
-  proargtypes => 'circle point', prosrc => 'dist_cpoint' },
+  proargtypes => 'circle point' },
 
 { oid => '740',
-  proname => 'text_lt', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'text_lt' },
+  proname => 'text_lt', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '741',
-  proname => 'text_le', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'text_le' },
+  proname => 'text_le', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '742',
-  proname => 'text_gt', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'text_gt' },
+  proname => 'text_gt', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '743',
-  proname => 'text_ge', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'text_ge' },
+  proname => 'text_ge', prorettype => 'bool', proargtypes => 'text text' },
 
 { oid => '745', descr => 'current user name',
   proname => 'current_user', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'current_user' },
+  proargtypes => '' },
 { oid => '746', descr => 'session user name',
   proname => 'session_user', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'session_user' },
+  proargtypes => '' },
 
 { oid => '744',
   proname => 'array_eq', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_eq' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '390',
   proname => 'array_ne', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_ne' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '391',
   proname => 'array_lt', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_lt' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '392',
   proname => 'array_gt', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_gt' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '393',
   proname => 'array_le', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_le' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '396',
   proname => 'array_ge', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_ge' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '747', descr => 'array dimensions',
-  proname => 'array_dims', prorettype => 'text', proargtypes => 'anyarray',
-  prosrc => 'array_dims' },
+  proname => 'array_dims', prorettype => 'text', proargtypes => 'anyarray' },
 { oid => '748', descr => 'number of array dimensions',
-  proname => 'array_ndims', prorettype => 'int4', proargtypes => 'anyarray',
-  prosrc => 'array_ndims' },
+  proname => 'array_ndims', prorettype => 'int4', proargtypes => 'anyarray' },
 { oid => '750', descr => 'I/O',
   proname => 'array_in', provolatile => 's', prorettype => 'anyarray',
-  proargtypes => 'cstring oid int4', prosrc => 'array_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '751', descr => 'I/O',
   proname => 'array_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyarray', prosrc => 'array_out' },
+  proargtypes => 'anyarray' },
 { oid => '2091', descr => 'array lower dimension',
   proname => 'array_lower', prorettype => 'int4',
-  proargtypes => 'anyarray int4', prosrc => 'array_lower' },
+  proargtypes => 'anyarray int4' },
 { oid => '2092', descr => 'array upper dimension',
   proname => 'array_upper', prorettype => 'int4',
-  proargtypes => 'anyarray int4', prosrc => 'array_upper' },
+  proargtypes => 'anyarray int4' },
 { oid => '2176', descr => 'array length',
   proname => 'array_length', prorettype => 'int4',
-  proargtypes => 'anyarray int4', prosrc => 'array_length' },
+  proargtypes => 'anyarray int4' },
 { oid => '3179', descr => 'array cardinality',
   proname => 'cardinality', prorettype => 'int4', proargtypes => 'anyarray',
   prosrc => 'array_cardinality' },
 { oid => '378', descr => 'append element onto end of array',
   proname => 'array_append', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyelement', prosrc => 'array_append' },
+  proargtypes => 'anyarray anyelement' },
 { oid => '379', descr => 'prepend element onto front of array',
   proname => 'array_prepend', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyelement anyarray', prosrc => 'array_prepend' },
+  proargtypes => 'anyelement anyarray' },
 { oid => '383',
   proname => 'array_cat', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_cat' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '394', descr => 'split delimited text into text[]',
   proname => 'string_to_array', proisstrict => 'f', prorettype => '_text',
   proargtypes => 'text text', prosrc => 'text_to_array' },
@@ -1567,13 +1387,13 @@
   prosrc => 'array_to_text_null' },
 { oid => '515', descr => 'larger of two',
   proname => 'array_larger', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_larger' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '516', descr => 'smaller of two',
   proname => 'array_smaller', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyarray', prosrc => 'array_smaller' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '3277', descr => 'returns an offset of value in array',
   proname => 'array_position', proisstrict => 'f', prorettype => 'int4',
-  proargtypes => 'anyarray anyelement', prosrc => 'array_position' },
+  proargtypes => 'anyarray anyelement' },
 { oid => '3278',
   descr => 'returns an offset of value in array with start index',
   proname => 'array_position', proisstrict => 'f', prorettype => 'int4',
@@ -1581,18 +1401,17 @@
 { oid => '3279',
   descr => 'returns an array of offsets of some value in array',
   proname => 'array_positions', proisstrict => 'f', prorettype => '_int4',
-  proargtypes => 'anyarray anyelement', prosrc => 'array_positions' },
+  proargtypes => 'anyarray anyelement' },
 { oid => '1191', descr => 'array subscripts generator',
   proname => 'generate_subscripts', prorows => '1000', proretset => 't',
-  prorettype => 'int4', proargtypes => 'anyarray int4 bool',
-  prosrc => 'generate_subscripts' },
+  prorettype => 'int4', proargtypes => 'anyarray int4 bool' },
 { oid => '1192', descr => 'array subscripts generator',
   proname => 'generate_subscripts', prorows => '1000', proretset => 't',
   prorettype => 'int4', proargtypes => 'anyarray int4',
   prosrc => 'generate_subscripts_nodir' },
 { oid => '1193', descr => 'array constructor with value',
   proname => 'array_fill', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyelement _int4', prosrc => 'array_fill' },
+  proargtypes => 'anyelement _int4' },
 { oid => '1286', descr => 'array constructor with value',
   proname => 'array_fill', proisstrict => 'f', prorettype => 'anyarray',
   proargtypes => 'anyelement _int4 _int4',
@@ -1604,28 +1423,26 @@
 { oid => '3167',
   descr => 'remove any occurrences of an element from an array',
   proname => 'array_remove', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyelement', prosrc => 'array_remove' },
+  proargtypes => 'anyarray anyelement' },
 { oid => '3168', descr => 'replace any occurrences of an element in an array',
   proname => 'array_replace', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'anyarray anyelement anyelement', prosrc => 'array_replace' },
+  proargtypes => 'anyarray anyelement anyelement' },
 { oid => '2333', descr => 'aggregate transition function',
   proname => 'array_agg_transfn', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal anynonarray', prosrc => 'array_agg_transfn' },
+  proargtypes => 'internal anynonarray' },
 { oid => '2334', descr => 'aggregate final function',
   proname => 'array_agg_finalfn', proisstrict => 'f', prorettype => 'anyarray',
-  proargtypes => 'internal anynonarray', prosrc => 'array_agg_finalfn' },
+  proargtypes => 'internal anynonarray' },
 { oid => '2335', descr => 'concatenate aggregate input into an array',
   proname => 'array_agg', prokind => 'a', proisstrict => 'f',
   prorettype => 'anyarray', proargtypes => 'anynonarray',
   prosrc => 'aggregate_dummy' },
 { oid => '4051', descr => 'aggregate transition function',
   proname => 'array_agg_array_transfn', proisstrict => 'f',
-  prorettype => 'internal', proargtypes => 'internal anyarray',
-  prosrc => 'array_agg_array_transfn' },
+  prorettype => 'internal', proargtypes => 'internal anyarray' },
 { oid => '4052', descr => 'aggregate final function',
   proname => 'array_agg_array_finalfn', proisstrict => 'f',
-  prorettype => 'anyarray', proargtypes => 'internal anyarray',
-  prosrc => 'array_agg_array_finalfn' },
+  prorettype => 'anyarray', proargtypes => 'internal anyarray' },
 { oid => '4053', descr => 'concatenate aggregate input into an array',
   proname => 'array_agg', prokind => 'a', proisstrict => 'f',
   prorettype => 'anyarray', proargtypes => 'anyarray',
@@ -1636,28 +1453,25 @@
   proargtypes => 'anyelement anyarray', prosrc => 'width_bucket_array' },
 { oid => '3816', descr => 'array typanalyze',
   proname => 'array_typanalyze', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'internal', prosrc => 'array_typanalyze' },
+  proargtypes => 'internal' },
 { oid => '3817',
   descr => 'restriction selectivity for array-containment operators',
   proname => 'arraycontsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'arraycontsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '3818', descr => 'join selectivity for array-containment operators',
   proname => 'arraycontjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'arraycontjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 { oid => '760', descr => 'I/O',
   proname => 'smgrin', provolatile => 's', prorettype => 'smgr',
-  proargtypes => 'cstring', prosrc => 'smgrin' },
+  proargtypes => 'cstring' },
 { oid => '761', descr => 'I/O',
   proname => 'smgrout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'smgr', prosrc => 'smgrout' },
+  proargtypes => 'smgr' },
 { oid => '762', descr => 'storage manager',
-  proname => 'smgreq', prorettype => 'bool', proargtypes => 'smgr smgr',
-  prosrc => 'smgreq' },
+  proname => 'smgreq', prorettype => 'bool', proargtypes => 'smgr smgr' },
 { oid => '763', descr => 'storage manager',
-  proname => 'smgrne', prorettype => 'bool', proargtypes => 'smgr smgr',
-  prosrc => 'smgrne' },
+  proname => 'smgrne', prorettype => 'bool', proargtypes => 'smgr smgr' },
 
 { oid => '764', descr => 'large object import',
   proname => 'lo_import', provolatile => 'v', proparallel => 'u',
@@ -1671,87 +1485,78 @@
   prorettype => 'int4', proargtypes => 'oid text', prosrc => 'be_lo_export' },
 
 { oid => '766', descr => 'increment',
-  proname => 'int4inc', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'int4inc' },
+  proname => 'int4inc', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '768', descr => 'larger of two',
-  proname => 'int4larger', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4larger' },
+  proname => 'int4larger', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '769', descr => 'smaller of two',
-  proname => 'int4smaller', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4smaller' },
+  proname => 'int4smaller', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '770', descr => 'larger of two',
-  proname => 'int2larger', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2larger' },
+  proname => 'int2larger', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '771', descr => 'smaller of two',
-  proname => 'int2smaller', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2smaller' },
+  proname => 'int2smaller', prorettype => 'int2', proargtypes => 'int2 int2' },
 
 { oid => '784',
   proname => 'tintervaleq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervaleq' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '785',
   proname => 'tintervalne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalne' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '786',
   proname => 'tintervallt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervallt' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '787',
   proname => 'tintervalgt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalgt' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '788',
   proname => 'tintervalle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalle' },
+  proargtypes => 'tinterval tinterval' },
 { oid => '789',
   proname => 'tintervalge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tinterval tinterval', prosrc => 'tintervalge' },
+  proargtypes => 'tinterval tinterval' },
 
 # OIDS 800 - 899
 
 { oid => '846',
   proname => 'cash_mul_flt4', prorettype => 'money',
-  proargtypes => 'money float4', prosrc => 'cash_mul_flt4' },
+  proargtypes => 'money float4' },
 { oid => '847',
   proname => 'cash_div_flt4', prorettype => 'money',
-  proargtypes => 'money float4', prosrc => 'cash_div_flt4' },
+  proargtypes => 'money float4' },
 { oid => '848',
   proname => 'flt4_mul_cash', prorettype => 'money',
-  proargtypes => 'float4 money', prosrc => 'flt4_mul_cash' },
+  proargtypes => 'float4 money' },
 
 { oid => '849', descr => 'position of substring',
   proname => 'position', prorettype => 'int4', proargtypes => 'text text',
   prosrc => 'textpos' },
 { oid => '850',
-  proname => 'textlike', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'textlike' },
+  proname => 'textlike', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '851',
-  proname => 'textnlike', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'textnlike' },
+  proname => 'textnlike', prorettype => 'bool', proargtypes => 'text text' },
 
 { oid => '852',
   proname => 'int48eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48eq' },
+  proargtypes => 'int4 int8' },
 { oid => '853',
   proname => 'int48ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48ne' },
+  proargtypes => 'int4 int8' },
 { oid => '854',
   proname => 'int48lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48lt' },
+  proargtypes => 'int4 int8' },
 { oid => '855',
   proname => 'int48gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48gt' },
+  proargtypes => 'int4 int8' },
 { oid => '856',
   proname => 'int48le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48le' },
+  proargtypes => 'int4 int8' },
 { oid => '857',
   proname => 'int48ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int4 int8', prosrc => 'int48ge' },
+  proargtypes => 'int4 int8' },
 
 { oid => '858',
-  proname => 'namelike', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'namelike' },
+  proname => 'namelike', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '859',
-  proname => 'namenlike', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'namenlike' },
+  proname => 'namenlike', prorettype => 'bool', proargtypes => 'name text' },
 
 { oid => '860', descr => 'convert char to char(n)',
   proname => 'bpchar', prorettype => 'bpchar', proargtypes => 'char',
@@ -1759,91 +1564,85 @@
 
 { oid => '861', descr => 'name of the current database',
   proname => 'current_database', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'current_database' },
+  proargtypes => '' },
 { oid => '817', descr => 'get the currently executing query',
   proname => 'current_query', proisstrict => 'f', provolatile => 'v',
-  proparallel => 'r', prorettype => 'text', proargtypes => '',
-  prosrc => 'current_query' },
+  proparallel => 'r', prorettype => 'text', proargtypes => '' },
 
 { oid => '3399',
   proname => 'int8_mul_cash', prorettype => 'money',
-  proargtypes => 'int8 money', prosrc => 'int8_mul_cash' },
+  proargtypes => 'int8 money' },
 { oid => '862',
   proname => 'int4_mul_cash', prorettype => 'money',
-  proargtypes => 'int4 money', prosrc => 'int4_mul_cash' },
+  proargtypes => 'int4 money' },
 { oid => '863',
   proname => 'int2_mul_cash', prorettype => 'money',
-  proargtypes => 'int2 money', prosrc => 'int2_mul_cash' },
+  proargtypes => 'int2 money' },
 { oid => '3344',
   proname => 'cash_mul_int8', prorettype => 'money',
-  proargtypes => 'money int8', prosrc => 'cash_mul_int8' },
+  proargtypes => 'money int8' },
 { oid => '3345',
   proname => 'cash_div_int8', prorettype => 'money',
-  proargtypes => 'money int8', prosrc => 'cash_div_int8' },
+  proargtypes => 'money int8' },
 { oid => '864',
   proname => 'cash_mul_int4', prorettype => 'money',
-  proargtypes => 'money int4', prosrc => 'cash_mul_int4' },
+  proargtypes => 'money int4' },
 { oid => '865',
   proname => 'cash_div_int4', prorettype => 'money',
-  proargtypes => 'money int4', prosrc => 'cash_div_int4' },
+  proargtypes => 'money int4' },
 { oid => '866',
   proname => 'cash_mul_int2', prorettype => 'money',
-  proargtypes => 'money int2', prosrc => 'cash_mul_int2' },
+  proargtypes => 'money int2' },
 { oid => '867',
   proname => 'cash_div_int2', prorettype => 'money',
-  proargtypes => 'money int2', prosrc => 'cash_div_int2' },
+  proargtypes => 'money int2' },
 
 { oid => '886', descr => 'I/O',
   proname => 'cash_in', provolatile => 's', prorettype => 'money',
-  proargtypes => 'cstring', prosrc => 'cash_in' },
+  proargtypes => 'cstring' },
 { oid => '887', descr => 'I/O',
   proname => 'cash_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'money', prosrc => 'cash_out' },
+  proargtypes => 'money' },
 { oid => '888',
   proname => 'cash_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_eq' },
+  proargtypes => 'money money' },
 { oid => '889',
   proname => 'cash_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_ne' },
+  proargtypes => 'money money' },
 { oid => '890',
   proname => 'cash_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_lt' },
+  proargtypes => 'money money' },
 { oid => '891',
   proname => 'cash_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_le' },
+  proargtypes => 'money money' },
 { oid => '892',
   proname => 'cash_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_gt' },
+  proargtypes => 'money money' },
 { oid => '893',
   proname => 'cash_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'money money', prosrc => 'cash_ge' },
+  proargtypes => 'money money' },
 { oid => '894',
-  proname => 'cash_pl', prorettype => 'money', proargtypes => 'money money',
-  prosrc => 'cash_pl' },
+  proname => 'cash_pl', prorettype => 'money', proargtypes => 'money money' },
 { oid => '895',
-  proname => 'cash_mi', prorettype => 'money', proargtypes => 'money money',
-  prosrc => 'cash_mi' },
+  proname => 'cash_mi', prorettype => 'money', proargtypes => 'money money' },
 { oid => '896',
   proname => 'cash_mul_flt8', prorettype => 'money',
-  proargtypes => 'money float8', prosrc => 'cash_mul_flt8' },
+  proargtypes => 'money float8' },
 { oid => '897',
   proname => 'cash_div_flt8', prorettype => 'money',
-  proargtypes => 'money float8', prosrc => 'cash_div_flt8' },
+  proargtypes => 'money float8' },
 { oid => '898', descr => 'larger of two',
-  proname => 'cashlarger', prorettype => 'money', proargtypes => 'money money',
-  prosrc => 'cashlarger' },
+  proname => 'cashlarger', prorettype => 'money', proargtypes => 'money money' },
 { oid => '899', descr => 'smaller of two',
-  proname => 'cashsmaller', prorettype => 'money', proargtypes => 'money money',
-  prosrc => 'cashsmaller' },
+  proname => 'cashsmaller', prorettype => 'money', proargtypes => 'money money' },
 { oid => '919',
   proname => 'flt8_mul_cash', prorettype => 'money',
-  proargtypes => 'float8 money', prosrc => 'flt8_mul_cash' },
+  proargtypes => 'float8 money' },
 { oid => '935', descr => 'output money amount as words',
-  proname => 'cash_words', prorettype => 'text', proargtypes => 'money',
-  prosrc => 'cash_words' },
+  proname => 'cash_words', prorettype => 'text', proargtypes => 'money' },
 { oid => '3822',
   proname => 'cash_div_cash', prorettype => 'float8',
-  proargtypes => 'money money', prosrc => 'cash_div_cash' },
+  proargtypes => 'money money' },
 { oid => '3823', descr => 'convert money to numeric',
   proname => 'numeric', provolatile => 's', prorettype => 'numeric',
   proargtypes => 'money', prosrc => 'cash_numeric' },
@@ -1867,8 +1666,7 @@
   prosrc => 'int4mod' },
 
 { oid => '945',
-  proname => 'int8mod', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8mod' },
+  proname => 'int8mod', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '947', descr => 'modulus',
   proname => 'mod', prorettype => 'int8', proargtypes => 'int8 int8',
   prosrc => 'int8mod' },
@@ -1938,28 +1736,22 @@
   prosrc => 'be_lo_put' },
 
 { oid => '959',
-  proname => 'on_pl', prorettype => 'bool', proargtypes => 'point line',
-  prosrc => 'on_pl' },
+  proname => 'on_pl', prorettype => 'bool', proargtypes => 'point line' },
 { oid => '960',
-  proname => 'on_sl', prorettype => 'bool', proargtypes => 'lseg line',
-  prosrc => 'on_sl' },
+  proname => 'on_sl', prorettype => 'bool', proargtypes => 'lseg line' },
 { oid => '961',
-  proname => 'close_pl', prorettype => 'point', proargtypes => 'point line',
-  prosrc => 'close_pl' },
+  proname => 'close_pl', prorettype => 'point', proargtypes => 'point line' },
 { oid => '962',
-  proname => 'close_sl', prorettype => 'point', proargtypes => 'lseg line',
-  prosrc => 'close_sl' },
+  proname => 'close_sl', prorettype => 'point', proargtypes => 'lseg line' },
 { oid => '963',
-  proname => 'close_lb', prorettype => 'point', proargtypes => 'line box',
-  prosrc => 'close_lb' },
+  proname => 'close_lb', prorettype => 'point', proargtypes => 'line box' },
 
 { oid => '964', descr => 'large object unlink (delete)',
   proname => 'lo_unlink', provolatile => 'v', proparallel => 'u',
   prorettype => 'int4', proargtypes => 'oid', prosrc => 'be_lo_unlink' },
 
 { oid => '973',
-  proname => 'path_inter', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_inter' },
+  proname => 'path_inter', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '975', descr => 'box area',
   proname => 'area', prorettype => 'float8', proargtypes => 'box',
   prosrc => 'box_area' },
@@ -1970,14 +1762,12 @@
   proname => 'height', prorettype => 'float8', proargtypes => 'box',
   prosrc => 'box_height' },
 { oid => '978',
-  proname => 'box_distance', prorettype => 'float8', proargtypes => 'box box',
-  prosrc => 'box_distance' },
+  proname => 'box_distance', prorettype => 'float8', proargtypes => 'box box' },
 { oid => '979', descr => 'area of a closed path',
   proname => 'area', prorettype => 'float8', proargtypes => 'path',
   prosrc => 'path_area' },
 { oid => '980',
-  proname => 'box_intersect', prorettype => 'box', proargtypes => 'box box',
-  prosrc => 'box_intersect' },
+  proname => 'box_intersect', prorettype => 'box', proargtypes => 'box box' },
 { oid => '4067', descr => 'bounding box of two boxes',
   proname => 'bound_box', prorettype => 'box', proargtypes => 'box box',
   prosrc => 'boxes_bound_box' },
@@ -1985,35 +1775,26 @@
   proname => 'diagonal', prorettype => 'lseg', proargtypes => 'box',
   prosrc => 'box_diagonal' },
 { oid => '982',
-  proname => 'path_n_lt', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_n_lt' },
+  proname => 'path_n_lt', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '983',
-  proname => 'path_n_gt', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_n_gt' },
+  proname => 'path_n_gt', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '984',
-  proname => 'path_n_eq', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_n_eq' },
+  proname => 'path_n_eq', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '985',
-  proname => 'path_n_le', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_n_le' },
+  proname => 'path_n_le', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '986',
-  proname => 'path_n_ge', prorettype => 'bool', proargtypes => 'path path',
-  prosrc => 'path_n_ge' },
+  proname => 'path_n_ge', prorettype => 'bool', proargtypes => 'path path' },
 { oid => '987',
-  proname => 'path_length', prorettype => 'float8', proargtypes => 'path',
-  prosrc => 'path_length' },
+  proname => 'path_length', prorettype => 'float8', proargtypes => 'path' },
 { oid => '988',
-  proname => 'point_ne', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_ne' },
+  proname => 'point_ne', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '989',
-  proname => 'point_vert', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_vert' },
+  proname => 'point_vert', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '990',
-  proname => 'point_horiz', prorettype => 'bool', proargtypes => 'point point',
-  prosrc => 'point_horiz' },
+  proname => 'point_horiz', prorettype => 'bool', proargtypes => 'point point' },
 { oid => '991',
   proname => 'point_distance', prorettype => 'float8',
-  proargtypes => 'point point', prosrc => 'point_distance' },
+  proargtypes => 'point point' },
 { oid => '992', descr => 'slope between points',
   proname => 'slope', prorettype => 'float8', proargtypes => 'point point',
   prosrc => 'point_slope' },
@@ -2021,29 +1802,24 @@
   proname => 'lseg', prorettype => 'lseg', proargtypes => 'point point',
   prosrc => 'lseg_construct' },
 { oid => '994',
-  proname => 'lseg_intersect', prorettype => 'bool', proargtypes => 'lseg lseg',
-  prosrc => 'lseg_intersect' },
+  proname => 'lseg_intersect', prorettype => 'bool', proargtypes => 'lseg lseg' },
 { oid => '995',
-  proname => 'lseg_parallel', prorettype => 'bool', proargtypes => 'lseg lseg',
-  prosrc => 'lseg_parallel' },
+  proname => 'lseg_parallel', prorettype => 'bool', proargtypes => 'lseg lseg' },
 { oid => '996',
-  proname => 'lseg_perp', prorettype => 'bool', proargtypes => 'lseg lseg',
-  prosrc => 'lseg_perp' },
+  proname => 'lseg_perp', prorettype => 'bool', proargtypes => 'lseg lseg' },
 { oid => '997',
-  proname => 'lseg_vertical', prorettype => 'bool', proargtypes => 'lseg',
-  prosrc => 'lseg_vertical' },
+  proname => 'lseg_vertical', prorettype => 'bool', proargtypes => 'lseg' },
 { oid => '998',
-  proname => 'lseg_horizontal', prorettype => 'bool', proargtypes => 'lseg',
-  prosrc => 'lseg_horizontal' },
+  proname => 'lseg_horizontal', prorettype => 'bool', proargtypes => 'lseg' },
 { oid => '999',
   proname => 'lseg_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_eq' },
+  proargtypes => 'lseg lseg' },
 
 # OIDS 1000 - 1999
 
 { oid => '3994', descr => 'transform a time zone adjustment',
   proname => 'timestamp_izone_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'timestamp_izone_transform' },
+  proargtypes => 'internal' },
 { oid => '1026', descr => 'adjust timestamp to new time zone',
   proname => 'timezone', protransform => 'timestamp_izone_transform',
   prorettype => 'timestamp', proargtypes => 'interval timestamptz',
@@ -2051,25 +1827,25 @@
 
 { oid => '1031', descr => 'I/O',
   proname => 'aclitemin', provolatile => 's', prorettype => 'aclitem',
-  proargtypes => 'cstring', prosrc => 'aclitemin' },
+  proargtypes => 'cstring' },
 { oid => '1032', descr => 'I/O',
   proname => 'aclitemout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'aclitem', prosrc => 'aclitemout' },
+  proargtypes => 'aclitem' },
 { oid => '1035', descr => 'add/update ACL item',
   proname => 'aclinsert', prorettype => '_aclitem',
-  proargtypes => '_aclitem aclitem', prosrc => 'aclinsert' },
+  proargtypes => '_aclitem aclitem' },
 { oid => '1036', descr => 'remove ACL item',
   proname => 'aclremove', prorettype => '_aclitem',
-  proargtypes => '_aclitem aclitem', prosrc => 'aclremove' },
+  proargtypes => '_aclitem aclitem' },
 { oid => '1037', descr => 'contains',
   proname => 'aclcontains', prorettype => 'bool',
-  proargtypes => '_aclitem aclitem', prosrc => 'aclcontains' },
+  proargtypes => '_aclitem aclitem' },
 { oid => '1062',
   proname => 'aclitemeq', prorettype => 'bool',
   proargtypes => 'aclitem aclitem', prosrc => 'aclitem_eq' },
 { oid => '1365', descr => 'make ACL item',
   proname => 'makeaclitem', prorettype => 'aclitem',
-  proargtypes => 'oid oid text bool', prosrc => 'makeaclitem' },
+  proargtypes => 'oid oid text bool' },
 { oid => '3943', descr => 'TODO',
   proname => 'acldefault', prorettype => '_aclitem', proargtypes => 'char oid',
   prosrc => 'acldefault_sql' },
@@ -2079,101 +1855,87 @@
   provolatile => 's', prorettype => 'record', proargtypes => '_aclitem',
   proallargtypes => '{_aclitem,oid,oid,text,bool}',
   proargmodes => '{i,o,o,o,o}',
-  proargnames => '{acl,grantor,grantee,privilege_type,is_grantable}',
-  prosrc => 'aclexplode' },
+  proargnames => '{acl,grantor,grantee,privilege_type,is_grantable}' },
 { oid => '1044', descr => 'I/O',
   proname => 'bpcharin', prorettype => 'bpchar',
-  proargtypes => 'cstring oid int4', prosrc => 'bpcharin' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1045', descr => 'I/O',
-  proname => 'bpcharout', prorettype => 'cstring', proargtypes => 'bpchar',
-  prosrc => 'bpcharout' },
+  proname => 'bpcharout', prorettype => 'cstring', proargtypes => 'bpchar' },
 { oid => '2913', descr => 'I/O typmod',
-  proname => 'bpchartypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'bpchartypmodin' },
+  proname => 'bpchartypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2914', descr => 'I/O typmod',
-  proname => 'bpchartypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'bpchartypmodout' },
+  proname => 'bpchartypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '1046', descr => 'I/O',
   proname => 'varcharin', prorettype => 'varchar',
-  proargtypes => 'cstring oid int4', prosrc => 'varcharin' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1047', descr => 'I/O',
-  proname => 'varcharout', prorettype => 'cstring', proargtypes => 'varchar',
-  prosrc => 'varcharout' },
+  proname => 'varcharout', prorettype => 'cstring', proargtypes => 'varchar' },
 { oid => '2915', descr => 'I/O typmod',
-  proname => 'varchartypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'varchartypmodin' },
+  proname => 'varchartypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2916', descr => 'I/O typmod',
-  proname => 'varchartypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'varchartypmodout' },
+  proname => 'varchartypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '1048',
   proname => 'bpchareq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchareq' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '1049',
-  proname => 'bpcharlt', prorettype => 'bool', proargtypes => 'bpchar bpchar',
-  prosrc => 'bpcharlt' },
+  proname => 'bpcharlt', prorettype => 'bool', proargtypes => 'bpchar bpchar' },
 { oid => '1050',
-  proname => 'bpcharle', prorettype => 'bool', proargtypes => 'bpchar bpchar',
-  prosrc => 'bpcharle' },
+  proname => 'bpcharle', prorettype => 'bool', proargtypes => 'bpchar bpchar' },
 { oid => '1051',
-  proname => 'bpchargt', prorettype => 'bool', proargtypes => 'bpchar bpchar',
-  prosrc => 'bpchargt' },
+  proname => 'bpchargt', prorettype => 'bool', proargtypes => 'bpchar bpchar' },
 { oid => '1052',
-  proname => 'bpcharge', prorettype => 'bool', proargtypes => 'bpchar bpchar',
-  prosrc => 'bpcharge' },
+  proname => 'bpcharge', prorettype => 'bool', proargtypes => 'bpchar bpchar' },
 { oid => '1053',
   proname => 'bpcharne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpcharne' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '1063', descr => 'larger of two',
   proname => 'bpchar_larger', prorettype => 'bpchar',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_larger' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '1064', descr => 'smaller of two',
   proname => 'bpchar_smaller', prorettype => 'bpchar',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_smaller' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '1078', descr => 'less-equal-greater',
-  proname => 'bpcharcmp', prorettype => 'int4', proargtypes => 'bpchar bpchar',
-  prosrc => 'bpcharcmp' },
+  proname => 'bpcharcmp', prorettype => 'int4', proargtypes => 'bpchar bpchar' },
 { oid => '3328', descr => 'sort support',
   proname => 'bpchar_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'bpchar_sortsupport' },
+  proargtypes => 'internal' },
 { oid => '1080', descr => 'hash',
-  proname => 'hashbpchar', prorettype => 'int4', proargtypes => 'bpchar',
-  prosrc => 'hashbpchar' },
+  proname => 'hashbpchar', prorettype => 'int4', proargtypes => 'bpchar' },
 { oid => '972', descr => 'hash',
   proname => 'hashbpcharextended', prorettype => 'int8',
-  proargtypes => 'bpchar int8', prosrc => 'hashbpcharextended' },
+  proargtypes => 'bpchar int8' },
 { oid => '1081', descr => 'format a type oid and atttypmod to canonical SQL',
   proname => 'format_type', proisstrict => 'f', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid int4', prosrc => 'format_type' },
+  prorettype => 'text', proargtypes => 'oid int4' },
 { oid => '1084', descr => 'I/O',
   proname => 'date_in', provolatile => 's', prorettype => 'date',
-  proargtypes => 'cstring', prosrc => 'date_in' },
+  proargtypes => 'cstring' },
 { oid => '1085', descr => 'I/O',
   proname => 'date_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'date', prosrc => 'date_out' },
+  proargtypes => 'date' },
 { oid => '1086',
   proname => 'date_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_eq' },
+  proargtypes => 'date date' },
 { oid => '1087',
   proname => 'date_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_lt' },
+  proargtypes => 'date date' },
 { oid => '1088',
   proname => 'date_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_le' },
+  proargtypes => 'date date' },
 { oid => '1089',
   proname => 'date_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_gt' },
+  proargtypes => 'date date' },
 { oid => '1090',
   proname => 'date_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_ge' },
+  proargtypes => 'date date' },
 { oid => '1091',
   proname => 'date_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'date date', prosrc => 'date_ne' },
+  proargtypes => 'date date' },
 { oid => '1092', descr => 'less-equal-greater',
-  proname => 'date_cmp', prorettype => 'int4', proargtypes => 'date date',
-  prosrc => 'date_cmp' },
+  proname => 'date_cmp', prorettype => 'int4', proargtypes => 'date date' },
 { oid => '3136', descr => 'sort support',
   proname => 'date_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'date_sortsupport' },
+  proargtypes => 'internal' },
 { oid => '4133', descr => 'window RANGE support',
   proname => 'in_range', prorettype => 'bool',
   proargtypes => 'date date interval bool bool',
@@ -2183,78 +1945,69 @@
 
 { oid => '1102',
   proname => 'time_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_lt' },
+  proargtypes => 'time time' },
 { oid => '1103',
   proname => 'time_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_le' },
+  proargtypes => 'time time' },
 { oid => '1104',
   proname => 'time_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_gt' },
+  proargtypes => 'time time' },
 { oid => '1105',
   proname => 'time_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_ge' },
+  proargtypes => 'time time' },
 { oid => '1106',
   proname => 'time_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_ne' },
+  proargtypes => 'time time' },
 { oid => '1107', descr => 'less-equal-greater',
-  proname => 'time_cmp', prorettype => 'int4', proargtypes => 'time time',
-  prosrc => 'time_cmp' },
+  proname => 'time_cmp', prorettype => 'int4', proargtypes => 'time time' },
 { oid => '1138', descr => 'larger of two',
-  proname => 'date_larger', prorettype => 'date', proargtypes => 'date date',
-  prosrc => 'date_larger' },
+  proname => 'date_larger', prorettype => 'date', proargtypes => 'date date' },
 { oid => '1139', descr => 'smaller of two',
-  proname => 'date_smaller', prorettype => 'date', proargtypes => 'date date',
-  prosrc => 'date_smaller' },
+  proname => 'date_smaller', prorettype => 'date', proargtypes => 'date date' },
 { oid => '1140',
-  proname => 'date_mi', prorettype => 'int4', proargtypes => 'date date',
-  prosrc => 'date_mi' },
+  proname => 'date_mi', prorettype => 'int4', proargtypes => 'date date' },
 { oid => '1141',
-  proname => 'date_pli', prorettype => 'date', proargtypes => 'date int4',
-  prosrc => 'date_pli' },
+  proname => 'date_pli', prorettype => 'date', proargtypes => 'date int4' },
 { oid => '1142',
-  proname => 'date_mii', prorettype => 'date', proargtypes => 'date int4',
-  prosrc => 'date_mii' },
+  proname => 'date_mii', prorettype => 'date', proargtypes => 'date int4' },
 { oid => '1143', descr => 'I/O',
   proname => 'time_in', provolatile => 's', prorettype => 'time',
-  proargtypes => 'cstring oid int4', prosrc => 'time_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1144', descr => 'I/O',
-  proname => 'time_out', prorettype => 'cstring', proargtypes => 'time',
-  prosrc => 'time_out' },
+  proname => 'time_out', prorettype => 'cstring', proargtypes => 'time' },
 { oid => '2909', descr => 'I/O typmod',
-  proname => 'timetypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'timetypmodin' },
+  proname => 'timetypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2910', descr => 'I/O typmod',
-  proname => 'timetypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'timetypmodout' },
+  proname => 'timetypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '1145',
   proname => 'time_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'time time', prosrc => 'time_eq' },
+  proargtypes => 'time time' },
 
 { oid => '1146',
   proname => 'circle_add_pt', prorettype => 'circle',
-  proargtypes => 'circle point', prosrc => 'circle_add_pt' },
+  proargtypes => 'circle point' },
 { oid => '1147',
   proname => 'circle_sub_pt', prorettype => 'circle',
-  proargtypes => 'circle point', prosrc => 'circle_sub_pt' },
+  proargtypes => 'circle point' },
 { oid => '1148',
   proname => 'circle_mul_pt', prorettype => 'circle',
-  proargtypes => 'circle point', prosrc => 'circle_mul_pt' },
+  proargtypes => 'circle point' },
 { oid => '1149',
   proname => 'circle_div_pt', prorettype => 'circle',
-  proargtypes => 'circle point', prosrc => 'circle_div_pt' },
+  proargtypes => 'circle point' },
 
 { oid => '1150', descr => 'I/O',
   proname => 'timestamptz_in', provolatile => 's', prorettype => 'timestamptz',
-  proargtypes => 'cstring oid int4', prosrc => 'timestamptz_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1151', descr => 'I/O',
   proname => 'timestamptz_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'timestamptz', prosrc => 'timestamptz_out' },
+  proargtypes => 'timestamptz' },
 { oid => '2907', descr => 'I/O typmod',
   proname => 'timestamptztypmodin', prorettype => 'int4',
-  proargtypes => '_cstring', prosrc => 'timestamptztypmodin' },
+  proargtypes => '_cstring' },
 { oid => '2908', descr => 'I/O typmod',
   proname => 'timestamptztypmodout', prorettype => 'cstring',
-  proargtypes => 'int4', prosrc => 'timestamptztypmodout' },
+  proargtypes => 'int4' },
 { oid => '1152',
   proname => 'timestamptz_eq', proleakproof => 't', prorettype => 'bool',
   proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_eq' },
@@ -2278,7 +2031,7 @@
   proargtypes => 'float8', prosrc => 'float8_timestamptz' },
 { oid => '3995', descr => 'transform a time zone adjustment',
   proname => 'timestamp_zone_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'timestamp_zone_transform' },
+  proargtypes => 'internal' },
 { oid => '1159', descr => 'adjust timestamp to new time zone',
   proname => 'timezone', protransform => 'timestamp_zone_transform',
   prorettype => 'timestamp', proargtypes => 'text timestamptz',
@@ -2286,43 +2039,41 @@
 
 { oid => '1160', descr => 'I/O',
   proname => 'interval_in', provolatile => 's', prorettype => 'interval',
-  proargtypes => 'cstring oid int4', prosrc => 'interval_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1161', descr => 'I/O',
-  proname => 'interval_out', prorettype => 'cstring', proargtypes => 'interval',
-  prosrc => 'interval_out' },
+  proname => 'interval_out', prorettype => 'cstring', proargtypes => 'interval' },
 { oid => '2903', descr => 'I/O typmod',
   proname => 'intervaltypmodin', prorettype => 'int4',
-  proargtypes => '_cstring', prosrc => 'intervaltypmodin' },
+  proargtypes => '_cstring' },
 { oid => '2904', descr => 'I/O typmod',
   proname => 'intervaltypmodout', prorettype => 'cstring',
-  proargtypes => 'int4', prosrc => 'intervaltypmodout' },
+  proargtypes => 'int4' },
 { oid => '1162',
   proname => 'interval_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_eq' },
+  proargtypes => 'interval interval' },
 { oid => '1163',
   proname => 'interval_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_ne' },
+  proargtypes => 'interval interval' },
 { oid => '1164',
   proname => 'interval_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_lt' },
+  proargtypes => 'interval interval' },
 { oid => '1165',
   proname => 'interval_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_le' },
+  proargtypes => 'interval interval' },
 { oid => '1166',
   proname => 'interval_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_ge' },
+  proargtypes => 'interval interval' },
 { oid => '1167',
   proname => 'interval_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'interval interval', prosrc => 'interval_gt' },
+  proargtypes => 'interval interval' },
 { oid => '1168',
-  proname => 'interval_um', prorettype => 'interval', proargtypes => 'interval',
-  prosrc => 'interval_um' },
+  proname => 'interval_um', prorettype => 'interval', proargtypes => 'interval' },
 { oid => '1169',
   proname => 'interval_pl', prorettype => 'interval',
-  proargtypes => 'interval interval', prosrc => 'interval_pl' },
+  proargtypes => 'interval interval' },
 { oid => '1170',
   proname => 'interval_mi', prorettype => 'interval',
-  proargtypes => 'interval interval', prosrc => 'interval_mi' },
+  proargtypes => 'interval interval' },
 { oid => '1171', descr => 'extract field from timestamp with time zone',
   proname => 'date_part', provolatile => 's', prorettype => 'float8',
   proargtypes => 'text timestamptz', prosrc => 'timestamptz_part' },
@@ -2368,19 +2119,17 @@
 { oid => '3939',
   descr => 'age of a multi-transaction ID, in multi-transactions before current multi-transaction',
   proname => 'mxid_age', provolatile => 's', prorettype => 'int4',
-  proargtypes => 'xid', prosrc => 'mxid_age' },
+  proargtypes => 'xid' },
 
 { oid => '1188',
   proname => 'timestamptz_mi', prorettype => 'interval',
   proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_mi' },
 { oid => '1189',
   proname => 'timestamptz_pl_interval', provolatile => 's',
-  prorettype => 'timestamptz', proargtypes => 'timestamptz interval',
-  prosrc => 'timestamptz_pl_interval' },
+  prorettype => 'timestamptz', proargtypes => 'timestamptz interval' },
 { oid => '1190',
   proname => 'timestamptz_mi_interval', provolatile => 's',
-  prorettype => 'timestamptz', proargtypes => 'timestamptz interval',
-  prosrc => 'timestamptz_mi_interval' },
+  prorettype => 'timestamptz', proargtypes => 'timestamptz interval' },
 { oid => '1194', descr => 'convert interval to reltime',
   proname => 'reltime', prorettype => 'reltime', proargtypes => 'interval',
   prosrc => 'interval_reltime' },
@@ -2392,10 +2141,10 @@
   proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_larger' },
 { oid => '1197', descr => 'smaller of two',
   proname => 'interval_smaller', prorettype => 'interval',
-  proargtypes => 'interval interval', prosrc => 'interval_smaller' },
+  proargtypes => 'interval interval' },
 { oid => '1198', descr => 'larger of two',
   proname => 'interval_larger', prorettype => 'interval',
-  proargtypes => 'interval interval', prosrc => 'interval_larger' },
+  proargtypes => 'interval interval' },
 { oid => '1199', descr => 'date difference preserving months and years',
   proname => 'age', prorettype => 'interval',
   proargtypes => 'timestamptz timestamptz', prosrc => 'timestamptz_age' },
@@ -2404,7 +2153,7 @@
 
 { oid => '3918', descr => 'transform an interval length coercion',
   proname => 'interval_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'interval_transform' },
+  proargtypes => 'internal' },
 { oid => '1200', descr => 'adjust interval precision',
   proname => 'interval', protransform => 'interval_transform',
   prorettype => 'interval', proargtypes => 'interval int4',
@@ -2433,47 +2182,34 @@
   proargtypes => 'text interval', prosrc => 'interval_trunc' },
 
 { oid => '1219', descr => 'increment',
-  proname => 'int8inc', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8inc' },
+  proname => 'int8inc', prorettype => 'int8', proargtypes => 'int8' },
 { oid => '3546', descr => 'decrement',
-  proname => 'int8dec', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8dec' },
+  proname => 'int8dec', prorettype => 'int8', proargtypes => 'int8' },
 { oid => '2804', descr => 'increment, ignores second argument',
-  proname => 'int8inc_any', prorettype => 'int8', proargtypes => 'int8 any',
-  prosrc => 'int8inc_any' },
+  proname => 'int8inc_any', prorettype => 'int8', proargtypes => 'int8 any' },
 { oid => '3547', descr => 'decrement, ignores second argument',
-  proname => 'int8dec_any', prorettype => 'int8', proargtypes => 'int8 any',
-  prosrc => 'int8dec_any' },
+  proname => 'int8dec_any', prorettype => 'int8', proargtypes => 'int8 any' },
 { oid => '1230',
-  proname => 'int8abs', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8abs' },
+  proname => 'int8abs', prorettype => 'int8', proargtypes => 'int8' },
 
 { oid => '1236', descr => 'larger of two',
-  proname => 'int8larger', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8larger' },
+  proname => 'int8larger', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '1237', descr => 'smaller of two',
-  proname => 'int8smaller', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8smaller' },
+  proname => 'int8smaller', prorettype => 'int8', proargtypes => 'int8 int8' },
 
 { oid => '1238',
-  proname => 'texticregexeq', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'texticregexeq' },
+  proname => 'texticregexeq', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1239',
-  proname => 'texticregexne', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'texticregexne' },
+  proname => 'texticregexne', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1240',
-  proname => 'nameicregexeq', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameicregexeq' },
+  proname => 'nameicregexeq', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '1241',
-  proname => 'nameicregexne', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameicregexne' },
+  proname => 'nameicregexne', prorettype => 'bool', proargtypes => 'name text' },
 
 { oid => '1251',
-  proname => 'int4abs', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'int4abs' },
+  proname => 'int4abs', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '1253',
-  proname => 'int2abs', prorettype => 'int2', proargtypes => 'int2',
-  prosrc => 'int2abs' },
+  proname => 'int2abs', prorettype => 'int2', proargtypes => 'int2' },
 
 { oid => '1271', descr => 'intervals overlap?',
   proname => 'overlaps', proisstrict => 'f', prorettype => 'bool',
@@ -2485,54 +2221,38 @@
   proname => 'date_part', prorettype => 'float8', proargtypes => 'text timetz',
   prosrc => 'timetz_part' },
 { oid => '1274',
-  proname => 'int84pl', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int84pl' },
+  proname => 'int84pl', prorettype => 'int8', proargtypes => 'int8 int4' },
 { oid => '1275',
-  proname => 'int84mi', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int84mi' },
+  proname => 'int84mi', prorettype => 'int8', proargtypes => 'int8 int4' },
 { oid => '1276',
-  proname => 'int84mul', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int84mul' },
+  proname => 'int84mul', prorettype => 'int8', proargtypes => 'int8 int4' },
 { oid => '1277',
-  proname => 'int84div', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int84div' },
+  proname => 'int84div', prorettype => 'int8', proargtypes => 'int8 int4' },
 { oid => '1278',
-  proname => 'int48pl', prorettype => 'int8', proargtypes => 'int4 int8',
-  prosrc => 'int48pl' },
+  proname => 'int48pl', prorettype => 'int8', proargtypes => 'int4 int8' },
 { oid => '1279',
-  proname => 'int48mi', prorettype => 'int8', proargtypes => 'int4 int8',
-  prosrc => 'int48mi' },
+  proname => 'int48mi', prorettype => 'int8', proargtypes => 'int4 int8' },
 { oid => '1280',
-  proname => 'int48mul', prorettype => 'int8', proargtypes => 'int4 int8',
-  prosrc => 'int48mul' },
+  proname => 'int48mul', prorettype => 'int8', proargtypes => 'int4 int8' },
 { oid => '1281',
-  proname => 'int48div', prorettype => 'int8', proargtypes => 'int4 int8',
-  prosrc => 'int48div' },
+  proname => 'int48div', prorettype => 'int8', proargtypes => 'int4 int8' },
 
 { oid => '837',
-  proname => 'int82pl', prorettype => 'int8', proargtypes => 'int8 int2',
-  prosrc => 'int82pl' },
+  proname => 'int82pl', prorettype => 'int8', proargtypes => 'int8 int2' },
 { oid => '838',
-  proname => 'int82mi', prorettype => 'int8', proargtypes => 'int8 int2',
-  prosrc => 'int82mi' },
+  proname => 'int82mi', prorettype => 'int8', proargtypes => 'int8 int2' },
 { oid => '839',
-  proname => 'int82mul', prorettype => 'int8', proargtypes => 'int8 int2',
-  prosrc => 'int82mul' },
+  proname => 'int82mul', prorettype => 'int8', proargtypes => 'int8 int2' },
 { oid => '840',
-  proname => 'int82div', prorettype => 'int8', proargtypes => 'int8 int2',
-  prosrc => 'int82div' },
+  proname => 'int82div', prorettype => 'int8', proargtypes => 'int8 int2' },
 { oid => '841',
-  proname => 'int28pl', prorettype => 'int8', proargtypes => 'int2 int8',
-  prosrc => 'int28pl' },
+  proname => 'int28pl', prorettype => 'int8', proargtypes => 'int2 int8' },
 { oid => '942',
-  proname => 'int28mi', prorettype => 'int8', proargtypes => 'int2 int8',
-  prosrc => 'int28mi' },
+  proname => 'int28mi', prorettype => 'int8', proargtypes => 'int2 int8' },
 { oid => '943',
-  proname => 'int28mul', prorettype => 'int8', proargtypes => 'int2 int8',
-  prosrc => 'int28mul' },
+  proname => 'int28mul', prorettype => 'int8', proargtypes => 'int2 int8' },
 { oid => '948',
-  proname => 'int28div', prorettype => 'int8', proargtypes => 'int2 int8',
-  prosrc => 'int28div' },
+  proname => 'int28div', prorettype => 'int8', proargtypes => 'int2 int8' },
 
 { oid => '1287', descr => 'convert int8 to oid',
   proname => 'oid', prorettype => 'oid', proargtypes => 'int8',
@@ -2544,12 +2264,11 @@
 { oid => '1291',
   descr => 'trigger to suppress updates when new and old records match',
   proname => 'suppress_redundant_updates_trigger', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'suppress_redundant_updates_trigger' },
+  prorettype => 'trigger', proargtypes => '' },
 
 { oid => '1292',
   proname => 'tideq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tideq' },
+  proargtypes => 'tid tid' },
 { oid => '1293', descr => 'latest tid of a tuple',
   proname => 'currtid', provolatile => 'v', proparallel => 'u',
   prorettype => 'tid', proargtypes => 'oid tid', prosrc => 'currtid_byreloid' },
@@ -2559,28 +2278,25 @@
   prosrc => 'currtid_byrelname' },
 { oid => '1265',
   proname => 'tidne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tidne' },
+  proargtypes => 'tid tid' },
 { oid => '2790',
   proname => 'tidgt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tidgt' },
+  proargtypes => 'tid tid' },
 { oid => '2791',
   proname => 'tidlt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tidlt' },
+  proargtypes => 'tid tid' },
 { oid => '2792',
   proname => 'tidge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tidge' },
+  proargtypes => 'tid tid' },
 { oid => '2793',
   proname => 'tidle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'tid tid', prosrc => 'tidle' },
+  proargtypes => 'tid tid' },
 { oid => '2794', descr => 'less-equal-greater',
-  proname => 'bttidcmp', prorettype => 'int4', proargtypes => 'tid tid',
-  prosrc => 'bttidcmp' },
+  proname => 'bttidcmp', prorettype => 'int4', proargtypes => 'tid tid' },
 { oid => '2795', descr => 'larger of two',
-  proname => 'tidlarger', prorettype => 'tid', proargtypes => 'tid tid',
-  prosrc => 'tidlarger' },
+  proname => 'tidlarger', prorettype => 'tid', proargtypes => 'tid tid' },
 { oid => '2796', descr => 'smaller of two',
-  proname => 'tidsmaller', prorettype => 'tid', proargtypes => 'tid tid',
-  prosrc => 'tidsmaller' },
+  proname => 'tidsmaller', prorettype => 'tid', proargtypes => 'tid tid' },
 
 { oid => '1296',
   proname => 'timedate_pl', prolang => '14', prorettype => 'timestamp',
@@ -2593,38 +2309,35 @@
   proargtypes => 'timetz date', prosrc => 'select ($2 + $1)' },
 { oid => '1299', descr => 'current transaction time',
   proname => 'now', provolatile => 's', proparallel => 'r',
-  prorettype => 'timestamptz', proargtypes => '', prosrc => 'now' },
+  prorettype => 'timestamptz', proargtypes => '' },
 { oid => '2647', descr => 'current transaction time',
   proname => 'transaction_timestamp', provolatile => 's',
   prorettype => 'timestamptz', proargtypes => '', prosrc => 'now' },
 { oid => '2648', descr => 'current statement time',
   proname => 'statement_timestamp', provolatile => 's', proparallel => 'r',
-  prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'statement_timestamp' },
+  prorettype => 'timestamptz', proargtypes => '' },
 { oid => '2649', descr => 'current clock time',
   proname => 'clock_timestamp', provolatile => 'v', prorettype => 'timestamptz',
-  proargtypes => '', prosrc => 'clock_timestamp' },
+  proargtypes => '' },
 
 # OIDS 1300 - 1399
 
 { oid => '1300',
   descr => 'restriction selectivity for position-comparison operators',
   proname => 'positionsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'positionsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1301',
   descr => 'join selectivity for position-comparison operators',
   proname => 'positionjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'positionjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1302',
   descr => 'restriction selectivity for containment comparison operators',
   proname => 'contsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'contsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1303',
   descr => 'join selectivity for containment comparison operators',
   proname => 'contjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'contjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 { oid => '1304', descr => 'intervals overlap?',
   proname => 'overlaps', proisstrict => 'f', prorettype => 'bool',
@@ -2664,22 +2377,22 @@
 
 { oid => '1312', descr => 'I/O',
   proname => 'timestamp_in', provolatile => 's', prorettype => 'timestamp',
-  proargtypes => 'cstring oid int4', prosrc => 'timestamp_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1313', descr => 'I/O',
   proname => 'timestamp_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'timestamp', prosrc => 'timestamp_out' },
+  proargtypes => 'timestamp' },
 { oid => '2905', descr => 'I/O typmod',
   proname => 'timestamptypmodin', prorettype => 'int4',
-  proargtypes => '_cstring', prosrc => 'timestamptypmodin' },
+  proargtypes => '_cstring' },
 { oid => '2906', descr => 'I/O typmod',
   proname => 'timestamptypmodout', prorettype => 'cstring',
-  proargtypes => 'int4', prosrc => 'timestamptypmodout' },
+  proargtypes => 'int4' },
 { oid => '1314', descr => 'less-equal-greater',
   proname => 'timestamptz_cmp', prorettype => 'int4',
   proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_cmp' },
 { oid => '1315', descr => 'less-equal-greater',
   proname => 'interval_cmp', prorettype => 'int4',
-  proargtypes => 'interval interval', prosrc => 'interval_cmp' },
+  proargtypes => 'interval interval' },
 { oid => '1316', descr => 'convert timestamp to time',
   proname => 'time', prorettype => 'time', proargtypes => 'timestamp',
   prosrc => 'timestamp_time' },
@@ -2700,11 +2413,10 @@
 
 { oid => '1326',
   proname => 'interval_div', prorettype => 'interval',
-  proargtypes => 'interval float8', prosrc => 'interval_div' },
+  proargtypes => 'interval float8' },
 
 { oid => '1339', descr => 'base 10 logarithm',
-  proname => 'dlog10', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'dlog10' },
+  proname => 'dlog10', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '1340', descr => 'base 10 logarithm',
   proname => 'log', prorettype => 'float8', proargtypes => 'float8',
   prosrc => 'dlog10' },
@@ -2742,41 +2454,37 @@
 
 { oid => '1349', descr => 'print type names of oidvector field',
   proname => 'oidvectortypes', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oidvector', prosrc => 'oidvectortypes' },
+  proargtypes => 'oidvector' },
 
 { oid => '1350', descr => 'I/O',
   proname => 'timetz_in', provolatile => 's', prorettype => 'timetz',
-  proargtypes => 'cstring oid int4', prosrc => 'timetz_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1351', descr => 'I/O',
-  proname => 'timetz_out', prorettype => 'cstring', proargtypes => 'timetz',
-  prosrc => 'timetz_out' },
+  proname => 'timetz_out', prorettype => 'cstring', proargtypes => 'timetz' },
 { oid => '2911', descr => 'I/O typmod',
-  proname => 'timetztypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'timetztypmodin' },
+  proname => 'timetztypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2912', descr => 'I/O typmod',
-  proname => 'timetztypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'timetztypmodout' },
+  proname => 'timetztypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '1352',
   proname => 'timetz_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_eq' },
+  proargtypes => 'timetz timetz' },
 { oid => '1353',
   proname => 'timetz_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_ne' },
+  proargtypes => 'timetz timetz' },
 { oid => '1354',
   proname => 'timetz_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_lt' },
+  proargtypes => 'timetz timetz' },
 { oid => '1355',
   proname => 'timetz_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_le' },
+  proargtypes => 'timetz timetz' },
 { oid => '1356',
   proname => 'timetz_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_ge' },
+  proargtypes => 'timetz timetz' },
 { oid => '1357',
   proname => 'timetz_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_gt' },
+  proargtypes => 'timetz timetz' },
 { oid => '1358', descr => 'less-equal-greater',
-  proname => 'timetz_cmp', prorettype => 'int4', proargtypes => 'timetz timetz',
-  prosrc => 'timetz_cmp' },
+  proname => 'timetz_cmp', prorettype => 'int4', proargtypes => 'timetz timetz' },
 { oid => '1359',
   descr => 'convert date and time with time zone to timestamp with time zone',
   proname => 'timestamptz', prorettype => 'timestamptz',
@@ -2808,17 +2516,15 @@
   prosrc => 'bpcharoctetlen' },
 
 { oid => '1377', descr => 'larger of two',
-  proname => 'time_larger', prorettype => 'time', proargtypes => 'time time',
-  prosrc => 'time_larger' },
+  proname => 'time_larger', prorettype => 'time', proargtypes => 'time time' },
 { oid => '1378', descr => 'smaller of two',
-  proname => 'time_smaller', prorettype => 'time', proargtypes => 'time time',
-  prosrc => 'time_smaller' },
+  proname => 'time_smaller', prorettype => 'time', proargtypes => 'time time' },
 { oid => '1379', descr => 'larger of two',
   proname => 'timetz_larger', prorettype => 'timetz',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_larger' },
+  proargtypes => 'timetz timetz' },
 { oid => '1380', descr => 'smaller of two',
   proname => 'timetz_smaller', prorettype => 'timetz',
-  proargtypes => 'timetz timetz', prosrc => 'timetz_smaller' },
+  proargtypes => 'timetz timetz' },
 
 { oid => '1381', descr => 'character length',
   proname => 'char_length', prorettype => 'int4', proargtypes => 'text',
@@ -2890,10 +2596,10 @@
 
 { oid => '1402', descr => 'current schema name',
   proname => 'current_schema', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'current_schema' },
+  proargtypes => '' },
 { oid => '1403', descr => 'current schema search list',
   proname => 'current_schemas', provolatile => 's', prorettype => '_name',
-  proargtypes => 'bool', prosrc => 'current_schemas' },
+  proargtypes => 'bool' },
 
 { oid => '1404', descr => 'substitute portion of string',
   proname => 'overlay', prorettype => 'text',
@@ -2944,26 +2650,22 @@
   proname => 'box', prorettype => 'box', proargtypes => 'point point',
   prosrc => 'points_box' },
 { oid => '1422',
-  proname => 'box_add', prorettype => 'box', proargtypes => 'box point',
-  prosrc => 'box_add' },
+  proname => 'box_add', prorettype => 'box', proargtypes => 'box point' },
 { oid => '1423',
-  proname => 'box_sub', prorettype => 'box', proargtypes => 'box point',
-  prosrc => 'box_sub' },
+  proname => 'box_sub', prorettype => 'box', proargtypes => 'box point' },
 { oid => '1424',
-  proname => 'box_mul', prorettype => 'box', proargtypes => 'box point',
-  prosrc => 'box_mul' },
+  proname => 'box_mul', prorettype => 'box', proargtypes => 'box point' },
 { oid => '1425',
-  proname => 'box_div', prorettype => 'box', proargtypes => 'box point',
-  prosrc => 'box_div' },
+  proname => 'box_div', prorettype => 'box', proargtypes => 'box point' },
 { oid => '1426',
   proname => 'path_contain_pt', prolang => '14', prorettype => 'bool',
   proargtypes => 'path point', prosrc => 'select pg_catalog.on_ppath($2, $1)' },
 { oid => '1428',
   proname => 'poly_contain_pt', prorettype => 'bool',
-  proargtypes => 'polygon point', prosrc => 'poly_contain_pt' },
+  proargtypes => 'polygon point' },
 { oid => '1429',
   proname => 'pt_contained_poly', prorettype => 'bool',
-  proargtypes => 'point polygon', prosrc => 'pt_contained_poly' },
+  proargtypes => 'point polygon' },
 
 { oid => '1430', descr => 'path closed?',
   proname => 'isclosed', prorettype => 'bool', proargtypes => 'path',
@@ -2972,8 +2674,7 @@
   proname => 'isopen', prorettype => 'bool', proargtypes => 'path',
   prosrc => 'path_isopen' },
 { oid => '1432',
-  proname => 'path_npoints', prorettype => 'int4', proargtypes => 'path',
-  prosrc => 'path_npoints' },
+  proname => 'path_npoints', prorettype => 'int4', proargtypes => 'path' },
 
 # pclose and popen might better be named close and open, but that crashes initdb.
 # - thomas 97/04/20
@@ -2985,40 +2686,30 @@
   prosrc => 'path_open' },
 
 { oid => '1435',
-  proname => 'path_add', prorettype => 'path', proargtypes => 'path path',
-  prosrc => 'path_add' },
+  proname => 'path_add', prorettype => 'path', proargtypes => 'path path' },
 { oid => '1436',
-  proname => 'path_add_pt', prorettype => 'path', proargtypes => 'path point',
-  prosrc => 'path_add_pt' },
+  proname => 'path_add_pt', prorettype => 'path', proargtypes => 'path point' },
 { oid => '1437',
-  proname => 'path_sub_pt', prorettype => 'path', proargtypes => 'path point',
-  prosrc => 'path_sub_pt' },
+  proname => 'path_sub_pt', prorettype => 'path', proargtypes => 'path point' },
 { oid => '1438',
-  proname => 'path_mul_pt', prorettype => 'path', proargtypes => 'path point',
-  prosrc => 'path_mul_pt' },
+  proname => 'path_mul_pt', prorettype => 'path', proargtypes => 'path point' },
 { oid => '1439',
-  proname => 'path_div_pt', prorettype => 'path', proargtypes => 'path point',
-  prosrc => 'path_div_pt' },
+  proname => 'path_div_pt', prorettype => 'path', proargtypes => 'path point' },
 
 { oid => '1440', descr => 'convert x, y to point',
   proname => 'point', prorettype => 'point', proargtypes => 'float8 float8',
   prosrc => 'construct_point' },
 { oid => '1441',
-  proname => 'point_add', prorettype => 'point', proargtypes => 'point point',
-  prosrc => 'point_add' },
+  proname => 'point_add', prorettype => 'point', proargtypes => 'point point' },
 { oid => '1442',
-  proname => 'point_sub', prorettype => 'point', proargtypes => 'point point',
-  prosrc => 'point_sub' },
+  proname => 'point_sub', prorettype => 'point', proargtypes => 'point point' },
 { oid => '1443',
-  proname => 'point_mul', prorettype => 'point', proargtypes => 'point point',
-  prosrc => 'point_mul' },
+  proname => 'point_mul', prorettype => 'point', proargtypes => 'point point' },
 { oid => '1444',
-  proname => 'point_div', prorettype => 'point', proargtypes => 'point point',
-  prosrc => 'point_div' },
+  proname => 'point_div', prorettype => 'point', proargtypes => 'point point' },
 
 { oid => '1445',
-  proname => 'poly_npoints', prorettype => 'int4', proargtypes => 'polygon',
-  prosrc => 'poly_npoints' },
+  proname => 'poly_npoints', prorettype => 'int4', proargtypes => 'polygon' },
 { oid => '1446', descr => 'convert polygon to bounding box',
   proname => 'box', prorettype => 'box', proargtypes => 'polygon',
   prosrc => 'poly_box' },
@@ -3033,59 +2724,57 @@
   prosrc => 'path_poly' },
 
 { oid => '1450', descr => 'I/O',
-  proname => 'circle_in', prorettype => 'circle', proargtypes => 'cstring',
-  prosrc => 'circle_in' },
+  proname => 'circle_in', prorettype => 'circle', proargtypes => 'cstring' },
 { oid => '1451', descr => 'I/O',
-  proname => 'circle_out', prorettype => 'cstring', proargtypes => 'circle',
-  prosrc => 'circle_out' },
+  proname => 'circle_out', prorettype => 'cstring', proargtypes => 'circle' },
 { oid => '1452',
   proname => 'circle_same', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_same' },
+  proargtypes => 'circle circle' },
 { oid => '1453',
   proname => 'circle_contain', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_contain' },
+  proargtypes => 'circle circle' },
 { oid => '1454',
   proname => 'circle_left', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_left' },
+  proargtypes => 'circle circle' },
 { oid => '1455',
   proname => 'circle_overleft', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_overleft' },
+  proargtypes => 'circle circle' },
 { oid => '1456',
   proname => 'circle_overright', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_overright' },
+  proargtypes => 'circle circle' },
 { oid => '1457',
   proname => 'circle_right', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_right' },
+  proargtypes => 'circle circle' },
 { oid => '1458',
   proname => 'circle_contained', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_contained' },
+  proargtypes => 'circle circle' },
 { oid => '1459',
   proname => 'circle_overlap', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_overlap' },
+  proargtypes => 'circle circle' },
 { oid => '1460',
   proname => 'circle_below', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_below' },
+  proargtypes => 'circle circle' },
 { oid => '1461',
   proname => 'circle_above', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_above' },
+  proargtypes => 'circle circle' },
 { oid => '1462',
   proname => 'circle_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_eq' },
+  proargtypes => 'circle circle' },
 { oid => '1463',
   proname => 'circle_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_ne' },
+  proargtypes => 'circle circle' },
 { oid => '1464',
   proname => 'circle_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_lt' },
+  proargtypes => 'circle circle' },
 { oid => '1465',
   proname => 'circle_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_gt' },
+  proargtypes => 'circle circle' },
 { oid => '1466',
   proname => 'circle_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_le' },
+  proargtypes => 'circle circle' },
 { oid => '1467',
   proname => 'circle_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_ge' },
+  proargtypes => 'circle circle' },
 { oid => '1468', descr => 'area of circle',
   proname => 'area', prorettype => 'float8', proargtypes => 'circle',
   prosrc => 'circle_area' },
@@ -3097,10 +2786,9 @@
   prosrc => 'circle_radius' },
 { oid => '1471',
   proname => 'circle_distance', prorettype => 'float8',
-  proargtypes => 'circle circle', prosrc => 'circle_distance' },
+  proargtypes => 'circle circle' },
 { oid => '1472',
-  proname => 'circle_center', prorettype => 'point', proargtypes => 'circle',
-  prosrc => 'circle_center' },
+  proname => 'circle_center', prorettype => 'point', proargtypes => 'circle' },
 { oid => '1473', descr => 'convert point and radius to circle',
   proname => 'circle', prorettype => 'circle', proargtypes => 'point float8',
   prosrc => 'cr_circle' },
@@ -3111,14 +2799,13 @@
   proname => 'polygon', prorettype => 'polygon', proargtypes => 'int4 circle',
   prosrc => 'circle_poly' },
 { oid => '1476',
-  proname => 'dist_pc', prorettype => 'float8', proargtypes => 'point circle',
-  prosrc => 'dist_pc' },
+  proname => 'dist_pc', prorettype => 'float8', proargtypes => 'point circle' },
 { oid => '1477',
   proname => 'circle_contain_pt', prorettype => 'bool',
-  proargtypes => 'circle point', prosrc => 'circle_contain_pt' },
+  proargtypes => 'circle point' },
 { oid => '1478',
   proname => 'pt_contained_circle', prorettype => 'bool',
-  proargtypes => 'point circle', prosrc => 'pt_contained_circle' },
+  proargtypes => 'point circle' },
 { oid => '4091', descr => 'convert point to empty box',
   proname => 'box', prorettype => 'box', proargtypes => 'point',
   prosrc => 'point_box' },
@@ -3134,59 +2821,47 @@
 
 { oid => '1482',
   proname => 'lseg_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_ne' },
+  proargtypes => 'lseg lseg' },
 { oid => '1483',
   proname => 'lseg_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_lt' },
+  proargtypes => 'lseg lseg' },
 { oid => '1484',
   proname => 'lseg_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_le' },
+  proargtypes => 'lseg lseg' },
 { oid => '1485',
   proname => 'lseg_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_gt' },
+  proargtypes => 'lseg lseg' },
 { oid => '1486',
   proname => 'lseg_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'lseg lseg', prosrc => 'lseg_ge' },
+  proargtypes => 'lseg lseg' },
 { oid => '1487',
-  proname => 'lseg_length', prorettype => 'float8', proargtypes => 'lseg',
-  prosrc => 'lseg_length' },
+  proname => 'lseg_length', prorettype => 'float8', proargtypes => 'lseg' },
 { oid => '1488',
-  proname => 'close_ls', prorettype => 'point', proargtypes => 'line lseg',
-  prosrc => 'close_ls' },
+  proname => 'close_ls', prorettype => 'point', proargtypes => 'line lseg' },
 { oid => '1489',
-  proname => 'close_lseg', prorettype => 'point', proargtypes => 'lseg lseg',
-  prosrc => 'close_lseg' },
+  proname => 'close_lseg', prorettype => 'point', proargtypes => 'lseg lseg' },
 
 { oid => '1490', descr => 'I/O',
-  proname => 'line_in', prorettype => 'line', proargtypes => 'cstring',
-  prosrc => 'line_in' },
+  proname => 'line_in', prorettype => 'line', proargtypes => 'cstring' },
 { oid => '1491', descr => 'I/O',
-  proname => 'line_out', prorettype => 'cstring', proargtypes => 'line',
-  prosrc => 'line_out' },
+  proname => 'line_out', prorettype => 'cstring', proargtypes => 'line' },
 { oid => '1492',
-  proname => 'line_eq', prorettype => 'bool', proargtypes => 'line line',
-  prosrc => 'line_eq' },
+  proname => 'line_eq', prorettype => 'bool', proargtypes => 'line line' },
 { oid => '1493', descr => 'construct line from points',
   proname => 'line', prorettype => 'line', proargtypes => 'point point',
   prosrc => 'line_construct_pp' },
 { oid => '1494',
-  proname => 'line_interpt', prorettype => 'point', proargtypes => 'line line',
-  prosrc => 'line_interpt' },
+  proname => 'line_interpt', prorettype => 'point', proargtypes => 'line line' },
 { oid => '1495',
-  proname => 'line_intersect', prorettype => 'bool', proargtypes => 'line line',
-  prosrc => 'line_intersect' },
+  proname => 'line_intersect', prorettype => 'bool', proargtypes => 'line line' },
 { oid => '1496',
-  proname => 'line_parallel', prorettype => 'bool', proargtypes => 'line line',
-  prosrc => 'line_parallel' },
+  proname => 'line_parallel', prorettype => 'bool', proargtypes => 'line line' },
 { oid => '1497',
-  proname => 'line_perp', prorettype => 'bool', proargtypes => 'line line',
-  prosrc => 'line_perp' },
+  proname => 'line_perp', prorettype => 'bool', proargtypes => 'line line' },
 { oid => '1498',
-  proname => 'line_vertical', prorettype => 'bool', proargtypes => 'line',
-  prosrc => 'line_vertical' },
+  proname => 'line_vertical', prorettype => 'bool', proargtypes => 'line' },
 { oid => '1499',
-  proname => 'line_horizontal', prorettype => 'bool', proargtypes => 'line',
-  prosrc => 'line_horizontal' },
+  proname => 'line_horizontal', prorettype => 'bool', proargtypes => 'line' },
 
 # OIDS 1500 - 1599
 
@@ -3229,17 +2904,13 @@
   prosrc => 'poly_npoints' },
 
 { oid => '1564', descr => 'I/O',
-  proname => 'bit_in', prorettype => 'bit', proargtypes => 'cstring oid int4',
-  prosrc => 'bit_in' },
+  proname => 'bit_in', prorettype => 'bit', proargtypes => 'cstring oid int4' },
 { oid => '1565', descr => 'I/O',
-  proname => 'bit_out', prorettype => 'cstring', proargtypes => 'bit',
-  prosrc => 'bit_out' },
+  proname => 'bit_out', prorettype => 'cstring', proargtypes => 'bit' },
 { oid => '2919', descr => 'I/O typmod',
-  proname => 'bittypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'bittypmodin' },
+  proname => 'bittypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2920', descr => 'I/O typmod',
-  proname => 'bittypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'bittypmodout' },
+  proname => 'bittypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 
 { oid => '1569', descr => 'matches LIKE expression',
   proname => 'like', prorettype => 'bool', proargtypes => 'text text',
@@ -3275,54 +2946,48 @@
   prorettype => 'record', proargtypes => 'oid',
   proallargtypes => '{oid,int8,int8,int8,int8,bool,int8,oid}',
   proargmodes => '{i,o,o,o,o,o,o,o}',
-  proargnames => '{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type}',
-  prosrc => 'pg_sequence_parameters' },
+  proargnames => '{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type}' },
 { oid => '4032', descr => 'sequence last value',
   proname => 'pg_sequence_last_value', provolatile => 'v', proparallel => 'u',
-  prorettype => 'int8', proargtypes => 'regclass',
-  prosrc => 'pg_sequence_last_value' },
+  prorettype => 'int8', proargtypes => 'regclass' },
 
 { oid => '1579', descr => 'I/O',
   proname => 'varbit_in', prorettype => 'varbit',
-  proargtypes => 'cstring oid int4', prosrc => 'varbit_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1580', descr => 'I/O',
-  proname => 'varbit_out', prorettype => 'cstring', proargtypes => 'varbit',
-  prosrc => 'varbit_out' },
+  proname => 'varbit_out', prorettype => 'cstring', proargtypes => 'varbit' },
 { oid => '2902', descr => 'I/O typmod',
-  proname => 'varbittypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'varbittypmodin' },
+  proname => 'varbittypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2921', descr => 'I/O typmod',
-  proname => 'varbittypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'varbittypmodout' },
+  proname => 'varbittypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 
 { oid => '1581',
   proname => 'biteq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'biteq' },
+  proargtypes => 'bit bit' },
 { oid => '1582',
   proname => 'bitne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'bitne' },
+  proargtypes => 'bit bit' },
 { oid => '1592',
   proname => 'bitge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'bitge' },
+  proargtypes => 'bit bit' },
 { oid => '1593',
   proname => 'bitgt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'bitgt' },
+  proargtypes => 'bit bit' },
 { oid => '1594',
   proname => 'bitle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'bitle' },
+  proargtypes => 'bit bit' },
 { oid => '1595',
   proname => 'bitlt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bit bit', prosrc => 'bitlt' },
+  proargtypes => 'bit bit' },
 { oid => '1596', descr => 'less-equal-greater',
-  proname => 'bitcmp', prorettype => 'int4', proargtypes => 'bit bit',
-  prosrc => 'bitcmp' },
+  proname => 'bitcmp', prorettype => 'int4', proargtypes => 'bit bit' },
 
 { oid => '1598', descr => 'random value',
   proname => 'random', provolatile => 'v', proparallel => 'r',
   prorettype => 'float8', proargtypes => '', prosrc => 'drandom' },
 { oid => '1599', descr => 'set random seed',
   proname => 'setseed', provolatile => 'v', proparallel => 'r',
-  prorettype => 'void', proargtypes => 'float8', prosrc => 'setseed' },
+  prorettype => 'void', proargtypes => 'float8' },
 
 # OIDS 1600 - 1699
 
@@ -3377,35 +3042,30 @@
   prosrc => 'dcotd' },
 
 { oid => '1608', descr => 'radians to degrees',
-  proname => 'degrees', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'degrees' },
+  proname => 'degrees', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '1609', descr => 'degrees to radians',
-  proname => 'radians', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'radians' },
+  proname => 'radians', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '1610', descr => 'PI',
   proname => 'pi', prorettype => 'float8', proargtypes => '', prosrc => 'dpi' },
 
 { oid => '1618',
   proname => 'interval_mul', prorettype => 'interval',
-  proargtypes => 'interval float8', prosrc => 'interval_mul' },
+  proargtypes => 'interval float8' },
 
 { oid => '1620', descr => 'convert first char to int4',
-  proname => 'ascii', prorettype => 'int4', proargtypes => 'text',
-  prosrc => 'ascii' },
+  proname => 'ascii', prorettype => 'int4', proargtypes => 'text' },
 { oid => '1621', descr => 'convert int4 to char',
-  proname => 'chr', prorettype => 'text', proargtypes => 'int4',
-  prosrc => 'chr' },
+  proname => 'chr', prorettype => 'text', proargtypes => 'int4' },
 { oid => '1622', descr => 'replicate string n times',
-  proname => 'repeat', prorettype => 'text', proargtypes => 'text int4',
-  prosrc => 'repeat' },
+  proname => 'repeat', prorettype => 'text', proargtypes => 'text int4' },
 
 { oid => '1623', descr => 'convert SQL99 regexp pattern to POSIX style',
   proname => 'similar_escape', proisstrict => 'f', prorettype => 'text',
-  proargtypes => 'text text', prosrc => 'similar_escape' },
+  proargtypes => 'text text' },
 
 { oid => '1624',
   proname => 'mul_d_interval', prorettype => 'interval',
-  proargtypes => 'float8 interval', prosrc => 'mul_d_interval' },
+  proargtypes => 'float8 interval' },
 
 { oid => '1631',
   proname => 'bpcharlike', prorettype => 'bool', proargtypes => 'bpchar text',
@@ -3415,20 +3075,15 @@
   prosrc => 'textnlike' },
 
 { oid => '1633',
-  proname => 'texticlike', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'texticlike' },
+  proname => 'texticlike', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1634',
-  proname => 'texticnlike', prorettype => 'bool', proargtypes => 'text text',
-  prosrc => 'texticnlike' },
+  proname => 'texticnlike', prorettype => 'bool', proargtypes => 'text text' },
 { oid => '1635',
-  proname => 'nameiclike', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameiclike' },
+  proname => 'nameiclike', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '1636',
-  proname => 'nameicnlike', prorettype => 'bool', proargtypes => 'name text',
-  prosrc => 'nameicnlike' },
+  proname => 'nameicnlike', prorettype => 'bool', proargtypes => 'name text' },
 { oid => '1637', descr => 'convert LIKE pattern to use backslash escapes',
-  proname => 'like_escape', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'like_escape' },
+  proname => 'like_escape', prorettype => 'text', proargtypes => 'text text' },
 
 { oid => '1656',
   proname => 'bpcharicregexeq', prorettype => 'bool',
@@ -3454,32 +3109,24 @@
   proname => 'strpos', prorettype => 'int4', proargtypes => 'text text',
   prosrc => 'textpos' },
 { oid => '870', descr => 'lowercase',
-  proname => 'lower', prorettype => 'text', proargtypes => 'text',
-  prosrc => 'lower' },
+  proname => 'lower', prorettype => 'text', proargtypes => 'text' },
 { oid => '871', descr => 'uppercase',
-  proname => 'upper', prorettype => 'text', proargtypes => 'text',
-  prosrc => 'upper' },
+  proname => 'upper', prorettype => 'text', proargtypes => 'text' },
 { oid => '872', descr => 'capitalize each word',
-  proname => 'initcap', prorettype => 'text', proargtypes => 'text',
-  prosrc => 'initcap' },
+  proname => 'initcap', prorettype => 'text', proargtypes => 'text' },
 { oid => '873', descr => 'left-pad string to length',
-  proname => 'lpad', prorettype => 'text', proargtypes => 'text int4 text',
-  prosrc => 'lpad' },
+  proname => 'lpad', prorettype => 'text', proargtypes => 'text int4 text' },
 { oid => '874', descr => 'right-pad string to length',
-  proname => 'rpad', prorettype => 'text', proargtypes => 'text int4 text',
-  prosrc => 'rpad' },
+  proname => 'rpad', prorettype => 'text', proargtypes => 'text int4 text' },
 { oid => '875', descr => 'trim selected characters from left end of string',
-  proname => 'ltrim', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'ltrim' },
+  proname => 'ltrim', prorettype => 'text', proargtypes => 'text text' },
 { oid => '876', descr => 'trim selected characters from right end of string',
-  proname => 'rtrim', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'rtrim' },
+  proname => 'rtrim', prorettype => 'text', proargtypes => 'text text' },
 { oid => '877', descr => 'extract portion of string',
   proname => 'substr', prorettype => 'text', proargtypes => 'text int4 int4',
   prosrc => 'text_substr' },
 { oid => '878', descr => 'map a set of characters appearing in string',
-  proname => 'translate', prorettype => 'text', proargtypes => 'text text text',
-  prosrc => 'translate' },
+  proname => 'translate', prorettype => 'text', proargtypes => 'text text text' },
 { oid => '879', descr => 'left-pad string to length',
   proname => 'lpad', prolang => '14', prorettype => 'text',
   proargtypes => 'text int4',
@@ -3498,8 +3145,7 @@
   proname => 'substr', prorettype => 'text', proargtypes => 'text int4',
   prosrc => 'text_substr_no_len' },
 { oid => '884', descr => 'trim selected characters from both ends of string',
-  proname => 'btrim', prorettype => 'text', proargtypes => 'text text',
-  prosrc => 'btrim' },
+  proname => 'btrim', prorettype => 'text', proargtypes => 'text text' },
 { oid => '885', descr => 'trim spaces from both ends of string',
   proname => 'btrim', prorettype => 'text', proargtypes => 'text',
   prosrc => 'btrim1' },
@@ -3525,15 +3171,14 @@
   prosrc => 'regexp_match_no_flags' },
 { oid => '3397', descr => 'find first match for regexp',
   proname => 'regexp_match', prorettype => '_text',
-  proargtypes => 'text text text', prosrc => 'regexp_match' },
+  proargtypes => 'text text text' },
 { oid => '2763', descr => 'find match(es) for regexp',
   proname => 'regexp_matches', prorows => '1', proretset => 't',
   prorettype => '_text', proargtypes => 'text text',
   prosrc => 'regexp_matches_no_flags' },
 { oid => '2764', descr => 'find match(es) for regexp',
   proname => 'regexp_matches', prorows => '10', proretset => 't',
-  prorettype => '_text', proargtypes => 'text text text',
-  prosrc => 'regexp_matches' },
+  prorettype => '_text', proargtypes => 'text text text' },
 { oid => '2088', descr => 'split string by field_sep and return field_num',
   proname => 'split_part', prorettype => 'text',
   proargtypes => 'text text int4', prosrc => 'split_text' },
@@ -3543,14 +3188,13 @@
   prosrc => 'regexp_split_to_table_no_flags' },
 { oid => '2766', descr => 'split string by pattern',
   proname => 'regexp_split_to_table', prorows => '1000', proretset => 't',
-  prorettype => 'text', proargtypes => 'text text text',
-  prosrc => 'regexp_split_to_table' },
+  prorettype => 'text', proargtypes => 'text text text' },
 { oid => '2767', descr => 'split string by pattern',
   proname => 'regexp_split_to_array', prorettype => '_text',
   proargtypes => 'text text', prosrc => 'regexp_split_to_array_no_flags' },
 { oid => '2768', descr => 'split string by pattern',
   proname => 'regexp_split_to_array', prorettype => '_text',
-  proargtypes => 'text text text', prosrc => 'regexp_split_to_array' },
+  proargtypes => 'text text text' },
 { oid => '2089', descr => 'convert int4 number to hex',
   proname => 'to_hex', prorettype => 'text', proargtypes => 'int4',
   prosrc => 'to_hex32' },
@@ -3563,12 +3207,12 @@
 # return database encoding name
 { oid => '1039', descr => 'encoding name of current database',
   proname => 'getdatabaseencoding', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'getdatabaseencoding' },
+  proargtypes => '' },
 
 # return client encoding name i.e. session encoding
 { oid => '810', descr => 'encoding name of current database',
   proname => 'pg_client_encoding', provolatile => 's', prorettype => 'name',
-  proargtypes => '', prosrc => 'pg_client_encoding' },
+  proargtypes => '' },
 
 { oid => '1713', descr => 'length of string in specified encoding',
   proname => 'length', provolatile => 's', prorettype => 'int4',
@@ -3603,154 +3247,138 @@
 
 { oid => '1638',
   proname => 'oidgt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oidgt' },
+  proargtypes => 'oid oid' },
 { oid => '1639',
   proname => 'oidge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'oid oid', prosrc => 'oidge' },
+  proargtypes => 'oid oid' },
 
 # System-view support functions
 { oid => '1573', descr => 'source text of a rule',
   proname => 'pg_get_ruledef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_ruledef' },
+  proargtypes => 'oid' },
 { oid => '1640', descr => 'select statement of a view',
   proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
   prorettype => 'text', proargtypes => 'text',
   prosrc => 'pg_get_viewdef_name' },
 { oid => '1641', descr => 'select statement of a view',
   proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r',
-  prorettype => 'text', proargtypes => 'oid', prosrc => 'pg_get_viewdef' },
+  prorettype => 'text', proargtypes => 'oid' },
 { oid => '1642', descr => 'role name by OID (with fallback)',
   proname => 'pg_get_userbyid', provolatile => 's', prorettype => 'name',
-  proargtypes => 'oid', prosrc => 'pg_get_userbyid' },
+  proargtypes => 'oid' },
 { oid => '1643', descr => 'index description',
   proname => 'pg_get_indexdef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_indexdef' },
+  proargtypes => 'oid' },
 { oid => '3415', descr => 'extended statistics object description',
   proname => 'pg_get_statisticsobjdef', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid',
-  prosrc => 'pg_get_statisticsobjdef' },
+  prorettype => 'text', proargtypes => 'oid' },
 { oid => '3352', descr => 'partition key description',
   proname => 'pg_get_partkeydef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_partkeydef' },
+  proargtypes => 'oid' },
 { oid => '3408', descr => 'partition constraint description',
   proname => 'pg_get_partition_constraintdef', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid',
-  prosrc => 'pg_get_partition_constraintdef' },
+  prorettype => 'text', proargtypes => 'oid' },
 { oid => '1662', descr => 'trigger description',
   proname => 'pg_get_triggerdef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_triggerdef' },
+  proargtypes => 'oid' },
 { oid => '1387', descr => 'constraint description',
   proname => 'pg_get_constraintdef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_constraintdef' },
+  proargtypes => 'oid' },
 { oid => '1716', descr => 'deparse an encoded expression',
   proname => 'pg_get_expr', provolatile => 's', prorettype => 'text',
-  proargtypes => 'pg_node_tree oid', prosrc => 'pg_get_expr' },
+  proargtypes => 'pg_node_tree oid' },
 { oid => '1665', descr => 'name of sequence for a serial column',
   proname => 'pg_get_serial_sequence', provolatile => 's', prorettype => 'text',
-  proargtypes => 'text text', prosrc => 'pg_get_serial_sequence' },
+  proargtypes => 'text text' },
 { oid => '2098', descr => 'definition of a function',
   proname => 'pg_get_functiondef', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_functiondef' },
+  proargtypes => 'oid' },
 { oid => '2162', descr => 'argument list of a function',
   proname => 'pg_get_function_arguments', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid',
-  prosrc => 'pg_get_function_arguments' },
+  prorettype => 'text', proargtypes => 'oid' },
 { oid => '2232', descr => 'identity argument list of a function',
   proname => 'pg_get_function_identity_arguments', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid',
-  prosrc => 'pg_get_function_identity_arguments' },
+  prorettype => 'text', proargtypes => 'oid' },
 { oid => '2165', descr => 'result type of a function',
   proname => 'pg_get_function_result', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_get_function_result' },
+  proargtypes => 'oid' },
 { oid => '3808', descr => 'function argument default',
   proname => 'pg_get_function_arg_default', provolatile => 's',
-  prorettype => 'text', proargtypes => 'oid int4',
-  prosrc => 'pg_get_function_arg_default' },
+  prorettype => 'text', proargtypes => 'oid int4' },
 
 { oid => '1686', descr => 'list of SQL keywords',
   proname => 'pg_get_keywords', procost => '10', prorows => '400',
   proretset => 't', provolatile => 's', prorettype => 'record',
   proargtypes => '', proallargtypes => '{text,char,text}',
-  proargmodes => '{o,o,o}', proargnames => '{word,catcode,catdesc}',
-  prosrc => 'pg_get_keywords' },
+  proargmodes => '{o,o,o}', proargnames => '{word,catcode,catdesc}' },
 
 { oid => '2289', descr => 'convert generic options array to name/value table',
   proname => 'pg_options_to_table', prorows => '3', proretset => 't',
   provolatile => 's', prorettype => 'record', proargtypes => '_text',
   proallargtypes => '{_text,text,text}', proargmodes => '{i,o,o}',
-  proargnames => '{options_array,option_name,option_value}',
-  prosrc => 'pg_options_to_table' },
+  proargnames => '{options_array,option_name,option_value}' },
 
 { oid => '1619', descr => 'type of the argument',
   proname => 'pg_typeof', proisstrict => 'f', provolatile => 's',
-  prorettype => 'regtype', proargtypes => 'any', prosrc => 'pg_typeof' },
+  prorettype => 'regtype', proargtypes => 'any' },
 { oid => '3162',
   descr => 'collation of the argument; implementation of the COLLATION FOR expression',
   proname => 'pg_collation_for', proisstrict => 'f', provolatile => 's',
-  prorettype => 'text', proargtypes => 'any', prosrc => 'pg_collation_for' },
+  prorettype => 'text', proargtypes => 'any' },
 
 { oid => '3842', descr => 'is a relation insertable/updatable/deletable',
   proname => 'pg_relation_is_updatable', procost => '10', provolatile => 's',
-  prorettype => 'int4', proargtypes => 'regclass bool',
-  prosrc => 'pg_relation_is_updatable' },
+  prorettype => 'int4', proargtypes => 'regclass bool' },
 { oid => '3843', descr => 'is a column updatable',
   proname => 'pg_column_is_updatable', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'regclass int2 bool',
-  prosrc => 'pg_column_is_updatable' },
+  prorettype => 'bool', proargtypes => 'regclass int2 bool' },
 
 { oid => '6120', descr => 'oid of replica identity index if any',
   proname => 'pg_get_replica_identity_index', procost => '10',
-  provolatile => 's', prorettype => 'regclass', proargtypes => 'regclass',
-  prosrc => 'pg_get_replica_identity_index' },
+  provolatile => 's', prorettype => 'regclass', proargtypes => 'regclass' },
 
 # Deferrable unique constraint trigger
 { oid => '1250', descr => 'deferred UNIQUE constraint check',
   proname => 'unique_key_recheck', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'unique_key_recheck' },
+  proargtypes => '' },
 
 # Generic referential integrity constraint triggers
 { oid => '1644', descr => 'referential integrity FOREIGN KEY ... REFERENCES',
   proname => 'RI_FKey_check_ins', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_check_ins' },
+  proargtypes => '' },
 { oid => '1645', descr => 'referential integrity FOREIGN KEY ... REFERENCES',
   proname => 'RI_FKey_check_upd', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_check_upd' },
+  proargtypes => '' },
 { oid => '1646', descr => 'referential integrity ON DELETE CASCADE',
   proname => 'RI_FKey_cascade_del', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_cascade_del' },
+  proargtypes => '' },
 { oid => '1647', descr => 'referential integrity ON UPDATE CASCADE',
   proname => 'RI_FKey_cascade_upd', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_cascade_upd' },
+  proargtypes => '' },
 { oid => '1648', descr => 'referential integrity ON DELETE RESTRICT',
   proname => 'RI_FKey_restrict_del', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_restrict_del' },
+  prorettype => 'trigger', proargtypes => '' },
 { oid => '1649', descr => 'referential integrity ON UPDATE RESTRICT',
   proname => 'RI_FKey_restrict_upd', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_restrict_upd' },
+  prorettype => 'trigger', proargtypes => '' },
 { oid => '1650', descr => 'referential integrity ON DELETE SET NULL',
   proname => 'RI_FKey_setnull_del', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_setnull_del' },
+  proargtypes => '' },
 { oid => '1651', descr => 'referential integrity ON UPDATE SET NULL',
   proname => 'RI_FKey_setnull_upd', provolatile => 'v', prorettype => 'trigger',
-  proargtypes => '', prosrc => 'RI_FKey_setnull_upd' },
+  proargtypes => '' },
 { oid => '1652', descr => 'referential integrity ON DELETE SET DEFAULT',
   proname => 'RI_FKey_setdefault_del', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_setdefault_del' },
+  prorettype => 'trigger', proargtypes => '' },
 { oid => '1653', descr => 'referential integrity ON UPDATE SET DEFAULT',
   proname => 'RI_FKey_setdefault_upd', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_setdefault_upd' },
+  prorettype => 'trigger', proargtypes => '' },
 { oid => '1654', descr => 'referential integrity ON DELETE NO ACTION',
   proname => 'RI_FKey_noaction_del', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_noaction_del' },
+  prorettype => 'trigger', proargtypes => '' },
 { oid => '1655', descr => 'referential integrity ON UPDATE NO ACTION',
   proname => 'RI_FKey_noaction_upd', provolatile => 'v',
-  prorettype => 'trigger', proargtypes => '',
-  prosrc => 'RI_FKey_noaction_upd' },
+  prorettype => 'trigger', proargtypes => '' },
 
 { oid => '1666',
   proname => 'varbiteq', proleakproof => 't', prorettype => 'bool',
@@ -3782,20 +3410,15 @@
   proname => 'bitor', prorettype => 'bit', proargtypes => 'bit bit',
   prosrc => 'bit_or' },
 { oid => '1675',
-  proname => 'bitxor', prorettype => 'bit', proargtypes => 'bit bit',
-  prosrc => 'bitxor' },
+  proname => 'bitxor', prorettype => 'bit', proargtypes => 'bit bit' },
 { oid => '1676',
-  proname => 'bitnot', prorettype => 'bit', proargtypes => 'bit',
-  prosrc => 'bitnot' },
+  proname => 'bitnot', prorettype => 'bit', proargtypes => 'bit' },
 { oid => '1677',
-  proname => 'bitshiftleft', prorettype => 'bit', proargtypes => 'bit int4',
-  prosrc => 'bitshiftleft' },
+  proname => 'bitshiftleft', prorettype => 'bit', proargtypes => 'bit int4' },
 { oid => '1678',
-  proname => 'bitshiftright', prorettype => 'bit', proargtypes => 'bit int4',
-  prosrc => 'bitshiftright' },
+  proname => 'bitshiftright', prorettype => 'bit', proargtypes => 'bit int4' },
 { oid => '1679',
-  proname => 'bitcat', prorettype => 'varbit', proargtypes => 'varbit varbit',
-  prosrc => 'bitcat' },
+  proname => 'bitcat', prorettype => 'varbit', proargtypes => 'varbit varbit' },
 { oid => '1680', descr => 'extract portion of bitstring',
   proname => 'substring', prorettype => 'bit', proargtypes => 'bit int4 int4',
   prosrc => 'bitsubstr' },
@@ -3813,15 +3436,13 @@
   prosrc => 'bittoint4' },
 
 { oid => '1685', descr => 'adjust bit() to typmod length',
-  proname => 'bit', prorettype => 'bit', proargtypes => 'bit int4 bool',
-  prosrc => 'bit' },
+  proname => 'bit', prorettype => 'bit', proargtypes => 'bit int4 bool' },
 { oid => '3158', descr => 'transform a varbit length coercion',
   proname => 'varbit_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'varbit_transform' },
+  proargtypes => 'internal' },
 { oid => '1687', descr => 'adjust varbit() to typmod length',
   proname => 'varbit', protransform => 'varbit_transform',
-  prorettype => 'varbit', proargtypes => 'varbit int4 bool',
-  prosrc => 'varbit' },
+  prorettype => 'varbit', proargtypes => 'varbit int4 bool' },
 
 { oid => '1698', descr => 'position of sub-bitstring',
   proname => 'position', prorettype => 'int4', proargtypes => 'bit bit',
@@ -3845,11 +3466,9 @@
 
 # for macaddr type support
 { oid => '436', descr => 'I/O',
-  proname => 'macaddr_in', prorettype => 'macaddr', proargtypes => 'cstring',
-  prosrc => 'macaddr_in' },
+  proname => 'macaddr_in', prorettype => 'macaddr', proargtypes => 'cstring' },
 { oid => '437', descr => 'I/O',
-  proname => 'macaddr_out', prorettype => 'cstring', proargtypes => 'macaddr',
-  prosrc => 'macaddr_out' },
+  proname => 'macaddr_out', prorettype => 'cstring', proargtypes => 'macaddr' },
 
 { oid => '753', descr => 'MACADDR manufacturer fields',
   proname => 'trunc', prorettype => 'macaddr', proargtypes => 'macaddr',
@@ -3857,45 +3476,42 @@
 
 { oid => '830',
   proname => 'macaddr_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_eq' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '831',
   proname => 'macaddr_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_lt' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '832',
   proname => 'macaddr_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_le' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '833',
   proname => 'macaddr_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_gt' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '834',
   proname => 'macaddr_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_ge' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '835',
   proname => 'macaddr_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_ne' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '836', descr => 'less-equal-greater',
   proname => 'macaddr_cmp', prorettype => 'int4',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_cmp' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '3144',
-  proname => 'macaddr_not', prorettype => 'macaddr', proargtypes => 'macaddr',
-  prosrc => 'macaddr_not' },
+  proname => 'macaddr_not', prorettype => 'macaddr', proargtypes => 'macaddr' },
 { oid => '3145',
   proname => 'macaddr_and', prorettype => 'macaddr',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_and' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '3146',
   proname => 'macaddr_or', prorettype => 'macaddr',
-  proargtypes => 'macaddr macaddr', prosrc => 'macaddr_or' },
+  proargtypes => 'macaddr macaddr' },
 { oid => '3359', descr => 'sort support',
   proname => 'macaddr_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'macaddr_sortsupport' },
+  proargtypes => 'internal' },
 
 # for macaddr8 type support
 { oid => '4110', descr => 'I/O',
-  proname => 'macaddr8_in', prorettype => 'macaddr8', proargtypes => 'cstring',
-  prosrc => 'macaddr8_in' },
+  proname => 'macaddr8_in', prorettype => 'macaddr8', proargtypes => 'cstring' },
 { oid => '4111', descr => 'I/O',
-  proname => 'macaddr8_out', prorettype => 'cstring', proargtypes => 'macaddr8',
-  prosrc => 'macaddr8_out' },
+  proname => 'macaddr8_out', prorettype => 'cstring', proargtypes => 'macaddr8' },
 
 { oid => '4112', descr => 'MACADDR8 manufacturer fields',
   proname => 'trunc', prorettype => 'macaddr8', proargtypes => 'macaddr8',
@@ -3903,34 +3519,34 @@
 
 { oid => '4113',
   proname => 'macaddr8_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_eq' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4114',
   proname => 'macaddr8_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_lt' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4115',
   proname => 'macaddr8_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_le' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4116',
   proname => 'macaddr8_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_gt' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4117',
   proname => 'macaddr8_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_ge' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4118',
   proname => 'macaddr8_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_ne' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4119', descr => 'less-equal-greater',
   proname => 'macaddr8_cmp', prorettype => 'int4',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_cmp' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4120',
   proname => 'macaddr8_not', prorettype => 'macaddr8',
-  proargtypes => 'macaddr8', prosrc => 'macaddr8_not' },
+  proargtypes => 'macaddr8' },
 { oid => '4121',
   proname => 'macaddr8_and', prorettype => 'macaddr8',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_and' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4122',
   proname => 'macaddr8_or', prorettype => 'macaddr8',
-  proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_or' },
+  proargtypes => 'macaddr8 macaddr8' },
 { oid => '4123', descr => 'convert macaddr to macaddr8',
   proname => 'macaddr8', prorettype => 'macaddr8', proargtypes => 'macaddr',
   prosrc => 'macaddrtomacaddr8' },
@@ -3939,67 +3555,57 @@
   prosrc => 'macaddr8tomacaddr' },
 { oid => '4125', descr => 'set 7th bit in macaddr8',
   proname => 'macaddr8_set7bit', prorettype => 'macaddr8',
-  proargtypes => 'macaddr8', prosrc => 'macaddr8_set7bit' },
+  proargtypes => 'macaddr8' },
 
 # for inet type support
 { oid => '910', descr => 'I/O',
-  proname => 'inet_in', prorettype => 'inet', proargtypes => 'cstring',
-  prosrc => 'inet_in' },
+  proname => 'inet_in', prorettype => 'inet', proargtypes => 'cstring' },
 { oid => '911', descr => 'I/O',
-  proname => 'inet_out', prorettype => 'cstring', proargtypes => 'inet',
-  prosrc => 'inet_out' },
+  proname => 'inet_out', prorettype => 'cstring', proargtypes => 'inet' },
 
 # for cidr type support
 { oid => '1267', descr => 'I/O',
-  proname => 'cidr_in', prorettype => 'cidr', proargtypes => 'cstring',
-  prosrc => 'cidr_in' },
+  proname => 'cidr_in', prorettype => 'cidr', proargtypes => 'cstring' },
 { oid => '1427', descr => 'I/O',
-  proname => 'cidr_out', prorettype => 'cstring', proargtypes => 'cidr',
-  prosrc => 'cidr_out' },
+  proname => 'cidr_out', prorettype => 'cstring', proargtypes => 'cidr' },
 
 # these are used for both inet and cidr
 { oid => '920',
   proname => 'network_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_eq' },
+  proargtypes => 'inet inet' },
 { oid => '921',
   proname => 'network_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_lt' },
+  proargtypes => 'inet inet' },
 { oid => '922',
   proname => 'network_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_le' },
+  proargtypes => 'inet inet' },
 { oid => '923',
   proname => 'network_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_gt' },
+  proargtypes => 'inet inet' },
 { oid => '924',
   proname => 'network_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_ge' },
+  proargtypes => 'inet inet' },
 { oid => '925',
   proname => 'network_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_ne' },
+  proargtypes => 'inet inet' },
 { oid => '3562', descr => 'larger of two',
-  proname => 'network_larger', prorettype => 'inet', proargtypes => 'inet inet',
-  prosrc => 'network_larger' },
+  proname => 'network_larger', prorettype => 'inet', proargtypes => 'inet inet' },
 { oid => '3563', descr => 'smaller of two',
   proname => 'network_smaller', prorettype => 'inet',
-  proargtypes => 'inet inet', prosrc => 'network_smaller' },
+  proargtypes => 'inet inet' },
 { oid => '926', descr => 'less-equal-greater',
-  proname => 'network_cmp', prorettype => 'int4', proargtypes => 'inet inet',
-  prosrc => 'network_cmp' },
+  proname => 'network_cmp', prorettype => 'int4', proargtypes => 'inet inet' },
 { oid => '927',
-  proname => 'network_sub', prorettype => 'bool', proargtypes => 'inet inet',
-  prosrc => 'network_sub' },
+  proname => 'network_sub', prorettype => 'bool', proargtypes => 'inet inet' },
 { oid => '928',
-  proname => 'network_subeq', prorettype => 'bool', proargtypes => 'inet inet',
-  prosrc => 'network_subeq' },
+  proname => 'network_subeq', prorettype => 'bool', proargtypes => 'inet inet' },
 { oid => '929',
-  proname => 'network_sup', prorettype => 'bool', proargtypes => 'inet inet',
-  prosrc => 'network_sup' },
+  proname => 'network_sup', prorettype => 'bool', proargtypes => 'inet inet' },
 { oid => '930',
-  proname => 'network_supeq', prorettype => 'bool', proargtypes => 'inet inet',
-  prosrc => 'network_supeq' },
+  proname => 'network_supeq', prorettype => 'bool', proargtypes => 'inet inet' },
 { oid => '3551',
   proname => 'network_overlap', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'network_overlap' },
+  proargtypes => 'inet inet' },
 
 # inet/cidr functions
 { oid => '598', descr => 'abbreviated display of inet value',
@@ -4044,154 +3650,135 @@
 
 { oid => '2196', descr => 'inet address of the client',
   proname => 'inet_client_addr', proisstrict => 'f', provolatile => 's',
-  proparallel => 'r', prorettype => 'inet', proargtypes => '',
-  prosrc => 'inet_client_addr' },
+  proparallel => 'r', prorettype => 'inet', proargtypes => '' },
 { oid => '2197', descr => 'client\'s port number for this connection',
   proname => 'inet_client_port', proisstrict => 'f', provolatile => 's',
-  proparallel => 'r', prorettype => 'int4', proargtypes => '',
-  prosrc => 'inet_client_port' },
+  proparallel => 'r', prorettype => 'int4', proargtypes => '' },
 { oid => '2198', descr => 'inet address of the server',
   proname => 'inet_server_addr', proisstrict => 'f', provolatile => 's',
-  prorettype => 'inet', proargtypes => '', prosrc => 'inet_server_addr' },
+  prorettype => 'inet', proargtypes => '' },
 { oid => '2199', descr => 'server\'s port number for this connection',
   proname => 'inet_server_port', proisstrict => 'f', provolatile => 's',
-  prorettype => 'int4', proargtypes => '', prosrc => 'inet_server_port' },
+  prorettype => 'int4', proargtypes => '' },
 
 { oid => '2627',
-  proname => 'inetnot', prorettype => 'inet', proargtypes => 'inet',
-  prosrc => 'inetnot' },
+  proname => 'inetnot', prorettype => 'inet', proargtypes => 'inet' },
 { oid => '2628',
-  proname => 'inetand', prorettype => 'inet', proargtypes => 'inet inet',
-  prosrc => 'inetand' },
+  proname => 'inetand', prorettype => 'inet', proargtypes => 'inet inet' },
 { oid => '2629',
-  proname => 'inetor', prorettype => 'inet', proargtypes => 'inet inet',
-  prosrc => 'inetor' },
+  proname => 'inetor', prorettype => 'inet', proargtypes => 'inet inet' },
 { oid => '2630',
-  proname => 'inetpl', prorettype => 'inet', proargtypes => 'inet int8',
-  prosrc => 'inetpl' },
+  proname => 'inetpl', prorettype => 'inet', proargtypes => 'inet int8' },
 { oid => '2631',
   proname => 'int8pl_inet', prolang => '14', prorettype => 'inet',
   proargtypes => 'int8 inet', prosrc => 'select $2 + $1' },
 { oid => '2632',
-  proname => 'inetmi_int8', prorettype => 'inet', proargtypes => 'inet int8',
-  prosrc => 'inetmi_int8' },
+  proname => 'inetmi_int8', prorettype => 'inet', proargtypes => 'inet int8' },
 { oid => '2633',
-  proname => 'inetmi', prorettype => 'int8', proargtypes => 'inet inet',
-  prosrc => 'inetmi' },
+  proname => 'inetmi', prorettype => 'int8', proargtypes => 'inet inet' },
 { oid => '4071', descr => 'are the addresses from the same family?',
   proname => 'inet_same_family', prorettype => 'bool',
-  proargtypes => 'inet inet', prosrc => 'inet_same_family' },
+  proargtypes => 'inet inet' },
 { oid => '4063',
   descr => 'the smallest network which includes both of the given networks',
-  proname => 'inet_merge', prorettype => 'cidr', proargtypes => 'inet inet',
-  prosrc => 'inet_merge' },
+  proname => 'inet_merge', prorettype => 'cidr', proargtypes => 'inet inet' },
 
 # GiST support for inet and cidr
 { oid => '3553', descr => 'GiST support',
   proname => 'inet_gist_consistent', prorettype => 'bool',
-  proargtypes => 'internal inet int2 oid internal',
-  prosrc => 'inet_gist_consistent' },
+  proargtypes => 'internal inet int2 oid internal' },
 { oid => '3554', descr => 'GiST support',
   proname => 'inet_gist_union', prorettype => 'inet',
-  proargtypes => 'internal internal', prosrc => 'inet_gist_union' },
+  proargtypes => 'internal internal' },
 { oid => '3555', descr => 'GiST support',
   proname => 'inet_gist_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'inet_gist_compress' },
+  proargtypes => 'internal' },
 { oid => '3573', descr => 'GiST support',
   proname => 'inet_gist_fetch', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'inet_gist_fetch' },
+  proargtypes => 'internal' },
 { oid => '3557', descr => 'GiST support',
   proname => 'inet_gist_penalty', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'inet_gist_penalty' },
+  proargtypes => 'internal internal internal' },
 { oid => '3558', descr => 'GiST support',
   proname => 'inet_gist_picksplit', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'inet_gist_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3559', descr => 'GiST support',
   proname => 'inet_gist_same', prorettype => 'internal',
-  proargtypes => 'inet inet internal', prosrc => 'inet_gist_same' },
+  proargtypes => 'inet inet internal' },
 
 # SP-GiST support for inet and cidr
 { oid => '3795', descr => 'SP-GiST support',
   proname => 'inet_spg_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'inet_spg_config' },
+  proargtypes => 'internal internal' },
 { oid => '3796', descr => 'SP-GiST support',
   proname => 'inet_spg_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'inet_spg_choose' },
+  proargtypes => 'internal internal' },
 { oid => '3797', descr => 'SP-GiST support',
   proname => 'inet_spg_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'inet_spg_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3798', descr => 'SP-GiST support',
   proname => 'inet_spg_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'inet_spg_inner_consistent' },
+  proargtypes => 'internal internal' },
 { oid => '3799', descr => 'SP-GiST support',
   proname => 'inet_spg_leaf_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal', prosrc => 'inet_spg_leaf_consistent' },
+  proargtypes => 'internal internal' },
 
 # Selectivity estimation for inet and cidr
 { oid => '3560', descr => 'restriction selectivity for network operators',
   proname => 'networksel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'networksel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '3561', descr => 'join selectivity for network operators',
   proname => 'networkjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'networkjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 { oid => '1690',
   proname => 'time_mi_time', prorettype => 'interval',
-  proargtypes => 'time time', prosrc => 'time_mi_time' },
+  proargtypes => 'time time' },
 
 { oid => '1691',
   proname => 'boolle', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boolle' },
+  proargtypes => 'bool bool' },
 { oid => '1692',
   proname => 'boolge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boolge' },
+  proargtypes => 'bool bool' },
 { oid => '1693', descr => 'less-equal-greater',
-  proname => 'btboolcmp', prorettype => 'int4', proargtypes => 'bool bool',
-  prosrc => 'btboolcmp' },
+  proname => 'btboolcmp', prorettype => 'int4', proargtypes => 'bool bool' },
 
 { oid => '1688', descr => 'hash',
-  proname => 'time_hash', prorettype => 'int4', proargtypes => 'time',
-  prosrc => 'time_hash' },
+  proname => 'time_hash', prorettype => 'int4', proargtypes => 'time' },
 { oid => '3409', descr => 'hash',
   proname => 'time_hash_extended', prorettype => 'int8',
-  proargtypes => 'time int8', prosrc => 'time_hash_extended' },
+  proargtypes => 'time int8' },
 { oid => '1696', descr => 'hash',
-  proname => 'timetz_hash', prorettype => 'int4', proargtypes => 'timetz',
-  prosrc => 'timetz_hash' },
+  proname => 'timetz_hash', prorettype => 'int4', proargtypes => 'timetz' },
 { oid => '3410', descr => 'hash',
   proname => 'timetz_hash_extended', prorettype => 'int8',
-  proargtypes => 'timetz int8', prosrc => 'timetz_hash_extended' },
+  proargtypes => 'timetz int8' },
 { oid => '1697', descr => 'hash',
-  proname => 'interval_hash', prorettype => 'int4', proargtypes => 'interval',
-  prosrc => 'interval_hash' },
+  proname => 'interval_hash', prorettype => 'int4', proargtypes => 'interval' },
 { oid => '3418', descr => 'hash',
   proname => 'interval_hash_extended', prorettype => 'int8',
-  proargtypes => 'interval int8', prosrc => 'interval_hash_extended' },
+  proargtypes => 'interval int8' },
 
 # OID's 1700 - 1799 NUMERIC data type
 
 { oid => '1701', descr => 'I/O',
   proname => 'numeric_in', prorettype => 'numeric',
-  proargtypes => 'cstring oid int4', prosrc => 'numeric_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '1702', descr => 'I/O',
-  proname => 'numeric_out', prorettype => 'cstring', proargtypes => 'numeric',
-  prosrc => 'numeric_out' },
+  proname => 'numeric_out', prorettype => 'cstring', proargtypes => 'numeric' },
 { oid => '2917', descr => 'I/O typmod',
-  proname => 'numerictypmodin', prorettype => 'int4', proargtypes => '_cstring',
-  prosrc => 'numerictypmodin' },
+  proname => 'numerictypmodin', prorettype => 'int4', proargtypes => '_cstring' },
 { oid => '2918', descr => 'I/O typmod',
-  proname => 'numerictypmodout', prorettype => 'cstring', proargtypes => 'int4',
-  prosrc => 'numerictypmodout' },
+  proname => 'numerictypmodout', prorettype => 'cstring', proargtypes => 'int4' },
 { oid => '3157', descr => 'transform a numeric length coercion',
   proname => 'numeric_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'numeric_transform' },
+  proargtypes => 'internal' },
 { oid => '1703', descr => 'adjust numeric to typmod precision/scale',
   proname => 'numeric', protransform => 'numeric_transform',
-  prorettype => 'numeric', proargtypes => 'numeric int4', prosrc => 'numeric' },
+  prorettype => 'numeric', proargtypes => 'numeric int4' },
 { oid => '1704',
-  proname => 'numeric_abs', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_abs' },
+  proname => 'numeric_abs', prorettype => 'numeric', proargtypes => 'numeric' },
 { oid => '1705', descr => 'absolute value',
   proname => 'abs', prorettype => 'numeric', proargtypes => 'numeric',
   prosrc => 'numeric_abs' },
@@ -4221,64 +3808,61 @@
   prosrc => 'numeric_floor' },
 { oid => '1718',
   proname => 'numeric_eq', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_eq' },
+  proargtypes => 'numeric numeric' },
 { oid => '1719',
   proname => 'numeric_ne', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_ne' },
+  proargtypes => 'numeric numeric' },
 { oid => '1720',
   proname => 'numeric_gt', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_gt' },
+  proargtypes => 'numeric numeric' },
 { oid => '1721',
   proname => 'numeric_ge', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_ge' },
+  proargtypes => 'numeric numeric' },
 { oid => '1722',
   proname => 'numeric_lt', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_lt' },
+  proargtypes => 'numeric numeric' },
 { oid => '1723',
   proname => 'numeric_le', prorettype => 'bool',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_le' },
+  proargtypes => 'numeric numeric' },
 { oid => '1724',
   proname => 'numeric_add', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_add' },
+  proargtypes => 'numeric numeric' },
 { oid => '1725',
   proname => 'numeric_sub', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_sub' },
+  proargtypes => 'numeric numeric' },
 { oid => '1726',
   proname => 'numeric_mul', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_mul' },
+  proargtypes => 'numeric numeric' },
 { oid => '1727',
   proname => 'numeric_div', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_div' },
+  proargtypes => 'numeric numeric' },
 { oid => '1728', descr => 'modulus',
   proname => 'mod', prorettype => 'numeric', proargtypes => 'numeric numeric',
   prosrc => 'numeric_mod' },
 { oid => '1729',
   proname => 'numeric_mod', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_mod' },
+  proargtypes => 'numeric numeric' },
 { oid => '1730', descr => 'square root',
   proname => 'sqrt', prorettype => 'numeric', proargtypes => 'numeric',
   prosrc => 'numeric_sqrt' },
 { oid => '1731', descr => 'square root',
-  proname => 'numeric_sqrt', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_sqrt' },
+  proname => 'numeric_sqrt', prorettype => 'numeric', proargtypes => 'numeric' },
 { oid => '1732', descr => 'natural exponential (e^x)',
   proname => 'exp', prorettype => 'numeric', proargtypes => 'numeric',
   prosrc => 'numeric_exp' },
 { oid => '1733', descr => 'natural exponential (e^x)',
-  proname => 'numeric_exp', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_exp' },
+  proname => 'numeric_exp', prorettype => 'numeric', proargtypes => 'numeric' },
 { oid => '1734', descr => 'natural logarithm',
   proname => 'ln', prorettype => 'numeric', proargtypes => 'numeric',
   prosrc => 'numeric_ln' },
 { oid => '1735', descr => 'natural logarithm',
-  proname => 'numeric_ln', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_ln' },
+  proname => 'numeric_ln', prorettype => 'numeric', proargtypes => 'numeric' },
 { oid => '1736', descr => 'logarithm base m of n',
   proname => 'log', prorettype => 'numeric', proargtypes => 'numeric numeric',
   prosrc => 'numeric_log' },
 { oid => '1737', descr => 'logarithm base m of n',
   proname => 'numeric_log', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_log' },
+  proargtypes => 'numeric numeric' },
 { oid => '1738', descr => 'exponentiation',
   proname => 'pow', prorettype => 'numeric', proargtypes => 'numeric numeric',
   prosrc => 'numeric_power' },
@@ -4287,7 +3871,7 @@
   prosrc => 'numeric_power' },
 { oid => '1739',
   proname => 'numeric_power', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_power' },
+  proargtypes => 'numeric numeric' },
 { oid => '3281', descr => 'number of decimal digits in the fractional part',
   proname => 'scale', prorettype => 'int4', proargtypes => 'numeric',
   prosrc => 'numeric_scale' },
@@ -4317,7 +3901,7 @@
   prosrc => 'numeric_div_trunc' },
 { oid => '1980', descr => 'trunc(x/y)',
   proname => 'numeric_div_trunc', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_div_trunc' },
+  proargtypes => 'numeric numeric' },
 { oid => '2170', descr => 'bucket number of operand in equal-width histogram',
   proname => 'width_bucket', prorettype => 'int4',
   proargtypes => 'numeric numeric numeric int4',
@@ -4325,35 +3909,34 @@
 
 { oid => '1747',
   proname => 'time_pl_interval', prorettype => 'time',
-  proargtypes => 'time interval', prosrc => 'time_pl_interval' },
+  proargtypes => 'time interval' },
 { oid => '1748',
   proname => 'time_mi_interval', prorettype => 'time',
-  proargtypes => 'time interval', prosrc => 'time_mi_interval' },
+  proargtypes => 'time interval' },
 { oid => '1749',
   proname => 'timetz_pl_interval', prorettype => 'timetz',
-  proargtypes => 'timetz interval', prosrc => 'timetz_pl_interval' },
+  proargtypes => 'timetz interval' },
 { oid => '1750',
   proname => 'timetz_mi_interval', prorettype => 'timetz',
-  proargtypes => 'timetz interval', prosrc => 'timetz_mi_interval' },
+  proargtypes => 'timetz interval' },
 
 { oid => '1764', descr => 'increment by one',
-  proname => 'numeric_inc', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_inc' },
+  proname => 'numeric_inc', prorettype => 'numeric', proargtypes => 'numeric' },
 { oid => '1766', descr => 'smaller of two',
   proname => 'numeric_smaller', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_smaller' },
+  proargtypes => 'numeric numeric' },
 { oid => '1767', descr => 'larger of two',
   proname => 'numeric_larger', prorettype => 'numeric',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_larger' },
+  proargtypes => 'numeric numeric' },
 { oid => '1769', descr => 'less-equal-greater',
   proname => 'numeric_cmp', prorettype => 'int4',
-  proargtypes => 'numeric numeric', prosrc => 'numeric_cmp' },
+  proargtypes => 'numeric numeric' },
 { oid => '3283', descr => 'sort support',
   proname => 'numeric_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'numeric_sortsupport' },
+  proargtypes => 'internal' },
 { oid => '1771',
   proname => 'numeric_uminus', prorettype => 'numeric',
-  proargtypes => 'numeric', prosrc => 'numeric_uminus' },
+  proargtypes => 'numeric' },
 { oid => '1779', descr => 'convert numeric to int8',
   proname => 'int8', prorettype => 'int8', proargtypes => 'numeric',
   prosrc => 'numeric_int8' },
@@ -4413,20 +3996,18 @@
   proargtypes => 'text text', prosrc => 'numeric_to_number' },
 { oid => '1778', descr => 'convert text to timestamp with time zone',
   proname => 'to_timestamp', provolatile => 's', prorettype => 'timestamptz',
-  proargtypes => 'text text', prosrc => 'to_timestamp' },
+  proargtypes => 'text text' },
 { oid => '1780', descr => 'convert text to date',
   proname => 'to_date', provolatile => 's', prorettype => 'date',
-  proargtypes => 'text text', prosrc => 'to_date' },
+  proargtypes => 'text text' },
 { oid => '1768', descr => 'format interval to text',
   proname => 'to_char', provolatile => 's', prorettype => 'text',
   proargtypes => 'interval text', prosrc => 'interval_to_char' },
 
 { oid => '1282', descr => 'quote an identifier for usage in a querystring',
-  proname => 'quote_ident', prorettype => 'text', proargtypes => 'text',
-  prosrc => 'quote_ident' },
+  proname => 'quote_ident', prorettype => 'text', proargtypes => 'text' },
 { oid => '1283', descr => 'quote a literal for usage in a querystring',
-  proname => 'quote_literal', prorettype => 'text', proargtypes => 'text',
-  prosrc => 'quote_literal' },
+  proname => 'quote_literal', prorettype => 'text', proargtypes => 'text' },
 { oid => '1285', descr => 'quote a data value for usage in a querystring',
   proname => 'quote_literal', prolang => '14', provolatile => 's',
   prorettype => 'text', proargtypes => 'anyelement',
@@ -4434,7 +4015,7 @@
 { oid => '1289',
   descr => 'quote a possibly-null literal for usage in a querystring',
   proname => 'quote_nullable', proisstrict => 'f', prorettype => 'text',
-  proargtypes => 'text', prosrc => 'quote_nullable' },
+  proargtypes => 'text' },
 { oid => '1290',
   descr => 'quote a possibly-null data value for usage in a querystring',
   proname => 'quote_nullable', prolang => '14', proisstrict => 'f',
@@ -4442,11 +4023,9 @@
   prosrc => 'select pg_catalog.quote_nullable($1::pg_catalog.text)' },
 
 { oid => '1798', descr => 'I/O',
-  proname => 'oidin', prorettype => 'oid', proargtypes => 'cstring',
-  prosrc => 'oidin' },
+  proname => 'oidin', prorettype => 'oid', proargtypes => 'cstring' },
 { oid => '1799', descr => 'I/O',
-  proname => 'oidout', prorettype => 'cstring', proargtypes => 'oid',
-  prosrc => 'oidout' },
+  proname => 'oidout', prorettype => 'cstring', proargtypes => 'oid' },
 
 { oid => '3058', descr => 'concatenate values',
   proname => 'concat', provariadic => 'any', proisstrict => 'f',
@@ -4488,302 +4067,279 @@
 # Selectivity estimators for LIKE and related operators
 { oid => '1814', descr => 'restriction selectivity of ILIKE',
   proname => 'iclikesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'iclikesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1815', descr => 'restriction selectivity of NOT ILIKE',
   proname => 'icnlikesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'icnlikesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1816', descr => 'join selectivity of ILIKE',
   proname => 'iclikejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'iclikejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1817', descr => 'join selectivity of NOT ILIKE',
   proname => 'icnlikejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'icnlikejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1818', descr => 'restriction selectivity of regex match',
   proname => 'regexeqsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'regexeqsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1819', descr => 'restriction selectivity of LIKE',
   proname => 'likesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'likesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1820',
   descr => 'restriction selectivity of case-insensitive regex match',
   proname => 'icregexeqsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'icregexeqsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1821', descr => 'restriction selectivity of regex non-match',
   proname => 'regexnesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'regexnesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1822', descr => 'restriction selectivity of NOT LIKE',
   proname => 'nlikesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'nlikesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1823',
   descr => 'restriction selectivity of case-insensitive regex non-match',
   proname => 'icregexnesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'icregexnesel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '1824', descr => 'join selectivity of regex match',
   proname => 'regexeqjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'regexeqjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1825', descr => 'join selectivity of LIKE',
   proname => 'likejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'likejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1826', descr => 'join selectivity of case-insensitive regex match',
   proname => 'icregexeqjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'icregexeqjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1827', descr => 'join selectivity of regex non-match',
   proname => 'regexnejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'regexnejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1828', descr => 'join selectivity of NOT LIKE',
   proname => 'nlikejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'nlikejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '1829',
   descr => 'join selectivity of case-insensitive regex non-match',
   proname => 'icregexnejoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'icregexnejoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '3437', descr => 'restriction selectivity of exact prefix',
   proname => 'prefixsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'prefixsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '3438', descr => 'join selectivity of exact prefix',
   proname => 'prefixjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'prefixjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 
 # Aggregate-related functions
 { oid => '1830', descr => 'aggregate final function',
-  proname => 'float8_avg', prorettype => 'float8', proargtypes => '_float8',
-  prosrc => 'float8_avg' },
+  proname => 'float8_avg', prorettype => 'float8', proargtypes => '_float8' },
 { oid => '2512', descr => 'aggregate final function',
-  proname => 'float8_var_pop', prorettype => 'float8', proargtypes => '_float8',
-  prosrc => 'float8_var_pop' },
+  proname => 'float8_var_pop', prorettype => 'float8', proargtypes => '_float8' },
 { oid => '1831', descr => 'aggregate final function',
   proname => 'float8_var_samp', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_var_samp' },
+  proargtypes => '_float8' },
 { oid => '2513', descr => 'aggregate final function',
   proname => 'float8_stddev_pop', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_stddev_pop' },
+  proargtypes => '_float8' },
 { oid => '1832', descr => 'aggregate final function',
   proname => 'float8_stddev_samp', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_stddev_samp' },
+  proargtypes => '_float8' },
 { oid => '1833', descr => 'aggregate transition function',
   proname => 'numeric_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal numeric', prosrc => 'numeric_accum' },
+  proargtypes => 'internal numeric' },
 { oid => '3341', descr => 'aggregate combine function',
   proname => 'numeric_combine', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'numeric_combine' },
+  proargtypes => 'internal internal' },
 { oid => '2858', descr => 'aggregate transition function',
   proname => 'numeric_avg_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal numeric', prosrc => 'numeric_avg_accum' },
+  proargtypes => 'internal numeric' },
 { oid => '3337', descr => 'aggregate combine function',
   proname => 'numeric_avg_combine', proisstrict => 'f',
-  prorettype => 'internal', proargtypes => 'internal internal',
-  prosrc => 'numeric_avg_combine' },
+  prorettype => 'internal', proargtypes => 'internal internal' },
 { oid => '2740', descr => 'aggregate serial function',
   proname => 'numeric_avg_serialize', prorettype => 'bytea',
-  proargtypes => 'internal', prosrc => 'numeric_avg_serialize' },
+  proargtypes => 'internal' },
 { oid => '2741', descr => 'aggregate deserial function',
   proname => 'numeric_avg_deserialize', prorettype => 'internal',
-  proargtypes => 'bytea internal', prosrc => 'numeric_avg_deserialize' },
+  proargtypes => 'bytea internal' },
 { oid => '3335', descr => 'aggregate serial function',
   proname => 'numeric_serialize', prorettype => 'bytea',
-  proargtypes => 'internal', prosrc => 'numeric_serialize' },
+  proargtypes => 'internal' },
 { oid => '3336', descr => 'aggregate deserial function',
   proname => 'numeric_deserialize', prorettype => 'internal',
-  proargtypes => 'bytea internal', prosrc => 'numeric_deserialize' },
+  proargtypes => 'bytea internal' },
 { oid => '3548', descr => 'aggregate transition function',
   proname => 'numeric_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal numeric', prosrc => 'numeric_accum_inv' },
+  proargtypes => 'internal numeric' },
 { oid => '1834', descr => 'aggregate transition function',
   proname => 'int2_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int2', prosrc => 'int2_accum' },
+  proargtypes => 'internal int2' },
 { oid => '1835', descr => 'aggregate transition function',
   proname => 'int4_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int4', prosrc => 'int4_accum' },
+  proargtypes => 'internal int4' },
 { oid => '1836', descr => 'aggregate transition function',
   proname => 'int8_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int8', prosrc => 'int8_accum' },
+  proargtypes => 'internal int8' },
 { oid => '3338', descr => 'aggregate combine function',
   proname => 'numeric_poly_combine', proisstrict => 'f',
-  prorettype => 'internal', proargtypes => 'internal internal',
-  prosrc => 'numeric_poly_combine' },
+  prorettype => 'internal', proargtypes => 'internal internal' },
 { oid => '3339', descr => 'aggregate serial function',
   proname => 'numeric_poly_serialize', prorettype => 'bytea',
-  proargtypes => 'internal', prosrc => 'numeric_poly_serialize' },
+  proargtypes => 'internal' },
 { oid => '3340', descr => 'aggregate deserial function',
   proname => 'numeric_poly_deserialize', prorettype => 'internal',
-  proargtypes => 'bytea internal', prosrc => 'numeric_poly_deserialize' },
+  proargtypes => 'bytea internal' },
 { oid => '2746', descr => 'aggregate transition function',
   proname => 'int8_avg_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int8', prosrc => 'int8_avg_accum' },
+  proargtypes => 'internal int8' },
 { oid => '3567', descr => 'aggregate transition function',
   proname => 'int2_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int2', prosrc => 'int2_accum_inv' },
+  proargtypes => 'internal int2' },
 { oid => '3568', descr => 'aggregate transition function',
   proname => 'int4_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int4', prosrc => 'int4_accum_inv' },
+  proargtypes => 'internal int4' },
 { oid => '3569', descr => 'aggregate transition function',
   proname => 'int8_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int8', prosrc => 'int8_accum_inv' },
+  proargtypes => 'internal int8' },
 { oid => '3387', descr => 'aggregate transition function',
   proname => 'int8_avg_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal int8', prosrc => 'int8_avg_accum_inv' },
+  proargtypes => 'internal int8' },
 { oid => '2785', descr => 'aggregate combine function',
   proname => 'int8_avg_combine', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'int8_avg_combine' },
+  proargtypes => 'internal internal' },
 { oid => '2786', descr => 'aggregate serial function',
   proname => 'int8_avg_serialize', prorettype => 'bytea',
-  proargtypes => 'internal', prosrc => 'int8_avg_serialize' },
+  proargtypes => 'internal' },
 { oid => '2787', descr => 'aggregate deserial function',
   proname => 'int8_avg_deserialize', prorettype => 'internal',
-  proargtypes => 'bytea internal', prosrc => 'int8_avg_deserialize' },
+  proargtypes => 'bytea internal' },
 { oid => '3324', descr => 'aggregate combine function',
   proname => 'int4_avg_combine', prorettype => '_int8',
-  proargtypes => '_int8 _int8', prosrc => 'int4_avg_combine' },
+  proargtypes => '_int8 _int8' },
 { oid => '3178', descr => 'aggregate final function',
   proname => 'numeric_sum', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_sum' },
+  proargtypes => 'internal' },
 { oid => '1837', descr => 'aggregate final function',
   proname => 'numeric_avg', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_avg' },
+  proargtypes => 'internal' },
 { oid => '2514', descr => 'aggregate final function',
   proname => 'numeric_var_pop', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_var_pop' },
+  proargtypes => 'internal' },
 { oid => '1838', descr => 'aggregate final function',
   proname => 'numeric_var_samp', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_var_samp' },
+  proargtypes => 'internal' },
 { oid => '2596', descr => 'aggregate final function',
   proname => 'numeric_stddev_pop', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_stddev_pop' },
+  proargtypes => 'internal' },
 { oid => '1839', descr => 'aggregate final function',
   proname => 'numeric_stddev_samp', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_stddev_samp' },
+  proargtypes => 'internal' },
 { oid => '1840', descr => 'aggregate transition function',
   proname => 'int2_sum', proisstrict => 'f', prorettype => 'int8',
-  proargtypes => 'int8 int2', prosrc => 'int2_sum' },
+  proargtypes => 'int8 int2' },
 { oid => '1841', descr => 'aggregate transition function',
   proname => 'int4_sum', proisstrict => 'f', prorettype => 'int8',
-  proargtypes => 'int8 int4', prosrc => 'int4_sum' },
+  proargtypes => 'int8 int4' },
 { oid => '1842', descr => 'aggregate transition function',
   proname => 'int8_sum', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'numeric int8', prosrc => 'int8_sum' },
+  proargtypes => 'numeric int8' },
 { oid => '3388', descr => 'aggregate final function',
   proname => 'numeric_poly_sum', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_poly_sum' },
+  proargtypes => 'internal' },
 { oid => '3389', descr => 'aggregate final function',
   proname => 'numeric_poly_avg', proisstrict => 'f', prorettype => 'numeric',
-  proargtypes => 'internal', prosrc => 'numeric_poly_avg' },
+  proargtypes => 'internal' },
 { oid => '3390', descr => 'aggregate final function',
   proname => 'numeric_poly_var_pop', proisstrict => 'f',
-  prorettype => 'numeric', proargtypes => 'internal',
-  prosrc => 'numeric_poly_var_pop' },
+  prorettype => 'numeric', proargtypes => 'internal' },
 { oid => '3391', descr => 'aggregate final function',
   proname => 'numeric_poly_var_samp', proisstrict => 'f',
-  prorettype => 'numeric', proargtypes => 'internal',
-  prosrc => 'numeric_poly_var_samp' },
+  prorettype => 'numeric', proargtypes => 'internal' },
 { oid => '3392', descr => 'aggregate final function',
   proname => 'numeric_poly_stddev_pop', proisstrict => 'f',
-  prorettype => 'numeric', proargtypes => 'internal',
-  prosrc => 'numeric_poly_stddev_pop' },
+  prorettype => 'numeric', proargtypes => 'internal' },
 { oid => '3393', descr => 'aggregate final function',
   proname => 'numeric_poly_stddev_samp', proisstrict => 'f',
-  prorettype => 'numeric', proargtypes => 'internal',
-  prosrc => 'numeric_poly_stddev_samp' },
+  prorettype => 'numeric', proargtypes => 'internal' },
 
 { oid => '1843', descr => 'aggregate transition function',
   proname => 'interval_accum', prorettype => '_interval',
-  proargtypes => '_interval interval', prosrc => 'interval_accum' },
+  proargtypes => '_interval interval' },
 { oid => '3325', descr => 'aggregate combine function',
   proname => 'interval_combine', prorettype => '_interval',
-  proargtypes => '_interval _interval', prosrc => 'interval_combine' },
+  proargtypes => '_interval _interval' },
 { oid => '3549', descr => 'aggregate transition function',
   proname => 'interval_accum_inv', prorettype => '_interval',
-  proargtypes => '_interval interval', prosrc => 'interval_accum_inv' },
+  proargtypes => '_interval interval' },
 { oid => '1844', descr => 'aggregate final function',
   proname => 'interval_avg', prorettype => 'interval',
-  proargtypes => '_interval', prosrc => 'interval_avg' },
+  proargtypes => '_interval' },
 { oid => '1962', descr => 'aggregate transition function',
   proname => 'int2_avg_accum', prorettype => '_int8',
-  proargtypes => '_int8 int2', prosrc => 'int2_avg_accum' },
+  proargtypes => '_int8 int2' },
 { oid => '1963', descr => 'aggregate transition function',
   proname => 'int4_avg_accum', prorettype => '_int8',
-  proargtypes => '_int8 int4', prosrc => 'int4_avg_accum' },
+  proargtypes => '_int8 int4' },
 { oid => '3570', descr => 'aggregate transition function',
   proname => 'int2_avg_accum_inv', prorettype => '_int8',
-  proargtypes => '_int8 int2', prosrc => 'int2_avg_accum_inv' },
+  proargtypes => '_int8 int2' },
 { oid => '3571', descr => 'aggregate transition function',
   proname => 'int4_avg_accum_inv', prorettype => '_int8',
-  proargtypes => '_int8 int4', prosrc => 'int4_avg_accum_inv' },
+  proargtypes => '_int8 int4' },
 { oid => '1964', descr => 'aggregate final function',
-  proname => 'int8_avg', prorettype => 'numeric', proargtypes => '_int8',
-  prosrc => 'int8_avg' },
+  proname => 'int8_avg', prorettype => 'numeric', proargtypes => '_int8' },
 { oid => '3572', descr => 'aggregate final function',
-  proname => 'int2int4_sum', prorettype => 'int8', proargtypes => '_int8',
-  prosrc => 'int2int4_sum' },
+  proname => 'int2int4_sum', prorettype => 'int8', proargtypes => '_int8' },
 { oid => '2805', descr => 'aggregate transition function',
   proname => 'int8inc_float8_float8', prorettype => 'int8',
-  proargtypes => 'int8 float8 float8', prosrc => 'int8inc_float8_float8' },
+  proargtypes => 'int8 float8 float8' },
 { oid => '2806', descr => 'aggregate transition function',
   proname => 'float8_regr_accum', prorettype => '_float8',
-  proargtypes => '_float8 float8 float8', prosrc => 'float8_regr_accum' },
+  proargtypes => '_float8 float8 float8' },
 { oid => '3342', descr => 'aggregate combine function',
   proname => 'float8_regr_combine', prorettype => '_float8',
-  proargtypes => '_float8 _float8', prosrc => 'float8_regr_combine' },
+  proargtypes => '_float8 _float8' },
 { oid => '2807', descr => 'aggregate final function',
   proname => 'float8_regr_sxx', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_sxx' },
+  proargtypes => '_float8' },
 { oid => '2808', descr => 'aggregate final function',
   proname => 'float8_regr_syy', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_syy' },
+  proargtypes => '_float8' },
 { oid => '2809', descr => 'aggregate final function',
   proname => 'float8_regr_sxy', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_sxy' },
+  proargtypes => '_float8' },
 { oid => '2810', descr => 'aggregate final function',
   proname => 'float8_regr_avgx', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_avgx' },
+  proargtypes => '_float8' },
 { oid => '2811', descr => 'aggregate final function',
   proname => 'float8_regr_avgy', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_avgy' },
+  proargtypes => '_float8' },
 { oid => '2812', descr => 'aggregate final function',
-  proname => 'float8_regr_r2', prorettype => 'float8', proargtypes => '_float8',
-  prosrc => 'float8_regr_r2' },
+  proname => 'float8_regr_r2', prorettype => 'float8', proargtypes => '_float8' },
 { oid => '2813', descr => 'aggregate final function',
   proname => 'float8_regr_slope', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_slope' },
+  proargtypes => '_float8' },
 { oid => '2814', descr => 'aggregate final function',
   proname => 'float8_regr_intercept', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_regr_intercept' },
+  proargtypes => '_float8' },
 { oid => '2815', descr => 'aggregate final function',
   proname => 'float8_covar_pop', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_covar_pop' },
+  proargtypes => '_float8' },
 { oid => '2816', descr => 'aggregate final function',
   proname => 'float8_covar_samp', prorettype => 'float8',
-  proargtypes => '_float8', prosrc => 'float8_covar_samp' },
+  proargtypes => '_float8' },
 { oid => '2817', descr => 'aggregate final function',
-  proname => 'float8_corr', prorettype => 'float8', proargtypes => '_float8',
-  prosrc => 'float8_corr' },
+  proname => 'float8_corr', prorettype => 'float8', proargtypes => '_float8' },
 
 { oid => '3535', descr => 'aggregate transition function',
   proname => 'string_agg_transfn', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal text text', prosrc => 'string_agg_transfn' },
+  proargtypes => 'internal text text' },
 { oid => '3536', descr => 'aggregate final function',
   proname => 'string_agg_finalfn', proisstrict => 'f', prorettype => 'text',
-  proargtypes => 'internal', prosrc => 'string_agg_finalfn' },
+  proargtypes => 'internal' },
 { oid => '3538', descr => 'concatenate aggregate input into a string',
   proname => 'string_agg', prokind => 'a', proisstrict => 'f',
   prorettype => 'text', proargtypes => 'text text',
   prosrc => 'aggregate_dummy' },
 { oid => '3543', descr => 'aggregate transition function',
   proname => 'bytea_string_agg_transfn', proisstrict => 'f',
-  prorettype => 'internal', proargtypes => 'internal bytea bytea',
-  prosrc => 'bytea_string_agg_transfn' },
+  prorettype => 'internal', proargtypes => 'internal bytea bytea' },
 { oid => '3544', descr => 'aggregate final function',
   proname => 'bytea_string_agg_finalfn', proisstrict => 'f',
-  prorettype => 'bytea', proargtypes => 'internal',
-  prosrc => 'bytea_string_agg_finalfn' },
+  prorettype => 'bytea', proargtypes => 'internal' },
 { oid => '3545', descr => 'concatenate aggregate input into a bytea',
   proname => 'string_agg', prokind => 'a', proisstrict => 'f',
   prorettype => 'bytea', proargtypes => 'bytea bytea',
@@ -4806,117 +4362,93 @@
 
 { oid => '1850',
   proname => 'int28eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28eq' },
+  proargtypes => 'int2 int8' },
 { oid => '1851',
   proname => 'int28ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28ne' },
+  proargtypes => 'int2 int8' },
 { oid => '1852',
   proname => 'int28lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28lt' },
+  proargtypes => 'int2 int8' },
 { oid => '1853',
   proname => 'int28gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28gt' },
+  proargtypes => 'int2 int8' },
 { oid => '1854',
   proname => 'int28le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28le' },
+  proargtypes => 'int2 int8' },
 { oid => '1855',
   proname => 'int28ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int2 int8', prosrc => 'int28ge' },
+  proargtypes => 'int2 int8' },
 
 { oid => '1856',
   proname => 'int82eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82eq' },
+  proargtypes => 'int8 int2' },
 { oid => '1857',
   proname => 'int82ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82ne' },
+  proargtypes => 'int8 int2' },
 { oid => '1858',
   proname => 'int82lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82lt' },
+  proargtypes => 'int8 int2' },
 { oid => '1859',
   proname => 'int82gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82gt' },
+  proargtypes => 'int8 int2' },
 { oid => '1860',
   proname => 'int82le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82le' },
+  proargtypes => 'int8 int2' },
 { oid => '1861',
   proname => 'int82ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'int8 int2', prosrc => 'int82ge' },
+  proargtypes => 'int8 int2' },
 
 { oid => '1892',
-  proname => 'int2and', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2and' },
+  proname => 'int2and', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '1893',
-  proname => 'int2or', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2or' },
+  proname => 'int2or', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '1894',
-  proname => 'int2xor', prorettype => 'int2', proargtypes => 'int2 int2',
-  prosrc => 'int2xor' },
+  proname => 'int2xor', prorettype => 'int2', proargtypes => 'int2 int2' },
 { oid => '1895',
-  proname => 'int2not', prorettype => 'int2', proargtypes => 'int2',
-  prosrc => 'int2not' },
+  proname => 'int2not', prorettype => 'int2', proargtypes => 'int2' },
 { oid => '1896',
-  proname => 'int2shl', prorettype => 'int2', proargtypes => 'int2 int4',
-  prosrc => 'int2shl' },
+  proname => 'int2shl', prorettype => 'int2', proargtypes => 'int2 int4' },
 { oid => '1897',
-  proname => 'int2shr', prorettype => 'int2', proargtypes => 'int2 int4',
-  prosrc => 'int2shr' },
+  proname => 'int2shr', prorettype => 'int2', proargtypes => 'int2 int4' },
 
 { oid => '1898',
-  proname => 'int4and', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4and' },
+  proname => 'int4and', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '1899',
-  proname => 'int4or', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4or' },
+  proname => 'int4or', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '1900',
-  proname => 'int4xor', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4xor' },
+  proname => 'int4xor', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '1901',
-  proname => 'int4not', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'int4not' },
+  proname => 'int4not', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '1902',
-  proname => 'int4shl', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4shl' },
+  proname => 'int4shl', prorettype => 'int4', proargtypes => 'int4 int4' },
 { oid => '1903',
-  proname => 'int4shr', prorettype => 'int4', proargtypes => 'int4 int4',
-  prosrc => 'int4shr' },
+  proname => 'int4shr', prorettype => 'int4', proargtypes => 'int4 int4' },
 
 { oid => '1904',
-  proname => 'int8and', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8and' },
+  proname => 'int8and', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '1905',
-  proname => 'int8or', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8or' },
+  proname => 'int8or', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '1906',
-  proname => 'int8xor', prorettype => 'int8', proargtypes => 'int8 int8',
-  prosrc => 'int8xor' },
+  proname => 'int8xor', prorettype => 'int8', proargtypes => 'int8 int8' },
 { oid => '1907',
-  proname => 'int8not', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8not' },
+  proname => 'int8not', prorettype => 'int8', proargtypes => 'int8' },
 { oid => '1908',
-  proname => 'int8shl', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int8shl' },
+  proname => 'int8shl', prorettype => 'int8', proargtypes => 'int8 int4' },
 { oid => '1909',
-  proname => 'int8shr', prorettype => 'int8', proargtypes => 'int8 int4',
-  prosrc => 'int8shr' },
+  proname => 'int8shr', prorettype => 'int8', proargtypes => 'int8 int4' },
 
 { oid => '1910',
-  proname => 'int8up', prorettype => 'int8', proargtypes => 'int8',
-  prosrc => 'int8up' },
+  proname => 'int8up', prorettype => 'int8', proargtypes => 'int8' },
 { oid => '1911',
-  proname => 'int2up', prorettype => 'int2', proargtypes => 'int2',
-  prosrc => 'int2up' },
+  proname => 'int2up', prorettype => 'int2', proargtypes => 'int2' },
 { oid => '1912',
-  proname => 'int4up', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'int4up' },
+  proname => 'int4up', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '1913',
-  proname => 'float4up', prorettype => 'float4', proargtypes => 'float4',
-  prosrc => 'float4up' },
+  proname => 'float4up', prorettype => 'float4', proargtypes => 'float4' },
 { oid => '1914',
-  proname => 'float8up', prorettype => 'float8', proargtypes => 'float8',
-  prosrc => 'float8up' },
+  proname => 'float8up', prorettype => 'float8', proargtypes => 'float8' },
 { oid => '1915',
-  proname => 'numeric_uplus', prorettype => 'numeric', proargtypes => 'numeric',
-  prosrc => 'numeric_uplus' },
+  proname => 'numeric_uplus', prorettype => 'numeric', proargtypes => 'numeric' },
 
 { oid => '1922', descr => 'user privilege on relation by username, rel name',
   proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool',
@@ -5044,117 +4576,95 @@
 
 { oid => '3355', descr => 'I/O',
   proname => 'pg_ndistinct_in', prorettype => 'pg_ndistinct',
-  proargtypes => 'cstring', prosrc => 'pg_ndistinct_in' },
+  proargtypes => 'cstring' },
 { oid => '3356', descr => 'I/O',
   proname => 'pg_ndistinct_out', prorettype => 'cstring',
-  proargtypes => 'pg_ndistinct', prosrc => 'pg_ndistinct_out' },
+  proargtypes => 'pg_ndistinct' },
 { oid => '3357', descr => 'I/O',
   proname => 'pg_ndistinct_recv', provolatile => 's',
-  prorettype => 'pg_ndistinct', proargtypes => 'internal',
-  prosrc => 'pg_ndistinct_recv' },
+  prorettype => 'pg_ndistinct', proargtypes => 'internal' },
 { oid => '3358', descr => 'I/O',
   proname => 'pg_ndistinct_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'pg_ndistinct', prosrc => 'pg_ndistinct_send' },
+  proargtypes => 'pg_ndistinct' },
 
 { oid => '3404', descr => 'I/O',
   proname => 'pg_dependencies_in', prorettype => 'pg_dependencies',
-  proargtypes => 'cstring', prosrc => 'pg_dependencies_in' },
+  proargtypes => 'cstring' },
 { oid => '3405', descr => 'I/O',
   proname => 'pg_dependencies_out', prorettype => 'cstring',
-  proargtypes => 'pg_dependencies', prosrc => 'pg_dependencies_out' },
+  proargtypes => 'pg_dependencies' },
 { oid => '3406', descr => 'I/O',
   proname => 'pg_dependencies_recv', provolatile => 's',
-  prorettype => 'pg_dependencies', proargtypes => 'internal',
-  prosrc => 'pg_dependencies_recv' },
+  prorettype => 'pg_dependencies', proargtypes => 'internal' },
 { oid => '3407', descr => 'I/O',
   proname => 'pg_dependencies_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'pg_dependencies', prosrc => 'pg_dependencies_send' },
+  proargtypes => 'pg_dependencies' },
 
 { oid => '1928', descr => 'statistics: number of scans done for table/index',
   proname => 'pg_stat_get_numscans', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_numscans' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1929', descr => 'statistics: number of tuples read by seqscan',
   proname => 'pg_stat_get_tuples_returned', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_returned' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1930', descr => 'statistics: number of tuples fetched by idxscan',
   proname => 'pg_stat_get_tuples_fetched', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1931', descr => 'statistics: number of tuples inserted',
   proname => 'pg_stat_get_tuples_inserted', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_inserted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1932', descr => 'statistics: number of tuples updated',
   proname => 'pg_stat_get_tuples_updated', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_updated' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1933', descr => 'statistics: number of tuples deleted',
   proname => 'pg_stat_get_tuples_deleted', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_deleted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1972', descr => 'statistics: number of tuples hot updated',
   proname => 'pg_stat_get_tuples_hot_updated', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_tuples_hot_updated' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2878', descr => 'statistics: number of live tuples',
   proname => 'pg_stat_get_live_tuples', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_live_tuples' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2879', descr => 'statistics: number of dead tuples',
   proname => 'pg_stat_get_dead_tuples', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_dead_tuples' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3177',
   descr => 'statistics: number of tuples changed since last analyze',
   proname => 'pg_stat_get_mod_since_analyze', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_mod_since_analyze' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1934', descr => 'statistics: number of blocks fetched',
   proname => 'pg_stat_get_blocks_fetched', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_blocks_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1935', descr => 'statistics: number of blocks found in cache',
   proname => 'pg_stat_get_blocks_hit', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_blocks_hit' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2781', descr => 'statistics: last manual vacuum time for a table',
   proname => 'pg_stat_get_last_vacuum_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_last_vacuum_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid' },
 { oid => '2782', descr => 'statistics: last auto vacuum time for a table',
   proname => 'pg_stat_get_last_autovacuum_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_last_autovacuum_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid' },
 { oid => '2783', descr => 'statistics: last manual analyze time for a table',
   proname => 'pg_stat_get_last_analyze_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_last_analyze_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid' },
 { oid => '2784', descr => 'statistics: last auto analyze time for a table',
   proname => 'pg_stat_get_last_autoanalyze_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_last_autoanalyze_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid' },
 { oid => '3054', descr => 'statistics: number of manual vacuums for a table',
   proname => 'pg_stat_get_vacuum_count', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_vacuum_count' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3055', descr => 'statistics: number of auto vacuums for a table',
   proname => 'pg_stat_get_autovacuum_count', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_autovacuum_count' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3056', descr => 'statistics: number of manual analyzes for a table',
   proname => 'pg_stat_get_analyze_count', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_analyze_count' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3057', descr => 'statistics: number of auto analyzes for a table',
   proname => 'pg_stat_get_autoanalyze_count', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_autoanalyze_count' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1936', descr => 'statistics: currently active backend IDs',
   proname => 'pg_stat_get_backend_idset', prorows => '100', proretset => 't',
   provolatile => 's', proparallel => 'r', prorettype => 'int4',
-  proargtypes => '', prosrc => 'pg_stat_get_backend_idset' },
+  proargtypes => '' },
 { oid => '2022',
   descr => 'statistics: information about currently active backends',
   proname => 'pg_stat_get_activity', prorows => '100', proisstrict => 'f',
@@ -5162,8 +4672,7 @@
   prorettype => 'record', proargtypes => 'int4',
   proallargtypes => '{int4,oid,int4,oid,text,text,text,text,text,timestamptz,timestamptz,timestamptz,timestamptz,inet,text,int4,xid,xid,text,bool,text,text,int4,bool,text}',
   proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,sslcompression,sslclientdn}',
-  prosrc => 'pg_stat_get_activity' },
+  proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,sslcompression,sslclientdn}' },
 { oid => '3318',
   descr => 'statistics: information about progress of backends running maintenance command',
   proname => 'pg_stat_get_progress_info', prorows => '100', proretset => 't',
@@ -5171,8 +4680,7 @@
   proargtypes => 'text',
   proallargtypes => '{text,int4,oid,oid,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8}',
   proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10}',
-  prosrc => 'pg_stat_get_progress_info' },
+  proargnames => '{cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10}' },
 { oid => '3099',
   descr => 'statistics: information about currently active replication',
   proname => 'pg_stat_get_wal_senders', prorows => '10', proisstrict => 'f',
@@ -5180,341 +4688,275 @@
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{int4,text,pg_lsn,pg_lsn,pg_lsn,pg_lsn,interval,interval,interval,int4,text}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state}',
-  prosrc => 'pg_stat_get_wal_senders' },
+  proargnames => '{pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state}' },
 { oid => '3317', descr => 'statistics: information about WAL receiver',
   proname => 'pg_stat_get_wal_receiver', proisstrict => 'f', provolatile => 's',
   proparallel => 'r', prorettype => 'record', proargtypes => '',
   proallargtypes => '{int4,text,pg_lsn,int4,pg_lsn,int4,timestamptz,timestamptz,pg_lsn,timestamptz,text,text,int4,text}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{pid,status,receive_start_lsn,receive_start_tli,received_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,sender_host,sender_port,conninfo}',
-  prosrc => 'pg_stat_get_wal_receiver' },
+  proargnames => '{pid,status,receive_start_lsn,receive_start_tli,received_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,sender_host,sender_port,conninfo}' },
 { oid => '6118', descr => 'statistics: information about subscription',
   proname => 'pg_stat_get_subscription', proisstrict => 'f', provolatile => 's',
   proparallel => 'r', prorettype => 'record', proargtypes => 'oid',
   proallargtypes => '{oid,oid,oid,int4,pg_lsn,timestamptz,timestamptz,pg_lsn,timestamptz}',
   proargmodes => '{i,o,o,o,o,o,o,o,o}',
-  proargnames => '{subid,subid,relid,pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time}',
-  prosrc => 'pg_stat_get_subscription' },
+  proargnames => '{subid,subid,relid,pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time}' },
 { oid => '2026', descr => 'statistics: current backend PID',
   proname => 'pg_backend_pid', provolatile => 's', proparallel => 'r',
-  prorettype => 'int4', proargtypes => '', prosrc => 'pg_backend_pid' },
+  prorettype => 'int4', proargtypes => '' },
 { oid => '1937', descr => 'statistics: PID of backend',
   proname => 'pg_stat_get_backend_pid', provolatile => 's', proparallel => 'r',
-  prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_pid' },
+  prorettype => 'int4', proargtypes => 'int4' },
 { oid => '1938', descr => 'statistics: database ID of backend',
   proname => 'pg_stat_get_backend_dbid', provolatile => 's', proparallel => 'r',
-  prorettype => 'oid', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_dbid' },
+  prorettype => 'oid', proargtypes => 'int4' },
 { oid => '1939', descr => 'statistics: user ID of backend',
   proname => 'pg_stat_get_backend_userid', provolatile => 's',
-  proparallel => 'r', prorettype => 'oid', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_userid' },
+  proparallel => 'r', prorettype => 'oid', proargtypes => 'int4' },
 { oid => '1940', descr => 'statistics: current query of backend',
   proname => 'pg_stat_get_backend_activity', provolatile => 's',
-  proparallel => 'r', prorettype => 'text', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_activity' },
+  proparallel => 'r', prorettype => 'text', proargtypes => 'int4' },
 { oid => '2788',
   descr => 'statistics: wait event type on which backend is currently waiting',
   proname => 'pg_stat_get_backend_wait_event_type', provolatile => 's',
-  proparallel => 'r', prorettype => 'text', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_wait_event_type' },
+  proparallel => 'r', prorettype => 'text', proargtypes => 'int4' },
 { oid => '2853',
   descr => 'statistics: wait event on which backend is currently waiting',
   proname => 'pg_stat_get_backend_wait_event', provolatile => 's',
-  proparallel => 'r', prorettype => 'text', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_wait_event' },
+  proparallel => 'r', prorettype => 'text', proargtypes => 'int4' },
 { oid => '2094',
   descr => 'statistics: start time for current query of backend',
   proname => 'pg_stat_get_backend_activity_start', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_activity_start' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4' },
 { oid => '2857',
   descr => 'statistics: start time for backend\'s current transaction',
   proname => 'pg_stat_get_backend_xact_start', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_xact_start' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4' },
 { oid => '1391',
   descr => 'statistics: start time for current backend session',
   proname => 'pg_stat_get_backend_start', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_start' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4' },
 { oid => '1392',
   descr => 'statistics: address of client connected to backend',
   proname => 'pg_stat_get_backend_client_addr', provolatile => 's',
-  proparallel => 'r', prorettype => 'inet', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_client_addr' },
+  proparallel => 'r', prorettype => 'inet', proargtypes => 'int4' },
 { oid => '1393',
   descr => 'statistics: port number of client connected to backend',
   proname => 'pg_stat_get_backend_client_port', provolatile => 's',
-  proparallel => 'r', prorettype => 'int4', proargtypes => 'int4',
-  prosrc => 'pg_stat_get_backend_client_port' },
+  proparallel => 'r', prorettype => 'int4', proargtypes => 'int4' },
 { oid => '1941', descr => 'statistics: number of backends in database',
   proname => 'pg_stat_get_db_numbackends', provolatile => 's',
-  proparallel => 'r', prorettype => 'int4', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_numbackends' },
+  proparallel => 'r', prorettype => 'int4', proargtypes => 'oid' },
 { oid => '1942', descr => 'statistics: transactions committed',
   proname => 'pg_stat_get_db_xact_commit', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_xact_commit' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1943', descr => 'statistics: transactions rolled back',
   proname => 'pg_stat_get_db_xact_rollback', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_xact_rollback' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1944', descr => 'statistics: blocks fetched for database',
   proname => 'pg_stat_get_db_blocks_fetched', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_blocks_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '1945', descr => 'statistics: blocks found in cache for database',
   proname => 'pg_stat_get_db_blocks_hit', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_blocks_hit' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2758', descr => 'statistics: tuples returned for database',
   proname => 'pg_stat_get_db_tuples_returned', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_tuples_returned' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2759', descr => 'statistics: tuples fetched for database',
   proname => 'pg_stat_get_db_tuples_fetched', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_tuples_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2760', descr => 'statistics: tuples inserted in database',
   proname => 'pg_stat_get_db_tuples_inserted', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_tuples_inserted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2761', descr => 'statistics: tuples updated in database',
   proname => 'pg_stat_get_db_tuples_updated', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_tuples_updated' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2762', descr => 'statistics: tuples deleted in database',
   proname => 'pg_stat_get_db_tuples_deleted', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_tuples_deleted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3065',
   descr => 'statistics: recovery conflicts in database caused by drop tablespace',
   proname => 'pg_stat_get_db_conflict_tablespace', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_tablespace' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3066',
   descr => 'statistics: recovery conflicts in database caused by relation lock',
   proname => 'pg_stat_get_db_conflict_lock', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_lock' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3067',
   descr => 'statistics: recovery conflicts in database caused by snapshot expiry',
   proname => 'pg_stat_get_db_conflict_snapshot', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_snapshot' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3068',
   descr => 'statistics: recovery conflicts in database caused by shared buffer pin',
   proname => 'pg_stat_get_db_conflict_bufferpin', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_bufferpin' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3069',
   descr => 'statistics: recovery conflicts in database caused by buffer deadlock',
   proname => 'pg_stat_get_db_conflict_startup_deadlock', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_startup_deadlock' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3070', descr => 'statistics: recovery conflicts in database',
   proname => 'pg_stat_get_db_conflict_all', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_conflict_all' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3152', descr => 'statistics: deadlocks detected in database',
   proname => 'pg_stat_get_db_deadlocks', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_deadlocks' },
+  prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3074', descr => 'statistics: last reset for a database',
   proname => 'pg_stat_get_db_stat_reset_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_stat_reset_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid' },
 { oid => '3150', descr => 'statistics: number of temporary files written',
   proname => 'pg_stat_get_db_temp_files', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_temp_files' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3151',
   descr => 'statistics: number of bytes in temporary files written',
   proname => 'pg_stat_get_db_temp_bytes', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_temp_bytes' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2844', descr => 'statistics: block read time, in milliseconds',
   proname => 'pg_stat_get_db_blk_read_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_blk_read_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 { oid => '2845', descr => 'statistics: block write time, in milliseconds',
   proname => 'pg_stat_get_db_blk_write_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_db_blk_write_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 { oid => '3195', descr => 'statistics: information about WAL archiver',
   proname => 'pg_stat_get_archiver', proisstrict => 'f', provolatile => 's',
   proparallel => 'r', prorettype => 'record', proargtypes => '',
   proallargtypes => '{int8,text,timestamptz,int8,text,timestamptz,timestamptz}',
   proargmodes => '{o,o,o,o,o,o,o}',
-  proargnames => '{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}',
-  prosrc => 'pg_stat_get_archiver' },
+  proargnames => '{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}' },
 { oid => '2769',
   descr => 'statistics: number of timed checkpoints started by the bgwriter',
   proname => 'pg_stat_get_bgwriter_timed_checkpoints', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_timed_checkpoints' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '2770',
   descr => 'statistics: number of backend requested checkpoints started by the bgwriter',
   proname => 'pg_stat_get_bgwriter_requested_checkpoints', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_requested_checkpoints' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '2771',
   descr => 'statistics: number of buffers written by the bgwriter during checkpoints',
   proname => 'pg_stat_get_bgwriter_buf_written_checkpoints', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_buf_written_checkpoints' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '2772',
   descr => 'statistics: number of buffers written by the bgwriter for cleaning dirty buffers',
   proname => 'pg_stat_get_bgwriter_buf_written_clean', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_buf_written_clean' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '2773',
   descr => 'statistics: number of times the bgwriter stopped processing when it had written too many buffers while cleaning',
   proname => 'pg_stat_get_bgwriter_maxwritten_clean', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_maxwritten_clean' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '3075', descr => 'statistics: last reset for the bgwriter',
   proname => 'pg_stat_get_bgwriter_stat_reset_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_stat_get_bgwriter_stat_reset_time' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => '' },
 { oid => '3160',
   descr => 'statistics: checkpoint time spent writing buffers to disk, in milliseconds',
   proname => 'pg_stat_get_checkpoint_write_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => '',
-  prosrc => 'pg_stat_get_checkpoint_write_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => '' },
 { oid => '3161',
   descr => 'statistics: checkpoint time spent synchronizing buffers to disk, in milliseconds',
   proname => 'pg_stat_get_checkpoint_sync_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => '',
-  prosrc => 'pg_stat_get_checkpoint_sync_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => '' },
 { oid => '2775', descr => 'statistics: number of buffers written by backends',
   proname => 'pg_stat_get_buf_written_backend', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_buf_written_backend' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '3063',
   descr => 'statistics: number of backend buffer writes that did their own fsync',
   proname => 'pg_stat_get_buf_fsync_backend', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => '',
-  prosrc => 'pg_stat_get_buf_fsync_backend' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => '' },
 { oid => '2859', descr => 'statistics: number of buffer allocations',
   proname => 'pg_stat_get_buf_alloc', provolatile => 's', proparallel => 'r',
-  prorettype => 'int8', proargtypes => '', prosrc => 'pg_stat_get_buf_alloc' },
+  prorettype => 'int8', proargtypes => '' },
 
 { oid => '2978', descr => 'statistics: number of function calls',
   proname => 'pg_stat_get_function_calls', provolatile => 's',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_function_calls' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '2979',
   descr => 'statistics: total execution time of function, in milliseconds',
   proname => 'pg_stat_get_function_total_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_function_total_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 { oid => '2980',
   descr => 'statistics: self execution time of function, in milliseconds',
   proname => 'pg_stat_get_function_self_time', provolatile => 's',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_function_self_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 
 { oid => '3037',
   descr => 'statistics: number of scans done for table/index in current transaction',
   proname => 'pg_stat_get_xact_numscans', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_numscans' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3038',
   descr => 'statistics: number of tuples read by seqscan in current transaction',
   proname => 'pg_stat_get_xact_tuples_returned', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_returned' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3039',
   descr => 'statistics: number of tuples fetched by idxscan in current transaction',
   proname => 'pg_stat_get_xact_tuples_fetched', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3040',
   descr => 'statistics: number of tuples inserted in current transaction',
   proname => 'pg_stat_get_xact_tuples_inserted', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_inserted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3041',
   descr => 'statistics: number of tuples updated in current transaction',
   proname => 'pg_stat_get_xact_tuples_updated', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_updated' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3042',
   descr => 'statistics: number of tuples deleted in current transaction',
   proname => 'pg_stat_get_xact_tuples_deleted', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_deleted' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3043',
   descr => 'statistics: number of tuples hot updated in current transaction',
   proname => 'pg_stat_get_xact_tuples_hot_updated', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_tuples_hot_updated' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3044',
   descr => 'statistics: number of blocks fetched in current transaction',
   proname => 'pg_stat_get_xact_blocks_fetched', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_blocks_fetched' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3045',
   descr => 'statistics: number of blocks found in cache in current transaction',
   proname => 'pg_stat_get_xact_blocks_hit', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_blocks_hit' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3046',
   descr => 'statistics: number of function calls in current transaction',
   proname => 'pg_stat_get_xact_function_calls', provolatile => 'v',
-  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_function_calls' },
+  proparallel => 'r', prorettype => 'int8', proargtypes => 'oid' },
 { oid => '3047',
   descr => 'statistics: total execution time of function in current transaction, in milliseconds',
   proname => 'pg_stat_get_xact_function_total_time', provolatile => 'v',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_function_total_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 { oid => '3048',
   descr => 'statistics: self execution time of function in current transaction, in milliseconds',
   proname => 'pg_stat_get_xact_function_self_time', provolatile => 'v',
-  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
-  prosrc => 'pg_stat_get_xact_function_self_time' },
+  proparallel => 'r', prorettype => 'float8', proargtypes => 'oid' },
 
 { oid => '3788',
   descr => 'statistics: timestamp of the current statistics snapshot',
   proname => 'pg_stat_get_snapshot_timestamp', provolatile => 's',
-  proparallel => 'r', prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_stat_get_snapshot_timestamp' },
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => '' },
 { oid => '2230',
   descr => 'statistics: discard current transaction\'s statistics snapshot',
   proname => 'pg_stat_clear_snapshot', proisstrict => 'f', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => '',
-  prosrc => 'pg_stat_clear_snapshot' },
+  proparallel => 'r', prorettype => 'void', proargtypes => '' },
 { oid => '2274',
   descr => 'statistics: reset collected statistics for current database',
   proname => 'pg_stat_reset', proisstrict => 'f', provolatile => 'v',
-  prorettype => 'void', proargtypes => '', prosrc => 'pg_stat_reset' },
+  prorettype => 'void', proargtypes => '' },
 { oid => '3775',
   descr => 'statistics: reset collected statistics shared across the cluster',
   proname => 'pg_stat_reset_shared', provolatile => 'v', prorettype => 'void',
-  proargtypes => 'text', prosrc => 'pg_stat_reset_shared' },
+  proargtypes => 'text' },
 { oid => '3776',
   descr => 'statistics: reset collected statistics for a single table or index in the current database',
   proname => 'pg_stat_reset_single_table_counters', provolatile => 'v',
-  prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'pg_stat_reset_single_table_counters' },
+  prorettype => 'void', proargtypes => 'oid' },
 { oid => '3777',
   descr => 'statistics: reset collected statistics for a single function in the current database',
   proname => 'pg_stat_reset_single_function_counters', provolatile => 'v',
-  prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'pg_stat_reset_single_function_counters' },
+  prorettype => 'void', proargtypes => 'oid' },
 
 { oid => '3163', descr => 'current trigger depth',
   proname => 'pg_trigger_depth', provolatile => 's', proparallel => 'r',
-  prorettype => 'int4', proargtypes => '', prosrc => 'pg_trigger_depth' },
+  prorettype => 'int4', proargtypes => '' },
 
 { oid => '3778', descr => 'tablespace location',
   proname => 'pg_tablespace_location', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid', prosrc => 'pg_tablespace_location' },
+  proargtypes => 'oid' },
 
 { oid => '1946',
   descr => 'convert bytea value into some ascii-only text string',
@@ -5527,35 +4969,34 @@
 
 { oid => '1948',
   proname => 'byteaeq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'byteaeq' },
+  proargtypes => 'bytea bytea' },
 { oid => '1949',
   proname => 'bytealt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'bytealt' },
+  proargtypes => 'bytea bytea' },
 { oid => '1950',
   proname => 'byteale', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'byteale' },
+  proargtypes => 'bytea bytea' },
 { oid => '1951',
   proname => 'byteagt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'byteagt' },
+  proargtypes => 'bytea bytea' },
 { oid => '1952',
   proname => 'byteage', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'byteage' },
+  proargtypes => 'bytea bytea' },
 { oid => '1953',
   proname => 'byteane', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'bytea bytea', prosrc => 'byteane' },
+  proargtypes => 'bytea bytea' },
 { oid => '1954', descr => 'less-equal-greater',
-  proname => 'byteacmp', prorettype => 'int4', proargtypes => 'bytea bytea',
-  prosrc => 'byteacmp' },
+  proname => 'byteacmp', prorettype => 'int4', proargtypes => 'bytea bytea' },
 { oid => '3331', descr => 'sort support',
   proname => 'bytea_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'bytea_sortsupport' },
+  proargtypes => 'internal' },
 
 { oid => '3917', descr => 'transform a timestamp length coercion',
   proname => 'timestamp_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'timestamp_transform' },
+  proargtypes => 'internal' },
 { oid => '3944', descr => 'transform a time length coercion',
   proname => 'time_transform', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'time_transform' },
+  proargtypes => 'internal' },
 
 { oid => '1961', descr => 'adjust timestamp precision',
   proname => 'timestamp', protransform => 'timestamp_transform',
@@ -5563,11 +5004,9 @@
   prosrc => 'timestamp_scale' },
 
 { oid => '1965', descr => 'larger of two',
-  proname => 'oidlarger', prorettype => 'oid', proargtypes => 'oid oid',
-  prosrc => 'oidlarger' },
+  proname => 'oidlarger', prorettype => 'oid', proargtypes => 'oid oid' },
 { oid => '1966', descr => 'smaller of two',
-  proname => 'oidsmaller', prorettype => 'oid', proargtypes => 'oid oid',
-  prosrc => 'oidsmaller' },
+  proname => 'oidsmaller', prorettype => 'oid', proargtypes => 'oid oid' },
 
 { oid => '1967', descr => 'adjust timestamptz precision',
   proname => 'timestamptz', protransform => 'timestamp_transform',
@@ -5590,11 +5029,9 @@
   prosrc => 'select $1::pg_catalog.text || $2' },
 
 { oid => '2005',
-  proname => 'bytealike', prorettype => 'bool', proargtypes => 'bytea bytea',
-  prosrc => 'bytealike' },
+  proname => 'bytealike', prorettype => 'bool', proargtypes => 'bytea bytea' },
 { oid => '2006',
-  proname => 'byteanlike', prorettype => 'bool', proargtypes => 'bytea bytea',
-  prosrc => 'byteanlike' },
+  proname => 'byteanlike', prorettype => 'bool', proargtypes => 'bytea bytea' },
 { oid => '2007', descr => 'matches LIKE expression',
   proname => 'like', prorettype => 'bool', proargtypes => 'bytea bytea',
   prosrc => 'bytealike' },
@@ -5608,8 +5045,7 @@
   proname => 'length', prorettype => 'int4', proargtypes => 'bytea',
   prosrc => 'byteaoctetlen' },
 { oid => '2011',
-  proname => 'byteacat', prorettype => 'bytea', proargtypes => 'bytea bytea',
-  prosrc => 'byteacat' },
+  proname => 'byteacat', prorettype => 'bytea', proargtypes => 'bytea bytea' },
 { oid => '2012', descr => 'extract portion of string',
   proname => 'substring', prorettype => 'bytea',
   proargtypes => 'bytea int4 int4', prosrc => 'bytea_substr' },
@@ -5661,19 +5097,19 @@
   proargtypes => 'timestamp', prosrc => 'timestamp_abstime' },
 { oid => '2031',
   proname => 'timestamp_mi', prorettype => 'interval',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_mi' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2032',
   proname => 'timestamp_pl_interval', prorettype => 'timestamp',
-  proargtypes => 'timestamp interval', prosrc => 'timestamp_pl_interval' },
+  proargtypes => 'timestamp interval' },
 { oid => '2033',
   proname => 'timestamp_mi_interval', prorettype => 'timestamp',
-  proargtypes => 'timestamp interval', prosrc => 'timestamp_mi_interval' },
+  proargtypes => 'timestamp interval' },
 { oid => '2035', descr => 'smaller of two',
   proname => 'timestamp_smaller', prorettype => 'timestamp',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_smaller' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2036', descr => 'larger of two',
   proname => 'timestamp_larger', prorettype => 'timestamp',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_larger' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2037', descr => 'adjust time with time zone to new zone',
   proname => 'timezone', provolatile => 'v', prorettype => 'timetz',
   proargtypes => 'text timetz', prosrc => 'timetz_zone' },
@@ -5681,11 +5117,10 @@
   proname => 'timezone', prorettype => 'timetz',
   proargtypes => 'interval timetz', prosrc => 'timetz_izone' },
 { oid => '2039', descr => 'hash',
-  proname => 'timestamp_hash', prorettype => 'int4', proargtypes => 'timestamp',
-  prosrc => 'timestamp_hash' },
+  proname => 'timestamp_hash', prorettype => 'int4', proargtypes => 'timestamp' },
 { oid => '3411', descr => 'hash',
   proname => 'timestamp_hash_extended', prorettype => 'int8',
-  proargtypes => 'timestamp int8', prosrc => 'timestamp_hash_extended' },
+  proargtypes => 'timestamp int8' },
 { oid => '2041', descr => 'intervals overlap?',
   proname => 'overlaps', proisstrict => 'f', prorettype => 'bool',
   proargtypes => 'timestamp timestamp timestamp timestamp',
@@ -5704,10 +5139,10 @@
   prosrc => 'select ($1, ($1 + $2)) overlaps ($3, $4)' },
 { oid => '2045', descr => 'less-equal-greater',
   proname => 'timestamp_cmp', prorettype => 'int4',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_cmp' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '3137', descr => 'sort support',
   proname => 'timestamp_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'timestamp_sortsupport' },
+  proargtypes => 'internal' },
 
 { oid => '4134', descr => 'window RANGE support',
   proname => 'in_range', prorettype => 'bool',
@@ -5744,22 +5179,22 @@
   proargtypes => 'timestamp text', prosrc => 'timestamp_to_char' },
 { oid => '2052',
   proname => 'timestamp_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_eq' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2053',
   proname => 'timestamp_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_ne' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2054',
   proname => 'timestamp_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_lt' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2055',
   proname => 'timestamp_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_le' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2056',
   proname => 'timestamp_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_ge' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2057',
   proname => 'timestamp_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'timestamp timestamp', prosrc => 'timestamp_gt' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '2058', descr => 'date difference preserving months and years',
   proname => 'age', prorettype => 'interval',
   proargtypes => 'timestamp timestamp', prosrc => 'timestamp_age' },
@@ -5779,10 +5214,10 @@
   prosrc => 'timestamp_izone' },
 { oid => '2071',
   proname => 'date_pl_interval', prorettype => 'timestamp',
-  proargtypes => 'date interval', prosrc => 'date_pl_interval' },
+  proargtypes => 'date interval' },
 { oid => '2072',
   proname => 'date_mi_interval', prorettype => 'timestamp',
-  proargtypes => 'date interval', prosrc => 'date_mi_interval' },
+  proargtypes => 'date interval' },
 
 { oid => '2073', descr => 'extract text matching regular expression',
   proname => 'substring', prorettype => 'text', proargtypes => 'text text',
@@ -5829,56 +5264,50 @@
   provolatile => 'v', prorettype => 'record', proargtypes => '',
   proallargtypes => '{int4,text,_text,_text,text,text,text,_text,text}',
   proargmodes => '{o,o,o,o,o,o,o,o,o}',
-  proargnames => '{line_number,type,database,user_name,address,netmask,auth_method,options,error}',
-  prosrc => 'pg_hba_file_rules' },
+  proargnames => '{line_number,type,database,user_name,address,netmask,auth_method,options,error}' },
 { oid => '1371', descr => 'view system lock information',
   proname => 'pg_lock_status', prorows => '1000', proretset => 't',
   provolatile => 'v', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,oid,oid,int4,int2,text,xid,oid,oid,int2,text,int4,text,bool,bool}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath}',
-  prosrc => 'pg_lock_status' },
+  proargnames => '{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath}' },
 { oid => '2561',
   descr => 'get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock',
   proname => 'pg_blocking_pids', provolatile => 'v', prorettype => '_int4',
-  proargtypes => 'int4', prosrc => 'pg_blocking_pids' },
+  proargtypes => 'int4' },
 { oid => '3376',
   descr => 'get array of PIDs of sessions blocking specified backend PID from acquiring a safe snapshot',
   proname => 'pg_safe_snapshot_blocking_pids', provolatile => 'v',
-  prorettype => '_int4', proargtypes => 'int4',
-  prosrc => 'pg_safe_snapshot_blocking_pids' },
+  prorettype => '_int4', proargtypes => 'int4' },
 { oid => '3378', descr => 'isolationtester support function',
   proname => 'pg_isolation_test_session_is_blocked', provolatile => 'v',
-  prorettype => 'bool', proargtypes => 'int4 _int4',
-  prosrc => 'pg_isolation_test_session_is_blocked' },
+  prorettype => 'bool', proargtypes => 'int4 _int4' },
 { oid => '1065', descr => 'view two-phase transactions',
   proname => 'pg_prepared_xact', prorows => '1000', proretset => 't',
   provolatile => 'v', prorettype => 'record', proargtypes => '',
   proallargtypes => '{xid,text,timestamptz,oid,oid}',
   proargmodes => '{o,o,o,o,o}',
-  proargnames => '{transaction,gid,prepared,ownerid,dbid}',
-  prosrc => 'pg_prepared_xact' },
+  proargnames => '{transaction,gid,prepared,ownerid,dbid}' },
 { oid => '3819', descr => 'view members of a multixactid',
   proname => 'pg_get_multixact_members', prorows => '1000', proretset => 't',
   provolatile => 'v', prorettype => 'record', proargtypes => 'xid',
   proallargtypes => '{xid,xid,text}', proargmodes => '{i,o,o}',
-  proargnames => '{multixid,xid,mode}', prosrc => 'pg_get_multixact_members' },
+  proargnames => '{multixid,xid,mode}' },
 
 { oid => '3581', descr => 'get commit timestamp of a transaction',
   proname => 'pg_xact_commit_timestamp', provolatile => 'v',
-  prorettype => 'timestamptz', proargtypes => 'xid',
-  prosrc => 'pg_xact_commit_timestamp' },
+  prorettype => 'timestamptz', proargtypes => 'xid' },
 
 { oid => '3583',
   descr => 'get transaction Id and commit timestamp of latest transaction commit',
   proname => 'pg_last_committed_xact', provolatile => 'v',
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{xid,timestamptz}', proargmodes => '{o,o}',
-  proargnames => '{xid,timestamp}', prosrc => 'pg_last_committed_xact' },
+  proargnames => '{xid,timestamp}' },
 
 { oid => '3537', descr => 'get identification of SQL object',
   proname => 'pg_describe_object', provolatile => 's', prorettype => 'text',
-  proargtypes => 'oid oid int4', prosrc => 'pg_describe_object' },
+  proargtypes => 'oid oid int4' },
 
 { oid => '3839',
   descr => 'get machine-parseable identification of SQL object',
@@ -5886,8 +5315,7 @@
   proargtypes => 'oid oid int4',
   proallargtypes => '{oid,oid,int4,text,text,text,text}',
   proargmodes => '{i,i,i,o,o,o,o}',
-  proargnames => '{classid,objid,objsubid,type,schema,name,identity}',
-  prosrc => 'pg_identify_object' },
+  proargnames => '{classid,objid,objsubid,type,schema,name,identity}' },
 
 { oid => '3382',
   descr => 'get identification of SQL object for pg_get_object_address()',
@@ -5895,8 +5323,7 @@
   prorettype => 'record', proargtypes => 'oid oid int4',
   proallargtypes => '{oid,oid,int4,text,_text,_text}',
   proargmodes => '{i,i,i,o,o,o}',
-  proargnames => '{classid,objid,objsubid,type,object_names,object_args}',
-  prosrc => 'pg_identify_object_as_address' },
+  proargnames => '{classid,objid,objsubid,type,object_names,object_args}' },
 
 { oid => '3954',
   descr => 'get OID-based object address from name/args arrays',
@@ -5904,82 +5331,68 @@
   prorettype => 'record', proargtypes => 'text _text _text',
   proallargtypes => '{text,_text,_text,oid,oid,int4}',
   proargmodes => '{i,i,i,o,o,o}',
-  proargnames => '{type,name,args,classid,objid,objsubid}',
-  prosrc => 'pg_get_object_address' },
+  proargnames => '{type,name,args,classid,objid,objsubid}' },
 
 { oid => '2079', descr => 'is table visible in search path?',
   proname => 'pg_table_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid', prosrc => 'pg_table_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '2080', descr => 'is type visible in search path?',
   proname => 'pg_type_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid', prosrc => 'pg_type_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '2081', descr => 'is function visible in search path?',
   proname => 'pg_function_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_function_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '2082', descr => 'is operator visible in search path?',
   proname => 'pg_operator_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_operator_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '2083', descr => 'is opclass visible in search path?',
   proname => 'pg_opclass_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_opclass_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3829', descr => 'is opfamily visible in search path?',
   proname => 'pg_opfamily_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_opfamily_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '2093', descr => 'is conversion visible in search path?',
   proname => 'pg_conversion_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_conversion_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3403', descr => 'is statistics object visible in search path?',
   proname => 'pg_statistics_obj_is_visible', procost => '10',
-  provolatile => 's', prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_statistics_obj_is_visible' },
+  provolatile => 's', prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3756', descr => 'is text search parser visible in search path?',
   proname => 'pg_ts_parser_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_ts_parser_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3757', descr => 'is text search dictionary visible in search path?',
   proname => 'pg_ts_dict_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_ts_dict_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3768', descr => 'is text search template visible in search path?',
   proname => 'pg_ts_template_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_ts_template_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3758',
   descr => 'is text search configuration visible in search path?',
   proname => 'pg_ts_config_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_ts_config_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 { oid => '3815', descr => 'is collation visible in search path?',
   proname => 'pg_collation_is_visible', procost => '10', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_collation_is_visible' },
+  prorettype => 'bool', proargtypes => 'oid' },
 
 { oid => '2854', descr => 'get OID of current session\'s temp schema, if any',
   proname => 'pg_my_temp_schema', provolatile => 's', proparallel => 'r',
-  prorettype => 'oid', proargtypes => '', prosrc => 'pg_my_temp_schema' },
+  prorettype => 'oid', proargtypes => '' },
 { oid => '2855', descr => 'is schema another session\'s temp schema?',
   proname => 'pg_is_other_temp_schema', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'oid',
-  prosrc => 'pg_is_other_temp_schema' },
+  prorettype => 'bool', proargtypes => 'oid' },
 
 { oid => '2171', descr => 'cancel a server process\' current query',
   proname => 'pg_cancel_backend', provolatile => 'v', prorettype => 'bool',
-  proargtypes => 'int4', prosrc => 'pg_cancel_backend' },
+  proargtypes => 'int4' },
 { oid => '2096', descr => 'terminate a server process',
   proname => 'pg_terminate_backend', provolatile => 'v', prorettype => 'bool',
-  proargtypes => 'int4', prosrc => 'pg_terminate_backend' },
+  proargtypes => 'int4' },
 { oid => '2172', descr => 'prepare for taking an online backup',
   proname => 'pg_start_backup', provolatile => 'v', proparallel => 'r',
-  prorettype => 'pg_lsn', proargtypes => 'text bool bool',
-  prosrc => 'pg_start_backup' },
+  prorettype => 'pg_lsn', proargtypes => 'text bool bool' },
 { oid => '2173', descr => 'finish taking an online backup',
   proname => 'pg_stop_backup', provolatile => 'v', proparallel => 'r',
-  prorettype => 'pg_lsn', proargtypes => '', prosrc => 'pg_stop_backup' },
+  prorettype => 'pg_lsn', proargtypes => '' },
 { oid => '2739', descr => 'finish taking an online backup',
   proname => 'pg_stop_backup', prorows => '1', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
@@ -5989,78 +5402,68 @@
   prosrc => 'pg_stop_backup_v2' },
 { oid => '3813', descr => 'true if server is in online backup',
   proname => 'pg_is_in_backup', provolatile => 'v', prorettype => 'bool',
-  proargtypes => '', prosrc => 'pg_is_in_backup' },
+  proargtypes => '' },
 { oid => '3814', descr => 'start time of an online backup',
   proname => 'pg_backup_start_time', provolatile => 's',
-  prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_backup_start_time' },
+  prorettype => 'timestamptz', proargtypes => '' },
 { oid => '2848', descr => 'switch to new wal file',
   proname => 'pg_switch_wal', provolatile => 'v', prorettype => 'pg_lsn',
-  proargtypes => '', prosrc => 'pg_switch_wal' },
+  proargtypes => '' },
 { oid => '3098', descr => 'create a named restore point',
   proname => 'pg_create_restore_point', provolatile => 'v',
-  prorettype => 'pg_lsn', proargtypes => 'text',
-  prosrc => 'pg_create_restore_point' },
+  prorettype => 'pg_lsn', proargtypes => 'text' },
 { oid => '2849', descr => 'current wal write location',
   proname => 'pg_current_wal_lsn', provolatile => 'v', prorettype => 'pg_lsn',
-  proargtypes => '', prosrc => 'pg_current_wal_lsn' },
+  proargtypes => '' },
 { oid => '2852', descr => 'current wal insert location',
   proname => 'pg_current_wal_insert_lsn', provolatile => 'v',
-  prorettype => 'pg_lsn', proargtypes => '',
-  prosrc => 'pg_current_wal_insert_lsn' },
+  prorettype => 'pg_lsn', proargtypes => '' },
 { oid => '3330', descr => 'current wal flush location',
   proname => 'pg_current_wal_flush_lsn', provolatile => 'v',
-  prorettype => 'pg_lsn', proargtypes => '',
-  prosrc => 'pg_current_wal_flush_lsn' },
+  prorettype => 'pg_lsn', proargtypes => '' },
 { oid => '2850',
   descr => 'wal filename and byte offset, given a wal location',
   proname => 'pg_walfile_name_offset', prorettype => 'record',
   proargtypes => 'pg_lsn', proallargtypes => '{pg_lsn,text,int4}',
-  proargmodes => '{i,o,o}', proargnames => '{lsn,file_name,file_offset}',
-  prosrc => 'pg_walfile_name_offset' },
+  proargmodes => '{i,o,o}', proargnames => '{lsn,file_name,file_offset}' },
 { oid => '2851', descr => 'wal filename, given a wal location',
-  proname => 'pg_walfile_name', prorettype => 'text', proargtypes => 'pg_lsn',
-  prosrc => 'pg_walfile_name' },
+  proname => 'pg_walfile_name', prorettype => 'text', proargtypes => 'pg_lsn' },
 
 { oid => '3165', descr => 'difference in bytes, given two wal locations',
   proname => 'pg_wal_lsn_diff', prorettype => 'numeric',
-  proargtypes => 'pg_lsn pg_lsn', prosrc => 'pg_wal_lsn_diff' },
+  proargtypes => 'pg_lsn pg_lsn' },
 
 { oid => '3809', descr => 'export a snapshot',
   proname => 'pg_export_snapshot', provolatile => 'v', proparallel => 'u',
-  prorettype => 'text', proargtypes => '', prosrc => 'pg_export_snapshot' },
+  prorettype => 'text', proargtypes => '' },
 
 { oid => '3810', descr => 'true if server is in recovery',
   proname => 'pg_is_in_recovery', provolatile => 'v', prorettype => 'bool',
-  proargtypes => '', prosrc => 'pg_is_in_recovery' },
+  proargtypes => '' },
 
 { oid => '3820', descr => 'current wal flush location',
   proname => 'pg_last_wal_receive_lsn', provolatile => 'v',
-  prorettype => 'pg_lsn', proargtypes => '',
-  prosrc => 'pg_last_wal_receive_lsn' },
+  prorettype => 'pg_lsn', proargtypes => '' },
 { oid => '3821', descr => 'last wal replay location',
   proname => 'pg_last_wal_replay_lsn', provolatile => 'v',
-  prorettype => 'pg_lsn', proargtypes => '',
-  prosrc => 'pg_last_wal_replay_lsn' },
+  prorettype => 'pg_lsn', proargtypes => '' },
 { oid => '3830', descr => 'timestamp of last replay xact',
   proname => 'pg_last_xact_replay_timestamp', provolatile => 'v',
-  prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_last_xact_replay_timestamp' },
+  prorettype => 'timestamptz', proargtypes => '' },
 
 { oid => '3071', descr => 'pause wal replay',
   proname => 'pg_wal_replay_pause', provolatile => 'v', prorettype => 'void',
-  proargtypes => '', prosrc => 'pg_wal_replay_pause' },
+  proargtypes => '' },
 { oid => '3072', descr => 'resume wal replay, if it was paused',
   proname => 'pg_wal_replay_resume', provolatile => 'v', prorettype => 'void',
-  proargtypes => '', prosrc => 'pg_wal_replay_resume' },
+  proargtypes => '' },
 { oid => '3073', descr => 'true if wal replay is paused',
   proname => 'pg_is_wal_replay_paused', provolatile => 'v',
-  prorettype => 'bool', proargtypes => '',
-  prosrc => 'pg_is_wal_replay_paused' },
+  prorettype => 'bool', proargtypes => '' },
 
 { oid => '2621', descr => 'reload configuration files',
   proname => 'pg_reload_conf', provolatile => 'v', prorettype => 'bool',
-  proargtypes => '', prosrc => 'pg_reload_conf' },
+  proargtypes => '' },
 { oid => '2622', descr => 'rotate log file',
   proname => 'pg_rotate_logfile', provolatile => 'v', prorettype => 'bool',
   proargtypes => '', prosrc => 'pg_rotate_logfile_v2' },
@@ -6069,7 +5472,7 @@
   proargtypes => '', prosrc => 'pg_rotate_logfile' },
 { oid => '3800', descr => 'current logging collector file location',
   proname => 'pg_current_logfile', proisstrict => 'f', provolatile => 'v',
-  prorettype => 'text', proargtypes => '', prosrc => 'pg_current_logfile' },
+  prorettype => 'text', proargtypes => '' },
 { oid => '3801', descr => 'current logging collector file location',
   proname => 'pg_current_logfile', proisstrict => 'f', provolatile => 'v',
   prorettype => 'text', proargtypes => 'text',
@@ -6087,8 +5490,7 @@
   proargtypes => 'text bool',
   proallargtypes => '{text,bool,int8,timestamptz,timestamptz,timestamptz,timestamptz,bool}',
   proargmodes => '{i,i,o,o,o,o,o,o}',
-  proargnames => '{filename,missing_ok,size,access,modification,change,creation,isdir}',
-  prosrc => 'pg_stat_file' },
+  proargnames => '{filename,missing_ok,size,access,modification,change,creation,isdir}' },
 { oid => '2624', descr => 'read text from a file',
   proname => 'pg_read_file', provolatile => 'v', prorettype => 'text',
   proargtypes => 'text int8 int8', prosrc => 'pg_read_file_off_len' },
@@ -6107,7 +5509,7 @@
   proargtypes => 'text int8 int8', prosrc => 'pg_read_binary_file_off_len' },
 { oid => '3295', descr => 'read bytea from a file',
   proname => 'pg_read_binary_file', provolatile => 'v', prorettype => 'bytea',
-  proargtypes => 'text int8 int8 bool', prosrc => 'pg_read_binary_file' },
+  proargtypes => 'text int8 int8 bool' },
 { oid => '3828', descr => 'read bytea from a file',
   proname => 'pg_read_binary_file', provolatile => 'v', prorettype => 'bytea',
   proargtypes => 'text', prosrc => 'pg_read_binary_file_all' },
@@ -6117,11 +5519,10 @@
   prosrc => 'pg_ls_dir_1arg' },
 { oid => '3297', descr => 'list all files in a directory',
   proname => 'pg_ls_dir', prorows => '1000', proretset => 't',
-  provolatile => 'v', prorettype => 'text', proargtypes => 'text bool bool',
-  prosrc => 'pg_ls_dir' },
+  provolatile => 'v', prorettype => 'text', proargtypes => 'text bool bool' },
 { oid => '2626', descr => 'sleep for the specified time in seconds',
   proname => 'pg_sleep', provolatile => 'v', prorettype => 'void',
-  proargtypes => 'float8', prosrc => 'pg_sleep' },
+  proargtypes => 'float8' },
 { oid => '3935', descr => 'sleep for the specified interval',
   proname => 'pg_sleep_for', prolang => '14', provolatile => 'v',
   prorettype => 'void', proargtypes => 'interval',
@@ -6132,7 +5533,7 @@
   prosrc => 'select pg_catalog.pg_sleep(extract(epoch from $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))' },
 { oid => '315', descr => 'Is JIT compilation available in this session?',
   proname => 'pg_jit_available', provolatile => 'v', prorettype => 'bool',
-  proargtypes => '', prosrc => 'pg_jit_available' },
+  proargtypes => '' },
 
 { oid => '2971', descr => 'convert boolean to text',
   proname => 'text', prorettype => 'text', proargtypes => 'bool',
@@ -6548,149 +5949,141 @@
 
 { oid => '2160',
   proname => 'text_pattern_lt', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'text_pattern_lt' },
+  proargtypes => 'text text' },
 { oid => '2161',
   proname => 'text_pattern_le', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'text_pattern_le' },
+  proargtypes => 'text text' },
 { oid => '2163',
   proname => 'text_pattern_ge', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'text_pattern_ge' },
+  proargtypes => 'text text' },
 { oid => '2164',
   proname => 'text_pattern_gt', prorettype => 'bool',
-  proargtypes => 'text text', prosrc => 'text_pattern_gt' },
+  proargtypes => 'text text' },
 { oid => '2166', descr => 'less-equal-greater',
   proname => 'bttext_pattern_cmp', prorettype => 'int4',
-  proargtypes => 'text text', prosrc => 'bttext_pattern_cmp' },
+  proargtypes => 'text text' },
 { oid => '3332', descr => 'sort support',
   proname => 'bttext_pattern_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'bttext_pattern_sortsupport' },
+  proargtypes => 'internal' },
 
 { oid => '2174',
   proname => 'bpchar_pattern_lt', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_lt' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '2175',
   proname => 'bpchar_pattern_le', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_le' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '2177',
   proname => 'bpchar_pattern_ge', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_ge' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '2178',
   proname => 'bpchar_pattern_gt', prorettype => 'bool',
-  proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_gt' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '2180', descr => 'less-equal-greater',
   proname => 'btbpchar_pattern_cmp', prorettype => 'int4',
-  proargtypes => 'bpchar bpchar', prosrc => 'btbpchar_pattern_cmp' },
+  proargtypes => 'bpchar bpchar' },
 { oid => '3333', descr => 'sort support',
   proname => 'btbpchar_pattern_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'btbpchar_pattern_sortsupport' },
+  proargtypes => 'internal' },
 
 { oid => '2188', descr => 'less-equal-greater',
-  proname => 'btint48cmp', prorettype => 'int4', proargtypes => 'int4 int8',
-  prosrc => 'btint48cmp' },
+  proname => 'btint48cmp', prorettype => 'int4', proargtypes => 'int4 int8' },
 { oid => '2189', descr => 'less-equal-greater',
-  proname => 'btint84cmp', prorettype => 'int4', proargtypes => 'int8 int4',
-  prosrc => 'btint84cmp' },
+  proname => 'btint84cmp', prorettype => 'int4', proargtypes => 'int8 int4' },
 { oid => '2190', descr => 'less-equal-greater',
-  proname => 'btint24cmp', prorettype => 'int4', proargtypes => 'int2 int4',
-  prosrc => 'btint24cmp' },
+  proname => 'btint24cmp', prorettype => 'int4', proargtypes => 'int2 int4' },
 { oid => '2191', descr => 'less-equal-greater',
-  proname => 'btint42cmp', prorettype => 'int4', proargtypes => 'int4 int2',
-  prosrc => 'btint42cmp' },
+  proname => 'btint42cmp', prorettype => 'int4', proargtypes => 'int4 int2' },
 { oid => '2192', descr => 'less-equal-greater',
-  proname => 'btint28cmp', prorettype => 'int4', proargtypes => 'int2 int8',
-  prosrc => 'btint28cmp' },
+  proname => 'btint28cmp', prorettype => 'int4', proargtypes => 'int2 int8' },
 { oid => '2193', descr => 'less-equal-greater',
-  proname => 'btint82cmp', prorettype => 'int4', proargtypes => 'int8 int2',
-  prosrc => 'btint82cmp' },
+  proname => 'btint82cmp', prorettype => 'int4', proargtypes => 'int8 int2' },
 { oid => '2194', descr => 'less-equal-greater',
   proname => 'btfloat48cmp', prorettype => 'int4',
-  proargtypes => 'float4 float8', prosrc => 'btfloat48cmp' },
+  proargtypes => 'float4 float8' },
 { oid => '2195', descr => 'less-equal-greater',
   proname => 'btfloat84cmp', prorettype => 'int4',
-  proargtypes => 'float8 float4', prosrc => 'btfloat84cmp' },
+  proargtypes => 'float8 float4' },
 
 { oid => '2212', descr => 'I/O',
   proname => 'regprocedurein', provolatile => 's', prorettype => 'regprocedure',
-  proargtypes => 'cstring', prosrc => 'regprocedurein' },
+  proargtypes => 'cstring' },
 { oid => '2213', descr => 'I/O',
   proname => 'regprocedureout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regprocedure', prosrc => 'regprocedureout' },
+  proargtypes => 'regprocedure' },
 { oid => '2214', descr => 'I/O',
   proname => 'regoperin', provolatile => 's', prorettype => 'regoper',
-  proargtypes => 'cstring', prosrc => 'regoperin' },
+  proargtypes => 'cstring' },
 { oid => '2215', descr => 'I/O',
   proname => 'regoperout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regoper', prosrc => 'regoperout' },
+  proargtypes => 'regoper' },
 { oid => '3492', descr => 'convert operator name to regoper',
   proname => 'to_regoper', provolatile => 's', prorettype => 'regoper',
-  proargtypes => 'text', prosrc => 'to_regoper' },
+  proargtypes => 'text' },
 { oid => '3476', descr => 'convert operator name to regoperator',
   proname => 'to_regoperator', provolatile => 's', prorettype => 'regoperator',
-  proargtypes => 'text', prosrc => 'to_regoperator' },
+  proargtypes => 'text' },
 { oid => '2216', descr => 'I/O',
   proname => 'regoperatorin', provolatile => 's', prorettype => 'regoperator',
-  proargtypes => 'cstring', prosrc => 'regoperatorin' },
+  proargtypes => 'cstring' },
 { oid => '2217', descr => 'I/O',
   proname => 'regoperatorout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regoperator', prosrc => 'regoperatorout' },
+  proargtypes => 'regoperator' },
 { oid => '2218', descr => 'I/O',
   proname => 'regclassin', provolatile => 's', prorettype => 'regclass',
-  proargtypes => 'cstring', prosrc => 'regclassin' },
+  proargtypes => 'cstring' },
 { oid => '2219', descr => 'I/O',
   proname => 'regclassout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regclass', prosrc => 'regclassout' },
+  proargtypes => 'regclass' },
 { oid => '3495', descr => 'convert classname to regclass',
   proname => 'to_regclass', provolatile => 's', prorettype => 'regclass',
-  proargtypes => 'text', prosrc => 'to_regclass' },
+  proargtypes => 'text' },
 { oid => '2220', descr => 'I/O',
   proname => 'regtypein', provolatile => 's', prorettype => 'regtype',
-  proargtypes => 'cstring', prosrc => 'regtypein' },
+  proargtypes => 'cstring' },
 { oid => '2221', descr => 'I/O',
   proname => 'regtypeout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regtype', prosrc => 'regtypeout' },
+  proargtypes => 'regtype' },
 { oid => '3493', descr => 'convert type name to regtype',
   proname => 'to_regtype', provolatile => 's', prorettype => 'regtype',
-  proargtypes => 'text', prosrc => 'to_regtype' },
+  proargtypes => 'text' },
 { oid => '1079', descr => 'convert text to regclass',
   proname => 'regclass', provolatile => 's', prorettype => 'regclass',
   proargtypes => 'text', prosrc => 'text_regclass' },
 
 { oid => '4098', descr => 'I/O',
   proname => 'regrolein', provolatile => 's', prorettype => 'regrole',
-  proargtypes => 'cstring', prosrc => 'regrolein' },
+  proargtypes => 'cstring' },
 { oid => '4092', descr => 'I/O',
   proname => 'regroleout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regrole', prosrc => 'regroleout' },
+  proargtypes => 'regrole' },
 { oid => '4093', descr => 'convert role name to regrole',
   proname => 'to_regrole', provolatile => 's', prorettype => 'regrole',
-  proargtypes => 'text', prosrc => 'to_regrole' },
+  proargtypes => 'text' },
 
 { oid => '4084', descr => 'I/O',
   proname => 'regnamespacein', provolatile => 's', prorettype => 'regnamespace',
-  proargtypes => 'cstring', prosrc => 'regnamespacein' },
+  proargtypes => 'cstring' },
 { oid => '4085', descr => 'I/O',
   proname => 'regnamespaceout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regnamespace', prosrc => 'regnamespaceout' },
+  proargtypes => 'regnamespace' },
 { oid => '4086', descr => 'convert namespace name to regnamespace',
   proname => 'to_regnamespace', provolatile => 's',
-  prorettype => 'regnamespace', proargtypes => 'text',
-  prosrc => 'to_regnamespace' },
+  prorettype => 'regnamespace', proargtypes => 'text' },
 
 { oid => '1268',
   descr => 'parse qualified identifier to array of identifiers',
   proname => 'parse_ident', prorettype => '_text', proargtypes => 'text bool',
-  proargnames => '{str,strict}', prosrc => 'parse_ident' },
+  proargnames => '{str,strict}' },
 
 { oid => '2246', descr => '(internal)',
   proname => 'fmgr_internal_validator', provolatile => 's',
-  prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'fmgr_internal_validator' },
+  prorettype => 'void', proargtypes => 'oid' },
 { oid => '2247', descr => '(internal)',
   proname => 'fmgr_c_validator', provolatile => 's', prorettype => 'void',
-  proargtypes => 'oid', prosrc => 'fmgr_c_validator' },
+  proargtypes => 'oid' },
 { oid => '2248', descr => '(internal)',
   proname => 'fmgr_sql_validator', provolatile => 's', prorettype => 'void',
-  proargtypes => 'oid', prosrc => 'fmgr_sql_validator' },
+  proargtypes => 'oid' },
 
 { oid => '2250',
   descr => 'user privilege on database by username, database name',
@@ -6911,7 +6304,7 @@
 { oid => '1269',
   descr => 'bytes required to store the value, perhaps with compression',
   proname => 'pg_column_size', provolatile => 's', prorettype => 'int4',
-  proargtypes => 'any', prosrc => 'pg_column_size' },
+  proargtypes => 'any' },
 { oid => '2322',
   descr => 'total disk space usage for the specified tablespace',
   proname => 'pg_tablespace_size', provolatile => 'v', prorettype => 'int8',
@@ -6934,153 +6327,134 @@
 { oid => '2332',
   descr => 'disk space usage for the specified fork of a table or index',
   proname => 'pg_relation_size', provolatile => 'v', prorettype => 'int8',
-  proargtypes => 'regclass text', prosrc => 'pg_relation_size' },
+  proargtypes => 'regclass text' },
 { oid => '2286',
   descr => 'total disk space usage for the specified table and associated indexes',
   proname => 'pg_total_relation_size', provolatile => 'v', prorettype => 'int8',
-  proargtypes => 'regclass', prosrc => 'pg_total_relation_size' },
+  proargtypes => 'regclass' },
 { oid => '2288',
   descr => 'convert a long int to a human readable text using size units',
-  proname => 'pg_size_pretty', prorettype => 'text', proargtypes => 'int8',
-  prosrc => 'pg_size_pretty' },
+  proname => 'pg_size_pretty', prorettype => 'text', proargtypes => 'int8' },
 { oid => '3166',
   descr => 'convert a numeric to a human readable text using size units',
   proname => 'pg_size_pretty', prorettype => 'text', proargtypes => 'numeric',
   prosrc => 'pg_size_pretty_numeric' },
 { oid => '3334',
   descr => 'convert a size in human-readable format with size units into bytes',
-  proname => 'pg_size_bytes', prorettype => 'int8', proargtypes => 'text',
-  prosrc => 'pg_size_bytes' },
+  proname => 'pg_size_bytes', prorettype => 'int8', proargtypes => 'text' },
 { oid => '2997',
   descr => 'disk space usage for the specified table, including TOAST, free space and visibility map',
   proname => 'pg_table_size', provolatile => 'v', prorettype => 'int8',
-  proargtypes => 'regclass', prosrc => 'pg_table_size' },
+  proargtypes => 'regclass' },
 { oid => '2998',
   descr => 'disk space usage for all indexes attached to the specified table',
   proname => 'pg_indexes_size', provolatile => 'v', prorettype => 'int8',
-  proargtypes => 'regclass', prosrc => 'pg_indexes_size' },
+  proargtypes => 'regclass' },
 { oid => '2999', descr => 'filenode identifier of relation',
   proname => 'pg_relation_filenode', provolatile => 's', prorettype => 'oid',
-  proargtypes => 'regclass', prosrc => 'pg_relation_filenode' },
+  proargtypes => 'regclass' },
 { oid => '3454', descr => 'relation OID for filenode and tablespace',
   proname => 'pg_filenode_relation', provolatile => 's',
-  prorettype => 'regclass', proargtypes => 'oid oid',
-  prosrc => 'pg_filenode_relation' },
+  prorettype => 'regclass', proargtypes => 'oid oid' },
 { oid => '3034', descr => 'file path of relation',
   proname => 'pg_relation_filepath', provolatile => 's', prorettype => 'text',
-  proargtypes => 'regclass', prosrc => 'pg_relation_filepath' },
+  proargtypes => 'regclass' },
 
 { oid => '2316', descr => '(internal)',
   proname => 'postgresql_fdw_validator', prorettype => 'bool',
-  proargtypes => '_text oid', prosrc => 'postgresql_fdw_validator' },
+  proargtypes => '_text oid' },
 
 { oid => '2290', descr => 'I/O',
   proname => 'record_in', provolatile => 's', prorettype => 'record',
-  proargtypes => 'cstring oid int4', prosrc => 'record_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '2291', descr => 'I/O',
   proname => 'record_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'record', prosrc => 'record_out' },
+  proargtypes => 'record' },
 { oid => '2292', descr => 'I/O',
-  proname => 'cstring_in', prorettype => 'cstring', proargtypes => 'cstring',
-  prosrc => 'cstring_in' },
+  proname => 'cstring_in', prorettype => 'cstring', proargtypes => 'cstring' },
 { oid => '2293', descr => 'I/O',
-  proname => 'cstring_out', prorettype => 'cstring', proargtypes => 'cstring',
-  prosrc => 'cstring_out' },
+  proname => 'cstring_out', prorettype => 'cstring', proargtypes => 'cstring' },
 { oid => '2294', descr => 'I/O',
-  proname => 'any_in', prorettype => 'any', proargtypes => 'cstring',
-  prosrc => 'any_in' },
+  proname => 'any_in', prorettype => 'any', proargtypes => 'cstring' },
 { oid => '2295', descr => 'I/O',
-  proname => 'any_out', prorettype => 'cstring', proargtypes => 'any',
-  prosrc => 'any_out' },
+  proname => 'any_out', prorettype => 'cstring', proargtypes => 'any' },
 { oid => '2296', descr => 'I/O',
-  proname => 'anyarray_in', prorettype => 'anyarray', proargtypes => 'cstring',
-  prosrc => 'anyarray_in' },
+  proname => 'anyarray_in', prorettype => 'anyarray', proargtypes => 'cstring' },
 { oid => '2297', descr => 'I/O',
   proname => 'anyarray_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyarray', prosrc => 'anyarray_out' },
+  proargtypes => 'anyarray' },
 { oid => '2298', descr => 'I/O',
-  proname => 'void_in', prorettype => 'void', proargtypes => 'cstring',
-  prosrc => 'void_in' },
+  proname => 'void_in', prorettype => 'void', proargtypes => 'cstring' },
 { oid => '2299', descr => 'I/O',
-  proname => 'void_out', prorettype => 'cstring', proargtypes => 'void',
-  prosrc => 'void_out' },
+  proname => 'void_out', prorettype => 'cstring', proargtypes => 'void' },
 { oid => '2300', descr => 'I/O',
   proname => 'trigger_in', proisstrict => 'f', prorettype => 'trigger',
-  proargtypes => 'cstring', prosrc => 'trigger_in' },
+  proargtypes => 'cstring' },
 { oid => '2301', descr => 'I/O',
-  proname => 'trigger_out', prorettype => 'cstring', proargtypes => 'trigger',
-  prosrc => 'trigger_out' },
+  proname => 'trigger_out', prorettype => 'cstring', proargtypes => 'trigger' },
 { oid => '3594', descr => 'I/O',
   proname => 'event_trigger_in', proisstrict => 'f',
-  prorettype => 'event_trigger', proargtypes => 'cstring',
-  prosrc => 'event_trigger_in' },
+  prorettype => 'event_trigger', proargtypes => 'cstring' },
 { oid => '3595', descr => 'I/O',
   proname => 'event_trigger_out', prorettype => 'cstring',
-  proargtypes => 'event_trigger', prosrc => 'event_trigger_out' },
+  proargtypes => 'event_trigger' },
 { oid => '2302', descr => 'I/O',
   proname => 'language_handler_in', proisstrict => 'f',
-  prorettype => 'language_handler', proargtypes => 'cstring',
-  prosrc => 'language_handler_in' },
+  prorettype => 'language_handler', proargtypes => 'cstring' },
 { oid => '2303', descr => 'I/O',
   proname => 'language_handler_out', prorettype => 'cstring',
-  proargtypes => 'language_handler', prosrc => 'language_handler_out' },
+  proargtypes => 'language_handler' },
 { oid => '2304', descr => 'I/O',
   proname => 'internal_in', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'cstring', prosrc => 'internal_in' },
+  proargtypes => 'cstring' },
 { oid => '2305', descr => 'I/O',
-  proname => 'internal_out', prorettype => 'cstring', proargtypes => 'internal',
-  prosrc => 'internal_out' },
+  proname => 'internal_out', prorettype => 'cstring', proargtypes => 'internal' },
 { oid => '2306', descr => 'I/O',
   proname => 'opaque_in', proisstrict => 'f', prorettype => 'opaque',
-  proargtypes => 'cstring', prosrc => 'opaque_in' },
+  proargtypes => 'cstring' },
 { oid => '2307', descr => 'I/O',
-  proname => 'opaque_out', prorettype => 'cstring', proargtypes => 'opaque',
-  prosrc => 'opaque_out' },
+  proname => 'opaque_out', prorettype => 'cstring', proargtypes => 'opaque' },
 { oid => '2312', descr => 'I/O',
   proname => 'anyelement_in', prorettype => 'anyelement',
-  proargtypes => 'cstring', prosrc => 'anyelement_in' },
+  proargtypes => 'cstring' },
 { oid => '2313', descr => 'I/O',
   proname => 'anyelement_out', prorettype => 'cstring',
-  proargtypes => 'anyelement', prosrc => 'anyelement_out' },
+  proargtypes => 'anyelement' },
 { oid => '2398', descr => 'I/O',
   proname => 'shell_in', proisstrict => 'f', prorettype => 'opaque',
-  proargtypes => 'cstring', prosrc => 'shell_in' },
+  proargtypes => 'cstring' },
 { oid => '2399', descr => 'I/O',
-  proname => 'shell_out', prorettype => 'cstring', proargtypes => 'opaque',
-  prosrc => 'shell_out' },
+  proname => 'shell_out', prorettype => 'cstring', proargtypes => 'opaque' },
 { oid => '2597', descr => 'I/O',
   proname => 'domain_in', proisstrict => 'f', provolatile => 's',
-  prorettype => 'any', proargtypes => 'cstring oid int4',
-  prosrc => 'domain_in' },
+  prorettype => 'any', proargtypes => 'cstring oid int4' },
 { oid => '2598', descr => 'I/O',
   proname => 'domain_recv', proisstrict => 'f', provolatile => 's',
-  prorettype => 'any', proargtypes => 'internal oid int4',
-  prosrc => 'domain_recv' },
+  prorettype => 'any', proargtypes => 'internal oid int4' },
 { oid => '2777', descr => 'I/O',
   proname => 'anynonarray_in', prorettype => 'anynonarray',
-  proargtypes => 'cstring', prosrc => 'anynonarray_in' },
+  proargtypes => 'cstring' },
 { oid => '2778', descr => 'I/O',
   proname => 'anynonarray_out', prorettype => 'cstring',
-  proargtypes => 'anynonarray', prosrc => 'anynonarray_out' },
+  proargtypes => 'anynonarray' },
 { oid => '3116', descr => 'I/O',
   proname => 'fdw_handler_in', proisstrict => 'f', prorettype => 'fdw_handler',
-  proargtypes => 'cstring', prosrc => 'fdw_handler_in' },
+  proargtypes => 'cstring' },
 { oid => '3117', descr => 'I/O',
   proname => 'fdw_handler_out', prorettype => 'cstring',
-  proargtypes => 'fdw_handler', prosrc => 'fdw_handler_out' },
+  proargtypes => 'fdw_handler' },
 { oid => '326', descr => 'I/O',
   proname => 'index_am_handler_in', proisstrict => 'f',
-  prorettype => 'index_am_handler', proargtypes => 'cstring',
-  prosrc => 'index_am_handler_in' },
+  prorettype => 'index_am_handler', proargtypes => 'cstring' },
 { oid => '327', descr => 'I/O',
   proname => 'index_am_handler_out', prorettype => 'cstring',
-  proargtypes => 'index_am_handler', prosrc => 'index_am_handler_out' },
+  proargtypes => 'index_am_handler' },
 { oid => '3311', descr => 'I/O',
   proname => 'tsm_handler_in', proisstrict => 'f', prorettype => 'tsm_handler',
-  proargtypes => 'cstring', prosrc => 'tsm_handler_in' },
+  proargtypes => 'cstring' },
 { oid => '3312', descr => 'I/O',
   proname => 'tsm_handler_out', prorettype => 'cstring',
-  proargtypes => 'tsm_handler', prosrc => 'tsm_handler_out' },
+  proargtypes => 'tsm_handler' },
 
 # tablesample method handlers
 { oid => '3313', descr => 'BERNOULLI tablesample method handler',
@@ -7113,489 +6487,401 @@
 # crosstype operations for date vs. timestamp and timestamptz
 { oid => '2338',
   proname => 'date_lt_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_lt_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2339',
   proname => 'date_le_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_le_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2340',
   proname => 'date_eq_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_eq_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2341',
   proname => 'date_gt_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_gt_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2342',
   proname => 'date_ge_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_ge_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2343',
   proname => 'date_ne_timestamp', prorettype => 'bool',
-  proargtypes => 'date timestamp', prosrc => 'date_ne_timestamp' },
+  proargtypes => 'date timestamp' },
 { oid => '2344', descr => 'less-equal-greater',
   proname => 'date_cmp_timestamp', prorettype => 'int4',
-  proargtypes => 'date timestamp', prosrc => 'date_cmp_timestamp' },
+  proargtypes => 'date timestamp' },
 
 { oid => '2351',
   proname => 'date_lt_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_lt_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2352',
   proname => 'date_le_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_le_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2353',
   proname => 'date_eq_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_eq_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2354',
   proname => 'date_gt_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_gt_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2355',
   proname => 'date_ge_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_ge_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2356',
   proname => 'date_ne_timestamptz', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'date timestamptz', prosrc => 'date_ne_timestamptz' },
+  proargtypes => 'date timestamptz' },
 { oid => '2357', descr => 'less-equal-greater',
   proname => 'date_cmp_timestamptz', provolatile => 's', prorettype => 'int4',
-  proargtypes => 'date timestamptz', prosrc => 'date_cmp_timestamptz' },
+  proargtypes => 'date timestamptz' },
 
 { oid => '2364',
   proname => 'timestamp_lt_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_lt_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2365',
   proname => 'timestamp_le_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_le_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2366',
   proname => 'timestamp_eq_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_eq_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2367',
   proname => 'timestamp_gt_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_gt_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2368',
   proname => 'timestamp_ge_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_ge_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2369',
   proname => 'timestamp_ne_date', prorettype => 'bool',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_ne_date' },
+  proargtypes => 'timestamp date' },
 { oid => '2370', descr => 'less-equal-greater',
   proname => 'timestamp_cmp_date', prorettype => 'int4',
-  proargtypes => 'timestamp date', prosrc => 'timestamp_cmp_date' },
+  proargtypes => 'timestamp date' },
 
 { oid => '2377',
   proname => 'timestamptz_lt_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_lt_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2378',
   proname => 'timestamptz_le_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_le_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2379',
   proname => 'timestamptz_eq_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_eq_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2380',
   proname => 'timestamptz_gt_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_gt_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2381',
   proname => 'timestamptz_ge_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_ge_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2382',
   proname => 'timestamptz_ne_date', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_ne_date' },
+  proargtypes => 'timestamptz date' },
 { oid => '2383', descr => 'less-equal-greater',
   proname => 'timestamptz_cmp_date', provolatile => 's', prorettype => 'int4',
-  proargtypes => 'timestamptz date', prosrc => 'timestamptz_cmp_date' },
+  proargtypes => 'timestamptz date' },
 
 # crosstype operations for timestamp vs. timestamptz
 { oid => '2520',
   proname => 'timestamp_lt_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_lt_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2521',
   proname => 'timestamp_le_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_le_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2522',
   proname => 'timestamp_eq_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_eq_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2523',
   proname => 'timestamp_gt_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_gt_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2524',
   proname => 'timestamp_ge_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_ge_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2525',
   proname => 'timestamp_ne_timestamptz', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_ne_timestamptz' },
+  prorettype => 'bool', proargtypes => 'timestamp timestamptz' },
 { oid => '2526', descr => 'less-equal-greater',
   proname => 'timestamp_cmp_timestamptz', provolatile => 's',
-  prorettype => 'int4', proargtypes => 'timestamp timestamptz',
-  prosrc => 'timestamp_cmp_timestamptz' },
+  prorettype => 'int4', proargtypes => 'timestamp timestamptz' },
 
 { oid => '2527',
   proname => 'timestamptz_lt_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_lt_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2528',
   proname => 'timestamptz_le_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_le_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2529',
   proname => 'timestamptz_eq_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_eq_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2530',
   proname => 'timestamptz_gt_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_gt_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2531',
   proname => 'timestamptz_ge_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_ge_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2532',
   proname => 'timestamptz_ne_timestamp', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_ne_timestamp' },
+  prorettype => 'bool', proargtypes => 'timestamptz timestamp' },
 { oid => '2533', descr => 'less-equal-greater',
   proname => 'timestamptz_cmp_timestamp', provolatile => 's',
-  prorettype => 'int4', proargtypes => 'timestamptz timestamp',
-  prosrc => 'timestamptz_cmp_timestamp' },
+  prorettype => 'int4', proargtypes => 'timestamptz timestamp' },
 
 # send/receive functions
 { oid => '2400', descr => 'I/O',
   proname => 'array_recv', provolatile => 's', prorettype => 'anyarray',
-  proargtypes => 'internal oid int4', prosrc => 'array_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2401', descr => 'I/O',
   proname => 'array_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'anyarray', prosrc => 'array_send' },
+  proargtypes => 'anyarray' },
 { oid => '2402', descr => 'I/O',
   proname => 'record_recv', provolatile => 's', prorettype => 'record',
-  proargtypes => 'internal oid int4', prosrc => 'record_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2403', descr => 'I/O',
   proname => 'record_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'record', prosrc => 'record_send' },
+  proargtypes => 'record' },
 { oid => '2404', descr => 'I/O',
-  proname => 'int2recv', prorettype => 'int2', proargtypes => 'internal',
-  prosrc => 'int2recv' },
+  proname => 'int2recv', prorettype => 'int2', proargtypes => 'internal' },
 { oid => '2405', descr => 'I/O',
-  proname => 'int2send', prorettype => 'bytea', proargtypes => 'int2',
-  prosrc => 'int2send' },
+  proname => 'int2send', prorettype => 'bytea', proargtypes => 'int2' },
 { oid => '2406', descr => 'I/O',
-  proname => 'int4recv', prorettype => 'int4', proargtypes => 'internal',
-  prosrc => 'int4recv' },
+  proname => 'int4recv', prorettype => 'int4', proargtypes => 'internal' },
 { oid => '2407', descr => 'I/O',
-  proname => 'int4send', prorettype => 'bytea', proargtypes => 'int4',
-  prosrc => 'int4send' },
+  proname => 'int4send', prorettype => 'bytea', proargtypes => 'int4' },
 { oid => '2408', descr => 'I/O',
-  proname => 'int8recv', prorettype => 'int8', proargtypes => 'internal',
-  prosrc => 'int8recv' },
+  proname => 'int8recv', prorettype => 'int8', proargtypes => 'internal' },
 { oid => '2409', descr => 'I/O',
-  proname => 'int8send', prorettype => 'bytea', proargtypes => 'int8',
-  prosrc => 'int8send' },
+  proname => 'int8send', prorettype => 'bytea', proargtypes => 'int8' },
 { oid => '2410', descr => 'I/O',
   proname => 'int2vectorrecv', prorettype => 'int2vector',
-  proargtypes => 'internal', prosrc => 'int2vectorrecv' },
+  proargtypes => 'internal' },
 { oid => '2411', descr => 'I/O',
   proname => 'int2vectorsend', prorettype => 'bytea',
-  proargtypes => 'int2vector', prosrc => 'int2vectorsend' },
+  proargtypes => 'int2vector' },
 { oid => '2412', descr => 'I/O',
-  proname => 'bytearecv', prorettype => 'bytea', proargtypes => 'internal',
-  prosrc => 'bytearecv' },
+  proname => 'bytearecv', prorettype => 'bytea', proargtypes => 'internal' },
 { oid => '2413', descr => 'I/O',
-  proname => 'byteasend', prorettype => 'bytea', proargtypes => 'bytea',
-  prosrc => 'byteasend' },
+  proname => 'byteasend', prorettype => 'bytea', proargtypes => 'bytea' },
 { oid => '2414', descr => 'I/O',
   proname => 'textrecv', provolatile => 's', prorettype => 'text',
-  proargtypes => 'internal', prosrc => 'textrecv' },
+  proargtypes => 'internal' },
 { oid => '2415', descr => 'I/O',
   proname => 'textsend', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'text', prosrc => 'textsend' },
+  proargtypes => 'text' },
 { oid => '2416', descr => 'I/O',
-  proname => 'unknownrecv', prorettype => 'unknown', proargtypes => 'internal',
-  prosrc => 'unknownrecv' },
+  proname => 'unknownrecv', prorettype => 'unknown', proargtypes => 'internal' },
 { oid => '2417', descr => 'I/O',
-  proname => 'unknownsend', prorettype => 'bytea', proargtypes => 'unknown',
-  prosrc => 'unknownsend' },
+  proname => 'unknownsend', prorettype => 'bytea', proargtypes => 'unknown' },
 { oid => '2418', descr => 'I/O',
-  proname => 'oidrecv', prorettype => 'oid', proargtypes => 'internal',
-  prosrc => 'oidrecv' },
+  proname => 'oidrecv', prorettype => 'oid', proargtypes => 'internal' },
 { oid => '2419', descr => 'I/O',
-  proname => 'oidsend', prorettype => 'bytea', proargtypes => 'oid',
-  prosrc => 'oidsend' },
+  proname => 'oidsend', prorettype => 'bytea', proargtypes => 'oid' },
 { oid => '2420', descr => 'I/O',
   proname => 'oidvectorrecv', prorettype => 'oidvector',
-  proargtypes => 'internal', prosrc => 'oidvectorrecv' },
+  proargtypes => 'internal' },
 { oid => '2421', descr => 'I/O',
-  proname => 'oidvectorsend', prorettype => 'bytea', proargtypes => 'oidvector',
-  prosrc => 'oidvectorsend' },
+  proname => 'oidvectorsend', prorettype => 'bytea', proargtypes => 'oidvector' },
 { oid => '2422', descr => 'I/O',
   proname => 'namerecv', provolatile => 's', prorettype => 'name',
-  proargtypes => 'internal', prosrc => 'namerecv' },
+  proargtypes => 'internal' },
 { oid => '2423', descr => 'I/O',
   proname => 'namesend', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'name', prosrc => 'namesend' },
+  proargtypes => 'name' },
 { oid => '2424', descr => 'I/O',
-  proname => 'float4recv', prorettype => 'float4', proargtypes => 'internal',
-  prosrc => 'float4recv' },
+  proname => 'float4recv', prorettype => 'float4', proargtypes => 'internal' },
 { oid => '2425', descr => 'I/O',
-  proname => 'float4send', prorettype => 'bytea', proargtypes => 'float4',
-  prosrc => 'float4send' },
+  proname => 'float4send', prorettype => 'bytea', proargtypes => 'float4' },
 { oid => '2426', descr => 'I/O',
-  proname => 'float8recv', prorettype => 'float8', proargtypes => 'internal',
-  prosrc => 'float8recv' },
+  proname => 'float8recv', prorettype => 'float8', proargtypes => 'internal' },
 { oid => '2427', descr => 'I/O',
-  proname => 'float8send', prorettype => 'bytea', proargtypes => 'float8',
-  prosrc => 'float8send' },
+  proname => 'float8send', prorettype => 'bytea', proargtypes => 'float8' },
 { oid => '2428', descr => 'I/O',
-  proname => 'point_recv', prorettype => 'point', proargtypes => 'internal',
-  prosrc => 'point_recv' },
+  proname => 'point_recv', prorettype => 'point', proargtypes => 'internal' },
 { oid => '2429', descr => 'I/O',
-  proname => 'point_send', prorettype => 'bytea', proargtypes => 'point',
-  prosrc => 'point_send' },
+  proname => 'point_send', prorettype => 'bytea', proargtypes => 'point' },
 { oid => '2430', descr => 'I/O',
   proname => 'bpcharrecv', provolatile => 's', prorettype => 'bpchar',
-  proargtypes => 'internal oid int4', prosrc => 'bpcharrecv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2431', descr => 'I/O',
   proname => 'bpcharsend', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'bpchar', prosrc => 'bpcharsend' },
+  proargtypes => 'bpchar' },
 { oid => '2432', descr => 'I/O',
   proname => 'varcharrecv', provolatile => 's', prorettype => 'varchar',
-  proargtypes => 'internal oid int4', prosrc => 'varcharrecv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2433', descr => 'I/O',
   proname => 'varcharsend', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'varchar', prosrc => 'varcharsend' },
+  proargtypes => 'varchar' },
 { oid => '2434', descr => 'I/O',
-  proname => 'charrecv', prorettype => 'char', proargtypes => 'internal',
-  prosrc => 'charrecv' },
+  proname => 'charrecv', prorettype => 'char', proargtypes => 'internal' },
 { oid => '2435', descr => 'I/O',
-  proname => 'charsend', prorettype => 'bytea', proargtypes => 'char',
-  prosrc => 'charsend' },
+  proname => 'charsend', prorettype => 'bytea', proargtypes => 'char' },
 { oid => '2436', descr => 'I/O',
-  proname => 'boolrecv', prorettype => 'bool', proargtypes => 'internal',
-  prosrc => 'boolrecv' },
+  proname => 'boolrecv', prorettype => 'bool', proargtypes => 'internal' },
 { oid => '2437', descr => 'I/O',
-  proname => 'boolsend', prorettype => 'bytea', proargtypes => 'bool',
-  prosrc => 'boolsend' },
+  proname => 'boolsend', prorettype => 'bytea', proargtypes => 'bool' },
 { oid => '2438', descr => 'I/O',
-  proname => 'tidrecv', prorettype => 'tid', proargtypes => 'internal',
-  prosrc => 'tidrecv' },
+  proname => 'tidrecv', prorettype => 'tid', proargtypes => 'internal' },
 { oid => '2439', descr => 'I/O',
-  proname => 'tidsend', prorettype => 'bytea', proargtypes => 'tid',
-  prosrc => 'tidsend' },
+  proname => 'tidsend', prorettype => 'bytea', proargtypes => 'tid' },
 { oid => '2440', descr => 'I/O',
-  proname => 'xidrecv', prorettype => 'xid', proargtypes => 'internal',
-  prosrc => 'xidrecv' },
+  proname => 'xidrecv', prorettype => 'xid', proargtypes => 'internal' },
 { oid => '2441', descr => 'I/O',
-  proname => 'xidsend', prorettype => 'bytea', proargtypes => 'xid',
-  prosrc => 'xidsend' },
+  proname => 'xidsend', prorettype => 'bytea', proargtypes => 'xid' },
 { oid => '2442', descr => 'I/O',
-  proname => 'cidrecv', prorettype => 'cid', proargtypes => 'internal',
-  prosrc => 'cidrecv' },
+  proname => 'cidrecv', prorettype => 'cid', proargtypes => 'internal' },
 { oid => '2443', descr => 'I/O',
-  proname => 'cidsend', prorettype => 'bytea', proargtypes => 'cid',
-  prosrc => 'cidsend' },
+  proname => 'cidsend', prorettype => 'bytea', proargtypes => 'cid' },
 { oid => '2444', descr => 'I/O',
-  proname => 'regprocrecv', prorettype => 'regproc', proargtypes => 'internal',
-  prosrc => 'regprocrecv' },
+  proname => 'regprocrecv', prorettype => 'regproc', proargtypes => 'internal' },
 { oid => '2445', descr => 'I/O',
-  proname => 'regprocsend', prorettype => 'bytea', proargtypes => 'regproc',
-  prosrc => 'regprocsend' },
+  proname => 'regprocsend', prorettype => 'bytea', proargtypes => 'regproc' },
 { oid => '2446', descr => 'I/O',
   proname => 'regprocedurerecv', prorettype => 'regprocedure',
-  proargtypes => 'internal', prosrc => 'regprocedurerecv' },
+  proargtypes => 'internal' },
 { oid => '2447', descr => 'I/O',
   proname => 'regproceduresend', prorettype => 'bytea',
-  proargtypes => 'regprocedure', prosrc => 'regproceduresend' },
+  proargtypes => 'regprocedure' },
 { oid => '2448', descr => 'I/O',
-  proname => 'regoperrecv', prorettype => 'regoper', proargtypes => 'internal',
-  prosrc => 'regoperrecv' },
+  proname => 'regoperrecv', prorettype => 'regoper', proargtypes => 'internal' },
 { oid => '2449', descr => 'I/O',
-  proname => 'regopersend', prorettype => 'bytea', proargtypes => 'regoper',
-  prosrc => 'regopersend' },
+  proname => 'regopersend', prorettype => 'bytea', proargtypes => 'regoper' },
 { oid => '2450', descr => 'I/O',
   proname => 'regoperatorrecv', prorettype => 'regoperator',
-  proargtypes => 'internal', prosrc => 'regoperatorrecv' },
+  proargtypes => 'internal' },
 { oid => '2451', descr => 'I/O',
   proname => 'regoperatorsend', prorettype => 'bytea',
-  proargtypes => 'regoperator', prosrc => 'regoperatorsend' },
+  proargtypes => 'regoperator' },
 { oid => '2452', descr => 'I/O',
   proname => 'regclassrecv', prorettype => 'regclass',
-  proargtypes => 'internal', prosrc => 'regclassrecv' },
+  proargtypes => 'internal' },
 { oid => '2453', descr => 'I/O',
-  proname => 'regclasssend', prorettype => 'bytea', proargtypes => 'regclass',
-  prosrc => 'regclasssend' },
+  proname => 'regclasssend', prorettype => 'bytea', proargtypes => 'regclass' },
 { oid => '2454', descr => 'I/O',
-  proname => 'regtyperecv', prorettype => 'regtype', proargtypes => 'internal',
-  prosrc => 'regtyperecv' },
+  proname => 'regtyperecv', prorettype => 'regtype', proargtypes => 'internal' },
 { oid => '2455', descr => 'I/O',
-  proname => 'regtypesend', prorettype => 'bytea', proargtypes => 'regtype',
-  prosrc => 'regtypesend' },
+  proname => 'regtypesend', prorettype => 'bytea', proargtypes => 'regtype' },
 
 { oid => '4094', descr => 'I/O',
-  proname => 'regrolerecv', prorettype => 'regrole', proargtypes => 'internal',
-  prosrc => 'regrolerecv' },
+  proname => 'regrolerecv', prorettype => 'regrole', proargtypes => 'internal' },
 { oid => '4095', descr => 'I/O',
-  proname => 'regrolesend', prorettype => 'bytea', proargtypes => 'regrole',
-  prosrc => 'regrolesend' },
+  proname => 'regrolesend', prorettype => 'bytea', proargtypes => 'regrole' },
 { oid => '4087', descr => 'I/O',
   proname => 'regnamespacerecv', prorettype => 'regnamespace',
-  proargtypes => 'internal', prosrc => 'regnamespacerecv' },
+  proargtypes => 'internal' },
 { oid => '4088', descr => 'I/O',
   proname => 'regnamespacesend', prorettype => 'bytea',
-  proargtypes => 'regnamespace', prosrc => 'regnamespacesend' },
+  proargtypes => 'regnamespace' },
 { oid => '2456', descr => 'I/O',
   proname => 'bit_recv', prorettype => 'bit',
-  proargtypes => 'internal oid int4', prosrc => 'bit_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2457', descr => 'I/O',
-  proname => 'bit_send', prorettype => 'bytea', proargtypes => 'bit',
-  prosrc => 'bit_send' },
+  proname => 'bit_send', prorettype => 'bytea', proargtypes => 'bit' },
 { oid => '2458', descr => 'I/O',
   proname => 'varbit_recv', prorettype => 'varbit',
-  proargtypes => 'internal oid int4', prosrc => 'varbit_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2459', descr => 'I/O',
-  proname => 'varbit_send', prorettype => 'bytea', proargtypes => 'varbit',
-  prosrc => 'varbit_send' },
+  proname => 'varbit_send', prorettype => 'bytea', proargtypes => 'varbit' },
 { oid => '2460', descr => 'I/O',
   proname => 'numeric_recv', prorettype => 'numeric',
-  proargtypes => 'internal oid int4', prosrc => 'numeric_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2461', descr => 'I/O',
-  proname => 'numeric_send', prorettype => 'bytea', proargtypes => 'numeric',
-  prosrc => 'numeric_send' },
+  proname => 'numeric_send', prorettype => 'bytea', proargtypes => 'numeric' },
 { oid => '2462', descr => 'I/O',
-  proname => 'abstimerecv', prorettype => 'abstime', proargtypes => 'internal',
-  prosrc => 'abstimerecv' },
+  proname => 'abstimerecv', prorettype => 'abstime', proargtypes => 'internal' },
 { oid => '2463', descr => 'I/O',
-  proname => 'abstimesend', prorettype => 'bytea', proargtypes => 'abstime',
-  prosrc => 'abstimesend' },
+  proname => 'abstimesend', prorettype => 'bytea', proargtypes => 'abstime' },
 { oid => '2464', descr => 'I/O',
-  proname => 'reltimerecv', prorettype => 'reltime', proargtypes => 'internal',
-  prosrc => 'reltimerecv' },
+  proname => 'reltimerecv', prorettype => 'reltime', proargtypes => 'internal' },
 { oid => '2465', descr => 'I/O',
-  proname => 'reltimesend', prorettype => 'bytea', proargtypes => 'reltime',
-  prosrc => 'reltimesend' },
+  proname => 'reltimesend', prorettype => 'bytea', proargtypes => 'reltime' },
 { oid => '2466', descr => 'I/O',
   proname => 'tintervalrecv', prorettype => 'tinterval',
-  proargtypes => 'internal', prosrc => 'tintervalrecv' },
+  proargtypes => 'internal' },
 { oid => '2467', descr => 'I/O',
-  proname => 'tintervalsend', prorettype => 'bytea', proargtypes => 'tinterval',
-  prosrc => 'tintervalsend' },
+  proname => 'tintervalsend', prorettype => 'bytea', proargtypes => 'tinterval' },
 { oid => '2468', descr => 'I/O',
-  proname => 'date_recv', prorettype => 'date', proargtypes => 'internal',
-  prosrc => 'date_recv' },
+  proname => 'date_recv', prorettype => 'date', proargtypes => 'internal' },
 { oid => '2469', descr => 'I/O',
-  proname => 'date_send', prorettype => 'bytea', proargtypes => 'date',
-  prosrc => 'date_send' },
+  proname => 'date_send', prorettype => 'bytea', proargtypes => 'date' },
 { oid => '2470', descr => 'I/O',
   proname => 'time_recv', prorettype => 'time',
-  proargtypes => 'internal oid int4', prosrc => 'time_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2471', descr => 'I/O',
-  proname => 'time_send', prorettype => 'bytea', proargtypes => 'time',
-  prosrc => 'time_send' },
+  proname => 'time_send', prorettype => 'bytea', proargtypes => 'time' },
 { oid => '2472', descr => 'I/O',
   proname => 'timetz_recv', prorettype => 'timetz',
-  proargtypes => 'internal oid int4', prosrc => 'timetz_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2473', descr => 'I/O',
-  proname => 'timetz_send', prorettype => 'bytea', proargtypes => 'timetz',
-  prosrc => 'timetz_send' },
+  proname => 'timetz_send', prorettype => 'bytea', proargtypes => 'timetz' },
 { oid => '2474', descr => 'I/O',
   proname => 'timestamp_recv', prorettype => 'timestamp',
-  proargtypes => 'internal oid int4', prosrc => 'timestamp_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2475', descr => 'I/O',
   proname => 'timestamp_send', prorettype => 'bytea',
-  proargtypes => 'timestamp', prosrc => 'timestamp_send' },
+  proargtypes => 'timestamp' },
 { oid => '2476', descr => 'I/O',
   proname => 'timestamptz_recv', prorettype => 'timestamptz',
-  proargtypes => 'internal oid int4', prosrc => 'timestamptz_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2477', descr => 'I/O',
   proname => 'timestamptz_send', prorettype => 'bytea',
-  proargtypes => 'timestamptz', prosrc => 'timestamptz_send' },
+  proargtypes => 'timestamptz' },
 { oid => '2478', descr => 'I/O',
   proname => 'interval_recv', prorettype => 'interval',
-  proargtypes => 'internal oid int4', prosrc => 'interval_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '2479', descr => 'I/O',
-  proname => 'interval_send', prorettype => 'bytea', proargtypes => 'interval',
-  prosrc => 'interval_send' },
+  proname => 'interval_send', prorettype => 'bytea', proargtypes => 'interval' },
 { oid => '2480', descr => 'I/O',
-  proname => 'lseg_recv', prorettype => 'lseg', proargtypes => 'internal',
-  prosrc => 'lseg_recv' },
+  proname => 'lseg_recv', prorettype => 'lseg', proargtypes => 'internal' },
 { oid => '2481', descr => 'I/O',
-  proname => 'lseg_send', prorettype => 'bytea', proargtypes => 'lseg',
-  prosrc => 'lseg_send' },
+  proname => 'lseg_send', prorettype => 'bytea', proargtypes => 'lseg' },
 { oid => '2482', descr => 'I/O',
-  proname => 'path_recv', prorettype => 'path', proargtypes => 'internal',
-  prosrc => 'path_recv' },
+  proname => 'path_recv', prorettype => 'path', proargtypes => 'internal' },
 { oid => '2483', descr => 'I/O',
-  proname => 'path_send', prorettype => 'bytea', proargtypes => 'path',
-  prosrc => 'path_send' },
+  proname => 'path_send', prorettype => 'bytea', proargtypes => 'path' },
 { oid => '2484', descr => 'I/O',
-  proname => 'box_recv', prorettype => 'box', proargtypes => 'internal',
-  prosrc => 'box_recv' },
+  proname => 'box_recv', prorettype => 'box', proargtypes => 'internal' },
 { oid => '2485', descr => 'I/O',
-  proname => 'box_send', prorettype => 'bytea', proargtypes => 'box',
-  prosrc => 'box_send' },
+  proname => 'box_send', prorettype => 'bytea', proargtypes => 'box' },
 { oid => '2486', descr => 'I/O',
-  proname => 'poly_recv', prorettype => 'polygon', proargtypes => 'internal',
-  prosrc => 'poly_recv' },
+  proname => 'poly_recv', prorettype => 'polygon', proargtypes => 'internal' },
 { oid => '2487', descr => 'I/O',
-  proname => 'poly_send', prorettype => 'bytea', proargtypes => 'polygon',
-  prosrc => 'poly_send' },
+  proname => 'poly_send', prorettype => 'bytea', proargtypes => 'polygon' },
 { oid => '2488', descr => 'I/O',
-  proname => 'line_recv', prorettype => 'line', proargtypes => 'internal',
-  prosrc => 'line_recv' },
+  proname => 'line_recv', prorettype => 'line', proargtypes => 'internal' },
 { oid => '2489', descr => 'I/O',
-  proname => 'line_send', prorettype => 'bytea', proargtypes => 'line',
-  prosrc => 'line_send' },
+  proname => 'line_send', prorettype => 'bytea', proargtypes => 'line' },
 { oid => '2490', descr => 'I/O',
-  proname => 'circle_recv', prorettype => 'circle', proargtypes => 'internal',
-  prosrc => 'circle_recv' },
+  proname => 'circle_recv', prorettype => 'circle', proargtypes => 'internal' },
 { oid => '2491', descr => 'I/O',
-  proname => 'circle_send', prorettype => 'bytea', proargtypes => 'circle',
-  prosrc => 'circle_send' },
+  proname => 'circle_send', prorettype => 'bytea', proargtypes => 'circle' },
 { oid => '2492', descr => 'I/O',
-  proname => 'cash_recv', prorettype => 'money', proargtypes => 'internal',
-  prosrc => 'cash_recv' },
+  proname => 'cash_recv', prorettype => 'money', proargtypes => 'internal' },
 { oid => '2493', descr => 'I/O',
-  proname => 'cash_send', prorettype => 'bytea', proargtypes => 'money',
-  prosrc => 'cash_send' },
+  proname => 'cash_send', prorettype => 'bytea', proargtypes => 'money' },
 { oid => '2494', descr => 'I/O',
-  proname => 'macaddr_recv', prorettype => 'macaddr', proargtypes => 'internal',
-  prosrc => 'macaddr_recv' },
+  proname => 'macaddr_recv', prorettype => 'macaddr', proargtypes => 'internal' },
 { oid => '2495', descr => 'I/O',
-  proname => 'macaddr_send', prorettype => 'bytea', proargtypes => 'macaddr',
-  prosrc => 'macaddr_send' },
+  proname => 'macaddr_send', prorettype => 'bytea', proargtypes => 'macaddr' },
 { oid => '2496', descr => 'I/O',
-  proname => 'inet_recv', prorettype => 'inet', proargtypes => 'internal',
-  prosrc => 'inet_recv' },
+  proname => 'inet_recv', prorettype => 'inet', proargtypes => 'internal' },
 { oid => '2497', descr => 'I/O',
-  proname => 'inet_send', prorettype => 'bytea', proargtypes => 'inet',
-  prosrc => 'inet_send' },
+  proname => 'inet_send', prorettype => 'bytea', proargtypes => 'inet' },
 { oid => '2498', descr => 'I/O',
-  proname => 'cidr_recv', prorettype => 'cidr', proargtypes => 'internal',
-  prosrc => 'cidr_recv' },
+  proname => 'cidr_recv', prorettype => 'cidr', proargtypes => 'internal' },
 { oid => '2499', descr => 'I/O',
-  proname => 'cidr_send', prorettype => 'bytea', proargtypes => 'cidr',
-  prosrc => 'cidr_send' },
+  proname => 'cidr_send', prorettype => 'bytea', proargtypes => 'cidr' },
 { oid => '2500', descr => 'I/O',
   proname => 'cstring_recv', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'internal', prosrc => 'cstring_recv' },
+  proargtypes => 'internal' },
 { oid => '2501', descr => 'I/O',
   proname => 'cstring_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'cstring', prosrc => 'cstring_send' },
+  proargtypes => 'cstring' },
 { oid => '2502', descr => 'I/O',
   proname => 'anyarray_recv', provolatile => 's', prorettype => 'anyarray',
-  proargtypes => 'internal', prosrc => 'anyarray_recv' },
+  proargtypes => 'internal' },
 { oid => '2503', descr => 'I/O',
   proname => 'anyarray_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'anyarray', prosrc => 'anyarray_send' },
+  proargtypes => 'anyarray' },
 { oid => '3120', descr => 'I/O',
-  proname => 'void_recv', prorettype => 'void', proargtypes => 'internal',
-  prosrc => 'void_recv' },
+  proname => 'void_recv', prorettype => 'void', proargtypes => 'internal' },
 { oid => '3121', descr => 'I/O',
-  proname => 'void_send', prorettype => 'bytea', proargtypes => 'void',
-  prosrc => 'void_send' },
+  proname => 'void_send', prorettype => 'bytea', proargtypes => 'void' },
 { oid => '3446', descr => 'I/O',
   proname => 'macaddr8_recv', prorettype => 'macaddr8',
-  proargtypes => 'internal', prosrc => 'macaddr8_recv' },
+  proargtypes => 'internal' },
 { oid => '3447', descr => 'I/O',
-  proname => 'macaddr8_send', prorettype => 'bytea', proargtypes => 'macaddr8',
-  prosrc => 'macaddr8_send' },
+  proname => 'macaddr8_send', prorettype => 'bytea', proargtypes => 'macaddr8' },
 
 # System-view support functions with pretty-print option
 { oid => '2504', descr => 'source text of a rule with pretty-print option',
@@ -7632,27 +6918,23 @@
   provolatile => 's', proparallel => 'r', prorettype => 'record',
   proargtypes => '', proallargtypes => '{text,text,timestamptz,_regtype,bool}',
   proargmodes => '{o,o,o,o,o}',
-  proargnames => '{name,statement,prepare_time,parameter_types,from_sql}',
-  prosrc => 'pg_prepared_statement' },
+  proargnames => '{name,statement,prepare_time,parameter_types,from_sql}' },
 { oid => '2511', descr => 'get the open cursors for this session',
   proname => 'pg_cursor', prorows => '1000', proretset => 't',
   provolatile => 's', proparallel => 'r', prorettype => 'record',
   proargtypes => '', proallargtypes => '{text,text,bool,bool,bool,timestamptz}',
   proargmodes => '{o,o,o,o,o,o}',
-  proargnames => '{name,statement,is_holdable,is_binary,is_scrollable,creation_time}',
-  prosrc => 'pg_cursor' },
+  proargnames => '{name,statement,is_holdable,is_binary,is_scrollable,creation_time}' },
 { oid => '2599', descr => 'get the available time zone abbreviations',
   proname => 'pg_timezone_abbrevs', prorows => '1000', proretset => 't',
   provolatile => 's', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,interval,bool}', proargmodes => '{o,o,o}',
-  proargnames => '{abbrev,utc_offset,is_dst}',
-  prosrc => 'pg_timezone_abbrevs' },
+  proargnames => '{abbrev,utc_offset,is_dst}' },
 { oid => '2856', descr => 'get the available time zone names',
   proname => 'pg_timezone_names', prorows => '1000', proretset => 't',
   provolatile => 's', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,text,interval,bool}', proargmodes => '{o,o,o,o}',
-  proargnames => '{name,abbrev,utc_offset,is_dst}',
-  prosrc => 'pg_timezone_names' },
+  proargnames => '{name,abbrev,utc_offset,is_dst}' },
 { oid => '2730', descr => 'trigger description with pretty-print option',
   proname => 'pg_get_triggerdef', provolatile => 's', prorettype => 'text',
   proargtypes => 'oid bool', prosrc => 'pg_get_triggerdef_ext' },
@@ -7662,16 +6944,14 @@
   descr => 'get the channels that the current backend listens to',
   proname => 'pg_listening_channels', prorows => '10', proretset => 't',
   provolatile => 's', proparallel => 'r', prorettype => 'text',
-  proargtypes => '', prosrc => 'pg_listening_channels' },
+  proargtypes => '' },
 { oid => '3036', descr => 'send a notification event',
   proname => 'pg_notify', proisstrict => 'f', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'text text',
-  prosrc => 'pg_notify' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'text text' },
 { oid => '3296',
   descr => 'get the fraction of the asynchronous notification queue currently in use',
   proname => 'pg_notification_queue_usage', provolatile => 'v',
-  prorettype => 'float8', proargtypes => '',
-  prosrc => 'pg_notification_queue_usage' },
+  prorettype => 'float8', proargtypes => '' },
 
 # non-persistent series generator
 { oid => '1066', descr => 'non-persistent series generator',
@@ -7711,22 +6991,20 @@
 # boolean aggregates
 { oid => '2515', descr => 'aggregate transition function',
   proname => 'booland_statefunc', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'booland_statefunc' },
+  proargtypes => 'bool bool' },
 { oid => '2516', descr => 'aggregate transition function',
   proname => 'boolor_statefunc', prorettype => 'bool',
-  proargtypes => 'bool bool', prosrc => 'boolor_statefunc' },
+  proargtypes => 'bool bool' },
 { oid => '3496', descr => 'aggregate transition function',
   proname => 'bool_accum', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal bool', prosrc => 'bool_accum' },
+  proargtypes => 'internal bool' },
 { oid => '3497', descr => 'aggregate transition function',
   proname => 'bool_accum_inv', proisstrict => 'f', prorettype => 'internal',
-  proargtypes => 'internal bool', prosrc => 'bool_accum_inv' },
+  proargtypes => 'internal bool' },
 { oid => '3498', descr => 'aggregate final function',
-  proname => 'bool_alltrue', prorettype => 'bool', proargtypes => 'internal',
-  prosrc => 'bool_alltrue' },
+  proname => 'bool_alltrue', prorettype => 'bool', proargtypes => 'internal' },
 { oid => '3499', descr => 'aggregate final function',
-  proname => 'bool_anytrue', prorettype => 'bool', proargtypes => 'internal',
-  prosrc => 'bool_anytrue' },
+  proname => 'bool_anytrue', prorettype => 'bool', proargtypes => 'internal' },
 { oid => '2517', descr => 'boolean-and aggregate',
   proname => 'bool_and', prokind => 'a', proisstrict => 'f',
   prorettype => 'bool', proargtypes => 'bool', prosrc => 'aggregate_dummy' },
@@ -7786,8 +7064,7 @@
 
 { oid => '2556', descr => 'get OIDs of databases in a tablespace',
   proname => 'pg_tablespace_databases', prorows => '1000', proretset => 't',
-  provolatile => 's', prorettype => 'oid', proargtypes => 'oid',
-  prosrc => 'pg_tablespace_databases' },
+  provolatile => 's', prorettype => 'oid', proargtypes => 'oid' },
 
 { oid => '2557', descr => 'convert int4 to boolean',
   proname => 'bool', prorettype => 'bool', proargtypes => 'int4',
@@ -7797,122 +7074,106 @@
   prosrc => 'bool_int4' },
 { oid => '2559', descr => 'current value from last used sequence',
   proname => 'lastval', provolatile => 'v', proparallel => 'u',
-  prorettype => 'int8', proargtypes => '', prosrc => 'lastval' },
+  prorettype => 'int8', proargtypes => '' },
 
 # start time function
 { oid => '2560', descr => 'postmaster start time',
   proname => 'pg_postmaster_start_time', provolatile => 's',
-  prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_postmaster_start_time' },
+  prorettype => 'timestamptz', proargtypes => '' },
 
 # config reload time function
 { oid => '2034', descr => 'configuration load time',
   proname => 'pg_conf_load_time', provolatile => 's', proparallel => 'r',
-  prorettype => 'timestamptz', proargtypes => '',
-  prosrc => 'pg_conf_load_time' },
+  prorettype => 'timestamptz', proargtypes => '' },
 
 # new functions for Y-direction rtree opclasses
 { oid => '2562',
-  proname => 'box_below', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_below' },
+  proname => 'box_below', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '2563',
-  proname => 'box_overbelow', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_overbelow' },
+  proname => 'box_overbelow', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '2564',
-  proname => 'box_overabove', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_overabove' },
+  proname => 'box_overabove', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '2565',
-  proname => 'box_above', prorettype => 'bool', proargtypes => 'box box',
-  prosrc => 'box_above' },
+  proname => 'box_above', prorettype => 'bool', proargtypes => 'box box' },
 { oid => '2566',
   proname => 'poly_below', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_below' },
+  proargtypes => 'polygon polygon' },
 { oid => '2567',
   proname => 'poly_overbelow', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_overbelow' },
+  proargtypes => 'polygon polygon' },
 { oid => '2568',
   proname => 'poly_overabove', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_overabove' },
+  proargtypes => 'polygon polygon' },
 { oid => '2569',
   proname => 'poly_above', prorettype => 'bool',
-  proargtypes => 'polygon polygon', prosrc => 'poly_above' },
+  proargtypes => 'polygon polygon' },
 { oid => '2587',
   proname => 'circle_overbelow', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_overbelow' },
+  proargtypes => 'circle circle' },
 { oid => '2588',
   proname => 'circle_overabove', prorettype => 'bool',
-  proargtypes => 'circle circle', prosrc => 'circle_overabove' },
+  proargtypes => 'circle circle' },
 
 # support functions for GiST r-tree emulation
 { oid => '2578', descr => 'GiST support',
   proname => 'gist_box_consistent', prorettype => 'bool',
-  proargtypes => 'internal box int2 oid internal',
-  prosrc => 'gist_box_consistent' },
+  proargtypes => 'internal box int2 oid internal' },
 { oid => '2581', descr => 'GiST support',
   proname => 'gist_box_penalty', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'gist_box_penalty' },
+  proargtypes => 'internal internal internal' },
 { oid => '2582', descr => 'GiST support',
   proname => 'gist_box_picksplit', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'gist_box_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '2583', descr => 'GiST support',
   proname => 'gist_box_union', prorettype => 'box',
-  proargtypes => 'internal internal', prosrc => 'gist_box_union' },
+  proargtypes => 'internal internal' },
 { oid => '2584', descr => 'GiST support',
   proname => 'gist_box_same', prorettype => 'internal',
-  proargtypes => 'box box internal', prosrc => 'gist_box_same' },
+  proargtypes => 'box box internal' },
 { oid => '2585', descr => 'GiST support',
   proname => 'gist_poly_consistent', prorettype => 'bool',
-  proargtypes => 'internal polygon int2 oid internal',
-  prosrc => 'gist_poly_consistent' },
+  proargtypes => 'internal polygon int2 oid internal' },
 { oid => '2586', descr => 'GiST support',
   proname => 'gist_poly_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gist_poly_compress' },
+  proargtypes => 'internal' },
 { oid => '2591', descr => 'GiST support',
   proname => 'gist_circle_consistent', prorettype => 'bool',
-  proargtypes => 'internal circle int2 oid internal',
-  prosrc => 'gist_circle_consistent' },
+  proargtypes => 'internal circle int2 oid internal' },
 { oid => '2592', descr => 'GiST support',
   proname => 'gist_circle_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gist_circle_compress' },
+  proargtypes => 'internal' },
 { oid => '1030', descr => 'GiST support',
   proname => 'gist_point_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gist_point_compress' },
+  proargtypes => 'internal' },
 { oid => '3282', descr => 'GiST support',
   proname => 'gist_point_fetch', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gist_point_fetch' },
+  proargtypes => 'internal' },
 { oid => '2179', descr => 'GiST support',
   proname => 'gist_point_consistent', prorettype => 'bool',
-  proargtypes => 'internal point int2 oid internal',
-  prosrc => 'gist_point_consistent' },
+  proargtypes => 'internal point int2 oid internal' },
 { oid => '3064', descr => 'GiST support',
   proname => 'gist_point_distance', prorettype => 'float8',
-  proargtypes => 'internal point int2 oid internal',
-  prosrc => 'gist_point_distance' },
+  proargtypes => 'internal point int2 oid internal' },
 { oid => '3280', descr => 'GiST support',
   proname => 'gist_circle_distance', prorettype => 'float8',
-  proargtypes => 'internal circle int2 oid internal',
-  prosrc => 'gist_circle_distance' },
+  proargtypes => 'internal circle int2 oid internal' },
 { oid => '3288', descr => 'GiST support',
   proname => 'gist_poly_distance', prorettype => 'float8',
-  proargtypes => 'internal polygon int2 oid internal',
-  prosrc => 'gist_poly_distance' },
+  proargtypes => 'internal polygon int2 oid internal' },
 
 # GIN array support
 { oid => '2743', descr => 'GIN array support',
   proname => 'ginarrayextract', prorettype => 'internal',
-  proargtypes => 'anyarray internal internal', prosrc => 'ginarrayextract' },
+  proargtypes => 'anyarray internal internal' },
 { oid => '2774', descr => 'GIN array support',
   proname => 'ginqueryarrayextract', prorettype => 'internal',
-  proargtypes => 'anyarray internal int2 internal internal internal internal',
-  prosrc => 'ginqueryarrayextract' },
+  proargtypes => 'anyarray internal int2 internal internal internal internal' },
 { oid => '2744', descr => 'GIN array support',
   proname => 'ginarrayconsistent', prorettype => 'bool',
-  proargtypes => 'internal int2 anyarray int4 internal internal internal internal',
-  prosrc => 'ginarrayconsistent' },
+  proargtypes => 'internal int2 anyarray int4 internal internal internal internal' },
 { oid => '3920', descr => 'GIN array support',
   proname => 'ginarraytriconsistent', prorettype => 'char',
-  proargtypes => 'internal int2 anyarray int4 internal internal internal',
-  prosrc => 'ginarraytriconsistent' },
+  proargtypes => 'internal int2 anyarray int4 internal internal internal' },
 { oid => '3076', descr => 'GIN array support (obsolete)',
   proname => 'ginarrayextract', prorettype => 'internal',
   proargtypes => 'anyarray internal', prosrc => 'ginarrayextract_2args' },
@@ -7920,46 +7181,41 @@
 # overlap/contains/contained
 { oid => '2747',
   proname => 'arrayoverlap', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'arrayoverlap' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '2748',
   proname => 'arraycontains', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'arraycontains' },
+  proargtypes => 'anyarray anyarray' },
 { oid => '2749',
   proname => 'arraycontained', prorettype => 'bool',
-  proargtypes => 'anyarray anyarray', prosrc => 'arraycontained' },
+  proargtypes => 'anyarray anyarray' },
 
 # BRIN minmax
 { oid => '3383', descr => 'BRIN minmax support',
   proname => 'brin_minmax_opcinfo', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'brin_minmax_opcinfo' },
+  proargtypes => 'internal' },
 { oid => '3384', descr => 'BRIN minmax support',
   proname => 'brin_minmax_add_value', prorettype => 'bool',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'brin_minmax_add_value' },
+  proargtypes => 'internal internal internal internal' },
 { oid => '3385', descr => 'BRIN minmax support',
   proname => 'brin_minmax_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal internal',
-  prosrc => 'brin_minmax_consistent' },
+  proargtypes => 'internal internal internal' },
 { oid => '3386', descr => 'BRIN minmax support',
   proname => 'brin_minmax_union', prorettype => 'bool',
-  proargtypes => 'internal internal internal', prosrc => 'brin_minmax_union' },
+  proargtypes => 'internal internal internal' },
 
 # BRIN inclusion
 { oid => '4105', descr => 'BRIN inclusion support',
   proname => 'brin_inclusion_opcinfo', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'brin_inclusion_opcinfo' },
+  proargtypes => 'internal' },
 { oid => '4106', descr => 'BRIN inclusion support',
   proname => 'brin_inclusion_add_value', prorettype => 'bool',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'brin_inclusion_add_value' },
+  proargtypes => 'internal internal internal internal' },
 { oid => '4107', descr => 'BRIN inclusion support',
   proname => 'brin_inclusion_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal internal',
-  prosrc => 'brin_inclusion_consistent' },
+  proargtypes => 'internal internal internal' },
 { oid => '4108', descr => 'BRIN inclusion support',
   proname => 'brin_inclusion_union', prorettype => 'bool',
-  proargtypes => 'internal internal internal',
-  prosrc => 'brin_inclusion_union' },
+  proargtypes => 'internal internal internal' },
 
 # userlock replacements
 { oid => '2880', descr => 'obtain exclusive advisory lock',
@@ -8044,34 +7300,31 @@
   prosrc => 'pg_advisory_unlock_shared_int4' },
 { oid => '2892', descr => 'release all advisory locks',
   proname => 'pg_advisory_unlock_all', provolatile => 'v', proparallel => 'u',
-  prorettype => 'void', proargtypes => '', prosrc => 'pg_advisory_unlock_all' },
+  prorettype => 'void', proargtypes => '' },
 
 # XML support
 { oid => '2893', descr => 'I/O',
   proname => 'xml_in', provolatile => 's', prorettype => 'xml',
-  proargtypes => 'cstring', prosrc => 'xml_in' },
+  proargtypes => 'cstring' },
 { oid => '2894', descr => 'I/O',
-  proname => 'xml_out', prorettype => 'cstring', proargtypes => 'xml',
-  prosrc => 'xml_out' },
+  proname => 'xml_out', prorettype => 'cstring', proargtypes => 'xml' },
 { oid => '2895', descr => 'generate XML comment',
-  proname => 'xmlcomment', prorettype => 'xml', proargtypes => 'text',
-  prosrc => 'xmlcomment' },
+  proname => 'xmlcomment', prorettype => 'xml', proargtypes => 'text' },
 { oid => '2896',
   descr => 'perform a non-validating parse of a character string to produce an XML value',
   proname => 'xml', provolatile => 's', prorettype => 'xml',
   proargtypes => 'text', prosrc => 'texttoxml' },
 { oid => '2897', descr => 'validate an XML value',
-  proname => 'xmlvalidate', prorettype => 'bool', proargtypes => 'xml text',
-  prosrc => 'xmlvalidate' },
+  proname => 'xmlvalidate', prorettype => 'bool', proargtypes => 'xml text' },
 { oid => '2898', descr => 'I/O',
   proname => 'xml_recv', provolatile => 's', prorettype => 'xml',
-  proargtypes => 'internal', prosrc => 'xml_recv' },
+  proargtypes => 'internal' },
 { oid => '2899', descr => 'I/O',
   proname => 'xml_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'xml', prosrc => 'xml_send' },
+  proargtypes => 'xml' },
 { oid => '2900', descr => 'aggregate transition function',
   proname => 'xmlconcat2', proisstrict => 'f', prorettype => 'xml',
-  proargtypes => 'xml xml', prosrc => 'xmlconcat2' },
+  proargtypes => 'xml xml' },
 { oid => '2901', descr => 'concatenate XML values',
   proname => 'xmlagg', prokind => 'a', proisstrict => 'f', prorettype => 'xml',
   proargtypes => 'xml', prosrc => 'aggregate_dummy' },
@@ -8083,159 +7336,138 @@
   proname => 'table_to_xml', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml',
   proargtypes => 'regclass bool bool text',
-  proargnames => '{tbl,nulls,tableforest,targetns}', prosrc => 'table_to_xml' },
+  proargnames => '{tbl,nulls,tableforest,targetns}' },
 { oid => '2924', descr => 'map query result to XML',
   proname => 'query_to_xml', procost => '100', provolatile => 'v',
   proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text',
-  proargnames => '{query,nulls,tableforest,targetns}',
-  prosrc => 'query_to_xml' },
+  proargnames => '{query,nulls,tableforest,targetns}' },
 { oid => '2925', descr => 'map rows from cursor to XML',
   proname => 'cursor_to_xml', procost => '100', provolatile => 'v',
   proparallel => 'u', prorettype => 'xml',
   proargtypes => 'refcursor int4 bool bool text',
-  proargnames => '{cursor,count,nulls,tableforest,targetns}',
-  prosrc => 'cursor_to_xml' },
+  proargnames => '{cursor,count,nulls,tableforest,targetns}' },
 { oid => '2926', descr => 'map table structure to XML Schema',
   proname => 'table_to_xmlschema', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml',
   proargtypes => 'regclass bool bool text',
-  proargnames => '{tbl,nulls,tableforest,targetns}',
-  prosrc => 'table_to_xmlschema' },
+  proargnames => '{tbl,nulls,tableforest,targetns}' },
 { oid => '2927', descr => 'map query result structure to XML Schema',
   proname => 'query_to_xmlschema', procost => '100', provolatile => 'v',
   proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text',
-  proargnames => '{query,nulls,tableforest,targetns}',
-  prosrc => 'query_to_xmlschema' },
+  proargnames => '{query,nulls,tableforest,targetns}' },
 { oid => '2928', descr => 'map cursor structure to XML Schema',
   proname => 'cursor_to_xmlschema', procost => '100', provolatile => 'v',
   proparallel => 'u', prorettype => 'xml',
   proargtypes => 'refcursor bool bool text',
-  proargnames => '{cursor,nulls,tableforest,targetns}',
-  prosrc => 'cursor_to_xmlschema' },
+  proargnames => '{cursor,nulls,tableforest,targetns}' },
 { oid => '2929',
   descr => 'map table contents and structure to XML and XML Schema',
   proname => 'table_to_xml_and_xmlschema', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml',
   proargtypes => 'regclass bool bool text',
-  proargnames => '{tbl,nulls,tableforest,targetns}',
-  prosrc => 'table_to_xml_and_xmlschema' },
+  proargnames => '{tbl,nulls,tableforest,targetns}' },
 { oid => '2930',
   descr => 'map query result and structure to XML and XML Schema',
   proname => 'query_to_xml_and_xmlschema', procost => '100', provolatile => 'v',
   proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text',
-  proargnames => '{query,nulls,tableforest,targetns}',
-  prosrc => 'query_to_xml_and_xmlschema' },
+  proargnames => '{query,nulls,tableforest,targetns}' },
 
 { oid => '2933', descr => 'map schema contents to XML',
   proname => 'schema_to_xml', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml', proargtypes => 'name bool bool text',
-  proargnames => '{schema,nulls,tableforest,targetns}',
-  prosrc => 'schema_to_xml' },
+  proargnames => '{schema,nulls,tableforest,targetns}' },
 { oid => '2934', descr => 'map schema structure to XML Schema',
   proname => 'schema_to_xmlschema', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml', proargtypes => 'name bool bool text',
-  proargnames => '{schema,nulls,tableforest,targetns}',
-  prosrc => 'schema_to_xmlschema' },
+  proargnames => '{schema,nulls,tableforest,targetns}' },
 { oid => '2935',
   descr => 'map schema contents and structure to XML and XML Schema',
   proname => 'schema_to_xml_and_xmlschema', procost => '100',
   provolatile => 's', proparallel => 'r', prorettype => 'xml',
   proargtypes => 'name bool bool text',
-  proargnames => '{schema,nulls,tableforest,targetns}',
-  prosrc => 'schema_to_xml_and_xmlschema' },
+  proargnames => '{schema,nulls,tableforest,targetns}' },
 
 { oid => '2936', descr => 'map database contents to XML',
   proname => 'database_to_xml', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml', proargtypes => 'bool bool text',
-  proargnames => '{nulls,tableforest,targetns}', prosrc => 'database_to_xml' },
+  proargnames => '{nulls,tableforest,targetns}' },
 { oid => '2937', descr => 'map database structure to XML Schema',
   proname => 'database_to_xmlschema', procost => '100', provolatile => 's',
   proparallel => 'r', prorettype => 'xml', proargtypes => 'bool bool text',
-  proargnames => '{nulls,tableforest,targetns}',
-  prosrc => 'database_to_xmlschema' },
+  proargnames => '{nulls,tableforest,targetns}' },
 { oid => '2938',
   descr => 'map database contents and structure to XML and XML Schema',
   proname => 'database_to_xml_and_xmlschema', procost => '100',
   provolatile => 's', proparallel => 'r', prorettype => 'xml',
   proargtypes => 'bool bool text',
-  proargnames => '{nulls,tableforest,targetns}',
-  prosrc => 'database_to_xml_and_xmlschema' },
+  proargnames => '{nulls,tableforest,targetns}' },
 
 { oid => '2931',
   descr => 'evaluate XPath expression, with namespaces support',
-  proname => 'xpath', prorettype => '_xml', proargtypes => 'text xml _text',
-  prosrc => 'xpath' },
+  proname => 'xpath', prorettype => '_xml', proargtypes => 'text xml _text' },
 { oid => '2932', descr => 'evaluate XPath expression',
   proname => 'xpath', prolang => '14', prorettype => '_xml',
   proargtypes => 'text xml',
   prosrc => 'select pg_catalog.xpath($1, $2, \'{}\'::pg_catalog.text[])' },
 
 { oid => '2614', descr => 'test XML value against XPath expression',
-  proname => 'xmlexists', prorettype => 'bool', proargtypes => 'text xml',
-  prosrc => 'xmlexists' },
+  proname => 'xmlexists', prorettype => 'bool', proargtypes => 'text xml' },
 
 { oid => '3049',
   descr => 'test XML value against XPath expression, with namespace support',
   proname => 'xpath_exists', prorettype => 'bool',
-  proargtypes => 'text xml _text', prosrc => 'xpath_exists' },
+  proargtypes => 'text xml _text' },
 { oid => '3050', descr => 'test XML value against XPath expression',
   proname => 'xpath_exists', prolang => '14', prorettype => 'bool',
   proargtypes => 'text xml',
   prosrc => 'select pg_catalog.xpath_exists($1, $2, \'{}\'::pg_catalog.text[])' },
 { oid => '3051', descr => 'determine if a string is well formed XML',
   proname => 'xml_is_well_formed', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'text', prosrc => 'xml_is_well_formed' },
+  proargtypes => 'text' },
 { oid => '3052', descr => 'determine if a string is well formed XML document',
   proname => 'xml_is_well_formed_document', prorettype => 'bool',
-  proargtypes => 'text', prosrc => 'xml_is_well_formed_document' },
+  proargtypes => 'text' },
 { oid => '3053', descr => 'determine if a string is well formed XML content',
   proname => 'xml_is_well_formed_content', prorettype => 'bool',
-  proargtypes => 'text', prosrc => 'xml_is_well_formed_content' },
+  proargtypes => 'text' },
 
 # json
 { oid => '321', descr => 'I/O',
-  proname => 'json_in', prorettype => 'json', proargtypes => 'cstring',
-  prosrc => 'json_in' },
+  proname => 'json_in', prorettype => 'json', proargtypes => 'cstring' },
 { oid => '322', descr => 'I/O',
-  proname => 'json_out', prorettype => 'cstring', proargtypes => 'json',
-  prosrc => 'json_out' },
+  proname => 'json_out', prorettype => 'cstring', proargtypes => 'json' },
 { oid => '323', descr => 'I/O',
-  proname => 'json_recv', prorettype => 'json', proargtypes => 'internal',
-  prosrc => 'json_recv' },
+  proname => 'json_recv', prorettype => 'json', proargtypes => 'internal' },
 { oid => '324', descr => 'I/O',
-  proname => 'json_send', prorettype => 'bytea', proargtypes => 'json',
-  prosrc => 'json_send' },
+  proname => 'json_send', prorettype => 'bytea', proargtypes => 'json' },
 { oid => '3153', descr => 'map array to json',
   proname => 'array_to_json', provolatile => 's', prorettype => 'json',
-  proargtypes => 'anyarray', prosrc => 'array_to_json' },
+  proargtypes => 'anyarray' },
 { oid => '3154', descr => 'map array to json with optional pretty printing',
   proname => 'array_to_json', provolatile => 's', prorettype => 'json',
   proargtypes => 'anyarray bool', prosrc => 'array_to_json_pretty' },
 { oid => '3155', descr => 'map row to json',
   proname => 'row_to_json', provolatile => 's', prorettype => 'json',
-  proargtypes => 'record', prosrc => 'row_to_json' },
+  proargtypes => 'record' },
 { oid => '3156', descr => 'map row to json with optional pretty printing',
   proname => 'row_to_json', provolatile => 's', prorettype => 'json',
   proargtypes => 'record bool', prosrc => 'row_to_json_pretty' },
 { oid => '3173', descr => 'json aggregate transition function',
   proname => 'json_agg_transfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'internal', proargtypes => 'internal anyelement',
-  prosrc => 'json_agg_transfn' },
+  prorettype => 'internal', proargtypes => 'internal anyelement' },
 { oid => '3174', descr => 'json aggregate final function',
   proname => 'json_agg_finalfn', proisstrict => 'f', prorettype => 'json',
-  proargtypes => 'internal', prosrc => 'json_agg_finalfn' },
+  proargtypes => 'internal' },
 { oid => '3175', descr => 'aggregate input into json',
   proname => 'json_agg', prokind => 'a', proisstrict => 'f', provolatile => 's',
   prorettype => 'json', proargtypes => 'anyelement',
   prosrc => 'aggregate_dummy' },
 { oid => '3180', descr => 'json object aggregate transition function',
   proname => 'json_object_agg_transfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'internal', proargtypes => 'internal any any',
-  prosrc => 'json_object_agg_transfn' },
+  prorettype => 'internal', proargtypes => 'internal any any' },
 { oid => '3196', descr => 'json object aggregate final function',
   proname => 'json_object_agg_finalfn', proisstrict => 'f',
-  prorettype => 'json', proargtypes => 'internal',
-  prosrc => 'json_object_agg_finalfn' },
+  prorettype => 'json', proargtypes => 'internal' },
 { oid => '3197', descr => 'aggregate input into a json object',
   proname => 'json_object_agg', prokind => 'a', proisstrict => 'f',
   provolatile => 's', prorettype => 'json', proargtypes => 'any any',
@@ -8243,8 +7475,7 @@
 { oid => '3198', descr => 'build a json array from any inputs',
   proname => 'json_build_array', provariadic => 'any', proisstrict => 'f',
   provolatile => 's', prorettype => 'json', proargtypes => 'any',
-  proallargtypes => '{any}', proargmodes => '{v}',
-  prosrc => 'json_build_array' },
+  proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3199', descr => 'build an empty json array',
   proname => 'json_build_array', proisstrict => 'f', provolatile => 's',
   prorettype => 'json', proargtypes => '',
@@ -8253,232 +7484,192 @@
   descr => 'build a json object from pairwise key/value inputs',
   proname => 'json_build_object', provariadic => 'any', proisstrict => 'f',
   provolatile => 's', prorettype => 'json', proargtypes => 'any',
-  proallargtypes => '{any}', proargmodes => '{v}',
-  prosrc => 'json_build_object' },
+  proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3201', descr => 'build an empty json object',
   proname => 'json_build_object', proisstrict => 'f', provolatile => 's',
   prorettype => 'json', proargtypes => '',
   prosrc => 'json_build_object_noargs' },
 { oid => '3202', descr => 'map text array of key value pairs to json object',
-  proname => 'json_object', prorettype => 'json', proargtypes => '_text',
-  prosrc => 'json_object' },
+  proname => 'json_object', prorettype => 'json', proargtypes => '_text' },
 { oid => '3203', descr => 'map text arrays of keys and values to json object',
   proname => 'json_object', prorettype => 'json', proargtypes => '_text _text',
   prosrc => 'json_object_two_arg' },
 { oid => '3176', descr => 'map input to json',
   proname => 'to_json', provolatile => 's', prorettype => 'json',
-  proargtypes => 'anyelement', prosrc => 'to_json' },
+  proargtypes => 'anyelement' },
 { oid => '3261', descr => 'remove object fields with null values from json',
-  proname => 'json_strip_nulls', prorettype => 'json', proargtypes => 'json',
-  prosrc => 'json_strip_nulls' },
+  proname => 'json_strip_nulls', prorettype => 'json', proargtypes => 'json' },
 
 { oid => '3947',
   proname => 'json_object_field', prorettype => 'json',
-  proargtypes => 'json text', proargnames => '{from_json, field_name}',
-  prosrc => 'json_object_field' },
+  proargtypes => 'json text', proargnames => '{from_json, field_name}' },
 { oid => '3948',
   proname => 'json_object_field_text', prorettype => 'text',
-  proargtypes => 'json text', proargnames => '{from_json, field_name}',
-  prosrc => 'json_object_field_text' },
+  proargtypes => 'json text', proargnames => '{from_json, field_name}' },
 { oid => '3949',
   proname => 'json_array_element', prorettype => 'json',
-  proargtypes => 'json int4', proargnames => '{from_json, element_index}',
-  prosrc => 'json_array_element' },
+  proargtypes => 'json int4', proargnames => '{from_json, element_index}' },
 { oid => '3950',
   proname => 'json_array_element_text', prorettype => 'text',
-  proargtypes => 'json int4', proargnames => '{from_json, element_index}',
-  prosrc => 'json_array_element_text' },
+  proargtypes => 'json int4', proargnames => '{from_json, element_index}' },
 { oid => '3951', descr => 'get value from json with path elements',
   proname => 'json_extract_path', provariadic => 'text', prorettype => 'json',
   proargtypes => 'json _text', proallargtypes => '{json,_text}',
-  proargmodes => '{i,v}', proargnames => '{from_json,path_elems}',
-  prosrc => 'json_extract_path' },
+  proargmodes => '{i,v}', proargnames => '{from_json,path_elems}' },
 { oid => '3953', descr => 'get value from json as text with path elements',
   proname => 'json_extract_path_text', provariadic => 'text',
   prorettype => 'text', proargtypes => 'json _text',
   proallargtypes => '{json,_text}', proargmodes => '{i,v}',
-  proargnames => '{from_json,path_elems}', prosrc => 'json_extract_path_text' },
+  proargnames => '{from_json,path_elems}' },
 { oid => '3955', descr => 'key value pairs of a json object',
   proname => 'json_array_elements', prorows => '100', proretset => 't',
   prorettype => 'json', proargtypes => 'json', proallargtypes => '{json,json}',
-  proargmodes => '{i,o}', proargnames => '{from_json,value}',
-  prosrc => 'json_array_elements' },
+  proargmodes => '{i,o}', proargnames => '{from_json,value}' },
 { oid => '3969', descr => 'elements of json array',
   proname => 'json_array_elements_text', prorows => '100', proretset => 't',
   prorettype => 'text', proargtypes => 'json', proallargtypes => '{json,text}',
-  proargmodes => '{i,o}', proargnames => '{from_json,value}',
-  prosrc => 'json_array_elements_text' },
+  proargmodes => '{i,o}', proargnames => '{from_json,value}' },
 { oid => '3956', descr => 'length of json array',
-  proname => 'json_array_length', prorettype => 'int4', proargtypes => 'json',
-  prosrc => 'json_array_length' },
+  proname => 'json_array_length', prorettype => 'int4', proargtypes => 'json' },
 { oid => '3957', descr => 'get json object keys',
   proname => 'json_object_keys', prorows => '100', proretset => 't',
-  prorettype => 'text', proargtypes => 'json', prosrc => 'json_object_keys' },
+  prorettype => 'text', proargtypes => 'json' },
 { oid => '3958', descr => 'key value pairs of a json object',
   proname => 'json_each', prorows => '100', proretset => 't',
   prorettype => 'record', proargtypes => 'json',
   proallargtypes => '{json,text,json}', proargmodes => '{i,o,o}',
-  proargnames => '{from_json,key,value}', prosrc => 'json_each' },
+  proargnames => '{from_json,key,value}' },
 { oid => '3959', descr => 'key value pairs of a json object',
   proname => 'json_each_text', prorows => '100', proretset => 't',
   prorettype => 'record', proargtypes => 'json',
   proallargtypes => '{json,text,text}', proargmodes => '{i,o,o}',
-  proargnames => '{from_json,key,value}', prosrc => 'json_each_text' },
+  proargnames => '{from_json,key,value}' },
 { oid => '3960', descr => 'get record fields from a json object',
   proname => 'json_populate_record', proisstrict => 'f', provolatile => 's',
-  prorettype => 'anyelement', proargtypes => 'anyelement json bool',
-  prosrc => 'json_populate_record' },
+  prorettype => 'anyelement', proargtypes => 'anyelement json bool' },
 { oid => '3961',
   descr => 'get set of records with fields from a json array of objects',
   proname => 'json_populate_recordset', prorows => '100', proisstrict => 'f',
   proretset => 't', provolatile => 's', prorettype => 'anyelement',
-  proargtypes => 'anyelement json bool', prosrc => 'json_populate_recordset' },
+  proargtypes => 'anyelement json bool' },
 { oid => '3204', descr => 'get record fields from a json object',
   proname => 'json_to_record', provolatile => 's', prorettype => 'record',
-  proargtypes => 'json', prosrc => 'json_to_record' },
+  proargtypes => 'json' },
 { oid => '3205',
   descr => 'get set of records with fields from a json array of objects',
   proname => 'json_to_recordset', prorows => '100', proisstrict => 'f',
   proretset => 't', provolatile => 's', prorettype => 'record',
-  proargtypes => 'json', prosrc => 'json_to_recordset' },
+  proargtypes => 'json' },
 { oid => '3968', descr => 'get the type of a json value',
-  proname => 'json_typeof', prorettype => 'text', proargtypes => 'json',
-  prosrc => 'json_typeof' },
+  proname => 'json_typeof', prorettype => 'text', proargtypes => 'json' },
 
 # uuid
 { oid => '2952', descr => 'I/O',
-  proname => 'uuid_in', prorettype => 'uuid', proargtypes => 'cstring',
-  prosrc => 'uuid_in' },
+  proname => 'uuid_in', prorettype => 'uuid', proargtypes => 'cstring' },
 { oid => '2953', descr => 'I/O',
-  proname => 'uuid_out', prorettype => 'cstring', proargtypes => 'uuid',
-  prosrc => 'uuid_out' },
+  proname => 'uuid_out', prorettype => 'cstring', proargtypes => 'uuid' },
 { oid => '2954',
   proname => 'uuid_lt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_lt' },
+  proargtypes => 'uuid uuid' },
 { oid => '2955',
   proname => 'uuid_le', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_le' },
+  proargtypes => 'uuid uuid' },
 { oid => '2956',
   proname => 'uuid_eq', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_eq' },
+  proargtypes => 'uuid uuid' },
 { oid => '2957',
   proname => 'uuid_ge', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_ge' },
+  proargtypes => 'uuid uuid' },
 { oid => '2958',
   proname => 'uuid_gt', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_gt' },
+  proargtypes => 'uuid uuid' },
 { oid => '2959',
   proname => 'uuid_ne', proleakproof => 't', prorettype => 'bool',
-  proargtypes => 'uuid uuid', prosrc => 'uuid_ne' },
+  proargtypes => 'uuid uuid' },
 { oid => '2960', descr => 'less-equal-greater',
-  proname => 'uuid_cmp', prorettype => 'int4', proargtypes => 'uuid uuid',
-  prosrc => 'uuid_cmp' },
+  proname => 'uuid_cmp', prorettype => 'int4', proargtypes => 'uuid uuid' },
 { oid => '3300', descr => 'sort support',
   proname => 'uuid_sortsupport', prorettype => 'void',
-  proargtypes => 'internal', prosrc => 'uuid_sortsupport' },
+  proargtypes => 'internal' },
 { oid => '2961', descr => 'I/O',
-  proname => 'uuid_recv', prorettype => 'uuid', proargtypes => 'internal',
-  prosrc => 'uuid_recv' },
+  proname => 'uuid_recv', prorettype => 'uuid', proargtypes => 'internal' },
 { oid => '2962', descr => 'I/O',
-  proname => 'uuid_send', prorettype => 'bytea', proargtypes => 'uuid',
-  prosrc => 'uuid_send' },
+  proname => 'uuid_send', prorettype => 'bytea', proargtypes => 'uuid' },
 { oid => '2963', descr => 'hash',
-  proname => 'uuid_hash', prorettype => 'int4', proargtypes => 'uuid',
-  prosrc => 'uuid_hash' },
+  proname => 'uuid_hash', prorettype => 'int4', proargtypes => 'uuid' },
 { oid => '3412', descr => 'hash',
   proname => 'uuid_hash_extended', prorettype => 'int8',
-  proargtypes => 'uuid int8', prosrc => 'uuid_hash_extended' },
+  proargtypes => 'uuid int8' },
 
 # pg_lsn
 { oid => '3229', descr => 'I/O',
-  proname => 'pg_lsn_in', prorettype => 'pg_lsn', proargtypes => 'cstring',
-  prosrc => 'pg_lsn_in' },
+  proname => 'pg_lsn_in', prorettype => 'pg_lsn', proargtypes => 'cstring' },
 { oid => '3230', descr => 'I/O',
-  proname => 'pg_lsn_out', prorettype => 'cstring', proargtypes => 'pg_lsn',
-  prosrc => 'pg_lsn_out' },
+  proname => 'pg_lsn_out', prorettype => 'cstring', proargtypes => 'pg_lsn' },
 { oid => '3231',
-  proname => 'pg_lsn_lt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_lt' },
+  proname => 'pg_lsn_lt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3232',
-  proname => 'pg_lsn_le', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_le' },
+  proname => 'pg_lsn_le', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3233',
-  proname => 'pg_lsn_eq', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_eq' },
+  proname => 'pg_lsn_eq', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3234',
-  proname => 'pg_lsn_ge', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_ge' },
+  proname => 'pg_lsn_ge', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3235',
-  proname => 'pg_lsn_gt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_gt' },
+  proname => 'pg_lsn_gt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3236',
-  proname => 'pg_lsn_ne', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_ne' },
+  proname => 'pg_lsn_ne', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3237',
   proname => 'pg_lsn_mi', prorettype => 'numeric',
-  proargtypes => 'pg_lsn pg_lsn', prosrc => 'pg_lsn_mi' },
+  proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3238', descr => 'I/O',
-  proname => 'pg_lsn_recv', prorettype => 'pg_lsn', proargtypes => 'internal',
-  prosrc => 'pg_lsn_recv' },
+  proname => 'pg_lsn_recv', prorettype => 'pg_lsn', proargtypes => 'internal' },
 { oid => '3239', descr => 'I/O',
-  proname => 'pg_lsn_send', prorettype => 'bytea', proargtypes => 'pg_lsn',
-  prosrc => 'pg_lsn_send' },
+  proname => 'pg_lsn_send', prorettype => 'bytea', proargtypes => 'pg_lsn' },
 { oid => '3251', descr => 'less-equal-greater',
-  proname => 'pg_lsn_cmp', prorettype => 'int4', proargtypes => 'pg_lsn pg_lsn',
-  prosrc => 'pg_lsn_cmp' },
+  proname => 'pg_lsn_cmp', prorettype => 'int4', proargtypes => 'pg_lsn pg_lsn' },
 { oid => '3252', descr => 'hash',
-  proname => 'pg_lsn_hash', prorettype => 'int4', proargtypes => 'pg_lsn',
-  prosrc => 'pg_lsn_hash' },
+  proname => 'pg_lsn_hash', prorettype => 'int4', proargtypes => 'pg_lsn' },
 { oid => '3413', descr => 'hash',
   proname => 'pg_lsn_hash_extended', prorettype => 'int8',
-  proargtypes => 'pg_lsn int8', prosrc => 'pg_lsn_hash_extended' },
+  proargtypes => 'pg_lsn int8' },
 
 # enum related procs
 { oid => '3504', descr => 'I/O',
-  proname => 'anyenum_in', prorettype => 'anyenum', proargtypes => 'cstring',
-  prosrc => 'anyenum_in' },
+  proname => 'anyenum_in', prorettype => 'anyenum', proargtypes => 'cstring' },
 { oid => '3505', descr => 'I/O',
   proname => 'anyenum_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyenum', prosrc => 'anyenum_out' },
+  proargtypes => 'anyenum' },
 { oid => '3506', descr => 'I/O',
   proname => 'enum_in', provolatile => 's', prorettype => 'anyenum',
-  proargtypes => 'cstring oid', prosrc => 'enum_in' },
+  proargtypes => 'cstring oid' },
 { oid => '3507', descr => 'I/O',
   proname => 'enum_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyenum', prosrc => 'enum_out' },
+  proargtypes => 'anyenum' },
 { oid => '3508',
-  proname => 'enum_eq', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_eq' },
+  proname => 'enum_eq', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3509',
-  proname => 'enum_ne', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_ne' },
+  proname => 'enum_ne', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3510',
-  proname => 'enum_lt', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_lt' },
+  proname => 'enum_lt', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3511',
-  proname => 'enum_gt', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_gt' },
+  proname => 'enum_gt', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3512',
-  proname => 'enum_le', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_le' },
+  proname => 'enum_le', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3513',
-  proname => 'enum_ge', prorettype => 'bool', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_ge' },
+  proname => 'enum_ge', prorettype => 'bool', proargtypes => 'anyenum anyenum' },
 { oid => '3514', descr => 'less-equal-greater',
-  proname => 'enum_cmp', prorettype => 'int4', proargtypes => 'anyenum anyenum',
-  prosrc => 'enum_cmp' },
+  proname => 'enum_cmp', prorettype => 'int4', proargtypes => 'anyenum anyenum' },
 { oid => '3515', descr => 'hash',
-  proname => 'hashenum', prorettype => 'int4', proargtypes => 'anyenum',
-  prosrc => 'hashenum' },
+  proname => 'hashenum', prorettype => 'int4', proargtypes => 'anyenum' },
 { oid => '3414', descr => 'hash',
   proname => 'hashenumextended', prorettype => 'int8',
-  proargtypes => 'anyenum int8', prosrc => 'hashenumextended' },
+  proargtypes => 'anyenum int8' },
 { oid => '3524', descr => 'smaller of two',
   proname => 'enum_smaller', prorettype => 'anyenum',
-  proargtypes => 'anyenum anyenum', prosrc => 'enum_smaller' },
+  proargtypes => 'anyenum anyenum' },
 { oid => '3525', descr => 'larger of two',
   proname => 'enum_larger', prorettype => 'anyenum',
-  proargtypes => 'anyenum anyenum', prosrc => 'enum_larger' },
+  proargtypes => 'anyenum anyenum' },
 { oid => '3526', descr => 'maximum value of all enum input values',
   proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'anyenum',
   proargtypes => 'anyenum', prosrc => 'aggregate_dummy' },
@@ -8487,10 +7678,10 @@
   proargtypes => 'anyenum', prosrc => 'aggregate_dummy' },
 { oid => '3528', descr => 'first value of the input enum type',
   proname => 'enum_first', proisstrict => 'f', provolatile => 's',
-  prorettype => 'anyenum', proargtypes => 'anyenum', prosrc => 'enum_first' },
+  prorettype => 'anyenum', proargtypes => 'anyenum' },
 { oid => '3529', descr => 'last value of the input enum type',
   proname => 'enum_last', proisstrict => 'f', provolatile => 's',
-  prorettype => 'anyenum', proargtypes => 'anyenum', prosrc => 'enum_last' },
+  prorettype => 'anyenum', proargtypes => 'anyenum' },
 { oid => '3530',
   descr => 'range between the two given enum values, as an ordered array',
   proname => 'enum_range', proisstrict => 'f', provolatile => 's',
@@ -8502,64 +7693,56 @@
   prosrc => 'enum_range_all' },
 { oid => '3532', descr => 'I/O',
   proname => 'enum_recv', provolatile => 's', prorettype => 'anyenum',
-  proargtypes => 'internal oid', prosrc => 'enum_recv' },
+  proargtypes => 'internal oid' },
 { oid => '3533', descr => 'I/O',
   proname => 'enum_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'anyenum', prosrc => 'enum_send' },
+  proargtypes => 'anyenum' },
 
 # text search stuff
 { oid => '3610', descr => 'I/O',
-  proname => 'tsvectorin', prorettype => 'tsvector', proargtypes => 'cstring',
-  prosrc => 'tsvectorin' },
+  proname => 'tsvectorin', prorettype => 'tsvector', proargtypes => 'cstring' },
 { oid => '3639', descr => 'I/O',
   proname => 'tsvectorrecv', prorettype => 'tsvector',
-  proargtypes => 'internal', prosrc => 'tsvectorrecv' },
+  proargtypes => 'internal' },
 { oid => '3611', descr => 'I/O',
-  proname => 'tsvectorout', prorettype => 'cstring', proargtypes => 'tsvector',
-  prosrc => 'tsvectorout' },
+  proname => 'tsvectorout', prorettype => 'cstring', proargtypes => 'tsvector' },
 { oid => '3638', descr => 'I/O',
-  proname => 'tsvectorsend', prorettype => 'bytea', proargtypes => 'tsvector',
-  prosrc => 'tsvectorsend' },
+  proname => 'tsvectorsend', prorettype => 'bytea', proargtypes => 'tsvector' },
 { oid => '3612', descr => 'I/O',
-  proname => 'tsqueryin', prorettype => 'tsquery', proargtypes => 'cstring',
-  prosrc => 'tsqueryin' },
+  proname => 'tsqueryin', prorettype => 'tsquery', proargtypes => 'cstring' },
 { oid => '3641', descr => 'I/O',
-  proname => 'tsqueryrecv', prorettype => 'tsquery', proargtypes => 'internal',
-  prosrc => 'tsqueryrecv' },
+  proname => 'tsqueryrecv', prorettype => 'tsquery', proargtypes => 'internal' },
 { oid => '3613', descr => 'I/O',
-  proname => 'tsqueryout', prorettype => 'cstring', proargtypes => 'tsquery',
-  prosrc => 'tsqueryout' },
+  proname => 'tsqueryout', prorettype => 'cstring', proargtypes => 'tsquery' },
 { oid => '3640', descr => 'I/O',
-  proname => 'tsquerysend', prorettype => 'bytea', proargtypes => 'tsquery',
-  prosrc => 'tsquerysend' },
+  proname => 'tsquerysend', prorettype => 'bytea', proargtypes => 'tsquery' },
 { oid => '3646', descr => 'I/O',
-  proname => 'gtsvectorin', prorettype => 'gtsvector', proargtypes => 'cstring',
-  prosrc => 'gtsvectorin' },
+  proname => 'gtsvectorin', prorettype => 'gtsvector', proargtypes => 'cstring' },
 { oid => '3647', descr => 'I/O',
   proname => 'gtsvectorout', prorettype => 'cstring',
-  proargtypes => 'gtsvector', prosrc => 'gtsvectorout' },
+  proargtypes => 'gtsvector' },
 
 { oid => '3616',
   proname => 'tsvector_lt', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_lt' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3617',
   proname => 'tsvector_le', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_le' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3618',
   proname => 'tsvector_eq', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_eq' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3619',
   proname => 'tsvector_ne', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_ne' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3620',
   proname => 'tsvector_ge', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_ge' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3621',
   proname => 'tsvector_gt', prorettype => 'bool',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_gt' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3622', descr => 'less-equal-greater',
   proname => 'tsvector_cmp', prorettype => 'int4',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_cmp' },
+  proargtypes => 'tsvector tsvector' },
 
 { oid => '3711', descr => 'number of lexemes',
   proname => 'length', prorettype => 'int4', proargtypes => 'tsvector',
@@ -8576,7 +7759,7 @@
   prosrc => 'tsvector_setweight_by_filter' },
 { oid => '3625',
   proname => 'tsvector_concat', prorettype => 'tsvector',
-  proargtypes => 'tsvector tsvector', prosrc => 'tsvector_concat' },
+  proargtypes => 'tsvector tsvector' },
 { oid => '3321', descr => 'delete lexeme',
   proname => 'ts_delete', prorettype => 'tsvector',
   proargtypes => 'tsvector text', prosrc => 'tsvector_delete_str' },
@@ -8591,10 +7774,10 @@
   prosrc => 'tsvector_unnest' },
 { oid => '3326', descr => 'convert tsvector to array of lexemes',
   proname => 'tsvector_to_array', prorettype => '_text',
-  proargtypes => 'tsvector', prosrc => 'tsvector_to_array' },
+  proargtypes => 'tsvector' },
 { oid => '3327', descr => 'build tsvector from array of lexemes',
   proname => 'array_to_tsvector', prorettype => 'tsvector',
-  proargtypes => '_text', prosrc => 'array_to_tsvector' },
+  proargtypes => '_text' },
 { oid => '3319',
   descr => 'delete lexemes that do not have one of the given weights',
   proname => 'ts_filter', prorettype => 'tsvector',
@@ -8602,40 +7785,38 @@
 
 { oid => '3634',
   proname => 'ts_match_vq', prorettype => 'bool',
-  proargtypes => 'tsvector tsquery', prosrc => 'ts_match_vq' },
+  proargtypes => 'tsvector tsquery' },
 { oid => '3635',
   proname => 'ts_match_qv', prorettype => 'bool',
-  proargtypes => 'tsquery tsvector', prosrc => 'ts_match_qv' },
+  proargtypes => 'tsquery tsvector' },
 { oid => '3760',
   proname => 'ts_match_tt', procost => '100', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'text text', prosrc => 'ts_match_tt' },
+  prorettype => 'bool', proargtypes => 'text text' },
 { oid => '3761',
   proname => 'ts_match_tq', procost => '100', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'text tsquery',
-  prosrc => 'ts_match_tq' },
+  prorettype => 'bool', proargtypes => 'text tsquery' },
 
 { oid => '3648', descr => 'GiST tsvector support',
   proname => 'gtsvector_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gtsvector_compress' },
+  proargtypes => 'internal' },
 { oid => '3649', descr => 'GiST tsvector support',
   proname => 'gtsvector_decompress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gtsvector_decompress' },
+  proargtypes => 'internal' },
 { oid => '3650', descr => 'GiST tsvector support',
   proname => 'gtsvector_picksplit', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'gtsvector_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3651', descr => 'GiST tsvector support',
   proname => 'gtsvector_union', prorettype => 'gtsvector',
-  proargtypes => 'internal internal', prosrc => 'gtsvector_union' },
+  proargtypes => 'internal internal' },
 { oid => '3652', descr => 'GiST tsvector support',
   proname => 'gtsvector_same', prorettype => 'internal',
-  proargtypes => 'gtsvector gtsvector internal', prosrc => 'gtsvector_same' },
+  proargtypes => 'gtsvector gtsvector internal' },
 { oid => '3653', descr => 'GiST tsvector support',
   proname => 'gtsvector_penalty', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'gtsvector_penalty' },
+  proargtypes => 'internal internal internal' },
 { oid => '3654', descr => 'GiST tsvector support',
   proname => 'gtsvector_consistent', prorettype => 'bool',
-  proargtypes => 'internal tsvector int2 oid internal',
-  prosrc => 'gtsvector_consistent' },
+  proargtypes => 'internal tsvector int2 oid internal' },
 { oid => '3790', descr => 'GiST tsvector support (obsolete)',
   proname => 'gtsvector_consistent', prorettype => 'bool',
   proargtypes => 'internal gtsvector int4 oid internal',
@@ -8643,26 +7824,22 @@
 
 { oid => '3656', descr => 'GIN tsvector support',
   proname => 'gin_extract_tsvector', prorettype => 'internal',
-  proargtypes => 'tsvector internal internal',
-  prosrc => 'gin_extract_tsvector' },
+  proargtypes => 'tsvector internal internal' },
 { oid => '3657', descr => 'GIN tsvector support',
   proname => 'gin_extract_tsquery', prorettype => 'internal',
-  proargtypes => 'tsvector internal int2 internal internal internal internal',
-  prosrc => 'gin_extract_tsquery' },
+  proargtypes => 'tsvector internal int2 internal internal internal internal' },
 { oid => '3658', descr => 'GIN tsvector support',
   proname => 'gin_tsquery_consistent', prorettype => 'bool',
-  proargtypes => 'internal int2 tsvector int4 internal internal internal internal',
-  prosrc => 'gin_tsquery_consistent' },
+  proargtypes => 'internal int2 tsvector int4 internal internal internal internal' },
 { oid => '3921', descr => 'GIN tsvector support',
   proname => 'gin_tsquery_triconsistent', prorettype => 'char',
-  proargtypes => 'internal int2 tsvector int4 internal internal internal',
-  prosrc => 'gin_tsquery_triconsistent' },
+  proargtypes => 'internal int2 tsvector int4 internal internal internal' },
 { oid => '3724', descr => 'GIN tsvector support',
   proname => 'gin_cmp_tslexeme', prorettype => 'int4',
-  proargtypes => 'text text', prosrc => 'gin_cmp_tslexeme' },
+  proargtypes => 'text text' },
 { oid => '2700', descr => 'GIN tsvector support',
   proname => 'gin_cmp_prefix', prorettype => 'int4',
-  proargtypes => 'text text int2 internal', prosrc => 'gin_cmp_prefix' },
+  proargtypes => 'text text int2 internal' },
 { oid => '3077', descr => 'GIN tsvector support (obsolete)',
   proname => 'gin_extract_tsvector', prorettype => 'internal',
   proargtypes => 'tsvector internal', prosrc => 'gin_extract_tsvector_2args' },
@@ -8685,53 +7862,51 @@
 
 { oid => '3789', descr => 'clean up GIN pending list',
   proname => 'gin_clean_pending_list', provolatile => 'v', proparallel => 'u',
-  prorettype => 'int8', proargtypes => 'regclass',
-  prosrc => 'gin_clean_pending_list' },
+  prorettype => 'int8', proargtypes => 'regclass' },
 
 { oid => '3662',
   proname => 'tsquery_lt', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_lt' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3663',
   proname => 'tsquery_le', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_le' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3664',
   proname => 'tsquery_eq', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_eq' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3665',
   proname => 'tsquery_ne', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_ne' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3666',
   proname => 'tsquery_ge', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_ge' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3667',
   proname => 'tsquery_gt', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_gt' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3668', descr => 'less-equal-greater',
   proname => 'tsquery_cmp', prorettype => 'int4',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_cmp' },
+  proargtypes => 'tsquery tsquery' },
 
 { oid => '3669',
   proname => 'tsquery_and', prorettype => 'tsquery',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_and' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3670',
   proname => 'tsquery_or', prorettype => 'tsquery',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_or' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '5003',
   proname => 'tsquery_phrase', prorettype => 'tsquery',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsquery_phrase' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '5004', descr => 'phrase-concatenate with distance',
   proname => 'tsquery_phrase', prorettype => 'tsquery',
   proargtypes => 'tsquery tsquery int4', prosrc => 'tsquery_phrase_distance' },
 { oid => '3671',
-  proname => 'tsquery_not', prorettype => 'tsquery', proargtypes => 'tsquery',
-  prosrc => 'tsquery_not' },
+  proname => 'tsquery_not', prorettype => 'tsquery', proargtypes => 'tsquery' },
 
 { oid => '3691',
   proname => 'tsq_mcontains', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsq_mcontains' },
+  proargtypes => 'tsquery tsquery' },
 { oid => '3692',
   proname => 'tsq_mcontained', prorettype => 'bool',
-  proargtypes => 'tsquery tsquery', prosrc => 'tsq_mcontained' },
+  proargtypes => 'tsquery tsquery' },
 
 { oid => '3672', descr => 'number of nodes',
   proname => 'numnode', prorettype => 'int4', proargtypes => 'tsquery',
@@ -8750,23 +7925,22 @@
 
 { oid => '3695', descr => 'GiST tsquery support',
   proname => 'gtsquery_compress', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'gtsquery_compress' },
+  proargtypes => 'internal' },
 { oid => '3697', descr => 'GiST tsquery support',
   proname => 'gtsquery_picksplit', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'gtsquery_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3698', descr => 'GiST tsquery support',
   proname => 'gtsquery_union', prorettype => 'int8',
-  proargtypes => 'internal internal', prosrc => 'gtsquery_union' },
+  proargtypes => 'internal internal' },
 { oid => '3699', descr => 'GiST tsquery support',
   proname => 'gtsquery_same', prorettype => 'internal',
-  proargtypes => 'int8 int8 internal', prosrc => 'gtsquery_same' },
+  proargtypes => 'int8 int8 internal' },
 { oid => '3700', descr => 'GiST tsquery support',
   proname => 'gtsquery_penalty', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'gtsquery_penalty' },
+  proargtypes => 'internal internal internal' },
 { oid => '3701', descr => 'GiST tsquery support',
   proname => 'gtsquery_consistent', prorettype => 'bool',
-  proargtypes => 'internal tsquery int2 oid internal',
-  prosrc => 'gtsquery_consistent' },
+  proargtypes => 'internal tsquery int2 oid internal' },
 { oid => '3793', descr => 'GiST tsquery support (obsolete)',
   proname => 'gtsquery_consistent', prorettype => 'bool',
   proargtypes => 'internal internal int4 oid internal',
@@ -8774,14 +7948,13 @@
 
 { oid => '3686', descr => 'restriction selectivity of tsvector @@ tsquery',
   proname => 'tsmatchsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'tsmatchsel' },
+  proargtypes => 'internal oid internal int4' },
 { oid => '3687', descr => 'join selectivity of tsvector @@ tsquery',
   proname => 'tsmatchjoinsel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int2 internal',
-  prosrc => 'tsmatchjoinsel' },
+  proargtypes => 'internal oid internal int2 internal' },
 { oid => '3688', descr => 'tsvector typanalyze',
   proname => 'ts_typanalyze', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'internal', prosrc => 'ts_typanalyze' },
+  proargtypes => 'internal' },
 
 { oid => '3689', descr => 'statistics of tsvector column',
   proname => 'ts_stat', procost => '10', prorows => '10000', proretset => 't',
@@ -8846,55 +8019,50 @@
 
 { oid => '3717', descr => '(internal)',
   proname => 'prsd_start', prorettype => 'internal',
-  proargtypes => 'internal int4', prosrc => 'prsd_start' },
+  proargtypes => 'internal int4' },
 { oid => '3718', descr => '(internal)',
   proname => 'prsd_nexttoken', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'prsd_nexttoken' },
+  proargtypes => 'internal internal internal' },
 { oid => '3719', descr => '(internal)',
-  proname => 'prsd_end', prorettype => 'void', proargtypes => 'internal',
-  prosrc => 'prsd_end' },
+  proname => 'prsd_end', prorettype => 'void', proargtypes => 'internal' },
 { oid => '3720', descr => '(internal)',
   proname => 'prsd_headline', prorettype => 'internal',
-  proargtypes => 'internal internal tsquery', prosrc => 'prsd_headline' },
+  proargtypes => 'internal internal tsquery' },
 { oid => '3721', descr => '(internal)',
   proname => 'prsd_lextype', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'prsd_lextype' },
+  proargtypes => 'internal' },
 
 { oid => '3723', descr => 'normalize one word by dictionary',
   proname => 'ts_lexize', prorettype => '_text',
-  proargtypes => 'regdictionary text', prosrc => 'ts_lexize' },
+  proargtypes => 'regdictionary text' },
 
 { oid => '3725', descr => '(internal)',
   proname => 'dsimple_init', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'dsimple_init' },
+  proargtypes => 'internal' },
 { oid => '3726', descr => '(internal)',
   proname => 'dsimple_lexize', prorettype => 'internal',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'dsimple_lexize' },
+  proargtypes => 'internal internal internal internal' },
 
 { oid => '3728', descr => '(internal)',
   proname => 'dsynonym_init', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'dsynonym_init' },
+  proargtypes => 'internal' },
 { oid => '3729', descr => '(internal)',
   proname => 'dsynonym_lexize', prorettype => 'internal',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'dsynonym_lexize' },
+  proargtypes => 'internal internal internal internal' },
 
 { oid => '3731', descr => '(internal)',
   proname => 'dispell_init', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'dispell_init' },
+  proargtypes => 'internal' },
 { oid => '3732', descr => '(internal)',
   proname => 'dispell_lexize', prorettype => 'internal',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'dispell_lexize' },
+  proargtypes => 'internal internal internal internal' },
 
 { oid => '3740', descr => '(internal)',
   proname => 'thesaurus_init', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'thesaurus_init' },
+  proargtypes => 'internal' },
 { oid => '3741', descr => '(internal)',
   proname => 'thesaurus_lexize', prorettype => 'internal',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'thesaurus_lexize' },
+  proargtypes => 'internal internal internal internal' },
 
 { oid => '3743', descr => 'generate headline',
   proname => 'ts_headline', procost => '100', prorettype => 'text',
@@ -8909,8 +8077,7 @@
   prosrc => 'ts_headline_opt' },
 { oid => '3755', descr => 'generate headline',
   proname => 'ts_headline', procost => '100', provolatile => 's',
-  prorettype => 'text', proargtypes => 'text tsquery',
-  prosrc => 'ts_headline' },
+  prorettype => 'text', proargtypes => 'text tsquery' },
 
 { oid => '4201', descr => 'generate headline from jsonb',
   proname => 'ts_headline', procost => '100', prorettype => 'jsonb',
@@ -8962,37 +8129,33 @@
   proargtypes => 'regconfig text', prosrc => 'websearch_to_tsquery_byid' },
 { oid => '3749', descr => 'transform to tsvector',
   proname => 'to_tsvector', procost => '100', provolatile => 's',
-  prorettype => 'tsvector', proargtypes => 'text', prosrc => 'to_tsvector' },
+  prorettype => 'tsvector', proargtypes => 'text' },
 { oid => '3750', descr => 'make tsquery',
   proname => 'to_tsquery', procost => '100', provolatile => 's',
-  prorettype => 'tsquery', proargtypes => 'text', prosrc => 'to_tsquery' },
+  prorettype => 'tsquery', proargtypes => 'text' },
 { oid => '3751', descr => 'transform to tsquery',
   proname => 'plainto_tsquery', procost => '100', provolatile => 's',
-  prorettype => 'tsquery', proargtypes => 'text', prosrc => 'plainto_tsquery' },
+  prorettype => 'tsquery', proargtypes => 'text' },
 { oid => '5001', descr => 'transform to tsquery',
   proname => 'phraseto_tsquery', procost => '100', provolatile => 's',
-  prorettype => 'tsquery', proargtypes => 'text',
-  prosrc => 'phraseto_tsquery' },
+  prorettype => 'tsquery', proargtypes => 'text' },
 { oid => '5009', descr => 'transform to tsquery',
   proname => 'websearch_to_tsquery', procost => '100', provolatile => 's',
-  prorettype => 'tsquery', proargtypes => 'text',
-  prosrc => 'websearch_to_tsquery' },
+  prorettype => 'tsquery', proargtypes => 'text' },
 { oid => '4209', descr => 'transform string values from jsonb to tsvector',
   proname => 'to_tsvector', procost => '100', provolatile => 's',
   prorettype => 'tsvector', proargtypes => 'jsonb',
   prosrc => 'jsonb_string_to_tsvector' },
 { oid => '4213', descr => 'transform specified values from jsonb to tsvector',
   proname => 'jsonb_to_tsvector', procost => '100', provolatile => 's',
-  prorettype => 'tsvector', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_to_tsvector' },
+  prorettype => 'tsvector', proargtypes => 'jsonb jsonb' },
 { oid => '4210', descr => 'transform string values from json to tsvector',
   proname => 'to_tsvector', procost => '100', provolatile => 's',
   prorettype => 'tsvector', proargtypes => 'json',
   prosrc => 'json_string_to_tsvector' },
 { oid => '4215', descr => 'transform specified values from json to tsvector',
   proname => 'json_to_tsvector', procost => '100', provolatile => 's',
-  prorettype => 'tsvector', proargtypes => 'json jsonb',
-  prosrc => 'json_to_tsvector' },
+  prorettype => 'tsvector', proargtypes => 'json jsonb' },
 { oid => '4211', descr => 'transform string values from jsonb to tsvector',
   proname => 'to_tsvector', procost => '100', prorettype => 'tsvector',
   proargtypes => 'regconfig jsonb', prosrc => 'jsonb_string_to_tsvector_byid' },
@@ -9017,79 +8180,67 @@
 
 { oid => '3759', descr => 'get current tsearch configuration',
   proname => 'get_current_ts_config', provolatile => 's',
-  prorettype => 'regconfig', proargtypes => '',
-  prosrc => 'get_current_ts_config' },
+  prorettype => 'regconfig', proargtypes => '' },
 
 { oid => '3736', descr => 'I/O',
   proname => 'regconfigin', provolatile => 's', prorettype => 'regconfig',
-  proargtypes => 'cstring', prosrc => 'regconfigin' },
+  proargtypes => 'cstring' },
 { oid => '3737', descr => 'I/O',
   proname => 'regconfigout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regconfig', prosrc => 'regconfigout' },
+  proargtypes => 'regconfig' },
 { oid => '3738', descr => 'I/O',
   proname => 'regconfigrecv', prorettype => 'regconfig',
-  proargtypes => 'internal', prosrc => 'regconfigrecv' },
+  proargtypes => 'internal' },
 { oid => '3739', descr => 'I/O',
-  proname => 'regconfigsend', prorettype => 'bytea', proargtypes => 'regconfig',
-  prosrc => 'regconfigsend' },
+  proname => 'regconfigsend', prorettype => 'bytea', proargtypes => 'regconfig' },
 
 { oid => '3771', descr => 'I/O',
   proname => 'regdictionaryin', provolatile => 's',
-  prorettype => 'regdictionary', proargtypes => 'cstring',
-  prosrc => 'regdictionaryin' },
+  prorettype => 'regdictionary', proargtypes => 'cstring' },
 { oid => '3772', descr => 'I/O',
   proname => 'regdictionaryout', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'regdictionary', prosrc => 'regdictionaryout' },
+  proargtypes => 'regdictionary' },
 { oid => '3773', descr => 'I/O',
   proname => 'regdictionaryrecv', prorettype => 'regdictionary',
-  proargtypes => 'internal', prosrc => 'regdictionaryrecv' },
+  proargtypes => 'internal' },
 { oid => '3774', descr => 'I/O',
   proname => 'regdictionarysend', prorettype => 'bytea',
-  proargtypes => 'regdictionary', prosrc => 'regdictionarysend' },
+  proargtypes => 'regdictionary' },
 
 # jsonb
 { oid => '3806', descr => 'I/O',
-  proname => 'jsonb_in', prorettype => 'jsonb', proargtypes => 'cstring',
-  prosrc => 'jsonb_in' },
+  proname => 'jsonb_in', prorettype => 'jsonb', proargtypes => 'cstring' },
 { oid => '3805', descr => 'I/O',
-  proname => 'jsonb_recv', prorettype => 'jsonb', proargtypes => 'internal',
-  prosrc => 'jsonb_recv' },
+  proname => 'jsonb_recv', prorettype => 'jsonb', proargtypes => 'internal' },
 { oid => '3804', descr => 'I/O',
-  proname => 'jsonb_out', prorettype => 'cstring', proargtypes => 'jsonb',
-  prosrc => 'jsonb_out' },
+  proname => 'jsonb_out', prorettype => 'cstring', proargtypes => 'jsonb' },
 { oid => '3803', descr => 'I/O',
-  proname => 'jsonb_send', prorettype => 'bytea', proargtypes => 'jsonb',
-  prosrc => 'jsonb_send' },
+  proname => 'jsonb_send', prorettype => 'bytea', proargtypes => 'jsonb' },
 
 { oid => '3263', descr => 'map text array of key value pairs to jsonb object',
-  proname => 'jsonb_object', prorettype => 'jsonb', proargtypes => '_text',
-  prosrc => 'jsonb_object' },
+  proname => 'jsonb_object', prorettype => 'jsonb', proargtypes => '_text' },
 { oid => '3264', descr => 'map text array of key value pairs to jsonb object',
   proname => 'jsonb_object', prorettype => 'jsonb',
   proargtypes => '_text _text', prosrc => 'jsonb_object_two_arg' },
 { oid => '3787', descr => 'map input to jsonb',
   proname => 'to_jsonb', provolatile => 's', prorettype => 'jsonb',
-  proargtypes => 'anyelement', prosrc => 'to_jsonb' },
+  proargtypes => 'anyelement' },
 { oid => '3265', descr => 'jsonb aggregate transition function',
   proname => 'jsonb_agg_transfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'internal', proargtypes => 'internal anyelement',
-  prosrc => 'jsonb_agg_transfn' },
+  prorettype => 'internal', proargtypes => 'internal anyelement' },
 { oid => '3266', descr => 'jsonb aggregate final function',
   proname => 'jsonb_agg_finalfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'jsonb', proargtypes => 'internal',
-  prosrc => 'jsonb_agg_finalfn' },
+  prorettype => 'jsonb', proargtypes => 'internal' },
 { oid => '3267', descr => 'aggregate input into jsonb',
   proname => 'jsonb_agg', prokind => 'a', proisstrict => 'f',
   provolatile => 's', prorettype => 'jsonb', proargtypes => 'anyelement',
   prosrc => 'aggregate_dummy' },
 { oid => '3268', descr => 'jsonb object aggregate transition function',
   proname => 'jsonb_object_agg_transfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'internal', proargtypes => 'internal any any',
-  prosrc => 'jsonb_object_agg_transfn' },
+  prorettype => 'internal', proargtypes => 'internal any any' },
 { oid => '3269', descr => 'jsonb object aggregate final function',
   proname => 'jsonb_object_agg_finalfn', proisstrict => 'f', provolatile => 's',
-  prorettype => 'jsonb', proargtypes => 'internal',
-  prosrc => 'jsonb_object_agg_finalfn' },
+  prorettype => 'jsonb', proargtypes => 'internal' },
 { oid => '3270', descr => 'aggregate inputs into jsonb object',
   proname => 'jsonb_object_agg', prokind => 'a', proisstrict => 'f',
   prorettype => 'jsonb', proargtypes => 'any any',
@@ -9097,8 +8248,7 @@
 { oid => '3271', descr => 'build a jsonb array from any inputs',
   proname => 'jsonb_build_array', provariadic => 'any', proisstrict => 'f',
   provolatile => 's', prorettype => 'jsonb', proargtypes => 'any',
-  proallargtypes => '{any}', proargmodes => '{v}',
-  prosrc => 'jsonb_build_array' },
+  proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3272', descr => 'build an empty jsonb array',
   proname => 'jsonb_build_array', proisstrict => 'f', provolatile => 's',
   prorettype => 'jsonb', proargtypes => '',
@@ -9107,171 +8257,143 @@
   descr => 'build a jsonb object from pairwise key/value inputs',
   proname => 'jsonb_build_object', provariadic => 'any', proisstrict => 'f',
   provolatile => 's', prorettype => 'jsonb', proargtypes => 'any',
-  proallargtypes => '{any}', proargmodes => '{v}',
-  prosrc => 'jsonb_build_object' },
+  proallargtypes => '{any}', proargmodes => '{v}' },
 { oid => '3274', descr => 'build an empty jsonb object',
   proname => 'jsonb_build_object', proisstrict => 'f', provolatile => 's',
   prorettype => 'jsonb', proargtypes => '',
   prosrc => 'jsonb_build_object_noargs' },
 { oid => '3262', descr => 'remove object fields with null values from jsonb',
-  proname => 'jsonb_strip_nulls', prorettype => 'jsonb', proargtypes => 'jsonb',
-  prosrc => 'jsonb_strip_nulls' },
+  proname => 'jsonb_strip_nulls', prorettype => 'jsonb', proargtypes => 'jsonb' },
 
 { oid => '3478',
   proname => 'jsonb_object_field', prorettype => 'jsonb',
-  proargtypes => 'jsonb text', proargnames => '{from_json, field_name}',
-  prosrc => 'jsonb_object_field' },
+  proargtypes => 'jsonb text', proargnames => '{from_json, field_name}' },
 { oid => '3214',
   proname => 'jsonb_object_field_text', prorettype => 'text',
-  proargtypes => 'jsonb text', proargnames => '{from_json, field_name}',
-  prosrc => 'jsonb_object_field_text' },
+  proargtypes => 'jsonb text', proargnames => '{from_json, field_name}' },
 { oid => '3215',
   proname => 'jsonb_array_element', prorettype => 'jsonb',
-  proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}',
-  prosrc => 'jsonb_array_element' },
+  proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}' },
 { oid => '3216',
   proname => 'jsonb_array_element_text', prorettype => 'text',
-  proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}',
-  prosrc => 'jsonb_array_element_text' },
+  proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}' },
 { oid => '3217', descr => 'get value from jsonb with path elements',
   proname => 'jsonb_extract_path', provariadic => 'text', prorettype => 'jsonb',
   proargtypes => 'jsonb _text', proallargtypes => '{jsonb,_text}',
-  proargmodes => '{i,v}', proargnames => '{from_json,path_elems}',
-  prosrc => 'jsonb_extract_path' },
+  proargmodes => '{i,v}', proargnames => '{from_json,path_elems}' },
 { oid => '3940', descr => 'get value from jsonb as text with path elements',
   proname => 'jsonb_extract_path_text', provariadic => 'text',
   prorettype => 'text', proargtypes => 'jsonb _text',
   proallargtypes => '{jsonb,_text}', proargmodes => '{i,v}',
-  proargnames => '{from_json,path_elems}',
-  prosrc => 'jsonb_extract_path_text' },
+  proargnames => '{from_json,path_elems}' },
 { oid => '3219', descr => 'elements of a jsonb array',
   proname => 'jsonb_array_elements', prorows => '100', proretset => 't',
   prorettype => 'jsonb', proargtypes => 'jsonb',
   proallargtypes => '{jsonb,jsonb}', proargmodes => '{i,o}',
-  proargnames => '{from_json,value}', prosrc => 'jsonb_array_elements' },
+  proargnames => '{from_json,value}' },
 { oid => '3465', descr => 'elements of jsonb array',
   proname => 'jsonb_array_elements_text', prorows => '100', proretset => 't',
   prorettype => 'text', proargtypes => 'jsonb',
   proallargtypes => '{jsonb,text}', proargmodes => '{i,o}',
-  proargnames => '{from_json,value}', prosrc => 'jsonb_array_elements_text' },
+  proargnames => '{from_json,value}' },
 { oid => '3207', descr => 'length of jsonb array',
-  proname => 'jsonb_array_length', prorettype => 'int4', proargtypes => 'jsonb',
-  prosrc => 'jsonb_array_length' },
+  proname => 'jsonb_array_length', prorettype => 'int4', proargtypes => 'jsonb' },
 { oid => '3931', descr => 'get jsonb object keys',
   proname => 'jsonb_object_keys', prorows => '100', proretset => 't',
-  prorettype => 'text', proargtypes => 'jsonb', prosrc => 'jsonb_object_keys' },
+  prorettype => 'text', proargtypes => 'jsonb' },
 { oid => '3208', descr => 'key value pairs of a jsonb object',
   proname => 'jsonb_each', prorows => '100', proretset => 't',
   prorettype => 'record', proargtypes => 'jsonb',
   proallargtypes => '{jsonb,text,jsonb}', proargmodes => '{i,o,o}',
-  proargnames => '{from_json,key,value}', prosrc => 'jsonb_each' },
+  proargnames => '{from_json,key,value}' },
 { oid => '3932', descr => 'key value pairs of a jsonb object',
   proname => 'jsonb_each_text', prorows => '100', proretset => 't',
   prorettype => 'record', proargtypes => 'jsonb',
   proallargtypes => '{jsonb,text,text}', proargmodes => '{i,o,o}',
-  proargnames => '{from_json,key,value}', prosrc => 'jsonb_each_text' },
+  proargnames => '{from_json,key,value}' },
 { oid => '3209', descr => 'get record fields from a jsonb object',
   proname => 'jsonb_populate_record', proisstrict => 'f', provolatile => 's',
-  prorettype => 'anyelement', proargtypes => 'anyelement jsonb',
-  prosrc => 'jsonb_populate_record' },
+  prorettype => 'anyelement', proargtypes => 'anyelement jsonb' },
 { oid => '3475',
   descr => 'get set of records with fields from a jsonb array of objects',
   proname => 'jsonb_populate_recordset', prorows => '100', proisstrict => 'f',
   proretset => 't', provolatile => 's', prorettype => 'anyelement',
-  proargtypes => 'anyelement jsonb', prosrc => 'jsonb_populate_recordset' },
+  proargtypes => 'anyelement jsonb' },
 { oid => '3490', descr => 'get record fields from a jsonb object',
   proname => 'jsonb_to_record', provolatile => 's', prorettype => 'record',
-  proargtypes => 'jsonb', prosrc => 'jsonb_to_record' },
+  proargtypes => 'jsonb' },
 { oid => '3491',
   descr => 'get set of records with fields from a jsonb array of objects',
   proname => 'jsonb_to_recordset', prorows => '100', proisstrict => 'f',
   proretset => 't', provolatile => 's', prorettype => 'record',
-  proargtypes => 'jsonb', prosrc => 'jsonb_to_recordset' },
+  proargtypes => 'jsonb' },
 { oid => '3210', descr => 'get the type of a jsonb value',
-  proname => 'jsonb_typeof', prorettype => 'text', proargtypes => 'jsonb',
-  prosrc => 'jsonb_typeof' },
+  proname => 'jsonb_typeof', prorettype => 'text', proargtypes => 'jsonb' },
 { oid => '4038',
-  proname => 'jsonb_ne', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_ne' },
+  proname => 'jsonb_ne', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4039',
-  proname => 'jsonb_lt', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_lt' },
+  proname => 'jsonb_lt', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4040',
-  proname => 'jsonb_gt', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_gt' },
+  proname => 'jsonb_gt', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4041',
-  proname => 'jsonb_le', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_le' },
+  proname => 'jsonb_le', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4042',
-  proname => 'jsonb_ge', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_ge' },
+  proname => 'jsonb_ge', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4043',
-  proname => 'jsonb_eq', prorettype => 'bool', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_eq' },
+  proname => 'jsonb_eq', prorettype => 'bool', proargtypes => 'jsonb jsonb' },
 { oid => '4044', descr => 'less-equal-greater',
-  proname => 'jsonb_cmp', prorettype => 'int4', proargtypes => 'jsonb jsonb',
-  prosrc => 'jsonb_cmp' },
+  proname => 'jsonb_cmp', prorettype => 'int4', proargtypes => 'jsonb jsonb' },
 { oid => '4045', descr => 'hash',
-  proname => 'jsonb_hash', prorettype => 'int4', proargtypes => 'jsonb',
-  prosrc => 'jsonb_hash' },
+  proname => 'jsonb_hash', prorettype => 'int4', proargtypes => 'jsonb' },
 { oid => '3416', descr => 'hash',
   proname => 'jsonb_hash_extended', prorettype => 'int8',
-  proargtypes => 'jsonb int8', prosrc => 'jsonb_hash_extended' },
+  proargtypes => 'jsonb int8' },
 { oid => '4046',
   proname => 'jsonb_contains', prorettype => 'bool',
-  proargtypes => 'jsonb jsonb', prosrc => 'jsonb_contains' },
+  proargtypes => 'jsonb jsonb' },
 { oid => '4047',
-  proname => 'jsonb_exists', prorettype => 'bool', proargtypes => 'jsonb text',
-  prosrc => 'jsonb_exists' },
+  proname => 'jsonb_exists', prorettype => 'bool', proargtypes => 'jsonb text' },
 { oid => '4048',
   proname => 'jsonb_exists_any', prorettype => 'bool',
-  proargtypes => 'jsonb _text', prosrc => 'jsonb_exists_any' },
+  proargtypes => 'jsonb _text' },
 { oid => '4049',
   proname => 'jsonb_exists_all', prorettype => 'bool',
-  proargtypes => 'jsonb _text', prosrc => 'jsonb_exists_all' },
+  proargtypes => 'jsonb _text' },
 { oid => '4050',
   proname => 'jsonb_contained', prorettype => 'bool',
-  proargtypes => 'jsonb jsonb', prosrc => 'jsonb_contained' },
+  proargtypes => 'jsonb jsonb' },
 { oid => '3480', descr => 'GIN support',
   proname => 'gin_compare_jsonb', prorettype => 'int4',
-  proargtypes => 'text text', prosrc => 'gin_compare_jsonb' },
+  proargtypes => 'text text' },
 { oid => '3482', descr => 'GIN support',
   proname => 'gin_extract_jsonb', prorettype => 'internal',
-  proargtypes => 'jsonb internal internal', prosrc => 'gin_extract_jsonb' },
+  proargtypes => 'jsonb internal internal' },
 { oid => '3483', descr => 'GIN support',
   proname => 'gin_extract_jsonb_query', prorettype => 'internal',
-  proargtypes => 'jsonb internal int2 internal internal internal internal',
-  prosrc => 'gin_extract_jsonb_query' },
+  proargtypes => 'jsonb internal int2 internal internal internal internal' },
 { oid => '3484', descr => 'GIN support',
   proname => 'gin_consistent_jsonb', prorettype => 'bool',
-  proargtypes => 'internal int2 jsonb int4 internal internal internal internal',
-  prosrc => 'gin_consistent_jsonb' },
+  proargtypes => 'internal int2 jsonb int4 internal internal internal internal' },
 { oid => '3488', descr => 'GIN support',
   proname => 'gin_triconsistent_jsonb', prorettype => 'char',
-  proargtypes => 'internal int2 jsonb int4 internal internal internal',
-  prosrc => 'gin_triconsistent_jsonb' },
+  proargtypes => 'internal int2 jsonb int4 internal internal internal' },
 { oid => '3485', descr => 'GIN support',
   proname => 'gin_extract_jsonb_path', prorettype => 'internal',
-  proargtypes => 'jsonb internal internal',
-  prosrc => 'gin_extract_jsonb_path' },
+  proargtypes => 'jsonb internal internal' },
 { oid => '3486', descr => 'GIN support',
   proname => 'gin_extract_jsonb_query_path', prorettype => 'internal',
-  proargtypes => 'jsonb internal int2 internal internal internal internal',
-  prosrc => 'gin_extract_jsonb_query_path' },
+  proargtypes => 'jsonb internal int2 internal internal internal internal' },
 { oid => '3487', descr => 'GIN support',
   proname => 'gin_consistent_jsonb_path', prorettype => 'bool',
-  proargtypes => 'internal int2 jsonb int4 internal internal internal internal',
-  prosrc => 'gin_consistent_jsonb_path' },
+  proargtypes => 'internal int2 jsonb int4 internal internal internal internal' },
 { oid => '3489', descr => 'GIN support',
   proname => 'gin_triconsistent_jsonb_path', prorettype => 'char',
-  proargtypes => 'internal int2 jsonb int4 internal internal internal',
-  prosrc => 'gin_triconsistent_jsonb_path' },
+  proargtypes => 'internal int2 jsonb int4 internal internal internal' },
 { oid => '3301',
   proname => 'jsonb_concat', prorettype => 'jsonb',
-  proargtypes => 'jsonb jsonb', prosrc => 'jsonb_concat' },
+  proargtypes => 'jsonb jsonb' },
 { oid => '3302',
-  proname => 'jsonb_delete', prorettype => 'jsonb', proargtypes => 'jsonb text',
-  prosrc => 'jsonb_delete' },
+  proname => 'jsonb_delete', prorettype => 'jsonb', proargtypes => 'jsonb text' },
 { oid => '3303',
   proname => 'jsonb_delete', prorettype => 'jsonb', proargtypes => 'jsonb int4',
   prosrc => 'jsonb_delete_idx' },
@@ -9282,130 +8404,116 @@
   prosrc => 'jsonb_delete_array' },
 { oid => '3304',
   proname => 'jsonb_delete_path', prorettype => 'jsonb',
-  proargtypes => 'jsonb _text', prosrc => 'jsonb_delete_path' },
+  proargtypes => 'jsonb _text' },
 { oid => '3305', descr => 'Set part of a jsonb',
   proname => 'jsonb_set', prorettype => 'jsonb',
-  proargtypes => 'jsonb _text jsonb bool', prosrc => 'jsonb_set' },
+  proargtypes => 'jsonb _text jsonb bool' },
 { oid => '3306', descr => 'Indented text from jsonb',
-  proname => 'jsonb_pretty', prorettype => 'text', proargtypes => 'jsonb',
-  prosrc => 'jsonb_pretty' },
+  proname => 'jsonb_pretty', prorettype => 'text', proargtypes => 'jsonb' },
 { oid => '3579', descr => 'Insert value into a jsonb',
   proname => 'jsonb_insert', prorettype => 'jsonb',
-  proargtypes => 'jsonb _text jsonb bool', prosrc => 'jsonb_insert' },
+  proargtypes => 'jsonb _text jsonb bool' },
 
 # txid
 { oid => '2939', descr => 'I/O',
   proname => 'txid_snapshot_in', prorettype => 'txid_snapshot',
-  proargtypes => 'cstring', prosrc => 'txid_snapshot_in' },
+  proargtypes => 'cstring' },
 { oid => '2940', descr => 'I/O',
   proname => 'txid_snapshot_out', prorettype => 'cstring',
-  proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_out' },
+  proargtypes => 'txid_snapshot' },
 { oid => '2941', descr => 'I/O',
   proname => 'txid_snapshot_recv', prorettype => 'txid_snapshot',
-  proargtypes => 'internal', prosrc => 'txid_snapshot_recv' },
+  proargtypes => 'internal' },
 { oid => '2942', descr => 'I/O',
   proname => 'txid_snapshot_send', prorettype => 'bytea',
-  proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_send' },
+  proargtypes => 'txid_snapshot' },
 { oid => '2943', descr => 'get current transaction ID',
   proname => 'txid_current', provolatile => 's', proparallel => 'u',
-  prorettype => 'int8', proargtypes => '', prosrc => 'txid_current' },
+  prorettype => 'int8', proargtypes => '' },
 { oid => '3348', descr => 'get current transaction ID',
   proname => 'txid_current_if_assigned', provolatile => 's', proparallel => 'u',
-  prorettype => 'int8', proargtypes => '',
-  prosrc => 'txid_current_if_assigned' },
+  prorettype => 'int8', proargtypes => '' },
 { oid => '2944', descr => 'get current snapshot',
   proname => 'txid_current_snapshot', provolatile => 's',
-  prorettype => 'txid_snapshot', proargtypes => '',
-  prosrc => 'txid_current_snapshot' },
+  prorettype => 'txid_snapshot', proargtypes => '' },
 { oid => '2945', descr => 'get xmin of snapshot',
   proname => 'txid_snapshot_xmin', prorettype => 'int8',
-  proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_xmin' },
+  proargtypes => 'txid_snapshot' },
 { oid => '2946', descr => 'get xmax of snapshot',
   proname => 'txid_snapshot_xmax', prorettype => 'int8',
-  proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_xmax' },
+  proargtypes => 'txid_snapshot' },
 { oid => '2947', descr => 'get set of in-progress txids in snapshot',
   proname => 'txid_snapshot_xip', prorows => '50', proretset => 't',
-  prorettype => 'int8', proargtypes => 'txid_snapshot',
-  prosrc => 'txid_snapshot_xip' },
+  prorettype => 'int8', proargtypes => 'txid_snapshot' },
 { oid => '2948', descr => 'is txid visible in snapshot?',
   proname => 'txid_visible_in_snapshot', prorettype => 'bool',
-  proargtypes => 'int8 txid_snapshot', prosrc => 'txid_visible_in_snapshot' },
+  proargtypes => 'int8 txid_snapshot' },
 { oid => '3360', descr => 'commit status of transaction',
   proname => 'txid_status', provolatile => 'v', prorettype => 'text',
-  proargtypes => 'int8', prosrc => 'txid_status' },
+  proargtypes => 'int8' },
 
 # record comparison using normal comparison rules
 { oid => '2981',
-  proname => 'record_eq', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_eq' },
+  proname => 'record_eq', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2982',
-  proname => 'record_ne', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_ne' },
+  proname => 'record_ne', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2983',
-  proname => 'record_lt', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_lt' },
+  proname => 'record_lt', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2984',
-  proname => 'record_gt', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_gt' },
+  proname => 'record_gt', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2985',
-  proname => 'record_le', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_le' },
+  proname => 'record_le', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2986',
-  proname => 'record_ge', prorettype => 'bool', proargtypes => 'record record',
-  prosrc => 'record_ge' },
+  proname => 'record_ge', prorettype => 'bool', proargtypes => 'record record' },
 { oid => '2987', descr => 'less-equal-greater',
   proname => 'btrecordcmp', prorettype => 'int4',
-  proargtypes => 'record record', prosrc => 'btrecordcmp' },
+  proargtypes => 'record record' },
 
 # record comparison using raw byte images
 { oid => '3181',
   proname => 'record_image_eq', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_eq' },
+  proargtypes => 'record record' },
 { oid => '3182',
   proname => 'record_image_ne', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_ne' },
+  proargtypes => 'record record' },
 { oid => '3183',
   proname => 'record_image_lt', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_lt' },
+  proargtypes => 'record record' },
 { oid => '3184',
   proname => 'record_image_gt', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_gt' },
+  proargtypes => 'record record' },
 { oid => '3185',
   proname => 'record_image_le', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_le' },
+  proargtypes => 'record record' },
 { oid => '3186',
   proname => 'record_image_ge', prorettype => 'bool',
-  proargtypes => 'record record', prosrc => 'record_image_ge' },
+  proargtypes => 'record record' },
 { oid => '3187', descr => 'less-equal-greater based on byte images',
   proname => 'btrecordimagecmp', prorettype => 'int4',
-  proargtypes => 'record record', prosrc => 'btrecordimagecmp' },
+  proargtypes => 'record record' },
 
 # Extensions
 { oid => '3082', descr => 'list available extensions',
   proname => 'pg_available_extensions', procost => '10', prorows => '100',
   proretset => 't', provolatile => 's', prorettype => 'record',
   proargtypes => '', proallargtypes => '{name,text,text}',
-  proargmodes => '{o,o,o}', proargnames => '{name,default_version,comment}',
-  prosrc => 'pg_available_extensions' },
+  proargmodes => '{o,o,o}', proargnames => '{name,default_version,comment}' },
 { oid => '3083', descr => 'list available extension versions',
   proname => 'pg_available_extension_versions', procost => '10',
   prorows => '100', proretset => 't', provolatile => 's',
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{name,text,bool,bool,name,_name,text}',
   proargmodes => '{o,o,o,o,o,o,o}',
-  proargnames => '{name,version,superuser,relocatable,schema,requires,comment}',
-  prosrc => 'pg_available_extension_versions' },
+  proargnames => '{name,version,superuser,relocatable,schema,requires,comment}' },
 { oid => '3084', descr => 'list an extension\'s version update paths',
   proname => 'pg_extension_update_paths', procost => '10', prorows => '100',
   proretset => 't', provolatile => 's', prorettype => 'record',
   proargtypes => 'name', proallargtypes => '{name,text,text,text}',
-  proargmodes => '{i,o,o,o}', proargnames => '{name,source,target,path}',
-  prosrc => 'pg_extension_update_paths' },
+  proargmodes => '{i,o,o,o}', proargnames => '{name,source,target,path}' },
 { oid => '3086',
   descr => 'flag an extension\'s table contents to be emitted by pg_dump',
   proname => 'pg_extension_config_dump', provolatile => 'v', proparallel => 'u',
-  prorettype => 'void', proargtypes => 'regclass text',
-  prosrc => 'pg_extension_config_dump' },
+  prorettype => 'void', proargtypes => 'regclass text' },
 
 # SQL-spec window functions
 { oid => '3100', descr => 'row number within partition',
@@ -9459,22 +8567,22 @@
 # functions for range types
 { oid => '3832', descr => 'I/O',
   proname => 'anyrange_in', provolatile => 's', prorettype => 'anyrange',
-  proargtypes => 'cstring oid int4', prosrc => 'anyrange_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '3833', descr => 'I/O',
   proname => 'anyrange_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyrange', prosrc => 'anyrange_out' },
+  proargtypes => 'anyrange' },
 { oid => '3834', descr => 'I/O',
   proname => 'range_in', provolatile => 's', prorettype => 'anyrange',
-  proargtypes => 'cstring oid int4', prosrc => 'range_in' },
+  proargtypes => 'cstring oid int4' },
 { oid => '3835', descr => 'I/O',
   proname => 'range_out', provolatile => 's', prorettype => 'cstring',
-  proargtypes => 'anyrange', prosrc => 'range_out' },
+  proargtypes => 'anyrange' },
 { oid => '3836', descr => 'I/O',
   proname => 'range_recv', provolatile => 's', prorettype => 'anyrange',
-  proargtypes => 'internal oid int4', prosrc => 'range_recv' },
+  proargtypes => 'internal oid int4' },
 { oid => '3837', descr => 'I/O',
   proname => 'range_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'anyrange', prosrc => 'range_send' },
+  proargtypes => 'anyrange' },
 { oid => '3848', descr => 'lower bound of range',
   proname => 'lower', prorettype => 'anyelement', proargtypes => 'anyrange',
   prosrc => 'range_lower' },
@@ -9498,125 +8606,123 @@
   prosrc => 'range_upper_inf' },
 { oid => '3855',
   proname => 'range_eq', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_eq' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3856',
   proname => 'range_ne', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_ne' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3857',
   proname => 'range_overlaps', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_overlaps' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3858',
   proname => 'range_contains_elem', prorettype => 'bool',
-  proargtypes => 'anyrange anyelement', prosrc => 'range_contains_elem' },
+  proargtypes => 'anyrange anyelement' },
 { oid => '3859',
   proname => 'range_contains', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_contains' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3860',
   proname => 'elem_contained_by_range', prorettype => 'bool',
-  proargtypes => 'anyelement anyrange', prosrc => 'elem_contained_by_range' },
+  proargtypes => 'anyelement anyrange' },
 { oid => '3861',
   proname => 'range_contained_by', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_contained_by' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3862',
   proname => 'range_adjacent', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_adjacent' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3863',
   proname => 'range_before', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_before' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3864',
   proname => 'range_after', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_after' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3865',
   proname => 'range_overleft', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_overleft' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3866',
   proname => 'range_overright', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_overright' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3867',
   proname => 'range_union', prorettype => 'anyrange',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_union' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '4057',
   descr => 'the smallest range which includes both of the given ranges',
   proname => 'range_merge', prorettype => 'anyrange',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_merge' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3868',
   proname => 'range_intersect', prorettype => 'anyrange',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_intersect' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3869',
   proname => 'range_minus', prorettype => 'anyrange',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_minus' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3870', descr => 'less-equal-greater',
   proname => 'range_cmp', prorettype => 'int4',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_cmp' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3871',
   proname => 'range_lt', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_lt' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3872',
   proname => 'range_le', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_le' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3873',
   proname => 'range_ge', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_ge' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3874',
   proname => 'range_gt', prorettype => 'bool',
-  proargtypes => 'anyrange anyrange', prosrc => 'range_gt' },
+  proargtypes => 'anyrange anyrange' },
 { oid => '3875', descr => 'GiST support',
   proname => 'range_gist_consistent', prorettype => 'bool',
-  proargtypes => 'internal anyrange int2 oid internal',
-  prosrc => 'range_gist_consistent' },
+  proargtypes => 'internal anyrange int2 oid internal' },
 { oid => '3876', descr => 'GiST support',
   proname => 'range_gist_union', prorettype => 'anyrange',
-  proargtypes => 'internal internal', prosrc => 'range_gist_union' },
+  proargtypes => 'internal internal' },
 { oid => '3879', descr => 'GiST support',
   proname => 'range_gist_penalty', prorettype => 'internal',
-  proargtypes => 'internal internal internal', prosrc => 'range_gist_penalty' },
+  proargtypes => 'internal internal internal' },
 { oid => '3880', descr => 'GiST support',
   proname => 'range_gist_picksplit', prorettype => 'internal',
-  proargtypes => 'internal internal', prosrc => 'range_gist_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3881', descr => 'GiST support',
   proname => 'range_gist_same', prorettype => 'internal',
-  proargtypes => 'anyrange anyrange internal', prosrc => 'range_gist_same' },
+  proargtypes => 'anyrange anyrange internal' },
 { oid => '3902', descr => 'hash a range',
-  proname => 'hash_range', prorettype => 'int4', proargtypes => 'anyrange',
-  prosrc => 'hash_range' },
+  proname => 'hash_range', prorettype => 'int4', proargtypes => 'anyrange' },
 { oid => '3417', descr => 'hash a range',
   proname => 'hash_range_extended', prorettype => 'int8',
-  proargtypes => 'anyrange int8', prosrc => 'hash_range_extended' },
+  proargtypes => 'anyrange int8' },
 { oid => '3916', descr => 'range typanalyze',
   proname => 'range_typanalyze', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'internal', prosrc => 'range_typanalyze' },
+  proargtypes => 'internal' },
 { oid => '3169', descr => 'restriction selectivity for range operators',
   proname => 'rangesel', provolatile => 's', prorettype => 'float8',
-  proargtypes => 'internal oid internal int4', prosrc => 'rangesel' },
+  proargtypes => 'internal oid internal int4' },
 
 { oid => '3914', descr => 'convert an int4 range to canonical form',
   proname => 'int4range_canonical', prorettype => 'int4range',
-  proargtypes => 'int4range', prosrc => 'int4range_canonical' },
+  proargtypes => 'int4range' },
 { oid => '3928', descr => 'convert an int8 range to canonical form',
   proname => 'int8range_canonical', prorettype => 'int8range',
-  proargtypes => 'int8range', prosrc => 'int8range_canonical' },
+  proargtypes => 'int8range' },
 { oid => '3915', descr => 'convert a date range to canonical form',
   proname => 'daterange_canonical', prorettype => 'daterange',
-  proargtypes => 'daterange', prosrc => 'daterange_canonical' },
+  proargtypes => 'daterange' },
 { oid => '3922', descr => 'float8 difference of two int4 values',
   proname => 'int4range_subdiff', prorettype => 'float8',
-  proargtypes => 'int4 int4', prosrc => 'int4range_subdiff' },
+  proargtypes => 'int4 int4' },
 { oid => '3923', descr => 'float8 difference of two int8 values',
   proname => 'int8range_subdiff', prorettype => 'float8',
-  proargtypes => 'int8 int8', prosrc => 'int8range_subdiff' },
+  proargtypes => 'int8 int8' },
 { oid => '3924', descr => 'float8 difference of two numeric values',
   proname => 'numrange_subdiff', prorettype => 'float8',
-  proargtypes => 'numeric numeric', prosrc => 'numrange_subdiff' },
+  proargtypes => 'numeric numeric' },
 { oid => '3925', descr => 'float8 difference of two date values',
   proname => 'daterange_subdiff', prorettype => 'float8',
-  proargtypes => 'date date', prosrc => 'daterange_subdiff' },
+  proargtypes => 'date date' },
 { oid => '3929', descr => 'float8 difference of two timestamp values',
   proname => 'tsrange_subdiff', prorettype => 'float8',
-  proargtypes => 'timestamp timestamp', prosrc => 'tsrange_subdiff' },
+  proargtypes => 'timestamp timestamp' },
 { oid => '3930',
   descr => 'float8 difference of two timestamp with time zone values',
   proname => 'tstzrange_subdiff', prorettype => 'float8',
-  proargtypes => 'timestamptz timestamptz', prosrc => 'tstzrange_subdiff' },
+  proargtypes => 'timestamptz timestamptz' },
 
 { oid => '3840', descr => 'int4range constructor',
   proname => 'int4range', proisstrict => 'f', prorettype => 'int4range',
@@ -9659,20 +8765,18 @@
 # date, time, timestamp constructors
 { oid => '3846', descr => 'construct date',
   proname => 'make_date', prorettype => 'date', proargtypes => 'int4 int4 int4',
-  proargnames => '{year,month,day}', prosrc => 'make_date' },
+  proargnames => '{year,month,day}' },
 { oid => '3847', descr => 'construct time',
   proname => 'make_time', prorettype => 'time',
-  proargtypes => 'int4 int4 float8', proargnames => '{hour,min,sec}',
-  prosrc => 'make_time' },
+  proargtypes => 'int4 int4 float8', proargnames => '{hour,min,sec}' },
 { oid => '3461', descr => 'construct timestamp',
   proname => 'make_timestamp', prorettype => 'timestamp',
   proargtypes => 'int4 int4 int4 int4 int4 float8',
-  proargnames => '{year,month,mday,hour,min,sec}', prosrc => 'make_timestamp' },
+  proargnames => '{year,month,mday,hour,min,sec}' },
 { oid => '3462', descr => 'construct timestamp with time zone',
   proname => 'make_timestamptz', provolatile => 's',
   prorettype => 'timestamptz', proargtypes => 'int4 int4 int4 int4 int4 float8',
-  proargnames => '{year,month,mday,hour,min,sec}',
-  prosrc => 'make_timestamptz' },
+  proargnames => '{year,month,mday,hour,min,sec}' },
 { oid => '3463', descr => 'construct timestamp with time zone',
   proname => 'make_timestamptz', provolatile => 's',
   prorettype => 'timestamptz',
@@ -9682,99 +8786,94 @@
 { oid => '3464', descr => 'construct interval',
   proname => 'make_interval', prorettype => 'interval',
   proargtypes => 'int4 int4 int4 int4 int4 int4 float8',
-  proargnames => '{years,months,weeks,days,hours,mins,secs}',
-  prosrc => 'make_interval' },
+  proargnames => '{years,months,weeks,days,hours,mins,secs}' },
 
 # spgist opclasses
 { oid => '4018', descr => 'SP-GiST support for quad tree over point',
   proname => 'spg_quad_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_quad_config' },
+  proargtypes => 'internal internal' },
 { oid => '4019', descr => 'SP-GiST support for quad tree over point',
   proname => 'spg_quad_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_quad_choose' },
+  proargtypes => 'internal internal' },
 { oid => '4020', descr => 'SP-GiST support for quad tree over point',
   proname => 'spg_quad_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_quad_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '4021', descr => 'SP-GiST support for quad tree over point',
   proname => 'spg_quad_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_quad_inner_consistent' },
+  proargtypes => 'internal internal' },
 { oid => '4022',
   descr => 'SP-GiST support for quad tree and k-d tree over point',
   proname => 'spg_quad_leaf_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal', prosrc => 'spg_quad_leaf_consistent' },
+  proargtypes => 'internal internal' },
 
 { oid => '4023', descr => 'SP-GiST support for k-d tree over point',
   proname => 'spg_kd_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_kd_config' },
+  proargtypes => 'internal internal' },
 { oid => '4024', descr => 'SP-GiST support for k-d tree over point',
   proname => 'spg_kd_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_kd_choose' },
+  proargtypes => 'internal internal' },
 { oid => '4025', descr => 'SP-GiST support for k-d tree over point',
   proname => 'spg_kd_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_kd_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '4026', descr => 'SP-GiST support for k-d tree over point',
   proname => 'spg_kd_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_kd_inner_consistent' },
+  proargtypes => 'internal internal' },
 
 { oid => '4027', descr => 'SP-GiST support for radix tree over text',
   proname => 'spg_text_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_text_config' },
+  proargtypes => 'internal internal' },
 { oid => '4028', descr => 'SP-GiST support for radix tree over text',
   proname => 'spg_text_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_text_choose' },
+  proargtypes => 'internal internal' },
 { oid => '4029', descr => 'SP-GiST support for radix tree over text',
   proname => 'spg_text_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_text_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '4030', descr => 'SP-GiST support for radix tree over text',
   proname => 'spg_text_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_text_inner_consistent' },
+  proargtypes => 'internal internal' },
 { oid => '4031', descr => 'SP-GiST support for radix tree over text',
   proname => 'spg_text_leaf_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal', prosrc => 'spg_text_leaf_consistent' },
+  proargtypes => 'internal internal' },
 
 { oid => '3469', descr => 'SP-GiST support for quad tree over range',
   proname => 'spg_range_quad_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_range_quad_config' },
+  proargtypes => 'internal internal' },
 { oid => '3470', descr => 'SP-GiST support for quad tree over range',
   proname => 'spg_range_quad_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_range_quad_choose' },
+  proargtypes => 'internal internal' },
 { oid => '3471', descr => 'SP-GiST support for quad tree over range',
   proname => 'spg_range_quad_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_range_quad_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '3472', descr => 'SP-GiST support for quad tree over range',
   proname => 'spg_range_quad_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal',
-  prosrc => 'spg_range_quad_inner_consistent' },
+  proargtypes => 'internal internal' },
 { oid => '3473', descr => 'SP-GiST support for quad tree over range',
   proname => 'spg_range_quad_leaf_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal',
-  prosrc => 'spg_range_quad_leaf_consistent' },
+  proargtypes => 'internal internal' },
 
 { oid => '5012', descr => 'SP-GiST support for quad tree over box',
   proname => 'spg_box_quad_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_box_quad_config' },
+  proargtypes => 'internal internal' },
 { oid => '5013', descr => 'SP-GiST support for quad tree over box',
   proname => 'spg_box_quad_choose', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_box_quad_choose' },
+  proargtypes => 'internal internal' },
 { oid => '5014', descr => 'SP-GiST support for quad tree over box',
   proname => 'spg_box_quad_picksplit', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_box_quad_picksplit' },
+  proargtypes => 'internal internal' },
 { oid => '5015', descr => 'SP-GiST support for quad tree over box',
   proname => 'spg_box_quad_inner_consistent', prorettype => 'void',
-  proargtypes => 'internal internal',
-  prosrc => 'spg_box_quad_inner_consistent' },
+  proargtypes => 'internal internal' },
 { oid => '5016', descr => 'SP-GiST support for quad tree over box',
   proname => 'spg_box_quad_leaf_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal',
-  prosrc => 'spg_box_quad_leaf_consistent' },
+  proargtypes => 'internal internal' },
 
 { oid => '5010',
   descr => 'SP-GiST support for quad tree over 2-D types represented by their bounding boxes',
   proname => 'spg_bbox_quad_config', prorettype => 'void',
-  proargtypes => 'internal internal', prosrc => 'spg_bbox_quad_config' },
+  proargtypes => 'internal internal' },
 { oid => '5011', descr => 'SP-GiST support for quad tree over polygons',
   proname => 'spg_poly_quad_compress', prorettype => 'box',
-  proargtypes => 'polygon', prosrc => 'spg_poly_quad_compress' },
+  proargtypes => 'polygon' },
 
 # replication slots
 { oid => '3779', descr => 'create a physical replication slot',
@@ -9782,12 +8881,10 @@
   proparallel => 'u', prorettype => 'record', proargtypes => 'name bool bool',
   proallargtypes => '{name,bool,bool,name,pg_lsn}',
   proargmodes => '{i,i,i,o,o}',
-  proargnames => '{slot_name,immediately_reserve,temporary,slot_name,lsn}',
-  prosrc => 'pg_create_physical_replication_slot' },
+  proargnames => '{slot_name,immediately_reserve,temporary,slot_name,lsn}' },
 { oid => '3780', descr => 'drop a replication slot',
   proname => 'pg_drop_replication_slot', provolatile => 'v', proparallel => 'u',
-  prorettype => 'void', proargtypes => 'name',
-  prosrc => 'pg_drop_replication_slot' },
+  prorettype => 'void', proargtypes => 'name' },
 { oid => '3781',
   descr => 'information about replication slots currently in use',
   proname => 'pg_get_replication_slots', prorows => '10', proisstrict => 'f',
@@ -9795,15 +8892,13 @@
   proargtypes => '',
   proallargtypes => '{name,name,text,oid,bool,bool,int4,xid,xid,pg_lsn,pg_lsn}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn}',
-  prosrc => 'pg_get_replication_slots' },
+  proargnames => '{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn}' },
 { oid => '3786', descr => 'set up a logical replication slot',
   proname => 'pg_create_logical_replication_slot', provolatile => 'v',
   proparallel => 'u', prorettype => 'record', proargtypes => 'name name bool',
   proallargtypes => '{name,name,bool,text,pg_lsn}',
   proargmodes => '{i,i,i,o,o}',
-  proargnames => '{slot_name,plugin,temporary,slot_name,lsn}',
-  prosrc => 'pg_create_logical_replication_slot' },
+  proargnames => '{slot_name,plugin,temporary,slot_name,lsn}' },
 { oid => '3782', descr => 'get changes from replication slot',
   proname => 'pg_logical_slot_get_changes', procost => '1000',
   prorows => '1000', provariadic => 'text', proisstrict => 'f',
@@ -9811,8 +8906,7 @@
   prorettype => 'record', proargtypes => 'name pg_lsn int4 _text',
   proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,text}',
   proargmodes => '{i,i,i,v,o,o,o}',
-  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}',
-  prosrc => 'pg_logical_slot_get_changes' },
+  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}' },
 { oid => '3783', descr => 'get binary changes from replication slot',
   proname => 'pg_logical_slot_get_binary_changes', procost => '1000',
   prorows => '1000', provariadic => 'text', proisstrict => 'f',
@@ -9820,8 +8914,7 @@
   prorettype => 'record', proargtypes => 'name pg_lsn int4 _text',
   proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,bytea}',
   proargmodes => '{i,i,i,v,o,o,o}',
-  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}',
-  prosrc => 'pg_logical_slot_get_binary_changes' },
+  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}' },
 { oid => '3784', descr => 'peek at changes from replication slot',
   proname => 'pg_logical_slot_peek_changes', procost => '1000',
   prorows => '1000', provariadic => 'text', proisstrict => 'f',
@@ -9829,8 +8922,7 @@
   prorettype => 'record', proargtypes => 'name pg_lsn int4 _text',
   proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,text}',
   proargmodes => '{i,i,i,v,o,o,o}',
-  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}',
-  prosrc => 'pg_logical_slot_peek_changes' },
+  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}' },
 { oid => '3785', descr => 'peek at binary changes from replication slot',
   proname => 'pg_logical_slot_peek_binary_changes', procost => '1000',
   prorows => '1000', provariadic => 'text', proisstrict => 'f',
@@ -9838,14 +8930,12 @@
   prorettype => 'record', proargtypes => 'name pg_lsn int4 _text',
   proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,bytea}',
   proargmodes => '{i,i,i,v,o,o,o}',
-  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}',
-  prosrc => 'pg_logical_slot_peek_binary_changes' },
+  proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}' },
 { oid => '3878', descr => 'advance logical replication slot',
   proname => 'pg_replication_slot_advance', provolatile => 'v',
   proparallel => 'u', prorettype => 'record', proargtypes => 'name pg_lsn',
   proallargtypes => '{name,pg_lsn,name,pg_lsn}', proargmodes => '{i,i,o,o}',
-  proargnames => '{slot_name,upto_lsn,slot_name,end_lsn}',
-  prosrc => 'pg_replication_slot_advance' },
+  proargnames => '{slot_name,upto_lsn,slot_name,end_lsn}' },
 { oid => '3577', descr => 'emit a textual logical decoding message',
   proname => 'pg_logical_emit_message', provolatile => 'v', proparallel => 'u',
   prorettype => 'pg_lsn', proargtypes => 'bool text text',
@@ -9862,17 +8952,14 @@
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{oid,oid,int4,bool,bool,bool,text,text,text,text,_text,_text}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{classid, objid, objsubid, original, normal, is_temporary, object_type, schema_name, object_name, object_identity, address_names, address_args}',
-  prosrc => 'pg_event_trigger_dropped_objects' },
+  proargnames => '{classid, objid, objsubid, original, normal, is_temporary, object_type, schema_name, object_name, object_identity, address_names, address_args}' },
 { oid => '4566', descr => 'return Oid of the table getting rewritten',
   proname => 'pg_event_trigger_table_rewrite_oid', provolatile => 's',
   proparallel => 'r', prorettype => 'oid', proargtypes => '',
-  proallargtypes => '{oid}', proargmodes => '{o}', proargnames => '{oid}',
-  prosrc => 'pg_event_trigger_table_rewrite_oid' },
+  proallargtypes => '{oid}', proargmodes => '{o}', proargnames => '{oid}' },
 { oid => '4567', descr => 'return reason code for table getting rewritten',
   proname => 'pg_event_trigger_table_rewrite_reason', provolatile => 's',
-  proparallel => 'r', prorettype => 'int4', proargtypes => '',
-  prosrc => 'pg_event_trigger_table_rewrite_reason' },
+  proparallel => 'r', prorettype => 'int4', proargtypes => '' },
 { oid => '4568',
   descr => 'list DDL actions being executed by the current command',
   proname => 'pg_event_trigger_ddl_commands', procost => '10', prorows => '100',
@@ -9880,19 +8967,16 @@
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{oid,oid,int4,text,text,text,text,bool,pg_ddl_command}',
   proargmodes => '{o,o,o,o,o,o,o,o,o}',
-  proargnames => '{classid, objid, objsubid, command_tag, object_type, schema_name, object_identity, in_extension, command}',
-  prosrc => 'pg_event_trigger_ddl_commands' },
+  proargnames => '{classid, objid, objsubid, command_tag, object_type, schema_name, object_identity, in_extension, command}' },
 
 # generic transition functions for ordered-set aggregates
 { oid => '3970', descr => 'aggregate transition function',
   proname => 'ordered_set_transition', proisstrict => 'f',
-  prorettype => 'internal', proargtypes => 'internal any',
-  prosrc => 'ordered_set_transition' },
+  prorettype => 'internal', proargtypes => 'internal any' },
 { oid => '3971', descr => 'aggregate transition function',
   proname => 'ordered_set_transition_multi', provariadic => 'any',
   proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal any',
-  proallargtypes => '{internal,any}', proargmodes => '{i,v}',
-  prosrc => 'ordered_set_transition_multi' },
+  proallargtypes => '{internal,any}', proargmodes => '{i,v}' },
 
 # inverse distribution aggregates (and their support functions)
 { oid => '3972', descr => 'discrete percentile',
@@ -9901,55 +8985,49 @@
   prosrc => 'aggregate_dummy' },
 { oid => '3973', descr => 'aggregate final function',
   proname => 'percentile_disc_final', proisstrict => 'f',
-  prorettype => 'anyelement', proargtypes => 'internal float8 anyelement',
-  prosrc => 'percentile_disc_final' },
+  prorettype => 'anyelement', proargtypes => 'internal float8 anyelement' },
 { oid => '3974', descr => 'continuous distribution percentile',
   proname => 'percentile_cont', prokind => 'a', proisstrict => 'f',
   prorettype => 'float8', proargtypes => 'float8 float8',
   prosrc => 'aggregate_dummy' },
 { oid => '3975', descr => 'aggregate final function',
   proname => 'percentile_cont_float8_final', proisstrict => 'f',
-  prorettype => 'float8', proargtypes => 'internal float8',
-  prosrc => 'percentile_cont_float8_final' },
+  prorettype => 'float8', proargtypes => 'internal float8' },
 { oid => '3976', descr => 'continuous distribution percentile',
   proname => 'percentile_cont', prokind => 'a', proisstrict => 'f',
   prorettype => 'interval', proargtypes => 'float8 interval',
   prosrc => 'aggregate_dummy' },
 { oid => '3977', descr => 'aggregate final function',
   proname => 'percentile_cont_interval_final', proisstrict => 'f',
-  prorettype => 'interval', proargtypes => 'internal float8',
-  prosrc => 'percentile_cont_interval_final' },
+  prorettype => 'interval', proargtypes => 'internal float8' },
 { oid => '3978', descr => 'multiple discrete percentiles',
   proname => 'percentile_disc', prokind => 'a', proisstrict => 'f',
   prorettype => 'anyarray', proargtypes => '_float8 anyelement',
   prosrc => 'aggregate_dummy' },
 { oid => '3979', descr => 'aggregate final function',
   proname => 'percentile_disc_multi_final', proisstrict => 'f',
-  prorettype => 'anyarray', proargtypes => 'internal _float8 anyelement',
-  prosrc => 'percentile_disc_multi_final' },
+  prorettype => 'anyarray', proargtypes => 'internal _float8 anyelement' },
 { oid => '3980', descr => 'multiple continuous percentiles',
   proname => 'percentile_cont', prokind => 'a', proisstrict => 'f',
   prorettype => '_float8', proargtypes => '_float8 float8',
   prosrc => 'aggregate_dummy' },
 { oid => '3981', descr => 'aggregate final function',
   proname => 'percentile_cont_float8_multi_final', proisstrict => 'f',
-  prorettype => '_float8', proargtypes => 'internal _float8',
-  prosrc => 'percentile_cont_float8_multi_final' },
+  prorettype => '_float8', proargtypes => 'internal _float8' },
 { oid => '3982', descr => 'multiple continuous percentiles',
   proname => 'percentile_cont', prokind => 'a', proisstrict => 'f',
   prorettype => '_interval', proargtypes => '_float8 interval',
   prosrc => 'aggregate_dummy' },
 { oid => '3983', descr => 'aggregate final function',
   proname => 'percentile_cont_interval_multi_final', proisstrict => 'f',
-  prorettype => '_interval', proargtypes => 'internal _float8',
-  prosrc => 'percentile_cont_interval_multi_final' },
+  prorettype => '_interval', proargtypes => 'internal _float8' },
 { oid => '3984', descr => 'most common value',
   proname => 'mode', prokind => 'a', proisstrict => 'f',
   prorettype => 'anyelement', proargtypes => 'anyelement',
   prosrc => 'aggregate_dummy' },
 { oid => '3985', descr => 'aggregate final function',
   proname => 'mode_final', proisstrict => 'f', prorettype => 'anyelement',
-  proargtypes => 'internal anyelement', prosrc => 'mode_final' },
+  proargtypes => 'internal anyelement' },
 
 # hypothetical-set aggregates (and their support functions)
 { oid => '3986', descr => 'rank of hypothetical row',
@@ -9995,133 +9073,110 @@
 # pg_upgrade support
 { oid => '3582', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_pg_type_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_pg_type_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3584', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_array_pg_type_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_array_pg_type_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3585', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_toast_pg_type_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_toast_pg_type_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3586', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_heap_pg_class_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_heap_pg_class_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3587', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_index_pg_class_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_index_pg_class_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3588', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_toast_pg_class_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_toast_pg_class_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3589', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_pg_enum_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_pg_enum_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3590', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_next_pg_authid_oid', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'oid',
-  prosrc => 'binary_upgrade_set_next_pg_authid_oid' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'oid' },
 { oid => '3591', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_create_empty_extension', proisstrict => 'f',
   provolatile => 'v', proparallel => 'u', prorettype => 'void',
-  proargtypes => 'text text bool text _oid _text _text',
-  prosrc => 'binary_upgrade_create_empty_extension' },
+  proargtypes => 'text text bool text _oid _text _text' },
 { oid => '4083', descr => 'for use by pg_upgrade',
   proname => 'binary_upgrade_set_record_init_privs', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'bool',
-  prosrc => 'binary_upgrade_set_record_init_privs' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'bool' },
 
 # replication/origin.h
 { oid => '6003', descr => 'create a replication origin',
   proname => 'pg_replication_origin_create', provolatile => 'v',
-  proparallel => 'u', prorettype => 'oid', proargtypes => 'text',
-  prosrc => 'pg_replication_origin_create' },
+  proparallel => 'u', prorettype => 'oid', proargtypes => 'text' },
 
 { oid => '6004', descr => 'drop replication origin identified by its name',
   proname => 'pg_replication_origin_drop', provolatile => 'v',
-  proparallel => 'u', prorettype => 'void', proargtypes => 'text',
-  prosrc => 'pg_replication_origin_drop' },
+  proparallel => 'u', prorettype => 'void', proargtypes => 'text' },
 
 { oid => '6005',
   descr => 'translate the replication origin\'s name to its id',
   proname => 'pg_replication_origin_oid', provolatile => 's',
-  prorettype => 'oid', proargtypes => 'text',
-  prosrc => 'pg_replication_origin_oid' },
+  prorettype => 'oid', proargtypes => 'text' },
 
 { oid => '6006',
   descr => 'configure session to maintain replication progress tracking for the passed in origin',
   proname => 'pg_replication_origin_session_setup', provolatile => 'v',
-  proparallel => 'u', prorettype => 'void', proargtypes => 'text',
-  prosrc => 'pg_replication_origin_session_setup' },
+  proparallel => 'u', prorettype => 'void', proargtypes => 'text' },
 
 { oid => '6007', descr => 'teardown configured replication progress tracking',
   proname => 'pg_replication_origin_session_reset', provolatile => 'v',
-  proparallel => 'u', prorettype => 'void', proargtypes => '',
-  prosrc => 'pg_replication_origin_session_reset' },
+  proparallel => 'u', prorettype => 'void', proargtypes => '' },
 
 { oid => '6008',
   descr => 'is a replication origin configured in this session',
   proname => 'pg_replication_origin_session_is_setup', provolatile => 'v',
-  proparallel => 'r', prorettype => 'bool', proargtypes => '',
-  prosrc => 'pg_replication_origin_session_is_setup' },
+  proparallel => 'r', prorettype => 'bool', proargtypes => '' },
 
 { oid => '6009',
   descr => 'get the replication progress of the current session',
   proname => 'pg_replication_origin_session_progress', provolatile => 'v',
-  proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'bool',
-  prosrc => 'pg_replication_origin_session_progress' },
+  proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'bool' },
 
 { oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_setup', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => 'pg_lsn timestamptz',
-  prosrc => 'pg_replication_origin_xact_setup' },
+  proparallel => 'r', prorettype => 'void', proargtypes => 'pg_lsn timestamptz' },
 
 { oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp',
   proname => 'pg_replication_origin_xact_reset', provolatile => 'v',
-  proparallel => 'r', prorettype => 'void', proargtypes => '',
-  prosrc => 'pg_replication_origin_xact_reset' },
+  proparallel => 'r', prorettype => 'void', proargtypes => '' },
 
 { oid => '6012',
   descr => 'advance replication identifier to specific location',
   proname => 'pg_replication_origin_advance', provolatile => 'v',
-  proparallel => 'u', prorettype => 'void', proargtypes => 'text pg_lsn',
-  prosrc => 'pg_replication_origin_advance' },
+  proparallel => 'u', prorettype => 'void', proargtypes => 'text pg_lsn' },
 
 { oid => '6013',
   descr => 'get an individual replication origin\'s replication progress',
   proname => 'pg_replication_origin_progress', provolatile => 'v',
-  proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'text bool',
-  prosrc => 'pg_replication_origin_progress' },
+  proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'text bool' },
 
 { oid => '6014', descr => 'get progress for all replication origins',
   proname => 'pg_show_replication_origin_status', prorows => '100',
   proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r',
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{oid,text,pg_lsn,pg_lsn}', proargmodes => '{o,o,o,o}',
-  proargnames => '{local_id, external_id, remote_lsn, local_lsn}',
-  prosrc => 'pg_show_replication_origin_status' },
+  proargnames => '{local_id, external_id, remote_lsn, local_lsn}' },
 
 # publications
 { oid => '6119', descr => 'get OIDs of tables in a publication',
   proname => 'pg_get_publication_tables', prorows => '1000', proretset => 't',
   provolatile => 's', prorettype => 'oid', proargtypes => 'text',
   proallargtypes => '{text,oid}', proargmodes => '{i,o}',
-  proargnames => '{pubname,relid}', prosrc => 'pg_get_publication_tables' },
+  proargnames => '{pubname,relid}' },
 { oid => '6121',
   descr => 'returns whether a relation can be part of a publication',
   proname => 'pg_relation_is_publishable', provolatile => 's',
-  prorettype => 'bool', proargtypes => 'regclass',
-  prosrc => 'pg_relation_is_publishable' },
+  prorettype => 'bool', proargtypes => 'regclass' },
 
 # rls
 { oid => '3298',
   descr => 'row security for current context active on table by table oid',
   proname => 'row_security_active', provolatile => 's', prorettype => 'bool',
-  proargtypes => 'oid', prosrc => 'row_security_active' },
+  proargtypes => 'oid' },
 { oid => '3299',
   descr => 'row security for current context active on table by table name',
   proname => 'row_security_active', provolatile => 's', prorettype => 'bool',
@@ -10131,8 +9186,7 @@
 { oid => '3400', descr => 'pg_config binary as a function',
   proname => 'pg_config', prorows => '23', proretset => 't', proparallel => 'r',
   prorettype => 'record', proargtypes => '', proallargtypes => '{text,text}',
-  proargmodes => '{o,o}', proargnames => '{name,setting}',
-  prosrc => 'pg_config' },
+  proargmodes => '{o,o}', proargnames => '{name,setting}' },
 
 # pg_controldata related functions
 { oid => '3441',
@@ -10140,8 +9194,7 @@
   proname => 'pg_control_system', provolatile => 'v', prorettype => 'record',
   proargtypes => '', proallargtypes => '{int4,int4,int8,timestamptz}',
   proargmodes => '{o,o,o,o}',
-  proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}',
-  prosrc => 'pg_control_system' },
+  proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}' },
 
 { oid => '3442',
   descr => 'pg_controldata checkpoint state information as a function',
@@ -10149,16 +9202,14 @@
   prorettype => 'record', proargtypes => '',
   proallargtypes => '{pg_lsn,pg_lsn,text,int4,int4,bool,text,oid,xid,xid,xid,oid,xid,xid,oid,xid,xid,timestamptz}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}',
-  prosrc => 'pg_control_checkpoint' },
+  proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}' },
 
 { oid => '3443',
   descr => 'pg_controldata recovery state information as a function',
   proname => 'pg_control_recovery', provolatile => 'v', prorettype => 'record',
   proargtypes => '', proallargtypes => '{pg_lsn,int4,pg_lsn,pg_lsn,bool}',
   proargmodes => '{o,o,o,o,o}',
-  proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}',
-  prosrc => 'pg_control_recovery' },
+  proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}' },
 
 { oid => '3444',
   descr => 'pg_controldata init state information as a function',
@@ -10166,37 +9217,36 @@
   proargtypes => '',
   proallargtypes => '{int4,int4,int4,int4,int4,int4,int4,int4,int4,bool,bool,int4}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}',
-  prosrc => 'pg_control_init' },
+  proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}' },
 
 # collation management functions
 { oid => '3445', descr => 'import collations from operating system',
   proname => 'pg_import_system_collations', procost => '100',
   provolatile => 'v', proparallel => 'u', prorettype => 'int4',
-  proargtypes => 'regnamespace', prosrc => 'pg_import_system_collations' },
+  proargtypes => 'regnamespace' },
 
 { oid => '3448',
   descr => 'get actual version of collation from operating system',
   proname => 'pg_collation_actual_version', procost => '100',
-  provolatile => 'v', prorettype => 'text', proargtypes => 'oid',
-  prosrc => 'pg_collation_actual_version' },
+  provolatile => 'v', prorettype => 'text', proargtypes => 'oid' },
 
 # system management/monitoring related functions
 { oid => '3353', descr => 'list files in the log directory',
   proname => 'pg_ls_logdir', procost => '10', prorows => '20', proretset => 't',
   provolatile => 'v', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,int8,timestamptz}', proargmodes => '{o,o,o}',
-  proargnames => '{name,size,modification}', prosrc => 'pg_ls_logdir' },
+  proargnames => '{name,size,modification}' },
 { oid => '3354', descr => 'list of files in the WAL directory',
   proname => 'pg_ls_waldir', procost => '10', prorows => '20', proretset => 't',
   provolatile => 'v', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,int8,timestamptz}', proargmodes => '{o,o,o}',
-  proargnames => '{name,size,modification}', prosrc => 'pg_ls_waldir' },
+  proargnames => '{name,size,modification}' },
 
 # hash partitioning constraint function
 { oid => '5028', descr => 'hash partition CHECK constraint',
   proname => 'satisfies_hash_partition', provariadic => 'any',
   proisstrict => 'f', prorettype => 'bool', proargtypes => 'oid int4 int4 any',
-  proargmodes => '{i,i,i,v}', prosrc => 'satisfies_hash_partition' },
+  proargmodes => '{i,i,i,v}' },
 
 ]
+},
\ No newline at end of file
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index a34b2596fa..3a88dab078 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -111,7 +111,7 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
 	Oid			protrftypes[1] BKI_DEFAULT(_null_);
 
 	/* procedure source text */
-	text		prosrc BKI_FORCE_NOT_NULL;
+	text		prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;
 
 	/* secondary procedure info (can be NULL) */
 	text		probin BKI_DEFAULT(_null_);
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 48e01cd694..7346bd1064 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -32,72 +32,51 @@
 
 { oid => '16', descr => 'boolean, \'true\'/\'false\'',
   typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B',
-  typispreferred => 't', typarray => '_bool', typinput => 'boolin',
-  typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend',
-  typalign => 'c' },
+  typispreferred => 't', typarray => '_bool', typalign => 'c' },
 { oid => '17', descr => 'variable-length string, binary values escaped',
   typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U',
-  typarray => '_bytea', typinput => 'byteain', typoutput => 'byteaout',
-  typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i',
-  typstorage => 'x' },
+  typarray => '_bytea', typalign => 'i', typstorage => 'x' },
 { oid => '18', descr => 'single character',
   typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S',
-  typarray => '_char', typinput => 'charin', typoutput => 'charout',
-  typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' },
+  typarray => '_char', typalign => 'c' },
 { oid => '19', descr => '63-byte type for storing system identifiers',
   typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f',
   typcategory => 'S', typelem => 'char', typarray => '_name',
-  typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv',
-  typsend => 'namesend', typalign => 'c' },
+  typalign => 'c' },
 { oid => '20', descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
-  typcategory => 'N', typarray => '_int8', typinput => 'int8in',
-  typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send',
-  typalign => 'd' },
+  typcategory => 'N', typarray => '_int8', typalign => 'd' },
 { oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage',
   typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N',
-  typarray => '_int2', typinput => 'int2in', typoutput => 'int2out',
-  typreceive => 'int2recv', typsend => 'int2send', typalign => 's' },
+  typarray => '_int2', typalign => 's' },
 { oid => '22', descr => 'array of int2, used in system tables',
   typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A',
-  typelem => 'int2', typarray => '_int2vector', typinput => 'int2vectorin',
-  typoutput => 'int2vectorout', typreceive => 'int2vectorrecv',
-  typsend => 'int2vectorsend', typalign => 'i' },
+  typelem => 'int2', typarray => '_int2vector', typalign => 'i' },
 { oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage',
   typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_int4', typinput => 'int4in', typoutput => 'int4out',
-  typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' },
+  typarray => '_int4', typalign => 'i' },
 { oid => '24', descr => 'registered procedure',
   typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regproc', typinput => 'regprocin', typoutput => 'regprocout',
-  typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' },
+  typarray => '_regproc', typalign => 'i' },
 { oid => '25', descr => 'variable-length string, no limit specified',
   typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S',
-  typispreferred => 't', typarray => '_text', typinput => 'textin',
-  typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend',
-  typalign => 'i', typstorage => 'x', typcollation => '100' },
+  typispreferred => 't', typarray => '_text', typalign => 'i',
+  typstorage => 'x', typcollation => '100' },
 { oid => '26', descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N',
-  typispreferred => 't', typarray => '_oid', typinput => 'oidin',
-  typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend',
-  typalign => 'i' },
+  typispreferred => 't', typarray => '_oid', typalign => 'i' },
 { oid => '27', descr => '(block, offset), physical location of tuple',
   typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U',
-  typarray => '_tid', typinput => 'tidin', typoutput => 'tidout',
-  typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' },
+  typarray => '_tid', typalign => 's' },
 { oid => '28', descr => 'transaction id',
   typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U',
-  typarray => '_xid', typinput => 'xidin', typoutput => 'xidout',
-  typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' },
+  typarray => '_xid', typalign => 'i' },
 { oid => '29', descr => 'command identifier type, sequence in transaction id',
   typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U',
-  typarray => '_cid', typinput => 'cidin', typoutput => 'cidout',
-  typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' },
+  typarray => '_cid', typalign => 'i' },
 { oid => '30', descr => 'array of oids, used in system tables',
   typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A',
-  typelem => 'oid', typarray => '_oidvector', typinput => 'oidvectorin',
-  typoutput => 'oidvectorout', typreceive => 'oidvectorrecv',
-  typsend => 'oidvectorsend', typalign => 'i' },
+  typelem => 'oid', typarray => '_oidvector', typalign => 'i' },
 
 # hand-built rowtype entries for bootstrapped catalogs
 # NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations
@@ -176,8 +155,7 @@
 
 { oid => '210', descr => 'storage manager',
   typname => 'smgr', typlen => '2', typbyval => 't', typcategory => 'U',
-  typinput => 'smgrin', typoutput => 'smgrout', typreceive => '-',
-  typsend => '-', typalign => 's' },
+  typreceive => '-', typsend => '-', typalign => 's' },
 
 # OIDS 600 - 699
 
@@ -222,34 +200,26 @@
 { oid => '700',
   descr => 'single-precision floating point number, 4-byte storage',
   typname => 'float4', typlen => '4', typbyval => 'FLOAT4PASSBYVAL',
-  typcategory => 'N', typarray => '_float4', typinput => 'float4in',
-  typoutput => 'float4out', typreceive => 'float4recv', typsend => 'float4send',
-  typalign => 'i' },
+  typcategory => 'N', typarray => '_float4', typalign => 'i' },
 { oid => '701',
   descr => 'double-precision floating point number, 8-byte storage',
   typname => 'float8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
   typcategory => 'N', typispreferred => 't', typarray => '_float8',
-  typinput => 'float8in', typoutput => 'float8out', typreceive => 'float8recv',
-  typsend => 'float8send', typalign => 'd' },
+  typalign => 'd' },
 { oid => '702',
   descr => 'absolute, limited-range date and time (Unix system time)',
   typname => 'abstime', typlen => '4', typbyval => 't', typcategory => 'D',
-  typarray => '_abstime', typinput => 'abstimein', typoutput => 'abstimeout',
-  typreceive => 'abstimerecv', typsend => 'abstimesend', typalign => 'i' },
+  typarray => '_abstime', typalign => 'i' },
 { oid => '703',
   descr => 'relative, limited-range time interval (Unix delta time)',
   typname => 'reltime', typlen => '4', typbyval => 't', typcategory => 'T',
-  typarray => '_reltime', typinput => 'reltimein', typoutput => 'reltimeout',
-  typreceive => 'reltimerecv', typsend => 'reltimesend', typalign => 'i' },
+  typarray => '_reltime', typalign => 'i' },
 { oid => '704', descr => '(abstime,abstime), time interval',
   typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T',
-  typarray => '_tinterval', typinput => 'tintervalin',
-  typoutput => 'tintervalout', typreceive => 'tintervalrecv',
-  typsend => 'tintervalsend', typalign => 'i' },
+  typarray => '_tinterval', typalign => 'i' },
 { oid => '705',
   typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p',
-  typcategory => 'X', typinput => 'unknownin', typoutput => 'unknownout',
-  typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
+  typcategory => 'X', typalign => 'c' },
 { oid => '718', descr => 'geometric circle \'(center,radius)\'',
   typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G',
   typarray => '_circle', typinput => 'circle_in', typoutput => 'circle_out',
@@ -437,8 +407,7 @@
   typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
 { oid => '1033', descr => 'access control list',
   typname => 'aclitem', typlen => '12', typbyval => 'f', typcategory => 'U',
-  typarray => '_aclitem', typinput => 'aclitemin', typoutput => 'aclitemout',
-  typreceive => '-', typsend => '-', typalign => 'i' },
+  typarray => '_aclitem', typreceive => '-', typsend => '-', typalign => 'i' },
 { oid => '1034',
   typname => '_aclitem', typlen => '-1', typbyval => 'f', typcategory => 'A',
   typelem => 'aclitem', typinput => 'array_in', typoutput => 'array_out',
@@ -472,15 +441,13 @@
 { oid => '1042',
   descr => 'char(length), blank-padded string, fixed storage length',
   typname => 'bpchar', typlen => '-1', typbyval => 'f', typcategory => 'S',
-  typarray => '_bpchar', typinput => 'bpcharin', typoutput => 'bpcharout',
-  typreceive => 'bpcharrecv', typsend => 'bpcharsend',
-  typmodin => 'bpchartypmodin', typmodout => 'bpchartypmodout', typalign => 'i',
-  typstorage => 'x', typcollation => '100' },
+  typarray => '_bpchar', typmodin => 'bpchartypmodin',
+  typmodout => 'bpchartypmodout', typalign => 'i', typstorage => 'x',
+  typcollation => '100' },
 { oid => '1043',
   descr => 'varchar(length), non-blank-padded string, variable storage length',
   typname => 'varchar', typlen => '-1', typbyval => 'f', typcategory => 'S',
-  typarray => '_varchar', typinput => 'varcharin', typoutput => 'varcharout',
-  typreceive => 'varcharrecv', typsend => 'varcharsend',
+  typarray => '_varchar',
   typmodin => 'varchartypmodin', typmodout => 'varchartypmodout',
   typalign => 'i', typstorage => 'x', typcollation => '100' },
 { oid => '1082', descr => 'date',
@@ -617,35 +584,25 @@
 
 { oid => '2202', descr => 'registered procedure (with args)',
   typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regprocedure', typinput => 'regprocedurein',
-  typoutput => 'regprocedureout', typreceive => 'regprocedurerecv',
-  typsend => 'regproceduresend', typalign => 'i' },
+  typarray => '_regprocedure', typalign => 'i' },
 { oid => '2203', descr => 'registered operator',
   typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regoper', typinput => 'regoperin', typoutput => 'regoperout',
-  typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
+  typarray => '_regoper', typalign => 'i' },
 { oid => '2204', descr => 'registered operator (with args)',
   typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regoperator', typinput => 'regoperatorin',
-  typoutput => 'regoperatorout', typreceive => 'regoperatorrecv',
-  typsend => 'regoperatorsend', typalign => 'i' },
+  typarray => '_regoperator', typalign => 'i' },
 { oid => '2205', descr => 'registered class',
   typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regclass', typinput => 'regclassin', typoutput => 'regclassout',
-  typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
+  typarray => '_regclass', typalign => 'i' },
 { oid => '2206', descr => 'registered type',
   typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regtype', typinput => 'regtypein', typoutput => 'regtypeout',
-  typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
+  typarray => '_regtype', typalign => 'i' },
 { oid => '4096', descr => 'registered role',
   typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regrole', typinput => 'regrolein', typoutput => 'regroleout',
-  typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
+  typarray => '_regrole', typalign => 'i' },
 { oid => '4089', descr => 'registered namespace',
   typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regnamespace', typinput => 'regnamespacein',
-  typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv',
-  typsend => 'regnamespacesend', typalign => 'i' },
+  typarray => '_regnamespace', typalign => 'i' },
 { oid => '2207',
   typname => '_regprocedure', typlen => '-1', typbyval => 'f',
   typcategory => 'A', typelem => 'regprocedure', typinput => 'array_in',
@@ -708,29 +665,22 @@
 # text search
 { oid => '3614', descr => 'text representation for text search',
   typname => 'tsvector', typlen => '-1', typbyval => 'f', typcategory => 'U',
-  typarray => '_tsvector', typinput => 'tsvectorin', typoutput => 'tsvectorout',
-  typreceive => 'tsvectorrecv', typsend => 'tsvectorsend',
-  typanalyze => 'ts_typanalyze', typalign => 'i', typstorage => 'x' },
+  typarray => '_tsvector', typanalyze => 'ts_typanalyze', typalign => 'i',
+  typstorage => 'x' },
 { oid => '3642',
   descr => 'GiST index internal text representation for text search',
   typname => 'gtsvector', typlen => '-1', typbyval => 'f', typcategory => 'U',
-  typarray => '_gtsvector', typinput => 'gtsvectorin',
-  typoutput => 'gtsvectorout', typreceive => '-', typsend => '-',
+  typarray => '_gtsvector', typreceive => '-', typsend => '-',
   typalign => 'i' },
 { oid => '3615', descr => 'query representation for text search',
   typname => 'tsquery', typlen => '-1', typbyval => 'f', typcategory => 'U',
-  typarray => '_tsquery', typinput => 'tsqueryin', typoutput => 'tsqueryout',
-  typreceive => 'tsqueryrecv', typsend => 'tsquerysend', typalign => 'i' },
+  typarray => '_tsquery', typalign => 'i' },
 { oid => '3734', descr => 'registered text search configuration',
   typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N',
-  typarray => '_regconfig', typinput => 'regconfigin',
-  typoutput => 'regconfigout', typreceive => 'regconfigrecv',
-  typsend => 'regconfigsend', typalign => 'i' },
+  typarray => '_regconfig', typalign => 'i' },
 { oid => '3769', descr => 'registered text search dictionary',
   typname => 'regdictionary', typlen => '4', typbyval => 't',
   typcategory => 'N', typarray => '_regdictionary',
-  typinput => 'regdictionaryin', typoutput => 'regdictionaryout',
-  typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend',
   typalign => 'i' },
 
 { oid => '3643',
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 5914ee706a..eb9a5b07c4 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -122,12 +122,12 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
 	 */
 
 	/* text format (required) */
-	regproc		typinput BKI_LOOKUP(pg_proc);
-	regproc		typoutput BKI_LOOKUP(pg_proc);
+	regproc		typinput BKI_DEFAULT("${typname}in") BKI_LOOKUP(pg_proc);
+	regproc		typoutput BKI_DEFAULT("${typname}out") BKI_LOOKUP(pg_proc);
 
 	/* binary format (optional) */
-	regproc		typreceive BKI_LOOKUP(pg_proc);
-	regproc		typsend BKI_LOOKUP(pg_proc);
+	regproc		typreceive BKI_DEFAULT("${typname}recv") BKI_LOOKUP(pg_proc);
+	regproc		typsend BKI_DEFAULT("${typname}send") BKI_LOOKUP(pg_proc);
 
 	/*
 	 * I/O functions for optional type modifiers.
#98Robert Haas
robertmhaas@gmail.com
In reply to: Mark Dilger (#97)
Re: WIP: a way forward on bootstrap data

On Wed, Apr 25, 2018 at 3:44 PM, Mark Dilger <hornschnorter@gmail.com> wrote:

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. Tom mentioned upthread that he did
not want too much magic in genbki.pl or Catalog.pm, but I think
I can propose putting some magic in the header files themselves.

Take, for example, some of the fields in pg_type.dat. I'll elide
the ones I'm not talking about with ...:

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

If we changed pg_proc.h:

/* procedure source text */
-       text            prosrc BKI_FORCE_NOT_NULL;
+       text            prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

we could remove the prosrc field from many of the records, which would
do a better job of calling attention to the remaining records where the
C function name differs from the SQL function name.

That one I kinda like.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#99Mark Dilger
hornschnorter@gmail.com
In reply to: Robert Haas (#98)
Re: WIP: a way forward on bootstrap data

On Apr 25, 2018, at 1:00 PM, Robert Haas <robertmhaas@gmail.com> wrote:

On Wed, Apr 25, 2018 at 3:44 PM, Mark Dilger <hornschnorter@gmail.com> wrote:

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. Tom mentioned upthread that he did
not want too much magic in genbki.pl or Catalog.pm, but I think
I can propose putting some magic in the header files themselves.

Take, for example, some of the fields in pg_type.dat. I'll elide
the ones I'm not talking about with ...:

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

That may be a good argument. I was on the fence about it, because I
like the idea that the project might do some cleanup and standardize
the names of all in/out/send/recv functions so that no overrides would
be required. (Likewise, I'd like the eq,ne,lt,le,gt,ge functions to
be named in a standard way.)

Would that be an API break and hence a non-starter?

If we changed pg_proc.h:

/* procedure source text */
-       text            prosrc BKI_FORCE_NOT_NULL;
+       text            prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

we could remove the prosrc field from many of the records, which would
do a better job of calling attention to the remaining records where the
C function name differs from the SQL function name.

That one I kinda like.

Yeah, that one is simpler, and it is the one that makes the majority of
the difference in bringing down the size of the .dat files.

mark

#100Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#98)
Re: WIP: a way forward on bootstrap data

Robert Haas <robertmhaas@gmail.com> writes:

On Wed, Apr 25, 2018 at 3:44 PM, Mark Dilger <hornschnorter@gmail.com> wrote:

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. ...

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

Yeah, that was my first reaction to that example as well. If it
weren't so nearly fifty-fifty then we might have more traction there;
but it's pretty close, and actually the foo_in cases outnumber fooin
if I counted correctly. (Array entries should be ignored for this
purpose; maybe we'll autogenerate them someday.)

+ text prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

That one I kinda like.

Agreed, this seems more compelling. However, I think we need more than
one compelling example to justify the additional infrastructure. There
aren't that many places where there's obvious internal redundancy in
single catalog rows, so I'm not sure that we're going to find a lot of win
here. (The prosrc-from-proname case, in isolation, could be handled about
as well by adding a hardwired rule like we have for pronargs.)

I don't especially like the idea of trying to compute, for instance,
typalign from typlen. That's mostly going to encourage people to overlook
it, which isn't a good thing, because there are plenty of places where
genbki.pl couldn't be expected to get it right.

regards, tom lane

#101Tom Lane
tgl@sss.pgh.pa.us
In reply to: Mark Dilger (#99)
Re: WIP: a way forward on bootstrap data

Mark Dilger <hornschnorter@gmail.com> writes:

On Apr 25, 2018, at 1:00 PM, Robert Haas <robertmhaas@gmail.com> wrote:
-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

That may be a good argument. I was on the fence about it, because I
like the idea that the project might do some cleanup and standardize
the names of all in/out/send/recv functions so that no overrides would
be required. (Likewise, I'd like the eq,ne,lt,le,gt,ge functions to
be named in a standard way.)

Would that be an API break and hence a non-starter?

Yeah, I'm afraid so. I'm pretty sure I recall cases where people
invoked I/O functions by name, and I definitely recall cases where
operator-implementation functions were invoked by name. Those might
not be very bright things to do, but people do 'em.

We'd also be risking creating problems for individual apps by conflicting
with user-defined functions that we didn't use to conflict with. We take
that chance every time we add functionality, of course, but usually we can
soothe complaints by pointing out that they got some new functionality in
return. I don't think "we made I/O function names more uniform" is going
to be a very satisfactory excuse for breakage.

regards, tom lane

#102Mark Dilger
hornschnorter@gmail.com
In reply to: Tom Lane (#100)
Re: WIP: a way forward on bootstrap data

On Apr 25, 2018, at 1:31 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Robert Haas <robertmhaas@gmail.com> writes:

On Wed, Apr 25, 2018 at 3:44 PM, Mark Dilger <hornschnorter@gmail.com> wrote:

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. ...

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

Yeah, that was my first reaction to that example as well. If it
weren't so nearly fifty-fifty then we might have more traction there;
but it's pretty close, and actually the foo_in cases outnumber fooin
if I counted correctly. (Array entries should be ignored for this
purpose; maybe we'll autogenerate them someday.)

Part of the problem right now is that nothing really encourages new
functions to be named foo_in vs. fooin, so the nearly 50/50 split will
continue when new code is contributed. If the system forced you to
specify the name when you did it in a nonstandard way, and not otherwise,
that would have the effect of documenting which way is now considered
standard.

+ text prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

That one I kinda like.

Agreed, this seems more compelling. However, I think we need more than
one compelling example to justify the additional infrastructure.

I'll look for more.

There
aren't that many places where there's obvious internal redundancy in
single catalog rows, so I'm not sure that we're going to find a lot of win
here. (The prosrc-from-proname case, in isolation, could be handled about
as well by adding a hardwired rule like we have for pronargs.)

Right, but doing that in genbki.pl or Catalog.pm is an obfuscation. Doing
it in pg_proc.h makes is much more reasonable, I think. Note that my
patch does not hardcode the logic in the perl code. It teaches the perl
code how to do variable substitution, but then allows the actual rules
for each row to be written in the header file itself.

I don't especially like the idea of trying to compute, for instance,
typalign from typlen. That's mostly going to encourage people to overlook
it, which isn't a good thing, because there are plenty of places where
genbki.pl couldn't be expected to get it right.

Well, it wouldn't be in genbki.pl, it would be in pg_type.h, but I take
your broader point that you don't want this calculated.

#103Mark Dilger
hornschnorter@gmail.com
In reply to: Mark Dilger (#102)
Re: WIP: a way forward on bootstrap data

+ text prosrc BKI_DEFAULT("${proname}") BKI_FORCE_NOT_NULL;

That one I kinda like.

Agreed, this seems more compelling. However, I think we need more than
one compelling example to justify the additional infrastructure.

I'll look for more.

There are two more that seem reasonable optimizations in pg_cast.h:

diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 7f4a25b2da..98794df7f8 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -37,13 +37,13 @@ CATALOG(pg_cast,2605,CastRelationId)
        Oid                     casttarget BKI_LOOKUP(pg_type);
        /* cast function; 0 = binary coercible */
-       Oid                     castfunc BKI_LOOKUP(pg_proc);
+       Oid                     castfunc BKI_DEFAULT("${casttarget}(${castsource})") BKI_LOOKUP(pg_proc);

/* contexts in which cast can be used */
char castcontext;

        /* cast method */
-       char            castmethod;
+       char            castmethod BKI_DEFAULT("/${castfunc} == 0 ? 'b' : 'f'/e");
 } FormData_pg_cast;

/* ----------------

Which would convert numerous lines like:

{ castsource => 'money', casttarget => 'numeric', castfunc => 'numeric(money)',
castcontext => 'a', castmethod => 'f' },

To shorter lines like:

{ castsource => 'money', casttarget => 'numeric', castcontext => 'a' },

which is great, because all you really are trying to tell the postgres system is
that when you cast from numeric to money it has to be an explicit assignment and
not an implicit cast. The extra stuff about castfunc and castmethod just gets in
the way of understanding what is being done.

There are another two in pg_opclass.h:

diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index b980327fc0..9f528f97c0 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -52,7 +52,7 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
        Oid                     opcmethod BKI_LOOKUP(pg_am);
        /* name of this opclass */
-       NameData        opcname;
+       NameData        opcname BKI_DEFAULT("${opcintype}_ops");

/* namespace of this opclass */
Oid opcnamespace BKI_DEFAULT(PGNSP);
@@ -61,7 +61,7 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
Oid opcowner BKI_DEFAULT(PGUID);

        /* containing operator family */
-       Oid                     opcfamily BKI_LOOKUP(pg_opfamily);
+       Oid                     opcfamily BKI_DEFAULT("${opcmethod}/${opcintype}_ops") BKI_LOOKUP(pg_opfamily);

/* type of data indexed by opclass */
Oid opcintype BKI_LOOKUP(pg_type);

Which would convert numerous lines like the following line from pg_opclass.dat:

{ opcmethod => 'btree', opcname => 'bytea_ops', opcfamily => 'btree/bytea_ops',
opcintype => 'bytea' },

to much easier to read lines like:

{ opcmethod => 'btree', opcintype => 'bytea' },

which is also great, because you're really just declaring that type bytea has a
btree opclass and letting the system do the rest of the work. Having to manually
specify opfamily and the opname just clutters the row and makes it less intuitive.

There are a bunch more of varying quality, depending on which automations
you like or don't like.

mark

#104Ashutosh Bapat
ashutosh.bapat@enterprisedb.com
In reply to: Mark Dilger (#102)
Re: WIP: a way forward on bootstrap data

On Thu, Apr 26, 2018 at 2:11 AM, Mark Dilger <hornschnorter@gmail.com> wrote:

On Apr 25, 2018, at 1:31 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Robert Haas <robertmhaas@gmail.com> writes:

On Wed, Apr 25, 2018 at 3:44 PM, Mark Dilger <hornschnorter@gmail.com> wrote:

There still seems to be a lot of boilerplate in the .dat files
that could be eliminated. ...

{... typname => 'X', ... typinput => 'Xin', typoutput => 'Xout',
typreceive => 'Xrecv', typsend => 'Xsend', ... },

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

Yeah, that was my first reaction to that example as well. If it
weren't so nearly fifty-fifty then we might have more traction there;
but it's pretty close, and actually the foo_in cases outnumber fooin
if I counted correctly. (Array entries should be ignored for this
purpose; maybe we'll autogenerate them someday.)

Part of the problem right now is that nothing really encourages new
functions to be named foo_in vs. fooin, so the nearly 50/50 split will
continue when new code is contributed. If the system forced you to
specify the name when you did it in a nonstandard way, and not otherwise,
that would have the effect of documenting which way is now considered
standard.

FWIW, I would like some standard naming convention one way or the
other for in/out function names. Looking up pg_type.h for in/out
functions when you know the built-in type name isn't great. But that
itself may not be enough reason to change it.

--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

#105David Fetter
david@fetter.org
In reply to: Tom Lane (#101)
Re: WIP: a way forward on bootstrap data

On Wed, Apr 25, 2018 at 04:39:42PM -0400, Tom Lane wrote:

Mark Dilger <hornschnorter@gmail.com> writes:

On Apr 25, 2018, at 1:00 PM, Robert Haas <robertmhaas@gmail.com> wrote:
-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

That may be a good argument. I was on the fence about it, because I
like the idea that the project might do some cleanup and standardize
the names of all in/out/send/recv functions so that no overrides would
be required. (Likewise, I'd like the eq,ne,lt,le,gt,ge functions to
be named in a standard way.)

Would that be an API break and hence a non-starter?

Yeah, I'm afraid so. I'm pretty sure I recall cases where people
invoked I/O functions by name, and I definitely recall cases where
operator-implementation functions were invoked by name. Those might
not be very bright things to do, but people do 'em.

We'd also be risking creating problems for individual apps by conflicting
with user-defined functions that we didn't use to conflict with. We take
that chance every time we add functionality, of course, but usually we can
soothe complaints by pointing out that they got some new functionality in
return. I don't think "we made I/O function names more uniform" is going
to be a very satisfactory excuse for breakage.

What do you rate the chances that someone created a foo_in when
there's already a built-in fooin? If it's low enough, we could add
all the foo_ins as aliases to fooins and then mandate that new ones be
called foo_in for future foos.

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#106John Naylor
jcnaylor@gmail.com
In reply to: Mark Dilger (#103)
1 attachment(s)
Re: WIP: a way forward on bootstrap data

On 4/26/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

(The prosrc-from-proname case, in isolation, could be handled about
as well by adding a hardwired rule like we have for pronargs.)

If we think we might go in the direction of more special-case
behavior, the attached patch more fully documents what we already do,
and does some minor refactoring to make future additions more
straightforward. I think this would even be good to do for v11.

Robert Haas <robertmhaas@gmail.com> writes:

-1 for trying to automate this. It varies between fooin and foo_in,
and it'll be annoying to have to remember which one happens
automatically and which one needs an override.

Yeah, that was my first reaction to that example as well. If it
weren't so nearly fifty-fifty then we might have more traction there;
but it's pretty close, and actually the foo_in cases outnumber fooin
if I counted correctly. (Array entries should be ignored for this
purpose; maybe we'll autogenerate them someday.)

Hmm, that wouldn't be too hard. Add a new metadata field called
'array_type_oid', then if it finds such an OID, teach genbki.pl to
construct a tuple for the corresponding array type by consulting
something like

char typcategory BKI_ARRAY(A);
char typstorage BKI_ARRAY(x);
...etc

in the header file, plus copying typalign from the element type. I'll
whip this up sometime and add it to the next commitfest.

On 4/26/18, Mark Dilger <hornschnorter@gmail.com> wrote:

/* cast method */
-       char            castmethod;
+       char            castmethod BKI_DEFAULT("/${castfunc} == 0 ? 'b' : 'f'/e");
} FormData_pg_cast;

I don't have a strong opinion about your simple substitution
mechanism, but I find the above a bit harder to reason about. It also
has the added disadvantage that there is whitespace in the BKI
annotation, so it can no longer be parsed with the current setup. That
could be overcome with additional complexity, of course, but then
you're back in the position of advocating that for a single use case.

-John Naylor

Attachments:

0001-Clarify-special-case-bootstrap-values.patchtext/x-patch; charset=US-ASCII; name=0001-Clarify-special-case-bootstrap-values.patchDownload
From 0bec30078080730a8f1adf0e54060d60d6fc3015 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sat, 28 Apr 2018 15:54:14 +0700
Subject: [PATCH 1/1] Clarify special-case bootstrap values.

Take special-case computation of out of the loop over all columns.
This makes the code a bit more clear. It doesn't make much of a
difference now, but if many columns are computed, it becomes
difficult to read.

Also add more comments.
---
 src/backend/catalog/Catalog.pm           | 22 ++++++++++++++--------
 src/include/catalog/pg_proc.dat          |  3 +++
 src/include/catalog/reformat_dat_file.pl | 13 ++++++-------
 3 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 67d1719..a6f555c 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -292,6 +292,20 @@ sub AddDefaultValues
 	my ($row, $schema, $catname) = @_;
 	my @missing_fields;
 
+	# Compute special-case field values.
+	# Note: If you add new cases here, you must also teach
+	# strip_default_values() in include/catalog/reformat_dat_file.pl
+	# to delete them.
+	if ($catname eq 'pg_proc')
+	{
+		# pg_proc.pronargs can be derived from proargtypes.
+		if (defined $row->{proargtypes})
+		{
+			my @proargtypes = split /\s+/, $row->{proargtypes};
+			$row->{pronargs} = scalar(@proargtypes);
+		}
+	}
+
 	foreach my $column (@$schema)
 	{
 		my $attname = $column->{name};
@@ -305,14 +319,6 @@ sub AddDefaultValues
 		{
 			$row->{$attname} = $column->{default};
 		}
-		elsif ($catname eq 'pg_proc'
-			&& $attname eq 'pronargs'
-			&& defined($row->{proargtypes}))
-		{
-			# pg_proc.pronargs can be derived from proargtypes.
-			my @proargtypes = split /\s+/, $row->{proargtypes};
-			$row->{$attname} = scalar(@proargtypes);
-		}
 		else
 		{
 			# Failed to find a value.
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index f643f56..be37fb0 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -19,6 +19,9 @@
 # duplicate the operator's comment.)  initdb will supply suitable default
 # comments for functions referenced by pg_operator.
 
+# Note: pronargs is computed when this file is read, so does not need to be
+# specified here.  See AddDefaultValues() in Catalog.pm.
+
 # Try to follow the style of existing functions' comments.
 # Some recommended conventions:
 
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index 8ebbec6..c807d3a 100644
--- a/src/include/catalog/reformat_dat_file.pl
+++ b/src/include/catalog/reformat_dat_file.pl
@@ -194,14 +194,13 @@ sub strip_default_values
 		{
 			delete $row->{$attname};
 		}
+	}
 
-		# Also delete pg_proc.pronargs, since that can be recomputed.
-		if (   $catname eq 'pg_proc'
-			&& $attname eq 'pronargs'
-			&& defined($row->{proargtypes}))
-		{
-			delete $row->{$attname};
-		}
+	# Delete computed values. See AddDefaultValues() in Catalog.pm.
+	# Note: This must be done after deleting values matching defaults.
+	if ($catname eq 'pg_proc')
+	{
+		delete $row->{pronargs} if defined $row->{proargtypes};
 	}
 }
 
-- 
2.7.4

#107Tom Lane
tgl@sss.pgh.pa.us
In reply to: John Naylor (#106)
Re: WIP: a way forward on bootstrap data

John Naylor <jcnaylor@gmail.com> writes:

On 4/26/18, Tom Lane <tgl@sss.pgh.pa.us> wrote:

(The prosrc-from-proname case, in isolation, could be handled about
as well by adding a hardwired rule like we have for pronargs.)

If we think we might go in the direction of more special-case
behavior, the attached patch more fully documents what we already do,
and does some minor refactoring to make future additions more
straightforward. I think this would even be good to do for v11.

Agreed, pushed.

regards, tom lane

#108Mark Dilger
hornschnorter@gmail.com
In reply to: Tom Lane (#107)
Re: WIP: a way forward on bootstrap data

Hackers,

Have you already considered and rejected the idea of having
genbki.pl/Catalog.pm define constants that can be used in
the catalog .dat files? I'm mostly curious if people think
the resulting .dat files are better or worse using constants
of this sort. For example:

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 7497d9cd9f..58ce24adf0 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -250,6 +250,21 @@ sub ParseData
            if ($lcnt == $rcnt)
            {
+               # pg_cast constants for castcontext
+               use constant IMPLICIT => 'i';
+               use constant ASSIGNMENT => 'a';
+               use constant EXPLICIT => 'e';
+
+               # pg_cast constants for castmethod
+               use constant FUNCTION => 'f';
+               use constant BINARY => 'b';
+               use constant INOUT => 'i';
+
+               # pg_proc constants for provolatile
+               use constant IMMUTABLE => 'i';
+               use constant STABLE => 's';
+               use constant VOLATILE => 'v';
+
                eval '$hash_ref = ' . $_;
                if (!ref $hash_ref)
                {
diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat
index cf007528fd..a4ceceb652 100644
--- a/src/include/catalog/pg_cast.dat
+++ b/src/include/catalog/pg_cast.dat
@@ -19,79 +19,79 @@
 # int2->int4->int8->numeric->float4->float8, while casts in the
 # reverse direction are assignment-only.
 { castsource => 'int8', casttarget => 'int2', castfunc => 'int2(int8)',
-  castcontext => 'a', castmethod => 'f' },
+  castcontext => ASSIGNMENT, castmethod => FUNCTION },
 { castsource => 'int8', casttarget => 'int4', castfunc => 'int4(int8)',
-  castcontext => 'a', castmethod => 'f' },
+  castcontext => ASSIGNMENT, castmethod => FUNCTION },
 { castsource => 'int8', casttarget => 'float4', castfunc => 'float4(int8)',
#109Tom Lane
tgl@sss.pgh.pa.us
In reply to: Mark Dilger (#108)
Re: WIP: a way forward on bootstrap data

Mark Dilger <hornschnorter@gmail.com> writes:

Have you already considered and rejected the idea of having
genbki.pl/Catalog.pm define constants that can be used in
the catalog .dat files? I'm mostly curious if people think
the resulting .dat files are better or worse using constants
of this sort. For example:

Hm, I don't think it's been debated in exactly these terms; but I find
myself a bit skeptical of the proposal as-is. At least going by your
examples, it'd make the .dat files a good bit more verbose, which doesn't
seem like what we want. Also it creates a bigger impedance mismatch
between what you see in the .dat files and what you see in the actual
catalogs, inviting confusion.

Also, with the particular implementation technique you suggest here,
there'd be a single namespace for the constants across all catalogs,
which creates a lot of possibilities for conflicts and mistakes.
We could fix that by instituting some sort of unique-ifying naming
convention, say CAST_IMPLICIT not just IMPLICIT, but that makes the
verbosity problem worse.

I think if we wanted to have something along this line, my preferred
approach would be to continue to write the entries as string literals:

castcontext => 'ASSIGNMENT', castmethod => 'FUNCTION' },

and make it the responsibility of genbki.pl to convert to the values
recognized by the backend. That way the conversion could happen on
a per-column basis, eliminating the conflict issue. But I'm not
really convinced that this'd be an improvement over where we are now.

regards, tom lane

#110John Naylor
jcnaylor@gmail.com
In reply to: Mark Dilger (#108)
Re: WIP: a way forward on bootstrap data

On 5/7/18, Mark Dilger <hornschnorter@gmail.com> wrote:

Hackers,

Have you already considered and rejected the idea of having
genbki.pl/Catalog.pm define constants that can be used in
the catalog .dat files? I'm mostly curious if people think
the resulting .dat files are better or worse using constants
of this sort. For example:

...

+               # pg_cast constants for castcontext
+               use constant IMPLICIT => 'i';
+               use constant ASSIGNMENT => 'a';
+               use constant EXPLICIT => 'e';

The comment refers to pg_cast, but these constants apply globally.
It's also not the right place from a maintainability perspective, and
if it was, now these values have different macros defined in two
places. This is not good.

-  castcontext => 'a', castmethod => 'f' },
+  castcontext => ASSIGNMENT, castmethod => FUNCTION },

For one, this breaks convention that the values are always
single-quoted. If you had a use case for something like this, I would
instead use the existing lookup infrastructure and teach genbki.pl to
parse the enums (or #defines as the case might be) in the relevant
header file. You'd need some improvement in readability to justify
that additional code, though. I don't think this example quite passes
(it's pretty obvious locally what the letters refer to), but others
may feel differently.

-John Naylor

#111Mark Dilger
hornschnorter@gmail.com
In reply to: John Naylor (#110)
Re: WIP: a way forward on bootstrap data

On May 6, 2018, at 12:08 PM, John Naylor <jcnaylor@gmail.com> wrote:

On 5/7/18, Mark Dilger <hornschnorter@gmail.com> wrote:

Hackers,

Have you already considered and rejected the idea of having
genbki.pl/Catalog.pm define constants that can be used in
the catalog .dat files? I'm mostly curious if people think
the resulting .dat files are better or worse using constants
of this sort. For example:

...

+               # pg_cast constants for castcontext
+               use constant IMPLICIT => 'i';
+               use constant ASSIGNMENT => 'a';
+               use constant EXPLICIT => 'e';

The comment refers to pg_cast, but these constants apply globally.
It's also not the right place from a maintainability perspective, and
if it was, now these values have different macros defined in two
places. This is not good.

-  castcontext => 'a', castmethod => 'f' },
+  castcontext => ASSIGNMENT, castmethod => FUNCTION },

For one, this breaks convention that the values are always
single-quoted. If you had a use case for something like this, I would
instead use the existing lookup infrastructure and teach genbki.pl to
parse the enums (or #defines as the case might be) in the relevant
header file. You'd need some improvement in readability to justify
that additional code, though. I don't think this example quite passes
(it's pretty obvious locally what the letters refer to), but others
may feel differently.

John, Tom, thanks for the feedback. I share your concerns about my
straw-man proposal. But....

In the catalogs, 'f' usually means 'false', not 'function'. A person
reading pg_cast.dat could see:

castmethod => 'f'

and think that meant a binary conversion, since castmethod is false.
That's almost exactly wrong. Hence my desire to write

castmethod => FUNCTION

I don't have any better proposal, though.

mark