Ë
    S"“jp  ã                   ó2  — 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
 ddlmZmZmZ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mZmZmZmZmZ  G d
„ de«      Z de!de	e!e
e   f   fd„Z"edededededed„ ed„ ed„ ed„ ed„ ed„ ed„ iZ#de!dee   de!fd„Z$y)z(
Simple HTML -> Telegram entity parser.
é    )Údeque)Úescape)Ú
HTMLParser)ÚIterableÚTupleÚListé   )Úadd_surrogateÚdel_surrogateÚwithin_surrogateÚ
strip_text)ÚTLObject)ÚMessageEntityBoldÚMessageEntityItalicÚMessageEntityCodeÚMessageEntityPreÚMessageEntityEmailÚMessageEntityUrlÚMessageEntityTextUrlÚMessageEntityMentionNameÚMessageEntityUnderlineÚMessageEntityStrikeÚMessageEntityBlockquoteÚMessageEntityCustomEmojiÚTypeMessageEntityc                   ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚHTMLToTelegramParserc                 óˆ   •— t         ‰| �  «        d| _        g | _        i | _        t        «       | _        t        «       | _        y )NÚ )ÚsuperÚ__init__ÚtextÚentitiesÚ_building_entitiesr   Ú
_open_tagsÚ_open_tags_meta)ÚselfÚ	__class__s    €úY/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/telethon/extensions/html.pyr!   zHTMLToTelegramParser.__init__   s7   ø€ Ü‰ÑÔØˆŒ	ØˆŒØ"$ˆÔÜ›'ˆŒÜ$›wˆÕó    c                 ó2  — | j                   j                  |«       | j                  j                  d «       t        |«      }d }i }|dk(  s|dk(  rt        }�n:|dk(  s|dk(  rt
        }�n(|dk(  rt        }�n|dk(  s|dk(  rt        }�n	|dk(  rt        }d	|v rúd
|d<   nô|dk(  r(	 | j                  d   }	 |d   t        d«      d  |_        nÇ|dk(  rt        }d|d<   n¶|dk(  r’	 |d   }|j                  d«      r|t        d«      d  }t         }n0| j#                  «       |k(  rt$        }nt&        }t)        |«      |d<   d }| j                  j+                  «        | j                  j                  |«       n|dk(  r	 t-        |d   «      }t0        }||d<   |r;|| j                  vr, |dt        | j2                  «      ddœ|¤Ž| j                  |<   y y y # t        $ r Y �Œw xY w# t        $ r	 t        }Y Œ_w xY w# t        $ r Y y w xY w# t        t.        f$ r Y y w xY w)NÚstrongÚbÚemÚiÚuÚdelÚsÚ
blockquoteÚ
expandableTÚ	collapsedÚcodeÚpreÚclassz	language-r   ÚlanguageÚaÚhrefzmailto:Úurlztg-emojizemoji-idÚdocument_idr   )ÚoffsetÚlength© )r%   Ú
appendleftr&   Údictr   r   r   r   r   r$   Úlenr9   ÚKeyErrorr   r   Ú
startswithr   Úget_starttag_textr   r   r   ÚpopleftÚintÚ
ValueErrorr   r"   )r'   ÚtagÚattrsÚ
EntityTypeÚargsr7   r<   Úemoji_ids           r)   Úhandle_starttagz$HTMLToTelegramParser.handle_starttag   sE  € Ø�‰×"Ñ" 3Ô'Ø×Ñ×'Ñ'¨Ô-ä�U“ˆØˆ
ØˆØ�(Š?˜c SšjÜ*ŠJØ�DŠ[˜C 3šJÜ,ŠJØ�CŠZÜ/ŠJØ�EŠ\˜S CšZÜ,ŠJØ�LÒ Ü0ˆJØ˜uÑ$Ø$(��[Ò!Ø�FŠ]ð/ð ×-Ñ-¨eÑ4�ðØ#(¨¡>´#°kÓ2BÐ2CÐ#D�C”Løð
 �EŠ\Ü)ˆJØ!ˆD�ÒØ�CŠZðØ˜F‘m�ð �~‰~˜iÔ(Øœ#˜i›.˜/Ð*�Ü/‘
à×)Ñ)Ó+¨sÒ2Ü!1‘Jä!5�JÜ"/°Ó"4�D˜‘KØ�CØ× Ñ ×(Ñ(Ô*Ø× Ñ ×+Ñ+¨CÕ0Ø�JÒðÜ˜u ZÑ0Ó1�ô 2ˆJØ"*ˆD�Ñá˜# T×%<Ñ%<Ñ<Ù+5ð ,Ü˜4Ÿ9™9“~àñ,ð ñ	,ˆD×#Ñ# CÒ(ð =ˆ:øôC  ò Úðûäò /Ü.’
ð/ûô ò Ùðûô" œjÐ)ò ÙðúsT   Â$G  Â4G Ã"G5 Å9H Ç	GÇG  ÇGÇG  Ç G2Ç1G2Ç5	HÈ HÈHÈHc                 ó0  — t        | j                  «      dkD  r| j                  d   nd}|dk(  r| j                  d   }|r|}| j                  j	                  «       D ]#  \  }}|xj
                  t        |«      z  c_        Œ% | xj                  |z  c_        y )Nr   r   r:   )rC   r%   r&   r$   Úitemsr?   r"   )r'   r"   Úprevious_tagr<   rJ   Úentitys         r)   Úhandle_dataz HTMLToTelegramParser.handle_datac   s†   € Ü-0°·±Ó-AÀAÒ-E�t—‘ qÒ)È2ˆØ˜3ÒØ×&Ñ& qÑ)ˆCÙØ�à×2Ñ2×8Ñ8Ó:ò 	'‰KˆC�Ø�MŠMœS ›YÑ&ŽMð	'ð 	�	Š	�TÑŽ	r*   c                 ó   — 	 | j                   j                  «        | j                  j                  «        | j                  j                  |d «      }|r| j                  j                  |«       y y # t        $ r Y ŒFw xY w©N)r%   rG   r&   Ú
