Hot Standby dev build (v8)

Started by Simon Riggsalmost 17 years ago19 messages
#1Simon Riggs
simon@2ndQuadrant.com
1 attachment(s)

http://wiki.postgresql.org/wiki/Hot_Standby

v8 - resolves a dozen minor issues.

Dev build with various debugging enabled. Expect clean v10 on Friday.

All outstanding items from emails now listed on Wiki.

Some new refactoring targets and tuning opportunities identified as
knock-on effects from earlier refactoring.

Testing started on this about 3 hrs ago, nothing new found as yet.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

Attachments:

hs.v8.20090114_1.tar.bz2application/x-bzip-compressed-tar; name=hs.v8.20090114_1.tar.bz2Download
BZh91AY&SYC]�����!��������������Ha����F�%�Z�[��$*��B�to{Z��������s��[6����o��,�M�6��E��}�q���y�k�
�7��A�{�(���z7���,1�q@\� �g#�������k5����S@������RQ)B*�c�@U8���IATTH(�@(�:��D@����U��
���=.��Wj��m]�t�;`��������:(z( �t����PT���z����r�Y/����PUP�@(#�� ��6h�Cw>A��X�*��6�U�������Uw�EP���U��)o,u*6�*�U��w%UPyus-����s����5��f�;<�/{��:�sYn�:���K��Smm�[i=���u��)),�S)x�l�9�R���P))��{j�<�$����C`um�]�����DF�{�k��M�����������
Q"64n`ml���	�zB�c�@��@����s�AF��;6������T����5@�#�UWCZ�U��c)�-�l��2������4�<;k�l/�P��m�T�����(�j������k���u��T�)%{����tS�q�#�J�������Iv������5��m�X�ZH6f�&�3i�4�u���QK*�a-Ci���*e�Q�{������>��P��"��H�9�0��PU	��s���E�W���y
m.;X���G�z�%�����E:������2h��4����z�5��4��H�SD���
M4��I�&�F�i�=S�yM�� a)�BD�Hj��E<L!O��=M��������@M��5I�y=Ph4��h��)$!=L����j�Si��h
Q��!I  �&LI��jf�Q�x�d	��
6���DB4hL4�###&�y��=C@� �/�����~����w����{>�*(�,	�F#J
��2`0B�D`LRb�FB#A��� $1��A�� �1�$DPfm=[��6�[ke�'�����uG��o�e;���%�M�����o�N��"��21 �HJ�b�� �bR�*���-��Z�6��F�:����

�p�Y\����Qb����&(|�H9*��*���~��?�e��?�abR�~A�9\���W����c����� �J'�����	�MJ��Tx�X�U��v�������/A;X���]@/l9)��B��������3'������(H
���(��C��	���]�� �TlII�`Td�H�E�I�TZME`��L�f1d�����6f�Q%)��[MSV����MLv`a{�bBS�>i������YYBVP(��yIH�9s�r�&D�U�']%�����w�v��X������?�?������sy9�W�&X���&���G��~(6����\.1���kcc! ��(�S��<=���1
AG,�W�D��4��+%%�*,��3J]]����GZ�(B)��b�������#>+��e�~U}�{BE��B�b�L41R�}Wu$l�I*f�fhAPv�{^�[�h�AQ���lIaH��"���
MA�q[��~Ox��|�����)M���9�
�����������`}�jZ���r�.S��<��g+
��%_�+�KF���\
����QK	]�'l<vf��R�f����u����?�����FF?���lnK��a�j���-�����GG[��d��d���P�D?��0IBPf�3b�If�4*j@�H����{��3(0��8�<�M�Hn��m'|�`��Y����L.pJC24��2T��Q��*4a+$#"ah��4�
&�X��e(��b6B�b�dL��&�	i1&��	L,&H1�$�l$M��4SD�3c ��%L���D��-L �,�f0i�L�B�d����������3�'��(����&m6���d,��U&@�����b��o�]SJ�"����F4�A�!�D���S%�4�4\����~�s�/1X�J4��Q�J��R0h�am����6'�I�0f+�Q�����M9�aa'�����C|�^z��mff�& �b4��Vk�Gf���.#8� �}g0������K
/�'Z��6��SFO�j�JE�W�u� ������W���t��'q9��k�6��{����$������X�I�M,J���s��d���~���t���p�c%�:VI�F�+*[%�����W��;�-_����E%�"��?�,FIe���+�������j�%5%&*���QZI�|��P���d��BM�@��������XE+I�R3#5-6h��2��ZZSbM�Kb��*P&���T�T�*l�	b#e�bM��F)Jh�h�iB	�J�3e�"Y!��2X�)�DfJM$�l��Y��m��(��x��I�[�g�7�L��W�sk��9T�b���n�I��vSK|���,�U��
���K�1 ���]������!@F����$��Sa`������k-DV��2W�����EJf��SY+E���R�D���Y&��b/�:�f��+�{����U��Q��[��e��B�,�E���*���Dl���!���j�&(�n�/pk� ��J�,A*0"A
E(J�$	-KM-+)�ei��SM��	��&I/�o�I��r���XD��"M�Dt��2p��dJC�*(�h4.��A�VT��ELJ�-�n�g�������C��`�������09�%0D~��m���,F�����c�����(T"pp,�B�Z*%��0����	���
�2�8pf�V��Q(1a�8^����,��`9��@����_�a%��d�ttX�q��LX�=�����=z^�q��,QT�
�0`�X�S�Ta�S"O�$f���bQ!rA�nP"���*&,�P Hr��D[qi�'%�:9p�t�U���2MjqvI��o�n�� ��/!��b����"Gq�r������:z�$XF�"bx_FQ=x�=2r�~��h^�4�b
h�,���i2h4��8kLkX9��m����30q��MS�U�W���)N�1��&�L��|���uw����/I.�N�"FH�Cj�9Sd!� ��!�V�U�p���W[r��k9�I�8�H��P�D����R��I%�t��w,N���_/��|����H�*B�2��$$�)���K��-���;��tT���!������q&���#�*�b��������l�����m=�]�������������ym�+���ow�R��e��S�Pjm���m�~'�������:������Wd�'gr�paIQ�#�X�cU�u�g����N�V*6�ut��3k��.��{���y ���������O��r",����d������x�i� x�A�BBTN�:vJz�Yr5�T��H�#�����j������}]��d��=b���(@���"��G��du${N=����X�\���\=�-����Y_�_���'���>�"Z:�T���8���/R����T��t�F�����q�?�h�9+�W��w6�z�Z����kt�d��Hn�Qhb���[�7ZX�p��%��h�Q�$`���n"E3�J���y����U�5��{��N�E�t��T]!\r	�N�����45*i�����9�q2��)t�eN��{\S�_���U�`Rd%�?�6;Jbc�20�������,%��g����?L�y�x<<����J��$�j2]���?0���~N���H��4#�
3PL~Ja7L�������%�+?�R�J��$�2!���Q�����pp��KxE
C+���{�Zevd��{��E�2@��
\
�"a
��m�������8�z;[d/�j�u�_��3Q�$����|�!�3�zN����7v�s)=E���D��
�S	�f�&��M�l��DE �Qv�Q%�qUO���v����^�3���l��O��x����h���n��?����_g��{������{$���y�����h�(�TBi@�Jj���CHG���������9��������1��e��(�+�P��� 3f�&�����!�B~={8���
��?f&/ns��������5����ec���z����~����J��������1.O�D���i����$�~�s��w������dN�s�<�����^z]��`|��:��,����-ML��6���P6������4���Z�������YO��q\�����J������	C��1
sL�q�{�7���j��s�iq�I0�HBq��������$���U�yC�J~rn�?ki\Su��]��\`�����c��w;��Zl�h
#���c��#�f����V31Y9���G�
��Q�&@����*�Wu�t�}��$#�|O���3���,._Me�@���u�����)�
$Vt��S�X�f�����H��O�}}���J#.���J��Q
/��z��?
6�5����J�+'��j�{#��I�,G.]b�~��!���6yyO7��7���W��Rbf������#�Xmn��vL������WV�M�}�����*c�����������s]�����z��3d�UF��9�����g�ZK�fn" ��[e�I'rQe:Q
�f#�hk�Q��SM�4)���u�����Z��&�����qC;="T���l=EJ���.>�n*�p�LI���^����}}S�o��� ����"�<����!&gM���'����)u�r���<gaw�F��t�x����'#�gm;:M���8�"	��!�"�$[.��QN�R�M��DUU�Qd�[�DL+�'���?����IL
a���Q�3��i�$p�H�73�!�Q���^��s���?���C��O�F����$�����#XN����m�[��M!<�:Q� ��"���K�y�S�gG������5�{2p���1����^M������{��=�������!P�'����[�Ii
��XJ�����%j�4�S��S��*J��[�@�N����""����W���R��$�Yp�sX�_��+i�%L�g����P1

M���yB���J�lc�'M�jGND1D%��@��I4&K_noV��1a5QP5L�G#'��*V���>@q��p)
���o��%�D/��G*��N�l��I��Rf��:d�>KRlm�5X�G:;M1$����'g��O����,�]��i�{E�n�)���=o�����Fdg��+K-&�-��O�����C����S���o����lg9�������}�\��G:��-ql=�=�q����|�uSLx���q����lw�1z����������|P��H4K�V���&������
�.?W�r`!D+@��R��m�J��PRs3���v��L���x��7u���-1�h@�&�����)��P6�T�/.����F�<��}����H�u����/�0�f�03l�+Os�����wE{���f���^M�i�X�����I���,t�8���)��s�)�I� P��Ws��I��j �����@��*QMBM(���vpq]��W��J��+��X�L$�b,E���$�5�A�����t'9�k�_=�u��/*Ss��8�J�F�H�b�h������u��Z�*����#r�H�_K������������!�d��s��9�E����[h�����EAK��C?���)�����I��"=U%��.^8�gU
P�H@6����*b�x�iv\��G��a#�L���3�����ma/���I���f'd:�M;��u9<��.l��NBI3�+����TS��G���:����������3����N�����w_T�i%E_���}-�������.B~�K�d��{����L?���C@�I�P�8r������?w��7��lM]]&Xo`Q��t�q�����<��	Q�?D
�����m�������x�|�=�I#����R���RW/�� P��M������\e�TK�e��\89��63����FlK��"\m��C�H����I��n����<������
i��?w>^OhjW�s�b��9@}R���"

�?$%!�������K�������������^j��L�5�x
�������f61������2?�Z
z��g�� �8��B��A�& ��qD5
c}W���q��A����i�j���*������I$Vi����G��$J�F�7�Q����n!���r�����}c�P��}sK�y����B}N�5��;�����h���'����B��
Dmg�-BmT��'u�����=�yI��J����T���+�f���y�u|�>n���\o�(����L��0|��������}�%��;��w���#���y�����9z>��Ec��!{���SI�9��f�zHDy�����J)1�������L��9���'�\N��w<4��~����D@~@�������$D�_����
L��"lwV�Vr�w�n��o{%�{��m�n�����-�WwNj�K-w*��]�]�7Sk������t�������S�&rk�����\��t�����vN���wQn�����{�Si��������m����u�9�J��o~�5��8�F��DF-��k30���"f��Y�KrYf���r�2�L�����T0�������������R+��Ysv�)�ru�+�i��[\��]YJ��-�7�w�I�����
$�L����S�^�^���Wm��n��\��^��K��]v�������7���u�K���]�[�
T�������M���t�4ZC
X2��Y�6��4�K��e�������4�����Xe*[b����M�����������������W��So]��n�s����E�Y�n�R�K�f���wn��Sv��.wQ�\�����%������cQ�2�u�6,����;u��u�5�s#u��i)'2D+Y��cXr���afu�T�@�n���]]g����I��zj]w��[�m�rv��t����\�=p�n��U4>��v������6E�}{��Ji��d��]�����v�������|���KQ�Q-U����V��i5��D������s.�=������[���]�M�]���\�5�Q�c#�]k���^����5���o]�������E�IL���oI2�Dn��J�]m"�������58�a;h�A��9���t��5:��[��ch��rf�b��{������/qv�j�u������t��z�2��R��Q	p��Y��46�
S��s1LM5%�J���s��s����n�;b�<�!���]��� ���5��t�L%���;��c���%�#���r��ct���i�N�Nt�u�b�]�NJ����S-��Y������OM���J�[r�|�)!@�#J4��#��eF]����SO����y����0q �6���I�3N���B������Wo}�k�^��J�O{y�/u�v�=�y�R�XQQ3P~o�~���f4�����f������u��cv���,�]T���;m-&T�Wt�����S<����u�������7]�2S]+�:��7I.:N]2���&&d�1#z�V�*�L��F]���;N�N�Yw]�Z���$������:^^�].K�K�����������������u �CIK1"e$Ym"�f�\��5S�?�l
�"d�o�c`��.����JiRr�A��.��������-,��Fu�������y/�k��������J�E������<���J���<����F� Mv�j-�HF��QE�A��Vn�I�X���yo=�h)���y����Mo+�������F����i�]-������1�S5I�%G�WK��I*�L���(��RQQyp�cF��?�����C$���l~8�������30�r�`���	�X�F0Py�t8���|�>��iM�6�)RBF��o��4S� ��{)	u��i @����&��f�\p&���*
�a��
"��j�
�7[>9����fH
����06��Z�<��]�8���f���D����v��u{���
�*�"�|�q�)M ����ud�R����k�wJS�;n�e����yx�����S��!)��&���X�����FGm��
�~�&���5v�u��n�U���g��"M���
QhZ�i�EB���(E
i1��I[Q����j� ��B�R�R�

�����f
�t�����1h�t�O�@�����b�`�N��+�^~:��@����e6�|��m��������w���*Su���a'�I�E��n��9�����}D:z�*j��S&�Tj�}�S4��L���Su�S�Nn]]�n�Gk��]��vU�.���.����qq�����+�]u�u�\N�6����MtEJ�Ie�lYj	b
Y�m2�n�M&R�u�	Or�j&Q:N��'\�����]cm%k����t*�����!�R �#���Q���*�ajif(h������4,m����������@�7rf�$��v�:�`�?�FRc��l!l�U�o�:W��A����G��A����O�����������>���]��1�����>G�?���
�o��p�����G2#���������_q�)Lz�~�$��RE�0���^�P��J��OA�����9'�oA[���vrr�[p��]b%4�����u����*�]�35b����B�?�y���~�Da�����	k���?������ro���5/�&W�Z��F�/��'.5��h�A���Y�?W�-�������$�E�D�s�?�x�4��J��69�k�3�6�����p���D����>4��R��0L��Q	��|��s�f�7�7��4~"g=���P%�Y�����#��������@��|^�����S�}��T�s�p[���0�mfR�v�wd��Vn"�-t�{L���s�y|>���'�O#����l+�����F����7�?Y�q��uT�Og�J����G���^80m��i/���}���H(�d�jSI,��`��0HH��_���J&�a������dr;����b����j��Ido�I����$b'����Q���j/�=6���g���[Hf{��1P]��;
S`���4�JM�r9��WGv���
���t�;�� ��_�zh��iq��$�����@A)���4��f���G����� ���3jEEK
���F
�sR��q!~��{�0��3?wr�b���v��;1���,�4�2������������5�h������������3��1w\Ow-������� `����0�K�K?�;���/��A�MIID\���7����?���|�|�k�
O��L��DEIT��������d�p�
H��������LTY��=�N��A$�V�0�?<��.R>�M�R����kU������!3X1B��jV��2�#����W����T��TRR�
p��>J���H��e��������W�U�X�iq=>g.�u�%c�;���3[t�������p��r��'z�T�qT�sz{{�v���EjRU����z	R�7�MO7���fqr�jnv�w|c�������������noE����H�����N��AZ��kzNEiS���r69�y��}���Q�$|�xz�?�R��|���T7=R����uA��������������Y^��T�^�������$M�1����-$�I�w�v�Pm�7j��vN�5�Zb������>ZRM>�s��8S��B��G`��F:�^�3������$��������$8�|�����Wa&&*�bb�i�����+]).��U���v#�5��������Ym
���:�����N����H���es�*��Lu(6i�'( ��3��!�C��.����mKR�����l�rl�%?]II��j��T�i*8��U=���NM�_����qJ.Gr)A�����(�u�����pN���0~��q~�����h����rs����d���o�3fh�;�=�V��3=��d��$~����DO��V�9���U����������BcUt4jG�
����@q�k7��C6S0d�&b�nZ
m���	�v�H-d?�iO|gJL��9
�(/�*9v��_h�BF�MB;/�3�d[���aK��������t~����_���%�������)e:��k]o�7��4j�K��r�u��r������T��i��qV9z�m�7���8N���V^X��e������9���j���=V�Z�����'738o&���Sz������:d�5�z��Z����Q�5m�^%��<������Nv������W�[����)�/7�2��������Bdz�~���V����<yW�V����fe��]\��p�S�&B��j�!q�P�9t�9\f�)�2�J����O�y~r�x��C�����T=���y��`>.�x{���k_��������lY��u�w���<�9N����o.��T?h��������O���LP����`?��6M
����H��>|�,?1F�������}H����K^�j�����>_v���!�� >���?1��I'��t����m�f$D������wd]}n�D���� ��[����*�����������X7���t7�_Iz
��AP8��;s"���~kw2?��w|I�>e�$
����w��!������n�d)
�e�Q]�����D�F�(H��&BBG������1�`
!Hd���E?}�����w|����	�o��z�0���W�y�����|������s(�2��N?�5�*`��*�����������?R}���?���	����x��@��Q�G��*����=�{~��{�h���Z�8b
<�4�.�Rn�
"�<�_�,��%��Q��@%�O�Y3����?HuY�R���^+���r��M��u�V���-/K�M����F�r��CXq�T��������Dg_�L	4��l��gcrH��B�9���_���)��8<����6}~��*5����:&�*�.f@R���X�rL��Z����<r/�rr�s��l8�kH��yB+��Ln�kO��G��p�P�3�cA��
]��J	���v��#-	������P��	H��h��
��"�t�BP��yA�q7~���&����k��XY���&L�7DQ��/�����'L�t�z��U�W�/-��AAK���1�A��p��.����p�����do9&��#Rn$
��9
���H�U]NE��}l�ab�QH�

