
    !j\                       d Z ddlmZ ddlZddl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mZ ddlmZ ddlmZ ddlmZmZ ddlmZmZ dd	lmZ ddlZdd
lmZ 	 ddlmZ n# e$ r	 ddlm Z Y nw xY wddl!m"Z"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0  e1 ed          2                                          Z3 e1 ed          2                                          Z4 e1 ed          2                                          Z5dJdZ6	 	 dKdLd(Z7dMd)Z8 G d* d+          Z9 G d, d-e9          Z: G d. d/e9          Z; G d0 d1e9          Z< G d2 d3e9          Z= G d4 d5e9          Z> G d6 d7e9          Z?dNd8Z@dOd;ZA G d< d=e9          ZB G d> d?e9          ZC G d@ dAe9          ZD G dB dCe9          ZE G dD dEeE          ZF G dF dGeE          ZG G dH dIe9          ZHdS )PzCredential providers.    )annotationsN)ABCMetaabstractmethod)	timedelta)Path)Callablecast)	urlencodeurlsplit)ElementTree)PoolManager)BaseHTTPResponse)HTTPResponse)Retry	parse_url)sha256_hash)sign_v4_sts)from_iso8601utcto_amz_dateutcnow)findfindtext   )Credentials   )minutes   )days)hoursdatastrnamereturnr   c                   t          j        |           }t          t           j        t	          ||d                    }t          t           j        t	          |dd                    }t          t          |dd                    }t          t          t          t          |dd                    t          t          t          |dd                    t          |dd          |          S )z&Parse data containing credentials XML.Tr   
ExpirationAccessKeyIdSecretAccessKeySessionToken)	ET
fromstringr	   Elementr   r   r   r   r!   )r    r"   element
expirations       e/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/credentials/providers.py_parse_credentialsr/   9   s    mD!!G2:tGT48899G2:tG]DAABBG '<!F!FGGJS(7M48899S(7$5t<<==.$//	      http_clientr   methodurlbodystr | bytes | Noneheaders.dict[str, str | list[str] | tuple[str]] | Noner   c                |    |                      ||||          }|j        dvrt          | d|j                   |S )z.Wrapper of urlopen() handles HTTP status code.r4   r6   )         z failed with HTTP status code )urlopenstatus
ValueError)r1   r2   r3   r4   r6   ress         r.   _urlopenrA   G   sP     

fcg

F
FC
z((CKKszKKLLLJr0   c                     t           j                            d          p>t           j                            d          pt          t	          j                              S )z Return current user home folder.HOMEUserProfile)osenvirongetr!   r   home r0   r.   _user_home_dirrJ   U   sF     	
v 	

}%%	DIKKr0   c                  .    e Zd ZdZeZedd            ZdS )ProviderzCredential retriever.r#   r   c                    dS )z1Retrieve credentials and its expiry if available.NrI   selfs    r.   retrievezProvider.retrieveb         r0   Nr#   r   )__name__
__module____qualname____doc__r   __metaclass__r   rP   rI   r0   r.   rL   rL   ^   sC        M@ @ @ ^@ @ @r0   rL   c                  2    e Zd ZdZ	 	 	 	 	 	 	 dddZddZdS )AssumeRoleProviderz Assume-role credential provider.r   Nsts_endpointr!   
access_key
secret_keyduration_secondsintpolicy
str | Noneregionrole_arnrole_session_nameexternal_idr1   PoolManager | Nonec                X   || _         || _        || _        |pd| _        |
p!t	          t          ddg d                    | _        ddt          |t          k    r|nt                    d	}|r||d
<   |r||d<   |r||d<   |	r|	|d<   t          |          | _
        t          | j
                  | _        t          |          }|| _        |j        | _        |j        dk    r|j        dk    s|j        dk    r*|j        dk    rt'          t          |j                  | _        d | _        d S )N    皙?i  i  i  i  totalbackoff_factorstatus_forcelistretries
