Ë
    ^ãjE  ã                  óê   — d Z ddlmZ ddlmZ g d¢ZddlmZ ddlm	Z	 ddl
m
Z
 dd	lmZmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zy)z.This is a python implementation of wcswidth().é    )Úannotations)ÚOptional)zwcwidth._constantszwcwidth._wcwidthzwcwidth.bisearchzwcwidth.table_graphemezwcwidth.table_vs16é   )Útable_grapheme_overrides©Úwcwidth)Úbisearch)Ú_EMOJI_ZWJ_SETÚ_ISC_VIRAMA_SETÚ_CATEGORY_MC_TABLEÚ_FITZPATRICK_RANGEÚ_REGIONAL_INDICATOR_SETÚresolve_terminalÚget_term_overridesÚ_clamp_ambiguous_width)ÚVS15_WIDE_TO_NARROW)ÚVS16_NARROW_TO_WIDE)ÚGRAPHEME_EXTENDc                ó°  — |dz   }||k  rCt        t        | |   «      t        «      r'|dz  }||k  rt        t        | |   «      t        «      rŒ'||k  rƒt        | |   «      dk7  r	 |S |dz  }||k  rbt        | |   «      t        v rN|dz  }||k  rCt        t        | |   «      t        «      r'|dz  }||k  rt        t        | |   «      t        «      rŒ'Œ…	 |S |S )zÖ
    Scan forward from *start* (base character) to end of a ZWJ grapheme cluster.

    Follows the UAX #29 GB11 pattern (ExtPict Extend* ZWJ x ExtPict) chained repeatedly until no
    more ZWJ joins are found.
    r   é   )r	   Úordr   r
   )ÚtextÚstartÚendÚidxs       úS/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/wcwidth/_wcswidth.pyÚ_scan_zwj_cluster_endr      sá   € ð �!‰)€Cà
�Š)œ¤ T¨#¡Y£´ÔAØˆq‰ˆð �Š)œ¤ T¨#¡Y£´ÕAð �Š)Üˆt�C‰y‹>˜VÒ#Øð €Jð 	ˆq‰ˆð
 �Š9œ˜T #™Y›¬>Ñ9Ø�1‰HˆCà˜’)¤¬¨T°#©Y«¼Ô IØ�q‘�ð ˜’)¤¬¨T°#©Y«¼Õ IàØØ€Jˆ3€Jó    Nc                ó  ‡— |€+| j                  «       r| j                  «       rt        | «      S t        ‰«      Š‰dk(  rt        nˆfd„}|€t        | «      nt        |t        | «      «      }d}d}d}d}	d}
d}d}t        d   }t        d   }t        }||k  �rg| |   }t        |«      }|dk(  r"|r|dz  }n|dz   |k  r
d}
d}|d	z  }nd}|dz  }Œ=|d
k(  r|dk\  r ||	|«      rd	}d}|dz  }ŒZ|dk(  r#|dk\  rt        |	|«      r
|
d	k(  r|dz  }d}|dz  }Œ‚|dkD  r‡|t        v rTd}|dz
  }|dk\  r8t        | |   «      t        v r$|dz  }|dz  }|dk\  rt        | |   «      t        v rŒ$|d	z  dk(  r3|}	|dz  }Œãt        d   |cxk  rt        d   k  rn n|	t        v r|dz  }�Œ ||«      }|dk  ry|dkD  r|rd	}n|r||z  }|}n|}|}|}	|}
d}n&|t        v rd}n|dk\  r ||t        «      rd	}d}d}nd}|dz  }||k  r�Œg|r||z  }|S )aî  
    Given a unicode string, return its printable length on a terminal.

    See :ref:`Specification` for details of cell measurement.

    This implementation differs from Markus Khun's original POSIX C implementation, in that this
    ``wcswidth()`` processes graphemes strings yielded by :func:`wcwidth.iter_graphemes` defined by
    `Unicode Standard Annex #29`_. POSIX wcswidth(3) is not grapheme-aware and does not measure many
    kinds of Emojis or complex scripts correctly.

    :param pwcs: Measure width of given unicode string.
    :param n: When ``n`` is None (default), return the length of the entire
        string, otherwise only the first ``n`` characters are measured.
    :param unicode_version: Ignored. Retained for backwards compatibility.

        .. deprecated:: 0.3.0
           Only the latest Unicode version is now shipped.

    :param ambiguous_width: Width to use for East Asian Ambiguous (A)
        characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
    :returns: The width, in cells, needed to display the first ``n`` characters
        of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
        characters!

    .. _`Unicode Standard Annex #29`: https://www.unicode.org/reports/tr29/
    r   c                ó   •— t        | d‰«      S ©NÚautor   ©ÚcÚambiguous_widths    €r   ú<lambda>zwcswidth.<locals>.<lambda>f   ó   ø€ ¼gÀaÈÐQ`Ó>a€ r   r   éþÿÿÿéÿÿÿÿFú9.0.0r   é   éþ  éþ  éÿÿ  T)ÚisasciiÚisprintableÚlenr   r   Úminr   r   r	   r   r   r   r
   r   r   )ÚpwcsÚnÚunicode_versionr%   Ú_wcwidthr   Útotal_widthr   Úlast_measured_idxÚlast_measured_ucsÚlast_measured_wÚprev_was_viramaÚcluster_widthÚvs16_nw_tableÚvs15_wn_tableÚ	_bisearchÚcharÚucsÚ	ri_beforeÚjÚws      `                 r   ÚwcswidthrE   =   sÅ  ø€ ðH 	€y�T—\‘\”^¨×(8Ñ(8Ô(:Ü�4‹yÐä,¨_Ó=€Oà)¨QÒ.�wÓ4a€Hà�yŒ#ˆdŒ)¤c¨!¬S°«YÓ&7€CØ€KØ
€CàÐØÐØ€OØ€OØ€MÜ'¨Ñ0€MÜ'¨Ñ0€MÜ€Ià
�‹)Ø�C‰yˆÜ�$‹iˆð �&Š=ÙØ�q‘‘Ø�q‘˜3’Ø"#�Ø"'�Ø�q‘‘à"'�Ø�q‘�Øð �&Š=Ð.°!Ò3ÙÐ*¨MÔ:Ø !�Ø "ÐØ�1‰HˆCØð �&Š=Ð.°!Ò3ÜÐ)¨=Ô9¸oÐQRÒ>RØ˜qÑ �Ø "ÐØ�1‰HˆCØð �Š<ØÔ-Ñ-Ø�	Ø˜!‘G�Ø˜1’f¤ T¨!¡W£Ô1HÑ!HØ ‘N�IØ˜‘F�Að ˜1’f¤ T¨!¡W£Ô1HÒ!Hð ˜q‘= AÒ%Ø(+Ð%Ø˜1‘H�CØÜ$ QÑ'¨3ÔGÔ2DÀQÑ2GÕGØ'¬>Ñ9Ø�q‘�Ùñ �T‹NˆØˆqŠ5ØØˆqŠ5ÙØ !‘ÙØ˜}Ñ,�Ø !‘à !�à #ÐØ #ÐØˆOØ#‰OØ”OÑ#Ø"‰OØ !Ò#©	°#Ô7IÔ(JØˆMØ "ÐØ#‰Oà#ˆOØˆq‰ˆð_ �Œ)ñb Ø�}Ñ$ˆØÐr   c                óÈ  ‡— |€+| j                  «       r| j                  «       rt        | «      S t        ‰«      Št	        |«      }|rit        |«      }|j                  }|j                  }|j                  }	|j                  }
|j                  }|j                  }t        j                  |«      }nd}d}d}	d}
d}d}i }‰dk(  rt        nˆfd„}|€t        | «      nt        |t        | «      «      }d}d}d}d}d}d}d}d}d}t         d   }t"        d   }t$        }||k  �rŽ| |   }t'        |«      }|d	k(  rk|r|dz  }nb|dz   |k  rS|rG|dk\  rB|t(        v r:t+        | ||«      }| || }|j                  |«      } | �|| |z
  z  }d}d}d}d}d}|}Œtd}d}|d
z  }nd}|dz  }Œ†|dk(  r$|dk\  r|r
 |||«      rn |||«      rd
}d}|dz  }Œ¯|dk(  r7|dk\  r2|}!t%        |!|«      }"|	rt%        |!|	«      rd}"|"r
|d
k(  r|dz  }d}|dz  }Œë|dkD  r“|t,        v r`d}#|dz
  }$|$dk\  r8t'        | |$   «      t,        v r$|#dz  }#|$dz  }$|$dk\  rt'        | |$   «      t,        v rŒ$|#d
z  dk(  r?|r	 |||«      s4|}|dz  }�ŒXt.        d   |cxk  rt.        d   k  rn n|t(        v r|dz  }�Œƒ ||«      }%|%dk  ry|%d
k(  r|rt%        ||«      rd}%n|%d
k(  r|
rt%        ||
«      rd}%|%dk(  r|rt%        ||«      rd
}%n|%dk(  r|rt%        ||«      rd}%|%dkD  rv|rd
}nh|r`d}&|rN|dk\  rI| ||dz    }'|j                  |'«      } | �
|| z   }d}&d}n)| || }(|j                  |(«      } | �|| z   }n||z  }n||z  }|&s|%}|}|}n|%}|}|}|}|}|%}d}n&|t0        v rd}n|dk\  r ||t2        «      rd
}d}d}nd}|dz  }||k  r�ŒŽ|r2|r+|dk\  r&| || }(|j                  |(«      } | �|| z   }|S ||z  }|S ||z  }|S )a  
    Given a unicode string, return its printable length on a terminal given by ``term_program``.

    See :ref:`Specification` for details of cell measurement.

    Unlike :func:`wcswidth`, this function applies per-terminal correction tables for
    emoji presentation and grapheme clusters.

    :param pwcs: Measure width of given unicode string.
    :param n: When ``n`` is None (default), return the length of the entire
        string, otherwise only the first ``n`` characters are measured.
    :param unicode_version: Ignored. Retained for backwards compatibility.
    :param ambiguous_width: Width to use for East Asian Ambiguous (A)
        characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
    :param term_program: Terminal software identifier for table correction.
        ``True`` (default) reads the ``TERM_PROGRAM`` or ``TERM`` environment
        variable for auto-detection.  ``False`` disables override lookup.
        Accepts a canonical terminal name matching :func:`list_term_programs`,
        such as from XTVERSION_, ENQ_, or ``TERM_PROGRAM``.

        .. versionadded:: 0.8.0
    :returns: The width, in cells, needed to display the first ``n`` characters
        of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
        characters!
    © r   c                ó   •— t        | d‰«      S r!   r   r#   s    €r   r&   zwcstwidth.<locals>.<lambda>  r'   r   r   r(   r)   Fr*   r   r+   r,   r-   r.   T)r/   r0   r1   r   r   r   ÚnarrowerÚvs16_narrowerÚ
vs15_widerÚzeroerÚnarrow_widerÚnarrow_zeroerr   Úgetr   r2   r   r   r	   r   r
   r   r   r   r   r   ))r3   r4   r5   r%   Úterm_programÚterm_canonicalÚ	overridesÚ	_narrowerÚ_vs16_narrowerÚ_vs15_widerÚ_zeroerÚ_narrow_widerÚ_narrow_zeroerÚ_grapheme_overridesr6   r   r7   r   r8   r9   r:   r;   Úcluster_startÚtotal_before_clusterr<   r=   r>   r?   r@   rA   Úcluster_endÚclusterÚ
override_wÚbase_ucsÚvs15_narrowrB   rC   rD   ÚflushedÚ	candidateÚcluster_texts)      `                                     r   Ú	wcstwidthrd   Ë   s^  ø€ ðJ 	€y�T—\‘\”^¨×(8Ñ(8Ô(:Ü�4‹yÐä,¨_Ó=€Oô & lÓ3€Nñ Ü& ~Ó6ˆ	Ø×&Ñ&ˆ	Ø"×0Ñ0ˆØ×*Ñ*ˆØ×"Ñ"ˆØ!×.Ñ.ˆØ"×0Ñ0ˆÜ6×:Ñ:¸>ÓJÑàˆ	ØˆØˆØˆØˆØˆØ Ðð *¨QÒ.�wÓ4a€Hà�yŒ#ˆdŒ)¤c¨!¬S°«YÓ&7€CØ€KØ
€Cð ÐØÐØ€OØ€OØ€MØÐØ€MÜ'¨Ñ0€MÜ'¨Ñ0€MÜ€Ià
�‹)Ø�C‰yˆÜ�$‹iˆð �&Š=ÙØ�q‘‘Ø�q‘˜3’á'Ø-°Ò2Ø-´Ñ?Ü"7¸Ð>OÐQTÓ"U�KØ"Ð#4°[ÐA�GØ!4×!8Ñ!8¸Ó!A�JØ!Ð-Ø#¨
°_Ñ(DÑE˜Ø,.Ð)Ø,.Ð)Ø*+˜Ø*/˜Ø(*˜Ø)˜Ø ð #$�Ø"'�Ø�q‘‘à"'�Ø�q‘�Øð �&Š=Ð.°!Ò3Ù¡)Ð,=¸~Ô"NØÙÐ,¨mÔ<Ø !�Ø "ÐØ�1‰HˆCØð �&Š=Ð.°!Ò3Ø(ˆHÜ" 8¨]Ó;ˆKÙœx¨°+Ô>Ø#�Ù˜°!Ò3Ø˜qÑ �Ø "ÐØ�1‰HˆCØð �Š<ØÔ-Ñ-Ø�	Ø˜!‘G�Ø˜1’f¤ T¨!¡W£Ô1HÑ!HØ ‘N�IØ˜‘F�Að ˜1’f¤ T¨!¡W£Ô1HÒ!Hð ˜q‘= AÒ%©y¹YÀsÈIÔ=VØ(+Ð%Ø˜1‘H�CÙÜ$ QÑ'¨3ÔGÔ2DÀQÑ2GÕGØ'¬>Ñ9Ø�q‘�Ùñ �T‹NˆØˆqŠ5àà�Š6‘i¤H¨S°)Ô$<Ø‰AØ�!ŠV™¤H¨S°'Ô$:ØˆAØ�Š6‘m¬°°mÔ(DØ‰AØ�!ŠV™¬8°C¸Ô+HØˆAØˆqŠ5áØ !‘Ùà�Ù&¨=¸AÒ+=ð !% ]°3¸±7Ð ;�IØ!4×!8Ñ!8¸Ó!C�JØ!Ð-Ø&:¸ZÑ&G˜Ø"&˜Ø()™à'+¨M¸#Ð'>˜Ø%8×%<Ñ%<¸\Ó%J˜
Ø%Ð1Ø*>ÀÑ*K™Kà'¨=Ñ8™Kà =Ñ0�KÙØ$%�MØ$'�MØ+6Ñ(à !�Ø #�Ø'2Ð$Ø #ÐØ #ÐØˆOØ#‰OØ”OÑ#Ø"‰OØ !Ò#©	°#Ô7IÔ(JàˆMØ "ÐØ#‰Oà#ˆOØˆq‰ˆða �Œ)ñd Ù =°AÒ#5Ø ¨cÐ2ˆLØ,×0Ñ0°Ó>ˆJØÐ%Ø2°ZÑ?�ð
 Ðð ˜}Ñ,�ð Ðð ˜=Ñ(ˆKØÐr   )r   Ústrr   Úintr   rf   Úreturnrf   )Nr"   r   )
r3   re   r4   úOptional[int]r5   re   r%   rf   rg   rf   )Nr"   r   T)r3   re   r4   rh   r5   re   r%   rf   rP   z
bool | strrg   rf   )Ú__doc__Ú
__future__r   Útypingr   Ú__lazy_modules__Ú r   r6   r   r	   Ú
_constantsr
   r   r   r   r   r   r   r   Ú
table_vs15r   Ú
table_vs16r   Útable_graphemer   r   rE   rd   rG   r   r   ú<module>rr      sØ   ðÙ 4å "å òÐ õ 'Ý Ý ÷1÷ 1ó 1õ ,Ý +Ý +óð@ Ø!Øð	KØ
ðKàðKð ðKð ð	Kð
 	óKð` Ø!ØØ#ðsØ
ðsàðsð ðsð ð	sð
 ðsð 	ôsr   