Ë
    :É„jB#  ã                   óº   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ ddlmZ  ej                  e«      Z G d	„ d
e«      Z G d„ d«      Zy)é    N)Ú
HTMLParser)ÚOptional)Úraw)ÚMessageEntityType)ÚPeerIdInvalidé   )Úutilsc                   ó\   ‡ — e Zd Z ej                  d«      Zdˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚParserztg://user\?id=(\d+)c                 óZ   •— t         ‰| �  «        || _        d| _        g | _        i | _        y )NÚ )ÚsuperÚ__init__ÚclientÚtextÚentitiesÚtag_entities)Úselfr   Ú	__class__s     €úK/var/www/html/GAP/venv/lib/python3.12/site-packages/pyrogram/parser/html.pyr   zParser.__init__&   s+   ø€ Ü‰ÑÔàˆŒàˆŒ	ØˆŒØˆÕó    c                 óØ  — t        |«      }i }|dv rt        j                  j                  }�næ|dv rt        j                  j                  }�nÆ|dk(  rt        j                  j
                  }�n¥|dv rt        j                  j                  }�n…|dk(  r:t        j                  j                  }t        d|j                  «       v «      |d<   �nF|dk(  rt        j                  j                  }�n%|d	k(  r0t        j                  j                  }|j                  d
d«      |d
<   nð|dk(  rt        j                  j                  }nÐ|dk(  r‹|j                  dd«      }t        j                  j!                  |«      }|r8t        j                  j"                  }t%        |j'                  d«      «      |d<   n`t        j                  j(                  }||d<   n@|dk(  r:t        j                  j*                  }t%        |j                  d«      «      }||d<   ny || j,                  vrg | j,                  |<   | j,                  |   j/                   |dt1        | j2                  «      ddœ|¤Ž«       y )N)ÚbÚstrong)ÚiÚemÚu)ÚsÚdelÚstrikeÚ
blockquoteÚ
expandableÚ	collapsedÚcodeÚpreÚlanguager   ÚspoilerÚaÚhrefr   Úuser_idÚurlÚemojiÚidÚdocument_idr   ©ÚoffsetÚlength© )Údictr   ÚtypesÚMessageEntityBoldÚMessageEntityItalicÚMessageEntityUnderlineÚMessageEntityStrikeÚMessageEntityBlockquoteÚboolÚkeysÚMessageEntityCodeÚMessageEntityPreÚgetÚMessageEntitySpoilerr   Ú
MENTION_REÚmatchÚInputMessageEntityMentionNameÚintÚgroupÚMessageEntityTextUrlÚMessageEntityCustomEmojir   ÚappendÚlenr   )r   ÚtagÚattrsÚextraÚentityr+   ÚmentionÚcustom_emoji_ids           r   Úhandle_starttagzParser.handle_starttag/   sè  € Ü�U“ˆØˆà�/Ñ!Ü—Y‘Y×0Ñ0ŠFØ�KÑÜ—Y‘Y×2Ñ2ŠFØ�CŠZÜ—Y‘Y×5Ñ5ŠFØÐ*Ñ*Ü—Y‘Y×2Ñ2ŠFØ�LÒ Ü—Y‘Y×6Ñ6ˆFÜ!% l°e·j±j³lÐ&BÓ!CˆE�+ÓØ�FŠ]Ü—Y‘Y×0Ñ0ŠFØ�EŠ\Ü—Y‘Y×/Ñ/ˆFØ %§	¡	¨*°bÓ 9ˆE�*ÒØ�IÒÜ—Y‘Y×3Ñ3‰FØ�CŠZØ—)‘)˜F BÓ'ˆCä×'Ñ'×-Ñ-¨cÓ2ˆGáÜŸ™×@Ñ@�Ü#& w§}¡}°QÓ'7Ó#8��iÒ äŸ™×7Ñ7�Ø"��e’Ø�GŠ^Ü—Y‘Y×7Ñ7ˆFÜ! %§)¡)¨D£/Ó2ˆOØ#2ˆE�-Ò àà�d×'Ñ'Ñ'Ø%'ˆD×Ñ˜cÑ"à×Ñ˜#Ñ×%Ñ%¡fÐ&V´C¸¿	¹	³NÈ1Ñ&VÐPUÑ&VÕWr   c                 óà   — t        j                  |«      }| j                  j                  «       D ]'  }|D ]   }|xj                  t        |«      z  c_        Œ" Œ) | xj                  |z  c_        y ©N)ÚhtmlÚunescaper   Úvaluesr1   rH   r   )r   Údatar   rL   s       r   Úhandle_datazParser.handle_data\   s_   € Ü�}‰}˜TÓ"ˆà×)Ñ)×0Ñ0Ó2ò 	+ˆHØ"ò +�Ø—’¤ T£Ñ*–ñ+ð	+ð 	�	Š	�TÑŽ	r   c                 óR  — 	 | j                   j                  | j                  |   j                  «       «       | j                  |   s| j                  j                  |«       y y # t        t
        f$ r3 | j                  «       \  }}|dz  }t        j                  d|||«       Y y w xY w)Nr   z)Unmatched closing tag </%s> at line %s:%s)	r   rG   r   ÚpopÚKeyErrorÚ
IndexErrorÚgetposÚlogÚdebug)r   rI   Úliner0   s       r   Úhandle_endtagzParser.handle_endtage   s™   € ð		+Ø�M‰M× Ñ  ×!2Ñ!2°3Ñ!7×!;Ñ!;Ó!=Ô>ð ×$Ñ$ SÒ)Ø×!Ñ!×%Ñ% cÕ*ð *øô œ*Ð%ò 	VØŸ;™;›=‰LˆD�&Ø�a‰KˆFä�I‰IÐAÀ3ÈÈfÖUð		Vús   ‚6A$ Á$?B&Â%B&c                  ó   — y rQ   r2   )r   Úmessages     r   ÚerrorzParser.errorq   s   € Ør   )r   úpyrogram.Client)Ú__name__Ú
__module__Ú__qualname__ÚreÚcompiler@   r   rO   rV   r_   rb   Ú__classcell__)r   s   @r   r   r   #   s/   ø„ Ø�—‘Ð2Ó3€Jõò+XòZò
+ör   r   c                   óD   — e Zd Zded   fd„Zdefd„Zededefd„«       Z	y)	ÚHTMLr   rc   c                 ó   — || _         y rQ   )r   )r   r   s     r   r   zHTML.__init__v   s	   € Øˆ�r   r   c           	   ƒ   ó¤  K  — t        j                  dd|«      }t        j                  dd|«      }t        | j                  «      }|j	                  t        j                  |«      «       |j                  «        |j                  rjg }|j                  j                  «       D ]&  \  }}|j                  d|› dt        |«      › d�«       Œ( t        j                  ddj                  |«      «       g }|j                  D ]v  }t!        |t"        j$                  j&                  «      r?	 | j                  �2| j                  j)                  |j*                  «      ƒ d {  –—† |_        |j                  |«       Œx t/        t1        d	„ |«      «      }t        j2                  |j4                  «      t7        |d
„ ¬«      xs d dœS 7 Œd# t,        $ r Y ŒÎw xY w­w)Nz^\s*(<[\w<>=\s\"]*>)\s*z\1z\s*(</[\w</>]*>)\s*$ú<z> (xú)zUnclosed tags: %sz, c                 ó    — | j                   dkD  S )Nr   )r1   )Úxs    r   ú<lambda>zHTML.parse.<locals>.<lambda>—   s   € ¨¯©°A©€ r   c                 ó   — | j                   S rQ   )r0   ©Úes    r   rr   zHTML.parse.<locals>.<lambda>›   s
   € °q·x±x€ r   ©Úkey)ra   r   )rg   Úsubr   r   Úfeedr	   Úadd_surrogatesÚcloser   ÚitemsrG   rH   r\   ÚinfoÚjoinr   Ú
isinstancer   r4   rB   Úresolve_peerr*   r   ÚlistÚfilterÚremove_surrogatesr   Úsorted)r   r   ÚparserÚunclosed_tagsrI   r   rL   s          r   Úparsez
HTML.parsey   s†  è ø€ ä�v‰vÐ0°%¸Ó>ˆÜ�v‰vÐ-¨u°dÓ;ˆä˜Ÿ™Ó$ˆØ�‰”E×(Ñ(¨Ó.Ô/Ø�‰Œà×ÒØˆMà!'×!4Ñ!4×!:Ñ!:Ó!<ò D‘��XØ×$Ñ$ q¨¨¨T´#°h³-°ÀÐ%BÕCðDô �H‰HÐ(¨$¯)©)°MÓ*BÔCàˆà—o‘oò 	$ˆFÜ˜&¤#§)¡)×"IÑ"IÔJðØ—{‘{Ð.Ø/3¯{©{×/GÑ/GÈÏÉÓ/W×)W˜œð �O‰O˜FÕ#ð	$ô œÑ5°xÓ@ÓAˆô ×.Ñ.¨v¯{©{Ó;Ü˜xÑ-?Ô@ÒHÀDñ
ð 	
ð *XùÜ$ò Ùðüs=   ‚D#GÄ&4GÅF?Å	GÅ$AGÆ?GÇ	GÇ
GÇGÇGr   c                 ó˜  ‡‡‡‡— d„ Šdt         dt         fˆˆˆˆfd„Št        j                  | «      } g Š‰j                  d„ ¬«       d}|t	        ‰«      k  r| ‰|«      z  }|t	        ‰«      k  rŒ‰rD‰d   d	   }t        ‰«      D ].  \  }}| d | |z   t        j                  | || «      z   | |d  z   } |}Œ0 t        j                  | «      S )
Nc                 óÜ  — | j                   }| j                  }|| j                  z   }|t        j                  t        j
                  t        j                  t        j                  fv r+|j                  d   j                  «       }d|› d�}d|› d�}�nS|t        j                  k(  rC|j                  j                  «       }t        | dd«      xs d}|r	d|› d|› d�nd|› d�}d|› d�}ný|t        j                  k(  rd	}d|› d
�}d|› d�}nÛ|t        j                  t        j                  t        j                  fv r'|j                  j                  «       }d|› d�}d|› d�}nƒ|t        j                   k(  r| j"                  }d|› d�}d}n[|t        j$                  k(  r| j&                  }	d|	j(                  › d�}d}n)|t        j*                  k(  r| j,                  }
d|
› d�}d}ny||f||ffS )z_
            Parses a single entity and returns (start_tag, start), (end_tag, end)
            r   rn   ú>z</r&   r   z language="z">r!   z expandable>z	<a href="z</a>z<a href="tg://user?id=z<emoji id="z</emoji>N)Útyper0   r1   r   ÚBOLDÚITALICÚ	UNDERLINEÚSTRIKETHROUGHÚnameÚlowerÚPREÚgetattrÚEXPANDABLE_BLOCKQUOTEÚCODEÚ
BLOCKQUOTEÚSPOILERÚ	TEXT_LINKr+   ÚTEXT_MENTIONÚuserr-   ÚCUSTOM_EMOJIrN   )rL   Úentity_typeÚstartÚendr�   Ú	start_tagÚend_tagr&   r+   rš   rN   s              r   Ú	parse_onezHTML.unparse.<locals>.parse_one    s  € ð !Ÿ+™+ˆKØ—M‘MˆEØ˜&Ÿ-™-Ñ'ˆCàÜ!×&Ñ&Ü!×(Ñ(Ü!×+Ñ+Ü!×/Ñ/ð	ñ ð #×'Ñ'¨Ñ*×0Ñ0Ó2�Ø ˜v Q˜K�	Ø˜t˜f A˜,’ØÔ 1× 5Ñ 5Ò5Ø"×'Ñ'×-Ñ-Ó/�Ü" 6¨:°rÓ:Ò@¸b�ÙAI˜a ˜v [°°
¸"Ñ=ÐQRÐSWÐRXÐXYÈ{�	Ø˜t˜f A˜,‘ØÔ 1× GÑ GÒGØ#�Ø ˜v \Ð2�	Ø˜t˜f A˜,‘ØÜ!×&Ñ&Ü!×,Ñ,Ü!×)Ñ)ð!ñ ð
 #×'Ñ'×-Ñ-Ó/�Ø ˜v Q˜K�	Ø˜t˜f A˜,‘ØÔ 1× ;Ñ ;Ò;Ø—j‘j�Ø'¨ u¨BÐ/�	Ø ‘ØÔ 1× >Ñ >Ò>Ø—{‘{�Ø4°T·W±W°I¸RÐ@�	Ø ‘ØÔ 1× >Ñ >Ò>Ø"(×"8Ñ"8�Ø)¨/Ð):¸"Ð=�	Ø$‘àà˜uÐ%¨° ~Ð5Ð5r   Úentity_iÚreturnc                 ó.  •—  ‰	‰|    «      }|€y|\  \  }}\  }}‰j                  ||f«       | dz   }|t        ‰«      k  r>‰|   j                  |k  r,| ‰
