§
    h˜ºh˜y ã                  ó¢  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ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 ddlmZmZmZmZmZmZ dd	lm Z m!Z!m"Z"m#Z# e$j%        Z&d
Z'dZ(dZ) e
j*        i ¦  «        Z+ e$¦   «         Z, ej-        ej.        ej/        ¦  «        Z0 G d„ dej1        ¦  «        Z2e2j3        Z3	  G d„ de4¦  «        Z5e3ddddddddddddddfd„Z6	 	 d�d‚d„Z7	 dƒd„d!„Z8d…d&„Z9 G d'„ d(e¦  «        Z:d)„ Z;d*„ Z<d†d,„Z=d-„ Z>d‡d.„Z?d/„ Z@d0„ ZAd1„ ZBd2„ ZC G d3„ d4¦  «        ZDd5„ ZEd6„ ZF	 dˆd7„ZG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‰d8„ZHeHZI	 d9„ ZJdŠd<„ZKd‹dC„ZLdŒdD„ZMdE„ ZNd�dG„ZOdH„ ZPdƒdI„ZQdŽdJ„ZRd�dK„ZSdL„ ZTdM„ ZUdN„ Z/dO„ ZVd�dQ„ZWd‘dU„ZXd’dX„ZYd“dZ„ZZd’d[„Z[d”d_„Z\d•dj„Z]d–dl„Z^ G dm„ dn¦  «        Z_do„ e_j`        D ¦   «         Za eM eQ eSe_ea¬p¦  «        dq„ eaD ¦   «         ¬p¦  «        dr„ eaD ¦   «         ¬p¦  «        Z_ G ds„ dt¦  «        Zb eQ eSeb¦  «        ¦  «        Zb G du„ dv¦  «        Zcdw„ ecj`        D ¦   «         Zd eM eQ eSeced¬p¦  «        ed¬p¦  «        ed¬p¦  «        Zc G dx„ dW¦  «        Zedy„ dzD ¦   «         Zd eM eQ eSeeed¬p¦  «        ed¬p¦  «        ed¬p¦  «        Zee$fdfd{„Zf eHdd¬|¦  «         G d}„ d~¦  «        ¦   «         Zgd„ Zhd€„ Z-dS )—é    )ÚannotationsN)ÚCallableÚMapping)Úcached_property)ÚAnyÚ
NamedTupleÚTypeVaré   )Ú_compatÚ_configÚsetters)ÚPY_3_10_PLUSÚPY_3_11_PLUSÚPY_3_13_PLUSÚ_AnnotationExtractorÚ_get_annotationsÚget_generic_base)ÚDefaultAlreadySetErrorÚFrozenInstanceErrorÚNotAnAttrsClassErrorÚUnannotatedAttributeErrorz__attr_factory_%s)ztyping.ClassVarz
t.ClassVarÚClassVarztyping_extensions.ClassVarÚ_attrs_cached_hashc                  ó<   — e Zd ZdZ ej        ¦   «         Zd„ Zd„ ZdS )Ú_NothingaF  
    Sentinel to indicate the lack of a value when `None` is ambiguous.

    If extending attrs, you can use ``typing.Literal[NOTHING]`` to show
    that a value may be ``NOTHING``.

    .. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False.
    .. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant.
    c                ó   — dS )NÚNOTHING© ©Úselfs    úR/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/attr/_make.pyÚ__repr__z_Nothing.__repr__J   s   € Øˆyó    c                ó   — dS )NFr   r   s    r!   Ú__bool__z_Nothing.__bool__M   s   € Øˆur#   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚenumÚautor   r"   r%   r   r#   r!   r   r   =   sK   € € € € € ðð ð ˆdŒi‰kŒk€Gðð ð ðð ð ð ð r#   r   c                  ó0   — e Zd ZdZ ed¦  «        dfd„ZdS )Ú_CacheHashWrappera  
    An integer subclass that pickles / copies as None

    This is used for non-slots classes with ``cache_hash=True``, to avoid
    serializing a potentially (even likely) invalid hash value. Since `None`
    is the default value for uncalculated hashes, whenever this is copied,
    the copy's value for the hash should automatically reset.

    See GH #613 for more details.
    Nr   c                ó
   — ||fS ©Nr   )r    Ú_none_constructorÚ_argss      r!   Ú
__reduce__z_CacheHashWrapper.__reduce__e   s   € Ø  %Ð'Ð'r#   )r&   r'   r(   r)   Útyper2   r   r#   r!   r-   r-   Y   sA   € € € € € ð	ð 	ð ,0¨4°©:¬:¸Rð (ð (ð (ð (ð (ð (r#   r-   TFc                óh  — t          |||d¦  «        \  }}}}|�|dur|durd}t          |¦  «        ‚|	�I| t          urd}t          |¦  «        ‚t	          |	¦  «        sd}t          |¦  «        ‚t          |	¦  «        } |€i }t          |t          t          f¦  «        rt          j
        |Ž }|r%t          |t          t          f¦  «        r	t          |Ž }|r%t          |t          t          f¦  «        r	t          |Ž }t          di d| “d|“d	|“d
d“d|“d|“d|“d|“d|“d|
“d|“d|“d|“d|“d|“d|“ŽS )a¿  
    Create a new field / attribute on a class.

    Identical to `attrs.field`, except it's not keyword-only.

    Consider using `attrs.field` in new code (``attr.ib`` will *never* go away,
    though).

    ..  warning::

        Does **nothing** unless the class is also decorated with
        `attr.s` (or similar)!


    .. versionadded:: 15.2.0 *convert*
    .. versionadded:: 16.3.0 *metadata*
    .. versionchanged:: 17.1.0 *validator* can be a ``list`` now.
    .. versionchanged:: 17.1.0
       *hash* is `None` and therefore mirrors *eq* by default.
    .. versionadded:: 17.3.0 *type*
    .. deprecated:: 17.4.0 *convert*
    .. versionadded:: 17.4.0
       *converter* as a replacement for the deprecated *convert* to achieve
       consistency with other noun-based arguments.
    .. versionadded:: 18.1.0
       ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionchanged:: 19.2.0 *convert* keyword argument removed.
    .. versionchanged:: 19.2.0 *repr* also accepts a custom callable.
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.3.0 *kw_only* backported to Python 2
    .. versionchanged:: 21.1.0
       *eq*, *order*, and *cmp* also accept a custom callable
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 22.2.0 *alias*
    TNFú6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.ÚdefaultÚ	validatorÚreprÚcmpÚhashÚinitÚ	converterÚmetadatar3   Úkw_onlyÚeqÚeq_keyÚorderÚ	order_keyÚ
on_setattrÚaliasr   )Ú_determine_attrib_eq_orderÚ	TypeErrorr   Ú
ValueErrorÚcallableÚFactoryÚ
isinstanceÚlistÚtupler   ÚpipeÚand_Ú_CountingAttr)r6   r7   r8   r9   r:   r;   r=   r3   r<   Úfactoryr>   r?   rA   rC   rD   r@   rB   Úmsgs                     r!   ÚattribrR   i   sø  € õn $>ØˆR�˜ñ$ô $Ñ €Bˆ��yð Ð˜D¨Ð,Ð,°¸UÐ1BÐ1BØFˆÝ˜‰nŒnÐàÐØ�'Ð!Ð!àOð õ ˜S‘/”/Ð!Ý˜Ñ Ô ð 	"Ø>ˆCÝ˜S‘/”/Ð!Ý˜'Ñ"Ô"ˆàÐØˆõ �*�t¥U˜mÑ,Ô,ð /Ý”\ :Ð.ˆ
àð %•Z 	­Dµ%¨=Ñ9Ô9ð %Ý˜)Ð$ˆ	àð %•Z 	­Dµ%¨=Ñ9Ô9ð %Ý˜)Ð$ˆ	åð ð ð Ø�ðà�)ðð ˆTðð ˆDð	ð
 ˆTðð ˆTðð �)ðð �ðð ˆTðð �ðð ˆ2ðð ˆvðð ˆeðð �)ðð �:ðð  ˆeð!ð r#   Ú ÚscriptÚstrÚglobsúdict[str, Any] | NoneÚlocsúMapping[str, object] | NoneÚfilenameÚreturnÚNonec                óJ   — t          | |d¦  «        }t          |||¦  «         dS )z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)rT   rV   rX   rZ   Úbytecodes        r!   Ú_compile_and_evalrb   Ô   s-   € õ �v˜x¨Ñ0Ô0€HÝˆ�5˜$ÑÔÐÐÐr#   Úlocalsúdict[str, Any]c                ó  — |€i n|}d}|}	 t          | ¦  «        d|                      d¦  «        |f}t          j                             ||¦  «        }||k    rn|dd…         › d|› d�}|dz  }Œct          | |||¦  «         |S )zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr
   Téÿÿÿÿú-ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultrb   )	rT   rZ   rV   rc   rX   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r!   Ú_linecache_and_compilerr   â   s¸   € ð �ˆ2ˆ2 V€Dð €EØ€Mðå�‰KŒKØØ×Ò˜dÑ#Ô#Øð	
ˆõ ”/×,Ò,¨X°ÑGÔGˆØ�oÒ%Ð%Øà# C R CÔ(Ð3Ð3¨5Ð3Ð3Ð3ˆØ�‰
ˆðõ �f˜e T¨8Ñ4Ô4Ð4à€Kr#   Úcls_nameÚ
attr_namesú	list[str]r3   c                ó–   — | › d�}i }t          |¦  «        D ]\  }}|fd„}t          |¦  «        ||<   Œt          |t          f|¦  «        S )zé
    Create a tuple subclass to hold `Attribute`s for an `attrs` class.

    The subclass is a bare tuple with properties for names.

    class MyClassAttributes(tuple):
        __slots__ = ()
        x = property(itemgetter(0))
    Ú
Attributesc                ó   — | |         S r/   r   )r    Úis     r!   Úgetterz&_make_attr_tuple_class.<locals>.getter  s   € Ø˜”7ˆNr#   )Ú	enumerateÚpropertyr3   rL   )rs   rt   Úattr_class_nameÚbodyry   Ú	attr_namerz   s          r!   Ú_make_attr_tuple_classr€     sr   € ð "Ð-Ð-Ð-€OØ€DÝ! *Ñ-Ô-ð +ð +‰ˆˆ9àð 	ð 	ð 	ð 	õ # 6Ñ*Ô*ˆˆY‰ˆÝ�¥% ¨4Ñ0Ô0Ð0r#   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_Attributesr3   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapN)r&   r'   r(   Ú__annotations__r   r#   r!   r‚   r‚     s3   € € € € € € Ø€K€K�KØÐÐÑØ#Ð#Ð#Ñ#Ð#Ð#r#   r‚   c                ó¼   — t          | ¦  «        } |                      d¦  «        r|                      d¦  «        r
| dd…         } |                      t          ¦  «        S )zñ
    Check whether *annot* is a typing.ClassVar.

    The string comparison hack is used to avoid evaluating all string
    annotations which would put attrs-based classes at a performance
    disadvantage compared to plain old classes.
    )ú'ú"r
   rf   )rU   Ú
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r!   Ú_is_class_varr�   "  s\   € õ �‰JŒJ€Eð ×Ò˜
Ñ#Ô#ð ¨¯ª°zÑ(BÔ(Bð Ø�a˜�d”ˆà×ÒÕ.Ñ/Ô/Ð/r#   c                ó   — || j         v S )zR
    Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
    )Ú__dict__)ÚclsÚattrib_names     r!   Ú_has_own_attributer•   3  s   € ð ˜#œ,Ð&Ð&r#   ú'tuple[list[Attribute], dict[str, type]]c                ó¼  — g }i }t          | j        dd…         ¦  «        D ]\}t          |dg ¦  «        D ]H}|j        s	|j        |v rŒ|                     d¬¦  «        }|                     |¦  «         |||j        <   ŒIŒ]g }t          ¦   «         }t          |¦  «        D ]<}|j        |v rŒ|                     d|¦  «         | 	                    |j        ¦  «         Œ=||fS )zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r
   rf   Ú__attrs_attrs__T©Ú	inheritedr   )
ÚreversedÚ__mro__Úgetattrrš   ÚnameÚevolveÚappendÚsetÚinsertÚadd)r“   Útaken_attr_namesr…   Úbase_attr_mapÚbase_clsÚaÚfilteredÚseens           r!   Ú_collect_base_attrsrª   :  s  € ð €JØ€Mõ ˜Sœ[¨¨2¨Ô.Ñ/Ô/ð -ð -ˆÝ˜Ð#4°bÑ9Ô9ð 	-ð 	-ˆAØŒ{ð ˜aœfÐ(8Ð8Ð8Øà—’ 4�Ñ(Ô(ˆAØ×Ò˜aÑ Ô Ð Ø$,ˆM˜!œ&Ñ!Ð!ð	-ð €HÝ‰5Œ5€DÝ�jÑ!Ô!ð ð ˆØŒ6�Tˆ>ˆ>ØØ�Š˜˜1ÑÔÐØ�Š�”ÑÔÐÐà�]Ð"Ð"r#   c                ó  — g }i }| j         dd…         D ]o}t          |dg ¦  «        D ][}|j        |v rŒ|                     d¬¦  «        }|                     |j        ¦  «         |                     |¦  «         |||j        <   Œ\Œp||fS )a-  
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.

    N.B. *taken_attr_names* will be mutated.

    Adhere to the old incorrect behavior.

    Notably it collects from the front and considers inherited attributes which
    leads to the buggy behavior reported in #428.
    r
   rf   r˜   Tr™   )rœ   r�   rž   rŸ   r£   r    )r“   r¤   r…   r¥   r¦   r§   s         r!   Ú_collect_base_attrs_brokenr¬   [  sµ   € ð €JØ€Mð ”K  " Ô%ð -ð -ˆÝ˜Ð#4°bÑ9Ô9ð 	-ð 	-ˆAØŒvÐ)Ð)Ð)Øà—’ 4�Ñ(Ô(ˆAØ× Ò  ¤Ñ(Ô(Ð(Ø×Ò˜aÑ Ô Ð Ø$,ˆM˜!œ&Ñ!Ð!ð	-ð �}Ð$Ð$r#   c           
     ó�  ‡‡‡— | j         Št          | ¦  «        Š|�#t          |                     ¦   «         ¦  «        }�n0|du rþd„ ‰                     ¦   «         D ¦   «         }g }t	          ¦   «         }‰                     ¦   «         D ]y\  }	}
t          |
¦  «        rŒ|                     |	¦  «         ‰                     |	t          ¦  «        }|j	        t          urt          |¦  «        }|                     |	|f¦  «         Œz||z
  }|r:t          dd                     t          |ˆfd„¬¦  «        ¦  «        z   dz   ¦  «        ‚n.t          d	„ ‰                     ¦   «         D ¦   «         d
„ ¬¦  «        }t           j        Šˆˆfd„|D ¦   «         }|rt%          | d„ |D ¦   «         ¦  «        \  }}nt'          | d„ |D ¦   «         ¦  «        \  }}|rd„ |D ¦   «         }d„ |D ¦   «         }||z   }|�t)           || |¦  «        ¦  «        }d}d„ |D ¦   «         D ]<}|du r"|j        t          u rd|›�}t-          |¦  «        ‚|du r|j        t          urd}Œ=|D ]>}|j        s5t1                               |¦  «        dt5          |j        ¦  «        ¦  «         Œ?d„ |D ¦   «         }t9          | j        |¦  «        }t=           ||¦  «        ||¦  «        S )a3  
    Transform all `_CountingAttr`s on a class into `Attribute`s.

    If *these* is passed, use that and don't look for them on the class.

    If *collect_by_mro* is True, collect them in the correct MRO order,
    otherwise use the old -- incorrect -- order.  See #428.

    Return an `_Attributes`.
    NTc                ó4   — h | ]\  }}|j         t          u ¯|’ŒS r   ©Ú	__class__rO   ©Ú.0rž   Úattrs      r!   ú	<setcomp>z#_transform_attrs.<locals>.<setcomp>Š  s3   € ð 
ð 
ð 
á��dØŒ~¥Ð.Ð.ð à.Ð.Ð.r#   z1The following `attr.ib`s lack a type annotation: ú, c                ó8   •— ‰                      | ¦  «        j        S r/   )ÚgetÚcounter)ÚnÚcds    €r!   ú<lambda>z"_transform_attrs.<locals>.<lambda>   s   ø€ °b·f²f¸Q±i´iÔ6G€ r#   )Úkeyú.c              3  ó@   K  — | ]\  }}|j         t          u ¯||fV — Œd S r/   r¯   r±   s      r!   ú	<genexpr>z#_transform_attrs.<locals>.<genexpr>¦  sC   è è € ð ð á�D˜$Ø”>¥]Ð2Ð2ð �t�à2Ð2Ð2Ð2ðð r#   c                ó   — | d         j         S ©Nr
   )r¸   )Úes    r!   r»   z"_transform_attrs.<locals>.<lambda>«  s   € ˜!˜Aœ$œ,€ r#   c           	     óV   •— g | ]%\  }} ‰||‰                      |¦  «        ¦  «        ‘Œ&S r   )r·   )r²   r   ÚcaÚannsÚfcas      €€r!   ú
