PostgreSQL 17 Release Management Team & Feature Freeze
Hi,
We are pleased to announce the Release Management Team (RMT) (cc'd)
for the PostgreSQL 17 release:
- Robert Haas
- Heikki Linnakangas
- Michael Paquier
You can find information about the responsibilities of the RMT here:
https://wiki.postgresql.org/wiki/Release_Management_Team
Additionally, the RMT has set the feature freeze to be **April 8, 2024
at 0:00 AoE** (see [1]https://en.wikipedia.org/wiki/Anywhere_on_Earth). This is the last time to commit features for
PostgreSQL 17. In other words, no new PostgreSQL 17 feature can be
committed after April 8, 2024 at 0:00 AoE. As mentioned last year in
[2]: /messages/by-id/9fbe60ec-fd1b-6ee0-240d-af7fc444223d@postgresql.org -- Michael
You can track open items for the PostgreSQL 17 release here:
https://wiki.postgresql.org/wiki/PostgreSQL_17_Open_Items
Please let us know if you have any questions.
On behalf of the PG17 RMT,
Michael
[1]: https://en.wikipedia.org/wiki/Anywhere_on_Earth
[2]: /messages/by-id/9fbe60ec-fd1b-6ee0-240d-af7fc444223d@postgresql.org -- Michael
--
Michael
Dear Michael,
We are pleased to announce the Release Management Team (RMT) (cc'd)
for the PostgreSQL 17 release:
- Robert Haas
- Heikki Linnakangas
- Michael Paquier
Thanks for managing the release of PostgreSQL to proceed the right direction!
You can track open items for the PostgreSQL 17 release here:
https://wiki.postgresql.org/wiki/PostgreSQL_17_Open_Items
I think the entry can be closed:
```
pg_upgrade with --link mode failing upgrade of publishers
Commit: 29d0a77fa660
Owner: Amit Kapila
```
The reported failure was only related with the test script, not the feature.
The issue has already been analyzed and the fix patch was pushed as f17529b710.
Best Regards,
Hayato Kuroda
FUJITSU LIMITED
https://www.fujitsu.com/
On Mon, Mar 18, 2024 at 03:49:24AM +0000, Hayato Kuroda (Fujitsu) wrote:
I think the entry can be closed:
```
pg_upgrade with --link mode failing upgrade of publishers
Commit: 29d0a77fa660
Owner: Amit Kapila
```The reported failure was only related with the test script, not the feature.
The issue has already been analyzed and the fix patch was pushed as f17529b710.
If you think that this is OK, and as far as I can see this looks OK on
the thread, then this open item should be moved under "resolved before
17beta1", mentioning the commit involved in the fix. Please see [1]https://wiki.postgresql.org/wiki/PostgreSQL_16_Open_Items#resolved_before_16beta1 -- Michael
for examples.
[1]: https://wiki.postgresql.org/wiki/PostgreSQL_16_Open_Items#resolved_before_16beta1 -- Michael
--
Michael
Dear Michael,
If you think that this is OK, and as far as I can see this looks OK on
the thread, then this open item should be moved under "resolved before
17beta1", mentioning the commit involved in the fix. Please see [1]
for examples.
OK, I understood that I could wait checking from you. Thanks.
Best Regards,
Hayato Kuroda
FUJITSU LIMITED
https://www.fujitsu.com/
On Mon, Mar 18, 2024 at 12:39 PM Hayato Kuroda (Fujitsu)
<kuroda.hayato@fujitsu.com> wrote:
If you think that this is OK, and as far as I can see this looks OK on
the thread, then this open item should be moved under "resolved before
17beta1", mentioning the commit involved in the fix. Please see [1]
for examples.OK, I understood that I could wait checking from you. Thanks.
I don't think there is a need to wait here. The issue being tracked
was fixed, so I have updated the open items page accordingly.
--
With Regards,
Amit Kapila.
On Mon, 18 Mar 2024 at 15:50, Michael Paquier <michael@paquier.xyz> wrote:
Additionally, the RMT has set the feature freeze to be **April 8, 2024
at 0:00 AoE** (see [1]). This is the last time to commit features for
PostgreSQL 17. In other words, no new PostgreSQL 17 feature can be
committed after April 8, 2024 at 0:00 AoE. As mentioned last year in
[2], this uses the "standard" feature freeze date/time.
Someone asked me about this, so thought it might be useful to post here.
To express this as UTC, It's:
postgres=# select '2024-04-08 00:00-12:00' at time zone 'UTC';
timezone
---------------------
2024-04-08 12:00:00
Or, time remaining, relative to now:
select '2024-04-08 00:00-12:00' - now();
David
On Thu, Apr 04, 2024 at 03:10:27PM +1300, David Rowley wrote:
Someone asked me about this, so thought it might be useful to post here.
I've received the same question.
To express this as UTC, It's:
postgres=# select '2024-04-08 00:00-12:00' at time zone 'UTC';
timezone
---------------------
2024-04-08 12:00:00Or, time remaining, relative to now:
select '2024-04-08 00:00-12:00' - now();
And, as of the moment of typing this email, I get:
=# select '2024-04-08 00:00-12:00' - now() as time_remaining;
time_remaining
-----------------
13:10:35.688134
(1 row)
So there is just a bit more than half a day remaining before the
feature freeze is in effect.
--
Michael
On Sun, Apr 7, 2024 at 6:50 PM Michael Paquier <michael@paquier.xyz> wrote:
And, as of the moment of typing this email, I get:
=# select '2024-04-08 00:00-12:00' - now() as time_remaining;
time_remaining
-----------------
13:10:35.688134
(1 row)So there is just a bit more than half a day remaining before the
feature freeze is in effect.
OK, so feature freeze is now in effect, then.
In the future, let's use GMT for these deadlines. There have got to be
a lot more people who can easily understand when a certain GMT
timestamp falls in their local timezone than there are people who can
easily understand when a certain AOE timestamp falls in their local
timezone.
And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.
--
Robert Haas
EDB: http://www.enterprisedb.com
Robert Haas <robertmhaas@gmail.com> writes:
And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.
I was just about to pen an angry screed along the same lines.
The commit flux over the past couple days, and even the last
twelve hours, was flat-out ridiculous. These patches weren't
ready a week ago, and I doubt they were ready now.
The RMT should feel free to exercise their right to require
revert "early and often", or we are going to be shipping a
very buggy release.
regards, tom lane
On Mon, Apr 8, 2024 at 9:26 AM Robert Haas <robertmhaas@gmail.com> wrote:
On Sun, Apr 7, 2024 at 6:50 PM Michael Paquier <michael@paquier.xyz> wrote:
And, as of the moment of typing this email, I get:
=# select '2024-04-08 00:00-12:00' - now() as time_remaining;
time_remaining
-----------------
13:10:35.688134
(1 row)So there is just a bit more than half a day remaining before the
feature freeze is in effect.OK, so feature freeze is now in effect, then.
In the future, let's use GMT for these deadlines. There have got to be
a lot more people who can easily understand when a certain GMT
timestamp falls in their local timezone than there are people who can
easily understand when a certain AOE timestamp falls in their local
timezone.And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.
What if we pick the actual feature freeze time randomly? That is,
starting on March 15th (or whenever but more than a week before), each
night someone from RMT generates a random number between $current_day
and April 8th. If the number matches $current_day, that day at
midnight is the feature freeze.
- Melanie
On Mon, Apr 8, 2024 at 10:27 AM Melanie Plageman
<melanieplageman@gmail.com> wrote:
On Mon, Apr 8, 2024 at 9:26 AM Robert Haas <robertmhaas@gmail.com> wrote:
On Sun, Apr 7, 2024 at 6:50 PM Michael Paquier <michael@paquier.xyz> wrote:
And, as of the moment of typing this email, I get:
=# select '2024-04-08 00:00-12:00' - now() as time_remaining;
time_remaining
-----------------
13:10:35.688134
(1 row)So there is just a bit more than half a day remaining before the
feature freeze is in effect.OK, so feature freeze is now in effect, then.
In the future, let's use GMT for these deadlines. There have got to be
a lot more people who can easily understand when a certain GMT
timestamp falls in their local timezone than there are people who can
easily understand when a certain AOE timestamp falls in their local
timezone.And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.What if we pick the actual feature freeze time randomly? That is,
starting on March 15th (or whenever but more than a week before), each
night someone from RMT generates a random number between $current_day
and April 8th. If the number matches $current_day, that day at
midnight is the feature freeze.
Unfortunately many humans are hardwired towards procrastination and
last minute heroics (it's one reason why deadline driven development
works even though in the long run it tends to be bad practice), and
historically was one of the driving factors in why we started doing
commitfests in the first place (you should have seen the mad dash of
commits before we had that process), so ISTM that it's not completely
avoidable...
That said, are you suggesting that the feature freeze deadline be
random, and also held in secret by the RMT, only to be announced after
the freeze time has passed? This feels weird, but might apply enough
deadline related pressure while avoiding last minute shenanigans.
Robert Treat
https://xzilla.net
On Mon, 2024-04-08 at 09:26 -0400, Robert Haas wrote:
And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.
I found that there are a lot of people who can only get going with a
pressing deadline. But that's just an observation, not an excuse.
I don't know if additional rules will achieve anything here. This can
only improve with buy-in from the committers, and that cannot be forced.
Yours,
Laurenz Albe
On 8 Apr 2024, at 17:26, Melanie Plageman <melanieplageman@gmail.com> wrote:
What if we pick the actual feature freeze time randomly? That is,
starting on March 15th (or whenever but more than a week before), each
night someone from RMT generates a random number between $current_day
and April 8th. If the number matches $current_day, that day at
midnight is the feature freeze.
But this implies that actual date is not publicly known before feature freeze is in effect. Do I understand idea correctly?
Best regards, Andrey Borodin.
On 08/04/2024 16:43, Tom Lane wrote:
Robert Haas <robertmhaas@gmail.com> writes:
And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.I was just about to pen an angry screed along the same lines.
The commit flux over the past couple days, and even the last
twelve hours, was flat-out ridiculous. These patches weren't
ready a week ago, and I doubt they were ready now.The RMT should feel free to exercise their right to require
revert "early and often", or we are going to be shipping a
very buggy release.
Can you elaborate, which patches you think were not ready? Let's make
sure to capture any concrete concerns in the Open Items list.
I agree the last-minute crunch felt more intense than in previous years.
I'm guilty myself; I crunched the "direct SSL" patches in. My rationale
for that one: It's been in a pretty settled state for a long time. There
hasn't been any particular concerns about the design or the
implementation. I haven't commit tit sooner because I was not
comfortable with the lack of tests, especially the libpq parts. So I
made a last minute dash to write the tests so that I'm comfortable with
it, and I restructured the commits so that the tests and refactorings
come first. The resulting code changes look the same they have for a
long time, and I didn't uncover any significant new issues while doing
that. I would not have felt comfortable committing it otherwise.
Yeah, I should have done that sooner, but realistically, there's nothing
like a looming deadline as a motivator. One idea to avoid the mad rush
in the future would be to make the feature freeze deadline more
progressive. For example:
April 1: If you are still working on a feature that you still want to
commit, you must explicitly flag it in the commitfest as "I plan to
commit this very soon".
April 4: You must give a short status update about anything that you
haven't committed yet, with an explanation of how you plan to proceed
with it.
April 5-8: Mandatory daily status updates, explicit approval by the
commitfest manager needed each day to continue working on it.
April 8: Hard feature freeze deadline
This would also give everyone more visibility, so that we're not all
surprised by the last minute flood of commits.
--
Heikki Linnakangas
Neon (https://neon.tech)
On Mon, Apr 8, 2024 at 10:41 AM Robert Treat <rob@xzilla.net> wrote:
On Mon, Apr 8, 2024 at 10:27 AM Melanie Plageman
<melanieplageman@gmail.com> wrote:On Mon, Apr 8, 2024 at 9:26 AM Robert Haas <robertmhaas@gmail.com> wrote:
On Sun, Apr 7, 2024 at 6:50 PM Michael Paquier <michael@paquier.xyz> wrote:
And, as of the moment of typing this email, I get:
=# select '2024-04-08 00:00-12:00' - now() as time_remaining;
time_remaining
-----------------
13:10:35.688134
(1 row)So there is just a bit more than half a day remaining before the
feature freeze is in effect.OK, so feature freeze is now in effect, then.
In the future, let's use GMT for these deadlines. There have got to be
a lot more people who can easily understand when a certain GMT
timestamp falls in their local timezone than there are people who can
easily understand when a certain AOE timestamp falls in their local
timezone.And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.What if we pick the actual feature freeze time randomly? That is,
starting on March 15th (or whenever but more than a week before), each
night someone from RMT generates a random number between $current_day
and April 8th. If the number matches $current_day, that day at
midnight is the feature freeze.Unfortunately many humans are hardwired towards procrastination and
last minute heroics (it's one reason why deadline driven development
works even though in the long run it tends to be bad practice), and
historically was one of the driving factors in why we started doing
commitfests in the first place (you should have seen the mad dash of
commits before we had that process), so ISTM that it's not completely
avoidable...That said, are you suggesting that the feature freeze deadline be
random, and also held in secret by the RMT, only to be announced after
the freeze time has passed? This feels weird, but might apply enough
deadline related pressure while avoiding last minute shenanigans.
Basically, yes. The RMT would find out each day whether or not that
day is the feature freeze but not tell anyone. Then they would push
some kind of feature freeze tag (do we already do a feature freeze
tag? I didn't think so) at 11:59 PM (in some timezone) that evening
and all commits that are feature commits after that are reverted.
I basically thought it would be a way for people to know that they
need to have their work done before April but keep them from waiting
until the actual last minute. The rationale for doing it this way is
it requires way less human involvement than some of the other methods
proposed. Figuring out how many commits each committer is allowed to
do based on past number of LOC,etc like Robert's suggestion sounds
like a lot of work. I was trying to think of a simple way to beat the
natural propensity people have toward procrastination.
But, an approach like Heikki suggested [1]/messages/by-id/a5485b74-059a-4ea0-b445-7c393d6fe0de@iki.fi with check-ins and
staggered deadlines is certainly much more principled. It just sounds
like it will require a lot of enforcement and oversight. And it might
be hard to ensure it doesn't end up being enforced only for some
people and not others. However, I suppose everyone is saying a mindset
shift is needed. And you can't usually shift a mindset with a
technical solution like I proposed (despite what Libertarians might
tell you about carbon offsets).
- Melanie
[1]: /messages/by-id/a5485b74-059a-4ea0-b445-7c393d6fe0de@iki.fi
On Mon, 8 Apr 2024 at 18:42, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
On 08/04/2024 16:43, Tom Lane wrote:
Robert Haas <robertmhaas@gmail.com> writes:
And maybe we need to think of a way to further mitigate this crush of
last minute commits. e.g. In the last week, you can't have more
feature commits, or more lines of insertions in your commits, than you
did in the prior 3 weeks combined. I don't know. I think this mad rush
of last-minute commits is bad for the project.I was just about to pen an angry screed along the same lines.
The commit flux over the past couple days, and even the last
twelve hours, was flat-out ridiculous. These patches weren't
ready a week ago, and I doubt they were ready now.The RMT should feel free to exercise their right to require
revert "early and often", or we are going to be shipping a
very buggy release.Can you elaborate, which patches you think were not ready? Let's make
sure to capture any concrete concerns in the Open Items list.I agree the last-minute crunch felt more intense than in previous years.
I'm guilty myself; I crunched the "direct SSL" patches in. My rationale
for that one: It's been in a pretty settled state for a long time. There
hasn't been any particular concerns about the design or the
implementation. I haven't commit tit sooner because I was not
comfortable with the lack of tests, especially the libpq parts. So I
made a last minute dash to write the tests so that I'm comfortable with
it, and I restructured the commits so that the tests and refactorings
come first. The resulting code changes look the same they have for a
long time, and I didn't uncover any significant new issues while doing
that. I would not have felt comfortable committing it otherwise.Yeah, I should have done that sooner, but realistically, there's nothing
like a looming deadline as a motivator. One idea to avoid the mad rush
in the future would be to make the feature freeze deadline more
progressive. For example:April 1: If you are still working on a feature that you still want to
commit, you must explicitly flag it in the commitfest as "I plan to
commit this very soon".April 4: You must give a short status update about anything that you
haven't committed yet, with an explanation of how you plan to proceed
with it.April 5-8: Mandatory daily status updates, explicit approval by the
commitfest manager needed each day to continue working on it.April 8: Hard feature freeze deadline
This would also give everyone more visibility, so that we're not all
surprised by the last minute flood of commits.
IMO the fact that people struggle to work on patches, and make them better,
etc. is an immense blessing for the Postgres community. Is the peak of
commits really a big problem provided we have 6 months before actual
release? I doubt March patches tend to be worse than the November ones.
People are different, so are the ways they feel motivation and inspiration.
This could be easily broken with bureaucratic decisions some of them, like
proposed counting of lines of code vs period of time look even little bit
repressive.
Let's remain an open community, support inspiration in each other, and
don't build an over-regulated corporation. I feel that Postgres will win if
people feel less limited by formal rules. Personally, I believe RMT has
enough experience and authority to stabilize and interact with authors if
questions arise.
Regards,
Pavel Borisov
Heikki Linnakangas <hlinnaka@iki.fi> writes:
On 08/04/2024 16:43, Tom Lane wrote:
I was just about to pen an angry screed along the same lines.
The commit flux over the past couple days, and even the last
twelve hours, was flat-out ridiculous. These patches weren't
ready a week ago, and I doubt they were ready now.
Can you elaborate, which patches you think were not ready? Let's make
sure to capture any concrete concerns in the Open Items list.
[ shrug... ] There were fifty-some commits on the last day,
some of them quite large, and you want me to finger particular ones?
I can't even have read them all yet.
Yeah, I should have done that sooner, but realistically, there's nothing
like a looming deadline as a motivator. One idea to avoid the mad rush
in the future would be to make the feature freeze deadline more
progressive. For example:
April 1: If you are still working on a feature that you still want to
commit, you must explicitly flag it in the commitfest as "I plan to
commit this very soon".
April 4: You must give a short status update about anything that you
haven't committed yet, with an explanation of how you plan to proceed
with it.
April 5-8: Mandatory daily status updates, explicit approval by the
commitfest manager needed each day to continue working on it.
April 8: Hard feature freeze deadline
This would also give everyone more visibility, so that we're not all
surprised by the last minute flood of commits.
Perhaps something like that could help, but it seems like a lot
of mechanism. I think the real problem is just that committers
need to re-orient their thinking a little. We must get *less*
willing to commit marginal patches, not more so, as the deadline
approaches.
regards, tom lane
Pavel Borisov <pashkin.elfe@gmail.com> writes:
IMO the fact that people struggle to work on patches, and make them better,
etc. is an immense blessing for the Postgres community. Is the peak of
commits really a big problem provided we have 6 months before actual
release? I doubt March patches tend to be worse than the November ones.
Yes, it's a problem, and yes the average quality of last-minute
patches is visibly worse than that of patches committed in a less
hasty fashion. We have been through this every year for the last
couple decades, seems like, and we keep re-learning that lesson
the hard way. I'm just distressed at our utter failure to learn
from experience.
regards, tom lane
On 4/8/24 16:59, Tom Lane wrote:
Heikki Linnakangas <hlinnaka@iki.fi> writes:
On 08/04/2024 16:43, Tom Lane wrote:
I was just about to pen an angry screed along the same lines.
The commit flux over the past couple days, and even the last
twelve hours, was flat-out ridiculous. These patches weren't
ready a week ago, and I doubt they were ready now.Can you elaborate, which patches you think were not ready? Let's make
sure to capture any concrete concerns in the Open Items list.[ shrug... ] There were fifty-some commits on the last day,
some of them quite large, and you want me to finger particular ones?
I can't even have read them all yet.Yeah, I should have done that sooner, but realistically, there's nothing
like a looming deadline as a motivator. One idea to avoid the mad rush
in the future would be to make the feature freeze deadline more
progressive. For example:
April 1: If you are still working on a feature that you still want to
commit, you must explicitly flag it in the commitfest as "I plan to
commit this very soon".
April 4: You must give a short status update about anything that you
haven't committed yet, with an explanation of how you plan to proceed
with it.
April 5-8: Mandatory daily status updates, explicit approval by the
commitfest manager needed each day to continue working on it.
April 8: Hard feature freeze deadlineThis would also give everyone more visibility, so that we're not all
surprised by the last minute flood of commits.Perhaps something like that could help, but it seems like a lot
of mechanism. I think the real problem is just that committers
need to re-orient their thinking a little. We must get *less*
willing to commit marginal patches, not more so, as the deadline
approaches.
For me the main problem with the pre-freeze crush is that it leaves
pretty much no practical chance to do meaningful review/testing, and
some of the patches likely went through significant changes (at least
judging by the number of messages and patch versions in the associated
threads). That has to have a cost later ...
That being said, I'm not sure the "progressive deadline" proposed by
Heikki would improve that materially, and it seems like a lot of effort
to maintain etc. And even if someone updates the CF app with all the
details, does it even give others sufficient opportunity to review the
new patch versions? I don't think so. (It anything, it does not seem
fair to expect others to do last-minute reviews under pressure.)
Maybe it'd be better to start by expanding the existing rule about not
committing patches introduced for the first time in the last CF. What if
we said that patches in the last CF must not go through significant
changes, and if they do it'd mean the patch is moved to the next CF?
Perhaps with exceptions to be granted by the RMT when appropriate?
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
On 4/8/24 11:05, Tom Lane wrote:
Pavel Borisov <pashkin.elfe@gmail.com> writes:
IMO the fact that people struggle to work on patches, and make them better,
etc. is an immense blessing for the Postgres community. Is the peak of
commits really a big problem provided we have 6 months before actual
release? I doubt March patches tend to be worse than the November ones.Yes, it's a problem, and yes the average quality of last-minute
patches is visibly worse than that of patches committed in a less
hasty fashion. We have been through this every year for the last
couple decades, seems like, and we keep re-learning that lesson
the hard way. I'm just distressed at our utter failure to learn
from experience.
I don't dispute that we could do better, and this is just a simplistic
look based on "number of commits per day", but the attached does put it
in perspective to some extent.
--
Joe Conway
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
Attachments:
allcommits.pngimage/png; name=allcommits.pngDownload
�PNG
IHDR 4 r #��/ IDATx���w�T������D�},�(Q�bX�1�hD%J���nb4�M����JG��VX��i��.�{�������c��;��;�����<<�����������AB!�BH���~Fk@!�B!J�AC!�B�Xh�B!�B"4�B!����
!�B!$b�AC!�B�Xh�B!�B"4�B!����
!�B!$b1���^�{G�b`\�z��0�2� ��w_vN5
����-�E��
B!�B���M3�lS�n~�V��_�^<wn�}���&�mDI]-r����'f���CU&�B!��C
�� �H��_5�v-��Aw����G�]���V�_g�&
!�B!0��q47�����3&��SN���+q�{�Q/8P�����&"1�7t'�Cqf.lF*M!�B1
���hGL\"�N�c�x�]3����_��>��w &~0���1xp<��D�����Z���O!�B �E]�q��i"�P����a�����<�a<7�}����N��� ��u������v3u�T�III ������B!� $%%if�����:;��<� ��z��@�2q���#������8�� h���B!��a�Ac���{������E�h<�!^_a�M��C.��b ^���v����o��m�b�����JB!�BL��M���`��s�|��6�o_�1/�����@L��{��>�F�z�(�{*��^�Gi�B!�B�z�1�p��_ ��/��<��0w�:+E!�B���X�B!�B��
!�B!$b�AC!�B�Xh�B!�B"4�B!����
!�B!$b�AC!�B�Xh�B!�B"4�B!����
!�B!$b�AC!�B�Xh�B!�B"4�B!����
!�B!$b�AC!�B�Xh�B!�B"4�B!����4����w�@�y(� ��������8���;a2fe��V�B!�bb�V �c������Qn��M�)x73g��B!�b"L`)�Kz����f�u)$�4� �` !�B!��pkA�]���-�����y��;�������p�)'cL����������B!�b.�5h�Z�y�9�� �8w bD?��%b���q�� ���KnC���C�j@��B!�|��f�Sx����|"����3n���os�=x��xn���9i����8Q���dX�V�q$%%i�:!�B!�j�l]�UY�qc�� [Kjzf`b�3�z��h�J��.�1 �l=�? �gYi���>�{
����;B!�B���"����K�p��/;2_���f!����o{���0�^�5^�rZ|��W�q��?� u&�B!����"��W�b�9H�gF�������V��[Fx��!�B!��]�q
�?�}!�z�����)~a�R�B!�c�B!�B
B!�BH�B��B!����!�B!�D,4h!�B1 ��{��4h!�B1�����]���?���*���h�B!�b���Cuc;Z;�rG���D4h!�B1�����!�IdA��B!����!�B!�d\��
���,���v����hU!�B$!@���'�hQ�v�
7<�m����C!�0�h�!�B�Fp��D
��h�� ����
!�B�|bc�
B!�BL ��(�
�j�0B!$R�-���th����F!�B"�a�A��B!����!�B!�D,�1h�����3b�C�p���r�#�}�8i�(�>�Z<�4]�I����ZB!��>�9�������r+���M��6����Ko@�3�vz���B!�� ��U� uI���y3����.��v-��Aw����G�]���V�_g�&
!�B!0�A#�����`��O�����:P�����&"1���8$N���\�4���f��+���u�����y����/-H�w�F�q��������'��hU!����m6��t���!B-�<���[���D�*�ho�@L�`���`��x�;:������a�Z�F���$K�o�b��* @q~�$&�z�OMK��sWW��2��^W������/g�����V)bx��<�Y����X������)B�|rrj\����a�6���M����b�X��D�]�K���� ��u������v3u�T���X��"K�M�6p4'��lX,��z�Oqu30/ '���I_h��!��K~�KG�R�p��w �6���8i�`�5"�B��`�N`o5 ��3���r�������4[WlDU�v�����Z�P�3���OM����m& �vdg���&``P��B!�������K�p��/;2_���f!������[q'^��',z�Xw��w������:�����������=���B��� �S���/b��q���p����2{!M���!D;:���/h�x�cw���0Z
B!*� ;�����8��T}3��0w��j��C����w���v#����
V6������f��I��b�J�B���w��4o�|��!8v� ��{�PV����N,��e�:�B���2��A�p
=1�-�����XOlv��H��e�B��n��
B!�BL'��C�&�rF��mQ�1B�������01�*���,nO ��������A�Dk�5U������N�dqB�B"��V
/8 �|"1iG��sU�8=� Wh!$z�
�2h�BH�� B!}4�B!����
!&���B!��AC��p[Q'B�N��K�
�:h0D?�cB!��B��B!���� '� !�B174h��C�T�|BHd�q�2h�x�{��36�.?�EZ�1cB"��Sr��������V��!�C�
�k���%�����j��B���H n��7 ���v���)kD Wh��lo�#�B���U5�-c10��&����%��M�����jB��1��1����d����S0|XF�z)�|g7 ��q��X��C\��&cV&�~�th�B!�D7�4��O0s�z��F*�[Q����xe���t7��6��w�j�:����s��7ReB!�B4�gh�c�
��K��9_���a�!��[�����/l��� �H���T��>�6ZD
x�(!��zE��1���7�
�~�������cY����U�!47�����3&��SN���+q�{�Q�v�D0� !����j����Gms~����y&�f�k�)���.�
cg|���q���1��~�)J����c�O��k��z�#�������G�l�I�����a������$K���
����,$%�)y%b ������������(h�����;Q�7Xgm"�����M�6��!�h�!+�������T���H�hF��syy9�����j������({���V����l8�����)F'L_��?t���Wx���pO�}Xr�m���m�0�'=���������k�-�=?u�T���b���������z ���a�L��B�P����9 ���.Zb��|[����W^�K��1@��$����4\�M���#���qd��vW N?�tX,��!�OU�#��2 ���cM����&�!�_ 8��3`���q#��~��M��d�qh��[�Z3�0g]:�_<FO��j ������t�<X�.Wh6[���Ti��%�����aZ�-fs�O�q�-eO�~�P�&��{�2����= �%��xc-&\81Y�q����������>��+�����c��J|B����l� =���M�5�b�+gc�=�bTBN��<�n��I���_��Y� �� 1l$���
c^Z��o��5C1"s��O�61�2�b"�!�
���"���|��u�F�B�`[M� �t�{�&&������0\��Hy���"Q��3�e���������ga����!�h�V���CcB<�.r�&��M����U?u0s"���N4�v �+C�&z���E4==��4h!$��������3B 4A�
!�B!��c4M��D5�r����r"%��B<��I������D%X��QDc��BT`��<��m\��tt��VG�����/0����3������V���3���}��4HCBH(�p�B!�A���)>��Z;��'��2�B?`B�O-Dzq-�[:1w������CnY���09�
��p\L!��D����hA�-H����n�]uT����������3!�BH�B�&���>��yni!�BH_�
��1�W����'�;���SB!}�h������!QEkg7o�0Z
M��0D_�H!� �L1'�F+`6�pE6�l3f�?l�� �Wh���� �*!$��qZ�v\�!QE~Ec���}��K����|���������G��0��s��I4�o�W��>��!$J��F������Q��Q
Wh�
s��������BT����+(R���w��(~5�Ds>b�W�(�E/���B�l�"���}^��S�B! /�4��}}tl2�h#��&f-�0���Hr�W��]�!7��O�
[�����%�L� r+=�07���y?��T����W4������{>A^y�2!:�jJH���f��g�`�o���������&b��{��3��i����k~@gW�Z�/`�`������f,����.�^8~ H�����5�lh��
G=� P��[:U�S�{h�m�BAE#
+��t[�*zB�����@��b4�w���?�.���D46��{7_p
�K��S/����F� Z|��/;'����\������X��At���~6c�]6����Q�����j���"��|�m����!��k:
>����q���niD�������WJ���M��6����Ko@�3�vz��*���2(���.
��&�BH_���A���s��K7�� �C�E��W�k�_���eX3�<=#�������J���Lhi�p���"�F��1>�u8�S�"�D����%8<���[�o-}���P����+p�-cD {+
��eeW��W
CmN.Z�������qH�8�����3���9���Rk���6^������������]j>_X�V8#
5Mx��T-��=n3RV��w�����z�U!��D��� �c�B���
D{Z����3�Ag�������yf��;?��P1<8��t��I_�L�[�-g2Vh� ��)�k�U]��;vg����L�/_X�9H���S�)�1w��[�`��A�X���
0Z%C���8\P����E������/B!bLa��0}Z�����_��;��=�����C tt�� �����:���n���a�Z��NJJ��KII��svv6������/���^Q��� ����������a������_}������(�]���*=���c�<����������"I�Mw����r������E�����EX>������iH�_���j��<$%�J�K-��W Z:�����8e�w���srr2F1ES� ���yZ�����b�����g�W�JJJd�y����{
l6�M&�K�\�TO�� �,!Z��_��\\\e/#�N�8�f$aE������/�'���~�~��N�{���l0y �#;�g]0��L�:�Gvo�X,�t���{ ���M�0��
���M]s'�y&