AssumeRole
2011-06-15ActionVersionDurationSecondsRoleArnRoleSessionNamePolicy
ExternalIdhttpP   httpsi  )_sts_endpoint_access_key_secret_key_regionr   r   _http_clientr!   _DEFAULT_DURATION_SECONDSr
   _bodyr   _content_sha256r   _urlnetloc_hostschemeportr	   hostname_credentials)rO   rZ   r[   r\   r]   r_   ra   rb   rc   rd   r1   query_paramsr3   s                r.   __init__zAssumeRoleProvider.__init__j   sw    *%%|' 
;"!5!5!5  ,
 ,
 ,
 ##"#&??? ! .   
 
  	/&.L# 	@.?L*+ 	,%+L" 	5)4L&|,,
*4:66|$$	Z
v%%#(b..w&&38s??c3<00DJ04r0   r#   r   c           
        | j         r | j                                         s| j         S t                      }t          d| j        | j        d| j        t          |          dt          | j	        | j
                  | j        |          }t          | j        d| j        | j        |          }t!          |j                                        d          | _         | j         S )Retrieve credentials.POSTz!application/x-www-form-urlencoded)zContent-TypeHostz
X-Amz-Dater9   AssumeRoleResult)r   
is_expiredr   r   r   r   r   r   r   r   r   r   rA   r   r~   r   r/   r    decode)rO   utctimer6   r@   s       r.   rP   zAssumeRoleProvider.retrieve   s     	%T%6%A%A%C%C 	%$$((IL C
)'22 
 ($*:;; 
 
 
 
 
 /HOO1
 
   r0   )r   NNNNNN)rZ   r!   r[   r!   r\   r!   r]   r^   r_   r`   ra   r`   rb   r`   rc   r`   rd   r`   r1   re   rR   rS   rT   rU   rV   r   rP   rI   r0   r.   rY   rY   g   s_        ** %&!%!%#',0&*.265 65 65 65 65p !  !  !  !  !  !r0   rY   c                  "    e Zd ZdZd	dZd
dZdS )ChainedProviderzChained credential provider.	providerslist[Provider]c                0    || _         d | _        d | _        d S N)
_providers	_providerr   )rO   r   s     r.   r   zChainedProvider.__init__   s    #*.04r0   r#   r   c                n   | j         r | j                                         s| j         S | j        r6	 | j                                        | _         | j         S # t          $ r Y nw xY w| j        D ];}	 |                                | _         || _        | j         c S # t          $ r Y 8w xY wt	          d          )z4Retrieve credentials from one of available provider.z'All providers fail to fetch credentials)r   r   r   rP   r?   r   )rO   providers     r.   rP   zChainedProvider.retrieve   s     	%T%6%A%A%C%C 	%$$> 	$(N$;$;$=$=!((     	 	H$,$5$5$7$7!!)((((    BCCCs#   $A 
A"!A"/&B
B%$B%N)r   r   rR   r   rI   r0   r.   r   r      sH        &&5 5 5 5
D D D D D Dr0   r   c                      e Zd ZdZddZdS )EnvAWSProviderz3Credential provider from AWS environment variables.r#   r   c           	        t          t          t          t          j                            d          pt          j                            d                    t          t          t          j                            d          pt          j                            d                    t          j                            d                    S )r   AWS_ACCESS_KEY_IDAWS_ACCESS_KEYAWS_SECRET_ACCESS_KEYAWS_SECRET_KEYAWS_SESSION_TOKEN)r[   r\   session_token)r   r	   r!   rE   rF   rG   rN   s    r.   rP   zEnvAWSProvider.retrieve   s    JNN#677 5JNN#344  JNN#:;; 5JNN#344  *..)<==
 
 
 	
r0   NrR   rS   rT   rU   rV   rP   rI   r0   r.   r   r      s.        ==
 
 
 
 
 
r0   r   c                      e Zd ZdZddZdS )EnvMinioProviderz5Credential provider from MinIO environment variables.r#   r   c                    t          t          j                            d          pdt          j                            d          pd          S )r   MINIO_ACCESS_KEYrg   MINIO_SECRET_KEY)r[   r\   )r   rE   rF   rG   rN   s    r.   rP   zEnvMinioProvider.retrieve  sG    z~~&899?Rz~~&899?R
 
 
 	
r0   NrR   r   rI   r0   r.   r   r      s.        ??
 
 
 
 
 
r0   r   c                  (    e Zd ZdZ	 	 d
ddZdd	ZdS )AWSConfigProviderz-Credential provider from AWS credential file.Nfilenamer`   profilec                    |pKt           j                            d          p,t           j                            t                      dd          | _        |p t           j                            d          pd| _        d S )NAWS_SHARED_CREDENTIALS_FILEz.awscredentialsAWS_PROFILEdefault)rE   rF   rG   pathjoinrJ   	_filename_profile)rO   r   r   s      r.   r   zAWSConfigProvider.__init__  sl      BJNN899BGLL))6=AA 	
  M2:>>-#@#@MIr0   r#   r   c                   t          j                    }|                    | j                   |                    | j        dd          }|                    | j        dd          }|                    | j        dd          }|st          d| j         d| j                   |st          d| j         d| j                   t          |||	          S )
z1Retrieve credentials from AWS configuration file.aws_access_key_idN)fallbackaws_secret_access_keyaws_session_tokenz%access key does not exist in profile z in AWS credential file z%secret key does not exist in profile )r   )configparserConfigParserreadr   rG   r   r?   r   )rO   parserr[   r\   r   s        r.   rP   zAWSConfigProvider.retrieve  s;   *,,DN###ZZM   
 


 ZZM#   
 


 

M # 
 
  	K=K K:>.K K  
  	K=K K:>.K K  
 '
 
 
 	
r0   NN)r   r`   r   r`   rR   r   rI   r0   r.   r   r   	  sT        77 $("&
N 
N 
N 
N 
N$
 $
 $
 $
 $
 $
r0   r   c                  $    e Zd ZdZd
ddZdd	ZdS )MinioClientConfigProviderz9Credential provider from MinIO Client configuration file.Nr   r`   aliasc                    |p>t           j                            t                      t          j        dk    rdndd          | _        |p t           j                            d          pd| _	        d S )Nwin32mcz.mczconfig.jsonMINIO_ALIASs3)
rE   r   r   rJ   sysplatformr   rF   rG   _alias)rO   r   r   s      r.   r   z"MinioClientConfigProvider.__init__B  sh     GLL  //U  	 Drz~~m<<Dr0   r#   r   c                R   	 t          | j        d          5 }t          j        |          }ddd           n# 1 swxY w Y   |                    d          p|                    d          }|st          d| j                   |                    | j                  }|st          d| j         d| j                   t          |                    d	          |                    d
                    S # t          t          f$ r}t          d| j                   |d}~ww xY w)z?Retrieve credential value from MinIO client configuration file.utf-8encodingNhostsaliaseszinvalid configuration in file zalias z- not found in MinIO clientconfiguration file 	accessKey	secretKeyerror in reading file )
openr   jsonloadrG   r?   r   r   IOErrorOSError)rO   	conf_fileconfigr   credsexcs         r.   rP   z"MinioClientConfigProvider.retrieveM  s   	dnw777 .99--. . . . . . . . . . . . . . .jj))BVZZ	-B-BG  ET^EE   KK,,E  ;T[ ; ;*..; ;   uyy55uyy7M7MNNN! 	 	 	999 	s5   C8 9C8 =C8  =B6C8 8D&	D!!D&r   )r   r`   r   r`   rR   r   rI   r0   r.   r   r   ?  sL        CC	E 	E 	E 	E 	E     r0   r   c                h   t          t          t          |           j                  }	 t	          d t          j        |d          D                       }|D ]-}t          j        |          j	        st          |dz             .dS # t
          j        $ r}t          d|z   dz             |d}~ww xY w)z3Check whether host in url points only to localhost.c              3  2   K   | ]}|d          d         V  dS )   r   NrI   ).0infos     r.   	<genexpr>z'_check_loopback_host.<locals>.<genexpr>h  s*      JJ4DGAJJJJJJJr0   Nz is not loopback only hostzHost z is not loopback address)r	   r!   r   hostsetsocketgetaddrinfo	ipaddress
ip_addressis_loopbackr?   gaierror)r3   r   addrsaddrr   s        r.   _check_loopback_hostr   d  s    Ys^^())DOJJ6+=dD+I+IJJJJJ 	F 	FD'--9 F (D!DEEEF	F 	F ? O O O4*DDEE3NOs   AB B1B,,B1
token_filedict[str, str]c                    	 t          | d          5 }|                                ddcddd           S # 1 swxY w Y   dS # t          t          f$ r}t	          d|            |d}~ww xY w)z'Read and return content of token file. r   r   0)access_token
expires_inNr   )r   r   r   r   r?   )r   filer   s      r.   _get_jwt_tokenr   p  s    I*w/// 	D4$(IIKKsCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DW I I I>*>>??SHIs2   A 7A ;A ;A A-A((A-c                  0    e Zd ZdZ	 	 dddZddZddZdS )IamAwsProviderz7Credential provider using IAM roles for Amazon EC2/ECS.Ncustom_endpointr`   r1   re   c                   || _         |p!t          t          ddg d                    | _        t          j                            d          | _        t          j                            d          | _        t          j                            d          | _	        t          j                            d	          | _
        t          j                            d
          | _        | j        r)| j                            d          sd| j        z   | _        t          j                            d          | _        d | _        d S )Nrh   ri   rj   rk   ro   AWS_WEB_IDENTITY_TOKEN_FILE
AWS_REGIONAWS_ROLE_ARNAWS_ROLE_SESSION_NAME&AWS_CONTAINER_CREDENTIALS_RELATIVE_URI/"AWS_CONTAINER_CREDENTIALS_FULL_URI)_custom_endpointr   r   r   rE   rF   rG   _token_file_aws_region	_role_arn_role_session_name_relative_uri
startswith	_full_urir   )rO   r   r1   s      r.   r   zIamAwsProvider.__init__|  s   
 !0' 
;"!5!5!5  ,
 ,
 ,
 :>>*GHH:>>,7777"$*..1H"I"IZ^^4
 
  	:d&8&C&CC&H&H 	:!$t'9!9D(LMM04r0   r3   r!   r#   r   c           	     x   t          | j        d|          }t          j        |j                  }|                    dd          dk    r0t          | d|d          d|                    d                     t          |d                   |d<   t          |d         |d	         |d
         |d                   S )z Fetch credentials from EC2/ECS. GETCodeSuccessz failed with code z	 message Messager%   r&   r'   Token)	rA   r   r   loadsr    rG   r?   r   r   )rO   r3   r@   r    s       r.   fetchzIamAwsProvider.fetch  s     t(%55z#(##88FI&&)33 1 1$v, 1 188I..1 1   -T,-?@@\"#M	
 
 	
r0   c                     j         r  j                                         s j         S  j        } j        ro|sd} j        rd j         d}t           fd| j         j         j                  }|	                                 _         t          t           j                   S  j        r|s
d j        z   }n j        r|s j        }t          |           n||sd}t           j        d|          }|j                            d	                              d
          }|st'          d|           |d|d                             d          z   z  }|st'          d                               |           _          j         S )z.Retrieve credentials from WebIdentity/EC2/ECS.zhttps://sts.amazonaws.comzhttps://sts.z.amazonaws.comc                 R    t          t          t           j                            S r   )r   r	   r!   r
  rN   s   r.   <lambda>z)IamAwsProvider.retrieve.<locals>.<lambda>  s    tC1A'B'BCC r0   )rb   rc   r1   zhttp://169.254.170.2zAhttp://169.254.169.254/latest/meta-data/iam/security-credentials/r  r   
z%no IAM roles attached to EC2 service r  r   z$url is empty; this should not happen)r   r   r	  r
  r  WebIdentityProviderr  r  r   rP   r	   r   r  r  r   rA   r    r   splitr?   stripr  )rO   r3   r   r@   
role_namess   `    r.   rP   zIamAwsProvider.retrieve  s     	%T%6%A%A%C%C 	%$$# 	8 J1# JI)9IIIC*CCCC"&"9 -  H !) 1 1 3 3DT%6777 	3 B,t/AA^ 	3 %n %%%% B 
 4,eS99C1177==J P !N!N!NOOO3A,,T2222C 	ECDDD JJsOO  r0   r   )r   r`   r1   re   )r3   r!   r#   r   rR   )rS   rT   rU   rV   r   r  rP   rI   r0   r.   r   r   y  sc        AA +/.25 5 5 5 52
 
 
 
&/! /! /! /! /! /!r0   r   c                  &    e Zd ZdZ	 ddd	ZddZdS )LdapIdentityProviderz9Credential provider using AssumeRoleWithLDAPIdentity API.NrZ   r!   ldap_usernameldap_passwordr1   re   c                    |dz   t          dd||d          z   | _        |p!t          t          ddg d          	          | _        d | _        d S )
N?AssumeRoleWithLDAPIdentityrr   )rt   ru   LDAPUsernameLDAPPasswordrh   ri   rj   rk   ro   )r
   r~   r   r   r   r   )rO   rZ   r$  r%  r1   s        r.   r   zLdapIdentityProvider.__init__  s     *C/)6' - -	 3
 3
 
 ( 
;"!5!5!5  ,
 ,
 ,
 15r0   r#   r   c                    | j         r | j                                         s| j         S t          | j        d| j                  }t          |j                                        d          | _         | j         S )r   r    AssumeRoleWithLDAPIdentityResultr   r   rA   r   r~   r/   r    r   rO   r@   s     r.   rP   zLdapIdentityProvider.retrieve  s}      	%T%6%A%A%C%C 	%$$
 
 /HOOA
 
   r0   r   )rZ   r!   r$  r!   r%  r!   r1   re   rR   r   rI   r0   r.   r#  r#    sL        CC /35 5 5 5 50! ! ! ! ! !r0   r#  c                  &    e Zd ZdZ	 dddZddZdS )StaticProviderzFixed credential provider.Nr[   r!   r\   r   r`   c                2    t          |||          | _        d S r   )r   r   )rO   r[   r\   r   s       r.   r   zStaticProvider.__init__  s     (
JNNr0   r#   r   c                    | j         S )zReturn passed credentials.)r   rN   s    r.   rP   zStaticProvider.retrieve  s      r0   r   )r[   r!   r\   r!   r   r`   rR   r   rI   r0   r.   r0  r0    sQ        $$ )-	O O O O O! ! ! ! ! !r0   r0  c                  R    e Zd ZdZeZ	 	 	 	 	 dddZedd            ZddZ	ddZ
dS )WebIdentityClientGrantsProviderzABase class for WebIdentity and ClientGrants credentials provider.r   Njwt_provider_funcCallable[[], dict[str, str]]rZ   r!   r]   r^   r_   r`   rb   rc   r1   re   c                    || _         || _        || _        || _        || _        || _        |p!t          t          ddg d                    | _        d | _	        d S )Nrh   ri   rj   rk   ro   )
_jwt_provider_funcr~   _duration_seconds_policyr  r  r   r   r   r   )rO   r5  rZ   r]   r_   rb   rc   r1   s           r.   r   z(WebIdentityClientGrantsProvider.__init__  s     #4)!1!"3' 
;"!5!5!5  ,
 ,
 ,
 15r0   r#   boolc                    dS )z-Check if derived class deal with WebIdentity.NrI   rN   s    r.   _is_web_identityz0WebIdentityClientGrantsProvider._is_web_identity5  rQ   r0   expiryc                z    | j         r| j         }|t          k    rt          S |dk    r|S |t          k     rt          n|S )z"Get DurationSeconds optimal value.r   )r9  _MAX_DURATION_SECONDS_MIN_DURATION_SECONDS)rO   r>  s     r.   _get_duration_secondsz5WebIdentityClientGrantsProvider._get_duration_seconds9  sR     ! 	,+F)))((Q;;M &,.C%C%C!!	
r0   r   c                v   | j         r | j                                         s| j         S |                                 }ddi}|                     t	          |                    dd                              }|rt          |          |d<   | j        r
| j        |d<   |                                 rud|d<   |                    d	d
          |d<   | j	        rO| j	        |d<   | j
        r| j
        n3t          t          j                                                  dd
          |d<   nd|d<   |                    d	d
          |d<   | j        dz   t          |          z   }t          | j        d|          }t#          |j                                        |                                 rdnd          | _         | j         S )r   ru   rr   r   r   rv   ry   AssumeRoleWithWebIdentityrt   r   rg   WebIdentityTokenrw   .rx   AssumeRoleWithClientGrantsr  r'  r   AssumeRoleWithWebIdentityResult AssumeRoleWithClientGrantsResult)r   r   r8  rB  r^   rG   r!   r:  r=  r  r  timereplacer~   r
   rA   r   r/   r    r   )rO   jwtr   r]   r3   r@   s         r.   rP   z(WebIdentityClientGrantsProvider.retrieveI  s     	%T%6%A%A%C%C 	%$$%%''!<055c**++
 
  	D.12B.C.CL*+< 	2%)\L"  "" 	@%@L"/2ww~r/J/JL+,~ *..Y' .;D++TY[[))11#r:: ./ &BL"$'GGNB$?$?L! 3&<)@)@@t(&#66.HOO ((**8117
 
   r0   )r   NNNN)r5  r6  rZ   r!   r]   r^   r_   r`   rb   r`   rc   r`   r1   re   r#   r;  )r>  r^   r#   r^   rR   )rS   rT   rU   rV   r   rW   r   r   r=  rB  rP   rI   r0   r.   r4  r4    s        KKM %&!%#',0.25 5 5 5 52 < < < ^<
 
 
 
 +! +! +! +! +! +!r0   r4  c                  4     e Zd ZdZ	 	 	 dd fdZddZ xZS )ClientGrantsProviderz9Credential provider using AssumeRoleWithClientGrants API.r   Nr5  r6  rZ   r!   r]   r^   r_   r`   r1   re   c                T    t                                          |||||           d S )N)r1   )superr   )rO   r5  rZ   r]   r_   r1   	__class__s         r.   r   zClientGrantsProvider.__init__z  s=     	|-=v# 	 	
 	
 	
 	
 	
r0   r#   r;  c                    dS )NFrI   rN   s    r.   r=  z%ClientGrantsProvider._is_web_identity  s    ur0   )r   NN)
r5  r6  rZ   r!   r]   r^   r_   r`   r1   re   rM  )rS   rT   rU   rV   r   r=  __classcell__)rR  s   @r.   rO  rO  w  sg        CC %&!%.2
 
 
 
 
 
 
       r0   rO  c                      e Zd ZdZddZdS )r  z8Credential provider using AssumeRoleWithWebIdentity API.r#   r;  c                    dS )NTrI   rN   s    r.   r=  z$WebIdentityProvider._is_web_identity  s    tr0   NrM  )rS   rT   rU   rV   r=  rI   r0   r.   r  r    s.        BB     r0   r  c                  0    e Zd ZdZ	 	 	 	 	 	 dddZddZdS )CertificateIdentityProviderz8Credential provider using AssumeRoleWithCertificate API.Nr   rZ   r!   	cert_filer`   key_filekey_passwordca_certsr]   r^   r1   re   c                   t          |          j        dk    rt          d          t          |          |o|k    rnt          d          |dz   t	          ddt          |t          k    r|nt                    d          z   | _        |p:t          d|d	|||pt          j
                    t          d
dg d                    | _        d | _        d S )Nr}   z!STS endpoint scheme must be HTTPSz;either cert/key file or custom http_client must be providedr'  AssumeRoleWithCertificaterr   rs   
   CERT_REQUIREDrh   ri   rj   rk   )maxsizerY  	cert_reqsrZ  r[  r\  rp   )r   r   r?   r;  r
   r!   r   r~   r   certifiwherer   r   r   )rO   rZ   rY  rZ  r[  r\  r]   r1   s           r.   r   z$CertificateIdentityProvider.__init__  s    L!!(G33@AAA!7x88M   *C/)5'#&'*CCC %$2$ $ 
3
 
3
 

 ( 
;%%0"!5!5!5  ,
 ,
 ,
 15r0   r#   r   c                    | j         r | j                                         s| j         S t          | j        d| j                  }t          |j                                        d          | _         | j         S )r   r   AssumeRoleWithCertificateResultr-  r.  s     r.   rP   z$CertificateIdentityProvider.retrieve  s}      	%T%6%A%A%C%C 	%$$
 
 /HOO@
 
   r0   )NNNNr   N)rZ   r!   rY  r`   rZ  r`   r[  r`   r\  r`   r]   r^   r1   re   rR   r   rI   r0   r.   rX  rX    s\        BB
 %)#''+#'$%.2,5 ,5 ,5 ,5 ,5\! ! ! ! ! !r0   rX  )r    r!   r"   r!   r#   r   r   )r1   r   r2   r!   r3   r!   r4   r5   r6   r7   r#   r   )r#   r!   )r3   r!   )r   r!   r#   r   )IrV   
__future__r   r   r   r   rE   r   r   rJ  abcr   r   datetimer   pathlibr   typingr   r	   urllib.parser
   r   	xml.etreer   r)   rc  urllib3.poolmanagerr   urllib3.responser   ImportErrorr   urllib3.utilr   r   minio.helpersr   minio.signerr   
minio.timer   r   r   	minio.xmlr   r   r   r   r^   total_secondsrA  r@  r   r/   rA   rJ   rL   rY   r   r   r   r   r   r   r   r   r#  r0  r4  rO  r  rX  rI   r0   r.   <module>rw     sX  "   " " " " " "          				  



  ' ' ' ' ' ' ' '             ! ! ! ! ! ! ! ! , , , , , , , , ' ' ' ' ' '  + + + + + +B1111111 B B BAAAAAAAAB * ) ) ) ) ) ) ) % % % % % % $ $ $ $ $ $ ; ; ; ; ; ; ; ; ; ; $ $ $ $ $ $ $ $ $ $ $ $ $ $IIb111??AABB II1---;;==>> C		 2 2 2 @ @ B BCC    $ $(BF       @ @ @ @ @ @ @ @[! [! [! [! [! [! [! [!|D D D D Dh D D DB
 
 
 
 
X 
 
 
0
 
 
 
 
x 
 
 
3
 3
 3
 3
 3
 3
 3
 3
l" " " " " " " "J	O 	O 	O 	OI I I I^! ^! ^! ^! ^!X ^! ^! ^!B+! +! +! +! +!8 +! +! +!\! ! ! ! !X ! ! ! \! \! \! \! \!h \! \! \!~    :   (    9   A! A! A! A! A!( A! A! A! A! A!s   A! !A/.A/