<listcomp>z$_transform_attrs.<locals>.<listcomp>¯  sD   ø€ ð ð ð Ù4A°I¸rˆˆˆI�r˜4Ÿ8š8 IÑ.Ô.Ñ/Ô/ðð ð r#   c                ó   — h | ]	}|j         ’Œ
S r   ©rž   ©r²   r§   s     r!   r´   z#_transform_attrs.<locals>.<setcomp>µ  ó   € Ð,Ð,Ð,˜Q�!”&Ð,Ð,Ð,r#   c                ó   — h | ]	}|j         ’Œ
S r   rÉ   rÊ   s     r!   r´   z#_transform_attrs.<locals>.<setcomp>¹  rË   r#   c                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS ©T)r>   ©rŸ   rÊ   s     r!   rÇ   z$_transform_attrs.<locals>.<listcomp>½  s&   € Ð?Ð?Ð?°�Q—X’X d�XÑ+Ô+Ð?Ð?Ð?r#   c                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS rÎ   rÏ   rÊ   s     r!   rÇ   z$_transform_attrs.<locals>.<listcomp>¾  s&   € ÐAÐAÐA°�a—h’h t�hÑ,Ô,ÐAÐAÐAr#   Fc              3  ó>   K  — | ]}|j         d u¯|j        d u ¯|V — ŒdS )FN)r;   r>   rÊ   s     r!   r¿   z#_transform_attrs.<locals>.<genexpr>Ë  s:   è è € ÐMÐM�A !¤&°Ð"5Ð"5¸!¼)ÀuÐ:LÐ:LˆaÐ:LÐ:LÐ:LÐ:LÐMÐMr#   zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: rD   c                ó   — g | ]	}|j         ‘Œ
S r   rÉ   rÊ   s     r!   rÇ   z$_transform_attrs.<locals>.<listcomp>Ý  s   € Ð(Ð(Ð(˜Q�!”&Ð(Ð(Ð(r#   )r’   r   rK   Úitemsr¡   r�   r£   r·   r   r°   rO   rR   r    r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrrª   r¬   rL   r6   rG   rD   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forrž   r€   r&   r‚   )r“   ÚtheseÚauto_attribsr>   Úcollect_by_mroÚfield_transformerÚca_listÚca_namesÚannot_namesr   r3   r§   ÚunannotatedÚ	own_attrsr…   r¥   rƒ   Úhad_defaultrQ   rt   Ú
AttrsClassrÅ   rº   rÆ   s                        @@@r!   Ú_transform_attrsræ   w  sŸ  øøø€ ð 
Œ€BÝ˜CÑ Ô €DàÐÝ�u—{’{‘}”}Ñ%Ô%ˆ‰Ø	˜Ð	Ð	ð
ð 
à Ÿhšh™jœjð
ñ 
ô 
ˆð
 ˆÝ‘e”eˆØ#Ÿzšz™|œ|ð 	+ð 	+‰OˆI�tÝ˜TÑ"Ô"ð ØØ�OŠO˜IÑ&Ô&Ð&Ø—’�y¥'Ñ*Ô*ˆAàŒ{¥-Ð/Ð/Ý˜1‘I”I�Ø�NŠN˜I q˜>Ñ*Ô*Ð*Ð*à Ñ,ˆØð 	Ý+ØCØ—)’)Ý˜;Ð,GÐ,GÐ,GÐ,GÐHÑHÔHñô ñð ñ	ñô ð ð	õ ðð à"$§(¢(¡*¤*ðñ ô ð
 'Ð&ð
ñ 
ô 
ˆõ Ô
&€Cðð ð ð ð ØELðñ ô €Ið ð 
Ý$7ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�M�Mõ %?ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�Mð ð BØ?Ð?°YÐ?Ñ?Ô?ˆ	ØAÐA°jÐAÑAÔAˆ
à˜Ñ"€EàÐ$ÝÐ'Ð'¨¨UÑ3Ô3Ñ4Ô4ˆð €KØMÐM˜ÐMÑMÔMð ð ˆØ˜$ÐÐ 1¤9µÐ#7Ð#7ð Gð  BCð  Gð  GˆCÝ˜S‘/”/Ð!à˜%ÐÐ A¤IµWÐ$<Ð$<ØˆKøð
 ð Nð NˆØŒwð 	Nå× Ò  Ñ#Ô# GÕ-DÀQÄVÑ-LÔ-LÑMÔMÐMøð )Ð( %Ð(Ñ(Ô(€JÝ'¨¬°jÑAÔA€Jå�z�z %Ñ(Ô(¨*°mÑDÔDÐDr#   c                ó2  — g d¢}|�|                      d¦  «         n|                     g d¢¦  «         |                     ddg¦  «         t          |d¦  «        }| t          j        |dœ}t          d                     |¦  «        ||d	|i¬
¦  «        d         S )N)	zdef wrapper(_cls):z    __class__ = _clsz‘    def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):z+         func = cached_properties.get(item)z         if func is not None:z!              result = func(self)z1              _setter = _cached_setattr_get(self)z#              _setter(item, result)z              return resultz,         return original_getattr(self, item))z         try:z2             return super().__getattribute__(item)z         except AttributeError:z4             if not hasattr(super(), '__getattr__'):z                 raisez-             return super().__getattr__(item)zY         original_error = f"'{self.__class__.__name__}' object has no attribute '{item}'"z-         raise AttributeError(original_error)z    return __getattr__z__getattr__ = wrapper(_cls)r�   )Úcached_propertiesÚ_cached_setattr_getÚoriginal_getattrú
Ú_cls)rc   Ú__getattr__)r    ÚextendÚ_generate_unique_filenamerØ   rÙ   rr   rÔ   )rè   rê   r“   ÚlinesÚunique_filenameÚglobs         r!   Ú_make_cached_property_getattrró   ã  sè   € ðð ð €Eð Ð#Ø�ŠØ:ñ	
ô 	
ð 	
ð 	
ð 	�Šð	ð 	ð 	ñ	
ô 	
ð 	
ð 
‡L‚Là$Ø)ð	
ñô ð õ 0°°YÑ?Ô?€Oð /Ý+Ô3Ø,ðð €Dõ "Ø�	Š	�%ÑÔ˜/¨4¸À¸ðñ ô àôð r#   c                ó~   — t          | t          ¦  «        r"|dv rt                               | ||¦  «         dS t          ‚)z4
    Attached to frozen classes as __setattr__.
    )Ú	__cause__Ú__context__Ú__traceback__Ú__suppress_context__Ú	__notes__N)rJ   ÚBaseExceptionÚ__setattr__r   ©r    rž   Úvalues      r!   Ú_frozen_setattrsrþ     sL   € õ �$�Ñ&Ô&ð ¨4ð 4ð ,ð ,õ 	×!Ò! $¨¨eÑ4Ô4Ð4Øˆå
Ðr#   c                ó|   — t          | t          ¦  «        r!|dv rt                               | |¦  «         dS t          ‚)z4
    Attached to frozen classes as __delattr__.
    )rù   N)rJ   rú   Ú__delattr__r   )r    rž   s     r!   Ú_frozen_delattrsr  (  sA   € õ �$�Ñ&Ô&ð ¨4°>Ð+AÐ+AÝ×!Ò! $¨Ñ-Ô-Ð-Øˆå
Ðr#   c                 ó  — 	 | \  }n1# t           $ r$ dt          | ¦  «        › d�}t          |¦  «        d‚w xY w|j        }t	          |¦  «        }|D ]/}|j        sŒ
|j        }|j        }||vrt          ||¦  «        ||<   Œ0 |di |¤ŽS )a  
    Create a new instance, based on the first positional argument with
    *changes* applied.

    .. tip::

       On Python 3.13 and later, you can also use `copy.replace` instead.

    Args:

        inst:
            Instance of a class with *attrs* attributes. *inst* must be passed
            as a positional argument.

        changes:
            Keyword changes in the new copy.

    Returns:
        A copy of inst with *changes* incorporated.

    Raises:
        TypeError:
            If *attr_name* couldn't be found in the class ``__init__``.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    .. versionadded:: 17.1.0
    .. deprecated:: 23.1.0
       It is now deprecated to pass the instance using the keyword argument
       *inst*. It will raise a warning until at least April 2024, after which
       it will become an error. Always pass the instance as a positional
       argument.
    .. versionchanged:: 24.1.0
       *inst* can't be passed as a keyword argument anymore.
    z*evolve() takes 1 positional argument, but z were givenNr   )	rG   ri   rF   r°   Úfieldsr;   rž   rD   r�   )	ÚargsÚchangesÚinstrQ   r“   rƒ   r§   r   Ú	init_names	            r!   rŸ   rŸ   3  sÅ   € ðJ'Ø‰ˆˆøÝð 'ð 'ð 'àO½¸T¹¼ÐOÐOÐOð 	õ ˜‰nŒn $Ð&ð	'øøøð Œ.€CÝ�3‰KŒK€EØð :ð :ˆØŒvð 	ØØ”Fˆ	Ø”Gˆ	Ø˜GÐ#Ð#Ý!(¨¨yÑ!9Ô!9ˆG�IÑøàˆ3ˆ>ˆ>�ˆ>ˆ>Ðs   ‚ ‡.5c                  ó–   — e Zd ZdZdZdd„Zd„ Zd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„ Zd„ Zd d„Zd d„ZdS )!Ú_ClassBuilderz(
    Iteratively build *one* class.
    )Ú_add_method_dundersÚ_attr_namesÚ_attrsÚ_base_attr_mapÚ_base_namesÚ_cache_hashrì   Ú	_cls_dictÚ_delete_attribsÚ_frozenÚ_has_custom_setattrÚ_has_post_initÚ_has_pre_initÚ_is_excÚ_on_setattrÚ_pre_init_has_argsÚ_repr_addedÚ_script_snippetsÚ_slotsÚ_weakref_slotÚ_wrote_own_setattrr“   r3   c                ó  — t          ||||||¦  «        \  }}}|| _        |rt          |j        ¦  «        ni | _        || _        d„ |D ¦   «         | _        || _        t          d„ |D ¦   «         ¦  «        | _	        || _
        || _        || _        |	| _        t          t          |dd¦  «        ¦  «        | _        d| _        | j        r8|j        }t'          j        |¦  «        }t+          |j        ¦  «        dk    | _        t          t          |dd¦  «        ¦  «        | _        t          |¦  «         | _        |
| _        || _        || _        d| _        | j        | j        d<   |r&t:          | j        d<   t<          | j        d	<   d
| _        n{|t>          t@          j!        t@          j"        fv r[dx}}|D ]}|j#        �d
}|j$        �d
}|r|r nŒ|t>          k    r|s|r$|t@          j!        k    r|r|t@          j"        k    r	|sd | _        |r'|  %                    ¦   «         \  | j        d<   | j        d<   g | _&        d| _'        tQ          | j        d¦  «        rtQ          | j        d¦  «        s| j)        | _*        d S | j+        | _*        d S )Nc                ó   — h | ]	}|j         ’Œ
S r   rÉ   rÊ   s     r!   r´   z)_ClassBuilder.__init__.<locals>.<setcomp>§  s   € Ð7Ð7Ð7 q˜AœFÐ7Ð7Ð7r#   c              3  ó$   K  — | ]}|j         V — Œd S r/   rÉ   rÊ   s     r!   r¿   z)_ClassBuilder.__init__.<locals>.<genexpr>©  s$   è è € Ð 7Ð 7¨A ¤Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7r#   Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r˜   rû   r   TÚ__getstate__Ú__setstate__r'   r(   ),ræ   rì   Údictr’   r  r  r  r  rL   r  r  r  r  r  Úboolr�   r  r  r!  ÚinspectÚ	signatureri   Ú
parametersr  r  r  r  r  r  rþ   r  Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr7   r<   Ú_make_getstate_setstater  r  ÚhasattrÚ_add_method_dunders_safer
  Ú_add_method_dunders_unsafe)r    r“   rÛ   ÚslotsÚfrozenÚweakref_slotÚgetstate_setstaterÜ   r>   Ú
cache_hashÚis_excrÝ   rC   Úhas_custom_setattrrÞ   rƒ   r…   Úbase_mapÚpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converterr§   s                          r!   Ú__init__z_ClassBuilder.__init__Š  só  € õ" '7ØØØØØØñ'
ô '
Ñ#ˆˆz˜8ð ˆŒ	Ø/4Ð<�˜cœlÑ+Ô+Ð+¸"ˆŒØˆŒØ7Ð7¨JÐ7Ñ7Ô7ˆÔØ&ˆÔÝ Ð 7Ð 7°Ð 7Ñ 7Ô 7Ñ7Ô7ˆÔØˆŒØˆŒØ)ˆÔØ%ˆÔÝ!¥'¨#Ð/CÀUÑ"KÔ"KÑLÔLˆÔØ"'ˆÔØÔð 	Mð  Ô2ˆMÝ!(Ô!2°=Ñ!AÔ!AÐÝ&)Ð*<Ô*GÑ&HÔ&HÈ1Ò&LˆDÔ#Ý"¥7¨3Ð0EÀuÑ#MÔ#MÑNÔNˆÔÝ#'¨¡;¤;˜ˆÔØˆŒØ%ˆÔà#5ˆÔ Ø"'ˆÔà,0¬KˆŒÐ(Ñ)àð 	(Ý,<ˆDŒN˜=Ñ)Ý,<ˆDŒN˜=Ñ)à&*ˆDÔ#Ð#ØÝÝÔÝŒOð
ð 
ð 
ð
 -2Ð1ˆM˜MØð ð �Ø”;Ð*Ø$(�MØ”;Ð*Ø$(�Mà ð  ]ð Ø�Eøð Õ"5Ò5Ð5Ø*ð 6Ø.;ð 6ð ¥'Ô"2Ò2Ð2¸=Ð2Ø¥'¤/Ò1Ð1¸-Ð1ð
 $(�Ô àð 	/ð ×,Ò,Ñ.Ô.ñØ”˜~Ñ.Ø”˜~Ñ.ð ð 	Ôð !ˆÔõ �t”y ,Ñ/Ô/ð 	GµwØŒI�~ñ8
ô 8
ð 	Gð (,Ô'DˆDÔ$Ð$Ð$à'+Ô'FˆDÔ$Ð$Ð$r#   c                ó"   — d| j         j        › d�S )Nz<_ClassBuilder(cls=z)>)rì   r&   r   s    r!   r"   z_ClassBuilder.__repr__õ  s   € Ø; T¤YÔ%7Ð;Ð;Ð;Ð;r#   r[   r\   c                ó  — d                      d„ | j        D ¦   «         ¦  «        }i }| j        D ]\  }}}|                     |¦  «         Œt          |t	          | j        d¦  «        |¦  «        }| j        D ]\  }}} || j        |¦  «         ŒdS )z=
        Evaluate any registered snippets in one go.
        rë   c                ó   — g | ]
}|d          ‘ŒS )r   r   )r²   Úsnippets     r!   rÇ   z0_ClassBuilder._eval_snippets.<locals>.<listcomp>ü  s   € ÐLÐLÐL¨7˜G AœJÐLÐLÐLr#   ÚmethodsN)rÔ   r  Úupdaterr   rï   rì   r  )r    rT   rV   Ú_Úsnippet_globsrX   Úhooks          r!   Ú_eval_snippetsz_ClassBuilder._eval_snippetsø  s¹   € ð —’ÐLÐL°dÔ6KÐLÑLÔLÑMÔMˆØˆØ#'Ô#8ð 	(ð 	(ÑˆAˆ}˜aØ�LŠL˜Ñ'Ô'Ð'Ð'å%ØÝ% d¤i°Ñ;Ô;Øñ
ô 
ˆð Ô/ð 	'ð 	'‰JˆAˆq�$ØˆD�” Ñ&Ô&Ð&Ð&ð	'ð 	'r#   c                ó$  — |                       ¦   «          | j        du r|                      ¦   «         }n/|                      ¦   «         }t          rt          j        |¦  «        }t          |dd¦  «        rd|j        vr| 	                    ¦   «          |S )zƒ
        Finalize class based on the accumulated configuration.

        Builder cannot be used after calling this method.
        TÚ__attrs_init_subclass__N)
