
    'h
                        d dl Z d dlZd dlZd dlZd dlZg dZ ee      Zd Z ej                         dej                  e   dej                  e   fd       Zdej                  e   defdZd	 Zd
 Zdej                  e   defdZy)    N))b   )ki   )mi   )gi   @)tl        c                    t        t        t        dd        D ][  \  }}|d   | cxk  r	|d   k  sn |d   }|d   }t        | |z  d      }|t        |      k(  rt        |      }t	        |      |z   c S  | t        d   d   S )Nr   r      )zip
SIZE_TABLEroundintstr)sizebottomtopsuflimxs         m/var/www/html/scrapers/gsc/venv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/utils/human.pypretty_sizer      s    :z!"~6  !9%s1v%)C)CdSj!$ACF{Fq6C<  :a=+,,    sreturnc                    | y	 t        |       S # t        $ r Y nw xY wt        j                         D ]H  }| j	                  |      s	 t        | dd       t        |   z  c S # t        $ r Y  t        d      w xY w t        d      )z
    Parse a size with an optional k/m/... suffix.
    Invalid values raise a ValueError. For added convenience, passing `None` returns `None`.
    NzInvalid size specification.)r   
ValueError
SIZE_UNITSkeysendswith)r   is     r   
parse_sizer"      s     	y1v __ ::a=1Sb6{Z]22 
2
33	 2
33s   
 		A##	A:9A:secsc                 |    g d}| y|D ]  \  }}| |k\  s|j                  |       c S  dj                  | dz        S )N))d   z{:.0f}s)
   z{:2.1f}s)r   z{:1.2f}s z{:.0f}msi  )format)r#   
formatterslimit	formatters       r   pretty_durationr,   3   sV    J
 |& *y5=##D))* TD[))r   c                     t        j                  |       } t        j                  j                  t        j                  |             }|j                  d      S )Nz%Y-%m-%d %H:%M:%S)time	localtimedatetimefromtimestampmktimestrftimer   ds     r   format_timestampr6   C   s>    qA''A7A::)**r   c                 h    t         j                   j                  |       }|j                  d      d d S )Nz%Y-%m-%d %H:%M:%S.%f)r0   r1   r3   r4   s     r   format_timestamp_with_millir9   I   s/    ''*A::,-cr22r   addressc                    | y	 t        j                  | d         }|j                  rdj                  | d         S t	        |t         j
                        rdj                  t        |      | d         S |j                  r(dj                  t        |j                        | d         S dj                  t        |      | d         S # t        $ r dj                  | d   | d         cY S w xY w)zn
    This function accepts IPv4/IPv6 tuples and
    returns the formatted address string with port number
    z<no address>r   z*:{}r   z{}:{}z[{}]:{})		ipaddress
ip_addressis_unspecifiedr(   
isinstanceIPv4Addressr   ipv4_mappedr   )r:   hosts     r   format_addressrC   N   s    
 6##GAJ/==,,dI112>>#d)WQZ88>>#d&6&6"7DDD	71:66 6~~gaj'!*556s"   7C 7C 53C )C !C+*C+)r0   	functoolsr<   r.   typingr   dictr   r   	lru_cacheOptionalr   r   r"   floatr,   r6   r9   tuplerC    r   r   <module>rL      s        
 *
	- 4&//#& 46??3+? 4 4(*&//%0 *S * +3
6FOOE2 6s 6r   