+
     Ii  c                   sn   R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHt ^ RIHtHt ^ RIHtHtHtHtHtHt ]P.                  ! ]4      t]t ! R R4      tR tR t ! R	 R
]4      t ! R R4      t  ! R R] 4      t! ! R R]!4      t" ! R R]"4      t# ! R R] 4      t$ ! R R] 4      t% ! R R] 4      t& ! R R]&]$4      t' ! R R]&]!4      t( ! R R]&]%4      t) ! R R ]$4      t* ! R! R"] 4      t+ ! R# R$] 4      t, ! R% R&]+]$4      t- ! R' R(],]%4      t. ! R) R*]+]!4      t/R+]#R,]"R-]*R.]-R/]/R0]./t0R# )1a  Response parsers for the various protocol types.

The module contains classes that can take an HTTP response, and given
an output shape, parse the response into a dict according to the
rules in the output shape.

There are many similarities amongst the different protocols with regard
to response parsing, and the code is structured in a way to avoid
code duplication when possible.  The diagram below is a diagram
showing the inheritance hierarchy of the response classes.

::


                                +-------------------+
                                |   ResponseParser  |
                                +-------------------+
                                ^    ^    ^   ^   ^
                                |    |    |   |   |
                                |    |    |   |   +--------------------------------------------+
                                |    |    |   +-----------------------------+                  |
                                |    |    |                                 |                  |
           +--------------------+    |    +----------------+                |                  |
           |                         |                     |                |                  |
+----------+----------+       +------+-------+     +-------+------+  +------+-------+   +------+--------+
|BaseXMLResponseParser|       |BaseRestParser|     |BaseJSONParser|  |BaseCBORParser|   |BaseRpcV2Parser|
+---------------------+       +--------------+     +--------------+  +----------+---+   +-+-------------+
          ^         ^          ^           ^        ^        ^                  ^         ^
          |         |          |           |        |        |                  |         |
          |         |          |           |        |        |                  |         |
          |        ++----------+-+       +-+--------+---+    |              +---+---------+-+
          |        |RestXMLParser|       |RestJSONParser|    |              |RpcV2CBORParser|
    +-----+-----+  +-------------+       +--------------+    |              +---+---------+-+
    |QueryParser|                                            |
    +-----------+                                       +----+-----+
                                                        |JSONParser|
                                                        +----------+

The diagram above shows that there is a base class, ``ResponseParser`` that
contains logic that is similar amongst all the different protocols (``query``,
``json``, ``rest-json``, ``rest-xml``, ``smithy-rpc-v2-cbor``).  Amongst the various services
there is shared logic that can be grouped several ways:

* The ``query`` and ``rest-xml`` both have XML bodies that are parsed in the
  same way.
* The ``json`` and ``rest-json`` protocols both have JSON bodies that are
  parsed in the same way.
* The ``rest-json`` and ``rest-xml`` protocols have additional attributes
  besides body parameters that are parsed the same (headers, query string,
  status code).

This is reflected in the class diagram above.  The ``BaseXMLResponseParser``
and the BaseJSONParser contain logic for parsing the XML/JSON body,
and the BaseRestParser contains logic for parsing out attributes that
come from other parts of the HTTP response.  Classes like the
``RestXMLParser`` inherit from the ``BaseXMLResponseParser`` to get the
XML body parsing logic and the ``BaseRestParser`` to get the HTTP
header/status code/query string parsing.

Additionally, there are event stream parsers that are used by the other parsers
to wrap streaming bodies that represent a stream of events. The
BaseEventStreamParser extends from ResponseParser and defines the logic for
parsing values from the headers and payload of a message from the underlying
binary encoding protocol. Currently, event streams support parsing bodies
encoded as JSON and XML through the following hierarchy.


                                  +--------------+
                                  |ResponseParser|
                                  +--------------+
                                    ^    ^    ^
               +--------------------+    |    +------------------+
               |                         |                       |
    +----------+----------+   +----------+----------+    +-------+------+
    |BaseXMLResponseParser|   |BaseEventStreamParser|    |BaseJSONParser|
    +---------------------+   +---------------------+    +--------------+
                     ^                ^        ^                 ^
                     |                |        |                 |
                     |                |        |                 |
                   +-+----------------+-+    +-+-----------------+-+
                   |EventStreamXMLParser|    |EventStreamJSONParser|
                   +--------------------+    +---------------------+

Return Values
=============

Each call to ``parse()`` returns a dict has this form::

    Standard Response

    {
      "ResponseMetadata": {"RequestId": <requestid>}
      <response keys>
    }

    Error response

    {
      "ResponseMetadata": {"RequestId": <requestid>}
      "Error": {
        "Code": <string>,
        "Message": <string>,
        "Type": <string>,
        <additional keys>
      }
    }

N)ETreeXMLParseError)EventStreamNoInitialResponseError)CachedPropertyensure_booleanis_json_value_headerlowercase_dictmerge_dictsparse_timestampc                   s2   a  ] tR t^t o R tR tR tRtV tR# )ResponseParserFactoryc                s    / V n         R # N	_defaultsself   &5/usr/lib/python3.14/site-packages/botocore/parsers.py__init__ZResponseParserFactory.__init__   s	        c                s<    V P                   P                  V4       R# )a'  Set default arguments when a parser instance is created.

You can specify any kwargs that are allowed by a ResponseParser
class.  There are currently two arguments:

    * timestamp_parser - A callable that can parse a timestamp string
    * blob_parser - A callable that can parse a blob type

N)r   update)r   Zkwargss   &,r   set_parser_defaultsZ)ResponseParserFactory.set_parser_defaults   s     	f%r   c                s@    \         V,          pV! R/ V P                  B # )N )PROTOCOL_PARSERSr   )r   Zprotocol_nameZ
parser_cls   && r   create_parserZ#ResponseParserFactory.create_parser   s    %m4
+DNN++r   r   N)	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classdictcell____classdict__   @r   r
   r
      s     
&, ,r   r
   c                 s4    \        4       P                  V 4      # r   )r
   r   )Zprotocolr   r   r   r      s     "00::r   c                 s   a  V 3R  lpV# )c                 sd   < \        VR 4      '       d   VP                  pVf   RpMTpS! WV4      # )text )Zhasattrr#   )r   shapeZnode_or_stringr#   func   &&& r   _get_text_contentZ(_text_content.<locals>._get_text_content   s:    >6**!&&D| !DD&&r   r   )r&   r(   s   f r   _text_contentr)      s    