���~	zD����������]�)��x��=��na\�y"GW�!:k���;�B!Gc!.����������n����%f�v�	5����O��M[-���Y������9�>^�\�����"��_�n	���v��FG�G�\�I�����I���������ra�!�N�;�� �wnvs�`�B�?������
�_����A���w���^\����l�>~��L?�b���������������
��l�������l���d ���i��#��y�6Upc)
b�'�4��+���+^D�1V�6"��6�%��{��:�����I<���_�1=��S�\1�'�?�N��s�q�
�m�l����v�z����P�]j7���H��B6I��cu
�y!����������#��g�#��-�^���������)�.Irg�2�^mf�m��q�D�|���O)�>o��G��0�h�%����L�whwB!�\aj�h(�����7��DF���?s��A�dBq��2�Y���O#)�����EP��P�-2l�����7����8�����A������r���2�{l�&��O��X��\T���6���c��v2�H�nDl�A�2<���7 ����~���'�����3�yC6]>a������$$�=�eT�H!$���v�G����������s3��B8Q$�@����7�h����p
�=��NS����}�
�7������+���X��{�������B��&.@'whn���g���	�����Q{?���%�h|�����~
]\g�b���{C&�_=9�����;����{F������������N	q��C����9���������m#a���7j����n�����`�qKM-5M���h">�N7q/��-���\�&�#�o�Q�x�F������t��n����^s����W,N����i{4��jDz/rGF_���!1$��(�c�^`jr�i���=�De����7	�K������]�%{��R����_�_4;���d���Rr���{����3
3�.�o��BK�����@��,<=�$�!�%�Bj�};���yJ�N��^!�������N�:��_������ >���4l�����L���gL�d�����0�rp� ����C�^7W�0$������N���n��&����Bq�r���;�mV������9x��~���N���&�vn����{��}K�!�[W_N
!/o������I$/|�XO�+���
4��MJ][�kh��H�|p�)�����V�p�\1���d����H=C���v����;�X�	?�S�u���.��e��G����59��N����e����$��	��e�&���)������WS\���)����j5<w���k��331��F���
��>DQ�7�ltLyD��a������6�fl\U�H�#�I�#� m��B_�&G
1Dr���$� ��$������-�e;�O~a�)����nM� �v��E�L1S����0��f�1��cV��3��hY�)L�(W����=�|��F�oVc�	��p��%��r���3Z����i.R�&f��v�F���FC�6FH*��g9��>^���\�;'Lf�r���O�o������i}`�Z���cEF�O	�rh��<�`Zjc+v3�6�61E���19R����5�+�F(�L�*N."w���%�z���f��Q����n��_|�����s�m�[W'�c*K�Z�B
��I�	���{m�W�D�g�6��:�O�U�5�#n�L��E��=DJ������lkV����5b��1���NH���� ��_Fp���&����F�&������9��=��x�d����)���Yi�L�S.�����X�M��"��p��ZE$����������"���{��v]����}N������
Y'�������z�G��^���IUBHG��v��|����|���3�k��:��]��bF|a;�=
���H�
��AF�z:�~��k��O�X�hQ���3?)���(�t���)=Pm3�K��9���ob8��Z�?i�r���$uv�������o���n���U�U+_/������������,�k�"��d�Sc����U�Z��V�,J+��k�1�#9��{8�����(H����F�%r�N�R�����'����������n"Z@�{Km�M��8�M,�����5i�V��Zqt5CR�q@��jhG����
��mD�B��5
}t����z�tz��:��TB����M�Gu��`�0bev���(��E
�G�����������5���EoGU��|��v{1�r������uZ#������'&�`��`D�I;D|�z�T����B�Y������a��[��Y[	�,Y����FFVXwYR������x���%�F|g�mJA��951PZ�9Vg��Cc�K,��z4�������r�����r�"���������)1�W��3w�������������Vj����V^�j(PR$����\�X��2$
�R�E1�L�&�<i�LR���Y���n��ZP\4:!��D�f/rS����#r~����$;[o����YTP�E���t�a�����4V���i����PA2T"W������j��	cwh/:,C���Tl�0��~����]V,��v������8����q��������_e��.���8��^���!�2Y���}l9��B�.o�
�*��JY�h�D������.D��NW���.��X�3�o���'���9J=��>=\w*����7�u*)�7n8>�����
�)�v�M9��;%��<na�]��w��+�r���[qa�@�:��wa"H��Bj�����!�����&� �m��P�W�������6N:�,�A^�M�A2
�Gc��yeJ������G�Br ���2O�����t��� 5wca��:&,U���w�[�,�)9H�\NF����m����
Ii���t��6�����i�����L��0#|���������&cO���]�����q��*�����:R���y�f�Oc�
>���7(���m�����	����R,�Q�x�:�'���������J�e���q�����6��h������Z���;�-}��|��v��]c��Yp�������j}x�\�js�g'M���'�?4���hk<u�~�#>����4�@���6O4����nJ��\v����#���K96w�A����k�5"�y"sl }�/U����5�ze�v9�f�M��7	^�(x���bi#�kl�1vA�m��#o]�YbB����QJvVM%���<������m��&A��C='����U���{�h?��Q��q[d��=�;-��G)�,{����H65n��PS���=��
�*^�uEj���:h�;R�~G����>�1�?������~�G#���	Z���-H��Y�xN�	����g{�$�V6Uw����\t�az#����n����mL���i���AA8�L�P�$����t��a�sLZ�"��oG$��0e��~$��B�	�X/����41!���3� L�z8�<p��*X��fA������F�����TD�v}K
����[��;�R��1
P���xTJc�gO����)�YBx����)�7�H�y$8��O�n������,L�}����<��]!�*m
*d��.���
>�o�����e��;����@��r�c��I���M�����.��Yt���#�������1����pL��>�p�����.����@�s��[�9��$K��J��EBTP��_�mJk���������W&�V�b}�(�hp'm�;���r���2%�	k���L��R��r�]�)6��$�]�e�������F]`�Ky�s������+������������w�������������
"B���J�������v���R�O,I�mN�T��uE����D7h�8�&ZA2�6!
�_�"Z�-�~C3�i��s�U�4[��<��{<$ph��gZ5D�d�����5�����	4l�L`��H�L����K��Hdf��33���&�)s%��(kR'oT����Y�,���;��_����������S(Z�q~��w�m(^��)�CI�j<�)zg2�G����\��FJ\�D��DD����D����O��93���7y�9���Z�WKVNn�#"JSk<
�4����-�������W��^�Z��3�<m�\/��6���=3(H�;�]�svK%�g�-mE�dN�?9�7;E�m���b�p<�j�B��S[���Y8�bm��e2��+��(jD�*q%CS��5�Q�����d ��v+/4jk7x!�;z$~2��������qI$��Ew��X��f����yy5��f�V��kW>	i�I�x�����S3�C�G:������~�G��^���D��1���C[�>>�\A1��zn[I��r��<&C����=�d�mM�NS�P�s-9����6���fa��� ���������B���d����CN�0�v�����+"e,9?�H�2��Xl������L���QK��HE��t;Q������En/J��<�4��;�C�I�To�>e�\���V<�'y:T�M�5c-]���7"�L���O����r
V*��1��P�(w_�����(�,�y��6U���J������uA�������:E������)���"a:w\��A���b���������"�O�9�!�$��y��wB�@I�nnfg��V���,J�����>�f����36p��mS��]5p��~�Wju}w8������������y��i�GA����}kvS5�;W!s�s�����M:��z��v���I\�;oG}�|���������a1�bH���DF(�g:��q��'>�|��94���..�����!�Fk<�U!y��=}����kg5v�4,�K�����p��?'w����)'nH��7���6�X��<������>�1M.Z{�F^>Xi�r���o���i^0�L�ZR�'BA$�,�����D�&(gj��}[�m�:��1+;�L��jg*�o�P���D�Rl�n��3�Rn�E��eiC�{|���hs5������t�����E����5�Y���'�����������8%�+o�>�]$L���#B�,W=����M���m2$?-���$������!��;��2z��Z����HD�C�i�]�\�y=��S���$�����A�dt$z�r/tiU�3R�JlH;�I4�g���x�������:K�^��U�I��R��=���G�{�A����S��#Wj�2��LL=]��""�����#c�I���i���$!��
��G��y9��|(HM	�/�c�H%��%� ��^�������5*�m)��%)�T���j\���x�A��k�#bY��lSy���y)�Ho��c�[y��=M�8M��KR6�O���������.�&�#x�u�S���8L:��V���Y�e��R{�.%�E�.��=��B����,�X��O!������{U|=���I7a�zf��da��j��m���f�:����{�@f���w���EU�	�.��5����p�~���d���7�� T3�D���_�Z���%]��/4���r���kL�KG8�2H+���rv��I���:S�>8��R����=9P�j�7y�2
�g�y���������?C�Ya�{;8{�r� ��1��J	���c�4T���	���H��4j��-9%��/K7Q�����U���~r&��q����j4u
I��,8x���m���4�W���������6��
�[��#�Y��O��M��e%"����L���eZ��i@H�jx��}��qS��fN���UT�2�d�k2���~f��V�-ICw��Id��S|4�����I���=�q=��
c�V���`�-�^[�P�+h��s=*�����C�X��4��,M�X��](��V��M|eMK���}��O]�0h"��cG	y��A%��%����1(��l��"���*��\������j�v��7zF��; ��&��u?<����Y)�A��2�g����4�V��v4������C���3\w��� �w������q�+����L�oYI�S�?C�N|EZ��y��������W��e1/�-���i(m�Q/��
����a��[��_��0kz��l�
|����{��2B�?tM��u1�:Qz%~�������R6k�&;�cS�����������-O5���a��OY�g�*�g
�~�~������Z<�m�i�f)�cF<kI�����w����a'�(��A%h�y�uIE��8���=�,wd�G�|����!'�n����Lm�!�6=9D��V��5-�9'AP���EZ���SI���Z
c�HHp���7����_�Vk�X#�}���&����c�v�����kJKmzw���y�#yZ�X�=��-I5�Q]m�!������3��)�����[3cG��/�l��X�s���}������'+O\�������p�6�����
�J%�����Y^���q�Ty���Q�G(����N�d�H������[�13����v�����Lt�D�v� �|��A/��Z��wL��1�td����Ouu��E�jG2
>�}�=��?��b��J��0�S�(A��3�����\8��H��(��������9�qe)J"R���1��C����F&����1���������I�����|�V�~�a�W�*�m�G��}#���G���g��~�I��"���*�`�z����������o�e����reM��p�^	S'Z���?!����wh�w�:� �����N�D�����=k���nu�VC��3�x�t����-�
��;���h���I Ln����|������!f���[@4!��<�8�F"�k��������4��� ����U��R�)���j��!���8�D���)�'���9�v��K6,��������������e�+b�h��6�z*gR��s�\��:�.���� 2`�j��G�~�K,���k:d�WH��i�>F���6wc#`��1K��<A�Re1��m!����!!�B.���{k@������MG�$�&R5���K,��*�cjO6�7E���YL�O�����h����cD_�]���2��?�0��Rn<U��Z������P��	=,W�jD����Sl���S�>b��E��������������&H����I�D��U�[2_5��\�\���{U�TZ���,��5h(��va����AsD�#?F�g�D�MD'��A>%)-������q=$�����!
�!����1��{� ��:��� �]{z;gF��������&�"����g�6[�y�e����o�Tcv�~�:����}����{Z��E	8��O8��+���)���u��4���s�\��6�=���n�9�G�Q��c�k�.�g6�<��QB��oV�2
$(V����1)�m���oT�.��I�"5�Fb���+,��;�Yh~����43�$�s�����'O+32[FF%#����
��o�����p�y�BnH��7��Pf�p��6(�%
Y���b<W%v����-YZkOve�i�$���4�K0Y�}L���������s�}����w!������7�����>���m��0��l����!,�OA�3��>iR�F��=;�+u��< �N�<�A$����eBRJ$�Y�&�F����v��[7�;�C�Z
�t� ����V��(q�l�~1�����J{��W�iJ���9��a%GsSF(�j���l=��Au��*X�t%$	i�T���[�(����-���&/J��H�l��x9������})Ko�k"g�����(�8L��(�B�*q%������}?��.�;������:�)����5�|�'K�w�����Jb9���"%h�	1zZI��Q�$��SD�6���	��@�-"w�������y�K����<����h�y.��*�aq�<}qm.�
���R��
R��((�)@R�����NG���9��h��F"S���F�Y�F�`������}�*H�xQ�f���"Q�lj>��\C�g#�[e����{�Z�/�S$�����Z�M���~r��O�hN�U�U%{D�g��6��<=!0�s��i�
~�X����I�C�8�w����������x���w@�?X�U�\;Q�+���B(bE2�����$��p���_/m�8��lJ�����t9r�����?23m0z�����gl�h��}���e:�L[-��;CQ��b�������E���m�R�Nqi�{A�,J�d�v+��d6I��U��\�F����������3u#���8#��`����8������������c�d���V���4�t,`����j�	"��:���:Z�%��e%�&����V�������r.��`F0[9A�(/(������`��eM"�����I}�d���l�E(5����UV�g�1��oI���j�c����J&������_���;�Vyw5y��"�o���6Hdy�21b��E\�S�����U����+�cR�#�D��WV-�P}&f+�MK��+�dA�R�le����-fdj��� ����
T�vy�%�'A��V������5�g�em��� �o�f�j��5���%����Ac��"=��S�?��x|���=��c�Vk_�FY�W���*����������;�s���#]A2L�eJ��������3Jc���������J
��t�x�Y�5�i)F�y���$��7��j;�oUT��sjO�TI�'	��_0��Z�=r�^��I=�rJ33��}�=Q�1���R�����;�o��O���������������W4�Fxukn�S�������ip����CV.�uG��&�f��|�vt�z^�������������������jcRks8���?	�����6���n �+"��}�z�*��=%=���U������X������������_�J>2�v���5�����xn�G�1o������1����)���|,gzy,�f��<��2�.��O#o�~��#�i�*6����B5&����z�Y�7$���n7Y;M�3��u2�!j���o�e)�����y��93�k6h���}s�6�vp��
th�������nr��:%��Q��g�����W�V-��T!3�*.�2�QQ�����J�(����u�����"�h�>L�v�s�?�o,Y���2FSW�>��\=���^��i��g!���o:/mj��������L9� ����?y�O����'Y�)=��TR�z�����	��.+b�����r5u��
�Y��<���*?n�E���{�)_r��V)�Y���:_r�G�1�S�R��Y�����/��k�rp��ry��4�B~:�N���#M5(a����l��j��d_k�G���(����D��#B�u[��n |�s&c6�=%��TR�������j�{H��<V3����?���be\��3(;OJ��*�j=tR�m"I�t�����$H��"�������T<�
�SF#�biU��!01ARN��tz������yFa�.k�J��������9��[���U7�/�l���,C��"(���Hg����f���^E4��3"��.�f�<��D]����g
i��������'L[�L��Q�VDgqL�Zi.N?�B���NU�B��$h�\[�O��\Fw�� �����%m�Y�tw:H���P]}�^B�d��&)?eV3�����.O3����Z��|z�mk�`vy�=)�����s����2s���8��UZ��4CI��u%L@��!1��YuC�{�elc�Fv�c������(����*`(��^����Lj�U�d����F���������.���^6��i�J_ai��a����g�4n�V�K�$��X�q��yE3�+���je*��P��/S8��T��{�������'�%'�8t���O#�����?6|I�.Ux%���N&����fU�X9�(���u\o.�|������f��\�>~��z��������=K0��9Vv%yU�4�3���l���wY��H���6�^�����#�������5������4N1�
>���p�ZB�����iqR���j	��
T�����Q��u�N��~����U�S��^���5��>JM.C�<�(\���it��-c��W'���n�Y���v�4�uZ����W_l�����}����f�k&_�O��Q7�i����U���Cs�X��1���V����#U���(��b5�wJ~G�p!�8^MkP���?�����iO�d�M��
�u�G���?JJ�|�N��h�|!����5����HI���O����7ei��N7����$�:Qj�l�t��2�W������4�4�������vY��y8�O��5{���k��_A�}�|��������Xt������H�9�Me�'�lv[��M+�tfA� BH�6����{H^e��\8�|���5��(hN���DH�gJ\�
�Y�#�7 ��rwQ�a�'��B������`��4�>�^J���~���F`�O.���L7�L���A{;B��&�d��������29]O.���������R�?2}E1�9A�8tG�Z&���>i���������oC�&��><��S���f>&BJ�j�[�������A�w$W#����'�?��?>	�d�������e���(v~={�2}x�@���,@I$1��Ez����QUO�Bs%�/����
P�R��K��r?���$��{O�t��d�����7���TC�p������EO����p����H�C��� _�,;�((�el��X������E�C1~h����>����96��u/�\�D��'�S���G�������}�p���a)���$��Y�o�u-,���i��h�d��`�n��?�,�R��������M�'�}(W�������=���w^N������D�$H�#d�u�i������~�3#���!{�1?���2&i&`�����#3��.��%�b����nf��;1��3 �Z�I�u��L��JI���o� O������������{?�e4��E�����1�rN+���[8�������`���@AJD�	���f=880�Z[��m1���D�������g��+�Q���_��$��>xq�x����&#����d\vU�$Q��h	�lC�-����fT�I��'G\�Y��z�2���q,��s�f��i������?�c�X��W���B`��L<������EO0CHP����s���t@����2te�����u6����_�1^�@x�$"�^z�u�����n}/�#]u�����������=hyC�Z���y_�R�b��\�b�j������J7_;=l���|�Z�w/uu�]�e��S�wl�r��g���y��|��^F�	�cc�	�=��!�� ������x���f�3|G�]`����hM�gIH�����
FY���0z�����	���~I��(7�Y"��W���i�y�"�s^'P(�����(�:��w����t��y�J�����j��j��f;�;��#�fB&�T9��H3g	����3����FO�Ef'F��F�X�������}����D�^#Ca������R����������������Y�Y��Lpqx�t�W�h.����� ���v�J�xx:��S�Hk��������j�!C1�lb����r�E���G���H��������@�=��#��,jp������H�3�����wg�kc��q��w����&2���6�M�y�����2Xh�2g�M��zG��6���>�|�����VSoo��% ��������N)�ji�oSI�2�E��#�1S�����L�9������j},��U�3uL���vi��jX�6�j���|}����r�����}x���������p���O<;�8���R��	�F����L��B�U����U����5rq�wV��)�I�W���������:g�8�fL_U�n���TCq�H�~cb44Gr�'J��_�����LO����/=����B���siV��{V(�i�G��tco_��N���j[U�0�1�{Zc_�9��8�8��Y��/N����\�H� �Pi_[1��,�G����g���������_[�K��AJ7>��(9W�qp���f	��6���y$�����L�t95�����vk���Ny1|P�2.\\T^z=�k�����������5���F�M�n9�����u��LT�I�'�	�>��uO�:��B�-/�r�������7y+H����g���4p����������\��|o;}��*8����:�d��A9���)��8�"N��o���sG�N��F�(X���b����tLE�&][��?��5m'�na/�A��t���{J5f7/aA<���.I�?������=�-zq�������������r�Mh*�q����C�q<���_�#����	�]62|t|��AT�t���]Nc���U8�"B8iN��k
I(��\�ie�0/�OGML�hn������m�3J)3�K2�J���.��mI�����	�t��4w�����E��t4�?f�j*Eo�g����������n�l�vt^�CT���)�UVX 'q��wi&�W��fb��25 >3 �����q���?��)$�T�p����x��oF�x5/�_����I�*��E�us�j���W����;o�k��0�a��st�	%�?���u�7��Qr����*���d��q0�c����A��������;5Ws�^��Y�wy9X����hdM&
����S��������;�-��z��
�"I�C�����������_~!�_�H��N�=�N�2MN�����w=���e�����L�C�P�������H ����v���qh�2A���y��a"���(�d}�,i CO"	}���[9�
�������}X�b�!3zI�#bF��,ScC��i�������N7wo/!L����W���	���w*j8��lx�����x�(��H�T;H����-(�w����9K�d���v�U��p�BL����yJ&	)o�w�.�62)|��L�I�-���+��[�������3D20��?�7h� ���"�����HD�Myyx��K=_�D�YJ�H�	=�9���e^T��	'Ff����9z�t��?L��k�~4��I�"�5q���kM��k
h�.)���<�������AL�m��M��v�;K]dW�>�|)����2���'�#�7�"����j��ul��9z�:�9|�:�����(��O��p�wr�>�x���'#�i�M��S%{L����1O�I)aW�[��{'��8a�%����c�\�T��y~R���������Q����q{���~�z�������_��S��nG)��+�L�����\��-�������Y-�N����<Cs���%���NU]�{��HVRyt������\���T�2�"�34�rR��gLl��\w��k>�������x �{���pK�����ZG>Q��)��\/�~�k]s����su���2�3�_=��k�p�\�|;z�:e�������;;-�r��nq��K,���n�_�
	��~	���
B�eRA�1��R�d����6
�J&a�Y6��V �}���f�Q�&��wRlY,D#$R$�V'�[V�� X��"T���f����Z��4��U]��#S(���+d���I���j$��tii*�S4m%��bH�&������4��l��2lM&�Qb5���wsL�Dj�%�QSHM��M�[�r�e��5s%�E��6�34��TW5�l��U-,�&M1M\��&�Kb�2bR���i����^Z�kQ�ie��~g3�n��%���_z��l�yvLSf���S$�Tf�j��4�I52������-,@~iP�SL�J�	����I��d
H�J\�����U�I��?��Ba �(&�i3��:��"�P/4�.���dsc�4WJQ��j���gm]*Xb0B�JrET�Zf��j���Ze�$���C,L*d����z?�����n���rG���1����������>y��/o����=gp���P�����X�?Oa���F0A��l��4>������	hP��c����S��O�����������C�T�[J��D��I#c1Sn,?�������Z+R��T�)�L�(
�A����@�`�P���r��2�E15���i�]�������3M��bH�vt�e�_5`��3��P9npo����Q	9�gES�d��8pG����r%���J$y����9�fWKnj�F�L��+�5����P�n����1V;$�rv��/�57��=���������r�r?�4 �/��u,�Xr!�"��w�t���i���T�:����w��~�N���HF���9��W��;��k�X�������~�o�kL����!t8�3��6�L1��]=n�����j���cg�|������m�]�w����ba�Cq�I��C5�4�7�t�c�����V�~�����M���r>�8��#�,�GP;�r
 <����c�1�I�]��8���������z��d=�AZ%��Oq^��{���+�h2$����8i�1i��;|��8��<����x��D���,�������t3�������;��j���y�xD2D�~��1����60�7a��n{�M��2�e�������j!�p�����	��u��)$�'x���^a���vHYAAw���D��h�6��"���?~��"�����������6������V`�ASu��/��1=��LDmR#EW�L;6����gK��;5)x��w����{��h�]1�S��x��)_���k>�y�6^*2���~��\���Z���)�����Tt����������x�t�����xc:�)X��3�(R���Eo�6������M:	#)��#�v����3��'*���j���;E�R�p�f;�+�5��;}G*TP;>��rF�N��&[���Iwt�]��5�$�4�v�*0��E+&g!����AG�.���/G���_�7�JQ��D���VWu����nt��\HF�u���\i�Nfpu\)����{�F��������sep�0�.YFo��|�b���5�u��T�ime���$Q+1���Z�;�kZ��P��%^F�Iz��\���2�����]�3�M+\��N^�O9j]Q�'��8���N=������k[��.i�q����VU�r�T�^d�'1�����{��U���t���Yr�*V^����u�Xs�+w��U��6��^���-�f�[4��������T�T�M��\e�����|�u�������n��ji�Fd�LW'Z��Nc����k���-�e�{���;�k�����������p'��2���("�/LZ�h*!��D����1%�#�.-S11_�V���""d�	�1 ����A�A2$�C�D-�{o����D�������{�������/�i^{'�`�o ���C�������\��cN�������'G<�c����O�e��fc����|��rM'�Bq������p<�����6Hj����)-��;��]��u���
�A#a�GD�6�j5��D�)~sI}�O�]m+�0����D��y��w�m��XI��R ��O��vf�R9���}7������3�q1��+�yPZ/1a�z�]�>|����H6ci1n;e1������WW�P�\���d����L���s
r:M�\��=;	d}�Wg����'&F"D��l;.�����
n]��	�2d#��~���e�/+Y���������%��������^�fR��]~W_�\����J=Q��*��]�K��jZ����<�9���k����LN�R�W�k�#��T!w�����������wo�vr
"�	��i$!�:<��ke��Yek�N����S��u����Vn�����}95��_$�&��O�m3_�(K�|�r�1��N���-m�fq^�w;t�3y�S��{��:yV�3������S|2Z��h�����9E.?���2C��r ���"B��R�
���O���y�� NL��#BY������q�~�Ic,y��x���SA�|��3���r3�������S�'�q(��]����m���y��Z-��D'Ze����y������>�R��&��GK�R�4R�l�^e��j���;�-S�������SN���O��9N�t��*��=��Ou;��@`bN�S��L}�;����)�*����� h�TC05�Zna��r
�S������d��[��O�w��������{����?}�p�o�t���Z���kJ����j�k������/�~#}�=y���/H���/~�Z�����z��FvP������h�����G�V�wZ��_5���v��L2g��zG:�S��;�|\��^_����7�w��5�B2
�J2L���� bv+��g
>��X��|>_�W)W������^t���ks]�SW{��u�Uv����}�Z��t�����{�{�C�v������f<2�]\���*�����k�F�j���S1�����b�4k:�w�J�������������w#\��y���B����	��;�����9�hA��<|�2�:��K�)}����Y�q���R����U�e�t��.���>��`I�����_�C������FGj���L��b(n�S����R[1d�9"{�E�?���_x�����
+��] �1V�b�T��W�����l�-&�tj�BlAj.d�����*-�fowT�c!k��@d����Nfh�
FM�b6bJD;�ju~�L�F���2G�++�M���p��>O2��3>!��~G�lQJE
"��{�$ti�6X�:�;��'�d+�����9�22�H�G�8=I!��!(��2(�X���'�0�O0�D���#hG�����?��<c��w)���F���Xk���.�<JpO�A�)S��B��
�����Q>�Nd�o�E}�p��b�c��Nb���QJp7�
T���{�!�II?����������������[f�L#KO��il�UlLd��9-u����h�/�=�{}��Q�w���i��3z�D���N�F�"?�B9+���
���Z��������P�!H��?��4Y��a�JC���1G�gd{>G~��2I(�%�����������37I����������������\���T���x30t�o��8�]�T���F�z��"���~�w���e��]\�(\EM������j������-������QK|��W��A��f-o�qW�c�gk�N��x�|�5*��������W�a�r��n��.�z���iz���\�g7�Hx�0�a��gm����������`uT�_��|�q�y�������&HB�]"-�FF�Y�8M�7D�\>W2�_?(�\����|�ykSI���j���(�MT�[��Z
u�X��3��_���e���>R���/�����3�%O����?�j>\4��pj��d����)J��d�����_����s�5;���}�/��m���"�DD@�����c" �������;�����qk���L����l���3������
c�� u��o�r��V����+d�,���d�z�U�@����E�G~o��s��G���RV��g�{Z�ke����=�r8�1Zq�h��9�/�t�}tC���� c5�R�L������E{^�����L R�m��B�NE�^���0Y�����BBT����.$�o�������p8�s�^w$�m$�BmB��;��-G��F[���Y�4��d�X��"�b��D[��oZ��H�B]KhB��E�)>��""�Tz;��|����~���p���$�I/i�n\���������"P��|#��<�����rk�0�����mNU�Q��S����s�o�9�w��kJ�Z�������:Hz���������h+�~x����U�b���7�5���[�������
��q��~��Q����f`�M�$�	;�!��J=/".��@-�\�����;w����_Bx�����IU�T-^b�P���DruP�J�<'�e!����w����G�*���:�j*�Q��;�Y33r��W�����
������F)��ja��<��c���y��q�C~1���3�KP%���y��G/������n�q�-.����^��8�]��	��Q��siZ��B�Z3[D�������D��M	���\+{�y��>�/��J�B�Z������;]���fc��0.�fG#I��q"dKU��km�5�J����Q�����y��w�p������Uj
J�S�79�n��<�����N=Y�#��	�ej��W�f��3M�f8��t����>�9!'���=�*��-K���~4y:�����9�3�(h����PO��a���lz������,75&[&���JF�����'�>�6[b�h&����U������u(5�*��Atl�'"2�QboT��i<�o��S� 3��y���&���e9�!n������'S���U<��{��gG�N�Q	%��j���\��}��Y]��X�g�31��6�����o�+j�$<Bu�c?�sv��s�5y[Rf��N�U5����fZ��G5��{�M���1�����3�W�1�
;Go����,����oQu���u���S�,���>������+G�{�T7s�D�����/����u�^����*��)F��ssI�
�r����m���3GUK������>��}q��u�U$���d�j�F��z�3���&`c~JH��_���]��o����s�����%	���={�����\��1+E�������W�sq�`�]�:�iw��N����Y-#��cc�o���:��\�F����B�#:0]�h����z�����}���"�*.����7J~������Z������U�uw��j�����j����xb��gl�������n5w�8�<)���G3��O0�*�[So&�X����&#�p�4s�?��F��@���a���.'���u��=��^���.��$���c��qe�����p�K���W����j=�kRT��n=���q/^�����4O����C������*i���Z�	�b��P��C:��
	[f�m������u��(��M$SjW;����p�:���'B�u�1�����G����r�]��q�_���<u���8��R��rt�V��W3��n�j�����
j�I(�Hn�;;�t�f��n������u�����+/cz[��^h3�P����>wg�I
�L�I��O�:f�[iMr�O���n������"��)U�r�Q��^(*Rn[����U��k���<�������Bm��H����~nR�n'�N�����0����B���gp����f��B��}G�	j�%"�^���	J�M�!G8����U����)�,(�3|�����J�^�q�4:��/Y\t�U�V�S\��K�r��J��JY�������WS��{�
���P;��8o{:���knS��W
e�4���E��3�in�LN%2S3��i�et�K���4iim��h�2���Yy����x��j�k����*�'��e�>�������%�5^<���&"u'���,��5���uuS�z����Y}���K���h
��z�o��:���7��G:+��`�SO����3��#X7�?�v�����Im����i�l��o�R��U�Q�{�q���><�8<�5�]?]���l��Y\'Nm�v�^ow6cy$�e�K+������L�&9��{�O
,����U����%/Y��������{T�W~W]��*p����1���������]R$��*�{��^j9���E]]��OtOy�S��mNQ+�3s�W�����aI�iyk\�����o����=Ny�q����zW:�2����f����Jz��DGj9��
��R�k�J�e��\��Yz7�kV-��n�.��V��=��k����7M����i�r���!V�q4n���aF�Y��Q�Q���z����O��o��=wt��8���3���n�qO&LZ�i��y�env������7�����*w��x�J�V�O9��jy�_^��s����y�W���[i�����w�;m�S�\���&����H��
c&���������������'Vw:�����u�/��~�d<��D|���fL����p��F����$aj��9��10����p���O�����M)^uo��:��n�t��.&���?�?I�I��3����~t�o������o�HU����89�����|&x��pr��a�77'�J�Et
���N$1%��n���	V��g�c<�)�~��cDJ��v��x�z��=*������(x["�Se�!������G]f��H�����8��h��GA���!�\�b�2N�4'����<��y��4�� s33����4��0{G��8L5�~��#b�&�"���>f��v
��;���U<���m=�$���.u���������T����N���T�b��c�,�7.�H�F��#B.40�m$�]�00xz��6��7���N��������7o7k�rbf��\���9�Q�G��0U��/�f��%����}
Q�Gb����X?����;5������R���D�8i��d�7=)���xv���g
%4'����n�r�2�A�)-^����n�u.#�A�
	b=��%���*_�|d��Pa�$CA6�Ia�t��v
���9<Y��HD%�+��|�i
$)Q_���`��M���[71Z3p��&�x�%����k=�+���&t��#�!��I�����df�HM�Ae��BZ�&���1&=�Ea���L������oj�����x�����������0�Ig�����8��@pVE..b��t�Y�P{�p�3z��;6����������&������Y�c�����^N���f�b���Kz��ru�12��[�wiMk6����Y�z��y=��R0 ��������"3�����C6���������G)���M�2Fp�1�B3��/%Z�y�`�4O��\)5�9-����<�W�\i���z1�����M}������Ti~�uYs��Q���E�7���_�+D�;_eD���S>2�2`JW���q&O�>�<7���[�d�v�c�N��7���jf��H&����;c
89��Z�*�Z��;���BExvk��m!sSF
g):t���yA������ZQ"���u$�-�8B�������U<9Do�Qf?�m�����#>2�1������$���3elII�C�!*C�;��UbN�J>����I�G�k�z�D��L�y5�5�Q��b"(O'���4��L�5�����)z�7w��C�j�>��HK�{������[�l���A�{��h6GNT�I���������)j�Ad�3������4�y�z����?hw*r=�Xge`v�3>��|�l"��"�2����o��?�L0���Qg���O��e��g��L���~�jqG����Ou�D8��c��!y3�$���
��x~��c��������,�>����
�#�t���U	(N��&c����\�2	��\��Z�T���SZ�?�XA����[��������V�(�1
��pK����3���s����Ci��m�Q���\�L���t��
1��]�h����\�Yf&LWd�dH��!A��E31M���"�0G)W{ggw L�#���%
�
������S�p�z/�J�T;DE���?�?u������i;����A�_�V��[bQ9 h�/7f f6���9���9
<������#��nA�vv)��5��eE��V'5�.��4��lIm��;[m���L�K%�E��x{��Hu�t�s��
rO�	%wo� ���?������a���O��'�?���d���S���S�A�u^�HO�6N�i�!��"Wv� ��R5dcU����o�s��s���(�qlb�W�w1�9�j<	��y��hW���/#��:-�<:FY�:�#���q����D�������C�G�A�HL'�B/4;Z&$��U���?����~#�l�~��p�g���C���S�uG�y�8O��r��]�i����AO������'#����u?��c�zz��gFd[�a��>1l���RP)Ib���@z�������&�b�����[p|�j<Ocx�����g���1�`o`�Q�������d~�e�T���Rf���[����#�C�Q6�E���6:I���������#Oa����|��)�M�K��QKa��;@����1)y=H�
���"d��!�!���T��>�z�����#9�<O
�w�YS�S(p��b(08%�So�;��'^^L���v}��?Y'�H��b~�?j�~�1]�If����ozuF�e���S��g�3����O$`���cd���r7���'Z_����B@�~�H�Q>��'r$i��I����$,x�=����d�Y'���D�*���`76w�-O������0��_�fp�z9�F&��
�3Z�Q����9��Q�D��	�v6v�wp��x:�������4��m����2��4���!�G�0�&
�5<��&-���!������-�A�2j��G�m���W��to�8�#��dNi�l�)dI�}��}EMY$��<�U*���|1R��[m��D����V,���<��0�i���w�6`W�����"d'>\��M���$�2����	u�Tw?a���|�&M�Ha(:�LG?F?2�X$�o��t���m�3�'���bgF?n�:�|�@�k�<�4i��$��tj��=z�SP��f-6��� X^{�84x h6�Gc�o��N�c�~�r2��5F�c���S>��g��G��~Fus4�	\�j)v�k������Oa'C����g��S]n�a��Ly%�� �����{s�r�����I�����g�a�~�W������Y��}�L�������w�nZ���+|M�0�L6vM]��XI���
 ��
	��y.�E^�a#��
�'H�������:�]��{����2&��$���^t���<v����c�I�m�����nH;�������;L�2;~ws�Y{�w
��i����>�xD'�o�����7q��%���8}
�Gf7|���{���k%���abjl��K">w���z������2x0���p&�w��5,9�xZh��%&���<t�upN`���{O�-�/�
��|�����+&?�I+����_���U�p����O��x�I�e��5s�?;�C���}���H���tI:��
dt]�lt�_s����\BG�Z��z�Q�z��=�?k�f��m�M���J*�;S����;��W�����^�;��4[�vR�!���A&�]��-&�:c�h�vS��Ij�t�r�U@���^\��������N�#��~T���;�#�?t�m�	�<�+���y��Ve3�qC�dh6�����F�.�)y��C�y^�?�������0s,!��uT�F�Rq�?wq3�/|�=>���H�G�#Z�0tJ���#�2�D��������N�'^�T}��������I�	��O�?���p�LJ�#v����C��C�G�
�6���4��}g�����{��(eg�i�
�B>evw8VL��K�����m��\77��uVS*|��i��e�;S3*���V�ROTOHt��w���1�t�^��3�>�?�C������������#�OX�lH@��������^:�����hG��p�X�GI��O�>Wdp�C��z�1�8C�rA=���S��;�,`�	��X�8���r��>�j���X����2�2�]&���-��n���Ky����W�:��D=0���~I�m�OyM��^
��7����F�MQf)��n������	H4#Y���-���p!
W�19�U��j�������}���������W�%�
nQ���~a4���$fr$���`~L��}�n�aF��I#��u���F	���t��|����7��'��r��b�����f����������Y��}��~*J�~{w"2�jZ�}�������
�$��|Pt�������1��Q�E��	�F�����%��*H�!C����Y��o�#�6�(�{��2G�2GW��x����D�i<�N&�e{�;����R!��#����n[Dh��4ZLL�1]A����
*x�A���s>��`"#��|������lY'w/ly��0���T��S�h��5;�|�,�����'�%��������c����X�Q��{���J�����������/����N�{t����3���D����i[�5t:���|�Y1�#���fYD�b�$!SN�A��(J[%c%I(E���,��[�� Fa��dd�������"�:�^�����t�esY��'�e_�'i��6���R�#;w6�q��/�	�;�Y>��~JUU�V�{����e�������qJ8���s��	Ub�;I<'�:���
����x���#�M�H�/���_J|A�#�C���}���l��"pf!	���'b����$�>zYO7��:��7=ui����)�x��8�������2qe��5 �����dqu�[-�n|
��W��z�7^��^
4�O<U���JZ����VI�w��S8�������
�1�!��~�d���}�f���@Q��A�����&NA�����������`�:��D��Z���I����O(���������I����F�\q$:`Q0Rl��	��J�y	"�&_��Mh;�$�uW�t����Hl���28b�<'���`�����h��|9��H��/���_���z���P�D�I����$���Q�;o�EA���>oC�>�5Q�O��C���h}��������,u�mH�
�*��G��`�y|;L;;��m(����;�!��p�������sG:�4����T����B�S��x�'Q�td��$��]$�!#���JL��Lv��s��^�0�>rl�>���>WB}
|��b`~������3����[[����3�p�;�R���eN���������{_��?22���=]����Hu�����G�?�&���=��N�9������6`dz`��%|�&��{��z���%����G��^�b
��ij��_�eS�*����Q��R�d�b���������g����N�f���g����qb]������8ZL'�.7^�����oW�GP<C������=zh#�k�{
��bD�CdKY������)�n���U%�^X���Y+l��#���0I���������!�?&9&����u�nu.kB���&�������C�����hb�E�RvRqH2HKI�4�F��	�<�)�)�d�B�*��L�1�k9���mx�kK+N&�m�oKa�BoG��ma��f�������	�.�����|��1GB#1�1�;��B~g��Q�p��w�+����m���E��G-�M�_�!�u�_Oc�78��a��g����q2���[F��ee)������2#���@0S�DN���F#��9C�]����{a�6y���`������	&)�n�DD�������U>O)uw!H<���t��I��z���������y*)� ���q�ibs����)�/���
zf������+����1H����h4����l[kE�K(���������<!���?�c&5���s��L�+��@�
�#�(B��T�G�E�AF�D~���Y�X���:p}ai�����[7� ��M���X
�j2*X�7���&5B��{tp���O�)Uvx� ���T�(;$*1���U���j��������?����dC���GY4��cm�f�iel��sgg�v��{���oR��,�s `n
v�m����"�C<4�M�)S������7���x?>8I������e�������h���RV��O`��������Rn������m�;M#�3���L4�=�_�?$���~^�w����&H�OF�	��/�bjWO�`�h��h�4�����T��[���l~���ZO���jI��mIs.�
Z�&���$��C�(�����S�z}<����1��~���?o�m���@���_[�x{�)�n��G7����T��+M,��H�����p~'����y�Kq��sx���G��'V�n|�fjc�l�po2`\S��A���b�.A�ldz���q���
�������0���jN��Oy�9�"�5P�A�Cw��@E���X�Sn������
Q�S�6�	�y��GUOv������u:,�2c��
C������C��H%�f�'��d=G����)%��#l��m�']=}��n������*��W���>3�G��JL�S�8�G��u9��K4�NG���t������RX��K:��������:G���;���P�<��M=��>#�q).����;$�;}hd��w�##	,��P}�=����'-G~���C������58�4la4dX����o_0n>� 0�g@�)�Mm7l7\����W�����~���������DGA�4�����{���!���b�,�iF���~��	��Q���k2z�U���8���,j��|����:����q����:U:fS��#���tu�;4���:����KS"�v��o���)�u��C���^����GB�Vp���[k�����"���k����a�7��$������)�n�Nl�#J�Nra��j	�{$�'��� �s|�t�qndF�4�[m�CM��hq�P���`��7�����Md�='�h�=���eo��]�6�{�[��������?r}f��W���t�?�U�?�2�BRZ�.���~��������(d�$�M�� )EH?)�v�(���O�y���y��O���g�?`x�OW��S�O���:O��U�]3��c��B��Z�3���F�]�A���;S��������a��;�?�,L6��``���a��c�'?�YR����Q#$�����S�b4�_S�&���^:{�y�����_0�������Qc��z���7�^!�9�����8�rq��%[6	�IjS�9�g�� ����	0jQ�n���w����@��y%@K�
�+Bz�-&u�z��s���6���<�����?���r'��|K���1"�Q��tJ���Y���F~�6�O`e��SIo����_$�6��l���5$�:���
������F����j+�3����49Vd��Hb
��1/f�#v3���Y�����or�������pO���S�%����i�di�o�k�����2~#����
����i��PO����O��l�s{;�!p�s\&�	���bb�,]O���yv����T%u����(�Y���r����J��2g1��$�Y���!�@w�|aj�Y���f3f���(�~����s���#���F���������=��9����x�����r��H$��>���c��8�T�IM��.�,��Y��2K
W�}����?���>����K�����������������
���*!y������8	������YA�D��(bN��bJh6��9����w�>u�8��1��?=�{O�>���~)����Rf��������z���������(<N��x����������#�@j�B�e���I��	��Q����$Z7����a�vv`C�+�������HL�j����(��s60�����o��I+CS3n�t�0����4���cSU`�5t%e
����IG�25��fa��t&'���nL��P��������*jp�1�c��u��8��~b���2&��[��E&1����4�n7�#�<ZC�G]#������|��W{�;��2�{I�:3�Xq6�6��'qt������=�{����;���+��'�t%�������g%S~�s��hIx�p��M������11{�3Q�l���U����*�]	�����*>����~������tB���	�u;��:�d�$�FC��y9C,�&��L����/3�\� p{���o���BL�.h�!����U��!��X���������dz�7/�;�;������2�����������OZN�X����G
�Rw<:�p��u�V�a�0fuk�z��*�y�;�i���g2�L�)��r�X��1c���iii��Nk���!���G#��j�L.�h�I�������r[mR�J�8�����1C�cu����X���&��n�V��l3nnl��04lf����bL�Q!
���� CH����m��s�l���tV8�dwE�
��|�(� ����8#=���
4J4������j i�����*���4D4���9��N�bttRZ�X�?�dk����:�:o�FW{���a����0V���e:������;��K�&=3�JIA!�YW���|�������*��.F����9�Re��R�`�/!"R�B�eL��-��YH��SI/��A�a�#�h�v}3%����`�}��v�P��)���?Y8h�@�a�q�bVBfO���KZ�q�rt�l�0� ���$*���x'M���X����jm1���-5���4WFywqh���?������Q+;�?�"��8^9�[f3LH$3AI�z����������*��S���c*�����P���49�#��z��^����k6�Gl6��FIk��1%�2�%�2�u~{�(��H7'��!���d���z����1���
aH�IPTYL����Qj-$@V2T�E��g�����$>H^q@UP�����R�����-
���*{��������n��M����eK]�Y���k
y/����c�7��	��X>���;����R�
�(8+�}?6-d�i4��'��;c`�*2��d`���.L
r����HB0��Q+]�KE;��m��UYzZ$�����|�(��^1��r!���`d��#��A��1�+���������Y�e��3T�fK6�w#M&������;w�����S	��-	I@�P^�&|��]I���M�`6$�$����<���
E	 �	�^�����N*K���I���X�j6[F�J��?xd�srJ,B����4"���������p]4\��EZSk��HS�"I��7����!�����
4^�4��[e�UU���4M��I��%&}�k��8$��DZ��'?�;��!���3	�@�d�
%��D�#]�=��P�U�C���#�����cv�������Y�)"L���}[Xn�'6��:+�LD>���AC`_,>��
q���j��30��T4�v�Wxky��$���	��+����i��$�����m�u�N����lP����`�������wz��������{�d������13Z-'�m.��@��'�`��>+}�2�N��������[C�����'�� �\��O�ph��dM���qB���ML��;�FX�\���1�Ks0EA��bh���`��������>ir�Ji"Z&��v=O<L���UU$(=�&N#!���?`Q*���p�S�����1���|]�����v'##	���~}�9*�R��������~Q�yq����G��V�s�=,=�zq�:I�G��i��;���5(�K��Pu��0���G��k�!)�G�!Ik��>O�q��%Z�H�f����i?A�?Z��!��KCE��C����X:�y/��o�L��O�Xd*DU!1�����o��j�H��z�Z=8��M�mt��~=���������JI����.��
���E�C�M�!DB��b�e\�&,��2��F�MQD.f.�#�v 80������GiD;;)�"_\3}#%������a��#��nIV���y�O�JG������7���"��X�X�HD��q)������M*(�h�-/������T�)�l���������'M!����D,ZSd��Ii���ClZR5�4��6���LF�	��f]�X}�;NG��_�}�4s�r"/�{$�b�i��nj&����eR�&!n�z�[4�5�b�B�^�4�1E�
M�$���F�CS4��&��J������b�������75����$%M��h�^�r�����H��H$�H�;�[�a�Ju���p��;�?y��B�n�?���Y���F�@.jPT��P����&�Y;S�L�oR�\�m8�]��5%IL�J�0a�+���������������	��_
����|�����f Q��e@B$L�{�����Y��a��=�
�'���O6b|�D����4C�O{��Z�1* �fj�FE�$�.Ma�����������Os[�6N���|�����	-�U�i��Y�e2�R��K�$	�T�OV�[2�@a>�bLO��?�����u4��9N�_k&B��bJ��U#���{4�q}S�B��%XC������p��DG�^p?"�v��e��
����V�������ItY+�((���.�L8�n���{-����b������M�.�X���sr������ l�^y�=�!�	\��\�.�4!�	��H��6������@�!���J"�g�0'['�P�L���y�r��
Y�YM��u'�O%����0��6h����\/����
������5'�S�h��}Z`��e���=�>��MCVEE#
?s�tUp��kXO�^h`��������,L+�8���?����il��iJ��I�'9W�{������$��R"�P��*z��Nf��R�.���Mw
�(��r��y ��p��&h���*p���6�,0��V�u}3�Lv��U�C�N��t��(��U�e��a�10�;Xh�73@�i�))VBh)���m�6f�������SDw����;N��'	E62v�+,���X����4J�Wu���&��/	cK"�#�q�M���m5'+���[�c�k3�0��C=�w	����*E!����T6%�P��2W#=�9��c
Y���bl=d�����bw0���8���R�D9�@PL�N�|�	�!�OzK@R����|�sJS������������6�H%�k^���m��W�k��Th�4�J�F 9��<~�}&��6���������N�*�Yr��2����&�h����( �C
b>����3A���J�jY�U2��6���&d��:a��*EP��!2�b�J4�@���D��T�M���>j�G�����Y����Gfg1�Y���	|���)�0�	�p!_���i�.a��`�|��W����<St��5�w��vIrwE��C�$�4l�O|��km�O�{�W8��#`�:�/,l�n:����]kD6bA�64df�K,�C�cSA�!�W{����ko�1�����H�
��Z�UGMq
j5�L�Hk���	�)�
� ���.L�l��u5���R���_&�0���T7
�i���f�:�u�1D)���>�W��$���X�wj��VF��!]�~���U[�Sq�`Q���� ���?�C{�"��q=���)���d�%U�"�*��,x�"rzP�:n*�T��\^jI��*`��)BP�����O����T��"���������*�nP�{��S���32��0� �cF��U�YMa=$Z�5�B"%=���u���z1�2��'��t�!>�$~�~���Jn��1kD���1
��q
�t��L���)"�\����R&B2b�������`G?���H5�}�X;B�L���p�`��s0S	U�����&�l�����I��XqQlL*GJ�Xb�X�������b�Kl��m���]&�X.��Mt�k�!j`��N��5�������TM_f������Pa�8��H��Ka�'�|v}�i�v��~eF����J���q9��v{lw����{�58p������j��[�Q�!d�����M8a�����U���9_�C�2�V�K��t�����K��-J���:p���6�:[,��4*�ELSv�"�C�M����s�+3�6���3k"�Ib��-���B��� n�F��@���7-k��L�>3�A�l�D���f1:���eX��p�P���V��l�@�8I�!��d����N*J	�h%�����hJ�!o�	�E���"���@ �qB����'@	E&�bP�(�T��UK*J��3�N3b
��m����QId����-�F$��*!
�X�N��2�VJ��,�R�-1�*�������RQL|Y0�B�D�b�����,�B��5Q��.b�*$����� �n�qTf�eh�BPa�5��,Cp��\��cj3#�,ci
��H*����&�5V2�f��C�b$��
��
MJ�1���P���J���C���G{����oys�[�����+���H�GS�1��R�
#Lm�,���������|Z�T��o
[��^��:q��d���]��LC{�Td#M��Jn���@���x�Qe�X���D�����P���� ��JCQ����(D5L���X�
\��dl�S�%��T ��:���"(ZN���d2��������`�"�p��$0�2ji�1�c��Hb�r�X�8�������#��6�K{��/v��O#B���I�4��b�b�V�������W��I��Q�>��y9�����XL��*��V�X��t���M
,J�f��CVW\�W	��s�����"�	� �D4jf��I�aD�U�d]���n2V������\j$C�R]�QQ4�T6�JH.�*�b5��N'E��E��5��&����Vhu�Hc���w��c��M"���YU�ioF74��4Y�UG_k���.k�%DEr7B���g��2#4�\�?/I��[�,&�Z$��d�'.W�GRU[�nlN��D��p��B�}2X�nK�*�G�q1$����7j���d�M�1l��w1����T�w��8�����@�]8�WHB�&�9��n-�u8Lu�bs1�K����,�\7*8�#raM�U���&�YJUZ����Wm�����5��Ot�jA������1����JXA��T�'��8c���q��'��G�>dWa�A:Zy�6��Ogq���P>	BJR���O�M��d���/N���F��1l0�IdD����pP��o�2 [�t
�������j������.��5j�H�<�����F
�;��vs-��,��|{fg5�&
Y�I�o��
����x���
������h�`)�q����_/�g�<�4�i#���&I; GgGV��I������KJ������?�(]fF
.T��Z���m����/�	�{� �I��:�Y����
A���r�Fb�JP%Z������z
�����N�'`J'q/���hw|DAK��#���Co#�<�^G��{��+��L�������ynA�]�3]�������y�&z����4�&b�
�IP���6����2� �I]ML�����(������~����(D��HG� �����><C��wM��R�2�M���	��D�PS2������m���d�pwx{��}b�n�2'��m���#�g3
2�p����F��f5W!���7���
r]@�u�lV��a���(�z@���aHX���b(��
�������g[���B�~��w�����z�[�<�����_��N�O��R:�������f�Ge�'�I���Rk��9l�i�`C�� �(�9�[]��H,Tu��Aj�i�5�vI�	$h��"��$�[\p��*���Eh�����D�p�;�L���i�dbm��u6u�2S�}+!�WG�/���|�����2a�"e(E&��l�I���iq��������nN�Fl�
(��i�^z�m�C�!�,m�i��*���2+�����S�d��v�QT��*�UUe���5m�;����{l�u��_a��\���FoF�;��
�)5�q�>f�r��~�|c�T}iA����|��}]��X��cH��/�\e^��Vv!.����M
lq$���E^1�(���$41�4�[�����wx���}F�L������yi�>=��9�d����%��sC���!�5��F�����<M���$B4��$�a��F������7M���I0,��a$���[�Il6����wZ��7��&rV�k*Q����D��2�����f� �����q�q�^����0�i��:�&"�Z�9��rk �M��)����;�n�E��� F��]���bN����GSH"�i�W�Y����r��5�s�Y���48�1�b�G�E���k�K2����~gRz�}s5=���D�b:(�&��������4�I0^&c�5��$����;!�SB�K���-�m�-��ND��$a����$�}{+N���1����.>B�{l�Ox�����`�w����D�.7�
Q��_utU����~y1����q��L{�����^t���5,�
<��=��#J;�jcd����|k����[n��]z���������z�E��A�I sD�]"��+�4a�����\�BH^'	3vx�8LIH�n�����0� 5tF,���5r��}j�3�<�8v0�
����u��?������j�;�|o,_m8�*�.l�={(8��Vz���
1h�R|�z���!?���}�{f������	��_V�,�Eq!�� �B)h4��SG=/�u�~9]�?z�
p?���rM	Gw�j�8�\���_������<�����e�=�h�&���T�Y�����|O��w�9��=>lky1+���]�g+�":����\_���G"��'���&���R*w}u�'Q$o}�]u��A��&Nb`*��~���
A6�.)�����M���y4g����*Gu�Ws>�&���V���DC7&��CQ$j�+�G���������c��=��A�����57�L�lRhE������X�,�H����J�QU����������A�E]T�$k�S������G���|��!G���D��1o/�Y��������5F�5���N�=5�����s�q�LcfF��!�p����!�B�Q5��tD�V�@�f���HF��\�D���"������#IY��!���r�su.$�N��Y�$�fC�
�Fc���N$to���g����:��}l[��LKQ�q�h��gk���w4Fq�l���I��~k}ZHU�>FT��3�
��&ao����$ZG-F8 d���i��@�L0D����m��*x�� 7�Wq���C��!��t!\A::>2�����j$(E���Y��nf����d�Y%j�F3G'y�**�UI�]��D��T�M������u�|�����M�!r�=I���J0T���	C)0�k(f`YC��F������Zq�%5�H�R�����T�D`�Gg���x7�tp�,�8�qs1�GT�G
1�|s����W��E_grO4��
@�������+:<����wOy_k3�h}�H��=�!�8WC3L��6r�
�X��rE���5}�G0X�����rk_��}o��v�	K�9c��
��8q��u������,��v)]�v�Z]�u�<����]NBNE2L��[�Q���q��l�;m�!���(
&����%���������$0���=��������$20�|��Y|
^}��F��D3Q��U6�c�$)��P*�����f�����&��T�
��Jn����:A�m
��PP�Ok�t���b��A1E�$���B��I5)"�;c@�!
%2�����L��?�G�MA

���#�=���6^`����8��^�����xx�d�aU4<$&LZ��j�u�@����������	!J��5��<rSB|F�$�<�9N��5a�'270��4N�;tH�����v�u��(��HG?H���8 �T�����L�|l���� �$rf�	����� ��)X�<��uC�<
w$��m�i�;C��K���&��Ia��������Z�1���Q���������1c�%��E�ds�Dj^A��"H@�=	D�=�s�	�$���Fy��������^f��v���H
����DtH�����L����BPd��;�My's�b�r��ja�<O
\Q��4Z��bZUF��M[dM2%QQf�V)5�Z����
4��J��Mi%Q���b�)$E��!�
`$h���[T-����Z|.5�i�t�*Un{V�����`<�W�>xms9<!��2f�E��G �����&��lo�k�����K�������"
�H��C�%�i'$���`���}uo�G�1��S:�1�.�������F*e�Q}�j���T��\��	���)�Y����~�7#�	z9\�=}�=C(D}z,���C����������_
���2M�O�x����0V~��S	��~����g� �&{�:���j�=o,���K�#I�����`���]XYn��}{:��[��_���8a"�7�7�_B	PPt��h;I9���x����4�9����2)������+;�e��%"Es0'�R!�.����@tB`���4�C9����+�DN�S2�H�f��J�@�@�y�.,�P9�A��'������q��yS��?��;�u��#`��P�(�w�;,<�AS��dw��	7tv'!RR��!1@SL�L�r6v�n�'tr��T����
6��<�N��#��$$��HR� �����
�����p��"q�12�&T�E�O��r�m�������!��������^{P`�=�&-�!��n������B'7���&��4IC����`�����eAU��G^;MOe�����:�<��z>2uQRm'RQ�C�TA$�LD����aRW	k��*t#��?y����4�����$#(z���6&kf��&���[�RR��\���VS���nB�!Zh�X��63|>4=�����i3}������������([��F����A!�n�#�=��\����"����������>]�|
��e���m�z�q8��A�"��6d�W?��J[7�?dbC������e�G�9|�^�YS;#��Kc��Ye�"l�����O�A�^�Q��.oo���yT���Jd�pN����y���������$���'4J�!
	-�J*R)���1�M6���S�������j4~��]��ii��D3�v�M^��A�V���9��u#��V��M'PG/zO6�p8*���`�K����D�1���"��5�(�����A��l z�f��? j�W�/�Q�$Q02TL���������Mo�z�-��w��?]�G��/9�e�{����)�������h��5#��(Q��	(��--eU��B�%8�(fI��05��/6Dp�3|i�q�Pp(��A���Ff�K��@I���$'�?��H=�h-�.&OBI�(�����
Q�����I�{��
�CfS�_5��$M�yR"����	S�}�'v��Sm5(
7��I�G����!�l����;?�Ls0�D�(���g"��2��Y�Q��Q��R1��
&���e�Djz������^T$[���63�������=
�a���'7X�����
���+�L=T�����pRIZ!���;nI����:A+5S=�E{�w�L��������(N�(cm�%�#J��Mh�c���a�d���#d��6J�xs���������(�x"NU�UyR���"#�0@ �u�����t]���1#��������C)N*8�nJU�p��v7y�lc�.�eW�	(�����$��p������/b?0t�4A��`��-]y����D���������G���;�>�������y=��#�������"�"X��Lxv�2a�f�?c����r�������CJ����:Wz������?��{�	�X��jE�j%x#���$Z(P#J('q�o�����0��0�/6�sN
c=c<�S3���)~�[15�HMZ�t��I5���e�+���I����s{k���;�mzS��{��Y����V�2b��q��I2V)�k�����V�ms�N����]}t��#������[�-�G���g�M�jI��P��d� �@�q(������7�9L�m�R��Y�����&��/��deJ	��]rnO���YN�y��S�/\Yw�!$�E��Y:���;J}�O*�}��w"��3%D#�^asQ)K��J��L�Q��z1�e�����[v���v�������uM���,E���M������!H�4MY�3	#���`�f��^_'��UR�q���o�\GDhWK�"��R9.l]�/0<fB�P�"
p��)��sf�7M�������w�L�5L_�
~�6�Z
����o�d�6W�|zW�����������e�1�a�#P�2MI�aa��hG`0��)��Zd�b��Y10�'i:��T�wE]��
/�\OQ��[��@<%�d/{k�4�y�����jD�l[M��>oC��Id�UB%�I���&A�
51�Z5r�[���Z�tw��!�D���28O�	�#b��qDv�UZG�I!��'�-$#	�#���Mr)5�dv�	����YL�r��������
����()�'�;H��cR|�������V�c������86��$�f��<C�D�����y����GR,��`����E����w������2`�afj(e�)���p�����-��'Ze��������!28VP�P��K��\��:�N��������m�������AI�bg�r����Bd[zC���;4	��%�&T����%�9	�J��}������h��Ra���<i�_����TS{�����~�=P{ah��T�#���`�f(p��x���#��$<.�hUe
����	�
��<�W�|q5�]�b^C�	�@)Nk�H��)��,���Er2��sj"�]�9���+ffW�PS�&|�%H�B����S����I?��abx�*ID��C�bs�	�G����z���������W�g��w����:w9>�I�����U������<�`��������2|�&'#�v��UB��<������M���h�Lwb5f�U��
8����["���Da�IK�Q�����	�. ��2�@�F�>:��
P"v%� �����"$�d�M~�o(�*2&c-#9[��P�@D�{��n>)!�j;v�Z��)O��G	�F	�(BU5����a�&L�'!,�����9�� ���,4V�����6�6�m&���/�I]z�u��{o�zFb9��5A�e�c	�������[-��!,�\@�9�815�K���Oa�^��i��)��n��E��fh�}l��q�]�as4����	�bHDl��(K��x��Fa[���M?*l��6�}�S�},���=�<�C�'��P,������7�a6(n}��r��|;|%
��d���J�sC_��bI��y��Cmi�T#)��Ga2/��v�����X���vGy�r���w����z��3{��M��7f�7�)�������^�����\��o3{��r������y����/_.��s�{��7���^A�f7�4e���e�7�*���J��Vy�
�(���>j��|�\���&����d��������iA���b��?�diRI����(��`�1��P���r
?���5n�k\��iF�:�M�C��B1����")�N��MF������.��5F�����5�V����s��)t�����m]6�������.�������km&-�r�]*�W7d��0�W1�|v��i���ADt��P$�B��-(P�K �*�X��a�H&�� �J�C��u��)�\���v��R�����;u/}^��C���RpHp���PV5�����Xl�w]$�r��b�_��o��/����FL�B�I��J��=�GT�Hv	2:�)��8�`�HN���-.�Ti"Rl-
Jj)�%�����
B���������D���f����W�����Z�nK^������������p'� l/a��M	I����b��b��iC������tjcp7xNd�44�i�#���'EO��f�i�{�����e�&��Y>��"q�w��b�T8h��N��$�G�������K����_��Xv��n��!C$CM�K�G$�q:��������v�I��C����r@���J�D�Vlu�����M�D�~@��=1�QU��]� ��������]ZR������1�\YN��M���`����]�1��N�G��1����|����c�D�Hj����:\B[X�\�)��3���F(�S�Eh@�H�;qE L��H�T4 ��aR�#(�Lb��2I��-�n[���9
��.�M�7��v�^���l��m�\��[��O6�]*����7*�����>E���D}��65h9���S0��AR!O���)���rN��J:;9���3�s9��	&�"�b.&R��
&%�eR(
�D�CB$D�������F��	M(����S�Rt.�lLDxvMEK���00��h�N�8�6q����|L����n�;I�wHovC�bt�lRD�"I~�����|�#�p��G����� j���X�X����o���[�Jwk�Q+44������oz�J��%�b!%`�����~����<�:��<bo�@\��e����,��->x��S�jX�8���CL�*o.J&��)2F�� e�F	��2���5��
Rh�mc��
�#F�hdI���2_��d[��)���icz&�1�>�C�<��S����#��	����D�d�x�����=��r��&����d����&P��G�Uri`�2�l��Lbf4��A)��&�YHT ����`�C��<-zV%>�~]`��a)��'��:����R�<$��
��;��^^�!�	�ED�-�$I�Td��6YU�l��2Y`����c��W�H�	�������Uy\�*�,�("�$��0p�NZ��Ma;����D�f$5��k�o ���Jk�b.�(8���N0��Q��S��
{�C�
*� ��'�<�������	��).>TA��U)�Sby�$/���F�q��\W�Y����M�RB��a���-�����w���D@@��O��f>�#B0�i^���  �H��O>>L���M�(���*x
�W��������-����ml�-if\�a���#0i������s��<�oO�����F�<B��$���xjP:t$Z�&�!/�X�*�Xv=���W?)�z��h�.;\�Z9~S�M�N��DS;���_�r�fD�������ole�eyF ��+���'y�C�}��Y'c��aW�5G���S������	�]#��v�L���'(nx->��)��oP�'7�
%�1[�A��|��w���l��8(���V���z�������W�(K�;��fD�����Ca�=� q[��2�4~
������g�<��;�@�	����If��+�q�DdO�����{����#�C�= x5B_��zM�	$6�����0��6��%�fN�FI��}���>I4����$X/2
$�����fz�
�B�e���
A�(��l�m��J��w�e�B�H]�A�*��ElJ�@��:2��G�[��0VN��������{%8�<8������FY$^���������'Q!T$Z����P� )@ $2��*lID����/���5�NM��(�m{��:�"n��Rpw�������)A)�����Y:��&%���M�d�e�����26�3i)�h��D�PQIZm�Y�3�+d����KL4��P�XM2�k)�*e�0�*,b�/v����t�/���{�b0
�����LK�,�������<����[�����(��w����>Wc���
��:���}9�`FC�!�fa����U[�1D'�/bh�>^�vZ��X�>m�c����l�f��E�8�i��{l8e��Z���!�'X�
�F�w��Ua���X��Y��e2�9�h���t������P�N�����H�A>��[�@I�����6$i�Y88��81�`�+��9>�M�9��	Y �G �>0�g����l��&;Ih�����'����t�nAW<�����`���O6��;G��?�������4/Dm�������Bn�;=����6d�5;F�l�f��U�$i��X�b38�a�
-#��9�ag!��C`����r8��3����S&���9��~�����c�=-y���6P< }'gT����C6����L*AT�oy$���6)�������3|F�5s7��a���R���P�Db�hh'@%"�-��FP&A8b/<� '���(MIPm#�T��Vg���&�<3+n�[�������\�'tT��!.��r��1<������I5r;���'J���
G�����������zz�!�(NR��B�^���"j"|�xx�]+=W��J�4����EYw�Y�"������������86�m�A����V�nm�+wJ����V��d��4W�]��_%�v[�QM�f�����[���b���f�Z����q�����m�:j&j�p�k�4X����{b�Zi�cX���i�q[�
��v�A�������['1)�2q��g����(�n��r��	��N��o9�W8�K$ke���O���V��y�Q��������n����V*�����)���E6 	We
�0�H�!��.)*�A�@��F����6�u�������hkB=�w��y�����$�0�HD�;�����xC��A'Q���G���,{��������Ki��d�������{#������$�<�=�wN��Q0`�{�l���q�vZm�'-����;�[��kW,����0��w#��vh�B��J��y�Yb�(��%��I4���2���#�>9D�=����`A�pu&@��K�t�K5XcMF��������`Tj�b���0��Kk4}��\���i7Sv)��!1��eQ�,��(�0d�ujk4�r������&M0�\6h���A��RD�-��!�jyP5)'6��cF��&�d8��k�B�
(h����Il!Q�9Ti#���d�
��I�p!?�O�����"���,4����T!x"l�����L>25�)v�7h������A�q<��1^'iDi��>D�bAO\#�(��Ha�!.D�T��w����]�����i����������I$�L�!H�K�@@8��������K���bn|��1��{�o>(uC��Hn�j���~sS����*n	��1���8D1C`� tT������b��U����Nf@]�@��N�������~��q��6Sdl���#����D_�*���x��tw�e�i�01��Cd�9>�I(��T��aa��l�3���fN��"7�7p��X��h���d�ua=e��j����%�[\��_�W�t����C�`���D���`�({�	��M�jX_�y��W/�������r�G0�����-h~�`�7h��2����[�pr�E8m��-�R������ �j���3x���A����[��uT7^������{MGc�BC�,[��f����0+�������G�Fs��1��<�����f1�~`L�Z����{�����Q�������p
�I6�]�vvt��1'�Bv>}^��^����0O���lJ�;�?���4`3��8}g#��V�M����`�$����"��v<?6<�G�H����}T�JtG�����v���2j")6�$��-��������Q��SFdVg����?\
!>@��}`��3wK&�h�M�h�����T���I�5���f� H�
���Il��RM����<�����
�����!��Wq�H����m�>;�CV��AT5Q���K
�T�Q�&�\N�0����������M<��J���jT5��hl-D+"��*�;nA'�uE69�l'���D.�"��G���I��5�V���6�f�Z��� ��*�-aY��kU�C�p��8�������|����(!\^��������J�5MsD�	YV���	S�-�o�>8yy'fyJ>����H=
z�K!_�����g��zWz�w�!�y�!��s���w0>t�}x�g�&���Rx�F��l�Vj82������D�@�]�}R	HD�{3�Hx��&�bx�9H�-�f)eZ�.0�J�E�����s[4�KL��	e�C!DeT�-C��X�q3+�#��D�>eW�{�gw�|����}}�H$�a|Q�$D�I�~�V1�O8��OOg]���[%X���JV�%m��5��<V_l�����*�YTXffF��Y����&uO^P�'�����{�>�U��i�����	��{O�#|��Z�Ek�������<�k�Oz����M)�@q$5d�U,�|�w'gr!��		����!W^i��B�[;c�]�q����i�;L>(����M��Kc��)?3G��6������U�0���Q��T�����DB���6�'P�M�=�<��������%��������e�&�����������{�o0���u���t���<� ���b@�i�Iy������;:w�B�l��cn2"T�NJ�H�TG�jcM7��.�i��F��!�+��S[�U����X�������u��5��Q��p(%J$RQ O����us11���P:C�,��P%�MM.e%�*D���MPi�T��8��0�B���R�'
��\
(d�n�@J*dE-�D e����!�fJb�'+-6�X�z����dn�|�{��b������me��R�l��Q	�AI
��1�V��6n��L��'
�tk�bD�H	[��h�&4���*��7Q"%�	%��Cd�@87��(x\H�	�#J.��Ah�ICi��i����R7dY��f���Rqa10�%�R5EEM@�N$&���d��*�15#����(LC���Ne��$�Kd�)C�j	"�����R�JrM�B�J2
E��V�@r������&�C�r����r(p��	���u��Df���#�*��F�����[[�**fn�������)
X��a�����OH\��.�Di�a)�����"�����ESjDz4�����:*hd����P6`)9�hB���[�}�Y&}�\WH��8�Di$�	tQ�Q��H!$Docj������)�(��q,WG�z�w��������;��+R���D|�&� �m��� h�n��
)�t��C'z���pD���+�'�'P���E���A/4/S�AHK�R��j�JkZ����#�����"�9�����U�HX�ID�����N�})��--�Z*�Z�8��N��f��u2�L���YX��h��������j�%R�LL�'�:@���$Q|�3&Fr1tC�@�������1&~<4F�H���u��S���R��������W�5��;����D�3,,Rn������Z�&C���$`�1.'m���
��Q�M����
h�t�C1�$�$�d5����X�wU;��=�S�6�Wn���t��U(�*A%"��p������)�sv����\T5
��1�F�`#��
9A%���dm��j\��������]�����N�Q�iY7d�
R��5Q��n��<�Y����xE��5�4
X����i<����L��%�$�.^o�[��E0��������v!X�ZU)�Tl�i��6-M��Q"�s���J�"�
��
@����2�Q�k�{[�����Ms���LRR��"#J(lb�""���
	psI��6����SJF�-����\��Y1I���|����}���
F!7�
��'zI�W����pHD�I<	X��d�*P&�e���2��*wH�
:�%M��5�_"�	�1��nUI���s����I�����z	Pz���I�D41��@��BS$:�@���?`����G�|��J�U��[FU�{���F�=�����c����ti��0xx�qd�zp����vK��[���+,��\nWe�||�\�����m?kM��&Fc1��t����������ZY3T��Y��!+DI �(DL��L��
T���,����Ey�l�;y��:��B�.��v�E7�gk�����O�������:[���u����n����r���QL�KN=��%�4V���N��Y5-nv��]r��&�@j-)��|��u���_��I-4�E�$����mD��:�gZ
F�A�p�xt��0L�B���H��&�!���ob�gk�l�����"0���&5�
l���4ZT �t������!������Ca��r0�$��rH"R"(�0P� ����Ks��r���^��O�����G���(�`�gh����2�3m�TmKRhj����h"<R��B�@���om6�aV�n�_d�R�2'�q����QP � �	
��������/T�*7�$M�
(�� ��5���!�A���t�����J�;h�G���H��%=���9h
a������e��NH�!��F�x�<��N��h��:,���!.�8�KF��wz�$pNe�^���v748��R����M!$J&�h4IT���b��8c�C�V��7,F��b�s������sT�Y%����$f������N�g����"��#:�k
���&�����[�,l��* ��dPlh��u<k �F���cI��;����O.�8��!�7�A���)���#�i�������N����rs	g��uM_���1��E������X���C���t����5�9��R�2���l4$��?��sd�TY2EDm�2��d�1$�L��`�YK2�M
E���4�J�,���@�)MR����0�;�/�� ��C���}��2��+�5�l�������L�Z�%���\�+Rk-^�D��6��'w�Y�L����t���l����b���~�]x����z���t�HR�U>�]���.F�p��v��,
" ��_���b�J��`�Ve�E
�$U"�EN��� �G�FTHZ�������������&)-E�BT),�)�I-$�f�&�i��D�����A+H�������e���Vb� �jR�W��$>���5i����W���6�wgt+{��R�V���p������Z{��'�'��8���=�$n�WK$:�Td9dE�*��^�*�!e��Qd��D�$��%�!BE�&$( �=���4�g�%!.�(��TZf�IE���r��Qb**����~��7�w#�K��C��sN-$�)�xz����M"|���	��r{��Q�do ����0���vS��N�����b
��"���>	��lb�|'�#�M�on�IUIM����I2s����mr<����eJ���@��3H/�A>[r�Ff�C!�HK!LC@��1�V�=��Hc����p��E9�.����������y�
{O��%2%�*h
��1C>O��n�l���N��������&��b��u%j���H��5>�LnUk?S����W��D��o/o��B�7W+�N�o��$����(w���(�D�$����w �����jd7+���N�'��8��x�H��GM��XYh,��dh��kZ+$�^��K�T�^���{I�>��r[o:�c���E�k9��D��A,��rN��7~'��+�&f$���<cL!�����F��#�f/���O��R�oxw�H��j��cN���
�,W���5�ly064�@�PB�����Ma[����6�����@K��;���x����%XT��'9��5l<��wCm�T}�)&��������"���
_��������:�v�@��N�~�Z�<�����^�>�d���u�k�gR��&2++b=n���"�7�jP���4���`H�L5'� ��m���yr��3A�5��>��u�g��
��>�{�����y�QnFfa�| t�"���H��������l=z��A*�<0�
R�z������{�#����'��������5����^j���v'�LU��N���D�L\]6��jh��6�9�'�I����Oj��,�����jk�.&��Z�26�(��7'<I���e���'5�(��0������H��u3sT8��@��&%�1��aH�u�����mt��MZ�U�������J�
�f�f�U8��T���t�q>�=�zg��G�F:J��#e���
2?�)6�h��i9�n$a)]�"g�����,m>����$)=�y7�M����b��Z�%�]�!�Et�')�p]������=��ig�%�����~�C������E�6��`����db_�O�O_#o��7W�a�wa���a�����o�4n)����E�����5>��S���P����)�d
/�>�W���~��Q�wQ����^]0N3#�p&x<�/j��p�RCaV�S����T�W�D��2��S)����[!�������yIp��*w���d���Qgg �&����A���t�����T�yOy��E����ny�4b���c�C���8L�RJ+m�
�8rMr6M�);
zRA��H�����;Xb_v�w>�"��GNI�].�s[���e;���\��snPvgv�R$���ffX�faQ��xh�����C��o�p�L<x1��$��=E�S��
$�c����`�8?���n�H�c$����<����&��a��t��k���4J�$T������7��� }�z���lX??�����N��C������j����c��k
����*.���.z�c�
�pt�whx���9m�u*�)a�BC�:���KI��Y�vq��'
l��������=����d������������7�~66oGy���'������~c��-�����#2�1��������N���#���:A��gkR�!P�}���u�������&BwD��d$=��UH�q���Z�Qfw��2WT��c�a���V������\c\k"G1Qq)���jJC�Y�IX	
 %�;/���7.k���x�i��k�vTm�2�(����V�
��6�&^	\7�	uW��n��u�H�!n���S$N��[k7s	��'"�����o^��n��B�u��N������S!�dSUb�����E���rfYJ�4YHFfY��a���j�k|SW�A�����{��������7]v�%(L�9���rs����r�K�2b��R"Ow+{����]<��(S��2��d�)�����jn7�11�k������l^k��Je���*1e�����c�q�����a�u��J��F��U���p���
E��y��NjMF��'��IM�tnw����_�sY��Id�������`�%��VHD��$"��$DjMSM�V�R`D���2�0�Y���D��w��o���#k1�+�AC�r} *��9)K'����((���w�b<�PM
�HLI�_�u�~�"��m{"�GR�'*
�F��P�M!����
����	�.v���S��{��HY%�12���e�lT�&�p���7��j�������$�7)I�����a���mc-��������Q
��`-�$	UJ(*��n`�0I��9&X9�I�Y�Q���m8lG
��2�����*,AHc�H��I!M��%�I��_�������c��>u���F ���OC�B�1�~�w`��%p��;Uv�$�O-�%	���fY�f���1C%?9��GOM�R����C�dOmC��1��J.�Yf`�������B���Fc�fF?�F��@��0�,
�]��l��@�vJ���H�J-�BK��a&�&�j���e�}"omoZ�k�J��8X���P�z�[�U��P�&Z.j>�K��/*�q�nk���F�m��J/pf^D���V�-���p�TQh���#���~��I�n���j(��8���4������P������R}n��_�>�My�|u�������V��������B_���c?y�8a.��+�&Y2ZE��Ts%z{#_j���'�������J��4���*V�f�p��ln��@zz���(�����>�����y��kNtMut��"?k_�C=U�Z�*���R��������O�V�UM�fQ���I`(�L������H%1q������!8
r��s���di~��y#��?`?.����Q}��4��{��{��<c�}�-b�J�bq�0��"����`f��������$����V���X�������I*�
{�r"|�p�����,T$�;�~dD���h�wy�����	��2n�h�E()�0pn����I����?@�-0�)%0����2���v't�v7��<�����ih��Z����_�;!��1����(+�W���D��A�C�9!������32��i� @!)���L�nz��Y[��������%�1h��VX���BR!�6�f"HJ��c-Q�� I�$FF5%�j�a����I&	�)�],J�-�O:��������`���P����|�u5�{��5�Y�F9�|$�����?#���������:2����j7��������k���
���1�lKDX@�	� P��_r���A�#U&�(j��b�����MHe���X0��I�Eo��XR�#1���.�[���wn�:�4�.����V``�'$W]�];�����N�]t��1"S���j�F1&K���� �0w��^iP��F[� �����S����'��	�B���"�=r	��E�Y�#��8O��������m��N�e�TW���= 
@33�����K���9�+���u�i�JMH�+�1
5	A�1bo!�����L���F���}J�sQ��hR�8�"�����+�B
(����������o�}�}D��y!��:u��z`��U���W8gz*��vN[=1����A���5W��������=<��~:.�2�rK�� =Eo�~�zx�4����"��,8}��3D�k�<�N�&��}Y��*+���E��������$ic].��?�������gl�lFA�*$hs4�����E�_�F�}����!k���9��p)�p��\�w���*<H*�B8T7�l6�u��ir$J�����N���4#�d��\�=�������$�6�A^�d���IoBM3�C	W��L��������rT����-e����yfB���$���G�Mz��a�������V#�B'k�t.�/���v�b1���!��{�>�b)�'�7�D+!+E�_5�����>�	
�w�2������n=M�dD����F������!
,��(5����;��-�;�������U������J"ti=��IA����Z�v]�Kj?]���^M��V��s�j9A)Q4&���OY�v��_m]��,���������q�gL�w�U�&����+���[
)�h�60�g�c��LT�d�5i"?�Q��4���8# �$/��<��ZK�Q�O��{��:.�2I�$�������Z�j�;��z&
/f��oGth���HBP`��n!�4�%&�Ib��E�����-B5�D����h\6����9��X�=bDR���f%Fdpd_W�	����!3���N�G!"DiA������4��^��������S�?��������;Q	�]���"hr���+��-����6��_A�5�$�(�Y���;�IH���tk���Q�r����hV���VX�������/�WOl��YD����������*�R:�I����{t�'4��U:c�����,���l���
0G�P��M_��
	��~��F�P�P���w&SH�Z�=��Vka�<�y�'C�"�g����z?����h��U�2�s����`}������*EQb�����
�d��qI:�u�X&�aF�,B6��M��Z��%����3�i�B6%f����*�a'-�7N�M_!B�IG^��DpH��Z(:���w?�'	0Pk�����#����:4l���W���;2�������D�I�|�Z��6�{�g��gS��d�����[���g��b�~���5���~9�A��r�r�����.�(�?l-����?*�q�s��b�����}��)~�c�����`Y�t�r=h�o��T�d�1�"�����#��|{�jk'�w���������j�Ri�{�������(z���I��5���UgH�fX$�=�2v����!X�F�S�t�����.KWX��YyQs��ZWf�b�����n�W������9��fbbG	��� ��+m��}�7J_'.��I&�i�RTv���"R����SE���&bd�CG���F-7��~T����T�)�L��rM�/��j��d��U��	e����Uw7N���Y�b�a6�$*
w89F\r�4{���'��������	�1��m�xM�H�p4�u8�Zs��8���#�Y���I�dJ�n4d�����\����n�[�m��bb}2p����N�f�y,��X�'3�\�%�c�����>��"�U��D���uP���_�~#G�u��7��M���h��7Q����8a�����Ij�$�!-9�C��L�kf�w��v�c.����V8�1Z,&�T1T��@�(J�6���s,�rU�n���j @���HM�-���"�Hp+Z�f2L��Wn���8!�7�5n�.i�n�Q�����B$,.�C���vn3oK�j �v��v�JI*���in�,f�mxm�{]��dF�����"B�5�/a>[9I�dw2x�7�����z����~�H����������A>B���<�loS�!��hXIFT&NOV�8��q��(��c�������8.f��01��,Ik�����f!��
��#c����*��a/(��������#�H�T{�4��<F�0�s	�%���|>Ve=+�*������X������5c������d��:���n����o!N�yC������q�^o��W	s��F�;-LD���bR�#�YHPP{��������z���3&��
������H���{��!���*LT�^S�� p�FU)�1���$�L(2a����c�����N��.�aCw�w�=��J���������c|_M$D�J���(���H8�	Go'G1a{`��'���\x��C0>�0D�.;����=Q-���f1�c�1�c�1�c�1�c�1�c�1�&1�c�1�c�1�c�1���~�������P�!��5KF�54:�"?(#�4��
@�� iM�ZJf2�$X_���}�&�6�M���������a���S���J�dw���b����&�FT�#D���P��
�D� �H�RAe��ns.i4''
�P�"I�d`� ��������*�������$��l��i%���$D��]6�f�M���.D�����!�1�����1�\�Q'�~���|s�|��:�^��7�#a]��[P"/��o,�JQ)�&�X�J����w���p�10�w�2��f@�{2O2����i��W�Y*�����P�G����"d��%���0��'�������S�O��~K��e��R��$�`�� �����#�	n���=
�c����>*i:y�O�m�/��`
R���vvW�g%������/��=D����?6��o�Rb~��&�~���,�*o��K+�N�:����vu5��&��#mM2���l��p��:��_\5d�*��{�'��ou�-AK9SG�F���y����9����\�>�D���$�/�����n]�Q�L���x���o��yt��<�MK�(���������w���n�������w�(�������&}Qvqr'Q-mA���7)�#������^$��?�����X��k�EJ"���$by��e�	���ID��H�hI��py���F������"�I:Pb�FA"0Z�$%
�\X�����Q,/s������8��DF��\n0�\j��|V#�#�D�����6s����1�����4[��E5�$(�w���j�T�J�2�����v)�m�>4PR!

����:R�����������hDF�
�"w�9�����g�����N3���!~G��XvQ�0����;6]C�G��=��XT���BX�B�B��V�_�_n�~�p�ez]t+�q��hQ"�(P�+ �Z:C��{~�i��-ml�p+�C;Fa.���oe�G���
o�!��P���S�S�}n9;��Z����e�k� ����� ���)b�/�I(
ZM��U>K����������\pxo�r(�0/��m���<+����VA���	Ghh\����)�������[5z��	$���z�2N���X���4n4����>�[uq�)R��U�������WPf�qqR<��7�xO���*b����J�����)4R�{��[V�TT�3D�������=��^�Z���E�	�yk���'����������Z�N=��r�����V+R��da����Q0�� ���e��Q��
7�zG7�R�����������l�m�qZBp�o8Tt����5{�q\��
��;-�5�e��<:w]���5�����Y1�����N[!��q"$6>�!N��}%�B�8d7f�EG]Apdn�	$���>0JC*v)[:�D������E�1�S����5�|x���C�&��P6�na�������Q"��[
ay#$pUBMB&$�1���)Mg��lf��x31\��|�a�^�G	6j�WJ�c2-^�L8c������P��%��$1BAJ�>X\QZ�(H��Y=�|��$hPzd�(�@��2P��{�����JNt(������D�i�C��P���O�36���F��`9?�m��D��2��e�6�m�a�$�����"4�4����V"���5��\��Ey8H��(��ID����D�q�����s���G.$�79����)l�2D���^��
�u�#uyF��j�3-����,s��%ru��=4F�F������S{w8��uh�*e����KQ�dN�f�'1���2"�%	��,r��)�7b�s��Hc��N"6���l����fMM�#��������c'�d�&��*�P'B�GXZ5�X@>
�D��`c�q!����'D�6]\�f��6�m���K���uu2'uG,jIa�>��F�D8'.��0�����w��N���7#�*r�U��
�n�#R<MN
����f�:<�WLVvV)j��������
�o�����^����������#��^c���A��G%�h��O<��#��9T��RM�!���X�3�������?�����iI�3�t
2�K4����M�T���X��f���Tw�
�J����	�	�"��#�a"����
M(-H����`��30�&��)�����*�|�C��S����WSsf�R�CPa�f?tkcZrFd5o:�[�]=:o�J]u����.�uJ�)�4��jk&\�]L4i�������fW������T�mz7D����5�+u���%1S"���,�9!�+�L$��T�]6SqUF;�#.��_�%+�:�1���MSuaj����vQL��6j���_'����N���G�p�$�$E[/����2��`�r��8Uecx���9G9] w�J��$����Sd�
�W�E����uaDYr��*RS�9�H�YP8���ad����@�lE6E"�B���t����/��F�[Y^��[=�<���$i-�<P���:>�
'�T�)(P�Y��[�h���H�c�������)���zv�=U���_?&���V7����*���n&�M�����?|��8U$���Q����h6�9�S�[���N�v�&��5��t���S���l��A�e	@������������*#����g�1�W��q�t`���<�����������H;�������!=����'��`���I_��:(����"��h8	�)��D���������=���g�?���a��;��z���i8&��+)5\���q��G5HSR�-aP�\(��?�
D@r��,0�"��u�Gf.DE�����)�_c��:���N$�JI����|1����;v��E$�������l�3��r�"��lX�1�iYb�e,MF �����Hiu(�U�����pL�q�N.&&���F��%*���	ryJh��1r�-��;���c�������-Z���N���4���Q@0����|g��������yR,�(��&/(�����(Ym��7RD����ko��Z������U&���Bg�v�*�����8|�����g+^����6O����a0��0��!�!u�������x������)�Y�g#�(w0�<��GG����B���d�%�[��+)M
fH��<������(��5�#�1{a6��P�����_������"n��DH���i�%*�����r��J���Y��S��S�A_5{o�mZa42Bq�=$�C]�������4�#��k��$*)��Ci�!�,��{
���h�l��O�Y�BM��-�t�r�Q������!c��S������e��C����ac�����SIq:�kM��:�q�j�(�!$��"�!z�D�PH��e{��;���=�3vQK
�A]���8]�ah��vQ��CT�$�/$�A�:�t/��9�$Jc�^k��=C�.�����]��b��������,�5>������6�����"$����1����
!��S�'"������z���y
<��u6��,�g 9#����������v�	j#�Oy�nY~��A
!��?&:��H�������K!BI
���'�p�-:�$m������/�A�����(��J��aqD{�FG�.$2�3[�BlDDB��	�d�c�T7i1U?����D��7�'	�e�)�K*�[4X�"�G&S	O���D�9;��{y=��*'�����SQ�H�r��#��
���b�hH�C�b���G�g�g���Q A�{������K�}�0�WT��b0����������IT�n�(@��ab�q��)��
�w���	�{��]&��*7���p�����57�1u�p"�Taq��s�+ �O�l�A�������7����qf�J��S���<��v��������jZj�YXMHU5�kWR��d�Nyd�E,P�`�9���G�K']�`zTD����:�)Gk�a)_�U����hgN����������Lf+1�s"����d�EH�&
p�(�|��\D���@�������������e������������7���L��06KIT	���Q��~�m�u^���D��T��RK`dL���4)�bO�1�*:������n��49��A������$�wk�Q��!���?��t9/g�W��o��� ���Zh��M7H����b��"X��`�.�6T=&�@����������S�!�~�A�R�5C�`�a�w��T����v7�=i���I?�fO���d�i�\?�tz��>�����7_�����o�:8�v�����#5:oa��d���;�qk4a����Vf��g3U{��y;$���d/Q�v�NDLQP3Q@��#���FWD����\����������$�����3o�X������+E���3F8K(�:�s��{����{�d�w����$�5*Kt�M48��d�FIIN3+���c7.�v��
4��cZ6�I�IKm_�j�lAy�4����V��p���!�QR��HQ,bbt
�������o�b��%;�k�����!m��F�j5Upl��8��a�T,-&�)����x��T8B�(T���d��B`��u��b�`��Cwf<������ax�u��ab	�����4�TR"Z*����0��v^r=����fwn�������?��G�����S,��,p���
��L�$�����W��45#$�� �a��ia;E����dJP�P<�;@�����"�1zH��%���(.��0r^~�`t ��;d~'�p~���%%d�(C�3%��D���X���)���|�t�W����k����m�q\Q�I�`��NH$��=��e�26w�>r���$�Z;��k,�I��2���q�q�i�,V���F�i<V5��}lLj�YS1�q�+���i���8���'+���I�@6��_�pD��4��������������]�\��bl���D�0����2�^�Z����7I)������M������n�e����]3"����H�|����2�`�sTMA1(�&
�@����d�$�h���Q�iD��G�eAu��v�?�CC��M�\����wS)��Y�jP�1v��^���o
�d��rc5���eR��d�x�:�x�����V���EU�6�:y���kL��&����u�=4�w���H��W��X��)��1�%0��VL����y��d�w���5~����VZ���5t�1:���y#���'�d�M<���
��:q��
�
I�Ef�+�5}��I,3�pX}z�lN�����rQ����Vm����_��e�����A]]W��*y��P���u������"'U�,7��7q��}�{<_+'�toi�K����4�i�����Y;Y0�bU������u������;������c��l�Nf���A)��0��K���B��e�	q��I@����s��G�$$�-#�3BS���H��lI-1��<��W$J���C��wj
�a{Q%��qR��;%va{�V�!������'�(���D�!�F���,ee)@�BB
be�ONe�W-&!����Y@R&\��G��9]�^����`�\m����[OI4����wB)EmL�A������"���-("�%�E��[���Q�����R��Iq��	4��Z��lB���rI�8JH����E3�kQ*��;���;�!x�(J����T-D%�A)��������������]{��>^���j!a��
hR�{���
�L��^�^�&\J���������0��m�be)��R��L���w2Jm�(6�L�YX�,�t�-Rx�\������Gd�iVx36����F�:��`~�$0LR���OD
�rVz���D�*�,�J�Q�3�F*��!y�C �"&K��/]�y#a��<Z.I2b�y�����1�:�����/2~!4����O�o�;����N�_)�|{����	T��d����A�G��`�0�~��b���#��b��Y���:~� �*�!Yg��$�b%I�}�l��P�P�(�+'�f���t�Ph�9+d-�Uf��U������2��������]��BA
t<
#2Simon Riggs
simon@2ndQuadrant.com
In reply to: Simon Riggs (#1)
1 attachment(s)
Re: Hot Standby dev build (v8)

On Wed, 2009-01-14 at 23:55 +0000, Simon Riggs wrote:

http://wiki.postgresql.org/wiki/Hot_Standby

v8 - resolves a dozen minor issues.

Found and fixed another 8 issues, through code inspection, bash test and
specific feature tests.

Looking much better; still working - check Wiki for status.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

Attachments:

hs.v8c.20090115_3.tar.bz2application/x-bzip-compressed-tar; name=hs.v8c.20090115_3.tar.bz2Download
#3Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#2)
Re: Hot Standby dev build (v8)

I don't think RecentGlobalXmin is good enough here:

! /*
! * We would like to set an accurate latestRemovedXid, but there
! * is no easy way of obtaining a useful value. So we use the
! * probably far too conservative value of RecentGlobalXmin instead.
! */
! xlrec_delete.latestRemovedXid = RecentGlobalXmin;
! rdata[0].data = (char *) &xlrec_delete;
! rdata[0].len = SizeOfBtreeDelete;

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#4Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#3)
Re: Hot Standby dev build (v8)

On Fri, 2009-01-16 at 16:33 +0200, Heikki Linnakangas wrote:

I don't think RecentGlobalXmin is good enough here:

! /*
! * We would like to set an accurate latestRemovedXid, but there
! * is no easy way of obtaining a useful value. So we use the
! * probably far too conservative value of RecentGlobalXmin instead.
! */
! xlrec_delete.latestRemovedXid = RecentGlobalXmin;
! rdata[0].data = (char *) &xlrec_delete;
! rdata[0].len = SizeOfBtreeDelete;

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

What do you think we should do instead?

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#5Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#4)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

On Fri, 2009-01-16 at 16:33 +0200, Heikki Linnakangas wrote:

I don't think RecentGlobalXmin is good enough here:

! /*
! * We would like to set an accurate latestRemovedXid, but there
! * is no easy way of obtaining a useful value. So we use the
! * probably far too conservative value of RecentGlobalXmin instead.
! */
! xlrec_delete.latestRemovedXid = RecentGlobalXmin;
! rdata[0].data = (char *) &xlrec_delete;
! rdata[0].len = SizeOfBtreeDelete;

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

What do you think we should do instead?

Dunno. Maybe call GetOldestXmin().

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#6Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#5)
Re: Hot Standby dev build (v8)

On Fri, 2009-01-16 at 22:09 +0200, Heikki Linnakangas wrote:

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

What do you think we should do instead?

Dunno. Maybe call GetOldestXmin().

We are discussing btree deletes, not btree vacuums. If we are doing
btree delete then we have an unreleased snapshot therefore we also have
a non-zero xmin. How can another backend have a later RecentGlobalXmin
or result from GetOldestXmin() than we do?

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#7Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#6)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

On Fri, 2009-01-16 at 22:09 +0200, Heikki Linnakangas wrote:

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

What do you think we should do instead?

Dunno. Maybe call GetOldestXmin().

We are discussing btree deletes, not btree vacuums.

Pardon my ignorance, but what's the difference?

If we are doing
btree delete then we have an unreleased snapshot therefore we also have
a non-zero xmin. How can another backend have a later RecentGlobalXmin
or result from GetOldestXmin() than we do?

Sure it can, for example:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 4 kills tuple, using its RecentGlobalxmin of 1
9. Transaciont 3 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 2

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#8Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#7)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 09:16 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

On Fri, 2009-01-16 at 22:09 +0200, Heikki Linnakangas wrote:

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin
that GetOldestXmin() would return. If another backend has a more recent
RecentGlobalXmin value, and has killed more recent tuples on the page,
the latestRemovedXid written here is too old.

What do you think we should do instead?

Dunno. Maybe call GetOldestXmin().

We are discussing btree deletes, not btree vacuums.

Pardon my ignorance, but what's the difference?

In terms of current HEAD, not much. In terms of Hot Standby, a
significant difference - the two actions have been split, rather than
continuing to share the same WAL record.

XLOG_BTREE_VACUUM removes index tuples as a result of a vacuum. The
initial scan of the heap already generated an XLOG_HEAP2_CLEANUP_INFO
which gives the latestRemovedXid for that vacuum. So we don't need to
worry about putting a latestRemovedXid on XLOG_BTREE_VACUUM. The WAL
records also differ because the XLOG_BTREE_VACUUM contains details of
blocks that need to be pinned but not otherwise touched.

XLOG_BTREE_DELETE is different in 3 ways. It isn't part of a vacuum, so:
* we don't need to take a cleanup lock
* it doesn't contain info about other blocks we need to scan beforehand
for correctness purposes
* it wasn't preceded by an XLOG_HEAP2_CLEANUP_INFO record, so it must
have a *correct* (even if too conservative) value for latestRemovedXid
set.

So the only time we need to set latestRemovedXid correctly is during a
normal transaction, not during a vacuum.

If we are doing
btree delete then we have an unreleased snapshot therefore we also have
a non-zero xmin. How can another backend have a later RecentGlobalXmin
or result from GetOldestXmin() than we do?

Sure it can, for example:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 4 kills tuple, using its RecentGlobalxmin of 1
9. Transaciont 3 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 2

Well, steps 7 and 8 don't make sense.

Your earlier comment was that it was possible for a WAL record to be
written with a RecentGlobalXmin that was lower than other backends
values. In step 9 the RecentGlobalXmin is *not* lower than any other
backend, it is the same.

So if there is a proof, this isn't it.

But I can't see how there can be one: Two concurrent vacuums can have
different OldestXmin values, but two concurrent transactions cannot.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#9Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#8)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

Well, steps 7 and 8 don't make sense.

Your earlier comment was that it was possible for a WAL record to be
written with a RecentGlobalXmin that was lower than other backends
values. In step 9 the RecentGlobalXmin is *not* lower than any other
backend, it is the same.

So if there is a proof, this isn't it.

Yeah, you're right. I got steps 8 and 9 mixed. Let me try again:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 3 kills tuple, using its RecentGlobalxmin of 2
9. Transaction 4 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 1

But I can't see how there can be one: Two concurrent vacuums can have
different OldestXmin values, but two concurrent transactions cannot.

Of course they can.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#10Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#9)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 12:22 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

Well, steps 7 and 8 don't make sense.

Your earlier comment was that it was possible for a WAL record to be
written with a RecentGlobalXmin that was lower than other backends
values. In step 9 the RecentGlobalXmin is *not* lower than any other
backend, it is the same.

So if there is a proof, this isn't it.

Yeah, you're right. I got steps 8 and 9 mixed. Let me try again:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 3 kills tuple, using its RecentGlobalxmin of 2
9. Transaction 4 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 1

One of us needs a coffee.

How does Transaction 4 have a RecentGlobalXmin of 2 in step (7), but at
step (9) the value of RecentGlobalXmin has gone backwards?

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#11Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#10)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

One of us needs a coffee.

Clearly, I put the kettle on...

How does Transaction 4 have a RecentGlobalXmin of 2 in step (7), but at
step (9) the value of RecentGlobalXmin has gone backwards?

Looks like I mixed up the xids of the two transactions in steps 8 and 9.
Let's see if I got it right this time:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 4 kills tuple, using its RecentGlobalxmin of 2
9. Transaction 3 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 1

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#12Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#11)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 12:50 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

One of us needs a coffee.

Clearly, I put the kettle on...

I had one too, just in case.

How does Transaction 4 have a RecentGlobalXmin of 2 in step (7), but at
step (9) the value of RecentGlobalXmin has gone backwards?

Looks like I mixed up the xids of the two transactions in steps 8 and 9.
Let's see if I got it right this time:

1. Transaction 1 begins in backend A
2. Transaction 2 begins in backend B, xmin = 1
3. Transaction 1 ends
4. Transaction 3 begins in backend C, xmin = 2
5. Backend C gets snapshot, TransactionXmin = 2, RecentGlobalXmin = 1
6. Transaction 2 ends.
7. Transaction 4 begins in backend A, gets snapshot TransactionXmin = 2,
RecentGlobalXmin = 2
8. Transaction 4 kills tuple, using its RecentGlobalxmin of 2
9. Transaction 3 splits the page, emits a delete xlog record, setting
latestRemovedXid to its RecentGlobalXmin of 1

I don't see how step (5) is possible. GetSnapshotData() sets
RecentGlobalXmin to the result of the snapshot's xmin.

If step (5) is possible, then yes, step (9) can happen.

You are correct to say that RecentGlobalXmin is not always correctly
set. All I'm saying is that at the exact time, place and circumstance I
use it, it is correct. In other cases, it may not be.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#13Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#12)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

GetSnapshotData() sets
RecentGlobalXmin to the result of the snapshot's xmin.

No. RecentGlobalXmin is set to the oldest *xmin* observed, across all
running transactions. TransactionXmin is the xid of the oldest running
transaction. IOW, RecentGlobalXmin is the xid of transaction that the
oldest running transaction sees as running.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#14Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#13)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 14:00 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

GetSnapshotData() sets
RecentGlobalXmin to the result of the snapshot's xmin.

No. RecentGlobalXmin is set to the oldest *xmin* observed, across all
running transactions. TransactionXmin is the xid of the oldest running
transaction. IOW, RecentGlobalXmin is the xid of transaction that the
oldest running transaction sees as running.

OK. That was fun.

These WAL records are annoying, no matter what the exact value of
latestRemovedXid is and they seem likely to conflict with many queries
on the standby.

If we don't use RecentGlobalXmin then I can't see any easily derived
value that we can use in its place. It isn't worth the effort on the
master to derive a more exact value, not when we don't even know if it
matters yet.

I suggest we handle this on the recovery side, not on the master, by
deriving the xmin at the point the WAL record arrives. We would
calculate it by looking at recovery procs only. That will likely give us
a later value than we would get from the master, but that can't be
helped.

For me, this makes it essential now that I put in place the deferred
cancellation mechanism. Some refactoring in this area is also required
because we need to handle two other types of conflict to correctly
support drop database and drop user, which is now underway.

Btree deletes were an important optimisation when it first went it, but
now we have HOT it is much less important. Another route might be to put
an option to turn off btree delete on the master, default = on. We
probably should consider turning it off entirely when it doesn't yield
significant benefit. Lots of scanning to remove the odd row is probably
pretty wasteful and likely adds contention at the very point we don't
want it - index splits.

Thoughts?

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#15Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#14)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

I suggest we handle this on the recovery side, not on the master, by
deriving the xmin at the point the WAL record arrives. We would
calculate it by looking at recovery procs only. That will likely give us
a later value than we would get from the master, but that can't be
helped.

Hmm, that's an interesting idea. It presumes that we see an abort/commit
WAL record at the right moment for every transaction that we have a
recovery proc for. We just concluded in the other thread that we do
always emit abortion records when the database is running normally; I
think that's good enough for this purpose.

A few other random ideas I had:

- in btree delete redo, follow the index pointers, and look at the xids
on the heap tuples. That requires some random I/O, but will give the
exact value we need. Since it's quite expensive, I think we'd only want
to do it after using some more conservative test but quicker test to
determine that there might be a conflict.

- Add latestRemovedXid to b-tree page header, and update it as tuples
are killed. Need to tolerate the fact that tuple kills are not WAL-logged.

Btree deletes were an important optimisation when it first went it, but
now we have HOT it is much less important.

If HOT is working well for your application, there won't be many btree
deletes anyway, and the whole issue is moot.

Another route might be to put
an option to turn off btree delete on the master, default = on. We
probably should consider turning it off entirely when it doesn't yield
significant benefit.

I'd rather put in a generic mechanism to prevent vacuuming of recent
tuples that might still be needed in the standby. Like always
subtracting a fixed amount of xids from OldestXmin/RecentGlobalXmin, or
having a feedback loop from the standby to the master, allowing the
master to say what it's oldest xmin is. But that's a fair amount of
work; I'd rather leave that as a future enhancement, and just figure out
something simple for this specific issue. We'll need to handle it
gracefully even if we try to avoid it by retaining dead tuples longer.

Lots of scanning to remove the odd row is probably
pretty wasteful and likely adds contention at the very point we don't
want it - index splits.

Remember that if you can remove enough dead tuples from the index page,
you've just made room on the page and don't need to split. Splitting is
pretty expensive compared to scanning a few line pointers.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#16Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#15)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 15:47 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

I suggest we handle this on the recovery side, not on the master, by
deriving the xmin at the point the WAL record arrives. We would
calculate it by looking at recovery procs only. That will likely give us
a later value than we would get from the master, but that can't be
helped.

Hmm, that's an interesting idea. It presumes that we see an abort/commit
WAL record at the right moment for every transaction that we have a
recovery proc for. We just concluded in the other thread that we do
always emit abortion records when the database is running normally; I
think that's good enough for this purpose.

But not perfect.

A few other random ideas I had:

- in btree delete redo, follow the index pointers, and look at the xids
on the heap tuples. That requires some random I/O, but will give the
exact value we need. Since it's quite expensive, I think we'd only want
to do it after using some more conservative test but quicker test to
determine that there might be a conflict.

Ouch.

- Add latestRemovedXid to b-tree page header, and update it as tuples
are killed. Need to tolerate the fact that tuple kills are not WAL-logged.

Sounds easy-ish.

If tuple kills aren't WAL logged then if we crash latestRemovedXid will
remain as it was at time of last write. So if we do a delete scan it
will only remove the index tuples with hint bits set at time of that
write, so the value would always be correct, no?

I'm somehow uncomfortable with this idea though. Care to persuade me
further?

Btree deletes were an important optimisation when it first went it, but
now we have HOT it is much less important.

If HOT is working well for your application, there won't be many btree
deletes anyway, and the whole issue is moot.

That was my point.

Another route might be to put
an option to turn off btree delete on the master, default = on. We
probably should consider turning it off entirely when it doesn't yield
significant benefit.

I'd rather put in a generic mechanism to prevent vacuuming of recent
tuples that might still be needed in the standby. Like always
subtracting a fixed amount of xids from OldestXmin/RecentGlobalXmin, or
having a feedback loop from the standby to the master, allowing the
master to say what it's oldest xmin is. But that's a fair amount of
work; I'd rather leave that as a future enhancement, and just figure out
something simple for this specific issue. We'll need to handle it
gracefully even if we try to avoid it by retaining dead tuples longer.

Yeh, looked at both of those also. Definitely after sync rep goes in
though.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#17Simon Riggs
simon@2ndQuadrant.com
In reply to: Simon Riggs (#14)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 12:54 +0000, Simon Riggs wrote:

Some refactoring in this area is also required
because we need to handle two other types of conflict to correctly
support drop database and drop user, which is now underway.

I've hung the drop database conflict code in dbase_redo().

For drop role, there isn't an rmgr at all, but I can add code in a few
places.

* add XLOG_DBASE_DROP_USER - i.e. add drop user to the Database rmgr

* DropRole() takes an AccessExclusiveLock, so we do write a WAL record
for it. I could add a special case to the Relation rmgr.

* Add a new rmgr (unused slot 7) and have it handle DropRole.

I prefer the last one, but if you think otherwise, please shout.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support

#18Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Simon Riggs (#17)
Re: Hot Standby dev build (v8)

Simon Riggs wrote:

I prefer the last one, but if you think otherwise, please shout.

We're now emitting WAL records for relcache invalidations, IIRC. I
wonder if those are useful for this?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#19Simon Riggs
simon@2ndQuadrant.com
In reply to: Heikki Linnakangas (#18)
Re: Hot Standby dev build (v8)

On Mon, 2009-01-19 at 16:50 +0200, Heikki Linnakangas wrote:

Simon Riggs wrote:

I prefer the last one, but if you think otherwise, please shout.

We're now emitting WAL records for relcache invalidations, IIRC. I
wonder if those are useful for this?

Tom already objected to putting strange inval messages into WAL.

Hmm, DROP USER is transactional, so we can only do this at commit. So
forget the other ideas I had.

We already know about the auth file update at commit.

So we should say, at commit, re-read the list of roleids in use and if
any don't match a row in pg_user then remove them. If we do that after
the flat file update and the actual commit that removes the user then we
will be guaranteed no race condition exists to allow new users to logon
as we try to disconnect them.

--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support