Ë
    Ü_Ëi©ï  ã                  óª	  — U d Z ddlmZ ddlZddlZddlZddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZ ddlZddlmZmZmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
l m!Z! 	 ddl"m#Z# dZ$ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1 e
rddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z= dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJeAdeBd eCd!iZKd"d#d$d%d&œZL ed'¬(«      ZMd)eNd*<   d„d+„ZO	 	 	 	 	 	 d…d,„ZPd†d-„ZQd†d.„ZR	 	 	 	 	 	 	 	 d‡d/„ZSdd0d1d2d3d4œZTd5d6d7d8d9d:d;d<d=d>d>d?d@œZU	 	 	 dˆ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‰dA„ZV	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŠdB„ZW ej°                  dC«      j²                  ZZdDZ[	 	 	 	 	 	 	 	 d‹dE„Z\ ej°                  dF«      j²                  Z]dŒdG„Z^ ej°                  dH«      j²                  Z_ ej°                  dI«      j²                  Z` ej°                  dJ«      j²                  Za	 	 	 	 	 	 	 	 	 	 	 	 d�dK„Zb	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŽdL„Zc	 	 	 	 	 	 	 	 	 	 	 	 d�dM„Zde$re#jÊ                  Zd	 d�	 	 	 	 	 	 	 	 	 	 	 	 	 d‘dN„Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d’dO„Zf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d“dP„Zg	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d”dQ„Zhe$re#jÒ                  Zh	 d�	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d•dR„Zj ej°                  dS«      j²                  Zkd–dT„Zl	 	 	 	 	 	 	 	 	 	 d—dU„Zm	 	 	 	 	 	 	 	 d˜dV„Zne$re#jÞ                  Zn	 d�	 	 	 	 	 	 	 	 	 d™dW„ZpeAdXeBdYeCdZiZq G d[„ d\«      Zr G d]„ d^er«      Zs G d_„ d`es«      Ztdšda„ZudbZv	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d›dc„Zw	 	 	 	 	 	 	 	 	 	 	 	 	 	 dœdd„Zxe$re#jð                  Zx	 	 	 	 	 	 	 	 	 	 	 	 	 	 d�de„Zy	 	 	 	 	 	 	 	 	 	 	 	 	 	 d�df„Zze$re#jô                  Zz	 	 	 	 	 	 	 	 	 	 	 	 	 	 dždg„Z{ G dh„ dier«      Z|djZ}	 	 	 	 	 	 	 	 	 	 	 	 dŸdk„Z~	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dl„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¡dm„Z€	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¢dn„Z�	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¢do„Z‚	 	 	 	 	 	 	 	 	 	 	 	 d£dp„Zƒ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¤dq„Z„e$re#�j                  Z„	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¥dr„Z… G ds„ dt«      Z† G du„ dv«      Z‡e†�j                  e†�j                  e‡�j                  e‡�j                  iZŠdweNdx<    G dy„ dz«      Z‹ G d{„ d|«      ZŒ G d}„ d~e‹«      Z� G d„ d€eŒ«      ZŽ G d�„ d‚e�edƒf   «      Z�y# e%$ r dZ$Y �Œjw xY w)¦zâTools for creating `messages
<https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/>`_ to be sent to
MongoDB.

.. note:: This module is for internal use and is generally not needed by
   application developers.
é    )ÚannotationsN)ÚBytesIO)	ÚTYPE_CHECKINGÚAnyÚCallableÚIterableÚMappingÚMutableMappingÚNoReturnÚOptionalÚUnion)ÚCodecOptionsÚ_dict_to_bsonÚ_make_c_string)ÚInt64)Ú_RAW_ARRAY_BSON_OPTIONSÚDEFAULT_RAW_BSON_OPTIONSÚRawBSONDocumentÚ_inflate_bson)ÚHelloCompat)Ú_EventListeners)Ú	_cmessageTF)ÚConfigurationErrorÚCursorNotFoundÚDocumentTooLargeÚExecutionTimeoutÚInvalidOperationÚNotPrimaryErrorÚOperationFailureÚProtocolError)ÚReadPreferenceÚ_ServerMode)ÚSnappyContextÚZlibContextÚZstdContext)ÚReadConcern)Ú_AddressÚ_AgnosticClientSessionÚ_AgnosticConnectionÚ_AgnosticMongoClientÚ_DocumentOutiÿÿÿi   €iþ?  é   é   ó    ó   ó    s     ó       s           s       ÿÿÿÿs   documents     s   updates     s   deletes     Ú	documentsÚupdatesÚdeletesÚops)ÚinsertÚupdateÚdeleteÚ	bulkWriteÚreplace)Úunicode_decode_error_handlerzCodecOptions[Mapping[str, Any]]Ú_UNICODE_REPLACE_CODEC_OPTIONSc                 ó>   — t        j                  t        t        «      S )z(Generate a pseudo random 32 bit integer.)ÚrandomÚrandintÚ	MIN_INT32Ú	MAX_INT32© r.   úR/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/message.pyÚ_randintrD   t   s   € ä�>‰>œ)¤YÓ/Ð/r.   c                óª   — |j                   }|j                  }|r8|t        j                  j                   k7  st	        |«      dkD  rd| vrd| i} || d<   | S )z-Add $readPreference to spec when appropriate.r,   ú$queryú$readPreference)ÚmodeÚdocumentr!   ÚSECONDARY_PREFERREDÚlen)ÚspecÚread_preferencerH   rI   s       rC   Ú_maybe_add_read_preferencerN   y   s`   € ð ×Ñ€DØ×'Ñ'€Hñ �œ×;Ñ;×@Ñ@Ò@ÄCÈÃMÐTUÒDUØ˜4ÑØ˜dÐ#ˆDØ"*ˆÐÑØ€Kr.   c                óF   — t        | «      | j                  j                  dœS )z<Convert an Exception into a failure document for publishing.)ÚerrmsgÚerrtype)ÚstrÚ	__class__Ú__name__©Ú	exceptions    rC   Ú_convert_exceptionrW   ‹   s   € ä˜)“n°×1DÑ1D×1MÑ1MÑNÐNr.   c                ó\   — t        | «      | j                  | j                  j                  dœS )zmConvert an Exception into a failure document for publishing,
    for use in client-level bulk write API.
    )rP   ÚcoderQ   )rR   rY   rS   rT   rU   s    rC   Ú_convert_client_bulk_exceptionrZ   �   s+   € ô
 �i“.Ø—‘Ø×&Ñ&×/Ñ/ñð r.   c                ó  — |j                  dd«      }d|dœ}|j                  d|j                  dd«      «      }|rG|j                  d«      r|d	dd
idœ|d<   n*d|j                  dd«      |dœ}d|v r|d   |d<   |g|d<   |S | dk(  rt        |d   «      |d<   |S | dk(  rbd|v rd|d   dœg|d<   |S |j                  d«      du r=|dk(  r8|d   d   }|d   j                  d|d   j                  d«      «      }d|dœg|d<   |S )z6Convert a legacy write result to write command format.Únr   r,   )Úokr\   rP   ÚerrÚ Úwtimeouté@   T)rP   rY   ÚerrInfoÚwriteConcernErrorrY   é   )ÚindexrY   rP   rb   ÚwriteErrorsr6   r2   r7   Úupserted)re   Ú_idÚupdatedExistingFr3   Úurh   Úq)ÚgetrK   )	Ú	operationÚcommandÚresultÚaffectedÚresrP   Úerrorr7   rh   s	            rC   Ú_convert_write_resultrs   ›   sU  € ð
 �z‰z˜#˜qÓ!€HØ˜Ñ
"€CØ�Z‰Z˜ &§*¡*¨U°BÓ"7Ó8€FÙà�:‰:�jÔ!Ø28À"ÐR\Ð^bÐQcÑ'dˆCÐ#Ò$ð  ¨¯©°F¸AÓ)>È&ÑQˆEØ˜FÑ"Ø#)¨)Ñ#4��iÑ Ø"' ˆC�ÑØˆJØ�HÒä�w˜{Ñ+Ó,ˆˆC‰ð €Jð 
�hÒ	Ø˜ÑØ)*°6¸*Ñ3EÑFÐGˆC�
‰Oð €Jð �Z‰ZÐ)Ó*¨eÑ3¸ÀAºð ˜YÑ'¨Ñ*ˆFØ˜‘+—/‘/ %¨°©¯©¸Ó)?Ó@ˆCØ)*°3Ñ7Ð8ˆC�
‰OØ€Jr.   rd   é   é    é€   )ÚtailableÚoplogReplayÚnoCursorTimeoutÚ	awaitDataÚallowPartialResultsÚfilterÚsortÚhintÚcommentÚmaxScanÚ	maxTimeMSÚmaxÚminÚ	returnKeyÚshowRecordIdÚsnapshot)rF   z$orderbyz$hintz$commentz$maxScanz
$maxTimeMSz$maxz$minz
$returnKeyz$showRecordIdz$showDiskLocz	$snapshotc                ó|  — d| i}d|v rr|j                  |j                  «       D ��cg c]  \  }}|t        v rt        |   |fn||f‘Œ c}}«       d|v r|j                  d«       d|v r|j                  d«       n||d<   |r||d<   |r||d<   |rt	        |«      |d<   |d	k  rd
|d<   |r||k(  r|dz  }||d<   |j
                  r|	r|	j                  s|j                  |d<   |r||d<   |
�|
|d<   |r>|j                  t        j                  «       D ��cg c]  \  }}||z  sŒ|d
f‘Œ c}}«       |S c c}}w c c}}w )z!Generate a find command document.ÚfindrF   ú$explainrG   r|   Ú
projectionÚskipÚlimitr   TÚsingleBatchr,   Ú	batchSizeÚreadConcernÚ	collationÚallowDiskUse)	r7   ÚitemsÚ
_MODIFIERSÚpopÚabsÚlevelÚin_transactionrI   Ú_OPTIONS)ÚcollrL   rŠ   r‹   rŒ   Ú
batch_sizeÚoptionsÚread_concernr�   ÚsessionÚallow_disk_useÚcmdÚkeyÚvalÚopts                  rC   Ú_gen_find_commandr£   Ø   sk  € ð " 4˜.€CØ�4ÑØ�
‰
ð !%§
¡
£÷á�C˜ð +.´Ñ*;”˜C‘ #Ñ&À#ÀsÀÑKóô	
ð ˜ÑØ�G‰G�JÔØ Ñ#Ø�G‰GÐ%Õ&àˆˆH‰áØ&ˆˆLÑÙØˆˆF‰ÙÜ˜5“zˆˆG‰Ø�1Š9Ø!%ˆC�ÑÙð �JÒØ˜!‰OˆJØ%ˆˆKÑØ×Ò¡7¨w×/EÒ/EØ)×2Ñ2ˆˆMÑÙØ$ˆˆKÑØÐ!Ø,ˆˆNÑÙØ�
‰
´·±Ó0@×R¡H C¨ÀGÈcÃM�S˜$’KÓRÔSà€JùóGùóB Ss   §!D2
ÄD8
Ä"D8
c                óX   — | |dœ}|r||d<   |�||d<   |�|j                   dk\  r||d<   |S )z$Generate a getMore command document.)ÚgetMoreÚ
collectionrŽ   r�   é	   r   )Úmax_wire_version)Ú	cursor_idr™   rš   Úmax_await_time_msr   ÚconnrŸ   s          rC   Ú_gen_get_more_commandr¬     sL   € ð '0¸tÑD€CÙØ%ˆˆKÑØÐ$Ø,ˆˆKÑØÐ˜t×4Ñ4¸Ò9Ø ˆˆI‰Ø€Jr.   z<iiiiiiBé   c           
     ó®   — |j                  |«      }t        «       }t        t        t	        |«      z   |dd| t	        |«      |j
                  «      }|||z   fS )zDTakes message data, compresses it, and adds an OP_COMPRESSED header.r   iÜ  )ÚcompressrD   Ú_pack_compression_headerÚ_COMPRESSION_HEADER_SIZErK   Úcompressor_id)rm   ÚdataÚctxÚ
