a �DOg�r�@s�dZddlmZmZddlZeee�Zed�Z dd�Z ee �Z [ gd�Z dZ eed ��Zeee���Zeei����Zeei����Zeei����Zeeg��Zeeeg���Zeeed���Zeeed d >���Zeee���Zeed ��Z eed ��Z!eee"���Z#ei���Z$ei���Z%ei���Z&eej'�Z(edd���Z)dd�Z*e*�Z*ee*�Z+e*�,�[*dd�Z-e-�Z-ee-�Z.[-dd�Z/Gdd�ded�Z0Gdd�ded�Z1Gdd�de1�Z2e2�3e+�Gdd�ded�Z4Gdd �d e4�Z5Gd!d"�d"e5�Z6e6�3e.�Gd#d$�d$ed�Z7Gd%d&�d&e7�Z8e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e�e8�3e �e8�3e!�e8�3e#�Gd'd(�d(e7�Z9Gd)d*�d*e8�Z:e:�3e)�Gd+d,�d,ed�Z;Gd-d.�d.ed�Zd3d4�Z?Gd5d6�d6ed�Z@Gd7d8�d8e=�ZAeA�3eB�Gd9d:�d:eA�ZCeC�3e�Gd;d<�d�d>e;�ZEGd?d@�d@eEeA�ZFeF�3e$�GdAdB�dBeEeA�ZGeG�3e&�GdCdD�dDeEe=�ZHeH�3e%�GdEdF�dFeD�ZIeI�3eJ�GdGdH�dHe9e=�ZKeK�3eL�eK�3eM�eK�3e�eK�3eN�GdIdJ�dJeK�ZOeO�3eP�eO�3e�GdKdL�dLeK�ZQeQ�3e�eQ�3e�dS)MzjAbstract Base Classes (ABCs) for collections, according to PEP 3119. Unit tests are in test_collections. �)�ABCMeta�abstractmethodN.cCsdS�N�rrr�(/usr/lib64/python3.9/_collections_abc.py�_f�r)� Awaitable� Coroutine� AsyncIterable� AsyncIterator�AsyncGenerator�Hashable�Iterable�Iterator� Generator� Reversible�Sized� Container�Callable� Collection�Set� MutableSet�Mapping�MutableMapping� MappingView�KeysView� ItemsView� ValuesView�Sequence�MutableSequence� ByteStringzcollections.abcr�i��rccsdVSrrrrrr�>rr$c�sdSrrrrrr�_coro@rr%cCs dVdSrrrrrr�_agFrr&cGsN|j}|D]>}|D],}||jvr|j|dur:tSq qtSq dS)NT)�__mro__�__dict__�NotImplemented)�C�methods�mro�method�Brrr�_check_methodsNs   r/c@s(eZdZdZedd��Zedd��ZdS)rrcCsdS�Nrr��selfrrr�__hash__^szHashable.__hash__cCs|turt|d�StS)Nr3)rr/r)��clsr*rrr�__subclasshook__bs zHashable.__subclasshook__N)�__name__� __module__� __qualname__� __slots__rr3� classmethodr6rrrrrZs  r)� metaclassc@s0eZdZdZedd��Zedd��Zee�Z dS)r rccs dVdSrrr1rrr� __await__mszAwaitable.__await__cCs|turt|d�StS)Nr=)r r/r)r4rrrr6qs zAwaitable.__subclasshook__N) r7r8r9r:rr=r;r6� GenericAlias�__class_getitem__rrrrr is   r c@s>eZdZdZedd��Zed dd��Zdd�Zed d ��Z dS) r rcCst�dS)zcSend a value into the coroutine. Return next yielded value or raise StopIteration. N�� StopIteration�r2�valuerrr�send~szCoroutine.sendNcCs4|dur|dur|�|�}|dur,|�|�}|�dS)zgRaise an exception in the coroutine. Return next yielded value or raise StopIteration. N��with_traceback�r2�typ�val�tbrrr�throw�s zCoroutine.throwc Cs2z|�t�Wnttfy$Yn 0td��dS)�.Raise GeneratorExit inside coroutine. zcoroutine ignored GeneratorExitN�rK� GeneratorExitrA� RuntimeErrorr1rrr�close�s zCoroutine.closecCs|turt|dddd�StS)Nr=rDrKrP)r r/r)r4rrrr6�szCoroutine.__subclasshook__)NN) r7r8r9r:rrDrKrPr;r6rrrrr zs   r c@s0eZdZdZedd��Zedd��Zee�Z dS)r rcCst�Sr)r r1rrr� __aiter__�szAsyncIterable.__aiter__cCs|turt|d�StS)NrQ)r r/r)r4rrrr6�s zAsyncIterable.__subclasshook__N) r7r8r9r:rrQr;r6r>r?rrrrr �s   r c@s0eZdZdZedd��Zdd�Zedd��ZdS) r rc�st�dS)z@Return the next item or raise StopAsyncIteration when exhausted.N��StopAsyncIterationr1rrr� __anext__�szAsyncIterator.__anext__cCs|Srrr1rrrrQ�szAsyncIterator.__aiter__cCs|turt|dd�StS)NrTrQ)r r/r)r4rrrr6�s zAsyncIterator.__subclasshook__N) r7r8r9r:rrTrQr;r6rrrrr �s  r c@sFeZdZdZdd�Zedd��Zed dd��Zd d �Ze d d ��Z dS)r rc�s|�d�IdHS)zpReturn the next item from the asynchronous generator. When exhausted, raise StopAsyncIteration. N)�asendr1rrrrT�szAsyncGenerator.__anext__c�st�dS)zuSend a value into the asynchronous generator. Return next yielded value or raise StopAsyncIteration. NrRrBrrrrU�szAsyncGenerator.asendNc�s4|dur|dur|�|�}|dur,|�|�}|�dS)zyRaise an exception in the asynchronous generator. Return next yielded value or raise StopAsyncIteration. NrErGrrr�athrow�s zAsyncGenerator.athrowc �s8z|�t�IdHWnttfy*Yn 0td��dS)rLNz,asynchronous generator ignored GeneratorExit)rVrNrSrOr1rrr�aclose�s zAsyncGenerator.aclosecCs|turt|ddddd�StS)NrQrTrUrVrW)r r/r)r4rrrr6�s �zAsyncGenerator.__subclasshook__)NN) r7r8r9r:rTrrUrVrWr;r6rrrrr �s   r c@s0eZdZdZedd��Zedd��Zee�Z dS)rrccsdSrrr1rrr�__iter__szIterable.__iter__cCs|turt|d�StS)NrX)rr/r)r4rrrr6s zIterable.__subclasshook__N) r7r8r9r:rrXr;r6r>r?rrrrr�s   rc@s0eZdZdZedd��Zdd�Zedd��ZdS) rrcCst�dS)zKReturn the next item from the iterator. When exhausted, raise StopIterationNr@r1rrr�__next__szIterator.__next__cCs|Srrr1rrrrXszIterator.__iter__cCs|turt|dd�StS)NrXrY)rr/r)r4rrrr6s zIterator.__subclasshook__N) r7r8r9r:rrYrXr;r6rrrrrs  rc@s(eZdZdZedd��Zedd��ZdS)rrccsdSrrr1rrr� __reversed__6szReversible.__reversed__cCs|turt|dd�StS)NrZrX)rr/r)r4rrrr6;s zReversible.__subclasshook__N)r7r8r9r:rrZr;r6rrrrr2s  rc@sFeZdZdZdd�Zedd��Zed dd��Zd d �Ze d d ��Z dS)rrcCs |�d�S)z^Return the next item from the generator. When exhausted, raise StopIteration. N)rDr1rrrrYFszGenerator.__next__cCst�dS)zcSend a value into the generator. Return next yielded value or raise StopIteration. Nr@rBrrrrDLszGenerator.sendNcCs4|dur|dur|�|�}|dur,|�|�}|�dS)zgRaise an exception in the generator. Return next yielded value or raise StopIteration. NrErGrrrrKSs zGenerator.throwc Cs2z|�t�Wnttfy$Yn 0td��dS)z.Raise GeneratorExit inside generator. zgenerator ignored GeneratorExitNrMr1rrrrP`s zGenerator.closecCs|turt|ddddd�StS)NrXrYrDrKrP)rr/r)r4rrrr6js �zGenerator.__subclasshook__)NN) r7r8r9r:rYrrDrKrPr;r6rrrrrBs   rc@s(eZdZdZedd��Zedd��ZdS)rrcCsdSr0rr1rrr�__len__ysz Sized.__len__cCs|turt|d�StS)Nr[)rr/r)r4rrrr6}s zSized.__subclasshook__N)r7r8r9r:rr[r;r6rrrrrus  rc@s0eZdZdZedd��Zedd��Zee�Z dS)rrcCsdS�NFr)r2�xrrr� __contains__�szContainer.__contains__cCs|turt|d�StS)Nr^)rr/r)r4rrrr6�s zContainer.__subclasshook__N) r7r8r9r:rr^r;r6r>r?rrrrr�s   rc@seZdZdZedd��ZdS)rrcCs|turt|ddd�StS)Nr[rXr^)rr/r)r4rrrr6�szCollection.__subclasshook__N)r7r8r9r:r;r6rrrrr�srcsPeZdZdZdZdd�Ze�fdd��Z�fdd�Zd d �Z �fd d �Z �Z S) �_CallableGenericAliasz� Represent `Callable[argtypes, resulttype]`. This sets ``__args__`` to a tuple containing the flattened``argtypes`` followed by ``resulttype``. Example: ``Callable[[int, str], float]`` sets ``__args__`` to ``(int, str, float)``. rc Cs`z|�||�WStyZ}z4ddl}|�t|��d�t�t||�WYd}~Sd}~00dS)Nrz. (This will raise a TypeError in Python 3.10.))� _CallableGenericAlias__create_ga� TypeError�warnings�warn�str�DeprecationWarningr>)r5�origin�args�excrbrrr�__new__�s�z_CallableGenericAlias.__new__csXt|t�rt|�dkrtd��|\}}t|ttf�rDt|�|f}n|}t��|||�S)N�z6Callable must be used as Callable[[arg, ...], result].)� isinstance�tuple�lenra�list�superri)r5rfrg�t_args�t_result�ga_args�� __class__rr� __create_ga�s�z!_CallableGenericAlias.__create_gacs\t|j�dkr&|jdtur&t���Sdd�dd�|jdd�D���dt|jd��d �S) Nrjrzcollections.abc.Callable[[z, cSsg|] }t|��qSr)� _type_repr)�.0�arrr� �rz2_CallableGenericAlias.__repr__..�����z], �])rm�__args__�Ellipsisro�__repr__�joinrvr1rsrrr~�s � �z_CallableGenericAlias.__repr__cCsB|j}t|�dkr|dtus6t|dd��|df}tt|ffS)Nrjrrz)r|rmr}rnr_r)r2rgrrr� __reduce__�sz _CallableGenericAlias.__reduce__cs8t��|�}|j}|d}|dd�}||f}tt|�S)Nrz)ro� __getitem__r|r_r)r2�item�gargrqrprsrrr��s   z!_CallableGenericAlias.__getitem__) r7r8r9�__doc__r:rir;r`r~r�r�� __classcell__rrrsrr_�s   r_cCsbt|t�rt|�St|t�r>|jdkr,|jS|j�d|j��S|turJdSt|t�rZ|jSt|�S)z�Return the repr() of an object, special-casing types (internal helper). Copied from :mod:`typing` since collections.abc shouldn't depend on that module. �builtins�.z...) rkr>�repr�typer8r9r}� FunctionTyper7)�objrrrrv�s    rvc@s0eZdZdZedd��Zedd��Zee�Z dS)rrcOsdSr\r)r2rg�kwdsrrr�__call__�szCallable.__call__cCs|turt|d�StS)Nr�)rr/r)r4rrrr6�s zCallable.__subclasshook__N) r7r8r9r:rr�r;r6r_r?rrrrr�s   rc@s�eZdZdZdZdd�Zdd�Zdd�Zd d �Zd d �Z e d d��Z dd�Z e Z dd�Zdd�ZeZdd�Zdd�Zdd�ZeZdd�ZdS)raZA set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__ and __len__. To override the comparisons (presumably for speed, as the semantics are fixed), redefine __le__ and __ge__, then the other operations will automatically follow suit. rcCs>t|t�stSt|�t|�kr"dS|D]}||vr&dSq&dS�NFT�rkrr)rm�r2�other�elemrrr�__le__s z Set.__le__cCs(t|t�stSt|�t|�ko&|�|�Sr�rkrr)rmr��r2r�rrr�__lt__s z Set.__lt__cCs(t|t�stSt|�t|�ko&|�|�Sr)rkrr)rm�__ge__r�rrr�__gt__!s z Set.__gt__cCs>t|t�stSt|�t|�kr"dS|D]}||vr&dSq&dSr�r�r�rrrr�&s z Set.__ge__cCs(t|t�stSt|�t|�ko&|�|�Srr�r�rrr�__eq__0s z Set.__eq__cCs||�S)z�Construct an instance of the class from any iterable input. Must override this method if the class constructor signature does not accept an iterable for an input. r�r5�itrrr�_from_iterable5szSet._from_iterablecs&t|t�stS���fdd�|D��S)Nc3s|]}|�vr|VqdSrr�rwrCr1rr� ArzSet.__and__..�rkrr)r�r�rr1r�__and__>s z Set.__and__cCs|D]}||vrdSqdS)z1Return True if two sets have a null intersection.FTr)r2r�rCrrr� isdisjointEszSet.isdisjointcCs*t|t�stSdd�||fD�}|�|�S)Ncss|]}|D] }|Vq qdSrr)rw�s�errrr�OrzSet.__or__..r�)r2r��chainrrr�__or__Ls z Set.__or__cs:t�t�s"t�t�stS|����|��fdd�|D��S)Nc3s|]}|�vr|VqdSrrr��r�rrr�Ys�zSet.__sub__..�rkrrr)r�r�rr�r�__sub__Ts    z Set.__sub__cs:t|t�s"t|t�stS��|�}���fdd�|D��S)Nc3s|]}|�vr|VqdSrrr�r1rrr�as�zSet.__rsub__..r�r�rr1r�__rsub__\s    z Set.__rsub__cCs2t|t�s"t|t�stS|�|�}||||BSrr�r�rrr�__xor__ds    z Set.__xor__cCs�tj}d|d}t|�}d|d}||M}|D],}t|�}|||d>AdAdN}||M}q2||d?|d?AN}|d d }||M}||kr�||d8}|d kr�d }|S) a+Compute the hash value of a set. Note that we don't define __hash__: not all sets are hashable. But if you define a hashable set type, its __hash__ should call this function. This must be compatible __eq__. All sets ought to compare equal if they contain the same elements, regardless of how they are implemented, and regardless of the order of the elements; so there's not much freedom for __eq__ or __hash__. We match the algorithm used by the built-in frozenset type. rjr"iM��r�i�M[l�4~2� �i� i��6rzi��8#)�sys�maxsizerm�hash)r2�MAX�MASK�n�hr]�hxrrr�_hashms"     z Set._hashN)r7r8r9r�r:r�r�r�r�r�r;r�r��__rand__r�r��__ror__r�r�r��__rxor__r�rrrrrs&    rc@sdeZdZdZdZedd��Zedd��Zdd�Zd d �Z d d �Z d d�Z dd�Z dd�Z dd�ZdS)ra�A mutable set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__, __len__, add(), and discard(). To override the comparisons (presumably for speed, as the semantics are fixed), all you have to do is redefine __le__ and then the other operations will automatically follow suit. rcCst�dS)zAdd an element.N��NotImplementedErrorrBrrr�add�szMutableSet.addcCst�dS)z8Remove an element. Do not raise an exception if absent.Nr�rBrrr�discard�szMutableSet.discardcCs||vrt|��|�|�dS)z5Remove an element. If not a member, raise a KeyError.N)�KeyErrorr�rBrrr�remove�szMutableSet.removecCs<t|�}z t|�}Wnty,td�Yn0|�|�|S)z2Return the popped value. Raise KeyError if empty.N)�iter�nextrAr�r��r2r�rCrrr�pop�s    zMutableSet.popcCs&z|��qWnty Yn0dS)z6This is slow (creates N new iterators!) but effective.N)r�r�r1rrr�clear�s zMutableSet.clearcCs|D]}|�|�q|Sr)r�r�rrr�__ior__�s zMutableSet.__ior__cCs||D]}|�|�q|Sr)r�r�rrr�__iand__�s  zMutableSet.__iand__cCsR||ur|��n D[k] if k in D, else d. d defaults to None.Nr��r2r��defaultrrr�get�s  z Mapping.getcCs*z ||Wnty YdS0dSdSr�r�r�rrrr^�s   zMapping.__contains__cCst|�S)z:D.keys() -> a set-like object providing a view on D's keys)rr1rrr�keyssz Mapping.keyscCst|�S)z a set-like object providing a view on D's items)rr1rrr�items sz Mapping.itemscCst|�S)z6D.values() -> an object providing a view on D's values)rr1rrr�valuesszMapping.valuescCs&t|t�stSt|���t|���kSr)rkrr)�dictr�r�rrrr�s zMapping.__eq__)N) r7r8r9r:rr�r�r^r�r�r�r�rZrrrrr�s   rc@s0eZdZdZdd�Zdd�Zdd�Zee�Z dS) r��_mappingcCs ||_dSrr�)r2�mappingrrr�__init__"szMappingView.__init__cCs t|j�Sr)rmr�r1rrrr[%szMappingView.__len__cCs d�|�S)Nz&{0.__class__.__name__}({0._mapping!r}))�formatr1rrrr~(szMappingView.__repr__N) r7r8r9r:r�r[r~r;r>r?rrrrrs rc@s,eZdZdZedd��Zdd�Zdd�ZdS) rrcCst|�Sr��setr�rrrr�2szKeysView._from_iterablecCs ||jvSrr�r�rrrr^6szKeysView.__contains__ccs|jEdHdSrr�r1rrrrX9szKeysView.__iter__N�r7r8r9r:r;r�r^rXrrrrr.s  rc@s,eZdZdZedd��Zdd�Zdd�ZdS) rrcCst|�Srr�r�rrrr�DszItemsView._from_iterablecCs@|\}}z|j|}Wnty*YdS0||up:||kSdSr\)r�r�)r2r�r�rC�vrrrr^Hs  zItemsView.__contains__ccs |jD]}||j|fVqdSrr�r�rrrrXQs zItemsView.__iter__Nr�rrrrr@s   rc@s eZdZdZdd�Zdd�ZdS)rrcCs0|jD]$}|j|}||us$||krdSqdS�NTFr�)r2rCr�r�rrrr^]s   zValuesView.__contains__ccs|jD]}|j|VqdSrr�r�rrrrXds zValuesView.__iter__N)r7r8r9r:r^rXrrrrrYsrc@s^eZdZdZedd��Zedd��Ze�Zefdd�Z dd �Z d d �Z dd d �Z ddd�Z dS)rrcCst�dSrr��r2r�rCrrr� __setitem__yszMutableMapping.__setitem__cCst�dSrr�r�rrr� __delitem__}szMutableMapping.__delitem__cCs>z ||}Wn"ty.||jur&�|YS0||=|SdS)z�D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. N)r��_MutableMapping__marker)r2r�r�rCrrrr��s    zMutableMapping.popcCs@ztt|��}Wnty(td�Yn0||}||=||fS)z�D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty. N)r�r�rAr�r�rrr�popitem�s  zMutableMapping.popitemcCs&z|��qWnty Yn0dS)z,D.clear() -> None. Remove all items from D.N)r�r�r1rrrr��s zMutableMapping.clearcKs|t|t�r"|D]}||||<qn None. Update D from mapping/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v r�N)rkr�hasattrr�r�)r2r�r�r�rCrrr�update�s     zMutableMapping.updateNcCs*z ||WSty$|||<Yn0|S)z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in Dr�r�rrr� setdefault�s   zMutableMapping.setdefault)r)N)r7r8r9r:rr�r��objectr�r�r�r�r�r�rrrrrls      rc@sJeZdZdZdZedd��Zdd�Zdd�Zd d �Z dd d�Z dd�Z d S)rz�All the operations on a read-only sequence. Concrete subclasses must override __new__ or __init__, __getitem__, and __len__. rcCst�dSr�� IndexError�r2�indexrrrr��szSequence.__getitem__ccs:d}z||}|V|d7}qWnty4YdS0dS)Nrr"r�)r2�ir�rrrrX�s zSequence.__iter__cCs$|D]}||us||krdSqdSr�r)r2rCr�rrrr^�szSequence.__contains__ccs$ttt|���D]}||VqdSr)�reversed�rangerm)r2r�rrrrZ�szSequence.__reversed__rNcCs�|dur"|dkr"tt|�|d�}|dur>|dkr>|t|�7}|}|dusR||kr�z"||}||usl||krr|WSWnty�Yq�Yn0|d7}qBt�dS)z�S.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present. Supporting start and stop arguments is optional, but recommended. Nrr")�maxrmr�� ValueError)r2rC�start�stopr�r�rrrr��s     zSequence.indexcst�fdd�|D��S)zBS.count(value) -> integer -- return number of occurrences of valuec3s"|]}|�us|�krdVqdS)r"Nr)rwr��rCrrr�rz!Sequence.count..)�sumrBrr�r�count�szSequence.count)rN) r7r8r9r�r:rr�rXr^rZr�r�rrrrr�s   rc@seZdZdZdZdS)r!zMThis unifies bytes and bytearray. XXX Should add all their methods. rN)r7r8r9r�r:rrrrr! sr!c@sneZdZdZedd��Zedd��Zedd��Zdd �Zd d �Z d d �Z dd�Z ddd�Z dd�Z dd�ZdS)r rcCst�dSrr��r2r�rCrrrr�"szMutableSequence.__setitem__cCst�dSrr�r�rrrr�&szMutableSequence.__delitem__cCst�dS)z3S.insert(index, value) -- insert value before indexNr�r�rrr�insert*szMutableSequence.insertcCs|�t|�|�dS)z:S.append(value) -- append value to the end of the sequenceN)r�rmrBrrr�append/szMutableSequence.appendcCs&z|��qWnty Yn0dS)z,S.clear() -> None -- remove all items from SN)r�r�r1rrrr�3s zMutableSequence.clearcCsHt|�}t|d�D].}|||d||||<|||d<qdS)z!S.reverse() -- reverse *IN PLACE*rjr"N)rmr�)r2r�r�rrr�reverse;szMutableSequence.reversecCs(||urt|�}|D]}|�|�qdS)zMS.extend(iterable) -- extend sequence by appending elements from the iterableN)rnr�)r2r�r�rrr�extendAszMutableSequence.extendrzcCs||}||=|S)z�S.pop([index]) -> item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range. r)r2r�r�rrrr�HszMutableSequence.popcCs||�|�=dS)zvS.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present. N)r�rBrrrr�PszMutableSequence.removecCs|�|�|Sr)r�)r2r�rrr�__iadd__Vs zMutableSequence.__iadd__N)rz)r7r8r9r:rr�r�r�r�r�r�r�r�r�r�rrrrr s     r )Rr��abcrrr�r�rn�intr>� EllipsisTyperr��__all__r7r��bytes_iterator� bytearray�bytearray_iteratorr��dict_keyiteratorr��dict_valueiteratorr��dict_itemiterator� list_iteratorr��list_reverseiteratorr��range_iterator�longrange_iteratorr�� set_iterator� str_iterator�tuple_iterator�zip� zip_iterator� dict_keys� dict_values� dict_itemsr(� mappingproxy� generatorr%� coroutinerPr&�async_generatorr/rr r �registerr r r rrrrrrrr_rvrr� frozensetrrrrrrrr�rrlrd� memoryviewr!�bytesr rrrr�s�          ) 0              0  = P 3    T >      D