§
    )uycð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n# e$ r dZ
Y nw xY w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dS )é    N)ÚReferenceType)
ÚIterableÚOptionalÚGenericÚDictÚListÚIteratorÚTypeVarÚTYPE_CHECKINGÚAnyÚCallableÚTFc                 ó   — | �
 | ¦   «         nd S ©N© )Úrefs    ú./usr/lib/python3/dist-packages/debian/_util.pyÚresolve_refr      s   € à�Oˆ3ˆ3‰5Œ5ˆ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                 óf   •— t          t          | ¦  «                             |¦  «         d| _        d S )NÚ )Úsuperr   Ú__init__r   )ÚselfÚsÚ	__class__s     €r   r   z_CaseInsensitiveString.__init__   s-   ø€ åÕ(¨$Ñ/Ô/×8Ò8¸Ñ;Ô;Ð;ØˆDŒNˆNˆNr   c                 ón   — t                                | |¦  «        }|                     ¦   «         |_        |S r   )ÚstrÚ__new__Úlowerr   )ÚclsÚstr_r   s      r   r"   z_CaseInsensitiveString.__new__#   s)   € Ý�KŠK˜˜TÑ"Ô"ˆà—j’j‘l”lˆŒØˆr   c                 ó*   — t          | j        ¦  «        S r   )Úhashr   ©r   s    r   Ú__hash__z_CaseInsensitiveString.__hash__)   s   € å�D”NÑ#Ô#Ð#r   c                 ó`   — 	 | j         |                     ¦   «         k    S # t          $ r Y dS w xY w)NF)r   r#   ÚAttributeError©r   Úothers     r   Ú__eq__z_CaseInsensitiveString.__eq__-   s>   € ð	Ø”> U§[¢[¡]¤]Ò2Ð2øÝð 	ð 	ð 	Ø�5�5ð	øøø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      sœ   ø€ € € € € ðð à�€Iàð  ð	 ð 	 ð 	 ð 	 ð 	 ð