' r   c                   s    ] tR t^tRtR# )ResponseParserErrorr   N)r   r   r   r   r   r   r   r   r*   r*      s    r   r*   c                   s   a  ] tR t^t o RtRtRtRtRR ltR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ResponseParseraS  Base class for response parsing.

This class represents the interface that all ResponseParsers for the
various protocols must implement.

This class will take an HTTP response and a model shape and parse the
HTTP response into a dictionary.

There is a single public method exposed: ``parse``.  See the ``parse``
docstring for more info.

utf-8Nc                s    Vf   \         pWn        Vf   V P                  pW n        R V n        V P
                  e   V P                  W4      V n        R # R # r   )DEFAULT_TIMESTAMP_PARSER_timestamp_parser_default_blob_parser_blob_parser_event_stream_parserEVENT_STREAM_PARSER_CLS)r   timestamp_parserblob_parser   &&&r   r   ZResponseParser.__init__   sZ    #7!133K'$(!''3(,(D(D )D% 4r   c                s.    \         P                  ! V4      # r   )base64	b64decoder   value   &&r   r/   Z#ResponseParser._default_blob_parser   s     &&r   c                s   \         P                  RVR,          4       \         P                  RVR,          4       VR,          R8  df   V P                  V4      '       d   V P                  V4      pMMV P	                  V4      '       d   V P                  W4      pV# V P                  W4      pMV P                  W4      pV'       d$   VP                  P                  R4      '       d   V# \        V\        4      '       dK   VP                  R/ 4      pVR,          VR	&   VR,          p\        V4      VR
&   WCR&   V P                  W4       V# )a  Parse the HTTP response given a shape.

:param response: The HTTP response dictionary.  This is a dictionary
    that represents the HTTP request.  The dictionary must have the
    following keys, ``body``, ``headers``, and ``status_code``.

:param shape: The model shape describing the expected output.
:return: Returns a dictionary representing the parsed response
    described by the model.  In addition to the shape described from
    the model, each response will also have a ``ResponseMetadata``
    which contains metadata about the response, which contains at least
    two keys containing ``RequestId`` and ``HTTPStatusCode``.  Some
    responses may populate additional keys, but ``RequestId`` will
    always be present.

zResponse headers: %rheaderszResponse body:
%rbodystatus_codei-  eventstreamResponseMetadataZHTTPStatusCodeZHTTPHeaders)LOGdebug_is_generic_error_response_do_generic_error_parse_is_modeled_error_shape_do_modeled_error_parse_do_error_parse	_do_parseserializationget
isinstanceZdictr   _add_checksum_response_metadata)r   responser%   parsedresponse_metadatar;      &&&   r   parseZResponseParser.parse   s(   " 			((9*=>		&(89M"c)..x8855h?--e4455hF--h>^^H4F U((,,];;M fd## &

+=r B2:=2I./ y)G/=g/Fm,):%&00Mr   c                s    VP                  R / 4      P                  R/ 4      pVP                  R4      pV'       d   WBR&   R# R# )contextZchecksumZresponse_algorithmZChecksumAlgorithmNrI   )r   rL   rN   Zchecksum_contextZ	algorithm   &&&  r   rK   Z.ResponseParser._add_checksum_response_metadata  sB    #<<	26:::rJ$(()=>	5>12 r   c                sR    VR J;'       d    VP                   P                  RR4      # )N	exceptionF)metadatarI   )r   r%   r:   r   rD   Z&ResponseParser._is_modeled_error_shape%  s&    D KKU^^%7%7U%KKr   c                s    VR ,          R8  dL   RV9  g   VR,          f   R# VR,          P                  4       pVP                  R4      ;'       g    V'       * # R# )r=   i  r<   NTs   <html>)strip
startswith)r   rL   r<   r   r   rB   Z)ResponseParser._is_generic_error_response(  sW     M"c)X%&)9)AF#))+D??9-99T9 *r   c                s    \         P                  R 4       RR\        VR,          4      R\        P                  P
                  P                  VR,          R4      /R/ /# )zlReceived a non protocol specific error response from the service, unable to populate error code and message.ErrorCoder=   Messager$   r?   )r@   rA   strhttpclient	responsesrI   r   rL   r:   r   rC   Z&ResponseParser._do_generic_error_parse;  sd     			B	

 H]344;;0044]+R 
 	
r   c                F    \        V P                  P                   R 24      h)z
._do_parseNotImplementedError	__class__r   r   rL   r%   r5   r   rG   ZResponseParser._do_parseL  s    !T^^%<%<$=Z"HIIr   c                r`   )z._do_error_parsera   rd   r5   r   rF   ZResponseParser._do_error_parseO  s     !T^^%<%<$==M"NOOr   c                r`   )z._do_modeled_error_parsera   )r   rL   r%   rM      &&&&r   rE   Z&ResponseParser._do_modeled_error_parseR  s%    !~~&&''?@
 	
r   c                sZ    \        V R VP                   2V P                  4      pV! W4      # )Z_handle_)Zgetattr	type_name_default_handle)r   r%   nodeZhandler   &&& r   _parse_shapeZResponseParser._parse_shapeW  s2    HU__-.0D0D
 u##r   c                s    . pVP                   pV F:  pVf   VP                  R 4       K  VP                  V P                  WE4      4       K<  	  V# r   )memberappendrj   )r   r%   rh   rM   member_shapeitemrO   r   _handle_listZResponseParser._handle_list]  sM     ||D |d#d//CD  r   c                    V# r   r   r   r%   r9   r5   r   rg   ZResponseParser._default_handlek  s    r   c                sr    V P                   pVR ,          P                  R4      p\        VR,          W#V4      # )rQ   Zoperation_namer<   )r1   rI   r   )r   rL   r%   parsernamerS   r   _create_event_streamZ#ResponseParser._create_event_streamn  s7    **	"&&'788F+UDAAr   c                s&    \        V4      ^ ,          # i    )listr8   r:   r   _get_first_keyZResponseParser._get_first_keys  s    E{1~r   c                s   VP                   '       d   VP                  4       pVP                  R R4       VP                  4        UUu/ uF  w  rEVf   K  WEbK  	  ppp\	        V4      ^8w  d   Rp\        WaP                  ,          4      hV P                  V4      pVP                   Uu. uF0  pVP                  V,          P                  P                  RV4      NK2  	  p	pWy9  d   \        P                  RV4       R# R# u uppi u upi )__typeNCInvalid service response: %s must have one and only one member set.rs   zqReceived a tagged union response with member unknown to client: %s. Please upgrade SDK for full response support.TF)is_tagged_unioncopypopitemslenr*   rs   rw   membersrH   rI   r@   Zinfo)
r   r%   r9   cleaned_valuekv	error_msgtagrk   Zserialized_member_names
   &&&       r    _has_unknown_tagged_union_memberZ/ResponseParser._has_unknown_tagged_union_memberv  s      !JJLMh-!.!4!4!6!6!!6   =!Q&&  *)jj*@AA%%m4C $mm'+F f%3377G+ $ ' 1D
 +'s   DD*6Dc                s    R RV//# )ZSDK_UNKNOWN_MEMBERrs   r   )r   r   r:   r   #_handle_unknown_tagged_union_memberZ2ResponseParser._handle_unknown_tagged_union_member  s    $vsm44r   c                s    VR,          pVP                  R4      p\        V4      ^8X  d7   V^ ,          '       d(   WR,          R&   V^,          VR,          R&   V^ ,          # V# )z
Error response may contain an x-amzn-query-error header to translate
errors codes from former `query` services into other protocols. We use this
to do our lookup in the errorfactory for modeled errors.
x-amzn-query-errorZ;rX   ZQueryErrorCodeZType)splitr~   )r   coder;   errorZquery_errorZquery_error_components   &&&&  r    _do_query_compatible_error_parseZ/ResponseParser._do_query_compatible_error_parse  si     23!,!2!23!7%&!+0Fq0I0I/3'N+,%;A%>E'N6")!,,r   )r0   r1   r.   )headerr;   
statusCodeNN)r   r   r   r   __doc__DEFAULT_ENCODINGr2   KNOWN_LOCATIONSr   r/   rP   rK   rD   rB   rC   rG   rF   rE   rj   ro   rg   rt   rw   r   r   r   r   r   r    r"   r   r+   r+      s      "
 :O'/b?L:&
"JP

$B
65 r   r+   c                   s   a a ] tR tRt oRV 3R lltR tR tV 3R ltR tR t	R t
R	 tR
 tR t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]t]t]tRtVtV ;t# )BaseXMLResponseParseri  c                s\   < \         SV `  W4       \        P                  ! R 4      V n        R# )z{.*}N)superr   reZcompile_namespace_re)r   r3   r4   rc      &&&r   r   ZBaseXMLResponseParser.__init__  s"    )7ZZ/r   c                s   / pVP                   pVP                  pVP                  P                  R 4      ;'       g    RpVP                  P                  R 4      ;'       g    RpVP                  P                  R4      '       d   \	        V\
        4      '       g   V.pV F`  pV FR  p	V P                  V	4      p
W8X  d   V P                  WI4      pK-  W8X  d   V P                  WY4      pKF  \        RV
 24      h	  XVX&   Kb  	  V# )rs   keyr9   	flattenedzUnknown tag: )	r   r9   rH   rI   rJ   rv   	_node_tagrj   r*   )r   r%   rh   rM   	key_shapevalue_shapeZkey_location_nameZvalue_location_nameZkeyval_nodeZsingle_pairZtag_nameZkey_nameZval_names   &&&          r   _handle_mapZ!BaseXMLResponseParser._handle_map  s    II	kk%3377?HH5)77;;FCNNw"";//