IndexErrorr$   Úpopr#   Úappend)r'   rJ   rS   s      r)   Úhandle_endtagz"HTMLToTelegramParser.handle_endtago   sq   € ð	Ø�O‰O×#Ñ#Ô%Ø× Ñ ×(Ñ(Ô*ð ×(Ñ(×,Ñ,¨S°$Ó7ˆÙØ�M‰M× Ñ  Õ(ð øô ò 	Ùð	ús   ‚4A1 Á1	A=Á<A=)Ú__name__Ú
__module__Ú__qualname__r!   rO   rT   rZ   Ú__classcell__)r(   s   @r)   r   r      s   ø„ ô'òDòL
ö)r*   r   ÚhtmlÚreturnc                 ó2  — | s| g fS t        «       }|j                  t        | «      «       t        |j                  |j
                  «      }|j
                  j                  «        |j
                  j                  d„ ¬«       t        |«      |j
                  fS )a  
    Parses the given HTML message and returns its stripped representation
    plus a list of the MessageEntity's that were found.

    :param html: the message with HTML to be parsed.
    :return: a tuple consisting of (clean message, [message entities]).
    c                 ó   — | j                   S rV   )r>   )rS   s    r)   ú<lambda>zparse.<locals>.<lambda>‰   s
   € ¨F¯M©M€ r*   ©Úkey)	r   Úfeedr
   r   r"   r#   ÚreverseÚsortr   )r_   Úparserr"   s      r)   Úparserj   z   sw   € ñ Ø�Rˆxˆä!Ó#€FØ
‡K�K”˜dÓ#Ô$Ü�f—k‘k 6§?¡?Ó3€DØ
‡O�O×ÑÔØ
‡O�O×ÑÑ9ÐÔ:Ü˜Ó §¡Ð/Ð/r*   )z<strong>z	</strong>)z<em>z</em>)z<code>z</code>)z<u>z</u>)z<del>z</del>c                 ó*   — | j                   rddfS ddfS )Nz<blockquote expandable>z<blockquote>z</blockquote>)r5   ©ÚeÚ_s     r)   rc   rc   “   s#   € Ø%&§[¢[Ð!Øð+€ Ø6DØð+€ r*   c                 ó<   — dj                  | j                  «      dfS )Nz-<pre>
    <code class='language-{}'>
        z{}
    </code>
