Ë
    CfÙcð4  ã                   óè   — d dl 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  e	d«      Zd„ Z G d„ de«      ZeZd	„ Z G d
„ dee   «      Z G d„ dee   «      Z G d„ de«      Zy# e$ r dZ
Y ŒDw xY w)é    N)ÚReferenceType)
ÚIterableÚOptionalÚGenericÚDictÚListÚIteratorÚTypeVarÚTYPE_CHECKINGÚAnyÚCallableÚTFc                 ó   — | � | «       S d S ©N© )Úrefs    ú./usr/lib/python3/dist-packages/debian/_util.pyÚresolve_refr      s   € à�O‰3‹5Ð-¨Ð-ó    c                   óJ   ‡ — e Zd ZdZdgZerˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zˆ xZS )	Ú_CaseInsensitiveStringzCase insensitive string.
    Ú	str_lowerc                 ó:   •— t         t        | �  |«       d| _        y )NÚ )Úsuperr   Ú__init__r   )ÚselfÚsÚ	__class__s     €r   r   z_CaseInsensitiveString.__init__   s   ø€ äÔ(¨$Ñ8¸Ô;ØˆD�Nr   c                 ó\   — t         j                  | |«      }|j                  «       |_        |S r   )ÚstrÚ__new__Úlowerr   )ÚclsÚstr_r   s      r   r"   z_CaseInsensitiveString.__new__#   s$   € Ü�K‰K˜˜TÓ"ˆà—j‘j“lˆŒØˆr   c                 ó,   — t        | j                  «      S r   )Úhashr   ©r   s    r   Ú__hash__z_CaseInsensitiveString.__hash__)   s   € ä�D—N‘NÓ#Ð#r   c                 ó\   — 	 | j                   |j                  «       k(  S # t        $ r Y yw xY w)NF)r   r#   ÚAttributeError©r   Úothers     r   Ú__eq__z_CaseInsensitiveString.__eq__-   s.   € ð	Ø—>‘> U§[¡[£]Ñ2Ð2øÜò 	Ùð	ús   ‚ Ÿ	+ª+c                 ó   — | |k(   S r   r   r,   s     r   Ú__ne__z_CaseInsensitiveString.__ne__4   s   € à˜5‘=Ð Ð r   c                 ó   — | j                   S r   )r   r(   s    r   r#   z_CaseInsensitiveString.lower8   s   € à�~‰~Ðr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r"   r)   r.   r0   r#   Ú__classcell__)r   s   @r   r   r      s0   ø„ ñà�€Iáô	 ò
