HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pyasn1/codec/ber/__pycache__/decoder.cpython-312.pyc
�

�f�i�����ddlmZddlmZddlmZddlmZddlmZm	Z	m
Z
mZddlm
Z
ddlmZddlmZdd	lmZdd
lmZddlmZdgZej(eej,�
�Ze
j0ZGd�de�ZdZdZGd�de�ZGd�de�Ze�ZGd�de�Z Gd�de �Z!Gd�de�Z"Gd�de�Z#Gd�de�Z$Gd �d!e�Z%Gd"�d#e�Z&Gd$�d%e�Z'Gd&�d'e'�Z(Gd(�d)e(�Z)Gd*�d+e)�Z*Gd,�d-e)�Z+Gd.�d/e(�Z,Gd0�d1e,�Z-Gd2�d3e,�Z.Gd4�d5e'�Z/Gd6�d7e�Z0Gd8�d9e#�Z1Gd:�d;e#�Z2Gd<�d=e#�Z3Gd>�d?e#�Z4Gd@�dAe#�Z5GdB�dCe#�Z6GdD�dEe#�Z7GdF�dGe#�Z8GdH�dIe#�Z9GdJ�dKe#�Z:GdL�dMe#�Z;GdN�dOe#�Z<GdP�dQe#�Z=GdR�dSe#�Z>iej~j�e ��ej�j�e!��ej�j�e"��ej�j�e#��ej�j�e$��ej�j�e%��ej�j�e ��ej�j�e&��ej�j�e)��ej�j�e,��ej�j�e/��ej�j�e1��ej�j�e2��ej�j�e3��ej�j�e4��ej�j�e5��ej�j�e6��ej�j�e7�ej�j�e8�ej�j�e9�ej�j�e:�ej�j�e;�ej�j�e<�ej�j�e=�ej�j�e>�i�ZYej�j�e-�ej�j�e.�ej�j�e*�ej�j�e+�ej�j�e/�ej�j�e0�iZ^eYj��D]<Z`e`j���e`j�j�j�ZZeZ��3eZe^vs�8e`e^eZ<�>ecdU�D�cgc]}|��c}\
ZdZeZfZgZhZiZjZkZlZmGdV�dWe�ZneneYe^�ZoyTcc}w)X�)�debug)�error)�eoo)�
from_bytes)�oct2int�	octs2ints�	ints2octs�null)�base)�char)�tag)�tagmap)�univ)�useful�decode)�flagsc�(�eZdZdZ		dd�Z		dd�Zy)�AbstractDecoderNc�2�tjd|����)NzDecoder not implemented for �r�PyAsn1Error�	�self�	substrate�asn1Spec�tagSet�length�state�	decodeFun�substrateFun�optionss	         �:/usr/lib/python3/dist-packages/pyasn1/codec/ber/decoder.py�valueDecoderzAbstractDecoder.valueDecoders�����F� L�M�M�c�2�tjd|����)Nz3Indefinite length mode decoder not implemented for rrs	         r"�indefLenValueDecoderz$AbstractDecoder.indefLenValueDecoder#s�����[a� c�d�dr$�NNNNN)�__name__�
__module__�__qualname__�protoComponentr#r&�r$r"rrs$���N�6:�26�N�>B�:>�er$r��dc�"�eZdZed��Zd�Zy)�AbstractSimpleDecoderc��|d|||dfS�Nr,)�
asn1Objectrrs   r"�substrateCollectorz(AbstractSimpleDecoder.substrateCollector0s����&�!�9�V�W�#5�5�5r$c��|jd�r|S|�|jj||��S|tur|S|j|�S)N�native�r)�getr+�clone�noValue�rrr�valuer!s     r"�_createComponentz&AbstractSimpleDecoder._createComponent4sQ���;�;�x� ��L�
�
��&�&�,�,�U�6�,�B�B�
�g�
��O��>�>�%�(�(r$N)r(r)r*�staticmethodr4r=r,r$r"r0r0/s���6��6�)r$r0c�H�eZdZejd�Z		dd�Z		dd�Zy)�ExplicitTagDecoder�Nc���|r||j||dfi|��||�S|d|||d}
}	||	|||fi|��\}}tr,tdt|�tj|�fz�||
fS)NrAzPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r=�LOG�lenr�hexdump)
rrrrrrrr r!�head�tailr<�_s
             r"r#zExplicitTagDecoder.valueDecoderBs�����%��%�%�h���F�g�F��6��
�
�w��'��6�7�);�d���T�8�V�V�G�w�G���q���&�),�Q�����q�1A�(B�C�
D��d�{�r$c���|r||j||dfi|��||�S|||||fi|��\}	}||fddi|��\}
}|
tjur|	|fStjd��)NrA�allowEooTz Missing end-of-octets terminator)r=r�endOfOctetsrr)rrrrrrrr r!r<�	eooMarkers           r"r&z'ExplicitTagDecoder.indefLenValueDecoderVs�����%��%�%�h���F�g�F��6��
�
%�Y��&�&�T�G�T���y�(��M�T�M�W�M��	�9�����'��)�#�#��#�#�$F�G�Gr$r'�r(r)r*r�Anyr+r#r&r,r$r"r@r@?s-���T�X�X�b�\�N�6:�26��*>B�:>�Hr$r@c�<�eZdZejd�Z		dd�Zy)�IntegerDecoderrNc��|djtjk7rtjd��|d|||d}
}	|	s|j
||dfi|��|
fSt
|	d��}|j
|||fi|��|
fS)Nr�Simple tag format expectedT)�signed)�	tagFormatr
�tagFormatSimplerrr=r)rrrrrrrr r!rFrGr<s            r"r#zIntegerDecoder.valueDecoderps���
�!�9���#�"5�"5�5��#�#�$@�A�A��w��'��6�7�);�d���(�4�(�(��6�1�H��H�$�N�N��4��-��$�t�$�$�X�v�u�H��H�$�N�Nr$r')r(r)r*r�Integerr+r#r,r$r"rPrPms��!�T�\�\�!�_�N�6:�26�Or$rPc�6�eZdZejd�Zd�Zy)�BooleanDecoderrc�D�tj||||xrdxsdfi|��S)N�r)rPr=r;s     r"r=zBooleanDecoder._createComponent�s2���.�.��(�F�E�K�a�$4�1�A�8?�A�	Ar$N)r(r)r*r�Booleanr+r=r,r$r"rXrX�s��!�T�\�\�!�_�N�Ar$rXc�L�eZdZejd�ZdZ		dd�Z		dd�Zy)�BitStringDecoderr,TNc��|d|||d}
}	|r!||j||tfi|��||�S|	stjd��|djt
jk(rct|	d�}|dkDrtjd|z��|jj|	ddd|��}|j|||fi|��|
fS|js,tjd|jjz��trtd	�|j}|jjtd�
�}
|	ri||	|jfd|i|��\}}	t|d�}|dkDrtjd|z��|jj|ddd|
|��}
|	r�i|j|||
fi|��|
fS)
NzEmpty BIT STRING substrater��Trailing bits overflow %srZT)�internalFormat�padding�*Constructed encoding form prohibited at %s�$assembling constructed serialization�rar �ra�prependrb)r=r:rrrTr
rUrr+�fromOctetString�supportConstructedForm�	__class__r(rCr4r
)rrrrrrrr r!rFrG�trailingBitsr<�	bitString�	components               r"r#zBitStringDecoder.valueDecoder�s!���w��'��6�7�);�d���� 5�� 5� 5��&�'�!6�-4�!6�7@�&�J�
J���#�#�$@�A�A��!�9���#�"5�"5�5�"�4��7�+�L��a���'�'�/�,�>����'�'�7�7��Q�R���|�8�E�E�)�4�(�(��6�5�L�G�L�d�R�R��*�*��#�#�%,�.2�n�n�.E�.E�%F�G�
G���6�7��.�.���'�'�7�7��T�7�R�	��'��d�.A�.A�N�5A�N�EL�N�O�I�t�#�9�Q�<�0�L��a���'�'�/�,�>����+�+�;�;��!�"�
�d�!�<�<��I��%�t�$�$�X�v�y�L�G�L�d�R�Rr$c��|r!||j||tfi|��||�S|j}|jj	t
d��}	|r}|||jf|dd�|��\}
}|
tjurnet|
d�}|dkDrtjd|z��|jj	|
ddd|	|��}	|r�}tjd	��|j|||	fi|��|fS)
NTre�r rJrr_r`rZrf�!No EOO seen before substrate ends)r=r:r4r+rhr
rrKrrr�SubstrateUnderrunError)rrrrrrrr r!rlrmrks            r"r&z%BitStringDecoder.indefLenValueDecoder�s3��
�� 5�� 5� 5�h��� [�SZ� [�]f�hn�o�o��.�.���'�'�7�7��T�7�R�	��#,�Y��8K�8K�$G�:F�6:�$G�>E�$G� �I�y��C�O�O�+��"�9�Q�<�0�L��a���'�'�/�,�>����+�+�;�;��!�"�
�d�!�<�<��I��&�.�.�/R�S�S�$�t�$�$�X�v�y�L�G�L�i�W�Wr$r')	r(r)r*r�	BitStringr+rir#r&r,r$r"r]r]�s6��#�T�^�^�B�'�N�!��6:�26�5S�p>B�:>�"Xr$r]c�L�eZdZejd�ZdZ		dd�Z		dd�Zy)�OctetStringDecoderrATNc���|d|||d}
}	|r!||j||tfi|��||�S|djtjk(r|j|||	fi|��|
fS|j
s,t
jd|jjz��trtd�|j}t}|	r!||	|jfd|i|��\}}	||z
}|	r�!|j|||fi|��|
fS)Nrrcrdr )r=r:rTr
rUrirrrjr(rCr4r
r+)
rrrrrrrr r!rFrG�headerrms
             r"r#zOctetStringDecoder.valueDecoder�s/���w��'��6�7�);�d���� 5�� 5� 5�h��� [�SZ� [� )�6�3�
3��!�9���#�"5�"5�5�(�4�(�(��6�4�K�7�K�T�Q�Q��*�*��#�#�$P�SW�Sa�Sa�Sj�Sj�$j�k�k���6�7��.�.�����'��d�.A�.A�3�5A�3�*1�3�O�I�t�
�i��F�	�%�t�$�$�X�v�v�I��I�4�O�Or$c�R�|r1||jur#|j||tfi|��}	||	||�S|j}t}
|r5|||jf|dd�|��\}}|t
jurn|
|z
}
|r�5tjd��|j|||
fi|��|fS)NTrorp)	r4r=r:r
r+rrKrrq)rrrrrrrr r!r3rvrms            r"r&z'OctetStringDecoder.indefLenValueDecoders����L��0G�0G�G�.��.�.�x���T�G�T�J��
�I�v�>�>��.�.�����#,�Y�-1�-@�-@�$G�:F�6:�$G�?F�$G� �I�y��C�O�O�+���i��F���.�.�3��
�%�t�$�$�X�v�v�I��I�9�T�Tr$r')	r(r)r*r�OctetStringr+rir#r&r,r$r"rtrt�s8��%�T�%�%�b�)�N�!��6:�26�P�B>B�:>�Ur$rtc�<�eZdZejd�Z		dd�Zy)�NullDecoderrANc���|djtjk7rtjd��|d|||d}
}	|j
||dfi|��}|	rtjd|z��||
fS)NrrRrAz&Unexpected %d-octet substrate for Null)rTr
rUrrr=)rrrrrrrr r!rFrGrms            r"r#zNullDecoder.valueDecoder0s���
�!�9���#�"5�"5�5��#�#�$@�A�A��w��'��6�7�);�d��)�D�)�)�(�F�B�J�'�J�	���#�#�$L�v�$U�V�V��$��r$r')r(r)r*r�Nullr+r#r,r$r"rzrz-s���T�Y�Y�r�]�N�6:�26�r$rzc�<�eZdZejd�Z		dd�Zy)�ObjectIdentifierDecoderr,Nc�b�|djtjk7rtjd��|d|||d}
}	|	stjd��t|	�}	d}d}t
|	�}
||
kr�|	|}|dz
}|dkr||fz
}n�|dkDr||}d}d}|dk\rd|dz
}|tkDrtjdt|fz��|dz|d	zz}||
k\rtjd
|����|	|}|dz
}|dk\r�d||dz|zfz
}n|dk(rtjd��||
kr��d|dcxkrdkr	nnd
|z}nVd|dcxkrdkrnnd|ddz
f|ddz}n4|ddk\rd|ddz
f|ddz}ntjd|	dz��|j|||fi|��|
fS)NrrRzEmpty substrater,rZ�zEOID arc exceeds maximum continuation octets limit (%d) at position %dr_�z!Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding�')r�(�O�P�zMalformed first OID octet: %s)
rTr
rUrrrrD�MAX_OID_ARC_CONTINUATION_OCTETSrqr=)rrrrrrrr r!rFrG�oid�index�substrateLen�subId�	nextSubId�continuationOctetCounts                 r"r#z$ObjectIdentifierDecoder.valueDecoderEs<���!�9���#�"5�"5�5��#�#�$@�A�A��w��'��6�7�);�d����#�#�$5�6�6����������4�y���l�"���K�E��Q�J�E��s�{���x������!�	���)*�&��3�&�*�a�/�*�-�0O�O�#�/�/�-�0O�QV�/W�X���#�a�Z�I��,<�=�E���,�#�:�:�EH�J���!%�U��I��Q�J�E� �3�&���!��y�0�2�2���#��
�'�'�(L�M�M�=�l�"�B
��A���"����*�C�
�3�q�6�
�R�
��c�!�f�r�k�"�S���W�,�C�
��V�r�\��c�!�f�r�k�"�S���W�,�C��#�#�$C�d�1�g�$M�N�N�$�t�$�$�X�v�s�F�g�F��L�Lr$r')r(r)r*r�ObjectIdentifierr+r#r,r$r"r~r~Bs"��*�T�*�*�2�.�N�6:�26�:Mr$r~c�:�eZdZej�Z		dd�Zy)�RealDecoderNc��|djtjk7rtjd��|d|||d}
}	|	s|j
||dfi|��|
fSt
|	d�}|	dd}	|dz�r|	stjd��trtd�|dzdz}|d	k(rt
|	d�}|	dd}	|	d||	|d}	}
|
r|	stjd
��t
|
d�dzxrdxsd}|
r|dz}|t
|
d�z}|
dd}
|
r�|d	z	dz}|d
kDrtjd��|dk(r|dz}n
|d
k(r|d	z}d}|	r|dz}|t
|	d�z}|	dd}	|	r�|dzr|}|d
z	dz}|d
|zz}|d
|f}n�|dzrtrtd�|dzxrdxsd}n�|dzdk(r�|	stjd��trtd�	|dzdk(rt|	�ddf}n@|dzd
k(rt|	�}n,|dzdk(rt|	�}ntjd|z��ntjd|z��|j
|||fi|��|
fS#t$rtjd��wxYw)NrrRgrZr�zIncomplete floating-point valuezdecoding binary encoded REAL��zReal exponent screwed����r�zIllegal Real base�@zdecoding infinite REALz-inf�inf�zdecoding character encoded REAL�
zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rTr
rUrrr=rrC�int�floatrq�
ValueError)rrrrrrrr r!rFrG�fo�n�eo�e�b�p�sfr<s                   r"r#zRealDecoder.valueDecoder�s���!�9���#�"5�"5�5��#�#�$@�A�A��w��'��6�7�);�d���(�4�(�(��6�3�J�'�J�D�P�P�
�T�!�W�
���A�B�x��
��9���'�'�(I�J�J���2�3��d��a��A��A�v��D��G�$���A�B�x���B�Q�x��a�b���B��T��'�'�(?�@�@���1����%�,�"�1��A���a����W�R��U�^�#�����V���
�a��$��A��1�u��'�'�(;�<�<��A�v��Q����a���Q����A���a����W�T�!�W�%�%���A�B�x���
�D�y��B���q��4��B�
��b��L�A���1�I�E�
�$�Y���,�-���I�(�&�1�E�E�
�$�Y�!�^���'�'�(I�J�J���5�6�
���8�s�?� ��Y��A�.�E��#�X��_�!�$�K�E��#�X��_�!�$�K�E� �6�6�-��2�����.�.�+�b�0��
�%�t�$�$�X�v�u�H��H�$�N�N���
��2�2�/���
�s
�"AI)�)Jr')r(r)r*r�Realr+r#r,r$r"r�r��s���T�Y�Y�[�N�6:�26�eOr$r�c��eZdZdZy)�AbstractConstructedDecoderN)r(r)r*r+r,r$r"r�r��s���Nr$r�c�@�eZdZdZdZd�Zd�Zdd�Z		dd�Z		dd�Z	y)	�UniversalConstructedTypeDecoderNc��t��r2��NotImplementedError)rr3�idxs   r"�_getComponentTagMapz3UniversalConstructedTypeDecoder._getComponentTagMap����!�#�#r$c��t��r2r�)rr3rr�s    r"�_getComponentPositionByTypez;UniversalConstructedTypeDecoder._getComponentPositionByType�r�r$c��g}t�}|rN||fi|��\}}|tjurn/|j|�|j	|j
�|r�Nt
|�dkDr
|j}n|j}|jtj|j
jg|j�����}	trtd|	z�t|�D]\}
}|	j!|
|ddd���|	|fS)NrZr7z@guessed %r container type (pass `asn1Spec` to guide the decoder)F��verifyConstraints�	matchTags�matchConstraints)�setrrK�append�addrrD�protoRecordComponent�protoSequenceComponentr9r
�TagSet�baseTag�	superTagsrC�	enumerate�setComponentByPosition)rrrrr!�
components�componentTypesrmr+r3r�s           r"�_decodeComponentsz1UniversalConstructedTypeDecoder._decodeComponents�s���
�����#,�Y�#B�'�#B� �I�y��C�O�O�+�����i�(����y�/�/�0�
��~���"�!�6�6�N�"�8�8�N�#�)�)��:�:�n�3�3�;�;�O�f�>N�>N�O�*�
�
����'�(�
)�(�
�3�	�N�C���-�-��Y�"'��%�
.�
�	��9�$�$r$c
�

�|djtjk7rtjd��|d|||d}
}	|�^|�|j�}nA|j�|jj|��}n|j|jf}||||�S|�Q|j|	f||d�|��\}}|r2tr,tdt|�tj|�fz�||
fS|j�}|j�|jt j"jt j$jfv�r�|j&}
|jt j$jk(}|xr
|
j(}tr&td|xrdxsd�d	|xrd
xsd�d|�d��t+�}d}|	r�|
sd}na|r
|
j,}nR	|r|
|j.}n?|
|j0s|
|j2r|
j5|�}n|
|j.}||	|fi|��\}}	|sZ|
rX|r|
j9|j:�}n:|
|j0s|
|j2r|
j=|j:|�}|j?||ddd��|jA|�|dz
}|	r��trtd|z�|
�r|
jBjE|�s,tjd|jFjHz��|
jJ�r�|jMdi�}tr3td�|jO�D]\}}t|�d|����|s|jMdd��rqtQ|
jR�D�]D\}}|jTs�|j0r|jW|�jXs�<|j[|jTj\�}	||}trtd|�d|���|jW|�}|jt j`jt jbjfvr9tQ|�D])\}}|||je�fd|i|��\}}|||<�+��||jW|�je�fd|i|��\}}|j?||���G||
fS|jf}|r|�||
fS|j�}|j�|j&}trtd|z�d}|	r+||	|fi|��\}}	|j?||ddd��|dz
}|	r�+||
fS#t6$rtjd
|����wxYw#t^$r�tr�td|jFjH�d|j\�d|jFjH�d|jTj\�d�	�|jTjO�D]\}}t|�d|����	|jT|}n%#t^$rtrtd|���YY���wxYwY��iwxYw) Nr�Constructed tag format expectedr7�rrz)Unused trailing %d octets encountered: %s�	decoding �non-rA�deterministic �SET� type � chosen by type ID� Excessive components decoded at Fr�rZ�seen component indices %s�,ASN.1 object %s has uninitialized components�	openTypes�user-specified open types map:� -> �decodeOpenTypes�%default open types map of component "�.�" governed by component "�":�/failed to resolve open type by governing value �resolved open type � by governing value r�+decoding type %r chosen by given `asn1Spec`)4rTr
�tagFormatConstructedrrr9r+r�r�r�rCrDrrE�clear�typeIdr�Sequence�Set�
componentType�hasOptionalOrDefaultr��tagMapUniquer3�
isOptional�isDefaulted�getTagMapNearPosition�
IndexError�getPositionByType�effectiveTagSet�getPositionNearTyper�r��requiredComponents�issubsetrjr(�hasOpenTypesr8�itemsr��
namedTypes�openType�getComponentByPosition�isValue�getComponentByName�name�KeyError�SetOf�
SequenceOf�asOctets�isInconsistent)rrrrrrrr r!rFrGr3�trailingr��	isSetType�isDeterministic�seenIndicesr�r�rmr��k�v�	namedType�governingValuer��containerValue�pos�containerElement�rest�
inconsistencys                               r"r#z,UniversalConstructedTypeDecoder.valueDecoder$s����!�9���#�":�":�:��#�#�$E�F�F��w��'��6�7�);�d���#��#�%�^�^�-�
��$�$�0�!�0�0�6�6�f�6�E�
�"�6�6��8S�8S�S�
��
�I�v�>�>���#9�4�#9�#9��$�#�y�$�<C�$� �J�����C��H�
�u�}�}�X�'>�G@�@�A��t�#�#��^�^�%�
������?�?�t�}�}�3�3�T�X�X�_�_�E�E�!�/�/�J� ���4�8�8�?�?�:�I�"+�m�S�J�4S�4S�0S�O���'�'�2�F�8�b�8�)�:M��:S�QS�:S�����%�K��C��!�$(�M��$.�$;�$;�M�
�*�,6�s�O�,F�,F�M�'��_�7�7�:�c�?�;V�;V�,6�,L�,L�S�,Q�M�-7�s�O�,F�,F�M�#,�D�-�"K�7�"K��	�4�&�:� �(�:�:�9�;T�;T�U��#�C��3�3�z�#��7R�7R�(�<�<�Y�=V�=V�X[�\���1�1���&+�#�e�2������$��q���O�R��/�+�=�>��!�4�4�=�=�k�J��+�+�%�'1�';�';�'D�'D�E�F�F��+�+� '���K�� <�I���<�=�$-�O�O�$5�5�D�A�q��a�� 3�4�5�!�G�K�K�0A�5�$I�.7�
�8M�8M�.N�=R�N�C��#,�#5�#5� (�(�3�3�J�<]�<]�^a�<b�<j�<j� (�-7�-J�-J� )� 2� 2� 7� 7�.�N�-�+4�^�+D��0 #� #�2:�N�%L�!M�.8�-N�-N�s�-S�N�-�4�4�$(�J�J�$5�$5�t���7M�7M�9O� O�>G�(6�>8�!D�$9�C�)9�7@�(6�s�(;�(D�(D�(F�7&�19�7&�=D�7&�O�I�t�
;D�N�3�$7�!D�3<�$.�$E�$E�c�$J�$S�$S�$U�3"�-5�3"�9@�3"��	�4�
!+� A� A�#�y� Q�{=R�r�4���3!+� 9� 9�
� �'�'�.�4���)"���)�J�����$�2�2�M���A�M�Q�R��C��"+�D�-�"K�7�"K��	�4��1�1���&+�#�e�2���q�����4����K&��#�/�/�DL�N�����t$,�-�#&�$'�/9�/C�/C�/L�/L�/8�~�~�/9�/C�/C�/L�/L�/8�/A�/A�/F�/F�)H�%I�1:�0B�0B�0H�0H�0J�%A���1�(+�!�Q�,?�(@�%A�!-�/8�/A�/A�.�/Q�H��'/�!-�'*�(+�:H�-K�)L�$,�	!-��%-�-�sD�(AV�V)�"V&�)BZ�	Y�Z�Y;�6Z�:Y;�;Z�Zc
�
�|djtjk7rtjd��|�^|�|j�}	nA|j�|jj|��}	n|j|jf}	||	||�S|�!|j|f||d�t|d����S|j�}	|	j�|jtjjtjjfv�r|	j }
|	jtjjk(}|xr
|
j"}t$r&t%d|xrdxsd	�d
|xrdxsd	�d|�d
��t'�}
d}|�r t)|
�|krd}na|r
|
j*}nR	|r|
|j,}n?|
|j.s|
|j0r|
j3|�}n|
|j,}|||fddi|��\}}|t6j8urn�|sZ|
rX|r|
j;|j<�}n:|
|j.s|
|j0r|
j?|j<|�}|	jA||ddd��|
jC|�|dz
}|r�� tjDd��t$rt%d|
z�|
�rO|
jFjI|
�s,tjd|	jJjLz��|
jN�r�|jQdi�}t$r3t%d�|jS�D]\}}t%|�d|����|s|jQdd��r�tU|
jV�D�]n\}}|jXs�|j.r|	j[|�j\s�<|	j_|jXj`�}	||}t$rt%d|�d |���|	j[|�}|jtjdjtjfjfvrDtU|�D]4\}}|||ji�fd!|it|d����\}}|||<�6��||	j[|�ji�fd!|it|d����\}}|t6j8us��]|	jA||���q|	|fS|	jj}|r|�|	|fS|j�}	|	j�|j }t$rt%d"|z�d}|rD|||fddi|��\}}|t6j8ur	|	|fS|	jA||ddd��|dz
}|r�DtjDd��#t4$rtjd|	����wxYw#tb$r�t$r�t%d|	jJjL�d|j`�d|	jJjL�d|jXj`�d�	�|jXjS�D]\}}t%|�d|����	|jX|}n%#tb$rt$rt%d|���YY��wxYwY���wxYw)#Nrr�r7r�T)rJr�r�rAr�r�r�r�r�rJFr�rZrpr�r�r�r�r�r�r�r�r�r�r�r�r�rr�)6rTr
r�rrr9r+r�r�r��dictr�r�rr�r�r�r�rCr�rDr�r3r�r�r�r�rrKr�r�r�r�r�rqr�r�rjr(r�r8r�r�r�r�r�r�r�r�r�r�r�r�r�)rrrrrrrr r!r3r�r�r�r�r�rmr�r�r�r�rr�rrrrrr�s                            r"r&z4UniversalConstructedTypeDecoder.indefLenValueDecoder�s����!�9���#�":�":�:��#�#�$E�F�F��#��#�%�^�^�-�
��$�$�0�!�0�0�6�6�f�6�E�
�"�6�6��8S�8S�S�
��
�I�v�>�>���)�4�)�)���"(�I���w��.��
�
�^�^�%�
������?�?�t�}�}�3�3�T�X�X�_�_�E�E�#�1�1�J�"�)�)�T�X�X�_�_�<�I�"+�m�S�J�4S�4S�0S�O���'�'�2�F�8�b�8�)�:M��:S�QS�:S�����%�K��C���z�?�c�)�#�H��)�6�6�H�
�*�'1�#��'A�'A�H�'��_�7�7�:�c�?�;V�;V�'1�'G�'G��'L�H�(2�#��'A�'A�H�(1��H�'_�t�'_�W^�'_�$�	�9�����/��&�:� �(�:�:�9�;T�;T�U��#�C��3�3�z�#��7R�7R�(�<�<�Y�=V�=V�X[�\���1�1���&+�#�e�2������$��q���Q�V�2�2�7�����/�+�=�>��!�4�4�=�=�k�J��+�+�,Z�]g�]q�]q�]z�]z�,z�{�{��*�*� '���K�� <�I���<�=�$-�O�O�$5�5�D�A�q��a�� 3�4�5�!�G�K�K�0A�5�$I�.7�
�8M�8M�.N�>V�N�C��#,�#5�#5� (�(�3�3�J�<]�<]�^a�<b�<j�<j� (�-7�-J�-J� )� 2� 2� 7� 7�.�N�-�+4�^�+D��0 #� #�2:�N�%L�!M�.8�-N�-N�s�-S�N�-�4�4�$(�J�J�$5�$5�t���7M�7M�9O� O�>G�(6�>8�!D�$9�C�)9�7@�(6�s�(;�(D�(D�(F�7&�19�7&�=A�'�TX�=Y�7&�O�I�t�
;D�N�3�$7�!D�3<�$.�$E�$E�c�$J�$S�$S�$U�3"�-5�3"�9=�g�PT�9U�3"��	�4�
$-�C�O�O�#C�$.�$E�$E�c�9�$U�}>V�F�9�$�$�E%/�$=�$=�M�$�+�+�@�9�$�$�;"���)�J�����$�2�2�M���A�M�Q�R��C��'0��M�'d�TX�'d�\c�'d�$�	�9�����/���9�$�$��1�1���&+�#�e�2���q�����2�2�7����_&��#�/�/�DN�P�����|$,�-�#&�$'�/9�/C�/C�/L�/L�/8�~�~�/9�/C�/C�/L�/L�/8�/A�/A�/F�/F�)H�%I�1:�0B�0B�0H�0H�0J�%A���1�(+�!�Q�,?�(@�%A�!-�/8�/A�/A�.�/Q�H��'/�!-�'*�(+�:H�-K�)L�$,�	!-��%-�-�sD�;AW�W;�"W8�;B[�Z+�*[�+[
�[�[
�
[�[)NNr')
r(r)r*r�r�r�r�r�r#r&r,r$r"r�r��s<����!��$�$�'%�T6:�26�I �X>B�:>�O%r$r�c�P�eZdZej�Zej�Zy)�SequenceOrSequenceOfDecoderN)r(r)r*rr�r�r�r�r,r$r"r	r	�s��(�4�=�=�?��,�T�_�_�.�r$r	c�.�eZdZej�Zy)�SequenceDecoderN)r(r)r*rr�r+r,r$r"rr�s��"�T�]�]�_�Nr$rc�.�eZdZej�Zy)�SequenceOfDecoderN)r(r)r*rr�r+r,r$r"r
r
����$�T�_�_�&�Nr$r
c�P�eZdZej�Zej�Zy)�SetOrSetOfDecoderN)r(r)r*rr�r�r�r�r,r$r"rr�s��#�4�8�8�:��'�T�Z�Z�\�r$rc�.�eZdZej�Zy)�
SetDecoderN)r(r)r*rr�r+r,r$r"rr�s���T�X�X�Z�Nr$rc�.�eZdZej�Zy)�SetOfDecoderN)r(r)r*rr�r+r,r$r"rr�s���T�Z�Z�\�Nr$rc�F�eZdZej�Z		dd�Z		dd�Zy)�
ChoiceDecoderNc���|d|||d}
}	|�|jj|��}n|j�}|r
||||�S|j|k(r-trtd|�d��||	|jfi|��\}}	n/trtd|�d��||	|j|||fi|��\}}	|j
}
trtd|�d|
���|j
|
|dddd��||
fS)	Nr7r�� as explicitly tagged CHOICE� as untagged CHOICE�decoded component �, effective tag set F�r�r�r��	innerFlag)r+r9rrC�componentTagMapr��setComponentByType)rrrrrrrr r!rFrGr3rmr�s              r"r#zChoiceDecoder.valueDecoder�s���w��'��6�7�);�d�����,�,�2�2�&�2�A�J�"���)�J���
�I�v�>�>�����&����I�J�'��j�0�0��4;��O�I�t�
���@�A�'��j�0�0�����)0��O�I�t�
$�3�3����	�?�[�\��%�%��Y�#��e��		&�	
��4��r$c�Z�|�|jj|��}	n|j�}	|r
||	||�S|	j|k(rktrtd|�d��|||	jj
fi|��\}
}||fddi|��\}}|tjurNtjd��trtd|�d��|||	jj
|||fi|��\}
}|
j}trtd|
�d	|���|	j||
d
d
d
d
��|	|fS)Nr7r�rrJTrprrrFr)r+r9rrCr�r�rrKrrr�r)
rrrrrrrr r!r3rmrLr�s
             r"r&z"ChoiceDecoder.indefLenValueDecoder
sU�����,�,�2�2�&�2�A�J�!���)�J���
�I�v�>�>�����&����I�J�#,��:�3�3�@�@�$�DK�$� �I�y�
$-��$�$(�$�,3�$� �I�y�����/��'�'�(K�L�L����@�A�#,��:�3�3�@�@����$�)0�$� �I�y�
$�3�3����	�?�[�\��%�%��Y�#��e��		&�	
��9�$�$r$r')r(r)r*r�Choicer+r#r&r,r$r"rr�s+�� �T�[�[�]�N�6:�26�, �^>B�:>�1%r$rc�F�eZdZej�Z		dd�Z		dd�Zy)�
AnyDecoderNc��|�d}	n:|jtjur||jv}	n||jk7}	|	rH|d}
|t|
�t|�z
z
}|
}tr!t
dtj|�z�|r!||j||tfi|��||�S|d|||d}}|j|||fi|��|fS)NT�
fullSubstratez&decoding as untagged ANY, substrate %s)rjr�TagMap�tagMaprrDrCrrEr=r:)
rrrrrrrr r!�
isUntaggedr%rFrGs
             r"r#zAnyDecoder.valueDecoderDs������J�
�
�
�6�=�=�
0��x���6�J� �8�?�?�2�J��#�O�4�M�
�c�-�(�3�y�>�9�9�F�%�I���<�u�}�}�Y�?W�W�X��� 5�� 5� 5�h��� [�SZ� [� )�6�3�
3��w��'��6�7�);�d��$�t�$�$�X�v�t�G�w�G��M�Mr$c��|�d}	n:|jtjur||jv}	n||jk(}	|	rt
}
trGt
d�n;|d}|dt|�}
tr!t
dtj|
�z�|j}|r@||jur2|j||tfi|��}|||
|z|t|
�z�Strt
d�|j}|r+|||f|dd�|��\}
}|
tjurn|
|
z
}
|r�+t!j"d��|r|
|fS|j|||
fi|��|fS)	NFzdecoding as tagged ANYr%z-decoding as untagged ANY, header substrate %srdTrorp)rjrr&r'rr
rCrDrrEr+r4r=r:rrKrrq)rrrrrrrr r!�isTaggedrvr%r3rms              r"r&zAnyDecoder.indefLenValueDecodercs������H�
�
�
�6�=�=�
0�����0�H�����0�H���F���,�-�$�O�4�M�#�#3�S��^�O�4�F���C�e�m�m�TZ�F[�[�\��&�&���L��0G�0G�G�.��.�.�x���T�G�T�J��
�F�Y�,>���V��@T�U�U���6�7��.�.���#,�Y��$G�:F�6:�$G�>E�$G� �I�y��C�O�O�+���i��F���.�.�3��
���9�$�$�)�4�(�(��6�6�M�W�M�y�X�Xr$r'rMr,r$r"r#r#As-���T�X�X�Z�N�6:�26�N�@>B�:>�<Yr$r#c�.�eZdZej�Zy)�UTF8StringDecoderN)r(r)r*r�
UTF8Stringr+r,r$r"r,r,�rr$r,c�.�eZdZej�Zy)�NumericStringDecoderN)r(r)r*r�
NumericStringr+r,r$r"r/r/����'�T�'�'�)�Nr$r/c�.�eZdZej�Zy)�PrintableStringDecoderN)r(r)r*r�PrintableStringr+r,r$r"r3r3����)�T�)�)�+�Nr$r3c�.�eZdZej�Zy)�TeletexStringDecoderN)r(r)r*r�
TeletexStringr+r,r$r"r7r7�r1r$r7c�.�eZdZej�Zy)�VideotexStringDecoderN)r(r)r*r�VideotexStringr+r,r$r"r:r:�s��(�T�(�(�*�Nr$r:c�.�eZdZej�Zy)�IA5StringDecoderN)r(r)r*r�	IA5Stringr+r,r$r"r=r=����#�T�^�^�%�Nr$r=c�.�eZdZej�Zy)�GraphicStringDecoderN)r(r)r*r�
GraphicStringr+r,r$r"rArA�r1r$rAc�.�eZdZej�Zy)�VisibleStringDecoderN)r(r)r*r�
VisibleStringr+r,r$r"rDrD�r1r$rDc�.�eZdZej�Zy)�GeneralStringDecoderN)r(r)r*r�
GeneralStringr+r,r$r"rGrG�r1r$rGc�.�eZdZej�Zy)�UniversalStringDecoderN)r(r)r*r�UniversalStringr+r,r$r"rJrJ�r5r$rJc�.�eZdZej�Zy)�BMPStringDecoderN)r(r)r*r�	BMPStringr+r,r$r"rMrM�r?r$rMc�.�eZdZej�Zy)�ObjectDescriptorDecoderN)r(r)r*r�ObjectDescriptorr+r,r$r"rPrP�s��,�V�,�,�.�Nr$rPc�.�eZdZej�Zy)�GeneralizedTimeDecoderN)r(r)r*r�GeneralizedTimer+r,r$r"rSrS�s��+�V�+�+�-�Nr$rSc�.�eZdZej�Zy)�UTCTimeDecoderN)r(r)r*r�UTCTimer+r,r$r"rVrV�s��#�V�^�^�%�Nr$rVNr�c�@�eZdZeZe�ZdZifd�Zddde	ddfd�Z
y)�DecoderTc�\�||_||_i|_i|_t	d�|_y)N)rr)�_Decoder__tagMap�_Decoder__typeMap�_Decoder__tagCache�_Decoder__tagSetCacher	�_Decoder__eooSentinel)rr'�typeMaps   r"�__init__zDecoder.__init__s,����
� ���������&�v�.��r$Nc�F�tr<tdtj|t|�tj|�fz�|jdd�}	|	tkDrtjdtz��|	dz|d<|jdd�}
|
rD|jr8|dd|jk(r&trtd	�tj|ddfSt}|j}|j }
|j"}|j$}|}|t&u�r�|t(urj|stj*d
��d}|d}|dd}	||}|� |r	||}nt3j6d|�}n||z}t8}trtd|z�|t8u�r5|stj*d��t/|d�}|dkrd}|}nl|dkDrc|dz}t;|d|dz�}t|�|k7r&tj*|�dt|��d|����d}|D]}|dz}||z}�|dz
}nd}d}||d}|dk(r!|jsGtjd��t|�|kr$tj*d|t|�z
z��t<}tr1td|tj|dk(xr|xs|d|�fz�|t<ur|�t>}nt@}|t>ur�	||}|rtB}n	||dd}|rtB}ntD}tr�td|xr|jFjHxsd�d |tBuxrd!xsd"���tjjK|duxrd#xs |jLjFjH�|t@u�r|jFtNjPur�	||}t�r$td$�|jRjU�D]*\}}td%|�d&|jFjH����,|jVrRtd'�|jVjU�D]*\}}td%|�d&|jFjH����,td(|duxrdxs|jY��d)|���nJ||jZk(s||j\vr+|}tr%td*|jFjHz�nd}|�@	|
|j^}trtd+|j^���|r	|}tB}ntD}nd}tD}tr~td|tBuxr|jFjHxsd�d-|tBuxrd!xsd"���tjjK|duxrd#xs|jFjH�|tBu�r|jd.d�s|sd/�}|jc|�0�|dk(r!jd||||t<||fi|��\}}n jf||||t<||fi|��\}}tr�td|jFjH�d1|jFjH�d2ti|tjjl�xr|jo�xs|�d3|xrtj|�xsd���t&}�n|tDur�|rM|djpt2jrk(r-|djtt2jvk7r
tx}tB}nd}|jz}tr;td|xr|jFjHxsd�d4|tBuxrd!xsd5���|t|ur:|j~}tr"td6|jFjHz�tB}|t�urtj|�d7|����|t&ur���tr:tjj�td8tjz�||fS#t,$r�t/|�}|dz}|d
z}|dz}|dk(rWd}d}d}		t/||�}|dz
}|dz}||dzz}|dzsn�'||d}n"#t0$rtj*d��wxYwt3j4|||��}|r|||<Y��xwxYw#t,$rt3j6d|�}|||<Y��|wxYw#t,$rd}Y��wxYw#t,$rd}Y��wxYw#t,$rd}Y��awxYw#t,$rnt3j6|jZj`|jZj`�}	||}trtd,|���n#t,$rd}YnwxYwY���wxYw)9NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %s�
_nestingLevelrz0ASN.1 structure nesting depth exceeds limit (%d)rZrJFr�zend-of-octets sentinel foundz"Short octet stream on tag decodingTr�� �r_r�r�z'Short octet stream on long tag decoding)�tagClassrT�tagIdr,z$tag decoded into %s, decoding lengthz%Short octet stream on length decoding�<z at r�r�z6Indefinite length encoding not supported by this codecz%d-octet shortz6value length decoded into %d, payload substrate is: %szcodec z<none>z% chosen by a built-in type, decoding r<zas explicit tag�?z!candidate ASN.1 spec is a map of:z  r�zbut neither of: znew candidate ASN.1 spec is z, chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z  chosen by ASN.1 spec, decoding �
recursiveFlagc��||d|fSr2r,)�ar��cs   r"�<lambda>z"Decoder.__call__.<locals>.<lambda>5s��A�q��!�u�:�r$)r%z
 yields type z	, value:
z
...remaining substrate is: z chosen, decoding z
as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)ArCr�scoperDrEr8�MAX_NESTING_DEPTHrr�pop�supportIndefLengthr_rrKr:r[r\r]r^�stStop�stDecodeTagrqr�rr�r
�Tagr��stDecodeLengthr�stGetValueDecoder�stGetValueDecoderByTag�stGetValueDecoderByAsn1Spec�
stDecodeValue�stTryAsExplicitTagrjr(�pushr+rr&�presentTypesr��	skipTypes�prettyPrintTyperr'r�r��updater&r#�
isinstancer�Asn1Item�prettyPrintrTr�rf�tagClassUniversal�explicitTagDecoder�defaultErrorState�stDumpRawValue�defaultRawDecoder�stErrorCondition) rrrrrrrr r!rcrJr<r'r`�tagCache�tagSetCacher%�
isShortTag�
firstOctet�lastTag�
integerTagrfrTrg�lengthOctetIdx�size�
encodedLength�lengthOctet�concreteDecoder�
chosenSpecr��
baseTagSets                                 r"�__call__zDecoder.__call__'s���
��i�mr�mx�mx�z�BE�FO�BP�RW�R_�R_�`i�Rj�mk�k�
l����O�Q�7�
��,�,��#�#�B�EV�V��
�$1�1�#4��� ��;�;�z�5�1����/�/���!�}�� 2� 2�2���6�7����	�!�"�
�5�5��������.�.���?�?���(�(��!�
��6�!���#� ��6�6�<���
"�
�&�q�\�
�%�a�b�M�	�$7�&�z�2�G�J�>�!�=�%0��%<�F�"%���B��!8��%�v�-�F�&����>��G�H���&� ��6�6�?���%�Y�q�\�2�
���#��D�'�F��#�%�%��,�D�$-�i��$��(�.C�$D�M��=�)�T�1�#�:�:�-1�3�}�3E�v�N����F�'4�.���1����+�-��.��A�I�D��D��F�%�d�e�,�	��R�<��2�2�#�/�/�0h�i�i��9�~��.�#�:�:�;K�v�X[�\e�Xf�Of�;g�h�h�)����P�TZ�\a�\i�\i�jp�tv�jv�kE�|E�k[�IR�SZ�TZ�I[�]\�T]�]�^��)�)��#�2�E�8�E�"�.�.�+�&,�V�n�O�
#�)�E�/�*0�����*<��
'� -�� 2����_�ND�ap�az�az�bD�bD�NP�HP�NP�RW�[h�Rh�Rt�mt�RI�xI�RI�J�K��K�K�$�$�_��%<�%D��%y��Hf�Hf�Hp�Hp�Hy�Hy�z��3�3��%�%����6�*�%-�f�%5�
�
��?�@�-5�-B�-B�-H�-H�-J�S�M�J���
�A�K�K�<P�<P� Q�R�S�$�-�-�� 2�3�19�1C�1C�1I�1I�1K�W�
�
�A� #�J����@T�@T�$U� V�W��j�\`�N`�Nm�em�ON�q{�rL�rL�rN�ON�PV�W�X��x���.�&�H�O�O�2K�!)�J���8�8�;M�;M�;V�;V�V�W�"&�J��)�3�*1�*�2C�2C�*D����^h�^o�^o� q�r�'�#-�� -��!3��'+�O�.�E����Q^�H^�IF�cr�c|�c|�dF�dF�IR�JR�IR�TY�]j�Tj�Tv�ov�TK�zK�TK�L�M��K�K�$�$�Z�4�%7�%?�C�%`�:�CW�CW�C`�C`�a��
�%��{�{�?�D�9�,�#=�L����]��;��R�<�'K��'K�'K�!�8���(9��l�(�"�	(�$�E�9�(D��'C�'C�!�8���(9��l�(�"�	(�$�E�9���`o�`y�`y�aC�aC�EJ�ET�ET�E]�E]�_i�jo�qu�q~�q~�_�_W�DI�DU�DU�DW�_`�[`�_`�bk�bH�pu�p}�p}�~G�pH�bT�LT�bT�U�V�����*�*���q�	�+�+�s�/G�/G�G��q�	�*�*�c�.C�.C�C�&8�O�)�E�'+�O� �2�2�E���/�:p�o�Ng�Ng�Np�Np�:|�t|�:|�D�HU�U�a�Za�q�eq�q�r�s���&�"&�"8�"8����9�O�<U�<U�<^�<^�^�_�%���(�(��'�'�06��A���{�6�!�B	��K�K�O�O���7�%�+�+�E�F��i����k �!7�!(��!4�J�)�D�0�H� *�T� 1�I�&��-�E���}�%*�
�)*�� !���"&�-4�Y�~�5N�-O�
� .�!� 3�� %�!��� %�*�t�*;� <��'1�D�'8�$)�
#'�)2�.�/�(B�I��)��"'�">�">� I�#����
"�g�g�!)�Y�e��G�"�/6���,��C!7��P (�=�%(�Z�Z��G�%<�F�6<�K�
�3�=��t �+�&*�O�+��$�/�*.��/��$$�*�%)�
�*��>$�3�%(�Z�Z�
�0A�0A�0I�0I�J�L]�L]�Le�Le�%f�
�3�.4�Z�.@�O�"� #��$U� V��'�3�.2�O�3��3�s��`#�c�+c3�:d�?d�2-d)�#.c�-b�?c�b�"c�c�$c0�/c0�3d�d�d�d�d&�%d&�)Af �1f�
f �f�f �f�f �f )r(r)r*r�r�r#r�rrrartr�r,r$r"rYrYs7��(��"�����(*�/�,0��T���d�H r$rY)p�pyasn1rr�pyasn1.codec.berr�pyasn1.compat.integerr�pyasn1.compat.octetsrrr	r
�pyasn1.typerrr
rrr�__all__�registerLoggeer(�
DEBUG_DECODERrCr:�objectrr�rpr0r@r�rPrXr]rtrzr~r�r�r�r	rr
rrrrr#r,r/r3r7r:r=rArDrGrJrMrPrSrVrVrr[rrrxr|r��
Enumeratedr�r�r�r!r-r0r4r8r;r>rBrErHrKrNrQrTrWr'r�r�r�rNr`�values�typeDecoderr+rj�rangertrvrwryrxr{rzr�r�rsrYr)�xs0r"�<module>r�s����� �,�D�D��������*���e���8�5�+>�+>�?��
�,�,��
e�f�
e�"#%����
)�O�
)� (H�.�(H�V(�)��O�*�O�*A�^�A�]X�,�]X�@@U�.�@U�F�'��*=M�3�=M�@hO�'�hO�V���M%�&@�M%�`/�"A�/�
%�1�%�'�3�'�*�7�*�
 �"� �
"�$�"�b%�.�b%�J^Y�&�^Y�D'�*�'�*�-�*�,�/�,�*�-�*�+�.�+�&�)�&�*�-�*�*�-�*�*�-�*�,�/�,�&�)�&�
/�0�/�.�/�.�&�'�&�
��L�L����)�
��L�L����)�
�	�N�N���+�-�
�	�����/�1�	
�
	�I�I���k�m�
�	��� � �"9�";�

�	�O�O���N�,�
�	�I�I���k�m�
�	�M�M���5�7�
�	�H�H�O�O�&�(�
�	�K�K���
��
�	�O�O���-�/�
�	�����3�5�
�	�����!7�!9�
� 	�����3�5�!
�"	����� 5� 7�#
�$	�N�N���+�-�%
�&	�����3�5������3�5������3�5������!7�!9��N�N���+�-�
���"�"�$;�$=�
���!�!�#9�#;�
�N�N���>�+�7
��@	�H�H�O�O�Z�\��J�J���|�~��M�M���/�+��O�O���-�/��K�K���
���H�H�O�O�Z�\�
���=�=�?�*�K��!�!�-��+�+�5�5�<�<����&��"7�)�G�F�O�	*� �R�y�!�!�A�!�		�����������W �f�W �X
���	!���_"s�,	W