rG  r  Ú_create_slots_classÚ_patch_original_classr   ÚabcÚupdate_abstractmethodsr�   r’   rI  )r    r“   s     r!   Úbuild_classz_ClassBuilder.build_class
  sš   € ð 	×ÒÑÔÐØŒ;˜$ÐÐØ×*Ò*Ñ,Ô,ˆCˆCà×,Ò,Ñ.Ô.ˆCÝð 6ÝÔ0°Ñ5Ô5�õ
 �CÐ2°DÑ9Ô9ð	*à)°´Ð=Ð=à×'Ò'Ñ)Ô)Ð)àˆ
r#   c                óÌ  — | j         }| j        }| j        rl| j        D ]d}||vr^t	          ||t
          ¦  «        t
          urAt          j        t          ¦  «        5  t          ||¦  «         ddd¦  «         n# 1 swxY w Y   Œe| j
                             ¦   «         D ]\  }}t          |||¦  «         Œ| j        s+t	          |dd¦  «        rd|_        | j        st           |_        |S )zA
        Apply accumulated methods and return the class.
        NÚ__attrs_own_setattr__F)rì   r  r  r  r�   Ú	_SENTINELÚ
contextlibÚsuppressÚAttributeErrorÚdelattrr  rÓ   Úsetattrr  rP  r  rØ   rû   )r    r“   Ú
base_namesrž   rý   s        r!   rK  z#_ClassBuilder._patch_original_class"  sL  € ð ŒiˆØÔ%ˆ
ð Ôð 
	+ØÔ(ð 	+ð 	+�à 
Ð*Ð*Ý  T­9Ñ5Ô5½YÐFÐFõ
 $Ô,­^Ñ<Ô<ð +ð +Ý  TÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +øð  œ>×/Ò/Ñ1Ô1ð 	&ð 	&‰KˆD�%Ý�C˜˜uÑ%Ô%Ð%Ð%ð Ô&ð 	/­7ØÐ(¨%ñ,
ô ,
ð 	/ð ).ˆCÔ%àÔ+ð /Ý".�”àˆ
s   ÁA6Á6A:	Á=A:	c           	     ó8  ‡ ‡‡‡‡— ˆ fd„‰ j                              ¦   «         D ¦   «         }‰ j        sBd|d<   ‰ j        s6‰ j        j        D ])Š‰j                             dd¦  «        rt          |d<    nŒ*i }d}‰ j        j	        dd…         D ]OŠ‰j                             dd¦  «        �d	}| 
                    ˆfd
„t          ‰dg ¦  «        D ¦   «         ¦  «         ŒPt          ‰ j        ¦  «        Š‰ j        }‰ j        r#dt          ‰ j        dd¦  «        vrd|vr|s|dz  }d„ |                     ¦   «         D ¦   «         }g }|rÂt!          ‰ j        ¦  «        }|                     ¦   «         D ]T\  }}	||fz  }||= |                     |	¦  «         t%          j        |	¦  «        j        }
|
t$          j        j        ur|
||<   ŒU|                     d¦  «        }|�|                     |¦  «         t/          ||‰ j        ¦  «        |d<   ˆfd„|D ¦   «         Šˆfd„|                     ¦   «         D ¦   «         Šˆfd„‰D ¦   «         Š| 
                    ‰¦  «         ‰ j        r‰                     t2          ¦  «         t5          ‰¦  «        |d<   ‰ j        j        |d<    t9          ‰ j        ¦  «        ‰ j        j        ‰ j        j        |¦  «        }t=          j        |j                              ¦   «         |¦  «        D ]¢}tC          |tD          tF          f¦  «        rt          |j$        dd¦  «        }n=tC          |tJ          ¦  «        rt          |j&        dd¦  «        }nt          |dd¦  «        }|sŒu|D ]*}	 |j'        ‰ j        u }|r||_'        Œ# tP          $ r Y Œ'w xY wŒ£|S )zL
        Build and return a new class with a `__slots__` attribute.
        c                óV   •— i | ]%\  }}|g t          ‰j        ¦  «        ¢d ‘d‘R v¯"||“Œ&S )r’   Ú__weakref__)rL   r  )r²   ÚkÚvr    s      €r!   ú
<dictcomp>z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>J  sR   ø€ ð 
ð 
ð 
á��1ØÐM�% Ô 0Ñ1Ô1ÐM°:ÐM¸}ÐMÐMÐMÐMð ˆqàMÐMÐMr#   FrP  rû   r
   rf   rZ  NTc                ó2   •— i | ]}|t          ‰|¦  «        “ŒS r   ©r�   )r²   rž   r¦   s     €r!   r]  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>i  s5   ø€ ð ð ð àð �' (¨DÑ1Ô1ðð ð r#   Ú	__slots__r   )rZ  c                óN   — i | ]"\  }}t          |t          ¦  «        ¯||j        “Œ#S r   )rJ   r   Úfunc)r²   rž   Úcached_props      r!   r]  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>z  sA   € ð 
ð 
ð 
á!��kÝ˜+¥Ñ7Ô7ð
Ø�+Ô"ð
ð 
ð 
r#   rí   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r²   rž   rW  s     €r!   rÇ   z5_ClassBuilder._create_slots_class.<locals>.<listcomp>™  s#   ø€ ÐGÐGÐG˜t°¸JÐ0FÐ0F�dÐ0FÐ0FÐ0Fr#   c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   )r²   ÚslotÚslot_descriptorÚ
slot_namess      €r!   r]  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>Ÿ  s4   ø€ ð 
ð 
ð 
á%��oØ�zÐ!Ð!ð �/à!Ð!Ð!r#   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r²   rž   Úreused_slotss     €r!   rÇ   z5_ClassBuilder._create_slots_class.<locals>.<listcomp>¤  s#   ø€ ÐNÐNÐN˜t°TÀÐ5MÐ5M�dÐ5MÐ5MÐ5Mr#   r(   Ú__closure__))r  rÓ   r  r  rì   Ú	__bases__r’   r·   rØ   rœ   rC  r�   r¡   r  r  r  r   r    r'  r(  Úreturn_annotationÚ	ParameterÚemptyró   r  Ú_HASH_CACHE_FIELDrL   r(   r3   r&   Ú	itertoolsÚchainÚvaluesrJ   ÚclassmethodÚstaticmethodÚ__func__r|   ÚfgetÚcell_contentsrG   )r    rº   Úexisting_slotsÚweakref_inheritedÚnamesrè   Ú&additional_closure_functions_to_updateÚclass_annotationsrž   rb  Ú
annotationrê   r“   ÚitemÚclosure_cellsÚcellÚmatchr¦   rW  rj  rh  s   `                @@@@r!   rJ  z!_ClassBuilder._create_slots_classF  s“  øøøøø€ ð
ð 
ð 
ð 
àœ×,Ò,Ñ.Ô.ð
ñ 
ô 
ˆð Ô&ð 	Ø*/ˆBÐ&Ñ'àÔ+ð Ø $¤	Ô 3ð ð �HØÔ(×,Ò,Ð-DÀeÑLÔLð Ý,8˜˜=Ñ)Ø˜ðð ˆØ!ÐØœ	Ô)¨!¨B¨$Ô/ð 	ð 	ˆHØÔ ×$Ò$ ]°DÑ9Ô9ÐEØ$(Ð!Ø×!Ò!ðð ð ð å '¨°+¸rÑ BÔ Bðñ ô ñô ð ð õ ˜Ô)Ñ*Ô*ˆ
àÔ ˆàÔð	&à¥W¨T¬Y¸ÀRÑ%HÔ%HÐHÐHØ UÐ*Ð*Ø%ð +ð Ð%Ñ%ˆEð
ð 
à%'§X¢X¡Z¤Zð
ñ 
ô 
Ðð 24Ð.Øð 	Ý 0°´Ñ ;Ô ;ÐØ/×5Ò5Ñ7Ô7ð 9ð 9‘
��dà˜$˜Ñ �à�t�HØ6×=Ò=¸dÑCÔCÐCÝ$Ô.¨tÑ4Ô4ÔF�
Ø¥WÔ%6Ô%<Ð<Ð<Ø.8Ð% dÑ+øà!Ÿvšv mÑ4Ô4ÐØÐ+Ø6×=Ò=Ð>NÑOÔOÐOå =Ø!Ð#3°T´Yñ!ô !ˆBˆ}Ñð HÐGÐGÐG uÐGÑGÔGˆ
ð
ð 
ð 
ð 
à)7×)=Ò)=Ñ)?Ô)?ð
ñ 
ô 
ˆð
 OÐNÐNÐN zÐNÑNÔNˆ
Ø
�	Š	�,ÑÔÐØÔð 	1Ø×ÒÕ/Ñ0Ô0Ð0å 
Ñ+Ô+ˆˆ;‰à!œYÔ3ˆˆ>Ñð �d�4”9‰oŒo˜dœiÔ0°$´)Ô2EÀrÑJÔJˆõ ”OØŒL×ÒÑ!Ô!Ð#Iñ
ô 
ð 	1ð 	1ˆDõ ˜$¥­lÐ ;Ñ<Ô<ð 	Cõ !(¨¬°}ÀdÑ KÔ K��Ý˜D¥(Ñ+Ô+ð Cõ !(¨¬	°=À$Ñ GÔ G��å '¨¨m¸TÑ BÔ B�à ð ØØ%ð 1ð 1�ð1Ø Ô.°$´)Ð;�Eð
 ð 1Ø-0˜Ô*øøõ "ð ð ð à�Dðøøøð1ð ˆ
s   Í1N	Î	
NÎNc                óŠ   ‡ — t          ‰ j        |¦  «        \  }}ˆ fd„}‰ j                             |||f¦  «         d‰ _        ‰ S )Nc                óD   •— ‰                      |d         ¦  «        | d<   d S )Nr"   ©r
  ©Úcls_dictrV   r    s     €r!   Ú_attach_reprz,_ClassBuilder.add_repr.<locals>._attach_reprÔ  s&   ø€ Ø#'×#;Ò#;¸EÀ*Ô<MÑ#NÔ#NˆH�ZÑ Ð Ð r#   T)Ú_make_repr_scriptr  r  r    r  )r    ÚnsrT   rV   rˆ  s   `    r!   Úadd_reprz_ClassBuilder.add_reprÑ  sc   ø€ Ý)¨$¬+°rÑ:Ô:‰ˆ�ð	Oð 	Oð 	Oð 	Oð 	Oð 	Ô×$Ò$ f¨e°\Ð%BÑCÔCÐCØˆÔØˆr#   c                óv   — | j         sd}t          |¦  «        ‚d„ }|                      |¦  «        | j        d<   | S )Nz3__str__ can only be generated if a __repr__ exists.c                ó*   — |                       ¦   «         S r/   ©r"   r   s    r!   Ú__str__z&_ClassBuilder.add_str.<locals>.__str__à  s   € Ø—=’=‘?”?Ð"r#   r�  )r  rG   r
  r  )r    rQ   r�  s      r!   Úadd_strz_ClassBuilder.add_strÛ  sN   € ØÔð 	"ØGˆCÝ˜S‘/”/Ð!ð	#ð 	#ð 	#ð %)×$<Ò$<¸WÑ$EÔ$EˆŒ�yÑ!Øˆr#   c                ón   ‡‡— t          d„ | j        D ¦   «         ¦  «        Šˆfd„}| j        Šˆˆfd„}||fS )zF
        Create custom __setstate__ and __getstate__ methods.
        c              3  ó&   K  — | ]}|d k    ¯|V — ŒdS )rZ  Nr   )r²   Úans     r!   r¿   z8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>ë  s5   è è € ð !
ð !
Ø¨R°=Ò-@Ð-@ˆBÐ-@Ð-@Ð-@Ð-@ð!
ð !
r#   c                ó"   •‡ — ˆ fd„‰D ¦   «         S )ú9
            Automatically created by attrs.
            c                ó2   •— i | ]}|t          ‰|¦  «        “ŒS r   r_  ©r²   rž   r    s     €r!   r]  zQ_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate.<locals>.<dictcomp>ó  s%   ø€ ÐKÐKÐK°$�D�' $¨Ñ-Ô-ÐKÐKÐKr#   r   )r    Ústate_attr_namess   `€r!   Úslots_getstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstateï  s"   øø€ ð LÐKÐKÐKÐ:JÐKÑKÔKÐKr#   c                ó  •— t                                | ¦  «        }t          |t          ¦  «        r#t	          ‰|¦  «        D ]\  }} |||¦  «         Œn‰D ]}||v r ||||         ¦  «         Œ‰r |t
          d¦  «         dS dS )r•  N)rØ   rÙ   rJ   rL   Úziprp  )r    ÚstateÚ_ClassBuilder__bound_setattrrž   rý   Úhash_caching_enabledr˜  s        €€r!   Úslots_setstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate÷  sÂ   ø€ õ +×2Ò2°4Ñ8Ô8ˆOÝ˜%¥Ñ'Ô'ð ;õ $'Ð'7¸Ñ#?Ô#?ð 1ð 1‘K�D˜%Ø#�O D¨%Ñ0Ô0Ð0Ð0ð1ð -ð ;ð ;�DØ˜u�}�}Ø'˜¨¨e°D¬kÑ:Ô:Ð:øð $ð 9Ø�Õ 1°4Ñ8Ô8Ð8Ð8Ð8ð9ð 9r#   )rL   r  r  )r    r™  rŸ  rž  r˜  s      @@r!   r-  z%_ClassBuilder._make_getstate_setstateæ  s‰   øø€ õ
 !ð !
ð !
ØÔ)ð!
ñ !
ô !
ñ 
ô 
Ðð	Lð 	Lð 	Lð 	Lð 	Lð  $Ô/Ðð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð, ˜~Ð-Ð-r#   c                ó   — d | j         d<   | S ©NÚ__hash__)r  r   s    r!   Úmake_unhashablez_ClassBuilder.make_unhashable  s   € Ø%)ˆŒ�zÑ"Øˆr#   c                ó¢   ‡ — t          ‰ j        ‰ j        ‰ j        ‰ j        ¬¦  «        \  }}dˆ fd„}‰ j                             |||f¦  «         ‰ S )	N©r2  r5  r‡  r%  rX   r[   r\   c                óD   •— ‰                      |d         ¦  «        | d<   d S r¡  r…  )r‡  rX   r    s     €r!   Úattach_hashz+_ClassBuilder.add_hash.<locals>.attach_hash  s&   ø€ Ø#'×#;Ò#;¸DÀÔ<LÑ#MÔ#MˆH�ZÑ Ð Ð r#   )r‡  r%  rX   r%  r[   r\   )Ú_make_hash_scriptrì   r  r  r  r  r    )r    rT   rV   r§  s   `   r!   Úadd_hashz_ClassBuilder.add_hash  sy   ø€ Ý)ØŒIØŒKØ”<ØÔ'ð	
ñ 
ô 
‰ˆ�ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ô×$Ò$ f¨e°[Ð%AÑBÔBÐBàˆr#   c                óü   ‡ ‡— t          ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j	        ‰ j
        ‰ j        d¬¦  «        \  }}Šˆˆ fd„}‰ j                             |||f¦  «         ‰ S )NF©Ú
attrs_initc                óV   •— |d         }‰|_         ‰                     |¦  «        | d<   d S )Nr=  ©rˆ   r
  ©r‡  rV   r;   r   r    s      €€r!   Ú_attach_initz,_ClassBuilder.add_init.<locals>._attach_init2  s3   ø€ Ø˜Ô$ˆDØ#.ˆDÔ Ø#'×#;Ò#;¸DÑ#AÔ#AˆH�ZÑ Ð Ð r#   ©Ú_make_init_scriptrì   r  r  r  r  r  r  r  r  r  r  r  r    )r    rT   rV   r°  r   s   `   @r!   Úadd_initz_ClassBuilder.add_init"  s¨   øø€ Ý%6ØŒIØŒKØÔØÔ#ØÔØŒLØŒKØÔØÔØŒLØÔØð&