ò$òò!ör   r   c                 ó"   — | j                  «       S r   )r#   )Úxs    r   Údefault_field_sort_keyr:   @   s   € à�7‰7‹9Ðr   c                   ó”   — e Zd ZdZd„ Zed„ «       Zej                  d„ «       Zd„ Zddœd„Z	ddœd	„Z
ed
„ «       Zed„ «       Zd„ Zd„ Zy)ÚLinkedListNode)Ú_previous_nodeÚvalueÚ	next_nodeÚ__weakref__c                 ó.   — d | _         d | _        || _        y r   )r=   r?   r>   ©r   r>   s     r   r   zLinkedListNode.__init__I   s   € à"ˆÔØˆŒØˆ�
r   c                 ó,   — t        | j                  «      S r   )r   r=   r(   s    r   Úprevious_nodezLinkedListNode.previous_nodeO   s   € ô ˜4×.Ñ.Ó/Ð/r   c                 óL   — |�t        j                  |«      | _        y d | _        y r   )Úweakrefr   r=   ©r   Únodes     r   rD   zLinkedListNode.previous_nodeT   s!   € ð 48Ð3CœgŸk™k¨$Ó/ˆÕÈˆÕr   c                 óŠ   — t         j                  | j                  | j                  «       d | _        d | _        | j                  S r   )r<   Ú
link_nodesrD   r?   r>   r(   s    r   ÚremovezLinkedListNode.removeY   s5   € ä×!Ñ! $×"4Ñ"4°d·n±nÔEØ!ˆÔØˆŒØ�z‰zÐr   F)Úskip_currentc             #   óX   K  — |r| j                   n| }|r|–— |j                   }|rŒy y ­wr   )r?   ©r   rL   rH   s      r   Ú	iter_nextzLinkedListNode.iter_next`   s+   è ø€ ñ ".ˆt�~Š~°4ˆÙØŠJØ—>‘>ˆDô ùó   ‚%*¨*c             #   óX   K  — |r| j                   n| }|r|–— |j                   }|rŒy y ­wr   )rD   rN   s      r   Úiter_previouszLinkedListNode.iter_previousi   s/   è ø€ ñ &2ˆt×!Ò!°tˆÙØŠJØ×%Ñ%ˆDô ùrP   c                 ó*   — |r| |_         | r|| _        y y r   ©rD   r?   rT   s     r   rJ   zLinkedListNode.link_nodesr   s   € ñ Ø&3ˆIÔ#ÙØ&/ˆMÕ#ð r   c                 ó\   — t         j                  | |«       t         j                  ||«       y r   )r<   rJ   )Ú
first_nodeÚnew_nodeÚ	last_nodes      r   Ú_insert_linkzLinkedListNode._insert_linkz   s$   € ô 	×!Ñ! *¨hÔ7Ü×!Ñ! (¨IÕ6r   c                 ón   — | |ur|| j                   usJ ‚t        j                  | j                   || «       y r   )rD   r<   rY   ©r   rW   s     r   Úinsert_beforezLinkedListNode.insert_beforeƒ   s5   € à˜8Ñ#¨¸×8JÑ8JÑ(JÐJÐJÜ×#Ñ# D×$6Ñ$6¸À$ÕGr   c                 ón   — | |ur|| j                   usJ ‚t        j                  | || j                   «       y r   )r?   r<   rY   r[   s     r   Úinsert_afterzLinkedListNode.insert_afterˆ   s1   € à˜8Ñ#¨¸¿¹Ñ(FÐFÐFÜ×#Ñ# D¨(°D·N±NÕCr   N)r2   r3   r4   r6   r   ÚpropertyrD   ÚsetterrK   rO   rR   ÚstaticmethodrJ   rY   r\   r^   r   r   r   r<   r<   E   s‰   „ àG€Iòð ñ0ó ð0ð ×ÑñNó ðNòð  %ô"ð $)ô&ð ñ0ó ð0ð ñ7ó ð7òHó
Dr   r<   c                   ó†   — e Zd ZdZdZdd„Zd„ Zd„ Zed„ «       Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
LinkedListav  Specialized linked list implementation to support the deb822 parser needs

    We deliberately trade "encapsulation" for features needed by this library
    to facilitate their implementation.  Notably, we allow nodes to leak and assume
    well-behaved calls to remove_node - because that makes it easier to implement
    components like Deb822InvalidParagraphElement.
    ©Ú	head_nodeÚ	tail_nodeÚ_sizeNc                 óV   — d | _         d | _        d| _        |�| j                  |«       y y ©Nr   )re   rf   rg   Úextend)r   Úvaluess     r   r   zLinkedList.__init__™   s.   € àˆŒØˆŒØˆŒ