|«      z  }|t        ‰«      k  r‰|   j                  |k  rŒ,‰j                  ||f«       || z
  S )aR  
            Takes the index of the entity to start parsing from, returns the number of parsed entities inside it.
            Uses entities_offsets as a stack, pushing (start_tag, start) first, then parsing nested entities,
            and finally pushing (end_tag, end) to the stack.
            No need to sort at the end.
            r   )rG   rH   r0   )r¢   ÚthisrŸ   r�   r    rž   Ú
internal_ir   Úentities_offsetsr¡   Ú	recursives          €€€€r   r¨   zHTML.unparse.<locals>.recursiveÓ   sµ   ø€ ñ ˜X hÑ/Ó0ˆDØˆ|ØØ15Ñ.ÑˆY˜¡ ¨#Ø×#Ñ# Y°Ð$6Ô7Ø! A™ˆJàœs 8›}Ò,°¸*Ñ1E×1LÑ1LÈsÒ1RØ™i¨
Ó3Ñ3�
ð œs 8›}Ò,°¸*Ñ1E×1LÑ1LÈsÓ1Rà×#Ñ# W¨c NÔ3Ø Ñ(Ð(r   c                 ó4   — | j                   | j                   fS rQ   r/   rt   s    r   rr   zHTML.unparse.<locals>.<lambda>ë   s   €  Q§X¡X°·±¨yÐ$9€ r   rv   r   éÿÿÿÿr   )	rC   r	   rz   ÚsortrH   ÚreversedrR   Úescaperƒ   )	r   r   r   Úlast_offsetrL   r0   r§   r¡   r¨   s	    `    @@@r   ÚunparsezHTML.unparsež   sò   û€ ò1	6ðf	)¤ð 	)¬÷ 	)ð 	)ô& ×#Ñ# DÓ)ˆàÐð 	�‰Ñ9ˆÔ:ð ˆØ”#�h“-ÒØ‘˜1“ÑˆAð ”#�h“-Óñ Ø*¨2Ñ.¨qÑ1ˆKä"*Ð+;Ó"<ò %‘�˜Ø˜G˜V�} vÑ-´·±¸DÀÈÐ<TÓ0UÑUÐX\Ð]hÐ]iÐXjÑj�Ø$‘ð%ô ×&Ñ& tÓ,Ð,r   N)
rd   re   rf   r   r   Ústrr‡   Ústaticmethodr�   r¯   r2   r   r   rk   rk   u   sG   „ ð˜xÐ(9Ñ:ó ð#
 ó #
ðJ ðZ-�cð Z- Tò Z-ó ñZ-r   rk   )rR   Úloggingrg   Úhtml.parserr   Útypingr   Úpyrogramr   Úpyrogram.enumsr   Úpyrogram.errorsr   r   r	   Ú	getLoggerrd   r\   r   rk   r2   r   r   ú<module>r¹      sR   ðó( Û Û 	Ý "Ý ã Ý Ý ,Ý )Ý à€g×Ñ˜Ó!€ôOˆZô O÷dD-ò D-r   