Ë
    @Øïi)W  ã                   óà  — d Z ddlZddlZddlZddlZddlZddlmZ 	 ddlZej                  ej                  ej                  dœZ eed«      rej                  nej                  ed<    eed«      xr ej                   Zdd	lmZmZmZmZmZmZ d
dlmZ d
dlmZmZmZ d
dl m!Z! d
dl"m#Z# de$de%fd„Z&de'de(dee'   fd„Z) G d„ d«      Z* G d„ de*«      Z+ G d„ de*«      Z,y# e$ r dZY Œkw xY w)zGModule implementing low-level socket communication with MySQL servers.
é    N)Údeque)ÚTLSv1úTLSv1.1úTLSv1.2ÚPROTOCOL_TLSúTLSv1.3ÚHAS_TLSv1_3F)ÚAnyÚDequeÚListÚOptionalÚTupleÚUnioné   )ÚMAX_PACKET_LENGTH)ÚInterfaceErrorÚNotSupportedErrorÚOperationalError)ÚStrOrBytesPath)Úinit_bytearrayÚerrÚreturnc                 óf   — | j                   st        | «      S | j                   › d| j                  › �S )z_Reformat the IOError error message

    This function reformats the IOError error message.
    ú )ÚerrnoÚstrÚstrerror)r   s    úQ/var/www/html/aiagents/fe/lib/python3.12/site-packages/mysql/connector/network.pyÚ_strioerrorr   E   s-   € ð
 �9Š9Ü�3‹xˆØ�i‰iˆ[˜˜#Ÿ,™,˜Ð(Ð(ó    ÚbufÚpktnrc                 óL  — g }t        | «      }t        }||kD  rI|j                  dt        j                  d|«      z   | d| z   «       | |d } t        | «      }|dz   }||kD  rŒI|j                  t        j                  d|«      dd t        j                  d|«      z   | z   «       |S )z0Prepare a packet for sending to the MySQL serveró   ÿÿÿú<BNr   ú<Ir   é   )Úlenr   ÚappendÚstructÚpack)r!   r"   ÚpktsÚpllenÚ	maxpktlens        r   Ú_prepare_packetsr/   O   s¥   € à€DÜ�‹H€EÜ!€IØ
�)Ò
Ø�‰�O¤f§k¡k°$¸Ó&>Ñ>ÀÀZÀiÀÑPÔQØ�)�*ˆoˆÜ�C“ˆØ˜‘	ˆð	 �)Ó
ð
 	‡K�K”—‘˜D %Ó(¨¨1Ð-´·±¸DÀ%Ó0HÑHÈ3ÑNÔOØ€Kr    c                   óD  — e Zd ZdZdd„Zdefd„Zdefd„Zdefd„Z	defd„Z
dd	„Zdd
„Zdd„Z	 	 d dedee   dee   ddfd„ZeZ	 	 d dedee   dee   ddfd„Zdefd„ZeZdeddfd„Zdee   fd„Zdee   ddfd„Z	 	 	 	 d!dedededededee   deee      ddfd„Zy)"ÚBaseMySQLSocketa  Base class for MySQL socket communication

    This class should not be used directly but overloaded, changing the
    at least the open_connection()-method. Examples of subclasses are
      mysql.connector.network.MySQLTCPSocket
      mysql.connector.network.MySQLUnixSocket
    r   Nc                 óv   — d | _         d | _        d| _        d| _        t	        «       | _        d | _        d| _        y )Néÿÿÿÿi    )ÚsockÚ_connection_timeoutÚ_packet_numberÚ_compressed_packet_numberr   Ú_packet_queueÚserver_hostÚrecvsize©Úselfs    r   Ú__init__zBaseMySQLSocket.__init__f   s:   € à-1ˆŒ	Ø26ˆÔ Ø#%ˆÔØ.0ˆÔ&Ü/4«wˆÔØ*.ˆÔØ!ˆ�r    c                 ón   — | j                   dz   | _         | j                   dkD  rd| _         | j                   S )zIncrements the packet numberr   éÿ   r   )r6   r;   s    r   Únext_packet_numberz"BaseMySQLSocket.next_packet_numberp   s7   € à"×1Ñ1°AÑ5ˆÔØ×Ñ Ò$Ø"#ˆDÔØ×"Ñ"Ð"r    c                 ón   — | j                   dz   | _         | j                   dkD  rd| _         | j                   S )z'Increments the compressed packet numberr   r?   r   )r7   r;   s    r   Únext_compressed_packet_numberz-BaseMySQLSocket.next_compressed_packet_numberw   s7   € à)-×)GÑ)GÈ!Ñ)KˆÔ&Ø×)Ñ)¨CÒ/Ø-.ˆDÔ*Ø×-Ñ-Ð-r    c                 ó   — t         ‚)zOpen the socket©ÚNotImplementedErrorr;   s    r   Úopen_connectionzBaseMySQLSocket.open_connection~   ó   € ä!Ð!r    c                 ó   — t         ‚)zGet the location of the socketrD   r;   s    r   Úget_addresszBaseMySQLSocket.get_address‚   rG   r    c                 óº   — 	 | j                   j                  t        j                  «       | j                   j	                  «        | `y# t        t        f$ r Y yw xY w)z&Shut down the socket before closing itN)r4   ÚshutdownÚsocketÚ	SHUT_RDWRÚcloser8   ÚAttributeErrorÚOSErrorr;   s    r   rK   zBaseMySQLSocket.shutdown†   sJ   € ð	Ø�I‰I×Ñœv×/Ñ/Ô0Ø�I‰I�O‰OÔØÑ"øÜ¤Ð(ò 	Ùð	ús   ‚AA ÁAÁAc                 óh   — 	 | j                   j                  «        | `y# t        t        f$ r Y yw xY w)zClose the socketN)r4   rN   r8   rO   rP   r;   s    r   Úclose_connectionz BaseMySQLSocket.close_connection�   s2   € ð	Ø�I‰I�O‰OÔØÑ"øÜ¤Ð(ò 	Ùð	ús   ‚ Ÿ1°1c                 ó$   — | j                  «        y ©N)rK   r;   s    r   Ú__del__zBaseMySQLSocket.__del__—   s   € Ø�‰�r    r!   Úpacket_numberÚcompressed_packet_numberc           	      óP  — |}|€| j                  «        n|| _        t        || j                  «      }|D ]  }	 | j                  j	                  |«       Œ  y# t
        $ r,}t        d| j                  «       t        |«      f¬«      |‚d}~wt        $ r}t        d¬«      |‚d}~ww xY w)z Send packets to the MySQL serverNé  ©r   ÚvalueséÖ  ©r   )
r@   r6   r/   r4   ÚsendallÚIOErrorr   rI   r   rO   )r<   r!   rV   rW   Ú_ÚpacketsÚpacketr   s           r   Ú
send_plainzBaseMySQLSocket.send_plainš   s­   € ð %ˆØÐ Ø×#Ñ#Õ%à"/ˆDÔÜ" 3¨×(;Ñ(;Ó<ˆØò 	<ˆFð<Ø—	‘	×!Ñ! &Õ)ñ	<øô ò Ü&Ø¨×(8Ñ(8Ó(:¼KÈÓ<LÐ'Môàðûô "ò <Ü&¨TÔ2¸Ð;ûð<ús#   ¹AÁ	B%Á 'BÂB%ÂB Â B%c           	      ó®  — |€| j                  «        n|| _        |€| j                  «        n|| _        | j                  }t	        |«      }g }t
        }||kD  �rØt        ||«      }dj                  |«      }	~t        j                  |	dd «      }
t        j                  dt	        |
«      «      dd t        j                  d| j                  «      z   dz   }|j                  ||
z   «       |	dd }	t	        |	«      }| j                  «        ||kD  r˜t        j                  |	d| «      }
t        j                  dt	        |
«      «      dd t        j                  d| j                  «      z   d	z   }|j                  ||
z   «       |	|d }	t	        |	«      }| j                  «        ||kD  rŒ˜|	r†t        j                  |	«      }
t        j                  dt	        |
«      «      dd t        j                  d| j                  «      z   t        j                  d|«      dd z   }|j                  ||
z   «       ~	�n0t        j                  d|«      dd t        j                  d|«      z   |z   }t	        |«      }|d
kD  r…t        j                  |«      }
|j                  t        j                  dt	        |
«      «      dd t        j                  d| j                  «      z   t        j                  d|«      dd z   |
z   «       nht        j                  d|«      dd t        j                  d| j                  «      z   t        j                  dd«      dd z   }|j                  ||z   «       |D ]  }	 | j                  j                  |«       Œ  y# t        $ r,}t!        d| j#                  «       t%        |«      f¬«      |‚d}~wt&        $ r}t!        d¬«      |‚d}~ww xY w)z+Send compressed packets to the MySQL serverNr    é @  r&   r   r'   r%   s    @ r$   é2   rY   rZ   r\   r]   )r@   r6   rB   r7   r(   r   r/   ÚjoinÚzlibÚcompressr*   r+   r)   r4   r^   r_   r   rI   r   rO   )r<   r!   rV   rW   r"   r-   Úzpktsr.   r,   ÚtmpbufÚzbufÚheaderÚpktÚ
zip_packetr   s                  r   Úsend_compressedzBaseMySQLSocket.send_compressed´   s›  € ð Ð Ø×#Ñ#Õ%à"/ˆDÔØ#Ð+Ø×.Ñ.Õ0à-EˆDÔ*à×#Ñ#ˆÜ�C“ˆØˆÜ%ˆ	Ø�9ÓÜ# C¨Ó/ˆDØ—X‘X˜d“^ˆFØÜ—=‘= ¨¨ Ó0ˆDä—‘˜D¤# d£)Ó,¨Q¨qÐ1Ü—+‘+˜d D×$BÑ$BÓCñDà!ñ"ð ð
 �L‰L˜ $™Ô'Ø˜E˜F�^ˆFÜ˜“KˆEØ×.Ñ.Ô0Ø˜)Ò#Ü—}‘} V¨J¨YÐ%7Ó8�ä—K‘K ¤c¨$£iÓ0°°1Ð5Ü—k‘k $¨×(FÑ(FÓGñHà%ñ&ð ð
 —‘˜V d™]Ô+Ø 	 
Ð+�Ü˜F›�Ø×2Ñ2Ô4ð ˜)Ó#ñ Ü—}‘} VÓ,�ä—K‘K ¤c¨$£iÓ0°°1Ð5Ü—k‘k $¨×(FÑ(FÓGñHä—k‘k $¨Ó.¨q°Ð3ñ4ð ð
 —‘˜V d™]Ô+Úä—+‘+˜d EÓ*¨1¨QÐ/´&·+±+¸dÀEÓ2JÑJÈSÑPˆCÜ˜“HˆEØ�rŠzÜ—}‘} SÓ)�Ø—‘Ü—K‘K ¤c¨$£iÓ0°°1Ð5Ü—k‘k $¨×(FÑ(FÓGñHä—k‘k $¨Ó.¨q°Ð3ñ4ð ñõô —K‘K  eÓ,¨Q¨qÐ1Ü—k‘k $¨×(FÑ(FÓGñHä—k‘k $¨Ó*¨1¨QÐ/ñ0ð ð
 —‘˜V c™\Ô*àò 	<ˆJð<Ø—	‘	×!Ñ! *Õ-ñ	<øô ò Ü&Ø¨×(8Ñ(8Ó(:¼KÈÓ<LÐ'Môàðûô "ò <Ü&¨TÔ2¸Ð;ûð<ús$   Í(NÎ	OÎ'N6Î6OÏOÏOc                 óL  — 	 t        d«      }d}|dk  rB| j                  j                  d|z
  «      }|st        d¬«      ‚||z  }t	        |«      }|dk  rŒB|d   | _        t        j                  d|dd dz   «      d   }|}|j                  t        |«      «       t        |«      }|dd	 }|r?| j                  j                  ||«      }|dk(  r|dkD  rt        d¬«      ‚||d	 }||z  }|rŒ?|S # t        $ r,}t        d
| j                  «       t        |«      f¬«      |‚d	}~ww xY w)z%Receive packets from the MySQL serverr    r   é   éÝ  r]   r'   r&   ó    NrY   rZ   )Ú	bytearrayr4   Úrecvr   r(   r6   r*   ÚunpackÚextendÚ
memoryviewÚ	recv_intor_   r   rI   r   )	r<   rb   Ú
packet_lenÚchunkÚpayload_lenÚrestÚpacket_viewÚreadr   s	            r   Ú
recv_plainzBaseMySQLSocket.recv_plain  s@  € ð	ä˜s“^ˆFØˆJØ˜q’.ØŸ	™	Ÿ™ q¨:¡~Ó6�ÙÜ(¨tÔ4Ð4Ø˜%‘�Ü  ›[�
ð ˜q“.ð #)¨¡)ˆDÔÜ Ÿ-™-¨¨f°Q°q¨k¸GÑ.CÓDÀQÑGˆKð ˆDØ�M‰Mœ) KÓ0Ô1Ü$ VÓ,ˆKØ% a b˜/ˆKÙØ—y‘y×*Ñ*¨;¸Ó=�Ø˜1’9 ¨¢Ü(¨tÔ4Ð4Ø)¨$¨%Ð0�Ø˜‘�ò ð ˆMøÜò 	Ü"Ø D×$4Ñ$4Ó$6¼ÀCÓ8HÐ#Iôàðûð	ús%   ‚AC. ÁBC. Ã,C. Ã.	D#Ã7'DÄD#Úpacket_bunchc                 ó    — |rLt        j                  d|dd dz   «      d   }| j                  j                  |d|dz    «       ||dz   d }|rŒKyy)zSplit compressed payloadr&   r   r'   rt   rr   N)r*   rw   r8   r)   )r<   r‚   Úpayload_lengths      r   Ú_split_zipped_payloadz%BaseMySQLSocket._split_zipped_payload+  s]   € áÜ#Ÿ]™]¨4°¸aÀÐ1BÀWÑ1LÓMÈaÑPˆNØ×Ñ×%Ñ% l°1°~ÈÑ7IÐ&JÔKØ'¨¸Ñ(:Ð(<Ð=ˆLô r    c                 ó¬  — 	 | j                   j                  «       }|d   | _        |S # t        $ r Y nw xY wt	        d«      }g }	 | j
                  j                  d«      }|r?t        |«      dk  r1||z  }| j
                  j                  d«      }|rt        |«      dk  rŒ1|�r„t        |«      dk  rt        d¬«      ‚t        j                  d|dd d	z   «      d   }|d   | _        t        j                  d|d
d d	z   «      d   }t        |«      }t        |«      |k  rI| j
                  j                  |t        |«      z
  «      }|st        d¬«      ‚||z   }t        |«      |k  rŒI|dk(  r7| j                  |«       | j                   j                  «       }|d   | _        |S |j                  ||f«       |dk  rnkt        d«      }| j
                  j                  d«      }|r?t        |«      dk  r1||z  }| j
                  j                  d«      }|rt        |«      dk  rŒ1|r�Œ„n8# t        $ r,}	t!        d| j#                  «       t%        |	«      f¬«      |	‚d}	~	ww xY wt        d«      }
|D ]  \  }}|
t'        j(                  |«      z  }
Œ | j                  |
«       ~
	 | j                   j                  «       }|d   | _        |S # t        $ r Y yw xY w)z0Receive compressed packets from the MySQL serverr'   r    r   é   rs   r]   r&   r   rt   rr   re   rY   rZ   N)r8   Úpopleftr6   Ú
IndexErrorru   r4   rv   r(   r   r*   rw   r7   r   r…   r)   r_   r   rI   r   rh   Ú
decompress)r<   rn   rm   ra   ÚabyteÚzip_payload_lengthr„   Úzip_payloadr|   r   ÚtmpÚpayloads               r   Úrecv_compressedzBaseMySQLSocket.recv_compressed2  sÚ  € ð	Ø×$Ñ$×,Ñ,Ó.ˆCØ"% a¡&ˆDÔØˆJøÜò 	Ùð	úô ˜3“ˆØˆð.	Ø—I‘I—N‘N 1Ó%ˆEÙœC ›K¨!šOØ˜%‘�ØŸ	™	Ÿ™ qÓ)�ñ œC ›K¨!›Oò Ü�v“; ’?Ü(¨tÔ4Ð4ô &,§]¡]°4¸ÀÀ!¸ÀwÑ9NÓ%OÐPQÑ%RÐ"Ø17¸±�Ô.ô "(§¡¨t°V¸A¸a°[À7Ñ5JÓ!KÈAÑ!N�ä,¨UÓ3�Ü˜+Ó&Ð);Ò;Ø ŸI™IŸN™NÐ+=ÄÀKÓ@PÑ+PÓQ�EÙ Ü,°4Ô8Ð8Ø"-°Ñ"5�Kô	 ˜+Ó&Ð);Ó;ð " QÒ&Ø×.Ñ.¨{Ô;Ø×,Ñ,×4Ñ4Ó6�CØ*-¨a©&�DÔ'Ø�Jà—‘ °Ð<Ô=à%¨Ò.àô (¨Ó,�ØŸ	™	Ÿ™ qÓ)�Ù¤ F£¨a¢Ø˜e‘O�FØ ŸI™IŸN™N¨1Ó-�Eñ ¤ F£¨a£óE ùôL ò 	Ü"Ø D×$4Ñ$4Ó$6¼ÀCÓ8HÐ#Iôàðûð	úô ˜SÓ!ˆØ'.ò 	,Ñ#ˆN˜Gà”4—?‘? 7Ó+Ñ+‰Cð	,ð 	×"Ñ" 3Ô'Øð	Ø×$Ñ$×,Ñ,Ó.ˆCØ"% a¡&ˆDÔØˆJøÜò 	ØØð	úsQ   ‚%( ¨	4³4ÁAH) Â!CH) Å(;H) Æ$A?H) È$H) È)	IÈ2'IÉIÊ!%K Ë	KËKÚtimeoutc                 ób   — || _         | j                  r| j                  j                  |«       yy)zSet the connection timeoutN)r5   r4   Ú
settimeout)r<   r‘   s     r   Úset_connection_timeoutz&BaseMySQLSocket.set_connection_timeout~  s(   € à#*ˆÔ Ø�9Š9Ø�I‰I× Ñ  Õ)ð r    ÚcaÚcertÚkeyÚverify_certÚverify_identityÚcipher_suitesÚtls_versionsc                 óÒ  — | j                   st        d¬«      ‚	 |rt        j                  }n#|rt        j                  }nt        j
                  }|�|st        j                  «       }	|sÕd|	_        nÍ|j                  d¬«       |d   }
t        s|
dk(  rt        |«      d	kD  r|d	   }
t        |
   }t        j                  |«      }	|
dk(  rud
|vr#|	xj                  t        j                  z  c_        d|vr#|	xj                  t        j                  z  c_        d|vr#|	xj                  t        j                   z  c_        d|	_        ||	_        |	j%                  «        |r	 |	j'                  |«       |r	 |	j/                  ||«       |r|	j1                  |«       t3        | d«      r-|	j5                  | j                   | j6                  ¬«      | _         n |	j5                  | j                   «      | _         |rùd|	_        | j6                  r| j6                  gng }t8        j:                  dk(  rM| j6                  dk(  r>ddg}t=        j>                  | j6                  «      }|jA                  |d   g|d	   z   «       d}g }|D ]4  }	 t        jB                  | j                   jE                  «       |«       d} n |s7| j                   j-                  «        t        ddjM                  |«      › �«      ‚yy# t(        t        j*                  f$ r.}| j                   j-                  «        t        d|› �«      |‚d}~ww xY w# t(        t        j*                  f$ r.}| j                   j-                  «        t        d|› �«      |‚d}~ww xY w# t        jF                  $ r%}|jI                  tK        |«      «       Y d}~�Œ9d}~ww xY w# tN        $ r}tQ        d«      |‚d}~wt        j*                  t(        f$ r,}t        d| jS                  «       tU        |«      f¬«      |‚d}~wt        jF                  $ r}t        tK        |«      «      |‚d}~wtV        $ r}t        tK        |«      «      |‚d}~ww xY w)zSwitch the socket to use SSLi   r]   NFT)Úreverser   r   r   r   r   r   zInvalid CA Certificate: zInvalid Certificate/Key: r9   )Úserver_hostnameÚntÚ	localhostú	127.0.0.1z"Unable to verify server identity: z, z&Python installation has no SSL supportrY   rZ   ),r4   r   ÚsslÚCERT_REQUIREDÚCERT_OPTIONALÚ	CERT_NONEÚcreate_default_contextÚcheck_hostnameÚsortÚTLS_V1_3_SUPPORTEDr(   ÚTLS_VERSIONSÚ
SSLContextÚoptionsÚOP_NO_TLSv1_2ÚOP_NO_TLSv1_1ÚOP_NO_TLSv1Úverify_modeÚload_default_certsÚload_verify_locationsr_   ÚSSLErrorrN   Úload_cert_chainÚset_ciphersÚhasattrÚwrap_socketr9   ÚosÚnamerL   Úgethostbyaddrrx   Úmatch_hostnameÚgetpeercertÚCertificateErrorr)   r   rg   Ú	NameErrorr   rI   r   rE   )r<   r•   r–   r—   r˜   r™   rš   r›   Ú	cert_reqsÚcontextÚtls_versionÚssl_protocolr   Ú	hostnamesÚaliasesÚmatch_foundÚerrsÚhostnames                     r   Úswitch_to_sslzBaseMySQLSocket.switch_to_ssl„  s÷  € ð �yŠyÜ  tÔ,Ð,ð_	4ÙÜ×-Ñ-‘	Ù Ü×-Ñ-‘	äŸM™M�	àÐ#©<Ü×4Ñ4Ó6�Ù&Ø-2�GÕ*à×!Ñ!¨$Ð!Ô/à*¨1™o�å*Ø# yÒ0Ü˜LÓ)¨AÒ-à".¨q¡/�KÜ+¨KÑ8�ÜŸ.™.¨Ó6�à )Ò+Ø ¨Ñ4ØŸš¬3×+<Ñ+<Ñ<�Ø ¨Ñ4ØŸš¬3×+<Ñ+<Ñ<�Ø lÑ2ØŸš¬3¯?©?Ñ:�à%*ˆGÔ"Ø"+ˆGÔØ×&Ñ&Ô(áðTØ×1Ñ1°"Ô5ñ ðUØ×+Ñ+¨D°#Ô6ñ Ø×#Ñ# MÔ2ä�t˜]Ô+Ø#×/Ñ/Ø—I‘I¨t×/?Ñ/?ð 0ó �•	ð $×/Ñ/°·	±	Ó:�”	áØ)-�Ô&Ø=A×=MÒ=M¨×(8Ñ(8Ñ'9ÐSU�	Ü—7‘7˜d’? t×'7Ñ'7¸;Ò'FØ!,¨kÐ :�IÜ$×2Ñ2°4×3CÑ3CÓD�GØ×$Ñ$ g¨a¡j \°G¸A±JÑ%>Ô?Ø#�Ø�Ø )ò �Hðô
 ×*Ñ*¨4¯9©9×+@Ñ+@Ó+BÀHÔMð
 '+˜Ùðñ #Ø—I‘I—O‘OÔ%Ü(Ø<¸T¿Y¹YÀt»_Ð<MÐNóð ð #ð- øô'  ¤§¡Ð.ò TØ—I‘I—O‘OÔ%Ü(Ð+CÀCÀ5Ð)IÓJÐPSÐSûðTûô  ¤§¡Ð.ò UØ—I‘I—O‘OÔ%Ü(Ð+DÀSÀEÐ)JÓKÐQTÐTûðUûô< ×/Ñ/ò .ØŸ™¤C¨£H×-Ò-ûð.ûô ò 	WÜ#Ð$LÓMÐSVÐVûÜ—‘œgÐ&ò 	Ü Ø D×$4Ñ$4Ó$6¼ÀCÓ8HÐ#Iôàðûô ×#Ñ#ò 	4Ü ¤ S£Ó*°Ð3ûÜ"ò 	4Ü ¤ S£Ó*°Ð3ûð	4ús¯   šEN= Å K. Å1N= Å4L8 ÆC9N= Ê .NÊ.>N= Ë.L5Ì)L0Ì0L5Ì5N= Ì8M?Í)M:Í:M?Í?N= ÎN:ÎN5Î/N= Î5N:Î:N= Î=	Q&ÏOÏQ&Ï.'PÐQ&Ð+Q Ñ Q&ÑQ!Ñ!Q&©r   N)NN)FFNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   Úintr@   rB   r
   rF   rI   rK   rR   rU   Úbytesr   rc   Úsendrp   ru   r�   rv   r…   r�   r”   r   Úboolr   r   rÈ   © r    r   r1   r1   ]   s—  „ ñó"ð# Có #ð.¨só .ð" ó "ð"˜Só "óóóð (,Ø26ñ	<àð<ð   ‘}ð<ð #+¨3¡-ð	<ð
 
ó<ð0 €Dð
 (,Ø26ñ	Q<àðQ<ð   ‘}ðQ<ð #+¨3¡-ð	Q<ð
 
óQ<ðf ˜Ió  ðD €Dð>°)ð >Àó >ðJ ¨)Ñ!4ó JðX*¨h°s©mð *Àó *ð "Ø %Ø'+Ø,0ñm4àðm4ð ðm4ð ð	m4ð
 ðm4ð ðm4ð   ‘}ðm4ð ˜t C™yÑ)ðm4ð 
ôm4r    r1   c                   óV   ‡ — e Zd ZdZddeddfˆ fd„Zdefd„Zdd„Zded	eddfd
„Z	ˆ xZ
S )ÚMySQLUnixSocketzoMySQL socket class using UNIX sockets

    Opens a connection through the UNIX socket of the MySQL Server.
    Úunix_socketr   Nc                 ó0   •— t         ‰| �  «        || _        y rT   )Úsuperr=   rÕ   )r<   rÕ   Ú	__class__s     €r   r=   zMySQLUnixSocket.__init__ú  s   ø€ Ü‰ÑÔØ +ˆÕr    c                 ó   — | j                   S rT   )rÕ   r;   s    r   rI   zMySQLUnixSocket.get_addressþ  s   € Ø×ÑÐr    c                 óº  — 	 t        j                   t         j                  t         j                  «      | _        | j                  j	                  | j
                  «       | j                  j                  | j                  «       y # t        $ r,}t        d| j                  «       t        |«      f¬«      |‚d }~wt        $ r}t        t        |«      «      |‚d }~ww xY w)NiÒ  rZ   )rL   ÚAF_UNIXÚSOCK_STREAMr4   r“   r5   ÚconnectrÕ   r_   r   rI   r   Ú	Exceptionr   )r<   r   s     r   rF   zMySQLUnixSocket.open_connection  s¬   € ð	4ÜŸ™Ü—‘¤× 2Ñ 2óˆDŒIð �I‰I× Ñ  ×!9Ñ!9Ô:Ø�I‰I×Ñ˜d×.Ñ.Õ/øÜò 	Ü Ø D×$4Ñ$4Ó$6¼ÀCÓ8HÐ#Iôàðûô ò 	4Ü ¤ S£Ó*°Ð3ûð	4ús$   ‚BB Â	CÂ'B4Â4CÃ CÃCÚargsÚkwargsc                 ó8   — t        j                  dt        «       y)zSwitch the socket to use SSL.z2SSL is disabled when using unix socket connectionsN)ÚwarningsÚwarnÚWarning)r<   rß   rà   s      r   rÈ   zMySQLUnixSocket.switch_to_ssl  s   € ô 	�‰Ø@Üõ	
r    )z/tmp/mysql.sockrÉ   )rÊ   rË   rÌ   rÍ   r   r=   rI   rF   r
   rÈ   Ú__classcell__©rØ   s   @r   rÔ   rÔ   ô  sI   ø„ ññ
, Cð ,Àõ ,ð ˜Só  ó4ð
Øð
Ø$'ð
à	÷
r    rÔ   c            	       óL   ‡ — e Zd ZdZ	 d
dedededdfˆ fd„Zdefd„Zdd	„Z	ˆ xZ
S )ÚMySQLTCPSocketzXMySQL socket class using TCP/IP

    Opens a TCP/IP connection to the MySQL Server.
    ÚhostÚportÚ
force_ipv6r   Nc                 óZ   •— t         ‰| �  «        || _        || _        || _        d| _        y )Nr   )r×   r=   r9   Úserver_portrë   Ú_family)r<   ré   rê   rë   rØ   s       €r   r=   zMySQLTCPSocket.__init__  s.   ø€ ô 	‰ÑÔØ $ˆÔØ $ˆÔØ *ˆŒØˆ�r    c                 ó8   — | j                   › d| j                  › �S )Nú:)r9   rí   r;   s    r   rI   zMySQLTCPSocket.get_address(  s!   € Ø×"Ñ"Ð# 1 T×%5Ñ%5Ð$6Ð7Ð7r    c           	      ó¨  — d}	 t        j                  | j                  | j                  dt         j                  t         j
                  «      }|D ]B  }| j                  r|d   t         j                  k(  r|} n|d   t         j                  k(  sŒ@|} n | j                  r|d   €t        d| j                  › �«      ‚|d   €|d   }|\  | _        }}}}	 t        j                   | j                  ||«      | _        | j                  j                  | j                   «       | j                  j#                  |«       y# t        $ r,}t        d| j                  «       t        |«      f¬«      |‚d}~ww xY w# t        $ r3}t        d| j                  | j                  t        |«      f¬«      |‚d}~wt$        $ r}t'        t)        |«      «      |‚d}~ww xY w)z.Open the TCP/IP connection to the MySQL server)NNNNNr   NzNo IPv6 address found for iÓ  rZ   )rL   Úgetaddrinfor9   rí   rÜ   ÚSOL_TCPrë   ÚAF_INET6ÚAF_INETr   r_   rI   r   rî   r4   r“   r5   rÝ   rÞ   r   r   )	r<   ÚaddrinfoÚ	addrinfosÚinfor   ÚsocktypeÚprotor`   Úsockaddrs	            r   rF   zMySQLTCPSocket.open_connection+  sÃ  € ð +ð 	ð	Ü×*Ñ*Ø× Ñ Ø× Ñ ØÜ×"Ñ"Ü—‘óˆIð "ò �Ø—?’? t¨A¡w´&·/±/Ò'AØ#�HÙØ˜‘7œfŸn™nÓ,Ø#�HÙðð �Š 8¨A¡;Ð#6Ü$Ð'AÀ$×BRÑBRÐASÐ%TÓUÐUØ˜‰{Ð"Ø$ Q™<�ð 8@Ñ4ˆŒ�x ¨¨8ð	6ÜŸ™ d§l¡l°H¸eÓDˆDŒIØ�I‰I× Ñ  ×!9Ñ!9Ô:Ø�I‰I×Ñ˜hÕ'øô ò 	Ü Ø D×$4Ñ$4Ó$6¼ÀCÓ8HÐ#Iôàðûð	ûô ò 	Ü Øà×$Ñ$Ø×$Ñ$Ü Ó$ðôð ðûô ò 	6Ü"¤3 s£8Ó,°#Ð5ûð	6úsC   „B
D< Â8D< ÃA&E4 Ä<	E1Å'E,Å,E1Å4	GÅ=.F+Æ+GÆ7GÇG)r¡   iê  FrÉ   )rÊ   rË   rÌ   rÍ   r   rÎ   rÑ   r=   rI   rF   rå   ræ   s   @r   rè   rè     sE   ø„ ñð MRñØðØ-0ðØEIðà	õð8˜Só 8÷86r    rè   )-rÍ   r¸   rL   r*   râ   rh   Úcollectionsr   r¢   ÚPROTOCOL_TLSv1ÚPROTOCOL_TLSv1_1ÚPROTOCOL_TLSv1_2rª   r¶   r   ÚPROTOCOL_SSLv23r	   r©   ÚImportErrorÚtypingr
   r   r   r   r   r   Ú	constantsr   Úerrorsr   r   r   Útypesr   Úutilsr   r_   r   r   rÏ   rÎ   r/   r1   rÔ   rè   rÒ   r    r   ú<module>r     s  ðñ>ó 
Û Û Û Û å ðÛð ×#Ñ#Ø×'Ñ'Ø×'Ñ'ñ€Lñ �3˜Ô'ð 	×Òà× Ñ ð �Ññ
 !  mÓ4ÒH¸¿¹Ð÷
 <× ;å (ß GÑ GÝ !Ý !ð)�Wð ) ó )ð˜%ð ¨ð °°U±ó ÷T4ñ T4ôn"
�oô "
ôJJ6�_õ J6øðA ò àÒðús   žA#C# Ã#C-Ã,C-