48N8N6DK*>>+60#00HH4#00JH-hZ.HII  +  (F8   r   c                sN    V P                   P                  R VP                  4      # r$   )r   subr   )r   rh   r:   r   r   ZBaseXMLResponseParser._node_tag  s    !!%%b$((33r   c                s   < VP                   P                  R 4      '       d   \        V\        4      '       g   V.p\        SV `  W4      # )r   )rH   rI   rJ   rv   r   ro   )r   r%   rh   rc   r   r   ro   Z"BaseXMLResponseParser._handle_list  s?     "";//
48N8N6Dw#E00r   c                s   / pVP                   pVP                  P                  R R4      '       d   V P                  V4      pV P	                  V4      pV P                  W4      '       d#   V P                  V4      pV P                  V4      # V EF@  pWG,          pVP                  P                  R4      p	WP                  9   g"   VP                  P                  R4      '       d   KZ  V P                  W4      p
VP                  V
4      pVe   V P                  W4      W7&   K  VP                  P                  R4      '       g   K  / pVP                  R,          pVP                  P                  4        FB  w  rV P                  P                  VP!                  R4      ^ ,          R,           V4      pWV&   KD  	  W9   g   EK6  W,          W7&   EKC  	  V# )rT   FlocationeventheaderZxmlAttributers   :)r   rU   rI   _get_error_root_build_name_to_xml_noder   rw   r   rH   r   _member_key_namerj   Zattribr}   r   r   r   )r   r%   rh   rM   r   xml_dictr   member_namerm   r   Zxml_namemember_nodeZattribsZlocation_namer   r9   Znew_keys   &&&              r   _handle_structureZ'BaseXMLResponseParser._handle_structure  s   -->>k511''-D//500AA%%h/C;;C@@"K"/L#1155jAH000--11-@@ ,,\GH",,x0K&&*&7&7 '# ++//?? , : :6 B"&++"3"3"5JC"0044%++C03c93G (-G$	 #6
 !+*1*@F'3 #4 r   c                sx    V P                  V4      R 8X  d$   V F  pV P                  V4      R8X  g   K  Vu # 	  V# )ZErrorResponserX   r   )r   original_rootchildr   r   r   Z%BaseXMLResponseParser._get_error_root  s;    >>-(O;&>>%(G3 L ' r   c                s   VP                   R 8X  dM   VP                  P                  R4      '       d,   VP                  P                  P                  R4      pVe   V# VP                  P                  R4      pVe   V# V# )rv   r   rs   )rf   rH   rI   rk   )r   r%   r   Zlist_member_serialized_nameZserialized_namerS   r   r   Z&BaseXMLResponseParser._member_key_name  sz    
 ??f$)<)<)@)@)M)M*/,,*D*D*H*H+' +622--11&9&""r   c                s4   \        V\        4      '       d   V P                  V^ ,          4      # / pV Fa  pV P                  V4      pWB9   dD   \        W$,          \        4      '       d   W$,          P	                  V4       KO  W$,          V.W$&   K]  W2V&   Kc  	  V# ru   )rJ   rv   r   r   rl   )r   Zparent_noder   rn   r      &&   r   r   Z-BaseXMLResponseParser._build_name_to_xml_node  s     k4((//A??D..&C
 hmT22M((. &.]D$9HM $   r   c                s     \         P                  ! \         P                  ! 4       V P                  R 7      pVP	                  V4       VP                  4       pV#   \         d   p\        RT RT 24      hRp?ii ; i))ZtargetZencodingzUnable to parse response (z6), invalid XML received. Further retries may succeed:
N)r    Z	XMLParserZTreeBuilderr   ZfeedZcloser   r*   )r   
xml_stringrr   rooter   r   _parse_xml_string_to_domZ.BaseXMLResponseParser._parse_xml_string_to_dom  s    
	__((*T5J5JF KK
#<<>D   	%,QC 0GGQlT 	s   AA A;%A66A;c                s    VP                  4        FJ  w  r#\        V4      '       d'   V P                  V4      pV P                  V4      W&   K<  VP                  W&   KL  	  V# r   )r}   rv   r   _replace_nodesr#   )r   rM   r   r9   Zsub_dictr   r   r   Z$BaseXMLResponseParser._replace_nodes,  sQ     ,,.JCE{{77>"11(;#jj ) r   c                s    VR 8X  d   R# R# )ZtrueTFr   r   r%   r#   r5   r   _handle_booleanZ%BaseXMLResponseParser._handle_boolean5  s    6>r   c                    \        V4      # r   floatr   r5   r   _handle_floatZ#BaseXMLResponseParser._handle_float<  s    T{r   c                $    V P                  V4      # r   r.   r   r5   r   _handle_timestampZ'BaseXMLResponseParser._handle_timestamp@  s    %%d++r   c                r   r   intr   r5   r   _handle_integerZ%BaseXMLResponseParser._handle_integerD  s    4yr   c                rp   r   r   r   r5   r   _handle_stringZ$BaseXMLResponseParser._handle_stringH  s    r   c                r   r   r0   r   r5   r   _handle_blobZ"BaseXMLResponseParser._handle_blobL  s      &&r   )r   r   )r   r   r   r   r   r   r   ro   r   r   r   r   r   r   r)   r   r   r   r   r   r   Z_handle_character_handle_double_handle_longr   r   __classcell__rc   r!      @@r   r   r     s     0*41#J .     , ,     ' ' '"N"LLr   r   c                   sH   a  ] tR tRt o R tR tR tR
R ltR tR t	Rt
V tR	# )QueryParseriU  c                s   VR ,          pV P                  V4      pV P                  V4      pV P                  V4       RV9   d!   VP                  VP	                  R4      4       RV9   d   RVP	                  R4      /VR&   V# )r<   Errors	RequestIdr?   )r   r   r   r   r|   )r   rL   r%   xml_contentsr   rM   rO   r   rF   ZQueryParser._do_error_parseV  s    ',,\:--d3F# vMM&**X./& *5vzz+7N)OF%&r   c                (    V P                  WR R7      # )Finject_metadata_parse_body_as_xmlrd   r5   r   rE   Z#QueryParser._do_modeled_error_parsef  s    &&x&NNr   c                r   )Tr   r   rd   r5   r   rG   ZQueryParser._do_parsei  s    &&x&MMr   c                s   VR ,          pV P                  V4      p/ pVeH   TpRVP                  9   d$   V P                  VP                  R,          V4      pV P                  W'4      pV'       d   V P	                  WV4       V# )r<   ZresultWrapper)r   rH   _find_result_wrapped_shaperj   _inject_response_metadata)r   rL   r%   r   r   r   rM   Zstarts   &&&&    r   r   ZQueryParser._parse_body_as_xmll  s    ',,\:E%"5"5577''8$ &&u4F**48r   c                s4    V P                  V4      pW1,          # r   )r   )r   Zelement_nameZxml_root_nodemappingri   r   r   Z&QueryParser._find_result_wrapped_shape{  s    ..}=$$r   c                s    V P                  V4      pVP                  R 4      pVe?   V P                  V4      pVP                  4        F  w  rgVP                  WV&   K  	  WRR &   R# R# )r?   N)r   rI   r}   r#   )r   rh   inject_intor   
child_nodeZsub_mappingr   r9      &&&     r   r   Z%QueryParser._inject_response_metadata  sf    ..t4[[!34
!66zBK)//1
#(::  2.9*+	 "r   r   N)T)r   r   r   r   rF   rE   rG   r   r   r   r   r   r    r"   r   r   r   U  s*      ON%: :r   r   c                   s>   a a ] tR tRt oR tV 3R ltR tRtVtV ;t	# )EC2QueryParseri  c                sx    V P                  V4      pVP                  R 4      pVe   RVP                  /VR&   R# R# )Z	requestIdNr   r?   )r   rI   r#   )r   rh   r   r   r   rS   r   r   Z(EC2QueryParser._inject_response_metadata  s?    ..t4[[-
!/:JOO.LK*+ "r   c                s`   < \         SV `  W4      pR V9   d   RVP                  R 4      /VR&   V# )Z	RequestIDr   r?   )r   rF   r|   )r   rL   r%   Zoriginalrc   r'   r   rF   ZEC2QueryParser._do_error_parse  s>     7*8;("X\\+6,H'( r   c                s    V F@  pV P                  V4      R 8X  g   K  V F  pV P                  V4      R8X  g   K  Vu u # 	  KB  	  V# )r   rX   r   )r   r   r   Zerrors_child   &&  r   r   ZEC2QueryParser._get_error_root  sF    "E~~e$0$)L~~l3w>++ %* #
 r   r   )
r   r   r   r   r   rF   r   r   r   r   r   r   r   r   r     s     M( r   r   c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )BaseJSONParseri  c                s   / pVP                   '       d   TpV# VP                  pVf   R # / pV P                  W4      '       d#   V P                  V4      pV P	                  V4      # V FX  pWF,          pVP
                  P                  RV4      pVP                  V4      p	V	f   K>  V P                  WF,          V	4      W6&   KZ  	  V# )Nrs   )Zis_document_typer   r   rw   r   rH   rI   rj   )
r   r%   r9   final_parsedmember_shapesr   r   rm   Z	json_nameZ	raw_valuer   r   r   Z BaseJSONParser._handle_structure  s    !!! L( % "MMM} L44UBB))%0??DD,,9(66::6;O	!IIi0	(040A0A%2I1L-  - r   c                s    / pVP                   pVP                  pVP                  4        F+  w  rbV P                  WF4      pV P                  WR4      pWV&   K-  	  V# r   )r   r9   r}   rj   )	r   r%   r9   rM   r   r   r   Z
actual_keyZactual_values	   &&&      r   r   ZBaseJSONParser._handle_map  sZ    II	kk++-JC**9:J,,[@L!-: ( r   c                r   r   r   rq   r5   r   r   ZBaseJSONParser._handle_blob  s      ''r   c                r   r   r   rq   r5   r   r   Z BaseJSONParser._handle_timestamp  s    %%e,,r   c                s    V P                  VR ,          4      pRRRRR/R/ /pVR,          pVP                  RVP                  RR4      4      VR,          R&   VP                  R4      pTP                  R	T;'       d    \        V4      4      pVee   R
V9   d   VP                  R
^4      ^ ,          pRV9   d   VP	                  R^4      ^,          pRV9   d   V P                  WuV4      pWtR,          R&   V P                  WAR,          4       V# )r<   rX   rZ   r$   rY   r?   r;   messager=   rx   r   #r   )_parse_body_as_jsonrI   r[   r   rsplitr   r   )r   rL   r%   r<   r   r;   response_coder   r   r   rF   ZBaseJSONParser._do_error_parse  s   ''(899b&"57I2N9% %)HHtxx	2.%
gy!
 !]3xx-"F"FC4FG d{zz#q)!,d{{{3*1-#w.<<5 &*'N6"&&uy.ABr   c                sP    R V9   d   VR ,          VP                  R/ 4      R&   R# R# )x-amzn-requestidr?   r   N)
setdefault)r   rM   r;   r5   r   r   Z(BaseJSONParser._inject_response_metadata  s0    (EL"FF0"5kB )r   c                s    V'       g   / # VP                  V P                  4      p \        P                  ! V4      pV#   \         d    R T/u # i ; i)r   )decoder   jsonloadsZ
ValueError)r   body_contentsr<   original_parsedr   r   r   Z"BaseJSONParser._parse_body_as_json  sU    I##D$9$9:	%"jj.O"" 	% t$$	%s   ? AAr   N)r   r   r   r   r   r   r   r   rF   r   r   r   r   r    r"   r   r   r     s.     2(-"H
% 
%r   r   c                   s   a  ] tR tRt o ^t^t]R 4       tR tR t	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tRtV tR# )BaseCBORParseri  c                s    ^ V P                   ^V P                  ^V P                  ^V P                  ^V P                  ^V P
                  ^V P                  ^V P                  /# ru   )_parse_unsigned_integer_parse_negative_integer_parse_byte_string_parse_text_string_parse_array
_parse_map
_parse_tag_parse_simple_and_floatr   r   r    major_type_to_parsing_method_mapZ/BaseCBORParser.major_type_to_parsing_method_map  sb     t++t++t&&t&&t  ttt++	
 		
r   c                sV    \         P                  ! \         P                  ! V4      4      # r   )ioZBufferedReaderZBytesIO)r   bytesr:   r   get_peekable_stream_from_bytesZ-BaseCBORParser.get_peekable_stream_from_bytes  s      E!233r   c                s    V P                  V^4      pV^,	          pV^,          pW0P                  9   d   V P                  V,          pV! W4      # \        RV RV 24      h)   z8Unsupported inital byte found for data item- Major type:z, Additional info: )_read_bytes_as_intr   r*   )r   streaminitial_byteZ
major_typeadditional_infoZmethods   &&    r   parse_data_itemZBaseCBORParser.parse_data_item"  sx     ..vq9!Q&
 '3>>>:::FF&22%(\)<"#% r   c                s    ^^^^^^^^/pV^8  d   V# W#9   d   W2,          pV P                  W4      # \        RV 24      h)i   zhInvalid CBOR integer returned from the service; unparsable additional info found for major type 0 or 1: )r   r*   )r   r   r   Zadditional_info_to_num_bytes	num_bytesrS   r   r   Z&BaseCBORParser._parse_unsigned_integer7  sl    	(
$ R""<4EI**6==%@@O?PR r   c                s2    RV P                  W4      ,
          # )r   )r   r   r   r   r5   r   r   Z&BaseCBORParser._parse_negative_integerL  s    D00IIIr   c                sZ   W P                   8w  d#   V P                  W4      pV P                  W4      # . p V P                  V4      '       d   MNV P	                  V^4      pV^,          pV P                  W4      pVP                  V P                  W4      4       Kg  RP                  V4      # )Tr   )INDEFINITE_ITEM_ADDITIONAL_INFOr   _read_from_stream_handle_break_coder   rl   Zjoin)r   r   r   lengthZchunksr   rO   r   r   Z!BaseCBORParser._parse_byte_stringP  s    BBB11&JF))&99F**622#66vqA".";55fNd44VDE88F##r   c                sB    V P                  W4      P                  R 4      # )r,   )r   r   r   r5   r   r   Z!BaseCBORParser._parse_text_string`  s    &&v?FFwOOr   c                s   W P                   8w  d;   V P                  W4      p\        V4       Uu. uF  q@P                  V4      NK  	  up# . pV P	                  V4      '       g#   VP                  V P                  V4      4       K9  V# u upi r   )r   r   ranger   r  rl   )r   r   r   r  _r}   rO   r   r   ZBaseCBORParser._parse_arrayd  sx    BBB11&JF:?-H-Q((0-HHE--f55T11&9:L Is   Bc                s    / pW P                   8w  d7   V P                  W4      p\        V4       F  pV P                  W4       K  	  V# V P	                  V4      '       g   V P                  W4       K*  V# r   )r   r   r  _parse_key_value_pairr  )r   r   r   r}   r  r  rO   r   r   ZBaseCBORParser._parse_mapo  sj    BBB11&JF6]**69 #L --f55**69Lr   c                s^    V P                  V4      pV P                  V4      pVe   WBV&   R # R # r   )r   )r   r   r}   r   r9   rS   r   r  Z$BaseCBORParser._parse_key_value_pair|  s4    ""6*$$V,#J r   c                s    V P                  W4      pV P                  V4      pV^8X  d   V P                  V4      # \        RV 24      h)r   z*Found CBOR tag not supported by botocore: )r   r   _parse_datetimer*   )r   r   r   r   r9   rS   r   r   ZBaseCBORParser._parse_tag  sQ    **6C$$V,!8''..%<SEB r   c                sx    \        V\        \        34      '       d   V P                  V4      # \	        R V 24      h)z Unable to parse datetime value: )rJ   r   r   r.   r*   r8   r:   r   r  ZBaseCBORParser._parse_datetime  s;    ec5\**))%00%25': r   c                s    ^R^R^R^R/pW#9   d	   W2,          # ^R^R^R/pW$9   d7   WB,          w  rV\         P                  ! WPP                  W4      4      ^ ,          # \        RV R24      h)	i   FTNz0Invalid additional info found for major type 7: zI.  This indicates an unsupported simple type or an indefinite float value)z>ei   )z>fi   )z>di   )structZunpackr   r*   )r   r   r   Zadditional_info_simple_valuesZfloat_formatsZfloat_formatr      &&&    r   r   Z&BaseCBORParser._parse_simple_and_float  s     	)
% ;0AA
 			
 +&3&D#L==44VG  ">>O PU V
 	
r   c                s    \         P                  VP                  ^4      R,          R4      V P                  8X  d#   VP	                  ^\
        P                  4       R# R# )r   :Nr   NbigTN)r   
from_bytesZpeek
BREAK_CODEZseekosZSEEK_CUR)r   r   r:   r   r  Z!BaseCBORParser._handle_break_code  sA    >>&++a.,e4GKK2;;' Hr   c                sP    V P                  W4      p\        P                  VR 4      # )r	  )r   r   r
  )r   r   r   Zbyteri   r   r   Z!BaseCBORParser._read_bytes_as_int  s#    %%f8~~dE**r   c                s^    VP                  V4      p\        V4      V8w  d   \        R 4      hV# )zgEnd of stream reached; this indicates a malformed CBOR response from the server or an issue in botocore)Zreadr~   r*   )r   r   r   r9   ri   r   r   Z BaseCBORParser._read_from_stream  s5    I&u:"%$ 
 r   r   N)r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r   r   r   r   r    r"   r   r   r     su     &(#J

 

4**J$ P
D
+ r   r   c                   s>   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	BaseEventStreamParseri  c                s`   / pVP                   P                  R 4      '       dQ   VR,          P                  R4      pVP                  P                  V4      pV'       d   V P                  W4      W4&   V# V P	                  WVP                  V4       V P                  WVP                  V4       V# )r>   r;   z:event-type)rH   rI   r   rG   _parse_non_payload_attrs_parse_payload)r   rL   r%   r   Z
event_typeZevent_shaperO   r   rG   ZBaseEventStreamParser._do_parse  s    ""=11!),00?J--++J7K+/>>,( 	 )) Mr   c                s   VR ,          P                  R4      pVP                  P                  V4      pVeT   V P                  VR,          4      pV P                  WE4      pRRVRVP                  RVP                  RR4      4      //pV# RRVR ,          P                  RR4      RVR ,          P                  R	R4      //pV# )
r;   z:exception-typer<   rX   rY   rZ   r   r$   z:error-codez:error-message)rI   r   _initial_body_parserj   )r   rL   r%   Zexception_typeZexception_shaper   r<   r   r   r   rF   Z%BaseEventStreamParser._do_error_parse  s    !),001BC--++N;&"66x7GHO$$_FDNtxx	488Ir3JKE  HY/33M2Fx	2667GLE r   c                s
   VP                   P                  R 4      '       d   V F  pW5,          pVP                   P                  R4      '       g   K.  VR,          pVP                  R8X  d   TpMOVP                  R8X  d   VP                  V P                  4      pM"V P                  V4      p	V P                  Wi4      pWV&    R# 	  V P                  VR,          4      p
V P                  W*4      pVP                  V4       R# R# )eventZeventpayloadr<   blobstringN)rH   rI   rf   r   r   r  rj   r   )r   rL   r%   r   r   rs   rm   r<   Zparsed_bodyZ	raw_parser   body_parseds   &&&&&       r   r  Z$BaseEventStreamParser._parse_payload  s    ""7++%,2--11.AA#F+D#--7&*%//8;&*kk$2G2G&H$($<$<T$B	&*&7&7(' *5& &  #66x7GHO++ECK,' ,r   c                s    VR ,          pV Fk  pW6,          pVP                   P                  R4      '       g   K.  We9   g   K6  WV,          pVP                  R8X  d   V P                  VR,          4      pWV&   Km  	  R# )r;   r   Z	timestampg     @@N)rH   rI   rf   r.   )	r   rL   r%   r   r   r;   rs   rm   r9   s	   &&&&&    r   r  Z.BaseEventStreamParser._parse_non_payload_attrs  so     9%!D(.L))--m<<?#ME#--< !% 6 6uv~ F).& "r   c                    \        R 4      hr  rb   r   r   r:   r   r  Z)BaseEventStreamParser._initial_body_parse      
 ""788r   r   N)r   r   r   r   rG   rF   r  r  r  r   r   r    r"   r   r  r    s#      *-,/9 9r   r  c                   &   a  ] tR tRt o R tRtV tR# )EventStreamJSONParseri"  c                $    V P                  V4      # r   r   r  r:   r   r  Z)EventStreamJSONParser._initial_body_parse#      ''66r   r   Nr   r   r   r   r  r   r   r    r"   r   r  r  "  s     7 7r   r  c                   r  )EventStreamXMLParseri'  c                `    V'       g   \         P                  ! R 4      # V P                  V4      # r   r    ZElementr   r   r   r:   r   r  Z(EventStreamXMLParser._initial_body_parse(  %    ==$$,,Z88r   r   Nr  r    r"   r   r   r   '  s     9 9r   r   c                   r  )EventStreamCBORParseri.  c                sT    VR 8X  d   / # V P                  V P                  V4      4      # r   )r   r   r  r:   r   r  Z)EventStreamCBORParser._initial_body_parse/  s0    CI##//>
 	
r   r   Nr  r    r"   r   r%  r%  .  s     
 
r   r%  c                   s>   a  ] tR tRt o ]t R tR tR tR t	Rt
V tR# )
JSONParseri7  c                s    / pVeA   VP                   pV'       d   V P                  WV4      pMV P                  VR,          V4      pV P                  W1R,          4       V# )Nr<   r;   )event_stream_name_handle_event_stream_handle_json_bodyr   )r   rL   r%   rM   
event_namerS   r   rG   ZJSONParser._do_parse<  s\    00J228JO//0@%H&&v	/BCr   c                s4    V P                  VR ,          V4      # )r<   )r*  rd   r5   r   rE   Z"JSONParser._do_modeled_error_parseG  s    %%hv&6>>r   c                s    VP                   V,          pV P                  W4      p VP                  4       pT P                  TP                  T4      pYXT&   T#   \         d    R p\	        T4      hi ; iz,First event was not of type initial-response)r   rt   get_initial_responser   r*   r*  payload	r   rL   r%   r+  Zevent_stream_shapeZevent_streamr  r   rM   	   &&&&     r   r)  ZJSONParser._handle_event_streamJ  sz    "]]:600N	1 557E ''u=)z & 	1FI%i00	1s   A A1c                sF    V P                  V4      pV P                  W#4      # r   )r   rj   )r   Zraw_bodyr%   Zparsed_jsonri   r   r*  ZJSONParser._handle_json_bodyV  s%     ..x8  44r   r   N)r   r   r   r   r  r2   rG   rE   r)  r*  r   r   r    r"   r   r'  r'  7  s'     32	?
5 5r   r'  c                   sh   a a ] tR tRt oR tR tR tR tR tR t	R t
R	 tR
 tV 3R ltRtVtV ;t# )BaseRestParseri^  c                sV    / pV P                  V4      VR &   V P                  WV4       V# )r?   )_populate_response_metadata_add_modeled_parser   rL   r%   r   ri   r   rG   ZBaseRestParser._do_parse_  s8    +/+K+K,
'( 	>r   c                sr    Vf   V# VP                   pV P                  WWC4       V P                  WWC4       R # r   )r   r  r  )r   rL   r%   r   r   s   &&&& r   r3  Z!BaseRestParser._add_modeled_parseg  s;    =%%]	
 	H]Ir   c                .    / pV P                  WV4       V# r   r3  r4  ri   r   rE   Z&BaseRestParser._do_modeled_error_parsep      >r   c                s    / pVR ,          pRV9   d   VR,          VR&   V# RV9   d"   VR,          VR&   VP                  RR4      VR&   V# )r;   r   r   x-amz-request-id
x-amz-id-2r$   HostIdrR   r   rL   rU   r;   r   r   r2  Z*BaseRestParser._populate_response_metadatau  sf    9%($+,>$?H[!   7*$+,>$?H[! ")\2!>HXr   c                s>   R VP                   9   d   VP                   R ,          pW5,          pVP                   P                  R4      '       d   V P                  W4      pWtV&   R# VP                  R9   dA   VR,          p\	        V\
        4      '       d   VP                  V P                  4      pWtV&   R# V P                  VR,          4      pV P                  Wh4      WE&   R# V P                  VR,          4      pV P                  W(4      p	VP                  V	4       R# )r.  r>   r<   N)r  r  )rH   rI   rt   rf   rJ   r   r   r   r  rj   r   )
r   rL   r%   r   r   Zpayload_member_nameZ
body_shaper<   r   r  
   &&&&&     r   r  ZBaseRestParser._parse_payload  s    +++ #("5"5i"@&;J''++M::00F4801%%);;'dE**;;t'<'<=D4801"&":":8F;K"L484E4E51 #66x7GHO++ECK,r   c                s   VR ,          pV F  pW6,          pVP                   P                  R4      pVf   K,  VR8X  d   V P                  WqR,          4      WF&   KO  VR 8X  d   V P                  Wu4      WF&   Kk  VR8X  g   Kt  VP                   P                  RV4      p	W9   g   K  V P                  WuV	,          4      WF&   K  	  R# )r;   r   Nr   r=   r   rs   )rH   rI   rj   _parse_header_map)
r   rL   r%   r   r   r;   rs   rm   r   header_namer<  r   r  Z'BaseRestParser._parse_non_payload_attrs  s     9%!D(.L#1155jAH\)%)%6%6 ="9&" Y&%)%;%; &" X%*88<<VTJ))-):):$k&:*L&! "r   c                s    / pVP                   P                  R R4      P                  4       pV FB  pVP                  4       P                  V4      '       g   K*  V\	        V4      R pW%,          W6&   KD  	  V# )rs   r$   N)rH   rI   ZlowerrW   r~   )r   r%   r;   rM   Zprefixr>  rs   r  r   r=  Z BaseRestParser._parse_header_map  sq     $$((4::<"K  "--f55 #3v;=1&3 # r   c                r  r  r  r  r:   r   r  Z"BaseRestParser._initial_body_parse  r  r   c                s    Tp\        V4      '       dF   \        P                  ! V4      P                  V P                  4      p\
        P                  ! V4      pV# r   )r   r6   r7   r   r   r   r   )r   r%   r9   rM   ZdecodedrS   r   r   ZBaseRestParser._handle_string  sF    &&&&u-44T5J5JKGZZ(Fr   c                s   < VP                   P                  R 4      pVR8X  dD   \        V\        4      '       g.   VP	                  R4       Uu. uF  qDP                  4       NK  	  pp\        SV `  W4      # u upi )r   r   Z,)rH   rI   rJ   rv   r   rV   r   ro   )r   r%   rh   r   r   rc   s   &&&  r   ro   ZBaseRestParser._handle_list  sb    &&**:6x
4(>(>'+zz#7!GGID7w#E00 8s   A6r   )r   r   r   r   rG   r3  rE   r2  r  r  r=  r  r   ro   r   r   r   r   r   r   r1  r1  ^  s=     J
-2091 1r   r1  c                   r   )BaseRpcV2Parseri  c                s    / pVeP   VP                   pV'       d   V P                  WV4      pM/ pV P                  WV4       V P                  V4      VR&   V# )Nr?   )r(  r)  r  r2  )r   rL   r%   rM   r(  rS   r   rG   ZBaseRpcV2Parser._do_parse  si     % 7 7 22%6 ##HV<)-)I)I*F%& r   c                s6    Vf   V# V P                  WV4       R # r   )r  r4  re   r   r3  Z"BaseRpcV2Parser._add_modeled_parse  s    =H\:r   c                r5  r   r6  r4  ri   r   rE   Z'BaseRpcV2Parser._do_modeled_error_parse  r7  r   c                sB    / pVR ,          pRV9   d   VR,          VR&   V# )r;   r   r   r   r;  r   r   r2  Z+BaseRpcV2Parser._populate_response_metadata  s.    9%($+,>$?H[!r   c                s   / pVP                   pVP                  '       dy   VP                  4       pVP                  R R4       VP	                  4        UUu/ uF  w  rgVf   K  WgbK  	  ppp\        V4      ^8w  d   Rp\        WP                  ,          4      hV F5  p	WI,          p
VP                  V	4      pVf   K"  V P                  W4      W9&   K7  	  V# u uppi )rx   Nry   )
r   rz   r{   r|   r}   r~   r*   rs   rI   rj   )r   r%   rh   rM   r   r   r   r   r   r   rm   r   s   &&&         r   r   Z!BaseRpcV2Parser._handle_structure  s    --    IIKMh-!.!4!4!6!6!!6   =!Q&&  *)jj*@AA"K"/L((;/K&&*&7&7 '#	 # !s   C#Cc                sz    V P                  VR ,          4      pV P                  W$4      pVP                  V4       R# )r<   N)r  rj   r   )r   rL   r%   r   r   r  r   r   r  ZBaseRpcV2Parser._parse_payload  s5    228F3CD''?K(r   c                r  r  r  r  r:   r   r  Z#BaseRpcV2Parser._initial_body_parse  r  r   r   N)r   r   r   r   rG   r3  rE   r2  r   r  r  r   r   r    r"   r   r?  r?    s-      ;

0)
9 9r   r?  c                   s\   a a ] tR tRt o]tR tV 3R ltR tR t	R t
R t]
t]tRtVtV ;t# )	RestJSONParseri  c                r  r   r  r  r:   r   r  Z"RestJSONParser._initial_body_parse   r  r   c                sH   < \         SV `  W4      pV P                  W14       V# r   )r   rF   _inject_error_code)r   rL   r%   r   rc   r'   r   rF   ZRestJSONParser._do_error_parse#  s%    '80r   c                s   V P                  VR ,          4      pRpRVR,          9   d   VR,          R,          pM0RV9   g   RV9   d#   VP                  RVP                  RR4      4      pVf   R# \        V\        4      '       d1   VP	                  R^4      ^ ,          P                  R^4      R
,          pWAR	,          R&   R# )r<   Nzx-amzn-errortyper;   r   rY   r$   r   r   rX   r   )r  rI   rJ   r[   r   r   )r   r   rL   r<   r   rS   r   rA  Z!RestJSONParser._inject_error_code(  s     ''(89)!44I&'9:Dt^v~88FDHHVR$89D<dC  ::c1%a(//Q7;D!%gvr   c                r   r   )r   rq   r5   r   r   ZRestJSONParser._handle_boolean7  s    e$$r   c                r   r   r   rq   r5   r   r   ZRestJSONParser._handle_integer:  s    5zr   c                r   r   r   rq   r5   r   r   ZRestJSONParser._handle_float=  s    U|r   r   )r   r   r   r   r  r2   r  rF   rA  r   r   r   r   r   r   r   r   r   r   r   r@  r@    s7     37
&% #L"NNr   r@  c                   s6   a  ] tR tRt o ]tR tR tR tRt	V t
R# )RpcV2CBORParseriD  c                sX    VR 8X  d   V# V P                  V4      pV P                  V4      # r&  )r   r   )r   r   Zbody_contents_streamr   r   r  Z#RpcV2CBORParser._initial_body_parseG  s8    C  #BB 
 ##$899r   c           	     s   V P                  VR ,          4      pRRVP                  RVP                  RR4      4      RR/R/ /pVR,          pVP                  R4      pVf!   VP                  R	4      pVe   \        V4      pVee   R