ð ð ð$ð $ð $ðð ð ð!ð !ð !ðð ð ð ð ð ð r   r   c                 ó*   — |                       ¦   «         S r   )r#   )Úxs    r   Údefault_field_sort_keyr:   @   s   € à�7Š7‰9Œ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dS )ÚLinkedListNode)Ú_previous_nodeÚvalueÚ	next_nodeÚ__weakref__c                 ó0   — d | _         d | _        || _        d S 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                 ó@   — |�t          j        |¦  «        nd | _        d S r   )Úweakrefr   r=   ©r   Únodes     r   rD   zLinkedListNode.previous_nodeT   s&   € ð 48Ð3C�gœk¨$Ñ/Ô/Ð/ÈˆÔÐÐr   c                 óv   — t                                | j        | j        ¦  «         d | _        d | _        | j        S r   )r<   Ú
link_nodesrD   r?   r>   r(   s    r   ÚremovezLinkedListNode.removeY   s4   € å×!Ò! $Ô"4°d´nÑEÔEÐEØ!ˆÔØˆŒØŒzÐr   F)Úskip_currentc             #   óB   K  — |r| j         n| }|r|V — |j         }|°d S d S r   )r?   ©r   rL   rH   s      r   Ú	iter_nextzLinkedListNode.iter_next`   sN   è è € ð ".Ð7ˆtŒ~ˆ~°4ˆØð 	"ØˆJˆJˆJØ”>ˆDð ð 	"ð 	"ð 	"ð 	"ð 	"r   c             #   óB   K  — |r| j         n| }|r|V — |j         }|°d S d S r   )rD   rN   s      r   Úiter_previouszLinkedListNode.iter_previousi   sQ   è è € ð &2Ð;ˆtÔ!Ð!°tˆØð 	&ØˆJˆJˆJØÔ%ˆDð ð 	&ð 	&ð 	&ð 	&ð 	&r   c                 ó.   — |r| |_         | r	|| _        d S d S r   ©rD   r?   rS   s     r   rJ   zLinkedListNode.link_nodesr   s4   € ð ð 	4Ø&3ˆIÔ#Øð 	0Ø&/ˆMÔ#Ð#Ð#ð	0ð 	0r   c                 ór   — t                                | |¦  «         t                                ||¦  «         d S r   )r<   rJ   )Ú
first_nodeÚnew_nodeÚ	last_nodes      r   Ú_insert_linkzLinkedListNode._insert_linkz   s6   € õ 	×!Ò! *¨hÑ7Ô7Ð7Ý×!Ò! (¨IÑ6Ô6Ð6Ð6Ð6r   c                 óf   — | |ur	|| j         usJ ‚t                               | j         || ¦  «         d S r   )rD   r<   rX   ©r   rV   s     r   Úinsert_beforezLinkedListNode.insert_beforeƒ   sA   € à˜8Ð#Ð#¨¸Ô8JÐ(JÐ(JÐ(JÐ(JÝ×#Ò# DÔ$6¸À$ÑGÔGÐGÐGÐGr   c                 óf   — | |ur	|| j         usJ ‚t                               | || j         ¦  «         d S r   )r?   r<   rX   rZ   s     r   Úinsert_afterzLinkedListNode.insert_afterˆ   s?   € à˜8Ð#Ð#¨¸¼Ð(FÐ(FÐ(FÐ(FÝ×#Ò# D¨(°D´NÑCÔCÐCÐCÐCr   N)r2   r3   r4   r6   r   ÚpropertyrD   ÚsetterrK   rO   rQ   ÚstaticmethodrJ   rX   r[   r]   r   r   r   r<   r<   E   s  € € € € € àG€Iðð ð ð ð0ð 0ñ „Xð0ð ÔðNð Nñ ÔðNðð ð ð  %ð"ð "ð "ð "ð "ð $)ð&ð &ð &ð &ð &ð ð0ð 0ñ „\ð0ð ð7ð 7ñ „\ð7ðHð Hð Hð
Dð Dð Dð Dð 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dS )Ú
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                 ób   — d | _         d | _        d| _        |�|                      |¦  «         d S d S ©Nr   )rd   re   rf   Úextend)r   Úvaluess     r   r   zLinkedList.__init__™   s=   € àˆŒØˆŒØˆŒ
ØÐØ�KŠK˜ÑÔÐÐÐð Ðr   c                 ó   — | j         d uS r   )rd   r(   s    r   Ú__bool__zLinkedList.__bool__¡   s   € àŒ~ TÐ)Ð)r   c                 ó   — | j         S r   )rf   r(   s    r   Ú__len__zLinkedList.__len__¥   s
   € àŒzÐr   c                 ó,   — | j         �| j         j        nd S r   )re   r>   r(   s    r   ÚtailzLinkedList.tail©   s   € ð (,¤~Ð'AˆtŒ~Ô#Ð#ÀtÐKr   c                 óf   — | j         €t          d¦  «        ‚|                      | j         ¦  «         d S )Nzpop from empty list)re   Ú
IndexErrorÚremove_noder(   s    r   ÚpopzLinkedList.pop®   s5   € àŒ>Ð!ÝÐ2Ñ3Ô3Ð3Ø×Ò˜œÑ(Ô(Ð(Ð(Ð(r   c              #   óT   K  — | j         }|€d S |                     ¦   «         E d {V —† d S r   )rd   rO   )r   rd   s     r   Ú
iter_nodeszLinkedList.iter_nodes´   sB   è è € à”Nˆ	ØÐØˆFØ×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c              #   óR   K  — d„ |                       ¦   «         D ¦   «         E d {V —† d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r   ©r>   )Ú.0rH   s     r   ú	<genexpr>z&LinkedList.__iter__.<locals>.<genexpr>½   s$   è è € Ð=Ð= 4�D”JÐ=Ð=Ð=Ð=Ð=Ð=r   )rv   r(   s    r   Ú__iter__zLinkedList.__iter__»   s<   è è € à=Ð=¨4¯?ª?Ñ+<Ô+<Ð=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=r   c              #   óh   K  — | j         }|€d S d„ |                     ¦   «         D ¦   «         E d {V —† d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r   ry   )rz   Úns     r   r{   z*LinkedList.__reversed__.<locals>.<genexpr>Ä   s$   è è € Ð?Ð? �A”GÐ?Ð?Ð?Ð?Ð?Ð?r   )re   rQ   )r   re   s     r   Ú__reversed__zLinkedList.__reversed__¿   sP   è è € à”Nˆ	ØÐØˆFØ?Ð? Y×%<Ò%<Ñ%>Ô%>Ð?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r   c                 óì   — || j         u r|j        | _         | j         €d | _        n|| j        u r|j        | _        | j        €J ‚| j        dk    sJ ‚| xj        dz  c_        |                     ¦   «          d S )Nr   é   )rd   r?   re   rD   rf   rK   rG   s     r   rs   zLinkedList.remove_nodeÆ   s~   € à�4”>Ð!Ð!Ø!œ^ˆDŒNØŒ~Ð%Ø!%�”øØ�T”^Ð#Ð#Ø!Ô/ˆDŒNð ”>Ð-Ð-Ð-ØŒz˜AŠ~ˆ~ˆ~ˆ~Øˆ
Œ
�a‰ˆ
Œ
Ø�Š‰Œˆˆˆr   c                 óp   — | j         €|                      |¦  «        S |                      || j         ¦  «        S r   )rd   Úappendr[   rB   s     r   Úinsert_at_headzLinkedList.insert_at_headÕ   s4   € àŒ>Ð!Ø—;’;˜uÑ%Ô%Ð%Ø×!Ò! %¨¬Ñ8Ô8Ð8r   c                 óÖ   — t          |¦  «        }| j        €|| _        || _        n3| j        €J ‚| j        |usJ ‚| j        |_        || j        _        || _        | xj        dz  c_        |S )Nr‚   )r<   rd   re   rD   r?   rf   )r   r>   rH   s      r   r„   zLinkedList.appendÛ   s{   € å˜eÑ$Ô$ˆØŒ>Ð!Ø!ˆDŒNØ!ˆDŒNˆNð ”>Ð-Ð-Ð-ð ”>¨Ð-Ð-Ð-Ð-Ø!%¤ˆDÔØ'+ˆDŒNÔ$Ø!ˆDŒNØˆ
Œ
�a‰ˆ
Œ
Øˆr   c                 óH   — |                       t          |¦  «        |¦  «        S r   )Úinsert_node_beforer<   ©r   r>   Úexisting_nodes      r   r[   zLinkedList.insert_beforeî   s    € à×&Ò&¥~°eÑ'<Ô'<¸mÑLÔLÐLr   c                 óH   — |                       t          |¦  «        |¦  «        S r   )Úinsert_node_afterr<   r‰   s      r   r]   zLinkedList.insert_afterò   s    € à×%Ò%¥n°UÑ&;Ô&;¸]ÑKÔKÐKr   c                 óÖ   — | j         €t          d¦  «        ‚|j        €|j        �t          d¦  «        ‚|                     |¦  «         || 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‚   )rd   Ú
ValueErrorr?   rD   r[   rf   ©r   rV   rŠ   s      r   rˆ   zLinkedList.insert_node_beforeö   su   € àŒ>Ð!ÝÐKÑLÔLÐLØÔÐ)¨XÔ-CÐ-OÝÐEÑFÔFÐFØ×#Ò# HÑ-Ô-Ð-Ø˜DœNÐ*Ð*Ø%ˆDŒNØˆ
Œ
�a‰ˆ
Œ
Øˆr   c                 óÖ   — | j         €t          d¦  «        ‚|j        €|j        �t          d¦  «        ‚|                     |¦  «         || j         u r|| _         | xj        dz  c_        |S rŽ   )re   r�   r?   rD   r]   rf   r�   s      r   rŒ   zLinkedList.insert_node_after  su   € àŒ>Ð!ÝÐKÑLÔLÐLØÔÐ)¨XÔ-CÐ-OÝÐEÑFÔFÐFØ×"Ò" 8Ñ,Ô,Ð,Ø˜DœNÐ*Ð*Ø%ˆDŒNØˆ
Œ
�a‰ˆ
Œ
Øˆr   c                 ó:   — |D ]}|                       |¦  «         Œd S r   )r„   )r   rj   Úvs      r   ri   zLinkedList.extend  s,   € àð 	ð 	ˆAØ�KŠK˜‰NŒNˆNˆNð	ð 	r   c                 ó0   — d | _         d | _        d| _        d S rh   rc   r(   s    r   ÚclearzLinkedList.clear  s   € àˆŒØˆŒØˆŒ
ˆ
ˆ
r   r   )r2   r3   r4   r5   r6   r   rl   rn   r^   rp   rt   rv   r|   r€   rs   r…   r„   r[   r]   rˆ   rŒ   ri   r•   r   r   r   rb   rb   Ž   sA  € € € € € ðð ð 4€Ið ð  ð  ð  ð*ð *ð *ðð ð ð ðLð Lñ „XðLð)ð )ð )ð)ð )ð )ð>ð >ð >ð@ð @ð @ðð ð ð9ð 9ð 9ðð ð ð&Mð Mð MðLð Lð Lð
ð 
ð 
ð
ð 
ð 
ðð ð ð
ð ð ð ð r   rb   c                   óf   — 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dS )Ú
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                 óv   — i | _         t          ¦   «         | _        |€g }|D ]}|                      |¦  «         Œd S r   )Ú_OrderedSet__tablerb   Ú_OrderedSet__orderÚadd©r   ÚiterableÚitems      r   r   zOrderedSet.__init__!  sK   € ð ˆŒÝ!‘|”|ˆŒØÐØˆHØð 	ð 	ˆDØ�HŠH�T‰NŒNˆNˆNð	ð 	r   c                 ó®   — || vrP| j                              |¦  «        }	 || j        |<   d S # t          $ r | j                              |¦  «         ‚ w xY wd S r   )rš   r„   r™   Ú	Exceptionrs   ©r   rž   rH   s      r   r›   zOrderedSet.add/  sw   € à�tÐÐð
 ”<×&Ò& tÑ,Ô,ˆDðØ%)�”˜TÑ"Ð"Ð"øÝð ð ð Ø”×(Ò(¨Ñ.Ô.Ð.Øðøøøð Ðs	    