compressedÚ
request_idÚheaders         rC   Ú	_compressr¸   &  s]   € ð —‘˜dÓ#€JÜ“€Jä%Ü ¤3 z£?Ñ2ØØ	ØØÜˆD‹	Ø×Ñó€Fð �v 
Ñ*Ð*Ð*r.   z<iiiic                óX   — t        «       }t        dt        |«      z   |d| «      }|||z   fS )ztTakes message data and adds a message header based on the operation.

    Returns the resultant message string.
    rt   r   )rD   Ú_pack_headerrK   )rm   r³   ÚridÚmessages       rC   Ú__pack_messager½   <  s2   € ô
 ‹*€CÜ˜2¤ D£	™>¨3°°9Ó=€GØ�˜$‘ÐÐr.   z<iz<IBz<Bc                óŠ  — t        |d|«      }t        | d«      }t        |«      }d}|r|�}t        d«      }	t	        |«      }
|D �cg c]  }t        |d|«      ‘Œ }}t        |
«      t        d„ |D «       «      z   dz   }t        |«      }||z  }t        d„ |D «       «      }|||	||
g|¢}n||g}dj                  |«      ||fS c c}w )zäGet a OP_MSG message.

    Note: this method handles multiple documents in a type one payload but
    it does not perform batch splitting and the total message size is
    only checked *after* generating the entire message.
    Fr   r,   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­w©N©rK   ©Ú.0Údocs     rC   ú	<genexpr>z$_op_msg_no_header.<locals>.<genexpr>a  s   è ø€ Ò!C¨s¤# c§(Ñ!Cùó   ‚é   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÀ   rÁ   rÂ   s     rC   rÅ   z$_op_msg_no_header.<locals>.<genexpr>d  s   è ø€ Ò<¨œ3˜sŸ8Ñ<ùrÆ   r.   )	r   Ú_pack_op_msg_flags_typerK   Ú
_pack_byter   ÚsumÚ	_pack_intr‚   Újoin)Úflagsrn   Ú
identifierÚdocsÚoptsÚencodedÚ
flags_typeÚ
total_sizeÚmax_doc_sizeÚtype_oneÚcstringrÄ   Úencoded_docsÚsizeÚencoded_sizer³   s                   rC   Ú_op_msg_no_headerrÛ   K  sÞ   € ô ˜G U¨DÓ1€GÜ(¨°Ó2€JÜ�W“€JØ€LÙ�dÐ&Ü˜a“=ˆÜ  Ó,ˆØCGÖH¸Cœ c¨5°$Õ7ÐHˆÐHÜ�7‹|œcÑ!C°lÔ!CÓCÑCÀaÑGˆÜ  “ˆØ�dÑˆ
ÜÑ<¨|Ô<Ó<ˆØ˜G X¨|¸WÐTÀ|ÐT‰à˜GÐ$ˆØ�8‰8�D‹>˜: |Ð3Ð3ùò Is   ÁC c                óT   — t        | ||||«      \  }}}t        d||«      \  }	}|	|||fS )zInternal OP_MSG message helper.éÝ  )rÛ   r¸   )
rÎ   rn   rÏ   rÐ   rÑ   r´   ÚmsgrÔ   Úmax_bson_sizer»   s
             rC   Ú_op_msg_compressedrà   k  s@   € ô &7°u¸gÀzÐSWÐY]Ó%^Ñ"€Cˆ�]Ü˜˜s CÓ(�H€CˆØ��Z Ð.Ð.r.   c                óR   — t        | ||||«      \  }}}t        d|«      \  }}	||	||fS )z*Internal compressed OP_MSG message helper.rÝ   )rÛ   r½   )
rÎ   rn   rÏ   rÐ   rÑ   r³   rÔ   rß   r¶   Ú
op_messages
             rC   Ú_op_msg_uncompressedrã   y  s?   € ô '8¸¸wÈ
ÐTXÐZ^Ó&_Ñ#€Dˆ*�mÜ+¨D°$Ó7Ñ€J�
Ø�z :¨}Ð<Ð<r.   c                óP  — ||d<   |�d|vr|j                   r|j                  |d<   t        t        |«      «      }	 t        |   }|j                  |«      }	 |rt        | |||||«      |r|||<   S S t        | ||||«      |r|||<   S S # t        $ r d}d}Y ŒAw xY w# |r|||<   w w xY w)zGet a OP_MSG message.ú$dbNrG   r_   )	rH   rI   ÚnextÚiterÚ
_FIELD_MAPr”   ÚKeyErrorrà   rã   )	rÎ   rn   ÚdbnamerM   rÑ   r´   ÚnamerÏ   rÐ   s	            rC   Ú_op_msgrì   Š  sä   € ð €GˆE�NàÐ"Ð'8ÀÑ'Gà×ÒØ)8×)AÑ)AˆGÐ%Ñ&Ü”�W“Ó€DðÜ Ñ%ˆ
Ø�{‰{˜:Ó&ˆð'ÙÜ% e¨W°jÀ$ÈÈcÓRñ Ø"&ˆG�JÒð ô $ E¨7°JÀÀdÓKñ Ø"&ˆG�JÒð øô ò Øˆ
ØŠðûñ Ø"&ˆG�JÒð ús#   ¼B ÁB Á1B ÂBÂBÂ
B%c                ó
  — t        |d|«      }|rt        |d|«      }nd}t        t        |«      t        |«      «      }	dj                  t	        | «      t        j                  |«      t	        |«      t	        |«      ||g«      |	fS )zGet an OP_QUERY message.Fr.   )r   r‚   rK   rÍ   rÌ   Úbsonr   )
r›   Úcollection_nameÚnum_to_skipÚnum_to_returnÚqueryÚfield_selectorrÑ   rÒ   Úefsrß   s
             rC   Ú_query_implrõ   ª  sˆ   € ô ˜E 5¨$Ó/€GÙÜ˜N¨E°4Ó8‰àˆÜœ˜G›¤c¨#£hÓ/€Mà�‰ä˜'Ó"Ü×#Ñ# OÓ4Ü˜+Ó&Ü˜-Ó(ØØðó		
ð 	ðð r.   c           	     óT   — t        | ||||||«      \  }}	t        d||«      \  }
}|
||	fS )z)Internal compressed query message helper.éÔ  )rõ   r¸   )r›   rï   rð   rñ   rò   ró   rÑ   r´   Úop_queryrß   r»   rÞ   s               rC   Ú_query_compressedrù   É  sD   € ô *Ø� +¨}¸eÀ^ÐUYóÑ€Hˆmô ˜˜x¨Ó-�H€CˆØ��]Ð"Ð"r.   c           	     óR   — t        | ||||||«      \  }}t        d|«      \  }	}
|	|
|fS )zInternal query message helper.r÷   )rõ   r½   )r›   rï   rð   rñ   rò   ró   rÑ   rø   rß   r»   rÞ   s              rC   Ú_query_uncompressedrû   Û  sB   € ô *Ø� +¨}¸eÀ^ÐUYóÑ€Hˆmô ˜d HÓ-�H€CˆØ��]Ð"Ð"r.   c           
     óL   — |rt        | |||||||«      S t        | ||||||«      S )zGet a **query** message.)rù   rû   )r›   rï   rð   rñ   rò   ró   rÑ   r´   s           rC   Ú_queryrý   ð  sF   € ñ Ü Ø�_ k°=À%ÈÐY]Ð_bó
ð 	
ô Ø� +¨}¸eÀ^ÐUYóð r.   z<qc                ó~   — dj                  t        t        j                  | «      t	        |«      t        |«      g«      S )zGet an OP_GET_MORE message.r.   )rÍ   Ú_ZERO_32rî   r   rÌ   Ú_pack_long_long©rï   rñ   r©   s      rC   Ú_get_more_implr    s9   € à�8‰8äÜ×Ñ Ó0Ü�mÓ$Ü˜IÓ&ð		
óð r.   c                ó2   — t        dt        | ||«      |«      S )z+Internal compressed getMore message helper.éÕ  )r¸   r  ©rï   rñ   r©   r´   s       rC   Ú_get_more_compressedr    s   € ô �Tœ>¨/¸=È)ÓTÐVYÓZÐZr.   c                ó0   — t        dt        | ||«      «      S )z Internal getMore message helper.r  )r½   r  r  s      rC   Ú_get_more_uncompressedr    s   € ô ˜$¤¨ÀÈyÓ YÓZÐZr.   c                ó<   — |rt        | |||«      S t        | ||«      S )zGet a **getMore** message.)r  r  r  s       rC   Ú	_get_morer
  (  s'   € ñ Ü# O°]ÀIÈsÓSÐSÜ! /°=À)ÓLÐLr.   s
   documents s   updates s   deletes c                  ó”   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zedd„«       Zedd„«       Z	edd„«       Z
dd„Zdd	„Zy
)Ú_BulkWriteContextBasez]Private base class for wrapping around AsyncConnection to use with write splitting functions.)Údb_namer«   Úop_idrë   ÚfieldÚpublishÚ
start_timeÚ	listenersr�   r¯   Úop_typeÚcodecc	                ó@  — || _         || _        || _        || _        |j                  | _        || _        t        | j                     | _        t        j                  j                  «       | _        || _        t        |j                  «      | _        || _        || _        y rÀ   )r  r«   r  r  Úenabled_for_commandsr  rë   rè   r  ÚdatetimeÚnowr  r�   ÚboolÚcompression_contextr¯   r  r  )	ÚselfÚdatabase_nameÚcmd_namer«   Úoperation_idr  r�   r  r  s	            rC   Ú__init__z_BulkWriteContextBase.__init__P  s�   € ð %ˆŒØˆŒ	Ø!ˆŒ
Ø"ˆŒØ ×5Ñ5ˆŒØˆŒ	Ü §	¡	Ñ*ˆŒ
Ü"×+Ñ+×/Ñ/Ó1ˆŒØˆŒÜ˜T×5Ñ5Ó6ˆŒØˆŒØˆ�
r.   c                ó.   — | j                   j                  S )z#A proxy for SockInfo.max_bson_size.)r«   rß   ©r  s    rC   rß   z#_BulkWriteContextBase.max_bson_sizeh  s   € ð �y‰y×&Ñ&Ð&r.   c                óx   — | j                   r| j                  j                  dz
  S | j                  j                  S )z&A proxy for SockInfo.max_message_size.rt   )r¯   r«   Úmax_message_sizer!  s    rC   r#  z&_BulkWriteContextBase.max_message_sizem  s0   € ð �=Š=à—9‘9×-Ñ-°Ñ2Ð2Ø�y‰y×)Ñ)Ð)r.   c                ó.   — | j                   j                  S )z*A proxy for SockInfo.max_write_batch_size.)r«   Úmax_write_batch_sizer!  s    rC   r%  z*_BulkWriteContextBase.max_write_batch_sizeu  s   € ð �y‰y×-Ñ-Ð-r.   c                ó   — | j                   S )z:The maximum size of a BSON command before batch splitting.)rß   r!  s    rC   Úmax_split_sizez$_BulkWriteContextBase.max_split_sizez  s   € ð ×!Ñ!Ð!r.   c                ó   — | j                   j                  ||| j                  || j                  j                  | j                  j
                  | j                  | j                  j                  | j                  ¬«	       y)z Publish a CommandSucceededEvent.©r  N)	r  Úpublish_command_successrë   r«   ÚaddressÚserver_connection_idr  Ú
service_idr  )r  r¶   ÚreplyÚdurations       rC   Ú_succeedz_BulkWriteContextBase._succeed  s^   € à�‰×.Ñ.ØØØ�I‰IØØ�I‰I×ÑØ�I‰I×*Ñ*Ø�J‰JØ�I‰I× Ñ ØŸ,™,ð 	/õ 
	
r.   c                ó   — | j                   j                  ||| j                  || j                  j                  | j                  j
                  | j                  | j                  j                  | j                  ¬«	       y)zPublish a CommandFailedEvent.r)  N)	r  Úpublish_command_failurerë   r«   r+  r,  r  r-  r  )r  r¶   Úfailurer/  s       rC   Ú_failz_BulkWriteContextBase._fail�  s^   € à�‰×.Ñ.ØØØ�I‰IØØ�I‰I×ÑØ�I‰I×*Ñ*Ø�J‰JØ�I‰I× Ñ ØŸ,™,ð 	/õ 
	
r.   N©r  rR   r  rR   r«   r)   r  Úintr  r   r�   ú Optional[_AgnosticClientSession]r  r6  r  úCodecOptions[Any]©Úreturnr6  )r¶   r6  r.  r+   r/  údatetime.timedeltar:  ÚNone)r¶   r6  r3  r+   r/  r;  r:  r<  )rT   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r  Úpropertyrß   r#  r%  r'  r0  r4  rB   r.   rC   r  r  >  s¹   „ Ùgð€Iðàðð ðð "ð	ð
 ðð #ðð 2ðð ðð !óð0 ò'ó ð'ð ò*ó ð*ð ò.ó ð.ð ò"ó ð"ó
ô
r.   r  c                  ót   ‡ — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )	Ú_BulkWriteContextz]A wrapper around AsyncConnection/Connection for use with the collection-level bulk write API.rB   c	           
     ó2   •— t         ‰	| �  ||||||||«       y rÀ   ©Úsuperr  )
r  r  r  r«   r  r  r�   r  r  rS   s
            €rC   r  z_BulkWriteContext.__init__¡  s*   ø€ ô 	‰ÑØØØØØØØØõ		
r.   c                ó”   — | j                   dz   }t        || j                  ||| j                  | «      \  }}}|st	        d«      ‚|||fS )Nú.$cmdúcannot do an empty bulk write)r  Ú_do_batched_op_msgr  r  r   )r  rŸ   rÐ   Ú	namespacer¶   rÞ   Úto_sends          rC   Úbatch_commandz_BulkWriteContext.batch_command·  sV   € ð —L‘L 7Ñ*ˆ	Ü#5Ø�t—|‘| S¨$°·
±
¸Dó$
Ñ ˆ
�C˜ñ Ü"Ð#BÓCÐCØ˜3 Ð'Ð'r.   c           	     ó  — ||| j                   <   | j                  j                  || j                  || j                  j
                  | j                  j                  | j                  | j                  j                  «       |S )úPublish a CommandStartedEvent.)	r  r  Úpublish_command_startr  r«   r+  r,  r  r-  )r  rŸ   r¶   rÐ   s       rC   Ú_startz_BulkWriteContext._startÂ  se   € ð ˆˆD�J‰J‰Ø�‰×,Ñ,ØØ�L‰LØØ�I‰I×ÑØ�I‰I×*Ñ*Ø�J‰JØ�I‰I× Ñ ô	
ð ˆ
r.   r5  )rŸ   úMutableMapping[str, Any]rÐ   úlist[Mapping[str, Any]]r:  zAtuple[int, Union[bytes, dict[str, Any]], list[Mapping[str, Any]]])rŸ   rR  r¶   r6  rÐ   rS  r:  rR  ©	rT   r=  r>  r?  r@  r  rM  rQ  Ú__classcell__©rS   s   @rC   rC  rC  œ  s    ø„ Ùgà€Ið
àð
ð ð
ð "ð	
ð
 ð
ð #ð
ð 2ð
ð ð
ð !õ
ð,	(Ø+ð	(Ø3Jð	(à	Jó	(ðØ+ðØ9<ðØD[ðà	!÷r.   rC  c                  ó6   — e Zd ZdZ	 	 	 	 	 	 dd„Zedd„«       Zy)Ú_EncryptedBulkWriteContextrB   c                óô   — | j                   dz   }t        || j                  ||| j                  | «      \  }}|st	        d«      ‚|j                  dd«      dz   }t        t        |«      |d  t        «      }d||fS )NrH  rI  r0   rÇ   r§   éÿÿÿÿ)	r  Ú_encode_batched_write_commandr  r  r   re   r   Ú
memoryviewr   )r  rŸ   rÐ   rK  rÞ   rL  Ú	cmd_startÚoutgoings           rC   rM  z(_EncryptedBulkWriteContext.batch_commandÖ  s‚   € ð —L‘L 7Ñ*ˆ	Ü4Ø�t—|‘| S¨$°·
±
¸Dó
‰ˆˆWñ Ü"Ð#BÓCÐCð —I‘I˜g qÓ)¨AÑ-ˆ	Ü ¤¨C£°°Ð!<Ô>VÓWˆØ�8˜WÐ$Ð$r.   c                ó   — t         S )z Reduce the batch splitting size.)Ú_MAX_SPLIT_SIZE_ENCr!  s    rC   r'  z)_EncryptedBulkWriteContext.max_split_sizeå  s
   € ô #Ð"r.   N)rŸ   rR  rÐ   rS  r:  z3tuple[int, dict[str, Any], list[Mapping[str, Any]]]r9  )rT   r=  r>  r@  rM  rA  r'  rB   r.   rC   rX  rX  Ó  s8   „ Ø€Ið%Ø+ð%Ø3Jð%à	<ó%ð ò#ó ñ#r.   rX  c                óH   — | dk(  rt        d||fz  «      ‚t        | ›d�«      ‚)z-Internal helper for raising DocumentTooLarge.r6   zfBSON document too large (%d bytes) - the connected server supports BSON document sizes up to %d bytes.z command document too large)r   )rm   Údoc_sizeÚmax_sizes      rC   Ú_raise_document_too_largerd  ë  s@   € à�HÒÜðð " 8Ð,ñ-ó
ð 	
ô  ) Ð.IÐJÓKÐKr.   i    c                ó”  — |j                   }|j                  }|j                  }	|rdnd}
|j                  |
«       |j                  d«       |j                  t	        |d|«      «       |j                  d«       |j                  «       }|j                  d«       	 |j                  t        |    «       g }d}|D ]²  }t	        |d|«      }t        |«      }|j                  «       |z   }|dk(  xr ||	kD  }| xr ||kD  }|s|r6t        t        j                  «       «      |    }t        |t        |«      |«       ||	kD  r n0|j                  |«       |j                  |«       |d	z  }||k(  sŒ² n |j                  «       }|j                  |«       |j                  t!        ||z
  «      «       ||fS # t        $ r t        d«      d‚w xY w)
zCreate a batched OP_MSG write.r1   ó      r0   Fó   úUnknown commandNr   r,   )rß   r%  r#  Úwriter   ÚtellÚ_OP_MSG_MAPré   r   rK   Úlistrè   Úkeysrd  ÚappendÚseekrÌ   )rm   rn   rÐ   ÚackrÑ   r´   Úbufrß   r%  r#  rÎ   Úsize_locationrL  ÚidxrÄ   ÚvalueÚ
doc_lengthÚnew_message_sizeÚdoc_too_largeÚunacked_doc_too_largeÚwrite_opÚlengths                         rC   Ú_batched_op_msg_implr{    sÇ  € ð ×%Ñ%€MØ×3Ñ3ÐØ×+Ñ+Ðá#&ÑÐ,?€Eà‡I�IˆeÔð ‡I�IˆgÔØ‡I�IŒm˜G U¨DÓ1Ô2ð ‡I�IˆgÔØ—H‘H“J€Mà‡I�IÐ!Ô"ð<Ø�	‰	”+˜iÑ(Ô)ð €GØ
€CØò ˆä˜c 5¨$Ó/ˆÜ˜“Zˆ
ØŸ8™8›:¨
Ñ2Ðà˜q™ÒJÐ&6Ð9IÑ&Iˆð %( Ò H¨Z¸-Ñ-GÐÙÑ1ÜœJŸO™OÓ-Ó.¨yÑ9ˆHÜ% h´°E³
¸MÔJàÐ.Ò.ÙØ�	‰	�%ÔØ�‰�sÔØˆq‰ˆàÐ&Ó&Ùð1ð6 �X‰X‹Z€FØ‡H�Hˆ]ÔØ‡I�IŒi˜ Ñ.Ó/Ô0à�Fˆ?ÐøôI ò <ÜÐ0Ó1°tÐ;ð<ús   ÂF1 Æ1Gc           	     ób   — t        «       }t        | ||||||«      \  }}|j                  «       |fS )zOEncode the next batched insert, update, or delete operation
    as OP_MSG.
    )Ú_BytesIOr{  Úgetvalue)	rm   rn   rÐ   rp  rÑ   r´   rq  rL  Ú_s	            rC   Ú_encode_batched_op_msgr€  E  s7   € ô ‹*€Cä% i°¸$ÀÀTÈ3ÐPSÓT�J€GˆQØ�<‰<‹>˜7Ð"Ð"r.   c                óª   — t        | |||||«      \  }}|j                  j                  €J ‚t        d||j                  j                  «      \  }}	||	|fS )z]Create the next batched insert, update, or delete operation
    with OP_MSG, compressed.
    rÝ   )r€  r«   r  r¸   )
rm   rn   rÐ   rp  rÑ   r´   r³   rL  r¶   rÞ   s
             rC   Ú_batched_op_msg_compressedr‚  Z  s\   € ô +¨9°g¸tÀSÈ$ÐPSÓT�M€Dˆ'à�8‰8×'Ñ'Ð3Ð3Ð3Ü  d¨C¯H©H×,HÑ,HÓI�O€J�Ø�s˜GÐ#Ð#r.   c           	     óp  — t        «       }|j                  t        «       |j                  d«       t        | ||||||«      \  }}|j	                  d«       t        «       }	|j                  t        |	«      «       |j	                  d«       |j                  t        |«      «       |	|j                  «       |fS )z"OP_MSG implementation entry point.ó       Ý  rÇ   r   )r}  ri  Ú_ZERO_64r{  ro  rD   rÌ   r~  )
rm   rn   rÐ   rp  rÑ   r´   rq  rL  rz  r¶   s
             rC   Ú_batched_op_msgr†  l  s–   € ô ‹*€Cð ‡I�IŒhÔà‡I�IÐ1Ô2ä*¨9°g¸tÀSÈ$ÐPSÐUXÓY�O€GˆVð ‡H�HˆQ„KÜ“€JØ‡I�IŒi˜
Ó#Ô$Ø‡H�HˆQ„KØ‡I�IŒi˜ÓÔ à�s—|‘|“~ wÐ.Ð.r.   c                óè   — | j                  dd«      d   |d<   d|v rt        |d   j                  dd«      «      }nd}|j                  j                  rt        ||||||«      S t        ||||||«      S )zRCreate the next batched insert, update, or delete operation
    using OP_MSG.
    ú.r,   r   rå   ÚwriteConcernÚwT)Úsplitr  rl   r«   r  r‚  r†  )rK  rm   rn   rÐ   rÑ   r´   rp  s          rC   rJ  rJ  Œ  s}   € ð —_‘_ S¨!Ó,¨QÑ/€GˆE�NØ˜Ñ Ü�7˜>Ñ*×.Ñ.¨s°AÓ6Ó7‰àˆØ
‡x�x×#Ò#Ü)¨)°W¸dÀCÈÈsÓSÐSÜ˜9 g¨t°S¸$ÀÓDÐDr.   c                  óx   ‡ — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )	Ú_ClientBulkWriteContextzYA wrapper around AsyncConnection/Connection for use with the client-level bulk write API.rB   c           
     ó2   •— t         ‰| �  ||||||d|«       y )Nr   rE  )	r  r  r  r«   r  r  r�   r  rS   s	           €rC   r  z _ClientBulkWriteContext.__init__¦  s*   ø€ ô 	‰ÑØØØØØØØØõ		
r.   c                ód   — t        |||| j                  | «      \  }}}}|st        d«      ‚||||fS )NrI  )Ú_client_do_batched_op_msgr  r   )r  rŸ   Ú
operationsÚ
namespacesr¶   rÞ   Úto_send_opsÚ
to_send_nss           rC   rM  z%_ClientBulkWriteContext.batch_command»  sG   € ô 4MØ�˜Z¨¯©°Tó4
Ñ0ˆ
�C˜ jñ Ü"Ð#BÓCÐCØ˜3 ¨ZÐ7Ð7r.   c           	     óü   — ||d<   ||d<   | j                   j                  || j                  || j                  j                  | j                  j
                  | j                  | j                  j                  «       |S )rO  r5   ÚnsInfo)r  rP  r  r«   r+  r,  r  r-  )r  rŸ   r¶   Úop_docsÚns_docss        rC   rQ  z_ClientBulkWriteContext._startÈ  sj   € ð ˆˆE‰
ØˆˆH‰Ø�‰×,Ñ,ØØ�L‰LØØ�I‰I×ÑØ�I‰I×*Ñ*Ø�J‰JØ�I‰I× Ñ ô	
ð ˆ
r.   )r  rR   r  rR   r«   r)   r  r6  r  r   r�   r7  r  r8  )rŸ   rR  r‘  ú#list[tuple[str, Mapping[str, Any]]]r’  ú	list[str]r:  zZtuple[int, Union[bytes, dict[str, Any]], list[Mapping[str, Any]], list[Mapping[str, Any]]])
rŸ   rR  r¶   r6  r—  rS  r˜  rS  r:  rR  rT  rV  s   @rC   r�  r�  ¡  sµ   ø„ Ùcà€Ið
àð
ð ð
ð "ð	
ð
 ð
ð #ð
ð 2ð
ð !õ
ð*8à%ð8ð 8ð8ð ð	8ð
 
dó8ðà%ðð ðð )ð	ð
 )ðð 
"÷r.   r�  iè  c                ó  — |rdnd}|j                  |«       |j                  d«       |j                  | «       |j                  d«       |j                  «       }|j                  d«       |j                  d«       |D ]  }|j                  |«       Œ |j                  «       }|j                  «       }	|j                  |«       |j                  t        |	|z
  «      «       |j                  |«       |j                  d«       |j                  «       }|j                  d«       |j                  d«       |D ]  }
|j                  |
«       Œ |j                  «       }	|j                  |«       |j                  t        |	|z
  «      «       |	S )Nr1   rf  r0   rg  s   ops s   nsInfo )ri  rj  ro  rÌ   )Úcommand_encodedÚto_send_ops_encodedÚto_send_ns_encodedrp  rq  rÎ   rr  Ú
op_encodedÚresume_locationrz  Ú
ns_encodeds              rC   Ú_client_construct_op_msgr¢  á  sG  € ñ $'ÑÐ,?€EØ‡I�IˆeÔð ‡I�IˆgÔØ‡I�IˆoÔð ‡I�IˆgÔØ—H‘H“J€Mà‡I�IÐ!Ô"Ø‡I�IˆjÔà)ò ˆ
Ø�	‰	�*Õðà—h‘h“j€Oà�X‰X‹Z€FØ‡H�Hˆ]ÔØ‡I�IŒi˜ Ñ.Ó/Ô0Ø‡H�Hˆ_Ôð ‡I�IˆgÔØ—H‘H“J€Mà‡I�IÐ!Ô"Ø‡I�IˆmÔà(ò ˆ
Ø�	‰	�*Õðð �X‰X‹Z€FØ‡H�Hˆ]ÔØ‡I�IŒi˜ Ñ.Ó/Ô0à€Mr.   c                ó  — 	 	 	 	 	 	 	 	 dd„}|j                   }|j                  }	|j                  }
t        | d|«      }|s |dt	        |«      |t
        z   «       g d¢}| j                  d«      r|j                  d«       | j                  d«      r|j                  d«       | j                  d«      r|j                  d«       |D �ci c]  }|| |   “Œ
 }}t	        t        |d|«      «      }|
t        |z   z
  }i }g }g }g }g }d}d}d}t        ||«      D �]Q  \  \  }}}|}|d	k(  r%|s#t	        t        |d
   d|«      «      } ||||«       |dk(  r'd}|s#t	        t        |d   d|«      «      } ||||«       d}d}||vrd|i}t	        |«      } | ||<   ||   ||<   t        |d|«      }!t	        |!«      }"|rt        |d|«      }#t	        |#«      }|s |||"|t
        z   «       ||z   |"z   |z   }$|$|kD  r|dk(  rt        ||"|t
        z   «        n_|j                  |«       |j                  |!«       ||"z  }|r'|j                  |«       |j                  #«       ||z  }|dz  }||	k(  s�ŒR n t        |||||«      }%|||%fS c c}w )z:Create a batched OP_MSG write for client-level bulk write.c                ó*   — ||kD  rt        | ||«       y y rÀ   )rd  )r  rb  rŒ   s      rC   Ú_check_doc_size_limitsz;_client_batched_op_msg_impl.<locals>._check_doc_size_limits  s   € ð
 �eÒÜ% g¨x¸Õ?ð r.   Fr9   )r9   Ú
errorsOnlyÚorderedÚbypassDocumentValidationr   Úletr   r6   rI   r:   r7   Ú
updateModsNÚnsr,   )r  rR   rb  r6  rŒ   r6  r:  r<  )rß   r%  r#  r   rK   Ú_COMMAND_OVERHEADrl   rn  Ú_OP_MSG_OVERHEADÚziprd  r¢  )&rn   r‘  r’  rp  rÑ   r´   rq  r¥  rß   r%  r#  rœ  Úabridged_keysr    Úcommand_abridgedÚcommand_len_abridgedÚmax_doc_sequences_bytesÚns_infor“  r”  r�  rž  Útotal_ops_lengthÚtotal_ns_lengthrs  Úreal_op_typeÚop_docrK  r  rb  Úns_docÚ	ns_lengthÚnew_ns_indexÚop_doc_encodedÚ	op_lengthÚns_doc_encodedrv  rz  s&                                         rC   Ú_client_batched_op_msg_implr¾    s.  € ð@Øð@àð@ð ð@ð 
ó	@ð ×%Ñ%€MØ×3Ñ3ÐØ×+Ñ+Ðä# G¨U°DÓ9€Oñ Ù˜{¬C°Ó,@À-ÔRcÑBcÔdò ;€MØ‡{�{Ð-Ô.Ø×ÑÐ7Ô8Ø‡{�{�9ÔØ×Ñ˜YÔ'Ø‡{�{�5ÔØ×Ñ˜UÔ#Ø5BÖC¨c˜˜W S™\Ñ)ÐCÐÐCÜœ}Ð-=¸uÀdÓKÓLÐð /Ô2BÐEYÑ2YÑZÐà€GØ+-€KØ*,€JØ')ÐØ&(ÐØÐØ€OØ
€Cä-0°¸ZÓ-Hó 8Ñ)Ñˆ�v 	Øˆà˜8Ò#ÙÜœ}¨V°JÑ-?ÀÈÓMÓN�Ù& |°X¸}ÔMØ˜9Ò$ØˆGÙÜœ}¨V°LÑ-AÀ5È$ÓOÓP�Ù& |°X¸}ÔMàˆØˆ	à˜GÑ#Ø˜IÐ&ˆFÜ˜z›?ˆLØ!-ˆG�IÑð " )Ñ,ˆˆw‰ô ' v¨u°dÓ;ˆÜ˜Ó'ˆ	ÙÜ*¨6°5¸$Ó?ˆNÜ˜NÓ+ˆIñ Ù" 7¨I°}ÔGXÑ7XÔYà+¨oÑ=À	ÑIÈIÑUÐàÐ5Ò5Ø�aŠxÜ)¨'°9¸mÔN_Ñ>_Ô`Ùð 	×Ñ˜6Ô"Ø×"Ñ" >Ô2Ø˜IÑ%ÐÙØ×Ñ˜fÔ%Ø×%Ñ% nÔ5Ø˜yÑ(ˆOàˆq‰ˆð Ð&Ô&Ùðq8ôv &ØÐ,Ð.@À#Àsó€Fð ˜
 FÐ*Ð*ùò] Ds   ÃI>c           	     óf   — t        «       }t        | ||||||«      \  }}}	|j                  «       ||fS )zLEncode the next batched client-level bulkWrite
    operation as OP_MSG.
    )r}  r¾  r~  )