ñ &
ô &
Ñ"ˆ��{ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð
 	Ô×$Ò$ f¨e°\Ð%BÑCÔCÐCàˆr#   c                óB   — |                       d„ ¦  «        | j        d<   | S )Nc                ó   — t          | fi |¤ŽS r/   rÏ   )r    r  s     r!   r»   z+_ClassBuilder.add_replace.<locals>.<lambda>=  s   € ¥F¨4Ð$;Ð$;°7Ð$;Ð$;€ r#   Ú__replace__)r
  r  r   s    r!   Úadd_replacez_ClassBuilder.add_replace;  s+   € Ø(,×(@Ò(@Ø;Ð;ñ)
ô )
ˆŒ�}Ñ%ð ˆr#   c                óR   — t          d„ | j        D ¦   «         ¦  «        | j        d<   d S )Nc              3  ó@   K  — | ]}|j         ¯	|j        °|j        V — Œd S r/   )r;   r>   rž   )r²   Úfields     r!   r¿   z/_ClassBuilder.add_match_args.<locals>.<genexpr>B  sL   è è € ð 1
ð 1
àØŒzð1
ð #(¤-ð1
ØŒJð1
ð 1
ð 1
ð 1
ð 1
ð 1
r#   Ú__match_args__)rL   r  r  r   s    r!   Úadd_match_argsz_ClassBuilder.add_match_argsA  s=   € Ý+0ð 1
ð 1
àœð1
ñ 1
ô 1
ñ ,
ô ,
ˆŒÐ'Ñ(Ð(Ð(r#   c                óü   ‡ ‡— t          ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j	        ‰ j
        ‰ j        d¬¦  «        \  }}Šˆˆ fd„}‰ j                             |||f¦  «         ‰ S )NTr«  c                óV   •— |d         }‰|_         ‰                     |¦  «        | d<   d S )NÚ__attrs_init__r®  r¯  s      €€r!   Ú_attach_attrs_initz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initX  s5   ø€ ØÐ)Ô*ˆDØ#.ˆDÔ Ø)-×)AÒ)AÀ$Ñ)GÔ)GˆHÐ%Ñ&Ð&Ð&r#   r±  )r    rT   rV   rÀ  r   s   `   @r!   Úadd_attrs_initz_ClassBuilder.add_attrs_initH  s©   øø€ Ý%6ØŒIØŒKØÔØÔ#ØÔØŒLØŒKØÔØÔØŒLØÔØð&
ñ &
ô &
Ñ"ˆ��{ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hð
 	Ô×$Ò$ f¨eÐ5GÐ%HÑIÔIÐIàˆr#   c                óœ   ‡ — ‰ j         }t          ‰ j        ¦  «        \  }}ˆ fd„}‰ j                             |||f¦  «         t
          |d<   ‰ S )Nc                óD   •— ‰                      |d         ¦  «        | d<   d S )NÚ__eq__r…  r†  s     €r!   Ú
_attach_eqz(_ClassBuilder.add_eq.<locals>._attach_eqf  s%   ø€ Ø!%×!9Ò!9¸%À¼/Ñ!JÔ!JˆH�XÑÐÐr#   Ú__ne__)r  Ú_make_eq_scriptr  r  r    rÆ  )r    rº   rT   rV   rÅ  s   `    r!   Úadd_eqz_ClassBuilder.add_eqa  si   ø€ ØŒ^ˆå'¨¬Ñ4Ô4‰ˆ�ð	Kð 	Kð 	Kð 	Kð 	Kð 	Ô×$Ò$ f¨e°ZÐ%@ÑAÔAÐAåˆˆ8‰àˆr#   c                ó„   ‡ — ‰ j         }ˆ fd„t          ‰ j        ‰ j        ¦  «        D ¦   «         \  |d<   |d<   |d<   |d<   ‰ S )Nc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r/   r…  )r²   Úmethr    s     €r!   r¿   z*_ClassBuilder.add_order.<locals>.<genexpr>r  sM   øè è € ð B
ð B
àð ×$Ò$ TÑ*Ô*ðB
ð B
ð B
ð B
ð B
ð B
r#   Ú__lt__Ú__le__Ú__gt__Ú__ge__)r  Ú_make_orderrì   r  )r    rº   s   ` r!   Ú	add_orderz_ClassBuilder.add_ordero  sg   ø€ ØŒ^ˆðB
ð B
ð B
ð B
å# D¤I¨t¬{Ñ;Ô;ðB
ñ B
ô B
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr#   c                ó  ‡— i Š| j         D ],}|j        p| j        }|r|t          j        ur||f‰|j        <   Œ-‰s| S | j        rd}t          |¦  «        ‚ˆfd„}d| j        d<   |  	                    |¦  «        | j        d<   d| _
        | S )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                ó‚   •— 	 ‰|         \  }} || ||¦  «        }n# t           $ r |}Y nw xY wt          | ||¦  «         d S r/   )ÚKeyErrorrØ   )r    rž   Úvalr§   rF  ÚnvalÚsa_attrss         €r!   rû   z._ClassBuilder.add_setattr.<locals>.__setattr__‰  sl   ø€ ð*Ø" 4œ.‘��4ð �t˜D ! SÑ)Ô)��øõ ð ð ð Ø���ðøøøõ
 ˜˜t TÑ*Ô*Ð*Ð*Ð*s   ƒ œ+ª+TrP  rû   )r  rC   r  r   ÚNO_OPrž   r  rG   r  r
  r  )r    r§   rC   rQ   rû   r×  s        @r!   Úadd_setattrz_ClassBuilder.add_setattry  sÅ   ø€ ØˆØ”ð 	1ð 	1ˆAØœÐ9¨Ô)9ˆJØð 1˜jµ´Ð=Ð=Ø#$ j =�˜œÑ øàð 	ØˆKàÔ#ð 	"àKˆCÝ˜S‘/”/Ð!ð	+ð 	+ð 	+ð 	+ð 	+ð 37ˆŒÐ.Ñ/Ø(,×(@Ò(@ÀÑ(MÔ(MˆŒ�}Ñ%Ø"&ˆÔàˆr#   Úmethodr   c                óˆ   — | j         j        |_        | j         j        › d|j        › �|_        d| j         j        › d�|_        |S )z@
        Add __module__ and __qualname__ to a *method*.
        r½   ú$Method generated by attrs for class )rì   r'   r(   r&   r)   ©r    rÚ  s     r!   r0  z(_ClassBuilder._add_method_dunders_unsafe™  sR   € ð !œIÔ0ˆÔà!%¤Ô!7ÐKÐK¸&¼/ÐKÐKˆÔð M°4´9Ô3IÐLÐLÐLð 	Œð ˆr#   c                ó®  — t          j        t          ¦  «        5  | j        j        |_        ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  | j        j        › d|j        › �|_        ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d| j        j        › d�|_        ddd¦  «         n# 1 swxY w Y   |S )zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr½   rÜ  )rR  rS  rT  rì   r'   r(   r&   r)   rÝ  s     r!   r/  z&_ClassBuilder._add_method_dunders_safe§  s¤  € õ Ô ¥Ñ0Ô0ð 	5ð 	5Ø $¤	Ô 4ˆFÔð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ Ô ¥Ñ0Ô0ð 	Pð 	PØ%)¤YÔ%;Ð"OÐ"O¸f¼oÐ"OÐ"OˆFÔð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Põ Ô ¥Ñ0Ô0ð 	^ð 	^Ø]ÀDÄIÔDZÐ]Ð]Ð]ˆFŒNð	^ð 	^ð 	^ñ 	^ô 	^ð 	^ð 	^ð 	^ð 	^ð 	^ð 	^øøøð 	^ð 	^ð 	^ð 	^ð ˆs0   š8¸<¿<ÁBÂBÂBÂ(C
Ã
CÃCN)r“   r3   )r[   r\   )rÚ  r   r[   r   )r&   r'   r(   r)   r`  r=  r"   rG  rN  rK  rJ  r‹  r�  r-  r£  r©  r³  r·  r¼  rÁ  rÈ  rÑ  rÙ  r0  r/  r   r#   r!   r	  r	  m  su  € € € € € ðð ð€Ið0iGð iGð iGð iGðV<ð <ð <ð'ð 'ð 'ð 'ð$ð ð ð0"ð "ð "ðHIð Ið IðVð ð ð	ð 	ð 	ð'.ð '.ð '.ðRð ð ðð ð ðð ð ð2ð ð ð
ð 
ð 
ðð ð ð2ð ð ðð ð ðð ð ð@ð ð ð ðð ð ð ð ð r#   r	  c                ó¨   — | �&t          |du|duf¦  «        rd}t          |¦  «        ‚| �| | fS |€|}|€|}|du r|du rd}t          |¦  «        ‚||fS )úš
    Validate the combination of *cmp*, *eq*, and *order*. Derive the effective
    values of eq and order.  If *eq* is None, set it to *default_eq*.
    Nú&Don't mix `cmp` with `eq' and `order`.FTú-`order` can only be True if `eq` is True too.©ÚanyrG   )r9   r?   rA   Ú
default_eqrQ   s        r!   Ú_determine_attrs_eq_orderræ  ·  s†   € ð
 €�3 ¨$ °¸TÐ0AÐBÑCÔC€Ø6ˆÝ˜‰oŒoÐð €Ø�Cˆxˆð 
€zØˆà€}Øˆà	ˆU€{€{�u �}�}Ø=ˆÝ˜‰oŒoÐàˆuˆ9Ðr#   c                ó  — | �&t          |du|duf¦  «        rd}t          |¦  «        ‚d„ }| � || ¦  «        \  } }| || |fS |€|d}}n ||¦  «        \  }}|€||}}n ||¦  «        \  }}|du r|du rd}t          |¦  «        ‚||||fS )rà  Nrá  c                ó6   — t          | ¦  «        rd| }} nd}| |fS )z8
        Decide whether a key function is used.
        TN)rH   )rý   r¼   s     r!   Údecide_callable_or_booleanz>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanÜ  s,   € õ �E‰?Œ?ð 	Ø˜u�3ˆEˆEàˆCØ�cˆzÐr#   FTrâ  rã  )	r9   r?   rA   rå  rQ   ré  Úcmp_keyr@   rB   s	            r!   rE   rE   Ó  sé   € ð
 €�3 ¨$ °¸TÐ0AÐBÑCÔC€Ø6ˆÝ˜‰oŒoÐðð ð ð €Ø1Ð1°#Ñ6Ô6‰ˆˆWØ�G˜S 'Ð)Ð)ð 
€zØ ˆFˆˆà/Ð/°Ñ3Ô3‰
ˆˆFà€}Ø˜vˆyˆˆà5Ð5°eÑ<Ô<Ñˆˆyà	ˆU€{€{�u �}�}Ø=ˆÝ˜‰oŒoÐàˆv�u˜iÐ'Ð'r#   c                óZ   — |du s|du r|S |€|du r|S |D ]}t          | |¦  «        r dS Œ|S )ap  
    Check whether we should implement a set of methods for *cls*.

    *flag* is the argument passed into @attr.s like 'init', *auto_detect* the
    same as passed into @attr.s and *dunders* is a tuple of attribute names
    whose presence signal that the user has implemented it themselves.

    Return *default* if no reason for either for or against is found.
    TF)r•   )r“   ÚflagÚauto_detectÚdundersr6   Údunders         r!   Ú_determine_whether_to_implementrð  þ  sd   € ð ˆt€|€|�t˜u�}�}Øˆà€|˜ uÐ,Ð,Øˆð ð ð ˆÝ˜c 6Ñ*Ô*ð 	Ø�5�5ð	ð €Nr#   c                óV  ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡— ‰�(ddl }|                     t          d¦  «        d¬¦  «         t          |||d¦  «        \  ŠŠ|�|Št	          ‰t
          t          f¦  «        rt          j        ‰Ž Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ
ˆˆ	fd„}| €|S  || ¦  «        S )aö  
    A class decorator that adds :term:`dunder methods` according to the
    specified attributes using `attr.ib` or the *these* argument.

    Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will
    *never* go away, though).

    Args:
        repr_ns (str):
            When using nested classes, there was no way in Python 2 to
            automatically detect that.  This argument allows to set a custom
            name for a more meaningful ``repr`` output.  This argument is
            pointless in Python 3 and is therefore deprecated.

    .. caution::
        Refer to `attrs.define` for the rest of the parameters, but note that they
        can have different defaults.

        Notably, leaving *on_setattr* as `None` will **not** add any hooks.

    .. versionadded:: 16.0.0 *slots*
    .. versionadded:: 16.1.0 *frozen*
    .. versionadded:: 16.3.0 *str*
    .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``.
    .. versionchanged:: 17.1.0
       *hash* supports `None` as value which is also the default now.
    .. versionadded:: 17.3.0 *auto_attribs*
    .. versionchanged:: 18.1.0
       If *these* is passed, no attributes are deleted from the class body.
    .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained.
    .. versionadded:: 18.2.0 *weakref_slot*
    .. deprecated:: 18.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a
       `DeprecationWarning` if the classes compared are subclasses of
       each other. ``__eq`` and ``__ne__`` never tried to compared subclasses
       to each other.
    .. versionchanged:: 19.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider
       subclasses comparable anymore.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionadded:: 18.2.0 *cache_hash*
    .. versionadded:: 19.1.0 *auto_exc*
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *auto_detect*
    .. versionadded:: 20.1.0 *collect_by_mro*
    .. versionadded:: 20.1.0 *getstate_setstate*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionadded:: 20.3.0 *field_transformer*
    .. versionchanged:: 21.1.0
       ``init=False`` injects ``__attrs_init__``
    .. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__``
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 21.3.0 *match_args*
    .. versionadded:: 22.2.0
       *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
    .. deprecated:: 24.1.0 *repr_ns*
    .. versionchanged:: 24.1.0
       Instances are not compared as tuples of attributes anymore, but using a
       big ``and`` condition. This is faster and has more correct behavior for
       uncomparable values like `math.nan`.
    .. versionadded:: 24.1.0
       If a class has an *inherited* classmethod called
       ``__attrs_init_subclass__``, it is executed after the class is created.
    .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*.
    Nr   zQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é   )Ú
stacklevelc                ó  •— ‰pt          | ¦  «        }‰	du ot          | t          ¦  «        }‰ot          | d¦  «        }|r|rd}t	          |¦  «        ‚t          | ‰‰|‰t          | ‰‰d‰¬¦  «        ‰‰‰
|‰‰|‰¦  «        }t          | ‰‰d¦  «        r|                     ‰¦  «         ‰du r|                     ¦   «          t          | ‰‰d¦  «        }|s|du r| 	                    ¦   «          |s&t          | ‰‰d¦  «        r| 
                    ¦   «          ‰s|                     ¦   «          ‰€‰du rt          | d	¦  «        rd
Š‰dur‰d
ur‰�d}t          |¦  «        ‚‰d
u s‰€|d
u s|r‰
rd}t          |¦  «        ‚nJ‰du s
‰€|du r|du r|                     ¦   «          n'‰
rd}t          |¦  «        ‚|                     ¦   «          t          | ‰‰d¦  «        r|                     ¦   «          n'|                     ¦   «          ‰
rd}t          |¦  «        ‚t"          r$t          | d¦  «        s|                     ¦   «          t&          r&‰r$t          | d¦  «        s|                     ¦   «          |                     ¦   «         S )NTrû   z/Can't freeze a class with a custom __setattr__.)r#  r$  )r6   rŽ  )rÄ  rÆ  )rÌ  rÍ  rÎ  rÏ  r¢  Fr5   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.©r=  zFInvalid value for cache_hash.  To use hash caching, init must be True.r¶  r»  )Ú_has_frozen_base_classÚ
issubclassrú   r•   rG   r	  rð  r‹  r�  rÈ  rÑ  rÙ  rF   r©  r£  r³  rÁ  r   r·  r   r¼  rN  )r“   Ú	is_frozenr6  Úhas_own_setattrrQ   Úbuilderr?   rÜ   rí  Úauto_excr5  rÝ   Úeq_rÞ   r2  r4  r:   r;   r>   Ú
match_argsrC   Úorder_r8   Úrepr_nsr1  rU   rÛ   r3  s          €€€€€€€€€€€€€€€€€€€€€r!   Úwrapzattrs.<locals>.wrap‡  sp  ø€ ØÐ9Õ4°SÑ9Ô9ˆ	Ø˜TÐ!ÐD¥j°µmÑ&DÔ&DˆØ%ð 
Õ*<Ø�ñ+
ô +
ˆð ð 	"˜yð 	"ØCˆCÝ˜S‘/”/Ð!åØØØØØÝ+ØØ!ØØ0Øðñ ô ð ØØØØØØØñ)
ô 
ˆõ. +Ø��{ Mñ
ô 
ð 	&ð ×Ò˜WÑ%Ô%Ð%à�$ˆ;ˆ;Ø�OŠOÑÔÐå,Ø��kÐ#7ñ
ô 
ˆð ð 	˜" ˜*˜*Ø�NŠNÑÔÐØð 	 Õ9Ø�˜Ð&Nñ
ô 
ð 	 ð ×ÒÑÔÐàð 	"Ø×ÒÑ!Ô!Ð!ð ˆLØ˜tÐ#Ð#Ý" 3¨
Ñ3Ô3ð $ð ˆDà�tÐÐ ¨EÐ 1Ð 1°dÐ6FàJˆCÝ˜C‘.”.Ð à�5ˆ=ˆ=˜T˜\¨b°E¨k¨k¸f¨kð ð %ð E�Ý ‘n”nÐ$ð%ð �Tˆ\ˆ\ØˆL˜R 4˜Z˜Z¨I¸Ð,=Ð,=ð ×ÒÑÔÐÐð ð %ð E�Ý ‘n”nÐ$Ø×#Ò#Ñ%Ô%Ð%å*Ø��{ Mñ
ô 
ð 	%ð ×ÒÑÔÐÐà×"Ò"Ñ$Ô$Ð$Øð %Ø^�Ý ‘n”nÐ$åð 	"Õ 2°3¸Ñ FÔ Fð 	"Ø×ÒÑ!Ô!Ð!õ ð	%àð	%õ ' sÐ,<Ñ=Ô=ð	%ð
 ×"Ò"Ñ$Ô$Ð$à×"Ò"Ñ$Ô$Ð$r#   )	ÚwarningsÚwarnÚDeprecationWarningræ  rJ   rK   rL   r   rM   )Ú	maybe_clsrÛ   rÿ  r8   r9   r:   r;   r1  r2  r3  rU   rÜ   r>   r5  rû  r?   rA   rí  rÝ   r4  rC   rÞ   rý  Úunsafe_hashr  r   rü  rþ  s    ``` ``````````  ``````   @@r!   rƒ   rƒ     sS  øøøøøøøøøøøøøøøøøøøøø€ ðx ÐØˆˆˆà�ŠÝØcñô ð ð	 	ñ 	
ô 	
ð 	
õ ,¨C°°U¸DÑAÔA�K€Cˆð ÐØˆå�*�t¥U˜mÑ,Ô,ð /Ý”\ :Ð.ˆ
ðj%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð j%ð\ ÐØˆàˆ4�	‰?Œ?Ðr#   c                ó   — | j         t          u S )zV
    Check whether *cls* has a frozen ancestor by looking at its
    __setattr__.
    )rû   rþ   )r“   s    r!   rö  rö    s   € ð
 Œ?Õ.Ð.Ð.r#   r“   Ú	func_namec           
     óL   — d|› d| j         › dt          | d| j        ¦  «        › d�S )zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated ú r½   r(   rh   )r'   r�   r&   )r“   r  s     r!   rï   rï   
  sF   € ð
	9˜Ið 	9ð 	9¨¬ð 	9ð 	9Ý�3˜¨¬Ñ5Ô5ð	9ð 	9ð 	9ðr#   rƒ   r„   r2  r&  r5  útuple[str, dict]c                óN  ‡‡‡	‡
‡‡— t          d„ ‰D ¦   «         ¦  «        Šd}t          t          | d¦  «        ¦  «        Ši Š	d}dŠ
dŠ|s|dz  }n|dz  }|d	z  }d
‰
z   Š
‰dz  Š|gŠˆˆˆ	ˆ
ˆˆfd„}|r�‰                     |dt          › d�z   ¦  «         |r4 |dt          › d�|dz  ¦  «         ‰                     |dz  dz   ¦  «         n |dt          › d�|dz  ¦  «         ‰                     |dt          › �z   ¦  «         n |d|¦  «         d                     ‰¦  «        }|‰	fS )Nc              3  óL   K  — | ]}|j         d u s|j         ­|j        d u ¯|V — Œ dS )TN)r:   r?   rÊ   s     r!   r¿   z$_make_hash_script.<locals>.<genexpr>  sA   è è € ð ð Ø˜AœF d˜N˜N¨q¬v¨~À!Ä$È$À,À,ˆÀ,À,À,À,ðð r#   ú        r:   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(ú)c           	     óT  •— ‰                      || z   ‰z   |d‰	› d�z   g¦  «         ‰D ]d}|j        r:d|j        › d�}|j        ‰|<   ‰                     |d|› d|j        › d�z   ¦  «         ŒC‰                     |d|j        › d�z   ¦  «         Œe‰                     |dz   ‰z   ¦  «         d	S )
zÛ
        Generate the code for actually computing the hash code.
        Below this will either be returned directly or used to compute
        a value which is then cached, depending on the value of cache_hash
        r  ú,rD  Ú_keyú(self.z),ú        self.ú    N)rî   r@   rž   r    )
ÚprefixÚindentr§   Úcmp_namerƒ   Úclosing_bracesrV   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r!   Úappend_hash_computation_linesz8_make_hash_script.<locals>.append_hash_computation_lines/  s  ø€ ð 	×Òà˜‘ )Ñ+ØÐ0 IÐ0Ð0Ð0Ñ0ðñ	
ô 	
ð 	
ð ð 	Hð 	HˆAØŒxð HØ+˜qœvÐ+Ð+Ð+�Ø"#¤(��h‘Ø×#Ò#ØÐB¨ÐBÐB¸¼ÐBÐBÐBÑBñô ð ð ð ×#Ò# FÐ-F¸Q¼VÐ-FÐ-FÐ-FÑ$FÑGÔGÐGÐGà×Ò˜F V™O¨nÑ<Ñ=Ô=Ð=Ð=Ð=r#   zif self.z	 is None:zobject.__setattr__(self, 'ú', rò  úself.ú = zreturn self.zreturn rë   )rL   r:   rï   r    rp  rÔ   )r“   rƒ   r2  r5  ÚtabÚhash_defr  rT   r  rV   r  r  r  s    `      @@@@@r!   r¨  r¨    sá  øøøøøø€ õ ð ð Øðñ ô ñ ô €Eð €CåÕ.¨s°FÑ;Ô;Ñ<Ô<€Ià€Eà"€HØ€IØ€NØð Ø�DÑˆˆà�EÑˆàÐYÑYˆØ%¨	Ñ1ˆ	Ø˜#Ñˆà�:€Lð>ð >ð >ð >ð >ð >ð >ð >ð >ð >ð4 ð 6Ø×Ò˜CÐ"IÕ->Ð"IÐ"IÐ"IÑIÑJÔJÐJØð 	Ø)Ð)ØCÕ->ÐCÐCÐCÀSÈ1ÁWñô ð ð ×Ò  a¡¨#¡Ñ.Ô.Ð.Ð.à)Ð)Ø.Õ)Ð.Ð.Ð.°°a±ñô ð ð 	×Ò˜CÐ"DÕ1BÐ"DÐ"DÑDÑEÔEÐEÐEà%Ð% i°Ñ5Ô5Ð5à�YŠY�|Ñ$Ô$€FØ�5ˆ=Ðr#   c                óŒ   — t          | |dd¬¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        | S )z%
    Add a hash method to *cls*.
    Fr¥  r¢  ©rZ   )r¨  rb   rï   r¢  ©r“   rƒ   rT   rV   s       r!   Ú	_add_hashr%  \  sc   € õ &ØˆU˜5¨Uðñ ô �M€FˆEõ Ø�Õ 9¸#¸zÑ JÔ Jðñ ô ð ð ˜Ô$€C„LØ€Jr#   c                óR   — |                       |¦  «        }|t          u rt          S | S )z^
    Check equality and either forward a NotImplemented or
    return the result negated.
    )rÄ  ÚNotImplemented)r    ÚotherÚresults      r!   rÆ  rÆ  j  s.   € ð
 �[Š[˜ÑÔ€FØ•ÐÐÝÐàˆ:Ðr#   rK   c                óò  — d„ | D ¦   «         } g d¢}i }| r¶|                      d¦  «         | D ]ˆ}|j        rBd|j        › d�}|j        ||<   |                      d|› d|j        › d|› d	|j        › d
�	¦  «         n%|                      d|j        › d|j        › �¦  «         || d         ur|d         › d�|d<   Œ‰|                      d¦  «         n|                      d¦  «         d                     |¦  «        }||fS )z6
    Create __eq__ method for *cls* with *attrs*.
    c                ó    — g | ]}|j         ¯	|‘ŒS r   )r?   rÊ   s     r!   rÇ   z#_make_eq_script.<locals>.<listcomp>z  s   € Ð&Ð&Ð&�1 ¤Ð&ˆQÐ&Ð&Ð&r#   )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (rD  r  r  r  z) == z(other.r  r  z
 == other.rf   z andz    )z    return Truerë   )r    r@   rž   rÔ   )rƒ   rð   rV   r§   r  rT   s         r!   rÇ  rÇ  v  sY  € ð 'Ð&˜Ð&Ñ&Ô&€Eðð ð €Eð €EØð (Ø�Š�_Ñ%Ô%Ð%Øð 	/ð 	/ˆAØŒxð 	IØ+˜qœvÐ+Ð+Ð+�ð #$¤(��h‘Ø—’ØV˜xÐVÐV¨q¬vÐVÐV¸HÐVÐVÈQÌVÐVÐVÐVñô ð ð ð —’ÐG¨Q¬VÐGÐG¸q¼vÐGÐGÑHÔHÐHØ˜˜bœ	Ð!Ð!Ø$ RœyÐ.Ð.Ð.��b‘	øØ�Š�WÑÔÐÐà�ŠÐ&Ñ'Ô'Ð'à�YŠY�uÑÔ€Fà�5ˆ=Ðr#   c                ó\   ‡‡— d„ ‰D ¦   «         Šˆfd„Šˆfd„}ˆfd„}ˆfd„}ˆfd„}||||fS )z9
    Create ordering methods for *cls* with *attrs*.
    c                ó    — g | ]}|j         ¯	|‘ŒS r   )rA   rÊ   s     r!   rÇ   z_make_order.<locals>.<listcomp>Ÿ  s   € Ð)Ð)Ð)�1 ¤Ð)ˆQÐ)Ð)Ð)r#   c                óP   •‡ — t          d„ ˆ fd„‰D ¦   «         D ¦   «         ¦  «        S )z&
        Save us some typing.
        c              3  ó:   K  — | ]\  }}|r ||¦  «        n|V — Œd S r/   r   )r²   rý   r¼   s      r!   r¿   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>¥  sK   è è € ð 
ð 
á��sð Ð(ˆCˆC�‰JŒJˆJ 5ð
ð 
ð 
ð 
ð 
ð 
r#   c              3  óP   •K  — | ] }t          ‰|j        ¦  «        |j        fV — Œ!d S r/   )r�   rž   rB   )r²   r§   Úobjs     €r!   r¿   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>§  sG   øè è € ð ð Ø89•˜˜aœfÑ%Ô% q¤{Ð3ðð ð ð ð ð r#   )rL   )r1  rƒ   s   `€r!   Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tuple¡  sW   øø€ õ ð 
ð 
ðð ð ð Ø=Bðñ ô ð
ñ 
ô 
ñ 
ô 
ð 	
r#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k     S t          S ©z1
        Automatically created by attrs.
        ©r°   r'  ©r    r(  r2  s     €r!   rÌ  z_make_order.<locals>.__lt__¬  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨.¨.¸Ñ*?Ô*?Ò?Ð?åÐr#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r4  r5  r6  s     €r!   rÍ  z_make_order.<locals>.__le__µ  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨>¨>¸%Ñ+@Ô+@Ò@Ð@åÐr#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r4  r5  r6  s     €r!   rÎ  z_make_order.<locals>.__gt__¾  r7  r#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r4  r5  r6  s     €r!   rÏ  z_make_order.<locals>.__ge__Ç  r9  r#   r   )r“   rƒ   rÌ  rÍ  rÎ  rÏ  r2  s    `    @r!   rÐ  rÐ  ›  s§   øø€ ð *Ð)˜Ð)Ñ)Ô)€Eð	
ð 	
ð 	
ð 	
ð 	
ðð ð ð ð ðð ð ð ð ðð ð ð ð ðð ð ð ð ð �6˜6 6Ð)Ð)r#   c                ó®   — |€| j         }t          |¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        t
          | _        | S )z5
    Add equality methods to *cls* with *attrs*.
    NrÄ  r#  )r˜   rÇ  rb   rï   rÄ  rÆ  r$  s       r!   Ú_add_eqr=  Ó  sd   € ð €}ØÔ#ˆå# EÑ*Ô*�M€FˆEÝØ�Õ 9¸#¸xÑ HÔ Hðñ ô ð ð �x”€C„JÝ€C„Jà€Jr#   c                ó¾  — t          d„ | D ¦   «         ¦  «        }d„ |D ¦   «         }t          |d<   t          |d<   t          |d<   g }|D ]H\  }}}|rd|z   nd|z   dz   }|t          k    r|›d	|›d
�n
|›d	|›d|›d�}	|                     |	¦  «         ŒId                     |¦  «        }
|€d}n|dz   }ddddddddddddd|› d|
› d�dd g}d!                     |¦  «        |fS )"zC
    Create the source and globs for a __repr__ and return it.
    c              3  óp   K  — | ]1}|j         d u¯|j        |j         du rt           n|j         |j        fV — Œ2dS )FTN)r8   rž   r;   rÊ   s     r!   r¿   z$_make_repr_script.<locals>.<genexpr>ë  sV   è è € ð "ð "àØŒ6˜ÐÐð 
Œ˜!œ& D˜.˜.•$�$¨a¬f°q´vÐ>àÐÐÐð"ð "r#   c                ó8   — i | ]\  }}}|t           k    ¯|d z   |“ŒS )Ú_repr)r8   )r²   rž   ÚrrD  s       r!   r]  z%_make_repr_script.<locals>.<dictcomp>ð  s0   € ð ð ð Ù(˜d A qÀQÍ$ÂYÀYˆˆw‰˜ÀYÀYÀYr#   r   rT  r   r  zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}rµ   Nz1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z    return f'ú(z)'z
  finally:z$    already_repring.remove(id(self))rë   )rL   r   rT  r   r8   r    rÔ   )rƒ   rŠ  Úattr_names_with_reprsrV   Úattribute_fragmentsrž   rB  ry   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrð   s                r!   r‰  r‰  ä  s�  € õ "ð "ð "àð"ñ "ô "ñ ô Ðð
ð Ø,Aðñ ô €Eõ €Eˆ)ÑÝ,€EÐ
ÑÝ€Eˆ)ÑØÐØ+ð 	-ð 	-‰
ˆˆa�àÐMˆG�d‰NˆNÐ%6¸Ñ%=ÀÑ%Mð 	ð
 •DŠyˆyð  ˜4˜4   Ð*Ð*à'+ t t¨T¨T¨T°8°8°8Ð<ð 	ð
 	×"Ò" 8Ñ,Ô,Ð,Ð,Ø—I’IÐ1Ñ2Ô2€Mà	€zØOÐÐàÐ!=Ñ=Ðð 	ØØDØ"Ø+ØDØØ-ØØØ-ØØ=Ð)Ð=Ð=¨MÐ=Ð=Ð=ØØ.ð€Eð$ �9Š9�UÑÔ˜UÐ"Ð"r#   c                ó˜   — |€| j         }t          ||¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        | S )z%
    Add a repr method to *cls*.
    Nr"   r#  )r˜   r‰  rb   rï   r"   )r“   rŠ  rƒ   rT   rV   s        r!   Ú	_add_reprrK    s`   € ð €}ØÔ#ˆå% e¨RÑ0Ô0�M€FˆEÝØ�Õ 9¸#¸zÑ JÔ Jðñ ô ð ð ˜Ô$€C„LØ€Jr#   c                óþ   — t          | ¦  «        }|€&t          | t          ¦  «        sd}t          |¦  «        ‚t	          | dd¦  «        }|€2|�t	          |dd¦  «        }|�	|| _        |S | ›d�}t          |¦  «        ‚|S )aG  
    Return the tuple of *attrs* attributes for a class.

    The tuple also allows accessing the fields by their names (see below for
    examples).

    Args:
        cls (type): Class to introspect.

    Raises:
        TypeError: If *cls* is not a class.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        tuple (with name accessors) of `attrs.Attribute`

    .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
       by name.
    .. versionchanged:: 23.1.0 Add support for generic classes.
    NúPassed object must be a class.r˜   ú! is not an attrs-decorated class.)r   rJ   r3   rF   r�   r˜   r   )r“   Úgeneric_baserQ   rƒ   s       r!   r  r  ,  sœ   € õ. $ CÑ(Ô(€LàÐ¥J¨sµDÑ$9Ô$9ÐØ.ˆÝ˜‰nŒnÐå�CÐ*¨DÑ1Ô1€Eà€}ØÐ#Ý˜LÐ*;¸TÑBÔBˆEØÐ ð ',�Ô#Ø�ØÐ9Ð9Ð9ˆÝ" 3Ñ'Ô'Ð'à€Lr#   c                ó´   — t          | t          ¦  «        sd}t          |¦  «        ‚t          | dd¦  «        }|€| ›d�}t	          |¦  «        ‚d„ |D ¦   «         S )a±  
    Return an ordered dictionary of *attrs* attributes for a class, whose keys
    are the attribute names.

    Args:
        cls (type): Class to introspect.

    Raises:
        TypeError: If *cls* is not a class.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        dict[str, attrs.Attribute]: Dict of attribute name to definition

    .. versionadded:: 18.1.0
    rM  r˜   NrN  c                ó   — i | ]
}|j         |“ŒS r   rÉ   rÊ   s     r!   r]  zfields_dict.<locals>.<dictcomp>t  s   € Ð%Ð%Ð%˜!ˆAŒF�AÐ%Ð%Ð%r#   )rJ   r3   rF   r�   r   )r“   rQ   rƒ   s      r!   Úfields_dictrR  Z  sn   € õ& �c�4Ñ Ô ð Ø.ˆÝ˜‰nŒnÐÝ�CÐ*¨DÑ1Ô1€EØ€}ØÐ9Ð9Ð9ˆÝ" 3Ñ'Ô'Ð'Ø%Ð%˜uÐ%Ñ%Ô%Ð%r#   c           	     ó¦   — t           j        du rdS t          | j        ¦  «        D ]+}|j        }|�  || |t          | |j        ¦  «        ¦  «         Œ,dS )z¬
    Validate all attributes on *inst* that have a validator.

    Leaves all exceptions through.

    Args:
        inst: Instance of a class with *attrs* attributes.
    FN)r   Ú_run_validatorsr  r°   r7   r�   rž   )r  r§   r\  s      r!   r+  r+  w  sg   € õ Ô %Ð'Ð'Øˆå�D”NÑ#Ô#ð .ð .ˆØŒKˆØˆ=ØˆAˆd�A•w˜t Q¤VÑ,Ô,Ñ-Ô-Ð-øð.ð .r#   c                óB   — |                      | ¦  «        }|od|j        v S )z>
    Check if the attribute name comes from a slot class.
    r`  )r·   r’   )Úa_namer¥   r“   s      r!   Ú_is_slot_attrrW  ‰  s)   € ð ×
Ò
˜FÑ
#Ô
#€CØÐ.�; #¤,Ð.Ð.r#   útuple[str, dict, dict]c                ón  — |
d uo|
t           j        u}|r|rd}t          |¦  «        ‚|p|}g }i }|D ]m}|j        s|j        t
          u rŒ|                     |¦  «         |||j        <   |j        �|du rd}t          |¦  «        ‚d}ŒV|r|j        t           j        urd}Œnt          |||||||||	|||rdnd¦  «        \  }}}| j
        t          j        v r/|                     t          j        | j
                 j        ¦  «         |                     t
          |dœ¦  «         |rt          j        |d<   |||fS )Nz$Frozen classes can't use on_setattr.Tr¿  r=  )r   Ú	attr_dictré   )r   rØ  rG   r;   r6   r   r    rž   rC   Ú_attrs_to_init_scriptr'   ÚsysÚmodulesrC  r’   rØ   rÙ   )r“   rƒ   Úpre_initÚpre_init_has_argsÚ	post_initr2  r1  r5  r¥   r6  Úcls_on_setattrr¬  Úhas_cls_on_setattrrQ   Úneeds_cached_setattrÚfiltered_attrsrZ  r§   rT   rV   r   s                        r!   r²  r²  ‘  s˜  € ð 	˜dÐ"ÐJ ~½W¼]Ð'Jð ð ð Ð$ð Ø4ˆÝ˜‰oŒoÐà%Ð/¨ÐØ€NØ€IØð (ð (ˆØŒvð 	˜!œ)¥wÐ.Ð.Øà×Ò˜aÑ Ô Ð Øˆ	�!”&ÑàŒ<Ð#Ø˜ˆ~ˆ~Ø<�Ý  ‘o”oÐ%à#'Ð Ð Øð 	( A¤L½¼Ð$EÐ$EØ#'Ð øå!6ØØØØØØØØØØØØ&Ð6ÐÐ¨Jñ"ô "Ñ€FˆE�;ð „~�œÐ$Ð$à�Š•S”[ ¤Ô0Ô9Ñ:Ô:Ð:à	‡L‚L�W°9Ð=Ð=Ñ>Ô>Ð>àð <õ (4Ô';ˆÐ#Ñ$à�5˜+Ð%Ð%r#   r   Ú	value_varÚhas_on_setattrc                ó   — d| › d|› d�S )zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('r  r  r   )r   re  rf  s      r!   Ú_setattrri  Ö  s   € ð 3˜	Ð2Ð2 iÐ2Ð2Ð2Ð2r#   r<   Ú	Converterc                ó<   — d| › d|                      | |¦  «        › d�S )zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    rh  r  r  )Ú_fmt_converter_call©r   re  rf  r<   s       r!   Ú_setattr_with_converterrn  Ý  s.   € ð ]˜	Ð\Ð\ i×&CÒ&CÀIÈyÑ&YÔ&YÐ\Ð\Ð\Ð\r#   rý   c                ó8   — |rt          | |d¦  «        S d| › d|› �S )zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Tr  r  )ri  )r   rý   rf  s      r!   Ú_assignrp  ç  s4   € ð
 ð 0Ý˜	 5¨$Ñ/Ô/Ð/à(�9Ð(Ð( Ð(Ð(Ð(r#   c                ób   — |rt          | |d|¦  «        S d| › d|                     | |¦  «        › �S )z�
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Tr  r  )rn  rl  rm  s       r!   Ú_assign_with_converterrr  ò  sG   € ð ð NÝ& y°)¸TÀ9ÑMÔMÐMàV�9ÐVÐV ×!>Ò!>¸yÈ)Ñ!TÔ!TÐVÐVÐVr#   r1  r¥   r†   c                ór   ‡— | du r$|du rdt           t          fS dˆfd	„}dˆfd„}d||fS dt          t          fS )zg
    Determine the correct setter functions based on whether a class is frozen
    and/or slotted.
    Tr   r   rU   re  rf  r&  r[   c                óV   •— t          | ‰¦  «        rt          | ||¦  «        S d| › d|› �S ©Nú_inst_dict['z'] = )rW  ri  )r   re  rf  r¥   s      €r!   Ú
fmt_setterz&_determine_setters.<locals>.fmt_setter  s@   ø€ õ ˜Y¨Ñ6Ô6ð FÝ 	¨9°nÑEÔEÐEà= )Ð=Ð=°)Ð=Ð=Ð=r#   r<   rj  c                ó„   •— |st          | ‰¦  «        rt          | |||¦  «        S d| › d|                     | |¦  «        › �S ru  )rW  rn  rl  )r   re  rf  r<   r¥   s       €r!   Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converter  sd   ø€ ð ð ¥¨y¸-Ñ!HÔ!Hð Ý.Ø˜y¨.¸)ñô ð ð h )ÐgÐg°)×2OÒ2OÐPYÐ[dÑ2eÔ2eÐgÐgÐgr#   )z_inst_dict = self.__dict__©r   rU   re  rU   rf  r&  r[   rU   ©
r   rU   re  rU   rf  r&  r<   rj  r[   rU   )ri  rn  rp  rr  )r2  r1  r¥   rw  ry  s     `  r!   Ú_determine_settersr|  ÿ  sŒ   ø€ ð �€~€~Ø�Dˆ=ˆ=Ø•xÕ!8Ð8Ð8ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð	hð 	hð 	hð 	hð 	hð 	hð ,ØØ%ð
ð 	
ð �wÕ.Ð.Ð.r#   rø  Ú
is_slottedÚcall_pre_initr_  Úcall_post_initÚdoes_cache_hashr6  rc  rb  Úmethod_namec           
     ó>  — |rdgng }|	r|                      d¦  «         t          |||¦  «        \  }}}|                     |¦  «         g }g }g }i }ddi}| D �]¤}|j        r|                      |¦  «         |j        }|j        dup|j        t          j        uo|
}|j        }t          |j
        t          ¦  «        }|r|j
        j        rdnd}|j        �/t          |j        t          ¦  «        st          |j        ¦  «        }n|j        }|j        du �r|r•t           |j        fz  }|�K|                       |||d|› d	�z   ||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   n'|                       |||d|› d	�z   |¦  «        ¦  «         |j
        j        ||<   �n|�I|                       ||d
|› d�||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   �nÓ|                       ||d
|› d�|¦  «        ¦  «         �n­|j
        t&          ur¥|s£|› d|› d�}|j        r|                      |¦  «         n|                      |¦  «         |�E|                       |||||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   �n|                       ||||¦  «        ¦  «         �nú|�r_|› d�}|j        r|                      |¦  «         n|                      |¦  «         |                      d|› d�¦  «         t           |j        fz  }|�‰|                      d |||||¦  «        z   ¦  «         |                      d¦  «         |                      d |||dz   |z   d	z   ||¦  «        z   ¦  «         |j        ||                     |j        ¦  «        <   nd|                      d ||||¦  «        z   ¦  «         |                      d¦  «         |                      d |||dz   |z   d	z   |¦  «        z   ¦  «         |j
        j        ||<   n˜|j        r|                      |¦  «         n|                      |¦  «         |�D|                       |||||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   n |                       ||||¦  «        ¦  «         |j        du r(|j        �|€|j        ||<   �Œ‘|�|j        r
|j        ||<   �Œ¦|rkt.          |d<   |                      d¦  «         |D ]I}d|j        z   }d|j        z   }|                      d|› d|› d|j        › d	�¦  «         |j        ||<   |||<   ŒJ|r|                      d¦  «         |r<|r|rdt0          › d�}ndt0          › d�}ndt0          › d�}|                      |¦  «         |r8d                      d!„ | D ¦   «         ¦  «        } |                      d"| › d	�¦  «         d#                     |¦  «        }|}!|rX||rd#nd› d$d#                     |¦  «        › �z  }d#                     d%„ d&„ |D ¦   «         D ¦   «         ¦  «        }"|!|!rd#ndz  }!|!|"z  }!|r|r	d'|!› d	�|d(<   d)}#d*|› d|› d+|r|#                     |¦  «        nd,› d-�||fS ).z«
    Return a script of an initializer for *attrs*, a dict of globals, and
    annotations for the initializer.

    The globals are required by the generated script.
    zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)r[   Nr    rS   FrC  r  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:r  zelse:Tr   z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()rh  z', None)rv  z	'] = Noner  z = Noner  c              3  ó8   K  — | ]}|j         ¯	d |j        › �V — ŒdS )r  N)r;   rž   rÊ   s     r!   r¿   z(_attrs_to_init_script.<locals>.<genexpr>	  s4   è è € ÐBÐB¨Q¸1¼6ÐBÐ( ¤Ð(Ð(ÐBÐBÐBÐBÐBÐBr#   zBaseException.__init__(self, rµ   z*, c                ó   — g | ]	}|› d |› �‘Œ
S )ú=r   )r²   Úkw_arg_names     r!   rÇ   z)_attrs_to_init_script.<locals>.<listcomp>	  s8   € ð ð ð ð  ð Ð.Ð. Ð.Ð.ðð ð r#   c              3  óL   K  — | ]}|                      d ¦  «        d         V — Œ dS )r‡  r   N)Úsplit)r²   Úkwas     r!   r¿   z(_attrs_to_init_script.<locals>.<genexpr>	  s1   è è € Ð#NÐ#N¸# C§I¢I¨c¡N¤N°1Ô$5Ð#NÐ#NÐ#NÐ#NÐ#NÐ#Nr#   zself.__attrs_pre_init__(r   z
    zdef z):
    Úpassrë   )r    r|  rî   r7   rž   rC   r   rØ  rD   rJ   r6   rI   Ú
takes_selfr<   rj  r;   Ú_INIT_FACTORY_PATÚ_get_global_namerP   r   r>   r3   Ú_first_param_typer   rp  rÔ   )$rƒ   rø  r}  r~  r_  r  r€  r¥   r6  rc  rb  r�  rð   Úextra_linesrw  ry  r  Úkw_only_argsÚattrs_to_validateÚnames_for_globalsr   r§   r   rf  Úarg_nameÚhas_factoryÚ
maybe_selfr<   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚpre_init_argsÚpre_init_kw_only_argsÚNLs$                                       r!   r[  r[  .  s	  € ð( .;ÐBÐ(Ð)Ð)À€Eàð 
Ø�Šð 3ñ		
ô 	
ð 	
õ :LØ�:˜}ñ:ô :Ñ6€K�Ð6ð 
‡L‚L�ÑÔÐà€DØ€LØÐð ÐØ˜TÐ"€Kàð UDñ UDˆØŒ;ð 	(Ø×$Ò$ QÑ'Ô'Ð'à”Fˆ	Øœ¨TÐ1ð 
ØŒL¥¤Ð-ÐDÐ2Dð 	ð
 ”7ˆå  ¤­GÑ4Ô4ˆØ*ÐK¨q¬yÔ/CÐK�V�VÈˆ
àŒ;Ð"­:°a´kÅ9Ñ+MÔ+MÐ"Ý! !¤+Ñ.Ô.ˆIˆIàœˆIàŒ6�Uˆ?‰?Øð *Ý$5¸¼¸	Ñ$AÐ!ØÐ(Ø—L’LØ1Ð1Ø%Ø-Ð0A°JÐ0AÐ0AÐ0AÑAØ*Ø%ñ	ô ñô ð ð "Ô+ð & i×&@Ò&@ÀÄÑ&HÔ&HÑIÐIð —L’LØ"˜
Ø%Ø-Ð0A°JÐ0AÐ0AÐ0AÑAØ*ñô ñô ð ð 89´yÔ7HÐ!Ð"3Ñ4Ñ4ØÐ&Ø—’Ø-Ð-Ø!Ø; iÐ;Ð;Ð;Ø&Ø!ñ	ô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÑEð —’Ø�JØ!Ø; iÐ;Ð;Ð;Ø&ñô ñô ð ñ ð ŒY�gÐ%Ð%¨kÐ%ØÐ@Ð@¨9Ð@Ð@Ð@ˆCØŒyð !Ø×#Ò# CÑ(Ô(Ð(Ð(à—’˜CÑ Ô Ð àÐ$Ø—’Ø-Ð-Ø! 8¨^¸Yñô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÑEð —’˜Z˜Z¨	°8¸^ÑLÔLÑMÔMÐMÑMàñ ;	NØÐ'Ð'Ð'ˆCØŒyð !Ø×#Ò# CÑ(Ô(Ð(Ð(à—’˜CÑ Ô Ð Ø�LŠLÐ9˜xÐ9Ð9Ð9Ñ:Ô:Ð:å 1°Q´V°IÑ =ÐØÐ$Ø—’ØØ/Ð/Ø! 8¨^¸Yñô ññô ð ð —’˜WÑ%Ô%Ð%Ø—’ØØ/Ð/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ñ	ô ññô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÐEð —’Ø˜Z˜Z¨	°8¸^ÑLÔLÑLñô ð ð —’˜WÑ%Ô%Ð%Ø—’ØØ �jØ!Ø)¨CÑ/°*Ñ<¸sÑBØ&ñô ññô ð ð 45´9Ô3DÐÐ/Ñ0Ð0àŒyð &Ø×#Ò# HÑ-Ô-Ð-Ð-à—’˜HÑ%Ô%Ð%àÐ$Ø—’Ø-Ð-Ø! 8¨^¸Yñô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÐEð —’˜Z˜Z¨	°8¸^ÑLÔLÑMÔMÐMàŒ6�Tˆ>ˆ>ØŒvÐ! iÐ&7Ø()¬�˜HÑ%Ñ%ØÐ&¨9Ô+FÐ&à(1Ô(C�˜HÑ%ùàð -Ý'.Ð˜)Ñ$Ø�ŠÐ:Ñ;Ô;Ð;Ø"ð 	-ð 	-ˆAØ*¨Q¬VÑ3ˆHØ! A¤FÑ*ˆIØ�LŠLÐL ÐLÐL°ÐLÐLÀ1Ä6ÐLÐLÐLÑMÔMÐMØ*+¬+Ð˜hÑ'Ø+,Ð˜iÑ(Ð(àð 3Ø�ŠÐ1Ñ2Ô2Ð2ð ð &Øð 	AØð NØ"JÕ/@Ð"JÐ"JÐ"J��à"MÕ1BÐ"MÐ"MÐ"M��à@Õ&7Ð@Ð@Ð@ˆOØ�Š�_Ñ%Ô%Ð%ð ð >Ø�xŠxÐBÐB°%ÐBÑBÔBÑBÔBˆà�ŠÐ<°TÐ<Ð<Ð<Ñ=Ô=Ð=à�9Š9�T‰?Œ?€DØ€MØð /à˜4Ð'�4�4 RÐEÐE¨D¯IªI°lÑ,CÔ,CÐEÐEÑEˆØ $§	¢	ðð ð $OÐ#NÀÐ#NÑ#NÔ#Nðñ ô ñ!
ô !
Ðð 	 Ð6˜˜°BÑ6ˆØÐ.Ñ.ˆàð ?Ð*ð ?à>¨mÐ>Ð>Ð>ˆˆa‰ð 
€Bð	�ð 	ð 	 Tð 	ð 	ØÐ(€R‡W‚WˆU�^„^€^ &ð	ð 	ð 	ð 	Øðð r#   rž   c                ó,   — |                       d¦  «        S )zÅ
    The default __init__ parameter name for a field.

    This performs private-name adjustment via leading-unscore stripping,
    and is the default value of Attribute.alias if not provided.
    rD  )ÚlstriprÉ   s    r!   rÚ   rÚ   2	  s   € ð �;Š;�sÑÔÐr#   c                  ój   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zeddd„¦   «         Zd„ Z	d„ Z
d„ Zd„ ZdS )rÖ   a²  
    *Read-only* representation of an attribute.

    .. warning::

       You should never instantiate this class yourself.

    The class has *all* arguments of `attr.ib` (except for ``factory`` which is
    only syntactic sugar for ``default=Factory(...)`` plus the following:

    - ``name`` (`str`): The name of the attribute.
    - ``alias`` (`str`): The __init__ parameter name of the attribute, after
      any explicit overrides and default private-attribute-name handling.
    - ``inherited`` (`bool`): Whether or not that attribute has been inherited
      from a base class.
    - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The
      callables that are used for comparing and ordering objects by this
      attribute, respectively. These are set by passing a callable to
      `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also
      :ref:`comparison customization <custom-comparison>`.

    Instances of this class are frequently used for introspection purposes
    like:

    - `fields` returns a tuple of them.
    - Validators get them passed as the first argument.
    - The :ref:`field transformer <transform-fields>` hook receives a list of
      them.
    - The ``alias`` property exposes the __init__ parameter name of the field,
      with any overrides and default private-attribute handling applied.


    .. versionadded:: 20.1.0 *inherited*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.2.0 *inherited* is not taken into account for
        equality checks and hashing anymore.
    .. versionadded:: 21.1.0 *eq_key* and *order_key*
    .. versionadded:: 22.2.0 *alias*

    For the full version history of the fields, see `attr.ib`.
    )rž   r6   r7   r8   r?   r@   rA   rB   r:   r;   r=   r3   r<   r>   rš   rC   rD   NFc                óX  — t          ||p||p|d¦  «        \  }}}}t                               | ¦  «        } |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d	|¦  «          |d
