Ë
    >²Xj�  ã                  ó   — U d dl mZ d dlZd dlmZ d dlmZ ej                  dk\  rd dlm	Z	 n	 d dl
m	Z	 dd	lmZmZmZmZmZmZmZmZmZmZmZmZmZ dd
lmZmZmZmZmZm Z m!Z! eez  ez  ez  ez  Z"de#d<   e	 G d„ d«      «       Z$ ed¬«      d+d„«       Z% e&d«      D � cg c]  }  e$ e'| «      «      ‘Œ c} Z(de#d<    G d„ d«      Z)e	 G d„ de)«      «       Z*e	 G d„ de)«      «       Z+e	 G d„ de)«      «       Z,e	 G d„ de)«      «       Z-e	 G d„ de)«      «       Z.e	 G d „ d!e)«      «       Z/e	 G d"„ d#e)«      «       Z0e	 G d$„ d%e)«      «       Z1e	 G d&„ d'e)«      «       Z2 ed(¬«      	 	 	 	 	 	 d,d)„«       Z3	 d-	 	 	 	 	 	 	 d.d*„Z4y# e$ r d„ Z	Y �ŒRw xY wc c} w )/é    )ÚannotationsN)Ú	lru_cache)Ú	getLogger)é   é   )Úfinalc                ó   — | S )N© )Úclss    ú[/var/www/html/content_generation/venv/lib/python3.12/site-packages/charset_normalizer/md.pyr   r      s   € ØˆJó    é   )ÚCOMMON_CJK_CHARACTERSÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚUNICODE_SECONDARY_RANGE_KEYWORDÚ_ACCENTUATEDÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ_CJKÚ_HANGULÚ	_HIRAGANAÚ	_KATAKANAÚ_LATINÚ_THAI)Ú_character_flagsÚis_emoticonÚis_punctuationÚis_separatorÚ	is_symbolÚremove_accentÚunicode_rangeÚintÚ_GLYPH_MASKc                  óú   — e Zd ZU dZdZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dd„Zy) ÚCharInfoz>Pre-computed character properties shared across all detectors.)Ú	characterÚ	printableÚalphaÚupperÚlowerÚspaceÚdigitÚis_asciiÚcase_variableÚflagsÚaccentuatedÚlatinÚis_cjkÚ	is_arabicÚis_glyphÚpunctÚsymÚrangeÚsepÚemoticonÚsafeÚ
common_cjkÚstrr'   Úboolr(   r)   r*   r+   r,   r-   r.   r/   r#   r0   r1   r2   r3   r4   r5   r6   r7   ú
str | Noner8   r9   r:   r;   r<   c                ó  — || _         t        |«      }|dk  �r2d| _        d| _        d| _        d| _        d| _        d|cxk  rdk  rVn nSd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t        | _        d| _        d| _        d| _        �n!d|cxk  rdk  rVn nSd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t        | _        d| _        d| _        d| _        �nÀd|cxk  rd	k  rRn nOd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        �nc|dk(  sd|cxk  rdk  rUn nRd| _        d| _        d| _	        d| _
        d| _        |dk(  | _        d| _        d
| _        d| _        d| _        d| _        �nþ|j'                  «       | _        d| _        d| _        d| _	        d| _
        d| _        d| _        d
| _        d| _        | j                  rt)        |«      nd| _        | j                  rt+        |«      nd| _        �nsd| _        |j'                  «       | _        |j-                  «       | _        |j/                  «       | _        |j1                  «       | _	        |j3                  «       | _
        |j5                  «       | _        | j                  | j                  k7  | _        | j                  rt7        |«      }nd
}|| _        t9        |t:        z  «      | _        t9        |t        z  «      | _        t9        |t<        z  «      | _        t9        |t>        z  «      | _        t9        |t@        z  «      | _        | j                  rt)        |«      nd| _        | j                  rt+        |«      nd| _        tC        |«      | _"        tG        |«      | _$        tK        |«      | _&        |tN        v | _(        |tR        v | _*        y)zkCompute all properties for *character* (built once per codepoint,
        every branch assigns every slot).é€   TFéA   éZ   éa   éz   é0   é9   r   é    é	   é   N)+r'   Úordr.   r1   r3   r4   r5   r)   r*   r+   r,   r-   r(   r/   r   r0   r2   r6   r7   Úisprintabler   r    ÚisalphaÚisupperÚislowerÚisspaceÚisdigitr   r>   r   r   r   r$   r"   r8   r   r9   r   r:   r   r;   r   r<   )Úselfr'   Úor0   s       r   Ú__init__zCharInfo.__init__c   sz  € ð #ˆŒô �Y“ˆØˆs‹7Ø ˆDŒMØ$ˆDÔØˆDŒKØ"ˆDŒNØ!ˆDŒMà�QŒ}˜"�}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q”˜C•à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q”˜B•à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–Ø�b’˜Q !œ\ r�\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¡�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–ð "+×!6Ñ!6Ó!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¿.º.œ^¨IÔ6Èe�”
Ø37·>²>œ9 YÔ/Àu�–ð "ˆDŒMØ&×2Ñ2Ó4ˆDŒNØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ!%§¡¨t¯z©zÑ!9ˆDÔð �zŠzÜ(¨Ó3‘à�ØˆDŒJÜ# E¬LÑ$8Ó9ˆDÔÜ˜e¤f™nÓ-ˆDŒJÜ˜u¤t™|Ó,ˆDŒKÜ! %¬'¡/Ó2ˆDŒNÜ  ¬Ñ!4Ó5ˆDŒMð 7;·n²nœ¨	Ô2È%ˆDŒJØ/3¯~ª~”y Ô+À5ˆDŒHä" 9Ó-ˆŒ
Ü 	Ó*ˆŒÜ# IÓ.ˆŒØÔ!=Ð=ˆŒ	Ø#Ô'<Ð<ˆ�r   N)r'   r=   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__rT   r
   r   r   r&   r&   /   s†   … áHð€Ið2 ƒNØƒOØƒKØƒKØƒKØƒKØƒKØƒNØÓØƒJØÓØƒKØƒLØƒOØƒNØƒKØ	ƒIØÓØ	ƒIØƒNØ
ƒJØÓôq=r   r&   )Úmaxsizec                ó   — t        | «      S )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r&   )r'   s    r   Ú
_char_infor_   Ù   s   € ô �IÓÐr   rA   zlist[CharInfo]Ú_ASCII_CHAR_INFOc                  ó6   — e Zd ZdZdZdd„Zdd„Zed	d„«       Zy)
ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    r
   c                ó   — t         ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        ©ÚNotImplementedError©rR   r'   Úinfos      r   Ú	feed_infozMessDetectorPlugin.feed_infoí   s
   € ô
 "Ð!r   c                ó   — t         ‚)zB
        Permit to reset the plugin to the initial state.
        rd   ©rR   s    r   ÚresetzMessDetectorPlugin.resetô   s
   € ô "Ð!r   c                ó   — t         ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        rd   rj   s    r   ÚratiozMessDetectorPlugin.ratioú   s
   € ô "Ð!r   N©r'   r=   rg   r&   rU   rV   ©rU   rV   ©rU   Úfloat)	rW   rX   rY   rZ   r[   rh   rk   Úpropertyrm   r
   r   r   rb   rb   å   s,   „ ñð
 €Ió"ó"ð ò"ó ñ"r   rb   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
Ú TooManySymbolOrPunctuationPlugin©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordc                óJ   — d| _         d| _        d| _        d | _        d| _        y ©Nr   Fru   rj   s    r   rT   z)TooManySymbolOrPunctuationPlugin.__init__  s*   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÕ#r   c                ó6  — | xj                   dz  c_         || j                  k7  rn|j                  sb|j                  r| xj                  dz  c_        || _        y|j
                  s-|j                  r!|j                  s| xj                  dz  c_        || _        y)ú1Optimized feed using pre-computed character info.r   é   N)	rx   ry   r;   r6   rv   r-   r7   r:   rw   rf   s      r   rh   z*TooManySymbolOrPunctuationPlugin.feed_info  sw   € à×Ò Ñ"Õà˜×1Ñ1Ò1¸$¿)º)Ø�zŠzØ×'Ò'¨1Ñ,Õ'ð %.ˆÕ!ð —Z’Z D§H¢H°T·]²]Ø×"Ò" aÑ'Õ"à$-ˆÕ!r   c                ó.   — d| _         d| _        d| _        y ©Nr   )rv   rx   rw   rj   s    r   rk   z&TooManySymbolOrPunctuationPlugin.reset!  s   € Ø"#ˆÔØ !ˆÔØˆÕr   c                ó€   — | j                   dk(  ry| j                  | j                  z   | j                   z  }|dk\  r|S dS )Nr   ç        ç333333Ó?)rx   rv   rw   )rR   Úratio_of_punctuations     r   rm   z&TooManySymbolOrPunctuationPlugin.ratio&  sO   € à× Ñ  AÒ%Øð ×#Ñ# d×&8Ñ&8Ñ8Ø×!Ñ!ñ'"Ðð (<¸sÒ'BÐ#ÐKÈÐKr   Nro   rn   rp   ©	rW   rX   rY   r[   rT   rh   rk   rr   rm   r
   r   r   rt   rt     s.   „ ð€Ió2ó
.óð
 òLó ñLr   rt   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚTooManyAccentuatedPlugin©rx   Ú_accentuated_countc                ó    — d| _         d| _        y r�   r‰   rj   s    r   rT   z!TooManyAccentuatedPlugin.__init__6  s   € Ø%&ˆÔØ'(ˆÕr   c                ór   — | xj                   dz  c_         |j                  r| xj                  dz  c_        yy©r~   r   N)rx   r1   rŠ   rf   s      r   rh   z"TooManyAccentuatedPlugin.feed_info:  s2   € à×Ò Ñ"Õà×ÒØ×#Ò# qÑ(Ö#ð r   c                ó    — d| _         d| _        y r�   r‰   rj   s    r   rk   zTooManyAccentuatedPlugin.resetA  s   € Ø !ˆÔØ"#ˆÕr   c                óf   — | j                   dk  ry| j                  | j                   z  }|dk\  r|S dS )Nr   rƒ   gffffffÖ?r‰   )rR   Úratio_of_accentuations     r   rm   zTooManyAccentuatedPlugin.ratioE  s=   € à× Ñ  1Ò$Øà'+×'>Ñ'>À×AVÑAVÑ'VÐØ(=ÀÒ(EÐ$ÐNÈ3ÐNr   Nro   rn   rp   r†   r
   r   r   rˆ   rˆ   2  s,   „ à:€Ió)ó)ó$ð òOó ñOr   rˆ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚUnprintablePlugin©Ú_unprintable_countrx   c                ó    — d| _         d| _        y r�   r“   rj   s    r   rT   zUnprintablePlugin.__init__R  s   € Ø'(ˆÔØ%&ˆÕr   c                óœ   — |j                   s+|j                  s|dk7  r|dk7  r| xj                  dz  c_        | xj                  dz  c_        y)r~   Úu   ï»¿r   N)r,   r(   r”   rx   rf   s      r   rh   zUnprintablePlugin.feed_infoV  sD   € ð —
’
Ø—N’NØ˜VÒ#Ø˜XÒ%à×#Ò# qÑ(Õ#Ø×Ò Ñ"Ör   c                ó   — d| _         y r�   )r”   rj   s    r   rk   zUnprintablePlugin.reseta  s
   € Ø"#ˆÕr   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   rƒ   r   )rx   r”   rj   s    r   rm   zUnprintablePlugin.ratiod  s/   € à× Ñ  AÒ%Øà×'Ñ'¨!Ñ+¨t×/DÑ/DÑDÐDr   Nro   rn   rp   r†   r
   r   r   r’   r’   N  s,   „ à:€Ió'ó	#ó$ð òEó ñEr   r’   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousDuplicateAccentPlugin©Ú_successive_countrx   Ú_last_latin_characterÚ_last_was_accentuatedc                ó<   — d| _         d| _        d | _        d| _        y r|   rœ   rj   s    r   rT   z(SuspiciousDuplicateAccentPlugin.__init__u  s"   € Ø&'ˆÔØ%&ˆÔà15ˆÔ"Ø+0ˆÕ"r   c                óˆ  — | xj                   dz  c_         | j                  �‰|j                  r}| j                  rq|j                  r/| j                  j                  «       r| xj                  dz  c_        t        |«      t        | j                  «      k(  r| xj                  dz  c_        || _        |j                  | _        yr�   )rx   rž   r1   rŸ   r*   rN   r�   r!   rf   s      r   rh   z)SuspiciousDuplicateAccentPlugin.feed_info|  s™   € à×Ò Ñ"Õà×&Ñ&Ð2Ø× Ò Ø×*Ò*à�zŠz˜d×8Ñ8×@Ñ@ÔBØ×&Ò&¨!Ñ+Õ&Ü˜YÓ'¬=¸×9SÑ9SÓ+TÒTØ×&Ò&¨!Ñ+Õ&Ø%.ˆÔ"Ø%)×%5Ñ%5ˆÕ"r   c                ó<   — d| _         d| _        d | _        d| _        y r|   rœ   rj   s    r   rk   z%SuspiciousDuplicateAccentPlugin.reset‹  s"   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÕ"r   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   rƒ   r   )rx   r�   rj   s    r   rm   z%SuspiciousDuplicateAccentPlugin.ratio‘  s/   € à× Ñ  AÒ%Øà×&Ñ&¨Ñ*¨d×.CÑ.CÑCÐCr   Nro   rn   rp   r†   r
   r   r   r›   r›   l  s.   „ ð€Ió1ó6ó+ð òDó ñDr   r›   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousRange©Ú"_suspicious_successive_range_countrx   Ú_last_printable_seenÚ_last_printable_rangec                ó<   — d| _         d| _        d | _        d | _        y r�   r¦   rj   s    r   rT   zSuspiciousRange.__init__¢  s"   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÕ"r   c                óz  — | xj                   dz  c_         |j                  s|j                  s|j                  rd| _        d| _        y| j                  €|| _        |j                  | _        y| j
                  }|j                  }||k7  s|€!t        ||«      r| xj                  dz  c_        || _        || _        yr�   )	rx   r,   r6   r;   r¨   r©   r8   Ú is_suspiciously_successive_ranger§   )rR   r'   rg   Úunicode_range_aÚunicode_range_bs        r   rh   zSuspiciousRange.feed_info¨  sª   € à×Ò Ñ"Õà�:Š:˜Ÿš t§y¢yØ(,ˆDÔ%Ø)-ˆDÔ&Øà×$Ñ$Ð,Ø(1ˆDÔ%Ø)-¯©ˆDÔ&Øà&*×&@Ñ&@ˆØ&*§j¡jˆð ˜oÒ-°Ð1HÜ/°ÀÔQØ×7Ò7¸1Ñ<Õ7à$-ˆÔ!Ø%4ˆÕ"r   c                ó<   — d| _         d| _        d | _        d | _        y r�   )rx   r§   r¨   r©   rj   s    r   rk   zSuspiciousRange.resetÁ  s"   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÕ"r   c                ó^   — | j                   dk  ry| j                  dz  | j                   z  }|S )NrJ   rƒ   r   )rx   r§   )rR   Úratio_of_suspicious_range_usages     r   rm   zSuspiciousRange.ratioÇ  s<   € à× Ñ  BÒ&Øð ×3Ñ3°aÑ7Ø×!Ñ!ñ2"Ð'ð /Ð.r   Nro   rn   rp   r†   r
   r   r   r¥   r¥   ™  s,   „ ð€Ió6ó5ó2*ð ò/ó ñ/r   r¥   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuperWeirdWordPlugin©Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchrx   Ú_bad_character_countÚ_buffer_lengthÚ_buffer_last_charÚ_buffer_last_char_accentuatedÚ_buffer_accent_countÚ_buffer_glyph_countÚ_buffer_upper_countÚ_buffer_first_lowerÚ_buffer_has_non_asciic                óÖ   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d| _        d| _        y r|   r´   rj   s    r   rT   zSuperWeirdWordPlugin.__init__ç  sz   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÔ Ø).ˆÔ Ø+0ˆÕ"r   c                óØ  — |j                   rû| j                  dk(  r|j                  | _        | xj                  dz  c_        || _        |j
                  r| xj                  dz  c_        |j                  sd| _        |j                  | _
        |j                  r| xj                  dz  c_        | j                  s+|j                  r|j                  r|j                  sd| _        |j                  r| xj                  dz  c_        y| j                  sy|j                   s|j"                  s|j$                  �rè| xj&                  dz  c_        | j                  }| xj(                  |z  c_        |dk\  rÞ| j                  |z  dk\  rd| _        nÄ| j                  rF| j                  j-                  «       r,| j                  |k7  r| xj.                  dz  c_        d| _        nr| j                  dk(  rd| _        | xj.                  dz  c_        nF| j                  r:| j                  r.| j                  |dz
  k(  r| xj.                  dz  c_        d| _        |dk\  rM| j                  rA| j                  dkD  xr | j                  |z  dk  }|s| xj.                  dz  c_        d| _        | j*                  r1| xj0                  dz  c_        | xj2                  |z  c_        d	| _        d	| _        d| _        d| _        d	| _
        d| _        d| _        d| _        d	| _        d	| _        y|d
vrE|j4                  s8|j6                  r+d| _        | xj                  dz  c_        || _        d	| _
        yyyy)r~   r   r   TNé   ç      à?é   r„   F>   Ú-Ú<Ú=Ú>Ú_Ú|Ú~)r)   r»   r+   rÁ   r¼   r*   rÀ   r.   rÂ   r1   r½   r¾   r¹   r2   r5   r¿   r,   r6   r9   rµ   rx   r¸   rN   r·   r¶   rº   r-   r7   )rR   r'   rg   Úbuffer_lengthÚprobable_camel_caseds        r   rh   zSuperWeirdWordPlugin.feed_infoû  s
  € à�:Š:Ø×"Ñ" aÒ'Ø+/¯:©:�Ô(Ø×Ò 1Ñ$ÕØ%.ˆDÔ"à�zŠzØ×(Ò(¨AÑ-Õ(Ø—=’=Ø-1�Ô*à15×1AÑ1AˆDÔ.à×ÒØ×)Ò)¨QÑ.Õ)à×,Ò,ØŸš t×'7Ò'7ØŸšà+/�Ô(Ø�}Š}Ø×(Ò(¨AÑ-Õ(ØØ×"Ò"ØØ�:Š:˜Ÿš t§x£xØ×Ò Ñ!ÕØ!%×!4Ñ!4ˆMà×!Ò! ]Ñ2Õ!à Ò!Ø×,Ñ,¨}Ñ<ÀÒCØ04�DÕ-à×6Ò6Ø×.Ñ.×6Ñ6Ô8Ø×0Ñ0°MÒAà×,Ò,°Ñ1Õ,Ø04�DÕ-Ø×-Ñ-°Ò2Ø04�DÔ-Ø×,Ò,°Ñ1Ö,à×.Ò.Ø×0Ò0Ø×0Ñ0°MÀAÑ4EÒEð
 ×,Ò,°Ñ1Õ,Ø04�DÔ-Ø Ò" t×'?Ò'?à×,Ñ,¨qÑ0ò HØ×0Ñ0°=Ñ@ÀCÑGð %ñ
 ,Ø×,Ò,°Ñ1Õ,Ø04�DÔ-à×(Ò(Ø×$Ò$¨Ñ)Õ$Ø×)Ò)¨]Ñ:Õ)Ø,1�Ô)à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÔ$Ø',ˆDÔ$Ø).ˆDÕ&àÐ@Ñ@Ø—J’JØ—’à(,ˆDÔ%Ø×Ò 1Ñ$ÕØ%.ˆDÔ"Ø16ˆDÕ.ð ð ð Ar   c                óÖ   — d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        y r|   )r»   r¼   r½   r¸   r¹   r¶   rµ   rx   rº   r·   r¾   r¿   rÀ   rÁ   rÂ   rj   s    r   rk   zSuperWeirdWordPlugin.resetV  sz   € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÔ Ø#(ˆÔ Ø%*ˆÕ"r   c                ór   — | j                   dk  r| j                  dk(  ry| j                  | j                  z  S )Né
   r   rƒ   )rµ   r·   rº   rx   rj   s    r   rm   zSuperWeirdWordPlugin.ratiog  s7   € à×Ñ˜rÒ! d×&>Ñ&>À!Ò&CØà×(Ñ(¨4×+@Ñ+@Ñ@Ð@r   Nro   rn   rp   r†   r
   r   r   r³   r³   Ó  s0   „ ð€Ió$1ó(Y7óv+ð" òAó ñAr   r³   c                  ó>   — e Zd ZdZdZdd„Zd	d„Zdd„Zed
d„«       Z	y)ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    ©rx   Ú_uncommon_countc                ó    — d| _         d| _        y r�   rÖ   rj   s    r   rT   zCjkUncommonPlugin.__init__w  s   € Ø%&ˆÔØ$%ˆÕr   c                ór   — | xj                   dz  c_         |j                  s| xj                  dz  c_        yyr�   )rx   r<   r×   rf   s      r   rh   zCjkUncommonPlugin.feed_info{  s0   € à×Ò Ñ"Õà�ŠØ× Ò  AÑ%Ö ð r   c                ó    — d| _         d| _        y r�   rÖ   rj   s    r   rk   zCjkUncommonPlugin.reset‚  s   € Ø !ˆÔØ ˆÕr   c                ól   — | j                   dk  ry| j                  | j                   z  }|dkD  r|dz  S dS )Nr   rƒ   rÆ   rÓ   rÖ   )rR   Úuncommon_form_usages     r   rm   zCjkUncommonPlugin.ratio†  sD   € à× Ñ  1Ò$Øà%)×%9Ñ%9¸D×<QÑ<QÑ%QÐð ,?ÀÒ+DÐ" RÑ'ÐMÈ#ÐMr   Nro   rn   rp   )
rW   rX   rY   rZ   r[   rT   rh   rk   rr   rm   r
   r   r   rÕ   rÕ   o  s3   „ ñð 8€Ió&ó&ó!ð òNó ñNr   rÕ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArchaicUpperLowerPlugin©	Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalrx   Ú_last_alpha_seenÚ_last_alpha_seen_upperÚ_last_alpha_seen_lowerÚ_current_ascii_onlyc                ó‚   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        d| _        d| _        y )NFr   Trß   rj   s    r   rT   z ArchaicUpperLowerPlugin.__init__   sI   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÕ r   c                ó*  — |j                   xr |j                  }| }|rŽ| j                  dkD  r| j                  dk  r7|j                  s+| j                  s| xj
                  | j                  z  c_        d| _        d| _        d| _        d| _        | xj                  dz  c_	        d| _        y| j                  r|j                  sd| _        | j                  �h|j                  r| j                  s|j                  r=| j                  r1| j                  r| xj                  dz  c_        d| _        nd| _        nd| _        | xj                  dz  c_	        | xj                  dz  c_        || _        |j                  | _        |j                  | _        y)r~   r   é@   NFr   Tr   )r)   r/   rá   r-   rç   rã   râ   rä   rà   rx   r.   r*   ræ   r+   rå   )rR   r'   rg   Úis_concernedÚ	chunk_seps        r   rh   z!ArchaicUpperLowerPlugin.feed_info¯  sS  € à!ŸZ™ZÒ>¨D×,>Ñ,>ˆØ*Ð*ˆ	á˜×=Ñ=ÀÒAà×4Ñ4¸Ò:ØŸ
š
Ø×0Ò0à×8Ò8Ø×6Ñ6ñÕ8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØ×!Ò! QÑ&Õ!Ø'+ˆDÔ$àà×#Ò#¨D¯MªMØ',ˆDÔ$à× Ñ Ð,Ø—
’
˜t×:Ò:Ø—
’
˜t×:Ò:à—9’9Ø×6Ò6¸!Ñ;Õ6Ø %�D•Ià $�D•Ià!�”	à×Ò Ñ"ÕØ×,Ò,°Ñ1Õ,Ø )ˆÔØ&*§j¡jˆÔ#Ø&*§j¡jˆÕ#r   c                ó‚   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d| _        d| _        y )Nr   FT)	rx   rá   râ   rã   rä   rå   ræ   rà   rç   rj   s    r   rk   zArchaicUpperLowerPlugin.resetÜ  sI   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØ&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÕ r   c                óT   — | j                   dk(  ry| j                  | j                   z  S )Nr   rƒ   )rx   rã   rj   s    r   rm   zArchaicUpperLowerPlugin.ratioç  s*   € à× Ñ  AÒ%Øà×7Ñ7¸$×:OÑ:OÑOÐOr   Nro   rn   rp   r†   r
   r   r   rÞ   rÞ   ’  s/   „ ð
€Ió.ó+1óZ	(ð òPó ñPr   rÞ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArabicIsolatedFormPlugin©rx   Ú_isolated_form_countc                ó    — d| _         d| _        y r�   rñ   rj   s    r   rT   z!ArabicIsolatedFormPlugin.__init__ó  s   € Ø%&ˆÔØ)*ˆÕ!r   c                ó    — d| _         d| _        y r�   rñ   rj   s    r   rk   zArabicIsolatedFormPlugin.reset÷  s   € Ø !ˆÔØ$%ˆÕ!r   c                ó€   — | xj                   dz  c_         |j                  t        z  r| xj                  dz  c_        yyr�   )rx   r0   r   rò   rf   s      r   rh   z"ArabicIsolatedFormPlugin.feed_infoû  s6   € à×Ò Ñ"Õà�:‰:Ô-Ò-Ø×%Ò%¨Ñ*Ö%ð .r   c                óX   — | j                   dk  ry| j                  | j                   z  }|S )Nr   rƒ   rñ   )rR   Úisolated_form_usages     r   rm   zArabicIsolatedFormPlugin.ratio  s0   € à× Ñ  1Ò$Øà%)×%>Ñ%>À×AVÑAVÑ%VÐà"Ð"r   Nro   rn   rp   )	rW   rX   rY   r[   rT   rk   rh   rr   rm   r
   r   r   rð   rð   ï  s*   „ à<€Ió+ó&ó+ð ò#ó ñ#r   rð   é   c                ó–  — | �|€y| |k(  ryd| v rd|v ryd| v sd|v ryd| v sd|v r	d| v sd|v ry| j                  d«      |j                  d«      }}|D ]  }|t        v rŒ||v sŒ y | dv |dv }}|s|r	d| v sd|v ry|r|ryd	| v sd	|v rd| v sd|v ry| d
k(  s|d
k(  ryd| v sd|v s| dv r!|dv rd| v sd|v ryd| v sd|v ry| d
k(  s|d
k(  ryy)za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    TFÚLatinÚ	EmoticonsÚ	CombiningÚ )ÚHiraganaÚKatakanaÚCJKÚHangulzBasic Latin)rÿ   rþ   ÚPunctuationÚForms)Úsplitr   )r­   r®   Úkeywords_range_aÚkeywords_range_bÚelÚrange_a_jp_charsÚrange_b_jp_charss          r   r¬   r¬     s‚  € ð Ð /Ð"9Øà˜/Ò)Øà�/Ñ! g°Ñ&@Øà�oÑ%¨¸Ñ)GØð 	�?Ñ" g°Ñ&@Ø�Ñ&¨+¸Ñ*Hàð 	×Ñ˜cÓ"Ø×Ñ˜cÓ"ð 'Ðó
 ˆØÔ0Ñ0ØØÐ!Ò!Ùð	 ð 	ð
ð	
ð
 	Ð3Ð3ð 'Ðñ 	Ñ,Ø�Ñ  E¨_Ñ$<àÙÑ,Øà�?Ñ" h°/Ñ&AØ�OÑ# u°Ñ'?ØØ˜mÒ+¨À-Ò/OØð 	�Ñ  E¨_Ñ$<ØÐ3Ñ3ØÐ7Ñ7à˜OÑ+¨}ÀÑ/OØØ�oÑ%¨°OÑ)CØØ˜mÒ+¨À-Ò/OØàr   c           	     óV  — t        | «      }|dk  rd}n
|dk  rd}nd}| j                  «       }t        }t        }t	        «       }t        «       }	t        «       }
t        «       }t        «       }t        «       }t        «       }t        «       }t        «       }|j                  }|	j                  }|
j                  }|j                  }|j                  }|j                  }|j                  }|j                  }|j                  }t        d||«      D �]P  }| |||z    D ]Ç  }t        |«      }|dk  r||   }n ||«      } |||«        |||«       |r|j                   r	 |||«       ŒK |||«       |j                   r |||«        |||«       |j"                  sŒ |||«       |j$                  r	 |||«       |j&                  r	 |||«       |j(                  sŒ¿ |||«       ŒÉ |j*                  |	j*                  z   |
j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   }||k\  s�ŒQ n— |d   } |d|«       |s	 |d|«        |d|«       |j*                  |	j*                  z   |
j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   |j*                  z   }|r¦t-        d	«      } | j/                  t0        d
|› d|› d|› �«       |dkD  r8| j/                  t0        d| dd › �«       | j/                  t0        d| dd › �«       ||	|
||||||f	D ]1  }!| j/                  t0        |!j2                  › d|!j*                  › �«       Œ3 t5        |d«      S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    iÿ  rH   rø   rê   rA   r   rÓ   Ú
Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=é   zStarting with: NzEnding with: iðÿÿÿz: r   )ÚlenÚisasciir`   r_   rt   rˆ   r’   r›   r¥   r³   rÕ   rÞ   rð   rh   r8   rK   r(   r)   r2   r3   r4   rm   r   Úlogr   Ú	__class__Úround)"Údecoded_sequenceÚmaximum_thresholdÚdebugÚseq_lenÚstepÚis_pure_asciiÚ
ascii_infoÚ	char_infoÚd_spÚd_taÚd_upÚd_sdaÚd_srÚd_swÚd_cuÚd_auÚd_aiÚ	d_sp_feedÚ	d_ta_feedÚ	d_up_feedÚ
d_sda_feedÚ	d_sr_feedÚ	d_sw_feedÚ	d_cu_feedÚ	d_au_feedÚ	d_ai_feedÚblock_startr'   Ú	codepointrg   Úmean_mess_ratioÚnl_infoÚloggerÚdts"                                     r   Ú
mess_ratior3  V  s×  € ô Ð'Ó(€Gà�‚}Ø‰Ø	�4ŠØ‰àˆð
 +×2Ñ2Ó4€Mô
 "€JÜ€Iô .NÓ-O€DÜ%=Ó%?€DÜ/Ó1€DÜ-LÓ-N€EÜ+Ó-€DÜ!5Ó!7€DÜ/Ó1€DÜ$;Ó$=€DÜ%=Ó%?€Dð —‘€IØ—‘€IØ—‘€IØ—‘€JØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€Iä˜Q ¨×.ˆØ)¨+¸ÀdÑ8JÓKˆIô
 ! ›^ˆIØ˜3ŠØ! )Ñ,‘á  Ó+�ñ �i Ô&Ù�i Ô&áà—>’>Ù˜i¨Ô.Øá�i Ô&ð �~Š~Ù˜) TÔ*Ù˜) TÔ*ð �z‹zÙ˜) TÔ*à—:’:Ù˜y¨$Ô/à—;’;Ù˜i¨Ô.à—>“>Ù˜i¨Õ.ðO LðT �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð 	ð Ð/Ô/Ùðo /ðt ˜R‘.ˆÙ�$˜Ô ÙÙ�d˜GÔ$Ù�$˜Ô ð �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð 	ñ ÜÐ/Ó0ˆà�
‰
Üð1Ø15°Ð6GÈÐGXð Y!Ø!2Ð 3ð5ô	
ð �RŠ<Ø�J‰J”u Ð0@ÀÀ"Ð0EÐ/FÐGÔHØ�J‰J”u Ð.>¸s¸uÐ.EÐ-FÐGÔHà˜˜t U¨D°$¸¸dÀDÓIˆBØ�J‰J”u §¡ ¨b°·±°
Ð;Õ<ð Jô � !Ó$Ð$r   )r'   r=   rU   r&   )r­   r?   r®   r?   rU   r>   )gš™™™™™É?F)r  r=   r  rq   r  r>   rU   rq   )5Ú
__future__r   ÚsysÚ	functoolsr   Úloggingr   Úversion_infoÚtypingr   Útyping_extensionsÚImportErrorÚconstantr   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r$   r\   r&   r_   r8   Úchrr`   rb   rt   rˆ   r’   r›   r¥   r³   rÕ   rÞ   rð   r¬   r3  )Ú
_codepoints   0r   Ú<module>r@     s}  ðÞ "ã 
Ý Ý à×Ñ�vÒÞðÝ+÷÷ ÷ õ ÷÷ ñ ð ˜'‘> IÑ-°	Ñ9¸EÑA€ˆSÓ Að ÷d=ð d=ó ðd=ñR �4Ôòó ðñ 16°c´
ó$Ù0: *�H‰S�‹_Õ°
ñ$Ð �.ó ÷
"ñ "ð< ô+LÐ'9ó +Ló ð+Lð\ ôOÐ1ó Oó ðOð6 ôEÐ*ó Eó ðEð: ô)DÐ&8ó )Dó ð)DðX ô6/Ð(ó 6/ó ð6/ðr ôXAÐ-ó XAó ðXAðv ôNÐ*ó Nó ðNðD ôYPÐ0ó YPó ðYPðx ô#Ð1ó #ó ð#ñ8 �4ÔðFØðFØ2<ðFà	òFó ðFðT JOðT%ØðT%Ø.3ðT%ØBFðT%à
ôT%øðU ò õ	ðüòh$s   ¯E< Â!FÅ<FÆF