ØÐØ�K‰K˜Õð r   c                 ó   — | j                   d uS r   )re   r(   s    r   Ú__bool__zLinkedList.__bool__¡   s   € à�~‰~ TÐ)Ð)r   c                 ó   — | j                   S r   )rg   r(   s    r   Ú__len__zLinkedList.__len__¥   s   € à�z‰zÐr   c                 óJ   — | j                   �| j                   j                  S d S r   )rf   r>   r(   s    r   ÚtailzLinkedList.tail©   s"   € ð (,§~¡~Ð'Aˆt�~‰~×#Ñ#ÐKÀtÐKr   c                 óh   — | j                   €t        d«      ‚| j                  | j                   «       y )Nzpop from empty list)rf   Ú
IndexErrorÚremove_noder(   s    r   ÚpopzLinkedList.pop®   s*   € à�>‰>Ð!ÜÐ2Ó3Ð3Ø×Ñ˜Ÿ™Õ(r   c              #   ó^   K  — | j                   }|€y |j                  «       E d {  –—†  y 7 Œ­wr   )re   rO   )r   re   s     r   Ú
iter_nodeszLinkedList.iter_nodes´   s*   è ø€ à—N‘Nˆ	ØÐØØ×&Ñ&Ó(×(Ò(ús   ‚#-¥+¦-c              #   óN   K  — d„ | j                  «       D «       E d {  –—†  y 7 Œ­w)Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   ©r>   )Ú.0rH   s     r   ú	<genexpr>z&LinkedList.__iter__.<locals>.<genexpr>½   s   è ø€ Ò= 4�D—J•JÑ=ùó   ‚)rw   r(   s    r   Ú__iter__zLinkedList.__iter__»   s   è ø€ á=¨4¯?©?Ó+<Ô=×=Ò=ús   ‚%�#ž%c              #   ól   K  — | j                   }|€y d„ |j                  «       D «       E d {  –—†  y 7 Œ­w)Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   rz   )r{   Úns     r   r|   z*LinkedList.__reversed__.<locals>.<genexpr>Ä   s   è ø€ Ò? �A—G•GÑ?ùr}   )rf   rR   )r   rf   s     r   Ú__reversed__zLinkedList.__reversed__¿   s/   è ø€ à—N‘Nˆ	ØÐØÙ? Y×%<Ñ%<Ó%>Ô?×?Ò?ús   ‚*4¬2­4c                 ó0  — || j                   u r%|j                  | _         | j                   €5d | _        n-|| j                  u r|j                  | _        | j                  €J ‚| j                  dkD  sJ ‚| xj                  dz  c_        |j                  «        y )Nr   é   )re   r?   rf   rD   rg   rK   rG   s     r   rt   zLinkedList.remove_nodeÆ   s{   € à�4—>‘>Ñ!Ø!Ÿ^™^ˆDŒNØ�~‰~Ð%Ø!%�•Ø�T—^‘^Ñ#Ø!×/Ñ/ˆDŒNð —>‘>Ð-Ð-Ð-Ø�z‰z˜AŠ~Ðˆ~Ø�
Š
�a‰�
Ø�‰�r   c                 ót   — | j                   €| j                  |«      S | j                  || j                   «      S r   )re   Úappendr\   rB   s     r   Úinsert_at_headzLinkedList.insert_at_headÕ   s2   € à�>‰>Ð!Ø—;‘;˜uÓ%Ð%Ø×!Ñ! %¨¯©Ó8Ð8r   c                 ó
  — t        |«      }| j                  €|| _        || _        nG| j                  €J ‚| j                  |usJ ‚| j                  |_        || j                  _        || _        | xj
                  dz  c_        |S )Nr„   )r<   re   rf   rD   r?   rg   )r   r>   rH   s      r   r†   zLinkedList.appendÛ   s{   € ä˜eÓ$ˆØ�>‰>Ð!Ø!ˆDŒNØ!ˆD�Nð —>‘>Ð-Ð-Ð-ð —>‘>¨Ñ-Ð-Ð-Ø!%§¡ˆDÔØ'+ˆD�N‰NÔ$Ø!ˆDŒNØ�
Š
�a‰�
Øˆr   c                 ó8   — | j                  t        |«      |«      S r   )Úinsert_node_beforer<   ©r   r>   Úexisting_nodes      r   r\   zLinkedList.insert_beforeî   s   € à×&Ñ&¤~°eÓ'<¸mÓLÐLr   c                 ó8   — | j                  t        |«      |«      S r   )Úinsert_node_afterr<   r‹   s      r   r^   zLinkedList.insert_afterò   s   € à×%Ñ%¤n°UÓ&;¸]ÓKÐKr   c                 óð   — | j                   €t        d«      ‚|j                  €|j                  �t        d«      ‚|j	                  |«       || j                   u r|| _         | xj
                  dz  c_        |S ©Nz,List is empty; node argument cannot be validz&New node must not already be inserted!r„   )re   Ú
ValueErrorr?   rD   r\   rg   ©r   rW   rŒ   s      r   rŠ   zLinkedList.insert_node_beforeö   sn   € à�>‰>Ð!ÜÐKÓLÐLØ×ÑÐ)¨X×-CÑ-CÐ-OÜÐEÓFÐFØ×#Ñ# HÔ-Ø˜DŸN™NÑ*Ø%ˆDŒNØ�
Š
�a‰�
Øˆr   c                 óð   — | j                   €t        d«      ‚|j                  €|j                  �t        d«      ‚|j	                  |«       || j                   u r|| _         | xj
                  dz  c_        |S r�   )rf   r‘   r?   rD   r^   rg   r’   s      r   rŽ   zLinkedList.insert_node_after  sn   € à�>‰>Ð!ÜÐKÓLÐLØ×ÑÐ)¨X×-CÑ-CÐ-OÜÐEÓFÐFØ×"Ñ" 8Ô,Ø˜DŸN™NÑ*Ø%ˆDŒNØ�
Š
�a‰�
Øˆr   c                 ó4   — |D ]  }| j                  |«       Œ y r   )r†   )r   rk   Úvs      r   rj   zLinkedList.extend  s   € àò 	ˆAØ�K‰K˜�Nñ	r   c                 ó.   — d | _         d | _        d| _        y ri   rd   r(   s    r   ÚclearzLinkedList.clear  s   € àˆŒØˆŒØˆ�
r   r   )r2   r3   r4   r5   r6   r   rm   ro   r_   rq   ru   rw   r~   r‚   rt   r‡   r†   r\   r^   rŠ   rŽ   rj   r—   r   r   r   rc   rc   Ž   sw   „ ñð 4€Ió ò*òð ñLó ðLò)ò)ò>ò@òò9òò&MòLò
ò
òó
r   rc   c                   ód   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
eZd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
OrderedSetzÅA set-like object that preserves order when iterating over it

    We use this to keep track of keys in Deb822Dict, because it's much faster
    to look up if a key is in a set than in a list.
    Nc                 óh   — i | _         t        «       | _        |€g }|D ]  }| j                  |«       Œ y r   )Ú_OrderedSet__tablerc   Ú_OrderedSet__orderÚadd©r   ÚiterableÚitems      r   r   zOrderedSet.__init__!  s9   € ð ˆŒÜ!“|ˆŒØÐØˆHØò 	ˆDØ�H‰H�T�Nñ	r   c                 ó¶   — || vr,| j                   j                  |«      }	 || j                  |<   y y # t        $ r | j                   j	                  |«       ‚ w xY wr   )rœ   r†   r›   Ú	Exceptionrt   ©r   r    rH   s      r   r�   zOrderedSet.add/  s^   € à�tÑð
 —<‘<×&Ñ& tÓ,ˆDðØ%)�—‘˜TÒ"ð øô ò Ø—‘×(Ñ(¨Ô.Øðús	   ¡2 ²&Ac                 ór   — | j                   |   }| j                   |= | j                  j                  |«       y r   )r›   rœ   rt   r£   s      r   rK   zOrderedSet.remove=  s0   € ð �|‰|˜DÑ!ˆØ�L‰L˜ÐØ�‰× Ñ  Õ&r   c                 ó,   — t        | j                  «      S r   )Úiterrœ   r(   s    r   r~   zOrderedSet.__iter__E  s   € ô �D—L‘LÓ!Ð!r   c                 ó>   — t        t        | j                  «      «      S r   )r¦   Úreversedrœ   r(   s    r   r‚   zOrderedSet.__reversed__J  s   € ô ”H˜TŸ\™\Ó*Ó+Ð+r   c                 ó,   — t        | j                  «      S r   )Úlenrœ   r(   s    r   ro   zOrderedSet.__len__O  s   € ä�4—<‘<Ó Ð r   c                 ó   — || j                   v S r   )r›   ©r   r    s     r   Ú__contains__zOrderedSet.__contains__S  s   € ð �t—|‘|Ð#Ð#r   c                 ó4   — |D ]  }| j                  |«       Œ y r   )r�   rž   s      r   rj   zOrderedSet.extend\  s   € àò 	ˆDØ�H‰H�T�Nñ	r   c                 óP   — | j                  || j                  j                  «       y)z2Re-order the given item so it is "last" in the setN)Ú_reorderrœ   r†   r¬   s     r   Ú
order_lastzOrderedSet.order_lastb  s   € ð 	�‰�d˜DŸL™L×/Ñ/Õ0r   c                 óP   — | j                  || j                  j                  «       y)z3Re-order the given item so it is "first" in the setN)r°   rœ   r‡   r¬   s     r   Úorder_firstzOrderedSet.order_firstg  s   € ð 	�‰�d˜DŸL™L×7Ñ7Õ8r   c                 ór   ‡ ‡— ||k(  rt        d«      ‚‰ j                  |   Š‰ j                  |ˆˆ fd„«       y)zTRe-order the given item so appears directly after the reference item in the sequenceú*Cannot re-order an item relative to itselfc                 ó<   •— ‰j                   j                  | ‰«      S r   )rœ   r\   ©r9   Úreference_noder   s    €€r   ú<lambda>z)OrderedSet.order_before.<locals>.<lambda>r  s   ø€  d§l¡l×&@Ñ&@ÀÀNÓ&S€ r   N©r‘   r›   r°   ©r   r    Úreference_itemr¸   s   `  @r   Úorder_beforezOrderedSet.order_beforel  s6   ù€ ð �>Ò!ÜÐIÓJÐJØŸ™ nÑ5ˆØ�‰�dÔSÕTr   c                 ór   ‡ ‡— ||k(  rt        d«      ‚‰ j                  |   Š‰ j                  |ˆˆ fd„«       y)zURe-order the given item so appears directly before the reference item in the sequencerµ   c                 ó<   •— ‰j                   j                  | ‰«      S r   )rœ   r^   r·   s    €€r   r¹   z(OrderedSet.order_after.<locals>.<lambda>z  s   ø€  d§l¡l×&?Ñ&?ÀÀ>Ó&R€ r   Nrº   r»   s   `  @r   Úorder_afterzOrderedSet.order_aftert  s6   ù€ ð �>Ò!ÜÐIÓJÐJØŸ™ nÑ5ˆØ�‰�dÔRÕSr   c                 óš   — | j                   |   }| j                  j                  |«        ||j                  «      }|| j                   |<   y r   )r›   rœ   rt   r>   )r   r    Ú
reinserterrH   rW   s        r   r°   zOrderedSet._reorder|  s@   € ð
 �|‰|˜DÑ!ˆØ�‰× Ñ  Ô&Ù˜dŸj™jÓ)ˆØ%ˆ�‰�TÒr   r   )r2   r3   r4   r5   r   r�   rK   r~   r‚   ro   r­   r†   rj   r±   r³   r½   rÀ   r°   r   r   r   r™   r™     sQ   „ ñóòò'ò"ò
,ò
!ò$ð €Fòò1ò
9ò
UòTó&r   r™   )rF   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   ÚImportErrorr   r!   r   Ú_strIr:   r<   rc   Úobjectr™   r   r   r   ú<module>rÇ      s•   ðÛ Ý !ð÷÷ ÷ ñ 	�‹€Aò.ô
#˜Sô #ðL 	€òô
FD�W˜Q‘Zô FDôRI�˜‘ô IôXj&�õ j&øðY ò Ø‚Mðús   Œ A' Á'A1Á0A1