|¦  «          |d|¦  «          |d|¦  «          |d|	r!t          j        t          |	¦  «        ¦  «        nt          ¦  «          |d|
¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «         d S )NTrž   r6   r7   r8   r?   r@   rA   rB   r:   r;   r<   r=   r3   r>   rš   rC   rD   )rE   rØ   rÙ   ÚtypesÚMappingProxyTyper%  Ú_EMPTY_METADATA_SINGLETON)r    rž   r6   r7   r8   r9   r:   r;   rš   r=   r3   r<   r>   r?   r@   rA   rB   rC   rD   Úbound_setattrs                       r!   r=  zAttribute.__init__~	  s¨  € õ* (BØ��˜2˜yÐ1¨E°4ñ(
ô (
Ñ$ˆˆF�E˜9õ
 %×,Ò,¨TÑ2Ô2ˆð 	ˆ�f˜dÑ#Ô#Ð#Øˆ�i Ñ)Ô)Ð)Øˆ�k 9Ñ-Ô-Ð-Øˆ�f˜dÑ#Ô#Ð#Øˆ�d˜BÑÔÐØˆ�h Ñ'Ô'Ð'Øˆ�g˜uÑ%Ô%Ð%Øˆ�k 9Ñ-Ô-Ð-Øˆ�f˜dÑ#Ô#Ð#Øˆ�f˜dÑ#Ô#Ð#Øˆ�k 9Ñ-Ô-Ð-ØˆØð ð/•Ô&¥t¨H¡~¤~Ñ6Ô6Ð6å.ñ	
ô 	
ð 	
ð 	ˆ�f˜dÑ#Ô#Ð#Øˆ�i Ñ)Ô)Ð)Øˆ�k 9Ñ-Ô-Ð-Øˆ�l JÑ/Ô/Ð/Øˆ�g˜uÑ%Ô%Ð%Ð%Ð%r#   c                ó   — t           ‚r/   )r   rü   s      r!   rû   zAttribute.__setattr__µ	  s   € Ý!Ð!r#   rž   rU   rÄ   rO   c                ó  — |€|j         }n|j         �d|› d�}t          |¦  «        ‚ | ||j        |j        |j        d |j        |j        d|j        ||j        |j	        |j
        |j        |j        |j        |j        |j        ¦  «        S )Nz>Type annotation and type argument cannot both be present for 'z'.F)r3   rG   Ú_defaultÚ
_validatorr8   r:   r;   r=   r<   r>   r?   r@   rA   rB   rC   rD   )r“   rž   rÄ   r3   rQ   s        r!   r×   zAttribute.from_counting_attr¸	  s�   € ð ˆ<Ø”7ˆDˆDØŒWÐ Ø[ÐSWÐ[Ð[Ð[ˆCÝ˜S‘/”/Ð!ØˆsØØŒKØŒMØŒGØØŒGØŒGØØŒKØØŒLØŒJØŒEØŒIØŒHØŒLØŒMØŒHñ%
ô 
ð 	
r#   c                ó|   — t          j         | ¦  «        }|                     |                     ¦   «         ¦  «         |S )a
  
        Copy *self* and apply *changes*.

        This works similarly to `attrs.evolve` but that function does not work
        with :class:`attrs.Attribute`.

        It is mainly meant to be used for `transform-fields`.

        .. versionadded:: 20.3.0
        )ÚcopyÚ	_setattrsrÓ   )r    r  Únews      r!   rŸ   zAttribute.evolveÖ	  s0   € õ Œi˜‰oŒoˆà�Š�g—m’m‘o”oÑ&Ô&Ð&àˆ
r#   c                óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )ú(
        Play nice with pickle.
        c              3  ól   •K  — | ].}|d k    rt          ‰|¦  «        nt          ‰j        ¦  «        V — Œ/dS )r=   N)r�   r%  r=   r—  s     €r!   r¿   z)Attribute.__getstate__.<locals>.<genexpr>ì	  sZ   øè è € ð 
ð 
àð $(¨:Ò#5Ð#5�G�D˜$ÑÔÐ½4ÀÄÑ;NÔ;Nð
ð 
ð 
ð 
ð 
ð 
r#   ©rL   r`  r   s   `r!   r#  zAttribute.__getstate__è	  s?   ø€ õ ð 
ð 
ð 
ð 
àœð
ñ 
ô 
ñ 
ô 
ð 	
r#   c                óV   — |                       t          | j        |¦  «        ¦  «         dS ©r±  N)r®  r›  r`  ©r    rœ  s     r!   r$  zAttribute.__setstate__ñ	  s(   € ð 	�Š•s˜4œ>¨5Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r#   c           	     óØ   — t                                | ¦  «        }|D ]L\  }}|dk    r |||¦  «         Œ |||r!t          j        t	          |¦  «        ¦  «        nt
          ¦  «         ŒMd S )Nr=   )rØ   rÙ   r¤  r¥  r%  r¦  )r    Úname_values_pairsr§  rž   rý   s        r!   r®  zAttribute._setattrs÷	  s‘   € Ý$×,Ò,¨TÑ2Ô2ˆØ,ð 	ð 	‰KˆD�%Ø�zÒ!Ð!Ø�˜d EÑ*Ô*Ð*Ð*à�Øð !ð7�Ô.­t°E©{¬{Ñ;Ô;Ð;å6ñô ð ð ð		ð 	r#   )
NNNFNNNNNNr/   )rž   rU   rÄ   rO   )r&   r'   r(   r)   r`  r=  rû   rt  r×   rŸ   r#  r$  r®  r   r#   r!   rÖ   rÖ   =	  sË   € € € € € ð(ð (ðX€Ið< ØØØØØØØØØð'5&ð 5&ð 5&ð 5&ðn"ð "ð "ð ð
ð 
ð 
ð 
ñ „[ð
ð:ð ð ð$
ð 
ð 
ð3ð 3ð 3ðð ð ð ð r#   rÖ   c                ón   — g | ]2}t          |t          d dd dd|dk    ddt          |¦  «        ¬¦  «        ‘Œ3S )NTFr=   )rž   r6   r7   r8   r9   r?   rA   r:   r;   rš   rD   )rÖ   r   rÚ   ©r²   rž   s     r!   rÇ   rÇ   
  sg   € ð ð ð ð 	õ ØÝØØØØØØ�jÒ ØØÝ% dÑ+Ô+ðñ ô ðð ð r#   )rƒ   c                ó(   — g | ]}|j         d k    ¯|‘ŒS r™   rÉ   rÊ   s     r!   rÇ   rÇ   
  s$   € Ð6Ð6Ð6�Q ¤¨+Ò 5Ð 5ˆqÐ 5Ð 5Ð 5r#   c                ó6   — g | ]}|j         ¯	|j        d k    ¯|‘ŒS r™   )r:   rž   rÊ   s     r!   rÇ   rÇ   
  s+   € Ð
=Ð
=Ð
=�˜AœFÐ
= q¤v°Ò'<Ð'<ˆ1Ð'<Ð'<Ð'<r#   c                  ó�   — e Zd ZdZdZg  ed„ dD ¦   «         ¦  «        ¢ eddddddddddddddd¬	¦  «        ‘R Zd
Zd„ Z	d„ Z
d„ ZdS )rO   a  
    Intermediate representation of attributes that uses a counter to preserve
    the order in which the attributes have been defined.

    *Internal* data structure of the attrs library.  Running into is most
    likely the result of a bug like a forgotten `@attr.s` decorator.
    )rª  r«  rD   r<   r¸   r?   r@   r:   r;   r>   r=   rC   rA   rB   r8   r3   c              #  óv   K  — | ]4}t          |t          |¦  «        t          d dd ddddd dd dd ¬¦  «        V — Œ5d S )NTF©rž   rD   r6   r7   r8   r9   r:   r;   r>   r?   r@   rA   rB   rš   rC   )rÖ   rÚ   r   rº  s     r!   r¿   z_CountingAttr.<genexpr>=
  s|   è è € ð 
ð 
ð$ õ# ØÝ-¨dÑ3Ô3ÝØØØØØØØØØØØØðñ ô ð
ð 
ð 
ð 
ð 
ð 
r#   )	r¸   rª  r8   r?   rA   r:   r;   rC   rD   r=   NTFr¿  r   c                ó$  — t           xj        dz  c_        t           j        | _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        d S rÁ   )rO   Úcls_counterr¸   rª  r«  r<   r8   r?   r@   rA   rB   r:   r;   r=   r3   r>   rC   rD   )r    r6   r7   r8   r9   r:   r;   r<   r=   r3   r>   r?   r@   rA   rB   rC   rD   s                    r!   r=  z_CountingAttr.__init__o
  s�   € õ& 	Ð!Ô! QÑ&Ð!Ô!Ý$Ô0ˆŒØˆŒØ#ˆŒØ"ˆŒØˆŒ	ØˆŒØˆŒØˆŒ
Ø"ˆŒØˆŒ	ØˆŒ	Ø ˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒ
ˆ
ˆ
r#   c                óX   — | j         €|| _         nt          | j         |¦  «        | _         |S )zŒ
        Decorator that adds *meth* to the list of validators.

        Returns *meth* unchanged.

        .. versionadded:: 17.1.0
        )r«  rN   ©r    rË  s     r!   r7   z_CountingAttr.validator”
  s-   € ð Œ?Ð"Ø"ˆDŒOˆOå" 4¤?°DÑ9Ô9ˆDŒOØˆr#   c                ó\   — | j         t          urt          ‚t          |d¬¦  «        | _         |S )zæ
        Decorator that allows to set the default for an attribute.

        Returns *meth* unchanged.

        Raises:
            DefaultAlreadySetError: If default has been set before.

        .. versionadded:: 17.1.0
        T)r�  )rª  r   r   rI   rÃ  s     r!   r6   z_CountingAttr.default¢
  s0   € ð Œ=¥Ð'Ð'Ý(Ð(å °Ð6Ñ6Ô6ˆŒàˆr#   )r&   r'   r(   r)   r`  rL   rÖ   r˜   rÁ  r=  r7   r6   r   r#   r!   rO   rO   !
  sá   € € € € € ðð ð€Ið$0Ø	ˆð 
ð 
ð$
ð%
ñ 
ô 
ñ 

ô 

ð0ð> 	ˆ	ØØØØØØØØØØØØØØØð	
ñ 	
ô 	
ð?0ð 0€Oðb €Kð#ð #ð #ðJð ð ðð ð ð ð r#   rO   c                  ó*   — e Zd ZdZdZdd„Zd„ Zd„ ZdS )	rI   a÷  
    Stores a factory callable.

    If passed as the default value to `attrs.field`, the factory is used to
    generate a new value.

    Args:
        factory (typing.Callable):
            A callable that takes either none or exactly one mandatory
            positional argument depending on *takes_self*.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument.

    .. versionadded:: 17.1.0  *takes_self*
    ©rP   r�  Fc                ó"   — || _         || _        d S r/   rÆ  )r    rP   r�  s      r!   r=  zFactory.__init__Í
  s   € ØˆŒØ$ˆŒˆˆr#   c                óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )r±  c              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r/   r_  r—  s     €r!   r¿   z'Factory.__getstate__.<locals>.<genexpr>Õ
  s-   øè è € ÐDÐD¨T•W˜T 4Ñ(Ô(ÐDÐDÐDÐDÐDÐDr#   r³  r   s   `r!   r#  zFactory.__getstate__Ñ
  s*   ø€ õ ÐDÐDÐDÐD°T´^ÐDÑDÔDÑDÔDÐDr#   c                ó^   — t          | j        |¦  «        D ]\  }}t          | ||¦  «         ŒdS rµ  )r›  r`  rV  )r    rœ  rž   rý   s       r!   r$  zFactory.__setstate__×
  sB   € õ ˜tœ~¨uÑ5Ô5ð 	'ð 	'‰KˆD�%Ý�D˜$ Ñ&Ô&Ð&Ð&ð	'ð 	'r#   N)F)r&   r'   r(   r)   r`  r=  r#  r$  r   r#   r!   rI   rI   ¸
  sZ   € € € € € ðð ð$ *€Ið%ð %ð %ð %ðEð Eð Eð'ð 'ð 'ð 'ð 'r#   rI   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S ©NTF)
rž   r6   r7   r8   r9   r?   rA   r:   r;   rš   ©rÖ   r   rº  s     r!   rÇ   rÇ   ß
  óW   € ð ð ð ð 	õ ØÝØØØØØØØØðñ ô ðð ð r#   c                  óP   — e Zd ZdZdZdddœd„Zedd	„¦   «         Zdd„Zd„ Z	d„ Z
dS )rj  ae  
    Stores a converter callable.

    Allows for the wrapped converter to take additional arguments. The
    arguments are passed in the order they are documented.

    Args:
        converter (Callable): A callable that converts the passed value.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument. (default: `False`)

        takes_field (bool):
            Pass the field definition (an :class:`Attribute`) into the
            converter as a positional argument. (default: `False`)

    .. versionadded:: 24.1.0
    )Ú__call__r�  Ú_global_namer<   Útakes_fieldr�  F©r�  rÒ  c               óz  ‡ — |‰ _         |‰ _        |‰ _        t          |¦  «        }|                     ¦   «         ‰ _        ‰ j        s‰ j        sˆ fd„‰ _        n<‰ j        r‰ j        sˆ fd„‰ _        n#‰ j        s‰ j        rˆ fd„‰ _        n
ˆ fd„‰ _        |                     ¦   «         }|�|‰ j        j        d<   d S d S )Nc                ó.   •— ‰                      | ¦  «        S r/   ©r<   )rý   rD  Ú__r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>  s   ø€ °·²ÀÑ1FÔ1F€ r#   c                ó0   •— ‰                      | |¦  «        S r/   rÖ  )rý   Úinstancer×  r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>  s   ø€ ¸¿ºØ�xñ9ô 9€ r#   c                ó0   •— ‰                      | |¦  «        S r/   rÖ  )rý   r×  rº  r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>  s   ø€ °T·^²^Ø�uñ6ô 6€ r#   c                ó2   •— ‰                      | ||¦  «        S r/   rÖ  )rý   rÙ  rº  r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>#  s   ø€ ¸4¿>º>Ø�x ñ<ô <€ r#   r[   )	r<   r�  rÒ  r   Úget_first_param_typer�  rÐ  Úget_return_typerˆ   )r    r<   r�  rÒ  ÚexÚrts   `     r!   r=  zConverter.__init__  s
  ø€ Ø"ˆŒØ$ˆŒØ&ˆÔå! )Ñ,Ô,ˆØ!#×!8Ò!8Ñ!:Ô!:ˆÔà”ð 	 4Ô#3ð 	ØFÐFÐFÐFˆDŒMˆMØŒ_ð 	 TÔ%5ð 	ðð ð ð ˆDŒMˆMð ”ð 	 TÔ%5ð 	ðð ð ð ˆDŒMˆMðð ð ð ˆDŒMð ×ÒÑ!Ô!ˆØˆ>Ø68ˆDŒMÔ)¨(Ñ3Ð3Ð3ð ˆ>r#   r   rU   r[   c                ó   — d| › �S )zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r   )r   s    r!   r�  zConverter._get_global_name+  s   € ð / 9Ð.Ð.Ð.r#   re  c                ó,  — | j         s"| j        s|                      |¦  «        › d|› d�S | j         r%| j        r|                      |¦  «        › d|› d|› d�S | j         r|                      |¦  «        › d|› d�S |                      |¦  «        › d|› d|› d�S )zÏ
        Return a string that calls the converter for an attribute name
        *attr_name* and the value in variable named *value_var* according to
        `self.takes_self` and `self.takes_field`.
        rC  r  z, self, attr_dict['z'])z, self)z, attr_dict[')r�  rÒ  r�  )r    r   re  s      r!   rl  zConverter._fmt_converter_call3  sà   € ð ”ð 	F 4Ô#3ð 	FØ×+Ò+¨IÑ6Ô6ÐEÐE¸ÐEÐEÐEÐEàŒ?ð 	f˜tÔ/ð 	fØ×+Ò+¨IÑ6Ô6ÐeÐe¸ÐeÐeÐW`ÐeÐeÐeÐeàŒ?ð 	LØ×+Ò+¨IÑ6Ô6ÐKÐK¸ÐKÐKÐKÐKà×'Ò'¨	Ñ2Ô2Ð[Ð[°YÐ[Ð[ÈYÐ[Ð[Ð[Ð[r#   c                ó,   — | j         | j        | j        dœS )zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        ©r<   r�  rÒ  rä  r   s    r!   r#  zConverter.__getstate__D  s#   € ð œØœ/ØÔ+ð
ð 
ð 	
r#   c                ó    —  | j         di |¤Ž dS )z+
        Load instance from state.
        Nr   rõ  r¶  s     r!   r$  zConverter.__setstate__O  s"   € ð 	ˆŒÐÐ˜ÐÐÐÐÐr#   N)r   rU   r[   rU   )r   rU   re  rU   r[   rU   )r&   r'   r(   r)   r`  r=  ru  r�  rl  r#  r$  r   r#   r!   rj  rj  ò
  s›   € € € € € ðð ð(€Ið 16À5ð 9ð 9ð 9ð 9ð 9ð6 ð/ð /ð /ñ „\ð/ð\ð \ð \ð \ð"	
ð 	
ð 	
ðð ð ð ð r#   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S rÌ  rÍ  rº  s     r!   rÇ   rÇ   V  rÎ  r#   rä  c                óÞ  ‡— t          j        d| ¦  «        } t          |t          ¦  «        r|}n:t          |t          t
          f¦  «        rd„ |D ¦   «         }nd}t          |¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }	i Š|�‰                     |¦  «         |�|‰d<   |�|‰d<   |	�|	‰d<   t          j
        | |i ˆfd„¦  «        }