rn   r‘  r’  rp  rÑ   r´   rq  r“  r”  r  s
             rC   Ú_client_encode_batched_op_msgrÀ  ‡  s@   € ô ‹*€Cä!<Ø�˜Z¨¨d°C¸ó"Ñ€K�˜Qð �<‰<‹>˜;¨
Ð2Ð2r.   c                ó®   — t        | |||||«      \  }}}|j                  j                  €J ‚t        d||j                  j                  «      \  }	}
|	|
||fS )zZCreate the next batched client-level bulkWrite operation
    with OP_MSG, compressed.
    rÝ   )rÀ  r«   r  r¸   )rn   r‘  r’  rp  rÑ   r´   r³   r“  r”  r¶   rÞ   s              rC   Ú!_client_batched_op_msg_compressedrÂ  š  sf   € ô %BØ�˜Z¨¨d°Có%Ñ!€Dˆ+�zð �8‰8×'Ñ'Ð3Ð3Ð3Ü  d¨C¯H©H×,HÑ,HÓI�O€J�Ø�s˜K¨Ð3Ð3r.   c           	     ót  — t        «       }|j                  t        «       |j                  d«       t        | ||||||«      \  }}}	|j	                  d«       t        «       }
|j                  t        |
«      «       |j	                  d«       |j                  t        |	«      «       |
|j                  «       ||fS )z=OP_MSG implementation entry point for client-level bulkWrite.r„  rÇ   r   )r}  ri  r…  r¾  ro  rD   rÌ   r~  )rn   r‘  r’  rp  rÑ   r´   rq  r“  r”  rz  r¶   s              rC   Ú_client_batched_op_msgrÄ  ®  sœ   € ô ‹*€Cð ‡I�IŒhÔà‡I�IÐ1Ô2ä&AØ�˜Z¨¨d°C¸ó'Ñ#€K�˜Vð
 ‡H�HˆQ„KÜ“€JØ‡I�IŒi˜
Ó#Ô$Ø‡H�HˆQ„KØ‡I�IŒi˜ÓÔ à�s—|‘|“~ {°JÐ>Ð>r.   c                óÂ   — d| d<   d| v rt        | d   j                  dd«      «      }nd}|j                  j                  rt	        | |||||«      S t        | |||||«      S )zOCreate the next batched client-level bulkWrite
    operation using OP_MSG.
    Úadminrå   r‰  rŠ  r,   T)r  rl   r«   r  rÂ  rÄ  )rn   r‘  r’  rÑ   r´   rp  s         rC   r�  r�  Ì  sp   € ð €GˆE�NØ˜Ñ Ü�7˜>Ñ*×.Ñ.¨s°AÓ6Ó7‰àˆØ
‡x�x×#Ò#Ü0°¸*ÀjÐRUÐW[Ð]`ÓaÐaÜ! '¨:°zÀ3ÈÈcÓRÐRr.   c           	     ób   — t        «       }t        | ||||||«      \  }}|j                  «       |fS )z:Encode the next batched insert, update, or delete command.)r}  Ú_batched_write_command_implr~  )	rK  rm   rn   rÐ   rÑ   r´   rq  rL  r  s	            rC   r[  r[  ã  s9   € ô ‹*€Cä,¨Y¸	À7ÈDÐRVÐX[Ð]`Óa�J€GˆQØ�<‰<‹>˜7Ð"Ð"r.   c                ór  — |j                   }|j                  }|t        z   }	|j                  }
|j	                  t
        «       |j	                  | j                  d«      «       |j	                  t        «       |j	                  t        «       |j                  «       }|j	                  t        j                  |«      «       |j                  dd«       	 |j	                  t        |   «       |j                  «       dz
  }g }d}|D �]  }t        |«      j                  d«      }t!        |d|«      }t#        |«      |	kD  }|r6t%        t&        j)                  «       «      |   }t+        |t#        |«      |«       |d	k\  xr+ |j                  «       t#        |«      z   t#        |«      z   |
k\  }||k\  }|s|r ne|j	                  t,        «       |j	                  |«       |j	                  t        «       |j	                  |«       |j/                  |«       |d	z  }�Œ |j	                  t0        «       |j                  «       }|j                  |«       |j	                  t3        ||z
  d	z
  «      «       |j                  |«       |j	                  t3        ||z
  «      «       ||fS # t        $ r t        d«      d‚w xY w)
z(Create a batched OP_QUERY write command.Úutf8rZ  r-   rh  NrÇ   r   Fr,   )rß   r%  r¬  r'  ri  rÿ   ÚencodeÚ_ZERO_8Ú_SKIPLIMrj  rî   ro  Ú_OP_MAPré   r   rR   r   rK   rl  rè   rm  rd  Ú_BSONOBJrn  Ú_ZERO_16rÌ   )rK  rm   rn   rÐ   rÑ   r´   rq  rß   r%  Úmax_cmd_sizer'  Úcommand_startÚ
list_startrL  rs  rÄ   r    rt  rw  ry  Úenough_dataÚenough_documentsrz  s                          rC   rÈ  rÈ  ö  sL  € ð ×%Ñ%€MØ×3Ñ3Ðð !Ô#4Ñ4€LØ×'Ñ'€Nð ‡I�IŒhÔà‡I�Iˆi×Ñ˜vÓ&Ô'Ø‡I�IŒgÔà‡I�IŒhÔð —H‘H“J€MØ‡I�IŒd�k‰k˜'Ó"Ô#ð ‡H�HˆR�„Oð<Ø�	‰	”'˜)Ñ$Ô%ð
 —‘“˜a‘€JØ€GØ
€CØó ˆä�#‹h�o‰o˜fÓ%ˆÜ˜c 5¨$Ó/ˆô ˜E›
 \Ñ1ˆÙÜœJŸO™OÓ-Ó.¨yÑ9ˆHÜ% h´°E³
¸MÔJØ˜Q‘hÒY C§H¡H£J´°S³Ñ$9¼CÀ»JÑ$FÈ>Ñ#YˆØÐ"6Ñ6ÐÙÑ*ÙØ�	‰	”(ÔØ�	‰	�#ŒØ�	‰	”'ÔØ�	‰	�%ÔØ�‰�sÔØˆq‰Šð'ð. ‡I�IŒhÔð �X‰X‹Z€FØ‡H�HˆZÔØ‡I�IŒi˜ Ñ+¨aÑ/Ó0Ô1Ø‡H�Hˆ]ÔØ‡I�IŒi˜ Ñ.Ó/Ô0à�Fˆ?ÐøôO ò <ÜÐ0Ó1°tÐ;ð<ús   ÃJ  Ê J6c                  óÖ   — e Zd ZdZdZ ej                  d«      j                  ZdZ		 	 	 	 	 	 	 	 dd„Z
	 d	 	 	 	 	 dd„Zdeddf	 	 	 	 	 	 	 	 	 dd	„Zdd
„Zdd„Zedd„«       Zedd„«       Zy)Ú_OpReplyz$A MongoDB OP_REPLY response message.)rÎ   r©   Únumber_returnedr2   z<iqiir,   c                óN   — || _         t        |«      | _        || _        || _        y rÀ   )rÎ   r   r©   rØ  r2   )r  rÎ   r©   rØ  r2   s        rC   r  z_OpReply.__init__I  s&   € ð ˆŒ
Ü˜yÓ)ˆŒØ.ˆÔØ"ˆ�r.   Nc                ó€  — | j                   dz  r&|€t        d«      ‚d|fz  }d|ddœ}t        |d|«      ‚| j                   dz  ràt        j                  | j
                  «      j                  «       }|j                  dd«       |d	   j                  t        j                  «      rt        |d	   |«      ‚|j                  d
«      dk(  r.d}t        |j                  d	|«      |j                  d
«      |«      ‚t        d|j                  d	«      z  |j                  d
«      |«      ‚| j
                  r| j
                  gS g S )aœ  Check the response header from the database, without decoding BSON.

        Check the response for errors and unpack.

        Can raise CursorNotFound, NotPrimaryError, ExecutionTimeout, or
        OperationFailure.

        :param cursor_id: cursor_id we sent to get this response -
            used for raising an informative exception when we get cursor id not
            valid at server response.
        r,   z"No cursor id for getMore operationzCursor not found, cursor id: %dr   é+   )r]   rP   rY   r-   r]   z$errrY   é2   zoperation exceeded time limitzdatabase error: %s)rÎ   r    r   rî   ÚBSONr2   ÚdecodeÚ
setdefaultÚ
startswithr   ÚLEGACY_ERRORr   rl   r   r   )r  r©   Úuser_fieldsrÞ   ÚerrobjÚerror_objectÚdefault_msgs          rC   Úraw_responsez_OpReply.raw_responseQ  s>  € ð �:‰:˜Š>àÐ Ü#Ð$HÓIÐIð 4°y°lÑBˆCØ¨°bÑ9ˆFÜ   b¨&Ó1Ð1Ø�Z‰Z˜!Š^Ü+/¯9©9°T·^±^Ó+D×+KÑ+KÓ+MˆLà×#Ñ# D¨!Ô,Ø˜FÑ#×.Ñ.¬{×/GÑ/GÔHÜ% l°6Ñ&:¸LÓIÐIØ×!Ñ! &Ó)¨RÒ/Ø=�Ü&Ø ×$Ñ$ V¨[Ó9¸<×;KÑ;KÈFÓ;SÐUaóð ô #Ø$ |×'7Ñ'7¸Ó'?Ñ?Ø× Ñ  Ó(Øóð ð
 �>Š>Ø—N‘NÐ#Ð#Øˆ	r.   Fc                óª   — | j                  |«       |r t        j                  | j                  |«      S t        j                  | j                  ||«      S )aè  Unpack a response from the database and decode the BSON document(s).

        Check the response for errors and unpack, returning a dictionary
        containing the response data.

        Can raise CursorNotFound, NotPrimaryError, ExecutionTimeout, or
        OperationFailure.

        :param cursor_id: cursor_id we sent to get this response -
            used for raising an informative exception when we get cursor id not
            valid at server response
        :param codec_options: an instance of
            :class:`~bson.codec_options.CodecOptions`
        :param user_fields: Response fields that should be decoded
            using the TypeDecoders from codec_options, passed to
            bson._decode_all_selective.
        )ræ  rî   Ú
decode_allr2   Ú_decode_all_selective©r  r©   Úcodec_optionsrâ  Úlegacy_responses        rC   Úunpack_responsez_OpReply.unpack_response}  sC   € ð0 	×Ñ˜)Ô$ÙÜ—?‘? 4§>¡>°=ÓAÐAÜ×)Ñ)¨$¯.©.¸-ÈÓUÐUr.   c                óR   — | j                  |¬«      }| j                  dk(  sJ ‚|d   S )úUnpack a command response.©rë  r,   r   )rí  rØ  )r  rë  rÐ   s      rC   Úcommand_responsez_OpReply.command_responseš  s2   € à×#Ñ#°-Ð#Ó@ˆØ×#Ñ# qÒ(Ð(Ð(Ø�A‰wˆr.   c                ó   — t         ‚©z)Return the bytes of the command response.)ÚNotImplementedErrorr!  s    rC   Úraw_command_responsez_OpReply.raw_command_response   s
   € ô "Ð!r.   c                 ó   — y)ú+Is the moreToCome bit set on this response?FrB   r!  s    rC   Úmore_to_comez_OpReply.more_to_come¥  s   € ð r.   c                óN   — | j                  |«      \  }}}}|dd } | ||||«      S )z%Construct an _OpReply from raw bytes.é   N)ÚUNPACK_FROM)ÚclsrÞ   rÎ   r©   r  rØ  r2   s          rC   Úunpackz_OpReply.unpackª  s7   € ð 03¯©¸sÓ/CÑ,ˆˆy˜!˜_à˜˜�Hˆ	Ù�5˜) _°iÓ@Ð@r.   )rÎ   r6  r©   r6  rØ  r6  r2   úbytes | memoryview)NN)r©   úOptional[int]râ  úOptional[Mapping[str, Any]]r:  zlist[bytes | memoryview]©
r©   rÿ  rë  r8  râ  r   rì  r  r:  zlist[dict[str, Any]]©rë  r8  r:  údict[str, Any])r:  r   ©r:  r  )rÞ   rþ  r:  r×  )rT   r=  r>  r?  r@  ÚstructÚStructÚunpack_fromrû  ÚOP_CODEr  ræ  r<   rí  rñ  rõ  rA  rø  Úclassmethodrý  rB   r.   rC   r×  r×  A  sì   „ Ù.àF€Ià�&—-‘- Ó(×4Ñ4€KØ€Gð#Øð#Ø%(ð#Ø;>ð#ØK]ó#ð [_ð*Ø&ð*Ø<Wð*à	!ó*ð\ $(Ø+IØ37Ø %ðVà ðVð )ðVð 1ð	Vð
 ðVð 
óVó:ó"ð
 òó ðð òAó ñAr.   r×  c                  óÔ   — e Zd ZdZdZ ej                  d«      j                  ZdZ	dZ
dZdZdd„Zd	i f	 	 	 	 	 dd
„Zd	ed	df	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zedd„«       Zedd„«       Zy	)Ú_OpMsgz"A MongoDB OP_MSG response message.)rÎ   r©   rØ  Úpayload_documentz<IBirÝ   r,   r-   i   c                ó    — || _         || _        y rÀ   )rÎ   r  )r  rÎ   r  s      rC   r  z_OpMsg.__init__Á  s   € ØˆŒ
Ø 0ˆÕr.   Nc                ód   — t        j                  t        | j                  «      |t        «      }|gS )zp
        cursor_id is ignored
        user_fields is used to determine which fields must not be decoded
        )rî   Ú_decode_selectiver   r  r   )r  r©   râ  Úinflated_responses       rC   ræ  z_OpMsg.raw_responseÅ  s3   € ô !×2Ñ2Ü˜D×1Ñ1Ó2°KÔAXó
Ðð "Ð"Ð"r.   Fc                óL   — |rJ ‚t        j                  | j                  ||«      S )a~  Unpack a OP_MSG command response.

        :param cursor_id: Ignored, for compatibility with _OpReply.
        :param codec_options: an instance of
            :class:`~bson.codec_options.CodecOptions`
        :param user_fields: Response fields that should be decoded
            using the TypeDecoders from codec_options, passed to
            bson._decode_all_selective.
        )rî   ré  r  rê  s        rC   rí  z_OpMsg.unpack_responseÓ  s)   € ñ" #Ð"Ð"Ü×)Ñ)¨$×*?Ñ*?ÀÐP[Ó\Ð\r.   c                ó,   — | j                  |¬«      d   S )rï  rð  r   )rí  )r  rë  s     rC   rñ  z_OpMsg.command_responseç  s   € à×#Ñ#°-Ð#Ó@ÀÑCÐCr.   c                ó   — | j                   S ró  )r  r!  s    rC   rõ  z_OpMsg.raw_command_responseë  s   € à×$Ñ$Ð$r.   c                óF   — t        | j                  | j                  z  «      S )r÷  )r  rÎ   ÚMORE_TO_COMEr!  s    rC   rø  z_OpMsg.more_to_comeï  s   € ô �D—J‘J ×!2Ñ!2Ñ2Ó3Ð3r.   c                ó*  — | j                  |«      \  }}}|dk7  r<|| j                  z  rt        d|d›�«      ‚|| j                  z  rt        d|d›�«      ‚|dk7  rt        d|d›�«      ‚t	        |«      |dz   k7  rt        d«      ‚|dd } | ||«      S )	z#Construct an _OpMsg from raw bytes.r   z+Unsupported OP_MSG flag checksumPresent: 0xÚxzUnsupported OP_MSG flags: 0xz#Unsupported OP_MSG payload type: 0xé   z$Unsupported OP_MSG reply: >1 sectionN)rû  ÚCHECKSUM_PRESENTr    r  rK   )rü  rÞ   rÎ   Úfirst_payload_typeÚfirst_payload_sizer  s         rC   rý  z_OpMsg.unpackô  sÃ   € ð 9<¿¹ÈÓ8LÑ5ˆÐ!Ð#5Ø�AŠ:Ø�s×+Ñ+Ò+Ü#Ð&QÐRWÐXYÐQZÐ$[Ó\Ð\à�s×'Ñ'Ò'Ü#Ð&BÀ5ÈÀ)Ð$LÓMÐMØ Ò"ÜÐ"EÐFXÐYZÐE[Ð \Ó]Ð]äˆs‹8Ð)¨AÑ-Ò-ÜÐ FÓGÐGà˜q˜r˜7ÐÙ�5Ð*Ó+Ð+r.   )rÎ   r6  r  rþ  )r©   rÿ  râ  r   r:  rS  r  r  )r:  rþ  r  )rÞ   rþ  r:  r  )rT   r=  r>  r?  r@  r  r  r  rû  r  r  r  ÚEXHAUST_ALLOWEDr  ræ  r<   rí  rñ  rõ  rA  rø  r	  rý  rB   r.   rC   r  r  ´  sá   „ Ù,àM€Ià�&—-‘- Ó'×3Ñ3€KØ€Gð ÐØ€LØ€Oó1ð $(Ø35ð#à ð#ð 1ð#ð 
!ó	#ð  $(Ø+IØ37Ø %ð]à ð]ð )ð]ð 1ð	]ð
 ð]ð 
ó]ó(Dó%ð ò4ó ð4ð ò,ó ñ,r.   r  zBdict[int, Callable[[bytes | memoryview], Union[_OpReply, _OpMsg]]]Ú_UNPACK_REPLYc                  ó´   — e Zd ZdZdZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	dd„Z
dd„Z	 d	 	 	 	 	 dd	„Z	 d	 	 	 	 	 	 	 dd
„Zy)Ú_QueryzA query operation.)rÎ   Údbr™   ÚntoskiprL   Úfieldsrë  rM   rŒ   rš   rë   rœ   r�   r�   Úclientrž   Ú_as_commandÚexhaustNc                ó   — || _         || _        || _        || _        || _        || _        || _        || _        || _        |	| _	        |
| _
        || _        || _        || _        || _        d| _        d | _        || _        y )Nrˆ   )rÎ   r   r™   r!  rL   r"  rë  rM   rœ   rŒ   rš   r�   r�   r#  rž   rë   r$  r%  )r  rÎ   r   r™   r!  rL   r"  rë  rM   rŒ   rš   rœ   r�   r�   r#  rž   r%  s                    rC   r  z_Query.__init__*  s‡   € ð& ˆŒ
ØˆŒØˆŒ	ØˆŒØˆŒ	ØˆŒØ*ˆÔØ.ˆÔØ(ˆÔØˆŒ
Ø$ˆŒØ"ˆŒØˆŒØˆŒØ,ˆÔØˆŒ	ØAEˆÔØˆ�r.   c                ó   — d | _         y rÀ   ©r$  r!  s    rC   Úresetz_Query.resetP  ó
   € ØˆÕr.   c                ó8   — | j                   › d| j                  › �S ©Nrˆ  ©r   r™   r!  s    rC   rK  z_Query.namespaceS  ó   € Ø—'‘'�˜!˜DŸI™I˜;Ð'Ð'r.   c                ó   — d}| j                   sd}nV|j                  dk\  rd}nD| j                  j                  s.t	        d| j                  j
                  |j                  fz  «      ‚|j                  | j                  | j                  «       |S )NFTrd   zDread concern level of %s is not valid with a max wire version of %d.)	r%  r¨   rœ   Úok_for_legacyr   r–   Úvalidate_sessionr#  r�   )r  r«   Úuse_find_cmds      rC   Úuse_commandz_Query.use_commandV  s‡   € ØˆØ�|Š|Ø‰LØ×"Ñ" aÒ'à‰LØ×"Ñ"×0Ò0Ü$ð1Ø48×4EÑ4E×4KÑ4KÈT×MbÑMbÐ3cñdóð ð
 	×Ñ˜dŸk™k¨4¯<©<Ô8ØÐr.   c                ó*   — || j                   f| _        y rÀ   ©r   r$  ©r  rŸ   s     rC   Úupdate_commandz_Query.update_commandf  ó   € Ø §¡˜<ˆÕr.   c                ó*  — | j                   �| j                   S d| j                  v }t        | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  «      }|rd| _        d|i}|j                  |«       | j                  r\| j                  j                  |d| j                   |«       |s2| j                  j"                  s| j                  j%                  ||«       |j'                  || j                  | j(                  «       |r|j+                  | j(                  |¬«       || j,                  f| _         | j                   S )z.Return a find command document for this query.r‰   ÚexplainF©rŸ   )r$  rL   r£   r™   r"  r!  rŒ   rš   rÎ   rœ   r�   r�   rž   rë   Úadd_server_apiÚ	_apply_torM   r—   Ú_update_read_concernÚsend_cluster_timer#  Úapply_timeoutr   )r  r«   r@  r:  rŸ   s        rC   Ú
as_commandz_Query.as_commandi  sA  € ð ×ÑÐ'Ø×#Ñ#Ð#à §	¡	Ð)ˆÜ/Ø�I‰IØ�I‰IØ�K‰KØ�L‰LØ�J‰JØ�O‰OØ�J‰JØ×ÑØ�N‰NØ�L‰LØ×Ñó
ˆñ Ø!ˆDŒIØ˜cÐ"ˆCØ×Ñ˜CÔ Ø�<Š<Ø�L‰L×"Ñ" 3¨¨t×/CÑ/CÀTÔJá 4§<¡<×#>Ò#>Ø—‘×1Ñ1°#°tÔ<Ø×Ñ˜s D§L¡L°$·+±+Ô>áØ×Ñ˜tŸ{™{°ÐÔ4Ø §¡˜<ˆÔØ×ÑÐr.   c           
     ó¬  — || _         |j                  r| j                  dz  }n| j                  }| j                  «       }| j                  }|rM| j                  |«      d   }t        d|| j                  || j                  |j                  ¬«      \  }}}	}
|||	fS | j                  dk(  xr dxs | j                  }| j                  r%|rt        | j                  |«      }n| j                  }|j                  rt        |t        «      sJ ‚t!        ||«      }t#        ||| j$                  |||rdn| j&                  | j                  |j                  ¬«      S )z:Get a query message, possibly setting the secondaryOk bit.rÇ   r   ©r´   r,   r-   N)rM   rH   rÎ   rK  rL   rA  rì   r   rë  r  rš   rŒ   rƒ   Ú	is_mongosÚ
isinstancer
   rN   rý   r!  r"  )r  rM   r«   Úuse_cmdrÎ   r«  rL   r¶   rÞ   rÙ   r  Ú	ntoreturns               rC   Úget_messagez_Query.get_message�  s;  € ð
  /ˆÔØ×Òà—J‘J ‘N‰Eà—J‘JˆEà�^‰^ÓˆØ�y‰yˆáØ—?‘? 4Ó(¨Ñ+ˆDÜ'.ØØØ—‘ØØ×"Ñ"Ø×,Ñ,ô(Ñ$ˆJ˜˜T 1ð ˜s DÐ(Ð(ð
 —O‘O qÑ(Ò.¨QÒA°$·/±/ˆ	Ø�:Š:ÙÜ §
¡
¨IÓ6‘	à ŸJ™J�	à�>Š>Ü˜d¤NÔ3Ð3Ð3Ü-¨d°OÓDˆDäØØØ�L‰LØØÙ‰D §¡Ø×ÑØ×(Ñ(ô	
ð 		
r.   ) rÎ   r6  r   rR   r™   rR   r!  r6  rL   úMapping[str, Any]r"  r   rë  r8  rM   r"   rŒ   r6  rš   r6  rœ   r&   r�   r   r�   r7  r#  r*   rž   úOptional[bool]r%  r  ©r:  r<  ©r:  rR   ©r«   r)   r:  r  ©rŸ   r  r:  r<  ©F©r«   r)   r@  r  r:  ztuple[dict[str, Any], str])rM   r"   r«   r)   rF  r  r:  útuple[int, bytes, int])rT   r=  r>  r?  r@  Úconn_mgrr©   r  r)  rK  r3  r7  rA  rH  rB   r.   rC   r  r    s!  „ Ùð€Ið, €HØ€Ið$àð$ð ð$ð ð	$ð
 ð$ð  ð$ð ,ð$ð )ð$ð %ð$ð ð$ð ð$ð "ð$ð /ð$ð 2ð$ð %ð$ð  'ð!$ð" ó#$óL ó(óó (ð @Eð% Ø'ð% Ø8<ð% à	#ó% ðP X]ð2
Ø*ð2
Ø2Eð2
ØPTð2
à	ô2
r.   r  c                  ó    — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	dd„Z
	 d	 	 	 	 	 dd	„Z	 d	 	 	 	 	 	 	 dd
„Zy)Ú_GetMorezA getmore operation.)r   r™   rG  r©   rª   rë  rM   r�   r#  rR  r$  r%  r   r¥   c                óº   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        d | _
        || _        || _        y rÀ   )r   r™   rG  r©   rë  rM   r�   r#  rª   rR  r$  r%  r   )r  r   r™   rG  r©   rë  rM   r�   r#  rª   rR  r%  r   s                rC   r  z_GetMore.__init__Ú  sc   € ð ˆŒØˆŒ	Ø"ˆŒØ"ˆŒØ*ˆÔØ.ˆÔØˆŒØˆŒØ!2ˆÔØ ˆŒØAEˆÔØˆŒØˆ�r.   c                ó   — d | _         y rÀ   r(  r!  s    rC   r)  z_GetMore.reset÷  r*  r.   c                ó8   — | j                   › d| j                  › �S r,  r-  r!  s    rC   rK  z_GetMore.namespaceú  r.  r.   c                ó–   — d}| j                   sd}n|j                  dk\  rd}|j                  | j                  | j                  «       |S )NFTrd   )r%  r¨   r1  r#  r�   )r  r«   rF  s      rC   r3  z_GetMore.use_commandý  sC   € ØˆØ�|Š|Ø‰GØ×"Ñ" aÒ'àˆGà×Ñ˜dŸk™k¨4¯<©<Ô8Øˆr.   c                ó*   — || j                   f| _        y rÀ   r5  r6  s     rC   r7  z_GetMore.update_command  r8  r.   c                ó
  — | j                   �| j                   S t        | j                  | j                  | j                  | j
                  | j                  |«      }| j                  r(| j                  j                  |d| j                  |«       |j                  |«       |j                  || j                  | j                  «       |r|j                  | j                  d¬«       || j                  f| _         | j                   S )z1Return a getMore command document for this query.NFr;  )r$  r¬   r©   r™   rG  rª   r   r�   r=  rM   r<  r?  r#  r@  r   )r  r«   r@  rŸ   s       rC   rA  z_GetMore.as_command  sÓ   € ð
 ×ÑÐ'Ø×#Ñ#Ð#ä3Ø�N‰NØ�I‰IØ�N‰NØ×"Ñ"Ø�L‰LØó
ˆð �<Š<Ø�L‰L×"Ñ" 3¨¨t×/CÑ/CÀTÔJØ×Ñ˜CÔ Ø×Ñ˜s D§L¡L°$·+±+Ô>áØ×Ñ˜tŸ{™{°ÐÔ5Ø §¡˜<ˆÔØ×ÑÐr.   c                ór  — | j                  «       }|j                  }|rx| j                  |«      d   }| j                  r| j                  rt
        j                  }nd}t        ||| j                  d| j                  |j                  ¬«      \  }}	}
}||	|
fS t        || j                  | j                  |«      S )zGet a getmore message.r   NrC  )rK  r  rA  rR  r%  r  r  rì   r   rë  r
  rG  r©   )r  Údummy0r«   rF  r«  r´   rL   rÎ   r¶   rÞ   rÙ   r  s               rC   rH  z_GetMore.get_message%  s¦   € ð �^‰^ÓˆØ×&Ñ&ˆáØ—?‘? 4Ó(¨Ñ+ˆDØ�}Š} §¢Ü×.Ñ.‘à�Ü'.Ø�t˜TŸW™W d¨D×,>Ñ,>ÀD×D\ÑD\ô(Ñ$ˆJ˜˜T 1ð ˜s DÐ(Ð(ä˜˜TŸ^™^¨T¯^©^¸SÓAÐAr.   N)r   rR   r™   rR   rG  r6  r©   r6  rë  r8  rM   r"   r�   r7  r#  r*   rª   rÿ  rR  r   r%  r  r   r   rK  rL  rM  rN  rO  rP  )r\  r   r«   r)   rF  r  r:  z0Union[tuple[int, bytes, int], tuple[int, bytes]])rT   r=  r>  r?  r@  rë   r  r)  rK  r3  r7  rA  rH  rB   r.   rC   rT  rT  Å  s÷   „ Ùð€Ið  €Dðàðð ðð ð	ð
 ðð )ðð %ðð 2ðð %ðð )ðð ðð ðð óó: ó(ó	ó(ð @Eð Ø'ð Ø8<ð à	#ó ð6 GLðBØðBØ!4ðBØ?CðBà	9ôBr.   rT  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú_RawBatchQueryc                ó^   •— t         ‰| �  |«       |j                  dk\  ry| j                  syy©Nrd   TF©rF  r3  r¨   r%  ©r  r«   rS   s     €rC   r3  z_RawBatchQuery.use_command;  ó.   ø€ ä‰Ñ˜DÔ!Ø× Ñ  AÒ%àØ—’ØØr.   rM  ©rT   r=  r>  r3  rU  rV  s   @rC   r^  r^  :  ó   ø„ ÷ñ r.   r^  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú_RawBatchGetMorec                ó^   •— t         ‰| �  |«       |j                  dk\  ry| j                  syyr`  ra  rb  s     €rC   r3  z_RawBatchGetMore.use_commandG  rc  r.   rM  rd  rV  s   @rC   rg  rg  F  re  r.   rg  c                  óN   — e Zd ZU dZded<   d
d„Zedd„«       Zdd„Zdd„Z	dd„Z
y	)Ú_CursorAddresszEThe server address (host, port) of a cursor, with namespace property.r   Ú_CursorAddress__namespacec                ó@   — t         j                  | |«      }||_        |S rÀ   )ÚtupleÚ__new__rk  )rü  r+  rK  r  s       rC   rn  z_CursorAddress.__new__W  s   € Ü�}‰}˜S 'Ó*ˆØ$ˆÔØˆr.   c                ó   — | j                   S )zThe namespace this cursor.)rk  r!  s    rC   rK  z_CursorAddress.namespace\  s   € ð ×ÑÐr.   c                ó@   — g | ¢| j                   ‘­j                  «       S rÀ   )rk  Ú__hash__r!  s    rC   rq  z_CursorAddress.__hash__a  s#   € ð *�$Ð)˜×(Ñ(Ñ)×3Ñ3Ó5Ð5r.   c                ó’   — t        |t        «      r2t        | «      t        |«      k(  xr | j                  |j                  k(  S t        S rÀ   )rE  rj  rm  rK  ÚNotImplemented©r  Úothers     rC   Ú__eq__z_CursorAddress.__eq__f  s7   € Ü�eœ^Ô,Ü˜“;¤%¨£,Ñ.ÒT°4·>±>ÀUÇ_Á_Ñ3TÐTÜÐr.   c                ó   — | |k(   S rÀ   rB   rt  s     rC   Ú__ne__z_CursorAddress.__ne__k  s   € Ø˜5‘=Ð Ð r.   N)r+  r'   rK  rR   r:  rj  rL  r9  )ru  Úobjectr:  r  )rT   r=  r>  r?  Ú__annotations__rn  rA  rK  rq  rv  rx  rB   r.   rC   rj  rj  R  s3   … ÙOàÓóð
 ò ó ð ó6ó
ô
!r.   rj  .r9  )rL   rR  rM   r"   r:  rR  )rV   Ú	Exceptionr:  r  )rm   rR   rn   rI  ro   rI  r:  r  )NNN)r™   rR   rL   rI  rŠ   z1Optional[Union[Mapping[str, Any], Iterable[str]]]r‹   r6  rŒ   r6  rš   rÿ  r›   rÿ  rœ   r&   r�   r   r�   r7  rž   rJ  r:  r  )r©   rÿ  r™   rR   rš   rÿ  rª   rÿ  r   zOptional[Any]r«   r)   r:  r  )rm   r6  r³   Úbytesr´   ú.Union[SnappyContext, ZlibContext, ZstdContext]r:  útuple[int, bytes])rm   r6  r³   r|  r:  r~  )rÎ   r6  rn   rI  rÏ   rR   rÐ   ú!Optional[list[Mapping[str, Any]]]rÑ   r8  r:  ztuple[bytes, int, int])rÎ   r6  rn   rI  rÏ   rR   rÐ   r  rÑ   r8  r´   r}  r:  útuple[int, bytes, int, int])rÎ   r6  rn   rI  rÏ   rR   rÐ   r  rÑ   r8  r:  r€  rÀ   )rÎ   r6  rn   rR  rê   rR   rM   zOptional[_ServerMode]rÑ   r8  r´   ú4Union[SnappyContext, ZlibContext, ZstdContext, None]r:  r€  )r›   r6  rï   rR   rð   r6  rñ   r6  rò   rI  ró   r   rÑ   r8  r:  ztuple[bytes, int])r›   r6  rï   rR   rð   r6  rñ   r6  rò   rI  ró   r   rÑ   r8  r´   r}  r:  rQ  )r›   r6  rï   rR   rð   r6  rñ   r6  rò   rI  ró   r   rÑ   r8  r:  rQ  )r›   r6  rï   rR   rð   r6  rñ   r6  rò   rI  ró   r   rÑ   r8  r´   r�  r:  rQ  )rï   rR   rñ   r6  r©   r6  r:  r|  )
rï   rR   rñ   r6  r©   r6  r´   r}  r:  r~  )rï   rR   rñ   r6  r©   r6  r:  r~  )
rï   rR   rñ   r6  r©   r6  r´   r�  r:  r~  )rm   rR   rb  r6  rc  r6  r:  r   )rm   r6  rn   rI  rÐ   rS  rp  r  rÑ   r8  r´   rC  rq  r}  r:  ú#tuple[list[Mapping[str, Any]], int])rm   r6  rn   rI  rÐ   rS  rp  r  rÑ   r8  r´   rC  r:  ú%tuple[bytes, list[Mapping[str, Any]]])rm   r6  rn   rI  rÐ   rS  rp  r  rÑ   r8  r´   rC  r:  ú*tuple[int, bytes, list[Mapping[str, Any]]])rK  rR   rm   r6  rn   rR  rÐ   rS  rÑ   r8  r´   rC  r:  r„  )rœ  r|  r�  úlist[bytes]rž  r…  rp  r  rq  r}  r:  r6  )rn   rI  r‘  r™  r’  rš  rp  r  rÑ   r8  r´   r�  rq  r}  r:  z<tuple[list[Mapping[str, Any]], list[Mapping[str, Any]], int])rn   rI  r‘  r™  r’  rš  rp  r  rÑ   r8  r´   r�  r:  z>tuple[bytes, list[Mapping[str, Any]], list[Mapping[str, Any]]])rn   rI  r‘  r™  r’  rš  rp  r  rÑ   r8  r´   r�  r:  úCtuple[int, bytes, list[Mapping[str, Any]], list[Mapping[str, Any]]])rn   rR  r‘  r™  r’  rš  rÑ   r8  r´   r�  r:  r†  )rK  rR   rm   r6  rn   rR  rÐ   rS  rÑ   r8  r´   rC  r:  rƒ  )rK  rR   rm   r6  rn   rR  rÐ   rS  rÑ   r8  r´   rC  rq  r}  r:  r‚  )‘r?  Ú
__future__r   r  r>   r  Úior   r}  Útypingr   r   r   r   r	   r
   r   r   r   rî   r   r   r   Ú
bson.int64r   Úbson.raw_bsonr   r   r   r   Úpymongo.hellor   Úpymongo.monitoringr   Úpymongor   Ú_use_cÚImportErrorÚpymongo.errorsr   r   r   r   r   r   r   r    Úpymongo.read_preferencesr!   r"   Úpymongo.compression_supportr#   r$   r%   Úpymongo.read_concernr&   Úpymongo.typingsr'   r(   r)   r*   r+   rA   r@   r¬  Ú_INSERTÚ_UPDATEÚ_DELETEÚ_EMPTYrÏ  rÌ  rÐ  rÿ   r…  rÍ  rÎ  rè   r<   rz  rD   rN   rW   rZ   rs   r˜   r“   r£   r¬   r  Úpackr°   r±   r¸   rº   r½   rÌ   rÉ   rÊ   rÛ   rà   rã   rì   rõ   rù   rû   Ú_query_messagerý   r   r  r  r  Ú_get_more_messager
  rk  r  rC  rX  rd  r`  r{  r€  r‚  r†  rJ  r�  r­  r¢  r¾  rÀ  rÂ  rÄ  r�  r[  rÈ  r×  r  r  rý  r  r  rT  r^  rg  rm  rj  rB   r.   rC   ú<module>r�     s—  ðòõ #ã Û Û Ý "÷
÷ 
õ 
ó ß <Ñ <Ý ÷ó õ &Ý .ðÝ!à€F÷	÷ 	ó 	÷ AáßSÑSÝ0÷õ ð €	Ø€	ð Ð à
€Ø
€Ø
€à	€Ø€Ø
€Ø€Ø€Ø.€Ø.€àÐ1ØÐ/ØÐ/ð€ð ØØØñ	€
ñ COØ!*ôCÐ Ð ?ó ó
0ð
Ø
"ðØ5@ðàóó$Oó
ð!Øð!Ø.ð!Ø8Ið!àó!ðJ ØØØØñ€ð ØØØØØØØØØ#Ø"Øñ€
ð2 .2Ø04Ø%)ð4Ø
ð4à
ð4ð Bð4ð ð	4ð
 ð4ð ð4ð ð4ð ð4ð +ð4ð .ð4ð #ð4ð ó4ðnØðà
ðð ðð %ð	ð
 ðð ðð óð& )˜6Ÿ=™=¨Ó4×9Ñ9Ð ØÐ ð+Øð+Øð+Ø&Tð+àó+ð& ˆv�}‰}˜WÓ%×*Ñ*€óð ˆF�M‰M˜$Ó×$Ñ$€	Ø'˜&Ÿ-™-¨Ó.×3Ñ3Ð ØˆV�]‰]˜4Ó ×%Ñ%€
ð4Øð4àð4ð ð4ð ,ð	4ð
 ð4ð ó4ð@/Øð/àð/ð ð/ð ,ð	/ð
 ð/ð 
8ð/ð !ó/ð
=Øð
=àð
=ð ð
=ð ,ð	
=ð
 ð
=ð !ó
=ñ 
Ø$×,Ñ,Ðð AEð'Øð'à%ð'ð ð'ð +ð	'ð
 ð'ð 
>ð'ð !ó'ð@Øðàðð ðð ð	ð
 ðð 0ðð ðð óð>#Øð#àð#ð ð#ð ð	#ð
 ð#ð 0ð#ð ð#ð 
8ð#ð ó#ð$#Øð#àð#ð ð#ð ð	#ð
 ð#ð 0ð#ð ð#ð ó#ñ" 
Ø#×2Ñ2Ðð AEðØðàðð ðð ð	ð
 ðð 0ðð ðð 
>ðð óð(  �&—-‘- Ó%×*Ñ*€ó	ð[Øð[àð[ð ð[ð 
8ð	[ð
 ó[ð[Øð[Ø),ð[Ø9<ð[àó[ñ 
Ø&×8Ñ8Ðð AEð		MØð	Màð	Mð ð	Mð 
>ð		Mð
 ó	Mð  ÐØˆ^Øˆ^ð€÷[
ñ [
ô|4Ð-ô 4ôn#Ð!2ô #ó0Lð& Ð ðAØðAàðAð "ðAð 
ð	Að
 ðAð 
ðAð 
ðAð )óAðH#Øð#àð#ð "ð#ð 
ð	#ð
 ð#ð 
ð#ð +ó#ñ" 
Ø&×=Ñ=Ðð$Øð$àð$ð "ð$ð 
ð	$ð
 ð$ð 
ð$ð 0ó$ð$/Øð/àð/ð "ð/ð 
ð	/ð
 ð/ð 
ð/ð 0ó/ñ8 
Ø×/Ñ/€OðEØðEàðEð &ðEð "ð	Eð
 ðEð 
ðEð 0óEô*:Ð3ô :ðz Ð ð-Øð-à$ð-ð $ð-ð 
ð	-ð
 
ð-ð 	ó-ð`s+Øðs+à3ðs+ð ðs+ð 
ð	s+ð
 ðs+ð 
!ðs+ð 
ðs+ð Bós+ðl3Øð3à3ð3ð ð3ð 
ð	3ð
 ð3ð 
!ð3ð Dó3ð&4Øð4à3ð4ð ð4ð 
ð	4ð
 ð4ð 
!ð4ð Ió4ð(?Øð?à3ð?ð ð?ð 
ð	?ð
 ð?ð 
!ð?ð Ió?ð<SØ%ðSà3ðSð ðSð ð	Sð
 
!ðSð IóSð.#Øð#àð#ð &ð#ð "ð	#ð
 ð#ð 
ð#ð +ó#ñ 
Ø$-×$KÒ$KÐ!ðHØðHàðHð &ðHð "ð	Hð
 ðHð 
ðHð 
ðHð )óH÷VpAñ pA÷fQ,ñ Q,ðj ×Ò�h—o’oØ
‡N‚N�F—M’MðU€ÐQó ÷t
ñ t
÷nrBñ rBôj	�Vô 	ô	�xô 	ô!�U˜3 ˜8‘_õ !øðu8 ò ØƒFðús   ÁS ÓSÓS