V9   d   VP                  R
^4      ^ ,          pRV9   d   VP	                  R^4      ^,          pRV9   d   V P                  WeV4      pWdR,          R&   RV9   d   VR,          VP                  R/ 4      R&   V# )r<   rX   rZ   r   r$   rY   r?   r;   rx   r=   r   r   r   r   r   )r  rI   r[   r   r   r   r   )r   rL   r%   r<   r   r;   r   r   r   r   rF   ZRpcV2CBORParser._do_error_parseO  s#   ''(89488Itxx	2/FG 
 9%xx!<$LL7M(=)d{zz#q)!,d{{{3*1-#w.<<5 &*'N6"(DK"EE/4[A r   c                s    VP                   V,          pV P                  W4      p VP                  4       pT P                  TP                  4      pYXT&   T#   \         d    R p\	        T4      hi ; ir,  )r   rt   r-  r   r*   r  r.  r/  r0  r   r)  Z$RpcV2CBORParser._handle_event_streamo  sx    "]]:600N	1 557E ))%--8)z & 	1FI%i00	1s   A A0r   N)r   r   r   r   r%  r2   r  rF   r)  r   r   r    r"   r   rB  rB  D  s      3:@
 
r   rB  c                   sX   a a ] tR tRt o]tR tR tR tR t	]
V 3R l4       tRtVtV ;t# )RestXMLParseri|  c                r!  r   r"  r#  r:   r   r  Z!RestXMLParser._initial_body_parse  r$  r   c                s    VR ,          '       d    V P                  V4      # V P	                  V4      #   \         d    \        P                  RRR7        L5i ; i)r<   z2Exception caught when parsing error response body:T)Zexc_info)_parse_error_from_bodyr*   r@   rA   _parse_error_from_http_statusrd   r5   r   rF   ZRestXMLParser._do_error_parse  s`     F228<< 11(;; ' 		H!  s   3 "AAc           
     s    R R\        VR,          4      R\        P                  P                  P	                  VR,          R4      /RRVR,          P	                  RR4      R	VR,          P	                  R
R4      //# )rX   rY   r=   rZ   r$   r?   r   r;   r8  r:  r9  )r[   r\   r]   r^   rI   r_   r:   r   rE  Z+RestXMLParser._parse_error_from_http_status  s    H]344;;0044]+R Xi0445GL(9-11,C!
 	
r   c                sv   VR ,          pV P                  V4      pV P                  V4      pV P                  V4       VP                  R8X  d<   V P	                  V4      pVP                  RR4       VP                  RR4       RVRV/# RV9   d   RVP                  R4      /VR&   RRRRR//p\        Wd4       V# )r<   rX   r   r$   r:  r?   rZ   rY   )r   r   r   r   r2  r|   r   )r   rL   r   r   rM   rU   Zdefaults   &&     r   rD  Z$RestXMLParser._parse_error_from_body  s    ',,\:--d3F#88w 77AH
 JJ{B'JJx$V%7BBF"*5vzz+7N)OF%&YFB78G$r   c                s&   < \         SV `  W4      pV# r   )r   r   )r   r%   r#   rc   r   r   r   ZRestXMLParser._handle_string  s    w%e2r   r   )r   r   r   r   r   r2   r  rF   rE  rD  r)   r   r   r   r   r   r   r   rC  rC  |  s8     29
<6
.   r   rC  Zec2Zqueryr   z	rest-jsonzrest-xmlzsmithy-rpc-v2-cbor)1r   r6   Zhttp.clientr\   r   r   Zloggingr  r   r  Zbotocore.compatr    r   Zbotocore.eventstreamr   r   Zbotocore.utilsr   r   r   r   r   r	   Z	getLoggerr   r@   r-   r
   r   r)   Z	Exceptionr*   r+   r   r   r   r   r   r  r  r   r%  r'  r1  r?  r@  rB  rC  r   r   r   r   <module>rF     s  kZ   	   	 	  0 D  !* , ,*;*	) 	\ \~n#N n#b1:' 1:h![ !H^%^ ^%B~^ ~BP9N P9f71> 7
902G 9
1> 
$5 $5Nu1^ u1pD9n D9N$#^^ $#N5o~ 5pKN$9 K^ 
>[
J/ r   