t          j        t          t          ¦  «        5  t          j        d	¦  «        j                             d
d¦  «        |
_        ddd¦  «         n# 1 swxY w Y   |                     dd¦  «        }t)          ||                     d¦  «        |                     d¦  «        d¦  «        \  |d<   |d<    t+          dd|i|¤Ž|
¦  «        }d„ |                     ¦   «         D ¦   «         |_        |S )a  
    A quick way to create a new class called *name* with *attrs*.

    .. note::

        ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define`
        which means that it doesn't come with some of the improved defaults.

        For example, if you want the same ``on_setattr`` behavior as in
        `attrs.define`, you have to pass the hooks yourself: ``make_class(...,
        on_setattr=setters.pipe(setters.convert, setters.validate)``

    .. warning::

        It is *your* duty to ensure that the class name and the attribute names
        are valid identifiers. ``make_class()`` will *not* validate them for
        you.

    Args:
        name (str): The name for the new class.

        attrs (list | dict):
            A list of names or a dictionary of mappings of names to `attr.ib`\
            s / `attrs.field`\ s.

            The order is deduced from the order of the names or attributes
            inside *attrs*.  Otherwise the order of the definition of the
            attributes is used.

        bases (tuple[type, ...]): Classes that the new class will subclass.

        class_body (dict):
            An optional dictionary of class attributes for the new class.

        attributes_arguments: Passed unmodified to `attr.s`.

    Returns:
        type: A new class with *attrs*.

    .. versionadded:: 17.1.0 *bases*
    .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained.
    .. versionchanged:: 23.2.0 *class_body*
    .. versionchanged:: 25.2.0 Class names can now be unicode.
    ÚNFKCc                ó,   — i | ]}|t          ¦   «         “ŒS r   )rR   rÊ   s     r!   r]  zmake_class.<locals>.<dictcomp>   s   € Ð/Ð/Ð/ A�A•v‘x”xÐ/Ð/Ð/r#   z(attrs argument must be a dict or a list.r!  Nr"  r=  c                ó.   •— |                       ‰¦  «        S r/   )rC  )rŠ  r~   s    €r!   r»   zmake_class.<locals>.<lambda>³  s   ø€ ¸¿	º	À$¹¼€ r#   r
   r&   Ú__main__r9   r?   rA   TrÛ   c                ó2   — i | ]\  }}|j         ®||j         “ŒS r/   )r3   )r²   r[  r\  s      r!   r]  zmake_class.<locals>.<dictcomp>Ì  s.   € ð ð ð Ù�a˜°!´&Ð2Dˆˆ1Œ6Ð2DÐ2DÐ2Dr#   r   )ÚunicodedataÚ	normalizerJ   r%  rK   rL   rF   ÚpoprC  r¤  Ú	new_classrR  rS  rT  rG   r\  Ú	_getframeÚ	f_globalsr·   r'   ræ  r  rÓ   rˆ   )rž   rƒ   ÚbasesÚ
class_bodyÚattributes_argumentsr‡  rQ   r^  r`  Ú	user_initÚtype_r9   r“   r~   s                @r!   Ú
make_classrø  k  sd  ø€ õ` Ô  ¨Ñ.Ô.€Då�%�ÑÔð ØˆˆÝ	�E�D¥%˜=Ñ	)Ô	)ð Ø/Ð/¨Ð/Ñ/Ô/ˆˆà8ˆÝ˜‰nŒnÐà�|Š|Ð0°$Ñ7Ô7€HØ—’Ð2°DÑ9Ô9€IØ—’˜Z¨Ñ.Ô.€Ià€DØÐØ�Š�JÑÔÐØÐØ%-ˆÐ!Ñ"ØÐØ&/ˆÐ"Ñ#ØÐØ$ˆˆZÑåŒO˜D %¨Ð-GÐ-GÐ-GÐ-GÑHÔH€Eõ 
Ô	�^­ZÑ	8Ô	8ð 
ð 
Ýœ=¨Ñ+Ô+Ô5×9Ò9Ø˜
ñ
ô 
ˆÔð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ×
"Ò
" 5¨$Ñ
/Ô
/€Cõ 	"ØØ× Ò  Ñ&Ô&Ø× Ò  Ñ)Ô)Øñ		ô 	ñØ˜TÑ"Ø˜WÑ%ð 9�&Ð
8Ð
8�xÐ
8Ð#7Ð
8Ð
8¸Ñ
?Ô
?€Cðð Ø&ŸnšnÑ.Ô.ðñ ô €CÔð €Js   Ä3EÅEÅE)r1  r  c                  ó,   — e Zd ZdZ e¦   «         Zd„ ZdS )Ú_AndValidatorz2
    Compose many validators to a single one.
    c                ó4   — | j         D ]} ||||¦  «         Œd S r/   )Ú_validators)r    r  r³   rý   r\  s        r!   rÐ  z_AndValidator.__call__Þ  s5   € ØÔ!ð 	!ð 	!ˆAØˆAˆd�D˜%Ñ Ô Ð Ð ð	!ð 	!r#   N)r&   r'   r(   r)   rR   rü  rÐ  r   r#   r!   rú  rú  Ö  s:   € € € € € ðð ð �&‘(”(€Kð!ð !ð !ð !ð !r#   rú  c                 ó¬   — g }| D ]4}|                      t          |t          ¦  «        r|j        n|g¦  «         Œ5t          t	          |¦  «        ¦  «        S )a  
    A validator that composes multiple validators into one.

    When called on a value, it runs all wrapped validators.

    Args:
        validators (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of validators.

    .. versionadded:: 17.1.0
    )rî   rJ   rú  rü  rL   )Ú
validatorsrœ  r7   s      r!   rN   rN   ã  sh   € ð €DØð 
ð 
ˆ	Ø�Šå˜)¥]Ñ3Ô3ðˆIÔ!Ð!à�ñ	
ô 	
ð 	
ð 	
õ �˜t™œÑ%Ô%Ð%r#   c                 óð  ‡ — t          d„ ‰ D ¦   «         ¦  «        }|rˆ fd„}nˆ fd„}‰ s-t          d¦  «        }|j                             ||dœ¦  «         n‹t	          ‰ d         ¦  «                             ¦   «         }|r
||j        d<   ‰ d         }t          st          |t          ¦  «        r|j	        }t	          |¦  «         
                    ¦   «         }|r
||j        d	<   |rt          |d
d
¬¦  «        S |S )a…  
    A converter that composes multiple converters into one.

    When called on a value, it runs all wrapped converters, returning the
    *last* value.

    Type annotations will be inferred from the wrapped converters', if they
    have any.

        converters (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of converters.

    .. versionadded:: 20.1.0
    c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r/   ©rJ   rj  )r²   Úcs     r!   r¿   zpipe.<locals>.<genexpr>
  s,   è è € ÐGÐG°q�* Q­	Ñ2Ô2ÐGÐGÐGÐGÐGÐGr#   c                ól   •— ‰D ]/}t          |t          ¦  «        r || ||¦  «        n
 || ¦  «        } Œ0| S r/   r  )rÕ  r  rº  r  Ú
converterss       €r!   Úpipe_converterzpipe.<locals>.pipe_converter  sM   ø€ Øð ð �å+5°a½Ñ+CÔ+CÐO�A�A�c˜4 Ñ'Ô'Ð'ÈÈÈ3ÉÌð �ð ˆJr#   c                ó(   •— ‰D ]} || ¦  «        } Œ| S r/   r   )rÕ  r  r  s     €r!   r  zpipe.<locals>.pipe_converter  s&   ø€ Øð ð �Ø�a˜‘f”f��àˆJr#   ÚA)rÕ  r[   r   rÕ  rf   r[   TrÓ  )rä  r	   rˆ   rC  r   rÜ  r   rJ   rj  rÐ  rÝ  )r  Úreturn_instancer  r  ÚtÚlastrß  s   `      r!   rM   rM   ú  sH  ø€ õ  ÐGÐG¸JÐGÑGÔGÑGÔG€Oàð ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ð :å�C‰LŒLˆØÔ&×-Ò-°aÀ1Ð.EÐ.EÑFÔFÐFÐFõ ! ¨A¤Ñ/Ô/×DÒDÑFÔFˆØð 	6Ø45ˆNÔ*¨5Ñ1à˜"Œ~ˆÝð 	!¥
¨4µÑ ;Ô ;ð 	!Ø”=ˆDõ " $Ñ'Ô'×7Ò7Ñ9Ô9ˆØð 	:Ø79ˆNÔ*¨8Ñ4àð LÝ˜°DÀdÐKÑKÔKÐKØÐr#   )NrS   )
rT   rU   rV   rW   rX   rY   rZ   rU   r[   r\   r/   )
rT   rU   rZ   rU   rV   rW   rc   rY   r[   rd   )rs   rU   rt   ru   r[   r3   )r[   r–   )r[   r‚   )T)NNNNNNNFFTFFFFFNNFFNNNTN)r“   r3   r  rU   r[   rU   )
r“   r3   rƒ   r„   r2  r&  r5  r&  r[   r
  )r“   r3   rƒ   r„   )rƒ   rK   r[   r
  )r[   r
  )NN)r[   rX  rz  r{  )r   rU   rý   rU   rf  r&  r[   rU   )r2  r&  r1  r&  r¥   r†   )rƒ   r„   rø  r&  r}  r&  r~  r&  r_  r&  r  r&  r€  r&  r¥   r†   r6  r&  rc  r&  rb  r&  r�  rU   r[   rX  )rž   rU   r[   rU   )iÚ
__future__r   rL  rR  r­  r*   r'  rq  rk   r\  r¤  rí  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   rS   r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectrû   rØ   rŽ  rŽ   rp  r¥  r¦  rQ  rM   r,  r+  r*  ÚEnumr   r   Úintr-   rR   rb   rr   r€   r‚   r�   r•   rª   r¬   ræ   ró   rþ   r  rŸ   r	  ræ  rE   rð  rƒ   r  rö  rï   r¨  r%  rÆ  rÇ  rÐ  r=  r‰  rK  r  rR  rW  r²  ri  rn  rp  rr  r|  r[  rÚ   rÖ   r`  Ú_arO   rI   Ú_frj  rø  rú  rN   r   r#   r!   ú<module>r     s¹  ðð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø %Ð %Ð %Ð %Ð %Ð %Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð Ô!€Ø'Ð ðÐ ð )Ð à2˜EÔ2°2Ñ6Ô6Ð ð ˆF‰HŒH€	à"�g”l 7¤?°GÔ4DÑEÔEÐ ðð ð ð ð ˆtŒyñ ô ð ð( Ô
€ðð(ð (ð (ð (ð (˜ñ (ô (ð (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ðhð hð hð hð\ )-Øð	 ð  ð  ð  ð  ð$ +/ð	 ð  ð  ð  ð  ðF1ð 1ð 1ð 1ð.$ð $ð $ð $ð $�*ñ $ô $ð $ð0ð 0ð 0ð"'ð 'ð 'ð#ð #ð #ð #ðB%ð %ð %ð8iEð iEð iEð iEðX1ð 1ð 1ðhð ð ð"ð ð ð7ð 7ð 7ðtG	ð G	ð G	ð G	ð G	ñ G	ô G	ð G	ðTð ð ð8((ð ((ð ((ðX .2ðð ð ð ð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØð1`ð `ð `ð `ðF 
€ðð/ð /ð /ðð ð ð ðEð Eð Eð EðPð ð ð ð	ð 	ð 	ð"ð "ð "ð "ðJ5*ð 5*ð 5*ðpð ð ð ð"6#ð 6#ð 6#ð 6#ðrð ð ð ð+ð +ð +ð\&ð &ð &ð:.ð .ð .ð$/ð /ð /ðB&ð B&ð B&ð B&ðJ3ð 3ð 3ð 3ð]ð ]ð ]ð ]ð)ð )ð )ð )ð
Wð 
Wð 
Wð 
Wð,/ð ,/ð ,/ð ,/ð^Að Að Að AðHð ð ð ðGð Gð Gð Gð Gñ Gô Gð GðTð ð Ô#ðñ ô €ð" ˆIØ€GØˆ	�) 2Ð&Ñ&Ô&Ø6Ð6˜"Ð6Ñ6Ô6ðñ ô ð >Ð
=�bÐ
=Ñ
=Ô
=ðñ ô €	ðQð Qð Qð Qð Qñ Qô Qð Qðh �˜	˜	 -Ñ0Ô0Ñ1Ô1€ð$'ð $'ð $'ð $'ð $'ñ $'ô $'ð $'ðNð ð Ô!ðñ ô €ð  ˆ)�G�G˜I˜I g°RÐ8Ñ8Ô8ÀÐCÑCÔCÈ2Ð
NÑ
NÔ
N€ðað að að að añ aô að aðHð ð ;ðñ ô €ð  ˆIØ€GˆIˆI�i rÐ*Ñ*Ô*°"Ð5Ñ5Ô5¸Rðñ ô €	ð �y¨Tðdð dð dð dðV €ˆT˜tÐ$Ñ$Ô$ð	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ñ %Ô$ð	!ð&ð &ð &ð.9ð 9ð 9ð 9ð 9r#   