+
    Nj4                      a 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^R	IHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t# R
 R lt$R R lt%]! ]R7      R R l4       t&]'! R ]PP                  ! 4        4       4      t)R]*R&   ]) U u. uF  q ^ ,          NK  	  up t+R]*R&   R R lt,R R lt-R R lt.R R lt/R R lt0R  R! lt1]! ]R7      R" R# l4       t2]! ]R7      R$ R% l4       t3]! ]R7      R& R' l4       t4]! ]R7      R( R) l4       t5]! ]R7      R* R+ l4       t6]! ]R7      R, R- l4       t7]! ]R7      R. R/ l4       t8]! ]R7      R0 R1 l4       t9]! ]R7      R2 R3 l4       t:R4 R5 lt;]! ]R7      R6 R7 l4       t<RLR8 R9 llt=]! ^R7      R: R; l4       t>R< R= lt?R> R? lt@RMR@ RA lltARB RC ltBRD RE ltCRF]P                  RG3RH RI lltERNRJ RK lltFR# u up i )O    )annotationsN)bisect_right)IncrementalDecoder)aliases)	lru_cache)findall)	Generator)ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINED_SECONDARY_RANGE_NAMESUTF8_MAXIMAL_ALLOCATIONCOMMON_CJK_CHARACTERS_LATIN_CJK_HANGUL	_KATAKANA	_HIRAGANA_THAI_ARABIC_ARABIC_ISOLATED_FORM_ACCENT_KEYWORDS_ACCENTUATEDc                    V ^8  d   QhRRRR/# )   	characterstrreturnint )formats   "Z/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/charset_normalizer/utils.py__annotate__r$   "   s            c                    \         P                  ! V 4      p^ pRT9   d   T\        ,          pRT9   d   T\        ,          pRT9   d   T\
        ,          pRT9   d   T\        ,          pRT9   d   T\        ,          pRT9   d   T\        ,          pRT9   d"   T\        ,          pRT9   d   T\        ,          p\         F  pY19   g   K  T\        ,          p T# 	  T#   \         d     ^ # i ; i)	zRCompute all name-based classification flags with a single unicodedata.name() call.LATINCJKHANGULKATAKANAHIRAGANATHAIARABICzISOLATED FORM)unicodedataname
ValueErrorr   r   r   r   r   r   r   r   r   r   )r   descflagskws   &   r#   _character_flagsr4   "   s    $$Y/ E$}4TT~4d"**E:\!EL 
 L7  s   C C.-C.c                    V ^8  d   QhRRRR/# r   r   r   r   boolr!   )r"   s   "r#   r$   r$   D   s     < <c <d <r%   c                @    \        \        V 4      \        ,          4      # N)r7   r4   r   r   s   &r#   is_accentuatedr;   D   s     +l:;;r%   )maxsizec                    V ^8  d   QhRRRR/# )r   r   r   r   r!   )r"   s   "r#   r$   r$   I   s     " "S "S "r%   c                    \         P                  ! V 4      pV'       g   V # VP                  R 4      p\        \	        V^ ,          ^4      4      # ) )r.   decompositionsplitchrr    )r   
decomposedcodess   &  r#   remove_accentrE   H   sA    !//	:J!'',Es58R !!r%   c              #  X   "   T F   w  rVP                   VP                  V3x  K"  	  R # 5ir9   )startstop).0r/   	ord_ranges   &  r#   	<genexpr>rK   U   s(      <: __innd+:s   (*zlist[tuple[int, int, str]]_UNICODE_RANGES_SORTEDz	list[int]_UNICODE_RANGE_STARTSc                    V ^8  d   QhRRRR/# )r   r   r   r   
str | Noner!   )r"   s   "r#   r$   r$   \   s      S Z r%   c                    \        V 4      p\        \        V4      ^,
          pV^ 8  d   \        V,          w  r4pW8  d   V# R# )zC
Retrieve the Unicode range official name from a single character.
N)ordr   rM   rL   )r   character_ordidxrG   rH   r/   s   &     r#   unicode_rangerT   \   sE     YM ,m
<q
@C
ax237TKr%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$   l   s     6 6 6 6r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_latinrW   l   s     +f455r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$   p   s     , ,c ,d ,r%   c                l    \         P                  ! V 4      pR V9   d   R# \        V 4      pVf   R# RV9   # )PTFPunctuationr.   categoryrT   r   character_categorycharacter_ranges   &  r#   is_punctuationra   p   s=    )229=
  "/	":OO++r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$   ~   s     E E E Er%   c                    \         P                  ! V 4      pR V9   g   RV9   d   R# \        V 4      pVf   R# RV9   ;'       d    VR8g  # )SNTFFormsLor\   r^   s   &  r#   	is_symbolrh   ~   sS    )229=
  C+=$="/	":Oo%DD*<*DDr%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     N N3 N4 Nr%   c                H    \        V 4      pVf   R# RV9   ;'       g    RV9   # )NF	EmoticonsPictographs)rT   )r   r`   s   & r#   is_emoticonrm      s-    "/	":O/)MM]o-MMr%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     Q QC QD Qr%   c                    V P                  4       '       g   V R9   d   R# \        P                  ! V 4      pRV9   ;'       g    VR9   # )   ｜TZ>   +<>rp   >   PcPdPo)isspacer.   r]   )r   r_   s   & r#   is_separatorry      sH    i+AA)229=$$PP(:>P(PPr%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     6 6 6 6r%   c                D    V P                  4       V P                  4       8g  # r9   )islowerisupperr:   s   &r#   is_case_variabler~      s    )"3"3"555r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     4 4c 4d 4r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_cjkr      s     +d233r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$           9 93 94 9r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_hiraganar           +i788r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      r   r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_katakanar      r   r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$           7 7 7 7r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   	is_hangulr           +g566r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     5 5s 5t 5r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_thair      s     +e344r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      r   r%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   	is_arabicr      r   r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     E Es Et Er%   c                @    \        \        V 4      \        ,          4      # r9   )r7   r4   r   r:   s   &r#   is_arabic_isolated_formr      s     +.CCDDr%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s     2 2s 2t 2r%   c                    V \         9  # r9   )r   r:   s   &r#   is_cjk_uncommonr      s    111r%   c                    V ^8  d   QhRRRR/# )r   
range_namer   r   r7   r!   )r"   s   "r#   r$   r$      s     0 03 04 0r%   c                    V \         9   # r9   )r   )r   s   &r#   is_unicode_range_secondaryr      s    ///r%   c                    V ^8  d   QhRRRR/# r6   r!   )r"   s   "r#   r$   r$      s      c d r%   c                    V P                  4       '       * ;'       d0    V P                  4       '       * ;'       d    V R 8g  ;'       d    V R8g  # )u   ﻿)rx   isprintabler:   s   &r#   is_unprintabler      sW      	" 	"%%''	" 	"	" 	" !	r%   c               $    V ^8  d   QhRRRRRR/# )r   sequencebytes | bytearraysearch_zoner    r   rO   r!   )r"   s   "r#   r$   r$      s$     ( ((.1((r%   c                   \        V \        \        34      '       g   \        h\	        V 4      pV R\        W!4       P                  RRR7      pVP                  4       pRV9  d
   RV9  d   R# \        \        V4      p\	        V4      ^ 8X  d   R# V FY  pVP                  4       P                  RR4      p\        P                  ! 4        F  w  rxWv8X  d   Vu u # W8X  g   K  Vu u # 	  K[  	  R# )	zO
Extract using ASCII-only decoder any specified encoding in the first n-bytes.
Nasciiignoreerrorscodingcharset-_)
isinstancebytes	bytearray	TypeErrorlenmindecodelowerr   r   replacer   items)	r   r   seq_lendecoded_zonelowered_zoneresultsspecified_encodingencoding_aliasencoding_ianas	   &&       r#   any_specified_encodingr      s     h	 233x=G !<3w#<=DD E L
 %**,L|#	(E 'G
 7|q%/557??SI
 .5]]_)N3$$2$$	 .= & r%   c                    V ^8  d   QhRRRR/# )r   r/   r   r   r7   r!   )r"   s   "r#   r$   r$     s     & & & &r%   c                    V R9   d   R# R F*  p \         P                  ! V4      P                  V 4        R# 	  R#   \        \        \
        3 d     KI  i ; i)zI
Verify is a specific encoding is a multi byte one based on it IANA name
TF>	   utf_7utf_8utf_16utf_32	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sig)
_codecs_cn
_codecs_hk_codecs_iso2022
_codecs_jp
_codecs_kr
_codecs_tw)	importlibimport_modulegetcodecImportErrorAttributeErrorLookupError)r/   providers   & r#   is_multi_byte_encodingr     se    
  
 
 	##H-66t<  	 ^[9 		s   %<AAc                    V ^8  d   QhRRRR/# )r   r   r   r   ztuple[str | None, bytes]r!   )r"   s   "r#   r$   r$   /  s      "3 8P r%   c                    \          FP  p\         V,          p\        V\        4      '       d   V.pV F!  pV P                  V4      '       g   K  W3u u # 	  KR  	  R# )z1
Identify and extract SIG/BOM in given sequence.
)Nr%   )r
   r   r   
startswith)r   iana_encodingmarksmarks   &   r#   identify_sig_or_bomr   /  sX    
 (%3M%BeU##GED""4(($**  ( r%   c                    V ^8  d   QhRRRR/# )r   r   r   r   r7   r!   )r"   s   "r#   r$   r$   A  s     5 53 54 5r%   c                    V R9  # )r   >   r   r   r!   )r   s   &r#   should_strip_sig_or_bomr   A  s     444r%   c               $    V ^8  d   QhRRRRRR/# )r   cp_namer   strictr7   r   r!   )r"   s   "r#   r$   r$   E  s!      s D C r%   c                    V P                  4       P                  RR4      p \        P                  ! 4        F  w  r#WV39   g   K  Vu # 	  V'       d   \	        RV  R24      hV # )zIReturns the Python normalized encoding name (Not the IANA official name).r   r   zUnable to retrieve IANA for '')r   r   r   r   r0   )r   r   r   r   s   &&  r#   	iana_namer   E  s_    mmo%%c3/G
 *1%}55   *9 8	CDDNr%   c               $    V ^8  d   QhRRRRRR/# )r   iana_name_ar   iana_name_br   floatr!   )r"   s   "r#   r$   r$   V  s!     ' 's ' ' 'r%   c                   \        V 4      '       g   \        V4      '       d   R # \        P                  ! RV  24      P                  p\        P                  ! RV 24      P                  pV! RR7      pV! RR7      p^ p\	        R4       F?  p\        V.4      pVP                  V4      VP                  V4      8X  g   K6  V^,          pKA  	  VR,          # )g        z
encodings.r   r      )r   r   r   r   ranger   r   )	r   r   	decoder_a	decoder_bid_aid_bcharacter_match_countito_be_decodeds	   &&       r#   cp_similarityr   V  s    k**.D[.Q.Q''*[M(BCVVI''*[M(BCVVI(9D(9D!"3Z$aSz;;}%])CC!Q&! 
 !3&&r%   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r7   r!   )r"   s   "r#   r$   r$   j  s!      s   r%   c                D    V \         9   ;'       d    V\         V ,          9   # )z
Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using
the function cp_similarity.
)r   )r   r   s   &&r#   is_cp_similarr   j  s*     	-- 	? 	?1+>>r%   charset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc               (    V ^8  d   QhRRRRRRRR/# )r   r/   r   levelr    format_stringr   Noner!   )r"   s   "r#   r$   r$   u  s0     
 



 
 
	
r%   c                    \         P                  ! V 4      pVP                  V4       \         P                  ! 4       pVP	                  \         P
                  ! V4      4       VP                  V4       R # r9   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r/   r   r  loggerhandlers   &&&  r#   set_logging_handlerr  u  sU    
 t$F
OOE##%G**=9:
gr%   c               D    V ^8  d   QhRRRRRRRRR	R
RR
RRRR
RRRR
RR/# )r   	sequencesr   r   r   offsetsr   
chunk_sizer    bom_or_sig_availabler7   strip_sig_or_bomsig_payloadr   is_multi_byte_decoderdecoded_payloadrO   deferred_decodingr   zGenerator[str, None, None]r!   )r"   s   "r#   r$   r$     s     E E EE E 	E
 E E E  E  E E  Er%   c
              #    "   V'       d-   V'       g%   V F  p
WW,            pV'       g    R # Vx  K  	  R # V	'       dF   V'       g   T MV \        V4      R  pV F%  p
WW,            pV'       g    R # \        W4      x  K'  	  R # V F  p
W,           pV\        V 4      ^,           8  d   K$  W
W,            pV'       d   V'       g	   Wm,           pTP                  TV'       d   RMRR7      pV'       d|   V
^ 8  du   \        V^4      pV'       da   VR V V9  dW   \	        W^,
          R4       F?  pV VV pV'       d   V'       g	   Wm,           pVP                  VRR7      pVR V V9   g   K?   M	  Vx  K  	  R # 5i)Nr   r   r   )r   r   r   r   r   )r  r   r  r  r  r  r  r  r  r  r   chunk
base_bytescut_sequence	chunk_endchunk_partial_size_chkjs   &&&&&&&&&&       r#   cut_sequence_chunksr     se     4A#7EK	 
 
 .I9S=M=O3P 	 A%!.9Ll22	  AI3y>A--$8L#,<*9 ''#8xh ( E %Q.1*b.A& $556oM"1!eR0'09'=/8H+6+EL , 3 3M( 3 S !8"89_L! 1 KG s5   E6+E6E6A<E6E6 E61AE6"E6(E6)i    )T)NF)G__conditional_annotations__
__future__r   r   r  r.   bisectr   codecsr   encodings.aliasesr   	functoolsr   rer   typingr	   constantr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r;   rE   sortedr   rL   __annotations__rM   rT   rW   ra   rh   rm   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   INFOr  r   )er!  s   0@r#   <module>r.     s?   " "     % %       *D< *+" ," 6< <288:< 6 2  3I#I2HQaDD2H#I y I 6,ENQ *+6 ,6 *+4 ,4 *+9 ,9 *+9 ,9 *+7 ,7 *+5 ,5 *+7 ,7 *+E ,E *+2 ,20 *+ ,(V 3& &R$5"'( %D
E ES	 $Js   &G6