, ¬&Ac                 ód   — | j         |         }| j         |= | j                             |¦  «         d S r   )r™   rš   rs   r¡   s      r   rK   zOrderedSet.remove=  s6   € ð Œ|˜DÔ!ˆØŒL˜ÐØŒ× Ò  Ñ&Ô&Ð&Ð&Ð&r   c                 ó*   — t          | j        ¦  «        S r   )Úiterrš   r(   s    r   r|   zOrderedSet.__iter__E  s   € õ �D”LÑ!Ô!Ð!r   c                 óD   — 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   rn   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                 ó:   — |D ]}|                       |¦  «         Œd S r   )r›   rœ   s      r   ri   zOrderedSet.extend\  s,   € àð 	ð 	ˆDØ�HŠH�T‰NŒNˆNˆNð	ð 	r   c                 óF   — |                       || j        j        ¦  «         dS )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Ô/Ñ0Ô0Ð0Ð0Ð0r   c                 óF   — |                       || j        j        ¦  «         dS )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Ô7Ñ8Ô8Ð8Ð8Ð8r   c                 ó‚   ‡ ‡— ||k    rt          d¦  «        ‚‰ j        |         Š‰                      |ˆˆ fd„¦  «         dS )zTRe-order the given item so appears directly after the reference item in the sequenceú*Cannot re-order an item relative to itselfc                 ó:   •— ‰j                              | ‰¦  «        S r   )rš   r[   ©r9   Úreference_noder   s    €€r   ú<lambda>z)OrderedSet.order_before.<locals>.<lambda>r  s   ø€  d¤l×&@Ò&@ÀÀNÑ&SÔ&S€ r   N©r�   r™   r®   ©r   rž   Úreference_itemr¶   s   `  @r   Úorder_beforezOrderedSet.order_beforel  sS   øø€ ð �>Ò!Ð!ÝÐIÑJÔJÐJØœ nÔ5ˆØ�Š�dÐSÐSÐSÐSÐSÑTÔTÐTÐTÐTr   c                 ó‚   ‡ ‡— ||k    rt          d¦  «        ‚‰ j        |         Š‰                      |ˆˆ fd„¦  «         dS )zURe-order the given item so appears directly before the reference item in the sequencer³   c                 ó:   •— ‰j                              | ‰¦  «        S r   )rš   r]   rµ   s    €€r   r·   z(OrderedSet.order_after.<locals>.<lambda>z  s   ø€  d¤l×&?Ò&?ÀÀ>Ñ&RÔ&R€ r   Nr¸   r¹   s   `  @r   Úorder_afterzOrderedSet.order_aftert  sS   øø€ ð �>Ò!Ð!ÝÐIÑJÔJÐJØœ nÔ5ˆØ�Š�dÐRÐRÐRÐRÐRÑSÔSÐSÐSÐSr   c                 óˆ   — | j         |         }| j                             |¦  «          ||j        ¦  «        }|| j         |<   d S r   )r™   rš   rs   r>   )r   rž   Ú
reinserterrH   rV   s        r   r®   zOrderedSet._reorder|  sI   € ð
 Œ|˜DÔ!ˆØŒ× Ò  Ñ&Ô&Ð&Ø�:˜dœjÑ)Ô)ˆØ%ˆŒ�TÑÐÐr   r   )r2   r3   r4   r5   r   r›   rK   r|   r€   rn   r«   r„   ri   r¯   r±   r»   r¾   r®   r   r   r   r—   r—     só   € € € € € ðð ðð ð ð ðð ð ð'ð 'ð 'ð"ð "ð "ð
,ð ,ð ,ð
!ð !ð !ð$ð $ð $ð €Fðð ð ð1ð 1ð 1ð
9ð 9ð 9ð
Uð Uð UðTð Tð Tð&ð &ð &ð &ð &r   r—   )rF   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   ÚImportErrorr   r!   r   Ú_strIr:   r<   rb   Úobjectr—   r   r   r   ú<module>rÅ      sÖ  ðØ €€€Ø !Ð !Ð !Ð !Ð !Ð !ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 	ˆ�‰Œ€A€Aøàð ð ð Ø€M€M€Mðøøøð.ð .ð .ð
#ð #ð #ð #ð #˜Sñ #ô #ð #ðL 	€ðð ð ð
FDð FDð FDð FDð FD�W˜Q”Zñ FDô FDð FDðRIð Ið Ið Ið I�˜”ñ Iô Ið IðXj&ð j&ð j&ð j&ð j&�ñ j&ô j&ð j&ð j&ð j&s   Œ#0 °:¹: