+
    i/                       ^ 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 ]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t]
! ]R
7      R R l4       t ]
! ]R
7      R R l4       t!]
! ]R
7      R R l4       t"]
! ]R
7      R R  l4       t#]
! ]R
7      R! R" l4       t$]
! ]R
7      R# R$ l4       t%]
! ]R
7      R% R& l4       t&]
! ]R
7      R' R( l4       t']
! ]R
7      R) R* l4       t(]
! ]R
7      R+ R, l4       t)]
! ]*! ]4      R
7      R- R. l4       t+]
! ]R
7      R/ R0 l4       t,RER1 R2 llt-]
! ^R
7      R3 R4 l4       t.R5 R6 lt/R7 R8 lt0RFR9 R: llt1R; R< lt2R= R> lt3R?]Ph                  R@3RA RB llt5RGRC RD llt6R# )H    )annotationsN)IncrementalDecoder)aliases)	lru_cache)findall)	Generator)MultibyteIncrementalDecoder)ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINEDUNICODE_SECONDARY_RANGE_KEYWORDUTF8_MAXIMAL_ALLOCATIONCOMMON_CJK_CHARACTERS)maxsizec                    V ^8  d   QhRRRR/#    	characterstrreturnbool )formats   "^/Users/ahmad/.openclaw/workspace/venv/lib/python3.14/site-packages/charset_normalizer/utils.py__annotate__r      s      c d     c                    \         P                  ! V 4      pRT9   ;'       gT    RT9   ;'       gG    RT9   ;'       g:    RT9   ;'       g-    RT9   ;'       g     RT9   ;'       g    RT9   ;'       g    RT9   #   \         d     R # i ; i)	Fz
WITH GRAVEz
WITH ACUTEzWITH CEDILLAzWITH DIAERESISzWITH CIRCUMFLEXz
WITH TILDEzWITH MACRONzWITH RING ABOVEunicodedataname
ValueErrorr   descriptions   & r   is_accentuatedr%      s    &++I6 	# 	, 	,;&	, 	,[(	, 	, {*	, 	, +		, 	,
 ;&	, 	, K'	, 	, +	  s   A8 8BBc                    V ^8  d   QhRRRR/# )r   r   r   r   r   )r   s   "r   r   r   .   s     " "S "S "r   c                    \         P                  ! V 4      pV'       g   V # VP                  R 4      p\        \	        V^ ,          ^4      4      # ) )r    decompositionsplitchrint)r   
decomposedcodess   &  r   remove_accentr/   -   sA    !//	:J!'',Es58R !!r   c                    V ^8  d   QhRRRR/# )r   r   r   r   
str | Noner   )r   s   "r   r   r   9   s     
 
S 
Z 
r   c                l    \        V 4      p\        P                  ! 4        F  w  r#W9   g   K  Vu # 	  R# )zC
Retrieve the Unicode range official name from a single character.
N)ordr   items)r   character_ord
range_name	ord_ranges   &   r   unicode_ranger8   8   s5    
 YM!8!>!>!@
% "A r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   G   s     " " " "r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FLATINr   r#   s   & r   is_latinr<   F   s8    &++I6 k!!      ,,c                    V ^8  d   QhRRRR/# r   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    categoryr8   r   character_categorycharacter_ranges   &  r   is_punctuationrG   O   s=    )229=
  "/	":OO++r   c                    V ^8  d   QhRRRR/# r   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LorB   rD   s   &  r   	is_symbolrN   ^   sS    )229=
  C+=$="/	":Oo%DD*<*DDr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   n   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)r8   )r   rF   s   & r   is_emoticonrS   m   s-    "/	":O/)MM]o-MMr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   x   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>   +<>rV   >   PcPdPo)isspacer    rC   )r   rE   s   & r   is_separatorr_   w   sH    i+AA)229=$$PP(:>P(PPr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     6 6 6 6r   c                D    V P                  4       V P                  4       8g  # N)islowerisupperr   s   &r   is_case_variablerf      s    )"3"3"555r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     # #c #d #r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FCJKr   r   character_names   & r   is_cjkrl      s8    $)))4 N""  r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r           ( (3 (4 (r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FHIRAGANAr   rj   s   & r   is_hiraganarq      8    $)))4 ''  r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      rn   r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FKATAKANAr   rj   s   & r   is_katakanarv      rr   r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r           & & & &r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FHANGULr   rj   s   & r   	is_hangulr{      8    $)))4 ~%%  r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     $ $s $t $r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FTHAIr   rj   s   & r   is_thair      s8    $)))4 ^##  r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      rx   r   c                ^     \         P                  ! V 4      pRV9   #   \         d     R # i ; i)FARABICr   rj   s   & r   	is_arabicr      r|   r=   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     L Ls Lt Lr   c                x     \         P                  ! V 4      pRT9   ;'       d    RT9   #   \         d     R # i ; i)Fr   zISOLATED FORMr   rj   s   & r   is_arabic_isolated_formr      sE    $)))4 ~%KK/^*KK  s   * 99c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     2 2s 2t 2r   c                    V \         9  # rb   )r   re   s   &r   is_cjk_uncommonr      s    111r   c                    V ^8  d   QhRRRR/# )r   r6   r   r   r   r   )r   s   "r   r   r      s     U U3 U4 Ur   c                   a  \         ;QJ d#    V 3R  l\         4       F  '       g   K   R# 	  R# ! V 3R  l\         4       4      # )c              3  ,   <"   T F	  qS9   x  K  	  R # 5irb   r   ).0keywordr6   s   & r   	<genexpr>-is_unicode_range_secondary.<locals>.<genexpr>   s     T4S*$4Ss   TF)anyr   )r6   s   fr   is_unicode_range_secondaryr      s.    3T4ST33T3T3T4STTTr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s      c d r   c                    V P                  4       R J ;'       d-    V P                  4       R J ;'       d    V R8g  ;'       d    V R8g  # )Fu   ﻿)r^   isprintablere   s   &r   is_unprintabler      s[     	u$ 	" 	"!!#u,	" 	"	" 	" !	r   c               $    V ^8  d   QhRRRRRR/# )r   sequencebytessearch_zoner,   r   r1   r   )r   s   "r   r   r      s!      U  
 r   c           	        \        V \        4      '       g   \        h\        V 4      p\	        \
        V R\        W!4       P                  RRR7      4      p\        V4      ^ 8X  d   R# V FY  pVP                  4       P                  RR4      p\        P                  ! 4        F  w  rVWT8X  d   Vu u # Wd8X  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-_)
isinstancer   	TypeErrorlenr   r   mindecodelowerreplacer   r4   )r   r   seq_lenresultsspecified_encodingencoding_aliasencoding_ianas   &&     r   any_specified_encodingr      s     h&&x=G ',3w,-44WX4N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   r   r   )r   s   "r   r   r     s        r   c                ~    V R9   ;'       g2    \        \        P                  ! RV  24      P                  \        4      # )zI
Verify is a specific encoding is a multi byte one based on it IANA name

encodings.>	   utf_7utf_8utf_16utf_32	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sig)
issubclass	importlibimport_moduler   r	   )r!   s   &r   is_multi_byte_encodingr     sH    
  
 
   
*TF 34GG#
r   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      % ,D 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   r   r   )r   s   "r   r   r   (  s     5 53 54 5r   c                    V R9  # )r   >   r   r   r   )r   s   &r   should_strip_sig_or_bomr   (  s     444r   c               $    V ^8  d   QhRRRRRR/# )r   cp_namer   strictr   r   r   )r   s   "r   r   r   ,  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   r4   r"   )r   r   r   r   s   &&  r   	iana_namer   ,  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   =  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\	        ^4       F?  p\        V.4      pVP                  V4      VP                  V4      8X  g   K6  V^,          pKA  	  V^,          # )g        r   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   =  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   r   r   )r   s   "r   r   r   Q  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   Q  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   \  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 # rb   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r!   r   r   loggerhandlers   &&&  r   set_logging_handlerr   \  sU    
 t$F
OOE##%G**=9:
gr   c               @    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   	sequencesr   r   r   offsetsr   
chunk_sizer,   bom_or_sig_availabler   strip_sig_or_bomsig_payloadis_multi_byte_decoderdecoded_payloadr1   r   zGenerator[str, None, None]r   )r   s   "r   r   r   i  sl     5 555 5 	5
 5 5 5  5  5  5r   c	              #  H  "   V'       d+   VR J d%   V F  p	WW,            p
V
'       g    R# V
x  K  	  R# V F  p	W,           pV\        V 4      ^,           8  d   K$  W	W,            pV'       d   VR J d	   Wl,           pTP                  TV'       d   RMRR7      p
V'       dy   V	^ 8  dr   \        V^4      pV'       d^   V
RV V9  dT   \        W^,
          R4       F<  pWV pV'       d   VR J d	   Wl,           pVP                  VRR7      p
V
RV V9   g   K<   M	  V
x  K  	  R# 5i)Fr   r   r   N)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   chunk	chunk_endcut_sequencechunk_partial_size_chkjs   &&&&&&&&&      r   cut_sequence_chunksr  i  s)     0E9A#7EK	  AI3y>A--$8L#(8E(A*9 ''#8xh ( E %Q.1*b.A& $556oM"1!eR0'09'=/4D4M+6+EL , 3 3M( 3 S !8"89_L! 1 KG s   BD"D" A/D"D")i    )Trb   )7
__future__r   r   r   r    codecsr   encodings.aliasesr   	functoolsr   rer   typingr   _multibytecodecr	   constantr
   r   r   r   r   r   r   r%   r/   r8   r<   rG   rN   rS   r_   rf   rl   rq   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   INFOr   r  r   r   r   <module>r     s   "    % %      *+ ," *+" ," *+
 ,
 *+" ," *+, ,, *+E ,E *+N ,N *+Q ,Q *+6 ,6 *+# ,# *+( ,( *+( ,( *+& ,& *+$ ,$ *+& ,& *+L ,L *+2 ,2 3./0U 1U *+ ,@ 3 ($5"'( %D
5 5r   