</pre>)Úformatr9   rl   s     r)   rc   rc   —   s!   € ð	ç‘6˜!Ÿ*™*Ó%ð (ð$€ r*   c                 ó(   — dj                  |«      dfS )Nz<a href="mailto:{}">ú</a>©rp   ©rn   Úts     r)   rc   rc   ž   s   € Ð&<×&CÑ&CÀAÓ&FÈÐ%O€ r*   c                 ó(   — dj                  |«      dfS ©Nz<a href="{}">rr   rs   rt   s     r)   rc   rc   Ÿ   s   €  O×$:Ñ$:¸1Ó$=¸vÐ#F€ r*   c                 óN   — dj                  t        | j                  «      «      dfS rw   )rp   r   r<   rl   s     r)   rc   rc       s   € ¨×(>Ñ(>¼vÀaÇeÁe»}Ó(MÈvÐ'V€ r*   c                 ó<   — dj                  | j                  «      dfS )Nz<a href="tg://user?id={}">rr   )rp   Úuser_idrl   s     r)   rc   rc   ¡   s   € Ð,H×,OÑ,OÐPQ×PYÑPYÓ,ZÐ\bÐ+c€ r*   c                 ó<   — dj                  | j                  «      dfS )Nz<tg-emoji emoji-id="{}">z</tg-emoji>)rp   r=   rl   s     r)   rc   rc   ¢   s   € Ð,F×,MÑ,MÈaÏmÉmÓ,\Ð^kÐ+l€ r*   r"   r#   c                 óÊ  — | s| S |st        | «      S t        |t        «      r|f}t        | «      } g }t	        |«      D ]’  \  }}|j
                  }|j
                  |j                  z   }t        j                  t        |«      d«      }|sŒMt        |«      r ||| || «      }|j                  |||d   f«       |j                  || |d   f«       Œ” |j                  d„ ¬«       t        | «      }|rT|j                  «       \  }	}
}t        | |	«      r|	dz  }	t        | |	«      rŒ| d|	 |z   t        | |	| «      z   | |d z   } |	}|rŒTt        | d| «      | |d z   } t!        | «      S )a=  
    Performs the reverse operation to .parse(), effectively returning HTML
    given a normal text and its MessageEntity's.

    :param text: the text to be reconverted into HTML.
    :param entities: the MessageEntity's applied to the text.
    :return: a HTML representation of the combination of both inputs.
    Nr   é   c                 ó   — | d   | d   fS )Nr   r}   r@   )ru   s    r)   rc   zunparse.<locals>.<lambda>Ã   s   €  ! A¡$¨¨!© € r*   rd   )r   Ú
isinstancer   r
   Ú	enumerater>   r?   ÚENTITY_TO_FORMATTERÚgetÚtypeÚcallablerY   rh   rC   rX   r   r   )r"   r#   Ú	insert_atr/   rS   r2   rm   Ú	delimiterÚnext_escape_boundÚatrn   Úwhats               r)   ÚunparserŠ   ¦   sŒ  € ñ ØˆÙÜ�d‹|Ðä�(œHÔ%Ø�;ˆä˜Ó€DØ€IÜ˜xÓ(ò 4‰	ˆˆ6Ø�M‰MˆØ�M‰M˜FŸM™MÑ)ˆÜ'×+Ñ+¬D°«L¸$Ó?ˆ	ÚÜ˜	Ô"Ù% f¨d°1°Q¨iÓ8�	Ø×Ñ˜a  I¨a¡LÐ1Ô2Ø×Ñ˜a !  Y¨q¡\Ð2Õ3ð4ð ‡N�NÑ-€NÔ.Ü˜D›	ÐÙ
à—m‘m“o‰ˆˆAˆtÜ˜t RÔ(Ø�!‰GˆBô ˜t RÕ(ð �C�Rˆy˜4Ñ¤&¨¨bÐ1BÐ)CÓ"DÑDÀtÐL]ÐL^ÐG_Ñ_ˆØÐò ô �$Ð)Ð)Ð*Ó+¨dÐ3DÐ3EÐ.FÑF€Dä˜ÓÐr*   N)%Ú__doc__Úcollectionsr   r_   r   Úhtml.parserr   Útypingr   r   r   Úhelpersr
   r   r   r   Útlr   Útl.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   Ústrrj   r�   rŠ   r@   r*   r)   ú<module>r“      sã   ðñõ Ý Ý "ß (Ñ (ç PÓ PÝ ÷÷ ÷ õ ôc)˜:ô c)ðL0�ð 0˜˜c 4Ð(9Ñ#:Ð:Ñ;ó 0ð( Ð0ØÐ*ØÐ,Ø˜OØÐ,Øñ ð ñ ð ÑOØÑFØÑVØÑcØÑlð+Ð ð2*�#ð * Ð*;Ñ!<ð *Àô *r*   