1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
Ë
·^i͖ãóæ—ddlmZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl mZmZddlmZddlmZmZmZddlmZmZmZddlmZmZmZmZmZmZdd    l m!Z!m"Z"m#Z#m$Z$e%jLZ'd
Z(d Z)d Z*e
jVi«Z,e%«Z-ej\ej^ej`«Z1Gd „dejd«Z3e3jhZ4    Gd„de5«Z6e4ddddddddddddddfd„Z7        dT                                    dUd„Z8    dV                                    dWd„Z9dXd„Z:Gd„de«Z;d„Z<d„Z=        dYd„Z>d„Z?        dZd„Z@d„ZAd„ZBd„ZCd „ZDGd!„d"«ZEd#„ZFd$„ZG    d[d%„ZH                                                                                                    d\d'„ZIeIZJ    d(„ZKd]d)„ZL                                        d^d*„ZMd_d+„ZNd,„ZOd`d-„ZPd.„ZQdVd/„ZRdad0„ZSdbd1„ZTd2„ZUd3„ZVd4„Z0d5„ZW        dcd6„ZXddd7„ZY                                        ded9„ZZdfd:„Z[                                        ded;„Z\                        dgd<„Z]                                                                                                        dhd=„Z^did>„Z_Gd?„d@«Z`e`jÂDcgc]}e`|e4ddddd&|dAk7dd&e_|«¬B« ‘Œ c}ZbeNeReTe`eb¬C«ebDcgc]}|jÆdDk7sŒ|‘Œc}¬C«ebDcgc]!}|jÈsŒ|jÆdDk7sŒ |‘Œ#c}¬C«Z`GdE„dF«ZeeReTee««ZeGdG„dH«ZfefjÂDcgc]}e`|e4ddddd&ddd&e_|«¬B« ‘Œc}ZgeReTefeg¬C«eg¬C«ZfGdI„dJ«ZhehjÂDcgc]}e`|e4ddddd&ddd&¬K«
‘Œc}ZieNeReTehei¬C«ei¬C«ei¬C«ZhGdL„d8«ZjdMDcgc]}e`|e4ddddd&ddd&¬K«
‘Œc}ZieNeReTejei¬C«ei¬C«ei¬C«Zje%fdfdN„ZkeIdd¬O«GdP„dQ««ZldR„ZmdS„Z.ycc}wcc}wcc}wcc}wcc}wcc}w)jé)Ú 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)ztyping.ClassVarz
t.ClassVarÚClassVarztyping_extensions.ClassVarÚ_attrs_cached_hashcó>—eZdZdZej
«Zd„Zd„Zy)Ú_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ó—y)NÚNOTHING©©Úselfs õ]H:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\attr/_make.pyÚ__repr__z_Nothing.__repr__Ks€Øócó—y)NFrrs r!Ú__bool__z_Nothing.__bool__Ns€Ør#N)    Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚenumÚautorr"r%rr#r!rr>s „ñðˆdi‰i‹k€Gòór#rcó(—eZdZdZed«dfd„Zy)Ú_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.
    Nrcó
—||fS©Nr)r Ú_none_constructorÚ_argss   r!Ú
__reduce__z_CacheHashWrapper.__reduce__fs €Ø  %Ð'Ð'r#)r&r'r(r)Útyper2rr#r!r-r-Zs„ñ    ñ,0°«:¸Rô(r#r-Tcó—t|| | d«\} }} }||dur|dur d}t|«‚|    8|tur d}t|«‚t    |    «s d}t|«‚t |    «}|€i}t | ttf«rtj| Ž} |rt |ttf«rt|Ž}|rt |ttf«rt|Ž}tdid|“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*
    .. versionchanged:: 25.4.0
       *kw_only* can now be None, and its default is also changed from False to
       None.
    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)r6r7r8r9r:r;r=r3r<Úfactoryr>r?rArCrDr@rBÚmsgs                  r!ÚattribrRjs€ôt$>Ø ˆR˜ó$Ñ €Bˆyð ИD¨Ñ,°¸UÑ1BØFˆÜ˜‹nÐàÐØ œ'Ñ !àOð ô˜S“/Ð !ܘԠØ>ˆCܘS“/Ð !ܘ'Ó"ˆàÐØˆô*œt¤U˜mÔ,Ü—\‘\ :Ð.ˆ
á”Z     ¬D´%¨=Ô9ܘ)Ð$ˆ    á”Z     ¬D´%¨=Ô9ܘ)Ð$ˆ    ä ò Ùð áð ñð ñ ð     ñ
ð  ñ ð  ñð ñð ñð ñð ñ ð ñð ñð ñð ñð ñ ð! ðr#có8—t||d«}t|||«y)z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes     r!Ú_compile_and_evalr\Øs€ôv˜x¨Ó0€H܈5˜$Õr#cóâ—|€in|}d}|}    t|«d|jd«|f}tjj    ||«}||k(rn|dd›d|›d}|dz }ŒUt ||||«|S)zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr
Téÿÿÿÿú-ú>)ÚlenÚ
splitlinesÚ    linecacheÚcacheÚ
setdefaultr\)    rWrZrXÚlocalsrYÚcountÚ base_filenameÚlinecache_tupleÚold_vals             r!Ú_linecache_and_compilerkæs €ð‰2 V€Dð €EØ€MØ
ä ‹KØ Ø × Ñ ˜dÓ #Ø ð    
ˆô —/‘/×,Ñ,¨X°ÓGˆØ oÒ %Ø à# C RÐ(Ð)¨¨5¨'°Ð3ˆØ ‰
ˆð ôf˜e T¨8Ô4à €Kr#có€—|›d}i}t|«D]\}}|fd„}t|«||<Œt|tf|«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ó —||Sr/r)r Úis  r!Úgetterz&_make_attr_tuple_class.<locals>.getters €Ø˜‘7ˆNr#)Ú    enumerateÚpropertyr3rL)Úcls_nameÚ
attr_namesÚattr_class_nameÚbodyroÚ    attr_namerps       r!Ú_make_attr_tuple_classrx    sX€ð"˜
 *Ð-€OØ €DÜ! *Ó-ò+‰ ˆˆ9àó    ô# 6Ó*ˆˆYŠð +ô ¤% ¨4Ó 0Ð0r#có,—eZdZUded<ded<ded<y)Ú _Attributesr3Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapN)r&r'r(Ú__annotations__rr#r!rzrz s…Ø ƒKØÓØ#Ô#r#rzcó—t|«}|jd«r|jd«r|dd}|jt«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
r^)ÚstrÚ
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots r!Ú _is_class_varr‰&sE€ô ‹J€Eð ×ј
Ô#¨¯©°zÔ(Bؐa˜ ˆà × Ñ Ô.Ó /Ð/r#có—||jvS)zR
    Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
    )Ú__dict__)ÚclsÚ attrib_names  r!Ú_has_own_attributerŽ7s€ð ˜#Ÿ,™,Ð &Ð&r#cóº—g}i}t|jdd«D]a}t|dg«D]O}|js|j|vrŒ|j d¬«}|j |«|||j<ŒQŒcg}t«}t|«D]>}|j|vrŒ|jd|«|j|j«Œ@||fS)zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r
r^Ú__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ò    -ˆA؏{Š{˜aŸf™fÐ(8Ñ8Øà—‘ 4Ó(ˆAØ × Ñ ˜aÔ  Ø$,ˆM˜!Ÿ&™&Ò !ñ     -ð-ð€HÜ ‹5€DÜ jÓ !òˆØ 6‰6T‰>Ø Ø‰˜˜1ÔØ ‰—‘Õð    ð ]Ð "Ð"r#có—g}i}|jddD]p}t|dg«D]^}|j|vrŒ|jd¬«}|j    |j«|j |«|||j<Œ`Œr||fS)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
r^rTr‘)r”r•r–r—r›r˜)rŒrœr}rržrŸs      r!Ú_collect_base_attrs_brokenr¤_sž€ð€JØ€Mð—K‘K  "Ð%ò-ˆÜ˜Ð#4°bÓ9ò    -ˆA؏v‰vÐ)Ñ)Øà—‘ 4Ó(ˆAØ ×  Ñ   §¡Ô (Ø × Ñ ˜aÔ  Ø$,ˆM˜!Ÿ&™&Ò !ñ    -ð-ð }Ð $Ð$r#c óć—|jŠt|«}|t|j««}n|durð‰j«D    chc]\}}    |    jt
ur|’Œ}
}}    g}t «} |j«D]h\} } t| «rŒ| j| «‰j| t«}|jt
ur t|«}|j| |f«Œj|
| z
}|rQtddjt|ˆfd„¬««zdz«‚td„‰j«D«d„¬«}t j"}t$j&j(}|D cgc]!\} }|| |||u|j| ««‘Œ#}} }|r(t+||Dchc]}|j,’Œc}«\}}n't/||Dchc]}|j,’Œc}«\}}|t$j&j0ur>|Dcgc]}|j3d¬    «‘Œ}}|Dcgc]}|j3d¬    «‘Œ}}||z}|t5|||««}d
}d „|D«D]B}|dur"|j6turd |›}t9|«‚|d
usŒ.|j6tusŒAd}ŒD|D]=}|j:rŒt=j?|«d tA|j,««Œ?|Dcgc]}|j,‘Œ}}tC|jD|«}tG||«||«Scc}    }wcc}} wcc}wcc}wcc}wcc}wcc}w)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`.
    Tz1The following `attr.ib`s lack a type annotation: ú, có:•—‰j|«jSr/)ÚgetÚcounter)ÚnÚcds €r!ú<lambda>z"_transform_attrs.<locals>.<lambda>©sø€°b·f±f¸Q³i×6GÑ6G€r#)Úkeyú.c3óNK—|]\}}|jtur||f–—Œy­wr/)Ú    __class__rO)Ú.0r–Úattrs   r!ú    <genexpr>z#_transform_attrs.<locals>.<genexpr>¯s,èø€ò áD˜$Ø—>‘>¤]Ñ2ðt” ñ ùs‚#%có —|djS©Nr
)r©)Úes r!r¬z"_transform_attrs.<locals>.<lambda>´s€˜!˜A™$Ÿ,™,€r#)r>Fc3ó\K—|]$}|jdusŒ|jdusŒ!|–—Œ&y­w)FN)r;r>©r±rŸs  r!r³z#_transform_attrs.<locals>.<genexpr>Ûs&èø€Ò MA !§&¡&°Ò"5¸!¿)¹)ÀuÒ:LŒaÑ Mùs ‚,–,¥,zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: rD)$r‹rrKÚitemsr°rOr™r‰r›r¨rrRr˜rÚjoinÚsortedÚ    AttributeÚfrom_counting_attrÚ
ClassPropsÚ KeywordOnlyÚNOr¢r–r¤ÚFORCEr—rLr6rGrDÚ _OBJ_SETATTRÚ__get__Ú_default_init_alias_forrxr&rz)rŒÚtheseÚ auto_attribsr>Úcollect_by_mroÚfield_transformerÚannsÚca_listr–r²Úca_namesÚ annot_namesrwr3rŸÚ unannotatedÚfcaÚnoÚcaÚ    own_attrsr}rr{Ú had_defaultrQrtÚ
AttrsClassr«s                           @r!Ú_transform_attrsrÔ{spø€ð$
‰€BÜ ˜CÓ  €Dà Ðܐu—{‘{“}Ó%ŠØ    ˜Ñ    ð!Ÿh™h›j÷
ᐐd؏~‰~¤Ñ.ò ð
ˆñ
ð
ˆÜ“eˆ Ø#Ÿz™z›|ò    +‰OˆItܘTÔ"ØØ O‰O˜IÔ &Ø—‘y¤'Ó*ˆAà{‰{¤-Ñ/ܘ1“IØ N‰N˜I q˜>Õ *ð    +ð Ñ,ˆ Ù Ü+ØCØ—)‘)ܘ;Ó,GÔHóñðñ    óð ôñ à"$§(¡(£*ô ñ
'ô 
ˆô ×
&€CÜ    ×    Ñ    ×    "Ñ    "€Bð%÷ñ ˆIrñ      Ø Ø Ø ˜2Ð Ø H‰HYÓ õ        
ð€IññÜ$7Ø  )Ö,˜Q!—&“&Ò,ó%
Ñ!ˆ
‘Mô%?Ø  )Ö,˜Q!—&“&Ò,ó%
Ñ!ˆ
Mð”*×(Ñ(×.Ñ.Ñ.Ø5>Ö?°Q—X‘X dXÕ+Ð?ˆ    Ð?Ø6@ÖA°a—h‘h thÕ,ÐAˆ
ÐAà ˜Ñ "€EàÐ$ÜÑ'¨¨UÓ3Ó4ˆð€KÙ M˜Ô MòˆØ ˜$Ñ  1§9¡9´Ñ#7ðAðBCðAFðGˆCܘS“/Ð !à ˜%Ò  A§I¡I´WÒ$<؉Kð ðòNˆØw‹wä ×  Ñ   Ó # GÔ-DÀQÇVÁVÓ-LÕ MðNð#(Ö(˜Q!—&“&Ð(€JÐ(Ü'¨¯ © °jÓA€Jä ‘z %Ó(¨*°mÓ DÐDùó{
ùóLùò-ùò-ùò@ùÚAùò>)s*Á L=Å<&MÆ1M    
ÇM
ÈMÈ5MË?Mcó—gd¢}||jd«n|jgd¢«|jddg«t|d«}|tj|dœ}t dj |«||d    |i¬
«d S) N)    zdef 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)rfÚ __getattr__)r˜ÚextendÚ_generate_unique_filenamerÂrÃrkrº)rÖrØrŒÚlinesÚunique_filenameÚglobs      r!Ú_make_cached_property_getattrráósŸ€ò €EðÐ#Ø  ‰ Ø :õ    
ð     ‰ ò     ô     
ð
‡LLà $Ø )ð    
ôô0°°YÓ?€Oð/Ü+×3Ñ3Ø,ñ €Dô "Ø     ‰    %Ó˜/¨4¸À¸ ô àñ ðr#cóf—t|t«r|dvrtj|||«yt‚)z4
    Attached to frozen classes as __setattr__.
    )Ú    __cause__Ú __context__Ú __traceback__Ú__suppress_context__Ú    __notes__N)rJÚ BaseExceptionÚ __setattr__r©r r–Úvalues   r!Ú_frozen_setattrsrì's7€ô$œ Ô&¨4ð4ñ,ô    ×!Ñ! $¨¨eÔ4Øä
Ðr#cód—t|t«r|dvrtj||«yt‚)z4
    Attached to frozen classes as __delattr__.
    )rçN)rJrèÚ __delattr__r)r r–s  r!Ú_frozen_delattrsrï8s.€ô$œ Ô&¨4°>Ñ+AÜ×!Ñ! $¨Ô-Øä
Ðr#có—    |\}|j}t    |«}|D];}|j
sŒ|j }|j}||vsŒ-t||«||<Œ=|di|¤ŽS#t$rdt|«›d}t|«d‚wxYw)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)    rGrarFr°Úfieldsr;r–rDr•)    ÚargsÚchangesÚinstrQrŒr{rŸrwÚ    init_names             r!r—r—Cs©€ðJ'؉ˆð .‰.€CÜ 3‹K€EØ ò:ˆØvŠvØ Ø—F‘Fˆ    Ø—G‘Gˆ    Ø ˜GÒ #Ü!(¨¨yÓ!9ˆGIÒ ð :ñ ‰>‰>Ðøô! ò'à8¼¸T»¸ À;Ð Oð     ô˜‹n $Ð&ð    'ús ‚A%Á%%B
có¤—eZdZdZdZ                                dd„Zd„Zdd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zdd„Zdd„Zy)Ú _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_setattrcó
—t||||j|j|j«\}}}||_|j
rt |j«ni|_||_    |D    chc]}    |    j’Œc}    |_ ||_ td„|D««|_|j
|_|j |_|j$|_|j(t*j,j.u|_t3t5|dd««|_d|_|j6r>|j:}
t=j>|
«} tA| jB«dkD|_t3t5|dd««|_"t3|« |_#|jH|_%|jL|_'||_(d|_)|j|jd<||jd<|j r.tT|jd<tV|jd    <d
|_)n»|jNtXtZj\tZj^fvrŠdx} } |D]%}    |    j`d
} |    jbd
} | sŒ"| sŒ%n|jNtXk(r| s| r>|jNtZj\k(r| r|jNtZj^k(r    | sd|_'|jdr-|jg«\|jd <|jd <g|_4d|_5tm|jd «rtm|jd«s|jn|_8y|jr|_8ycc}    w)Nc3ó4K—|]}|j–—Œy­wr/©r–r¸s  r!r³z)_ClassBuilder.__init__.<locals>.<genexpr>°sèø€Ò 7¨A §¥Ñ 7ùs‚Ú__attrs_pre_init__Fr
Ú__attrs_post_init__rÚ__attrs_props__rérîTÚ __getstate__Ú __setstate__r'r():rÔr>Úcollected_fields_by_mrorÈrÚÚ
is_slottedÚdictr‹rþrúr–rürûrLrùr    Ú    is_frozenrÚhas_weakref_slotr
Ú hashabilityr¾Ú HashabilityÚHASHABLE_CACHEDrýÚboolr•rrrÚinspectÚ    signatureraÚ
parametersrrÿÚ is_exceptionrÚon_setattr_hookrrr rìrïÚ_DEFAULT_ON_SETATTRr ÚvalidateÚconvertr7r<Úadded_picklingÚ_make_getstate_setstaterrÚhasattrÚ_add_method_dunders_saferøÚ_add_method_dunders_unsafe)r rŒrÅrÆÚpropsÚhas_custom_setattrr{r}Úbase_maprŸÚ pre_init_funcÚpre_init_signatureÚ has_validatorÚ has_converters              r!Ú__init__z_ClassBuilder.__init__šs€ô'7Ø Ø Ø Ø M‰MØ × )Ñ )Ø × #Ñ #ó '
Ñ#ˆˆz˜8ðˆŒ    Ø/4×/?Ò/?œ˜cŸl™lÔ+ÀRˆŒØˆŒ Ø,6Ö7 q˜AŸF›FÒ7ˆÔØ&ˆÔÜ Ñ 7°Ô 7Ó7ˆÔØ×&Ñ&ˆŒ Ø—‘ˆŒ Ø"×3Ñ3ˆÔà × Ñ ¤×!7Ñ!7×!GÑ!GÐ Gð     Ôô"¤'¨#Ð/CÀUÓ"KÓLˆÔØ"'ˆÔØ × Ò ð ×2Ñ2ˆMÜ!(×!2Ñ!2°=Ó!AÐ Ü&)Ð*<×*GÑ*GÓ&HÈ1Ñ&LˆDÔ #Ü"¤7¨3Ð0EÀuÓ#MÓNˆÔÜ#'¨£;˜ˆÔØ×)Ñ)ˆŒ Ø ×0Ñ0ˆÔà#5ˆÔ Ø"'ˆÔà,0¯K©Kˆ‰Ð(Ñ)Ø,1ˆ‰Ð(Ñ)à ?Š?Ü,<ˆDN‰N˜=Ñ )Ü,<ˆDN‰N˜=Ñ )à&*ˆDÕ #Ø × Ñ Ü Ü × Ñ Ü O‰Oð"
ñ
ð
-2Ð 1ˆM˜MØò Ø—;‘;Ð*Ø$(MØ—;‘;Ð*Ø$(Mâ ¢]Ùð ð×$Ñ$Ô(;Ò;Ù*©mà×$Ñ$¬×(8Ñ(8Ò8ÁØ×$Ñ$¬¯©Ò7Á ð
$(Ô à × Ò ð×,Ñ,Ó.ñ Ø—‘˜~Ñ.Ø—‘˜~Ñ.ð ð     Ôð!ˆÔôt—y‘y ,Ô/´wØ I‰I~ô8
ð(,×'DÑ'DˆDÕ $à'+×'FÑ'FˆDÕ $ùò_8sÁ-Ncó6—d|jj›dS)Nz<_ClassBuilder(cls=z)>)rÚr&rs r!r"z_ClassBuilder.__repr__ÿs€Ø$ T§Y¡Y×%7Ñ%7Ð$8¸Ð;Ð;r#cóH—dj|jDcgc]}|d‘Œ    c}«}i}|jD]\}}}|j|«Œt|t    |j
d«|«}|jD]\}}}||j |«Œycc}w)z=
        Evaluate any registered snippets in one go.
        rÙrÚmethodsN)rºrÚupdaterkrÝrÚrþ)r ÚsnippetrWrXÚ_Ú snippet_globsrYÚhooks        r!Ú_eval_snippetsz_ClassBuilder._eval_snippetss¥€ð—‘°d×6KÑ6KÖL¨7˜G A›JÒLÓMˆØˆØ#'×#8Ñ#8ò    (Ñ ˆAˆ}˜aØ L‰L˜Õ 'ð    (ô&Ø Ü % d§i¡i°Ó ;Ø ó
ˆð ×/Ñ/ò    '‰JˆAˆq$Ù —‘ Õ &ñ    'ùòMsš BcóX—|j«|jdur5|j«}tj|«|j
_n+|j«}trtj|«}t|dd«rd|jvr|j«|S)zƒ
        Finalize class based on the accumulated configuration.
 
        Builder cannot be used after calling this method.
        TÚ__attrs_init_subclass__N)r:r    Ú_create_slots_classÚweakrefÚrefrÚÚ__attrs_base_of_slotted__Ú_patch_original_classrÚabcÚupdate_abstractmethodsr•r‹r<)r rŒs  r!Ú build_classz_ClassBuilder.build_classsŒ€ð      ×ÑÔØ ;‰;˜$Ñ Ø×*Ñ*Ó,ˆCÜ29·+±+¸cÓ2BˆDI‰IÕ /à×,Ñ,Ó.ˆCÝÜ×0Ñ0°Ó5ô
CÐ2°DÔ 9Ø)°·±Ñ=à × 'Ñ 'Ô )àˆ
r#cóê—|j}|j}|jr\|jD]M}||vsŒt    ||t
«t
usŒ t jt«5t||«ddd«ŒO|jj«D]\}}t|||«Œ|js+t    |dd«rd|_|js t |_|S#1swYŒÁxYw)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 rFrrÂré)r rŒÚ
base_namesr–rës     r!rAz#_ClassBuilder._patch_original_class-sì€ði‰iˆØ×%Ñ%ˆ
ð × Ò Ø×(Ñ(ò     +à 
Ò*Ü  T¬9Ó5¼YÒFô
$×,Ñ,¬^Ó<ñ+Ü  TÔ*÷+ð+ð     +ð Ÿ>™>×/Ñ/Ó1ò    &‰KˆD%Ü C˜˜uÕ %ð    &ð
×&Ò&¬7Ø Ð(¨%ô,
ð).ˆCÔ %à×+Ò+Ü".”àˆ
÷#+ð+ús Á* C)Ã)C2    c ó    —|jj«Dcic]&\}}|gt|j«¢d‘d‘­vr||“Œ(}}}t    t
d«rt j |j«|jsSd|d<|jsB|jjD])}|jjdd«sŒ t|d<ni}d}|jjddD]U}|jjdd    «d
}|jt!|d g«Dcic]}|t!||«“Œc}«ŒWt#|j$«}|j}    |j&r$dt!|jd d «vr d|    vr|s|    d z }    |j«D
cic]"\}}
t)|
t*«r ||
j,“Œ$} }}
g} | rÆt/|j«} | j«D]`\}}|    |fz }    ||=| j1|«t3j4|«j6}|t2j8j:usŒ\|| |<Œb|jd«}|| j1|«t=| ||j«|d<|    Dcgc]    }||vsŒ|‘Œ }}|j«Dcic] \}}||vr||“Œ}}}|Dcgc]    }||vsŒ|‘Œ }}|j|«|j>r|j1t@«t|«|d <|jjB|d<tE|j«|jjF|jj|«}tIjJ|jjM«| «D]’}t)|tNtPf«rt!|jRdd    «}n5t)|tT«rt!|jVdd    «}n t!|dd    «}|sŒi|D]%}    |jX|ju}|sŒ||_,Œ'Œ”|Scc}}wcc}wcc}
}wcc}wcc}}wcc}w#tZ$rYŒXwxYw)zL
        Build and return a new class with a `__slots__` attribute.
        r‹Ú __weakref__Ú_clear_type_descriptorsFrFrér
r^NTÚ    __slots__r)rOrÛr(Ú __closure__).rþr¹rLrùr'ÚsysrPrÚr rÚ    __bases__r‹r¨rÂr”r5r•r™rür
rJrÚfuncrr˜rrÚreturn_annotationÚ    ParameterÚemptyrárýÚ_HASH_CACHE_FIELDr(r3r&Ú    itertoolsÚchainÚvaluesÚ classmethodÚ staticmethodÚ__func__rrÚfgetÚ cell_contentsrG)r ÚkÚvr«ržÚexisting_slotsÚweakref_inheritedr–rMÚnamesÚ cached_proprÖÚ&additional_closure_functions_to_updateÚclass_annotationsrUÚ
annotationrØÚ
slot_namesÚslotÚslot_descriptorÚ reused_slotsrŒÚitemÚ closure_cellsÚcellÚmatchs                          r!r=z!_ClassBuilder._create_slots_classQs”€ð Ÿ™×,Ñ,Ó.÷
ᐐ1ØÐMœ% × 0Ñ 0Ó1ÐM°:ÐM¸}ÑMÑMð ˆq‰Dð
ˆñ
ô ”3Ð1Ô 2Ü × 'Ñ '¨¯    ©    Ô 2ð×&Ò&Ø*/ˆBÐ&Ñ 'à×+Ò+Ø $§    ¡    × 3Ñ 3òHØ×(Ñ(×,Ñ,Ð-DÀeÕLÜ,8˜˜=Ñ)ÙððˆØ!ÐØŸ    ™    ×)Ñ)¨!¨BÐ/ò    ˆHØ× Ñ ×$Ñ$ ]°DÓ9ÐEØ$(Ð!Ø × !Ñ !ô!(¨°+¸rÓ Böàðœ' (¨DÓ1Ñ1òõ ð    ô˜×)Ñ)Ó*ˆ
à× Ñ ˆà × Ò Ø¤W¨T¯Y©Y¸ ÀRÓ%HÑHØ UÑ*Ù%à Ð%Ñ %ˆEð&(§X¡X£Z÷
á!kܘ+¤Ô7ð +×"Ñ"Ñ "ð
Ðñ
ð24Ð.Ù Ü 0°·±Ó ;Ð Ø/×5Ñ5Ó7ò 9‘
dà˜$˜Ñ àtHØ6×=Ñ=¸dÔCÜ$×.Ñ.¨tÓ4×FÑF
ؤW×%6Ñ%6×%<Ñ%<Ò<Ø.8Ð% dÒ+ð 9ð "Ÿv™v mÓ4Ð ØÐ+Ø6×=Ñ=Ð>NÔOä =Ø!Ð#3°T·Y±Yó!ˆBˆ}Ñ ð (-ÖG˜t°¸JÒ0F’dÐGˆ
ÐGð*8×)=Ñ)=Ó)?÷
á%oؐzÑ!ð /Ñ !ð
ˆ ñ
ð
(2ÖN˜t°TÀÒ5M’dÐNˆ
ÐNØ
    ‰    ,ÔØ × Ò Ø × Ñ Ô/Ô 0ä 
Ó+ˆˆ;‰à!ŸY™Y×3Ñ3ˆˆ>ÑðŒd4—9‘9‹o˜dŸi™i×0Ñ0°$·)±)×2EÑ2EÀrÓJˆô—O‘OØ L‰L× Ñ Ó !Ð#Ió
ò    1ˆDô˜$¤¬lР;Ô<ô!(¨¯ © °}ÀdÓ K‘ ܘD¤(Ô+ô!(¨¯    ©    °=À$Ó G‘ ä '¨¨m¸TÓ B á ØØ%ò 1ð1Ø ×.Ñ.°$·)±)Ð;Eò
Ø-0˜Õ*ñ 1ð!    1ð2ˆ
ùóS
ùòFùó"
ùò>Hùó 
ùò
OøôJ"òáðúsAž+QÄ2Q
Æ3'Q$Ê+    Q*Ê5Q*ËQ/Ë&    Q5Ë0Q5Ð1Q:Ñ:    RÒRc󎇗t‰j|«\}}ˆfd„}‰jj|||f«d‰_‰S)Ncó4•—‰j|d«|d<y)Nr"©rø©Úcls_dictrXr s  €r!Ú _attach_reprz,_ClassBuilder.add_repr.<locals>._attach_reprãsø€Ø#'×#;Ñ#;¸EÀ*Ñ<MÓ#NˆHZÒ  r#T)Ú_make_repr_scriptrúrr˜r)r ÚnsrWrXrxs`    r!Úadd_reprz_ClassBuilder.add_repràsGø€Ü)¨$¯+©+°rÓ:‰ ˆô    Oð     ×Ñ×$Ñ$ f¨e°\Ð%BÔCØˆÔØˆ r#cóz—|js d}t|«‚d„}|j|«|jd<|S)Nz3__str__ can only be generated if a __repr__ exists.có"—|j«Sr/©r"rs r!Ú__str__z&_ClassBuilder.add_str.<locals>.__str__ïs€Ø—=‘=“?Ð "r#r)rrGrørþ)r rQrs   r!Úadd_strz_ClassBuilder.add_strês?€Ø×ÒØGˆCܘS“/Ð !ò    #ð%)×$<Ñ$<¸WÓ$Eˆ‰yÑ!؈ r#cót‡‡—td„|jD««Šˆfd„}|jŠˆˆfd„}||fS)zF
        Create custom __setstate__ and __getstate__ methods.
        c3ó,K—|] }|dk7sŒ    |–—Œy­w)rONr)r±Úans  r!r³z8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>úsèø€ò!
بR°=Ó-@ŒBñ!
ùs‚
cóD•—‰Dcic]}|t||«“Œc}Scc}w)ú9
            Automatically created by attrs.
            ©r•)r r–Ústate_attr_namess  €r!Úslots_getstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstateþs&ø€ð;KÖK°$Dœ' $¨Ó-Ñ-ÒKÐ KùÒKs†cóܕ—tj|«}t|t«rt    ‰|«D]\}}|||«Œn‰D]}||vsŒ||||«Œ‰r|t
d«yy)r…N)rÂrÃrJrLÚziprY)r ÚstateÚ_ClassBuilder__bound_setattrr–rëÚhash_caching_enabledr‡s     €€r!Úslots_setstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstatesø€ô+×2Ñ2°4Ó8ˆOܘ%¤Ô'ô$'Ð'7¸Ó#?ò1‘KD˜%Ù# D¨%Õ0ñ1ð-ò;Dؘu’}Ù'¨¨e°D©kÕ:ð;ñ$ÙÔ 1°4Õ8ð$r#)rLrùrý)r rˆrŽrr‡s   @@r!r&z%_ClassBuilder._make_getstate_setstateõsIù€ô
!ñ!
Ø×)Ñ)ô!
ó
Ðô    Lð  $×/Ñ/Ðõ    9ð,˜~Ð-Ð-r#có$—d|jd<|S©NÚ__hash__)rþrs r!Úmake_unhashablez_ClassBuilder.make_unhashables€Ø%)ˆ‰zÑ"؈ r#cóć—t‰j‰j‰j‰j¬«\}}dˆfd„ }‰j
j |||f«‰S)N©ÚfrozenÚ
cache_hashcó4•—‰j|d«|d<yrru)rwrYr s  €r!Ú attach_hashz+_ClassBuilder.add_hash.<locals>.attach_hash*sø€Ø#'×#;Ñ#;¸DÀÑ<LÓ#MˆHZÒ  r#)rwrrYrÚreturnÚNone)Ú_make_hash_scriptrÚrúrrýrr˜)r rWrXr˜s`   r!Úadd_hashz_ClassBuilder.add_hash"sWø€Ü)Ø I‰IØ K‰KØ—<‘<Ø×'Ñ'ô    
‰ ˆõ    Nð     ×Ñ×$Ñ$ f¨e°[Ð%AÔBàˆ r#cód‡‡—t‰j‰j‰j‰j‰j
‰j ‰j‰j‰j‰j‰jd¬« \}}Šˆˆfd„}‰jj|||f«‰S)NF©Ú
attrs_initcóF•—|d}‰|_‰j|«|d<y)Nr1©r€rø©rwrXr;rr s   €€r!Ú _attach_initz,_ClassBuilder.add_init.<locals>._attach_initAs*ø€Ø˜Ñ$ˆDØ#.ˆDÔ  Ø#'×#;Ñ#;¸DÓ#AˆHZÒ  r#©Ú_make_init_scriptrÚrúrrrrr    rýrûrrrr˜)r rWrXr£rs`   @r!Úadd_initz_ClassBuilder.add_init1s˜ù€Ü%6Ø I‰IØ K‰KØ × Ñ Ø × #Ñ #Ø × Ñ Ø L‰LØ K‰KØ × Ñ Ø × Ñ Ø L‰LØ × Ñ Øô &
Ñ"ˆ{õ    Bð
     ×Ñ×$Ñ$ f¨e°\Ð%BÔCàˆ r#cóD—|jd„«|jd<|S)Ncó—t|fi|¤ŽSr/)r—)r rós  r!r¬z+_ClassBuilder.add_replace.<locals>.<lambda>Ls€¤F¨4Ñ$;°7Ñ$;€r#Ú __replace__)rørþrs r!Ú add_replacez_ClassBuilder.add_replaceJs%€Ø(,×(@Ñ(@Ù ;ó)
ˆ‰}Ñ%ðˆ r#cóV—td„|jD««|jd<y)Nc3ódK—|](}|jr|js|j–—Œ*y­wr/)r;r>r–)r±Úfields  r!r³z/_ClassBuilder.add_match_args.<locals>.<genexpr>Qs)èø€ò1
àØzŠz %§-¢-ð JJñ1
ùs‚.0Ú__match_args__)rLrúrþrs r!Úadd_match_argsz_ClassBuilder.add_match_argsPs'€Ü+0ñ1
àŸ™ô1
ó,
ˆ‰Ð'Ò(r#cód‡‡—t‰j‰j‰j‰j‰j
‰j ‰j‰j‰j‰j‰jd¬« \}}Šˆˆfd„}‰jj|||f«‰S)NTržcóF•—|d}‰|_‰j|«|d<y)NÚ__attrs_init__r¡r¢s   €€r!Ú_attach_attrs_initz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initgs,ø€ØÐ)Ñ*ˆDØ#.ˆDÔ  Ø)-×)AÑ)AÀ$Ó)GˆHÐ%Ò &r#r¤)r rWrXr³rs`   @r!Úadd_attrs_initz_ClassBuilder.add_attrs_initWs™ù€Ü%6Ø I‰IØ K‰KØ × Ñ Ø × #Ñ #Ø × Ñ Ø L‰LØ K‰KØ × Ñ Ø × Ñ Ø L‰LØ × Ñ Øô &
Ñ"ˆ{õ    Hð
     ×Ñ×$Ñ$ f¨eÐ5GÐ%HÔIàˆ r#c󨇗‰j}t‰j«\}}ˆfd„}‰jj    |||f«t
|d<‰S)Ncó4•—‰j|d«|d<y)NÚ__eq__rurvs  €r!Ú
_attach_eqz(_ClassBuilder.add_eq.<locals>._attach_equsø€Ø!%×!9Ñ!9¸%À¹/Ó!JˆHXÒ r#Ú__ne__)rþÚ_make_eq_scriptrúrr˜r¹)r r«rWrXr¸s`    r!Úadd_eqz_ClassBuilder.add_eqpsOø€Ø ^‰^ˆä'¨¯ © Ó4‰ ˆô    Kð     ×Ñ×$Ñ$ f¨e°ZÐ%@ÔA䈈8‰ àˆ r#c󔇗‰j}ˆfd„t‰j‰j«D«\|d<|d<|d<|d<‰S)Nc3ó@•K—|]}‰j|«–—Œy­wr/ru)r±Úmethr s  €r!r³z*_ClassBuilder.add_order.<locals>.<genexpr>s&øèø€òB
àð × $Ñ $ T× *ñB
ùsƒÚ__lt__Ú__le__Ú__gt__Ú__ge__)rþÚ _make_orderrÚrú)r r«s` r!Ú    add_orderz_ClassBuilder.add_order~sLø€Ø ^‰^ˆóB
ä# D§I¡I¨t¯{©{Ó;ôB
Ñ>ˆˆ8‰ b˜‘l B x¡L°"°X±,ð
ˆ r#có\‡—iŠ|jD]C}|jxs |j}|sŒ |tjusŒ3||f‰|j
<ŒE‰s|S|j r d}t|«‚ˆfd„}d|jd<|j|«|jd<d|_
|S)Nz7Can't combine custom __setattr__ with on_setattr hooks.cóh•—    ‰|\}}||||«}t|||«y#t$r|}YŒwxYwr/)ÚKeyErrorrÂ)r r–ÚvalrŸr9ÚnvalÚsa_attrss      €r!réz._ClassBuilder.add_setattr.<locals>.__setattr__˜sGø€ð *Ø" 4™.‘4ñ˜D ! SÓ)ä ˜˜t TÕ *øô ò Ø’ð ús ƒ#£ 1°1TrFré) rúrCrr ÚNO_OPr–rrGrþrør )r rŸrCrQrérÊs     @r!Ú add_setattrz_ClassBuilder.add_setattrˆs­ø€ØˆØ—‘ò    1ˆAØŸ™Ò9¨×)9Ñ)9ˆJÚ˜j´· ± Ò=Ø#$ j =˜Ÿ™Ò ð    1ñ
؈Kà × #Ò #àKˆCܘS“/Ð !ô    +ð37ˆ‰Ð.Ñ/Ø(,×(@Ñ(@ÀÓ(Mˆ‰}Ñ%Ø"&ˆÔàˆ r#cóΗ|jj|_|jj›d|j›|_d|jj›d|_|S)z@
        Add __module__ and __qualname__ to a *method*.
        r®ú$Method generated by attrs for class )rÚr'r(r&r)©r Úmethods  r!r)z(_ClassBuilder._add_method_dunders_unsafe¨s`€ð!ŸI™I×0Ñ0ˆÔà!%§¡×!7Ñ!7Р8¸¸&¿/¹/Ð9JÐKˆÔð3°4·9±9×3IÑ3IÐ2JÈ!Ð Lð    Œðˆ r#cóä—tjt«5|jj|_ddd«tjt«5|jj
›d|j ›|_ddd«tjt«5d|jj
›d|_ddd«|S#1swYŒ˜xYw#1swYŒXxYw#1swY|SxYw)zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr®rÎ)rHrIrJrÚr'r(r&r)rÏs  r!r(z&_ClassBuilder._add_method_dunders_safe¶sҀô×  Ñ  ¤Ó 0ñ    5Ø $§    ¡    × 4Ñ 4ˆFÔ ÷    5ô×  Ñ  ¤Ó 0ñ    PØ%)§Y¡Y×%;Ñ%;Ð$<¸A¸f¿o¹oÐ=NÐ"OˆFÔ ÷    Pô×  Ñ  ¤Ó 0ñ    ^ØCÀDÇIÁI×DZÑDZÐC[Ð[\Ð]ˆFŒN÷    ^ðˆ ÷    5ð    5ú÷    Pð    Pú÷    ^ðˆ ús#šC Á+CÂ# C%à CÃC"Ã%C/N)rŒr3rÆrr*r¾r+r)r™rš)rÐrr™r)r&r'r(r)rQr1r"r:rDrAr=r{r€r&r’rœr¦rªr¯r´r»rÄrÌr)r(rr#r!r÷r÷}s¨„ñð€Ið0cGà ðcGðð    cGð
ð cGð !ó cGòJ<ó'ò$ò2"òHMò^ò    ò'.òRò òò2ò 
òò2 òòó@ ô r#r÷có—|t|du|duf«r d}t|«‚|||fS|€|}|€|}|dur|dur d}t|«‚||fS)úš
    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)r9r?rAÚ
default_eqrQs     r!Ú_determine_attrs_eq_orderrÙÆsy€ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐð €ØCˆxˆð
€zØ ˆà €}؈ࠠ  ˆU{u ‘}Ø=ˆÜ˜‹oÐà ˆuˆ9Ðr#cóì—|t|du|duf«r d}t|«‚d„}|||«\}}||||fS|€|d}}n ||«\}}|€||}}n ||«\}}|dur|dur d}t|«‚||||fS)rÓNrÔcó4—t|«rd|}}||fSd}||fS)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ës1€ô EŒ?ؘu3ˆEðcˆzÐðˆCؐcˆzÐr#FTrÕrÖ)    r9r?rArØrQrÜÚcmp_keyr@rBs             r!rErEâs¼€ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐòð €Ù1°#Ó6‰ ˆˆWؐG˜S 'Ð)Ð)ð
€zØ ˆF‰á/°Ó3‰
ˆˆFà €}ؘvˆy‰á5°eÓ<шˆyà    ˆU{u ‘}Ø=ˆÜ˜‹oÐà ˆvu˜iÐ 'Ð'r#cóT—|dus|dur|S|€|dur|S|D]}t||«sŒy|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ã sL€ð ˆt|t˜u‘}؈ à €|˜  uÑ,؈ðòˆÜ ˜c 6Õ *Ùðð €Nr#Fcó8‡‡‡‡‡‡‡‡    ‡
‡ ‡ ‡ ‡‡‡‡‡‡‡‡‡‡—‰ ddl}|jtd«d¬«t|||d«\ŠŠ||Št    ‰t
t f«rtj‰ŽŠˆ ˆˆˆ ˆˆˆˆˆˆˆˆˆ ˆˆˆˆˆˆˆ
ˆˆ    fd„}|€|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*.
    .. versionchanged:: 25.4.0
       *kw_only* now only applies to attributes defined in the current class,
       and respects attribute-level ``kw_only=False`` settings.
    .. versionadded:: 25.4.0 *force_kw_only*
    NrzQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é)Ú
stacklevelc óŠ•—‰xs t|«}‰duxrt|t«}‰ xr t|d«}|r|r d}t    |«‚| xrt |‰‰ d«}t j}|r |j}n‰dur‰r |jn |j}n~‰dur |j}nm‰€^‰ durt|d«r |j}nN|dur|dur‰r |jn |j}n+|dur |j}n|j}n d}t|«‚t j}‰r‰r |jn |j}    n |j }    t d"id|“d    |“d
‰“d ‰“d t |‰‰ d «“dt |‰‰ d«“d|“d| xrt |‰‰ d«“d|“d‰“d|    “d‰!“d‰“dt |‰‰ d‰¬«“d‰“d‰“Ž}
|
j"s‰r d}t|«‚t%|‰ ‰ |
|¬«} |
j&r| j)‰«|
j*r| j-«|
j.r| j1«|
j2r| j5«‰s| j7«|
j"r| j9«n(|
j:|jur| j=«|
j>r| jA«n| jC«‰r d}t|«‚tDrt|d «s| jG«tHr‰rt|d!«s| jK«| jM«S)#NTréz/Can't freeze a class with a custom __setattr__.)r·r¹Fr‘r5r rrrÚ
added_init©r1Ú
added_reprr~Úadded_eqÚadded_ordering)r¿rÀrÁrÂrÚadded_match_argsr>rÚ    added_strr%)rr)r6r!rÈzlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.)rÆr*r+zFInvalid value for cache_hash.  To use hash caching, init must be True.r©r®r)'Ú_has_frozen_base_classÚ
issubclassrèrŽrGrãr¾rÚ LEAVE_ALONErÚHASHABLEÚ
UNHASHABLErFr¿rÁÚYESrÀÚ is_hashabler÷rêr{rîr€rër»rìrÄrÌrœrr’rèr¦r´rrªrr¯rD)"rŒrÚis_excÚhas_own_setattrrQr?rrr¿Úkwor*ÚbuilderrÆràÚauto_excr–rÇÚeq_rÈÚ force_kw_onlyr•Úgetstate_setstater:r;r>Ú
match_argsrCÚorder_r8Úrepr_nsÚslotsr„rÅÚ weakref_slots"            €€€€€€€€€€€€€€€€€€€€€€r!Úwrapzattrs.<locals>.wrap›s©ø€àÒ9Ô4°SÓ9ˆ    Ø˜TÐ!ÒD¤j°´mÓ&DˆØ%ò
Ô*<Ø ó+
ˆñ ™yØCˆCܘS“/Ð !àˆZò
Ô;Ø kÐ#7ó
ˆô!×,Ñ,ˆ á Ø%×1Ñ1‰KØ T‰\ñð×+Ò+à ×)Ñ)ñ ð
U‰]Ø%×1Ñ1‰KØ ˆ\ؘdÑ"Ô'9¸#¸zÔ'JØ)×5Ñ5‘ ؐt‘     ¨TÑ 1ñ"ð ×/Ò/à$×-Ñ-ñð
u‘Ø)×5Ñ5‘ à)×4Ñ4‘ àJˆCܘC“.Ð  ä ×,Ñ,ˆ Ù Ù'4+×#Ò#¸+¿/¹/‰Cà—.‘.ˆCäò!
Ùð!
áð!
ñð!
ñ%3ð    !
ô
7ؐT˜;¨ ôð !
ô7ؐT˜;¨ ôð!
ñð!
ð &˜:òÜ/ØØØØ8ó    øð!
ñ&$ð'!
ñ((ð)!
ñ*ð+!
ñ,*ð-!
ñ.ð/!
ô0;ØØ!ØØ0Øõ ð1!
ñ>'ð?!
ñ@0ðA!
ˆðF× Ò ¡ZðAˆCܘC“.Ð  äØ Ø Ø%ØØ.ô 
ˆð × Ò Ø × Ñ ˜WÔ %à ?Š?Ø O‰OÔ à >Š>Ø N‰NÔ Ø × Ò Ø × Ñ Ô áØ × Ñ Ô !à × Ò Ø × Ñ Õ Ø × Ñ  +×"8Ñ"8Ñ 8Ø × #Ñ #Ô %à × Ò Ø × Ñ Õ à × "Ñ "Ô $ÙØ^Ü “nÐ$å Ô 2°3¸ Ô FØ × Ñ Ô !õ ÙÜ& sÐ,<Ô=à × "Ñ "Ô $à×"Ñ"Ó$Ð$r#)    ÚwarningsÚwarnÚDeprecationWarningrÙrJrKrLr rM)Ú    maybe_clsrÅrr8r9r:r;rr•rr„rÆr>r–rúr?rAràrÇrýrCrÈrþÚ unsafe_hashrürrrûrÿs ``` ``````````  `````` `  @@r!r{r{'s¡ÿÿý€ðBÐÛà ‰ Ü Øcó ðð        ô    
ô,¨C°°U¸DÓAK€CˆðÐØˆä*œt¤U˜mÔ,Ü—\‘\ :Ð.ˆ
÷G%÷G%÷G%ñG%ðVÐØˆ á     ‹?Ðr#có&—|jtuS)zV
    Check whether *cls* has a frozen ancestor by looking at its
    __setattr__.
    )rérì)rŒs r!rïrï3s€ð
?‰?Ô.Ð .Ð.r#c
óX—d|›d|j›dt|d|j«›dS)zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated ú r®r(r`)r'r•r&)rŒÚ    func_names  r!rÝrÝ;s7€ð
˜I˜; a¨¯©Ð'7°qÜ 3˜¨¯ © Ó 5Ð
6°að    9ðr#cóö‡‡‡    ‡
‡ ‡ —td„‰D««Šd}tt|d««Š iŠ    d}dŠ
dŠ|s|dz }n|dz }|d    z }d
‰
‰d z Š|gŠ ˆˆˆ    ˆ
ˆ ˆ fd „}|rz‰ j|d t›dz«|r,|dt›d|dz«‰ j|dzd z«n|dt›d|dz«‰ j|dt›z«n    |d|«dj ‰ «}|‰    fS)Nc3ótK—|]0}|jdus|jŒ|jdusŒ-|–—Œ2y­w)TN)r:r?r¸s  r!r³z$_make_hash_script.<locals>.<genexpr>Hs1èø€òؘAŸF™F d™N¨q¯v©v©~À!Ç$Á$È$Â,Œñùs ‚8¢8±8ú        r:zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(ú)c    óh•—‰j||z‰z|d‰    ›dzg«‰D]u}|jrEd|j›d}|j‰|<‰j|d|›d|j›dz«ŒT‰j|d|j›dz«Œw‰j|dz‰z«y    )
        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ú,r7Ú_keyú(self.z),ú         self.ú    N)rÜr@r–r˜)
ÚprefixÚindentrŸÚcmp_namer{Úclosing_bracesrXÚ    hash_funcÚ method_linesÚ    type_hashs
    €€€€€€r!Úappend_hash_computation_linesz8_make_hash_script.<locals>.append_hash_computation_lines`sÒø€ð    ×Ñà˜‘ )Ñ+ؘ8 I ;¨aÐ0Ñ0ð ô    
ðò    HˆA؏xŠxؘqŸv™v˜h dÐ+Ø"#§(¡(h‘Ø×#Ñ#ؘx¨ z°¸¿¹°x¸rÐBÑBõð×#Ñ# F¨}¸Q¿V¹V¸HÀAÐ-FÑ$FÕGð    Hð    ×јF V™O¨nÑ<Õ=r#zif self.z     is None:zobject.__setattr__(self, 'ú', råúself.ú = z return self.zreturn rÙ)rLr:rÝr˜rYrº) rŒr{r•r–ÚtabÚhash_defrrWrrXrrrs  `      @@@@@r!r›r›EsFý€ô ñØôó €Eð €CäÔ.¨s°FÓ;Ó<€Ià €Eà"€HØ€IØ€N٠ؐDщàEшàÐYÑYˆØ%¨    Ñ1ˆ    Ø˜#шà:€L÷>ñ>ñ4Ø×јC HÔ->Ð,?¸yÐ"IÑIÔJÙ Ù )Ø,Ô->Ð,?¸sÐCÀSÈ1ÁWô ð × Ñ   a¡¨#¡ Õ .á )ØÔ)Ð*¨#Ð.°°a±ô ð    ×јC LÔ1BÐ0CÐ"DÑDÕEá% i°Ô5à Y‰Y|Ó $€FØ 5ˆ=Ðr#cón—t||dd¬«\}}t||t|d«¬«|d|_|S)z%
    Add a hash method to *cls*.
    Fr”r‘©rZ)r›r\rÝr‘©rŒr{rWrXs    r!Ú    _add_hashr'sG€ô&Ø ˆU˜5¨UôM€FˆEôؐԠ9¸#¸zÓ Jõð˜Ñ$€C„LØ €Jr#cóF—|j|«}|turtS| S)z^
    Check equality and either forward a NotImplemented or
    return the result negated.
    )r·ÚNotImplemented)r ÚotherÚresults   r!r¹r¹›s(€ð
[‰[˜Ó €FØ ”ÑÜÐàˆ:Ðr#c ó,—|Dcgc]}|jsŒ|‘Œ}}gd¢}i}|rÆ|jd«|D]ž}|jrRd|j›d}|j||<|jd|›d|j›d|›d|j›d        «n+|jd
|j›d |j›«||d usŒ”|d ›d |d <Œ |jd«n|jd«dj    |«}||fScc}w)z6
    Create __eq__ method for *cls* with *attrs*.
    )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz     return  (r7rrrz) == z(other.rrz
 == other.r^z andz    )z    return TruerÙ)r?r˜r@r–rº)r{rŸrÞrXrrWs      r!rºrº§s€ðÖ &1 §£ŠQÐ &€EÐ &ò €Eð €EÙ Ø  ‰ _Ô%Øò     /ˆA؏xŠxؘqŸv™v˜h dÐ+ð#$§(¡(h‘Ø— ‘ ؘx˜j¨¨q¯v©v¨h°e¸H¸:ÀWÈQÏVÉVÈHÐTUÐVõð— ‘ ˜}¨Q¯V©V¨H°J¸q¿v¹v¸hÐGÔHؘ˜b™    Ò!Ø$ R™y˜k¨Ð.b’    ð     /ð     ‰ WÕà  ‰ Ð&Ô'à Y‰YuÓ €Fà 5ˆ=Ðùò= 's
…D—Dc󈇇—‰Dcgc]}|jsŒ|‘Œc}Šˆfd„Šˆfd„}ˆfd„}ˆfd„}ˆfd„}||||fScc}w)z9
    Create ordering methods for *cls* with *attrs*.
    có<•‡—td„ˆfd„‰D«D««S)z&
        Save us some typing.
        c3ó:K—|]\}}|r||«n|–—Œy­wr/r)r±rër­s   r!r³z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Ös'èø€ò
ᐐsñ‰CŒJ 5Ó (ñ
ùs‚c3ób•K—|]&}t‰|j«|jf–—Œ(y­wr/)r•r–rB)r±rŸÚobjs  €r!r³z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Øs*øèø€òØ89”˜˜aŸf™fÓ% q§{¡{Ô3ñùsƒ,/)rL)r1r{s`€r!Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tupleÒs)ù€ôñ
óØ=Bôô
ó
ð    
r#cób•—|j|jur‰|«‰|«kStS©z1
        Automatically created by attrs.
        ©r°r)©r r*r2s  €r!r¿z_make_order.<locals>.__lt__Ýó0ø€ð ?‰?˜dŸn™nÑ ,Ù! $Ó'©.¸Ó*?Ñ?Ð ?äÐr#cób•—|j|jur‰|«‰|«kStSr4r5r6s  €r!rÀz_make_order.<locals>.__le__æó0ø€ð ?‰?˜dŸn™nÑ ,Ù! $Ó'©>¸%Ó+@Ñ@Ð @äÐr#cób•—|j|jur‰|«‰|«kDStSr4r5r6s  €r!rÁz_make_order.<locals>.__gt__ïr7r#cób•—|j|jur‰|«‰|«k\StSr4r5r6s  €r!rÂz_make_order.<locals>.__ge__ør9r#)rA)rŒr{rŸr¿rÀrÁrÂr2s `     @r!rÃrÃÌsKù€ðÖ )1 §£ŠQÒ )€Eô    
ôôôôð 6˜6 6Ð )Ð)ùòc *s‡?™?có˜—|€ |j}t|«\}}t||t|d«¬«|d|_t
|_|S)z5
    Add equality methods to *cls* with *attrs*.
    r·r%)rrºr\rÝr·r¹r&s    r!Ú_add_eqr=sR€ð €}Ø×#Ñ#ˆä# EÓ*M€FˆEÜØÔ 9¸#¸xÓ Hõðx‘€C„JÜ€C„Jà €Jr#cóÒ—td„|D««}|Dcic]\}}}|tk7sŒ|dz|“Œ}}}}t|d<t|d<t|d<g}|D]B\}}}|rd|znd|zdz}    |tk(r|›d    |    ›d
n
|›d    |›d |    ›d }
|j |
«ŒDd j |«} |€d} n|dz} ddddddddddddd| ›d| ›dddg} d j | «|fScc}}}w)!zC
    Create the source and globs for a __repr__ and return it.
    c3ó¦K—|]I}|jdur9|j|jdurtn |j|jf–—ŒKy­w)FTN)r8r–r;r¸s  r!r³z$_make_repr_script.<locals>.<genexpr>sCèø€ò"à Ø 6‰6˜Ñ ð
‰˜!Ÿ&™& D™.•$¨a¯f©f°q·v±vÔ>ñ"ùs‚AAÚ_reprr rJrr zgetattr(self, "z ", NOTHING)z={z!r}z_repr(z)}r¦z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __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Ù)rLr8r rJrr˜rº)r{rzÚattr_names_with_reprsr–Úrr7rXÚattribute_fragmentsroÚaccessorÚfragmentÚ repr_fragmentÚcls_name_fragmentrÞs              r!ryrysg€ô"ñ"àô"óÐð -B÷ ð Ù(˜d A qÀQÌ$ÃYˆˆw‰˜Ñð €Eò ô€Eˆ)ÑÜ,€EÐ
ÑÜ€Eˆ)ÑØÐØ+ò    -‰
ˆˆaáˆGdŠNÐ%6¸Ñ%=À Ñ%Mð    ð
”DŠyò ¢Ñ *â'+ªT²8Ð<ð    ð
    ×"Ñ" 8Õ,ð    -ð—I‘IÐ1Ó2€Mà    €zØOÑàÐ!=Ñ=Ðð    ØØDØ"Ø+ØDØØ-ØØØ-ØØ
Ð)Ð*¨!¨M¨?¸"Ð=ØØ.ð €Eð$ 9‰9UÓ ˜UÐ "Ð"ùôU s
™C"¬C"có„—|€ |j}t||«\}}t||t|d«¬«|d|_|S)z%
    Add a repr method to *cls*.
    r"r%)rryr\rÝr")rŒrzr{rWrXs     r!Ú    _add_reprrJNsN€ð €}Ø×#Ñ#ˆä% e¨RÓ0M€FˆEÜØÔ 9¸#¸zÓ Jõð˜Ñ$€C„LØ €Jr#có̗t|«}|€t|t«s d}t|«‚t    |dd«}|€*|t    |dd«}|    ||_|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.)rrJr3rFr•rr)rŒÚ generic_baserQr{s    r!rñrñ]s‡€ô.$ CÓ(€LàФJ¨s´DÔ$9Ø.ˆÜ˜‹nÐä CÐ*¨DÓ 1€Eà €}Ø Ð #ܘLÐ*;¸TÓBˆEØÐ ð',Ô#ؐ ؐÐ8Ð9ˆÜ" 3Ó'Ð'à €Lr#cóº—t|t«s d}t|«‚t|dd«}|€|›d}t    |«‚|Dcic]}|j
|“Œc}Scc}w)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
    rLrNrM)rJr3rFr•rr–)rŒrQr{rŸs    r!Ú fields_dictrP‹se€ô& cœ4Ô  Ø.ˆÜ˜‹nÐÜ CÐ*¨DÓ 1€EØ €}ؐÐ8Ð9ˆÜ" 3Ó'Ð'Ø$Ö %˜!ˆAF‰FA‰IÒ %Ð%ùÒ %sÁAc    ó¸—tjduryt|j«D]/}|j}|€Œ|||t ||j ««Œ1y)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°r7r•r–)rôrŸrcs   r!r#r#¨sR€ô×Ñ %Ñ'Øä D—N‘NÓ #ò.ˆØ K‰KˆØ ‰=Ù ˆdA”w˜t Q§V¡VÓ,Õ -ñ.r#cóH—|j|«}|xrd|jvS)z>
    Check if the attribute name comes from a slot class.
    rQ)r¨r‹)Úa_namerrŒs   r!Ú _is_slot_attrrUºs(€ð ×
˜FÓ
#€CØ Ò .; #§,¡,Ð.Ð.r#c ó¼—|
duxr|
tju} |r| r d} t| «‚|xs|}g}i}|D]ƒ}|js|jt
urŒ"|j |«|||j<|j|dur d} t| «‚d}Œb| sŒe|jtjusŒ‚d}Œ…t|||||||||    || | rdnd« \}}}|jtjvr6|jtj|jj«|jt
|dœ«|rtj |d<|||fS)Nz$Frozen classes can't use on_setattr.Tr²r1)rÚ    attr_dictr×)r rËrGr;r6rr˜r–rCÚ_attrs_to_init_scriptr'rSÚmodulesr5r‹rÂrÃ)rŒr{Úpre_initÚpre_init_has_argsÚ    post_initr•rr–rröÚcls_on_setattrrŸÚhas_cls_on_setattrrQÚneeds_cached_setattrÚfiltered_attrsrWrŸrWrXrs                     r!r¥r¥Âsj€ð    ˜dÐ"ÒJ ~¼W¿]¹]Ð'JðñÑ$Ø4ˆÜ˜‹oÐà%Ò/¨ÐØ€NØ€IØ ò(ˆØvŠv˜!Ÿ)™)¤wÑ.Ø à×јaԠ؈    !—&‘&Ñà <‰<Ð #ؘ‰~Ø<Ü  “oÐ%à#'Ñ  Ú  A§L¡L¼¿ ¹ Ò$EØ#'Ñ  ð(ô "7ØØØ ØØØØØØØØÙ&ѨJó "Ñ€FˆE;ð ‡~~œŸ™Ñ$à  ‰ ”S—[‘[ §¡Ñ0×9Ñ9Ô:à    ‡LLœW°9Ñ=Ô>áô(4×';Ñ';ˆÐ#Ñ$à 5˜+Ð %Ð%r#có—d|›d|›dS)zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('rrr)rwÚ    value_varÚhas_on_setattrs   r!Ú_setattrres€ð˜    { # i [°Ð 2Ð2r#Ú    Convertercó4—d|›d|j||«›dS)zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    rbrr)Ú_fmt_converter_call©rwrcrdr<s    r!Ú_setattr_with_converterrjs(€ð˜    { # i×&CÑ&CÀIÈyÓ&YÐ%ZÐZ[Ð \Ð\r#có0—|r t||d«Sd|›d|›S)zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Tr r!)re)rwrërds   r!Ú_assignrls)€ñ
ܘ     5¨$Ó/Ð/à 9+˜S  Ð (Ð(r#cóR—|rt||d|«Sd|›d|j||«›S)z
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Tr r!)rjrhris    r!Ú_assign_with_converterrn#s9€ñÜ& y°)¸TÀ9ÓMÐMà 9+˜S ×!>Ñ!>¸yÈ)Ó!TРUÐ VÐVr#cóއ—|dur4|dur dttfS                                dˆfd„ }                                        dˆfd„ }d||fSdttfS)zg
    Determine the correct setter functions based on whether a class is frozen
    and/or slotted.
    TrcóF•—t|‰«r t|||«Sd|›d|›S©Nú _inst_dict['z'] = )rUre)rwrcrdrs   €r!Ú
fmt_setterz&_determine_setters.<locals>.fmt_setter@s1ø€ô˜Y¨ Ô6Ü     ¨9°nÓEÐEà! ) ¨E°)°Ð=Ð =r#cól•—|s t|‰«rt||||«Sd|›d|j||«›Srq)rUrjrh)rwrcrdr<rs    €r!Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converterHsLø€ñ ¤¨y¸-Ô!HÜ.ؘy¨.¸)óðð" ) ¨E°)×2OÑ2OÐPYÐ[dÓ2eÐ1fÐgÐ gr#)z_inst_dict = self.__dict__©rwr„rcr„rdrr™r„©
rwr„rcr„rdrr<rfr™r„)rerjrlrn)r•rrrsrus  `  r!Ú_determine_settersrx0s¤ø€ð~Ø D‰=Ø”xÔ!8Ð8Ð 8ð    >Øð    >Ø'*ð    >Ø<@ð    >à õ    >ð     hØð     hàð     hð!ð     hð!ð         hð
õ     hð ,Ø Ø %ð
ð    
ð ŒwÔ.Ð .Ð.r#c
óì —|rdgng} |    r| jd«t|||«\} }}| j| «g}g}g}g}i}ddi}|D]}|jr|j|«|j}|j
duxs |j
t juxr|
}|j}t|jt«}|r|jjrdnd}|j0t|jt«st|j«}n |j}|jdur|r›t |jfz}|J| j|||d|›d    z||««|j||j#|j«<n | j|||d|›d    z|««|jj$||<n |H| j||d
|›d ||««|j||j#|j«<nÖ| j||d
|›d |««n·|jt&ur«|s©|›d |›d }|j(r|j|«n"|j|«|j|«|D| j|||||««|j||j#|j«<n| j||||««nú|rY|›d }|j(r|j|«n"|j|«|j|«| jd|›d«t |jfz}|}| jd|||||«z«| jd«| jd|||dz|zd    z||«z«|j||j#|j«<nR| jd||||«z«| jd«| jd|||dz|zd    z|«z«|jj$||<nž|j(r|j|«n"|j|«|j|«|C| j|||||««|j||j#|j«<n| j||||««|jdusŒÃ|j*|€|j*||<Œâ|€Œæ|j,sŒô|j,||<Œ|rxt.|d<| jd«|D]Y}d|jz}d|jz}| jd|›d|›d|j›d    «|j||<|||<Œ[|r| jd«|r5|r|r dt0›d} ndt0›d} n
dt0›d} | j| «|r-d j3d!„|D««}!| jd"|!›d    «d#j3|«}d#j3|«}|rV||rd#nd›d$d#j3|«›z }d#j3d%„|D«D"cgc]    }"|"›d&|"›‘Œ c}"«}#||rd#ndz }||#z }|r |r    d'|›d    | d(<d)}$d*| ›d|›d+| r|$j3| «nd,›d-||fScc}"w).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.
    zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)r™Nr ÚFrArz attr_dict['z
'].defaultz =attr_dict['z=NOTHINGzif z is not NOTHING:rzelse:Tr z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()rbz', None)rrz    '] = Noner z = Nonerc3óTK—|] }|jsŒd|j›–—Œ"y­w)r N)r;r–r¸s  r!r³z(_attrs_to_init_script.<locals>.<genexpr>E    s!èø€ÒB¨Q¸1¿6»6˜% §¡˜xÔ(ÑBùs‚(”(zBaseException.__init__(self, r¦z*, c3óDK—|]}|jd«d–—Œy­w)ú=rN)Úsplit)r±Úkwas  r!r³z(_attrs_to_init_script.<locals>.<genexpr>R    sèø€Ò#N¸# C§I¡I¨c£N°1Õ$5Ñ#Nùs‚ rzself.__attrs_pre_init__(rz
    zdef z):
    ÚpassrÙ)r˜rxrÜr7r–rCr rËrDrJr6rIÚ
takes_selfr<rfr;Ú_INIT_FACTORY_PATÚ_get_global_namerPrr>r3Ú_first_param_typer rYrº)%r{rrÚ call_pre_initr[Úcall_post_initÚdoes_cache_hashrrör_r^Ú method_namerÞÚ extra_linesrsruròÚ pre_init_argsÚ kw_only_argsÚattrs_to_validateÚnames_for_globalsrrŸrwrdÚarg_nameÚ has_factoryÚ
maybe_selfr<Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚ kw_arg_nameÚpre_init_kw_only_argsÚNLs%                                     r!rXrX_sh€ñ(.;Ð (Ñ )À€EáØ  ‰ ð 3ô        
ô:Lؐ:˜}ó:Ñ6€KÐ6ð
‡LLÔà €DØ€MØ€LØÐðÐØ˜TÐ"€Kà óXDˆØ ;Š;Ø × $Ñ $ QÔ 'à—F‘Fˆ    ØŸ™¨TÐ1ò
Ø L‰L¤§ ¡ Ð -Ò DÐ2Dð    ð
—7‘7ˆä  §¡¬GÓ4ˆ Ù*¨q¯y©y×/CÒ/C‘VȈ
à ;‰;Ð "¬:°a·k±kÄ9Ô+MÜ! !§+¡+Ó.‰IàŸ ™ ˆIà 6‰6UŠ?ÙÜ$5¸¿¹¸    Ñ$AÐ!ØÐ(Ø—L‘LÙ1Ø%Ø-°!°J°<¸qÐ0AÑAØ*Ø%ó    ôð"×+Ñ+ð& i×&@Ñ&@ÀÇÁÓ&HÒIð—L‘LÙ"Ø%Ø-°!°J°<¸qÐ0AÑAØ*óôð89·y±y×7HÑ7HÐ!Ð"3Ó4ØÐ&Ø— ‘ Ù-Ø!Ø% i [°
Ð;Ø&Ø!ó    ôð×'Ñ'ð" )×"<Ñ"<¸Q¿V¹VÓ"DÓEð— ‘ ÙØ!Ø% i [°
Ð;Ø&óöðY‰YœgÑ %©kؐJ˜l¨9¨+°ZÐ@ˆC؏yŠyØ×#Ñ# CÕ(à— ‘ ˜CÔ Ø×$Ñ$ XÔ.àÐ$Ø— ‘ Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð" )×"<Ñ"<¸Q¿V¹VÓ"DÓEð— ‘ ™Z¨    °8¸^ÓLÖMâ ØJ˜hÐ'ˆC؏yŠyØ×#Ñ# CÕ(à— ‘ ˜CÔ Ø×$Ñ$ XÔ.Ø L‰L˜3˜x˜jÐ(8Ð9Ô :ä 1°Q·V±V°IÑ =Ð ØÐ$Ø— ‘ ØÙ/Ø! 8¨^¸Yóñôð — ‘ ˜WÔ%Ø— ‘ ØÙ/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ó    ñôð×'Ñ'ð" )×"<Ñ"<¸Q¿V¹VÓ"DÒEð— ‘ Ø™Z¨    °8¸^ÓLÑLôð— ‘ ˜WÔ%Ø— ‘ ØÙ Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&óñôð45·9±9×3DÑ3DÐ Ð/Ò 0àyŠyØ×#Ñ# HÕ-à— ‘ ˜HÔ%Ø×$Ñ$ XÔ.àÐ$Ø— ‘ Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð" )×"<Ñ"<¸Q¿V¹VÓ"DÒEð— ‘ ™Z¨    °8¸^ÓLÔMà 6‰6T‹>؏v‰vÐ! iÐ&7Ø()¯© ˜HÓ%ØÒ&¨9×+FÔ+Fà(1×(CÑ(C ˜HÓ%ðqXDñtÜ'.И)Ñ$Ø  ‰ Ð:Ô;Ø"ò    -ˆAØ*¨Q¯V©VÑ3ˆHØ! A§F¡FÑ*ˆIØ L‰L˜4 ˜z¨°° ¸7À1Ç6Á6À(È!ÐLÔ MØ*+¯+©+Ð ˜hÑ 'Ø+,Ð ˜iÒ (ð     -ñØ  ‰ Ð1Ô2ñÙ ÙØ$.Ô/@Ð.AÀÐ"J‘à$0Ô1BÐ0CÀ9Ð"M‘à %Ô&7Ð%8¸Ð@ˆOØ  ‰ _Ô%ñ؏x‰xÑB°%ÔBÓBˆà  ‰ Ð4°T°F¸!Ð<Ô=à 9‰9T‹?€DØ—I‘I˜mÓ,€MÙà ™4‘4 RÐ(¨¨D¯I©I°lÓ,CÐ+DÐEÑEˆØ $§    ¡    ñ$OÀÔ#Nö ð ð-˜q   Ò.ò ó!
Ðð    ¡™°BÑ6ˆ ØÐ.Ñ.ˆ áÑ*à-¨m¨_¸AÐ>ˆˆa‰ð
€Bà  ˜W T Fð+Ù€R‡WWˆU„^ &Ð)ð*ð    ð    Øð  ðùò sÚ[1có$—|jd«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.
    r7)Úlstriprs r!rÄrÄg    s€ð ;‰;sÓ Ðr#cón—eZdZdZdZ                                        d d„Zd„Ze    d                     d d„«Zd„Z    d„Z
d    „Z d
„Z y)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–r6r7r8r?r@rArBr:r;r=r3r<r>r’rCrDNcóÞ—t||xs| |xs|d«\} }}}tj|«}|d|«|d|«|d|«|d|«|d| «|d|«|d|«|d    |«|d
|«|d |«|d | «|d |    rtjt |    ««nt «|d|
«|d| «|d|«|d|«|d|«y)NTr–r6r7r8r?r@rArBr:r;r<r=r3r>r’rCrD)rErÂrÃÚtypesÚMappingProxyTyperÚ_EMPTY_METADATA_SINGLETON)r r–r6r7r8r9r:r;r’r=r3r<r>r?r@rArBrCrDÚ bound_setattrs                    r!r1zAttribute.__init__³    s€ô*(BØ ’˜2˜yÒ1¨E°4ó(
Ñ$ˆˆFE˜9ô
%×,Ñ,¨TÓ2ˆ ñ    f˜dÔ#ِi Ô)ِk 9Ô-ِf˜dÔ#ِd˜BÔِh Ô'ِg˜uÔ%ِk 9Ô-ِf˜dÔ#ِf˜dÔ#ِk 9Ô-ÙØ ñô×&Ñ&¤t¨H£~Ô6ä.ô     
ñ    f˜dÔ#ِi Ô)ِk 9Ô-ِl JÔ/ِg˜uÕ%r#có—t‚r/)rrês   r!rézAttribute.__setattr__ê    s€Ü!Ð!r#cóÀ—|€ |j}n|jd|›d}t|«‚|||j|j|jd|j
|j d|j||j|j€|n |j|j|j|j|j|j|j«S)Nz>Type annotation and type argument cannot both be present for 'z'.F)r3rGÚ_defaultÚ
_validatorr8r:r;r=r<r>r?r@rArBrCrD)rŒr–rÐr>r3rQs      r!r½zAttribute.from_counting_attrí    s½€ð ˆ<Ø—7‘7‰DØ W‰WÐ  ØRÐSWÐRXÐXZÐ[ˆCܘS“/Ð !ÙØ Ø K‰KØ M‰MØ G‰GØ Ø G‰GØ G‰GØ Ø K‰KØ Ø L‰LØ—z‘zÐ)‰G¨r¯z©zØ E‰EØ I‰IØ H‰HØ L‰LØ M‰MØ H‰Hó%
ð    
r#c ón—tj|«}|j|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—zAttribute.evolve
s(€ôi‰i˜‹oˆà  ‰ g—m‘m“oÔ&àˆ
r#có@‡—tˆfd„‰jD««S)ú(
        Play nice with pickle.
        c3ój•K—|]*}|dk7r t‰|«nt‰j«–—Œ,y­w)r=N)r•rr=©r±r–r s  €r!r³z)Attribute.__getstate__.<locals>.<genexpr>%
s5øèø€ò
àð$(¨:Ò#5ŒGD˜$Ô ¼4ÀÇ Á Ó;NÓ Nñ
ùsƒ03©rLrQrs`r!rzAttribute.__getstate__!
s#ø€ôó
àŸ™ô
ó
ð    
r#cóN—|jt|j|««y©r¬N)r©rŠrQ©r r‹s  r!rzAttribute.__setstate__*
s€ð     ‰”s˜4Ÿ>™>¨5Ó1Õ2r#c    óº—tj|«}|D]A\}}|dk7r
|||«Œ|||rtjt    |««nt
«ŒCy)Nr=)rÂrÃrŸr rr¡)r Úname_values_pairsr¢r–rës     r!r©zAttribute._setattrs0
s^€Ü$×,Ñ,¨TÓ2ˆ Ø,ò     ‰KˆD%ؐzÒ!Ù˜d EÕ*áØñ!ô×.Ñ.¬t°E«{Ô;ä6õ ñ         r#)
NNNFNNNNNNr/)r–r„rÐrOr>r) r&r'r(r)rQr1rér]r½r—rrr©rr#r!r¼r¼r    s~„ñ(ðX€Ið<Ø ØØØ ØØØØØó'5&òn"ðà?Cð
Øð
Ø)ð
Ø48ò
óð
òBò$
ò3ó r#r¼r=) r–r6r7r8r9r?rAr:r;r’rD)r{r’có|—eZdZdZdZged„dD««¢eddddddddddddddd¬    «‘­Zd
Zd „Z    d „Z
d „Z y)rOa
    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¦rDr<r©r?r@r:r;r>r=rCrArBr8r3c#ójK—|]+}t|t|«tdddddddddddd¬«–—Œ-y­w)NTF©r–rDr6r7r8r9r:r;r>r?r@rArBr’rC)r¼rÄr)r±r–s  r!r³z_CountingAttr.<genexpr>v
sVèø€ò
ð$ô# ØÜ-¨dÓ3ÜØØØØØØØØØØØØ÷ ð ñ
ùs‚13)    r©r¥r8r?rAr:r;rCrDr=NTFr·rcó2—txjdz c_tj|_||_||_||_||_| |_| |_| |_    ||_
||_ ||_ ||_ |    |_|
|_||_||_yrµ)rOÚ cls_counterr©r¥r¦r<r8r?r@rArBr:r;r=r3r>rCrD)r r6r7r8r9r:r;r<r=r3r>r?r@rArBrCrDs                 r!r1z_CountingAttr.__init__¨
s‹€ô&    ×!Ò! QÑ&Õ!Ü$×0Ñ0ˆŒ ؈Œ Ø#ˆŒØ"ˆŒØˆŒ    ØˆŒØˆŒ ؈Œ
Ø"ˆŒØˆŒ    ØˆŒ    Ø ˆŒ ؈Œ    ØˆŒ Ø$ˆŒØˆ
r#cóf—|j€    ||_|St|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!r7z_CountingAttr.validatorÍ
s5€ð ?‰?Ð "Ø"ˆDŒOðˆ ô# 4§?¡?°DÓ9ˆDŒO؈ r#cóZ—|jturt‚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¥rrrIr»s  r!r6z_CountingAttr.defaultÛ
s)€ð =‰=¤Ñ 'Ü(Ð (ä °Ô6ˆŒ àˆ r#) r&r'r(r)rQrLr¼rr¹r1r7r6rr#r!rOrOZ
s…„ñð€Ið$0Ù    ñ
ð$
ô%
ó
 
ð0ñ>    ØØØØØØØØØØØØØØØô    
ñ?0€Oðb€Kò#òJ ór#rOcó~—eZdZdZGd„dej
«ZGd„dej
«ZdZd„Z    e
d„«Z y    )
r¾a¥
    Effective class properties as derived from parameters to `attr.s()` or
    `define()` decorators.
 
    This is the same data structure that *attrs* uses internally to decide how
    to construct the final class.
 
    Warning:
 
        This feature is currently **experimental** and is not covered by our
        strict backwards-compatibility guarantees.
 
 
    Attributes:
        is_exception (bool):
            Whether the class is treated as an exception class.
 
        is_slotted (bool):
            Whether the class is `slotted <slotted classes>`.
 
        has_weakref_slot (bool):
            Whether the class has a slot for weak references.
 
        is_frozen (bool):
            Whether the class is frozen.
 
        kw_only (KeywordOnly):
            Whether / how the class enforces keyword-only arguments on the
            ``__init__`` method.
 
        collected_fields_by_mro (bool):
            Whether the class fields were collected by method resolution order.
            That is, correctly but unlike `dataclasses`.
 
        added_init (bool):
            Whether the class has an *attrs*-generated ``__init__`` method.
 
        added_repr (bool):
            Whether the class has an *attrs*-generated ``__repr__`` method.
 
        added_eq (bool):
            Whether the class has *attrs*-generated equality methods.
 
        added_ordering (bool):
            Whether the class has *attrs*-generated ordering methods.
 
        hashability (Hashability): How `hashable <hashing>` the class is.
 
        added_match_args (bool):
            Whether the class supports positional `match <match>` over its
            fields.
 
        added_str (bool):
            Whether the class has an *attrs*-generated ``__str__`` method.
 
        added_pickling (bool):
            Whether the class has *attrs*-generated ``__getstate__`` and
            ``__setstate__`` methods for `pickle`.
 
        on_setattr_hook (Callable[[Any, Attribute[Any], Any], Any] | None):
            The class's ``__setattr__`` hook.
 
        field_transformer (Callable[[Attribute[Any]], Attribute[Any]] | None):
            The class's `field transformers <transform-fields>`.
 
    .. versionadded:: 25.4.0
    có&—eZdZdZdZ    dZ    dZ    dZy)úClassProps.HashabilityzO
        The hashability of a class.
 
        .. versionadded:: 25.4.0
        ÚhashableÚhashable_cacheÚ
unhashableÚ leave_aloneN)r&r'r(r)ròrrórñrr#r!rr¿6 s)„ñ     ð ˆØ#Ø*ˆØ6Ø!ˆ
Ø+Ø#ˆ Ø'r#rcó —eZdZdZdZ    dZ    dZy)úClassProps.KeywordOnlyzw
        How attributes should be treated regarding keyword-only parameters.
 
        .. versionadded:: 25.4.0
        rÏÚyesÚforceN)r&r'r(r)rÀrôrÁrr#r!r¿rÅF s!„ñ     ð ˆØ.؈ØQ؈Ø.r#r¿©r rrrr>rrèrêrërìrrírîr%r!rÈcóä—||_||_||_||_||_||_||_||_|    |_|
|_    | |_
| |_ | |_ ||_ ||_||_yr/rÈ)r r rrrr>rrèrêrërìrrírîr%r!rÈs                 r!r1zClassProps.__init__g s}€ð&)ˆÔØ$ˆŒØ 0ˆÔØ"ˆŒØˆŒ Ø'>ˆÔ$Ø$ˆŒØ$ˆŒØ ˆŒ Ø,ˆÔØ&ˆÔØ 0ˆÔØ"ˆŒØ,ˆÔØ.ˆÔØ!2ˆÕr#cóž—|jtjjuxs&|jtjjuSr/)rr¾rròrrs r!rõzClassProps.is_hashable‹ sC€ð × Ñ ¤
× 6Ñ 6× ?Ñ ?Ð ?ò JØ×Ѥ:×#9Ñ#9×#IÑ#IÐIð    
r#N) r&r'r(r)r*ÚEnumrr¿rQr1rrrõrr#r!r¾r¾ñ
sJ„ñBôH(d—i‘iô(ô  /d—i‘iô /ð€Iò&"3ðHñ
óñ
r#r¾có(—eZdZdZdZdd„Zd„Zd„Zy)rIa÷
    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*
    ©rPrƒcó —||_||_yr/rÍ)r rPrƒs   r!r1zFactory.__init__¼ s€ØˆŒ Ø$ˆr#có@‡—tˆfd„‰jD««S)r¬c3ó6•K—|]}t‰|«–—Œy­wr/r†r®s  €r!r³z'Factory.__getstate__.<locals>.<genexpr>Ä søèø€ÒD¨T”W˜T 4×(ÑDùsƒr¯rs`r!rzFactory.__getstate__À sø€ôÓD°T·^±^ÔDÓDÐDr#cóZ—t|j|«D]\}}t|||«Œyr±)rŠrQrL)r r‹r–rës    r!rzFactory.__setstate__Æ s.€ô˜tŸ~™~¨uÓ5ò    '‰KˆD%Ü D˜$ Õ &ñ    'r#N)F)r&r'r(r)rQr1rrrr#r!rIrI§ s„ñð$*€Ió%òEó 'r#rI)
r–r6r7r8r9r?rAr:r;r’cóH—eZdZdZdZdddœd„Zed d„«Zd d„Zd„Z    d    „Z
y
) rfae
    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󮇗|‰_|‰_|‰_t|«}|j    «‰_‰js‰js ˆfd„‰_nP‰jr‰js ˆfd„‰_n-‰js‰jr ˆfd„‰_n
ˆfd„‰_|j«}||‰j jd<yy)Ncó&•—‰j|«Sr/©r<)rër7Ú__r s   €r!r¬z$Converter.__init__.<locals>.<lambda> sø€°·±ÀÓ1F€r#có(•—‰j||«Sr/rÙ)rëÚinstancerÚr s   €r!r¬z$Converter.__init__.<locals>.<lambda>
sø€¸¿¹Øxó9€r#có(•—‰j||«Sr/rÙ)rërÚr­r s   €r!r¬z$Converter.__init__.<locals>.<lambda> sø€°T·^±^ؐuó6€r#có*•—‰j|||«Sr/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!r1zConverter.__init__ÿ s³ø€Ø"ˆŒØ$ˆŒØ&ˆÔä ! )Ó ,ˆØ!#×!8Ñ!8Ó!:ˆÔà—’ 4×#3Ò#3ÛFˆDMØ _Š_ T×%5Ò%5óˆDMð—’ T×%5Ò%5óˆDMóˆDŒMð× Ñ Ó !ˆØ ˆ>Ø68ˆDM‰M× )Ñ )¨(Ò 3ð r#có —d|›S)zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r)rws r!r…zConverter._get_global_name s€ð # 9 +Ð.Ð.r#có>—|js#|js|j|«›d|›dS|jr&|jr|j|«›d|›d|›dS|jr|j|«›d|›dS|j|«›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`.
        rArz, self, attr_dict['z'])z, self)z , attr_dict[')rƒrÕr…)r rwrcs   r!rhzConverter._fmt_converter_call" s¶€ð —’ 4×#3Ò#3Ø×+Ñ+¨IÓ6Ð7°q¸¸ À1ÐEÐ Eà ?Š?˜t×/Ò/Ø×+Ñ+¨IÓ6Ð7°q¸¸ ÐCVÐW`ÐVaÐadÐeÐ eà ?Š?Ø×+Ñ+¨IÓ6Ð7°q¸¸ À7ÐKÐ Kà×'Ñ'¨    Ó2Ð3°1°Y°K¸}ÈYÈKÐWZÐ[Ð[r#cóJ—|j|j|jdœS)zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        ©r<rƒrÕrçrs r!rzConverter.__getstate__3 s%€ð Ÿ™ØŸ/™/Ø×+Ñ+ñ
ð    
r#có(—|jdi|¤Žy)z+
        Load instance from state.
        Nrrér²s  r!rzConverter.__setstate__> s€ð    ˆ ‰ јÓr#N)rwr„r™r„)rwr„rcr„r™r„) r&r'r(r)rQr1r^r…rhrrrr#r!rfrfá s>„ñð(€Ið16À5ô9ð6ò/óð/ó\ò"    
ór#rçc óà‡—tjd|«}t|t«r|}n<t|tt
f«r|Dcic] }|t «“Œ}}n d}t|«‚|jdd«}|jdd«}    |jdd«}
iŠ|‰j|«||‰d<|    |    ‰d<|
|
‰d<tj||iˆfd„«} tjtt«5t!j"d«j$j'd    d
«| _ddd«|jd d«} t+| |j'd «|j'd «d«\|d <|d <t-dd|i|¤Ž| «} |j/«Dcic]\}}|j0€Œ||j0“Œ!c}}| _| Scc}w#1swYŒªxYwcc}}w)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.
    ÚNFKCz(attrs argument must be a dict or a list.rNrr1có&•—|j‰«Sr/)r5)rzrvs €r!r¬zmake_class.<locals>.<lambda>¢ sø€¸¿    ¹    À$»€r#r
r&Ú__main__r9r?rATrÅr)Ú unicodedataÚ    normalizerJrrKrLrRrFÚpopr5rŸÚ    new_classrHrIrJrGrSÚ    _getframeÚ    f_globalsr¨r'rÙrúr¹r3r€)r–r{ÚbasesÚ
class_bodyÚattributes_argumentsrwrŸrQrZr\Ú    user_initÚtype_r9rŒrbrcrvs                @r!Ú
make_classrøZ sóø€ô` ×  Ñ   ¨Ó .€Dä%œÔ؉ܠ   EœD¤%˜=Ô    )Ø).Ö/ AA”v“x‘KÐ/ˆÑ/à8ˆÜ˜‹nÐà|‰|Ð0°$Ó7€HØ— ‘ Ð2°DÓ9€IØ— ‘ ˜Z¨Ó.€Ià €DØÐØ  ‰ JÔØÐØ%-ˆÐ !Ñ"ØÐØ&/ˆÐ "Ñ#ØÐØ$ˆˆZÑä O‰O˜D %¨Ó-GÓ H€Eô
×    Ñ    œ^¬ZÓ    8ñ
ÜŸ=™=¨Ó+×5Ñ5×9Ñ9Ø ˜
ó
ˆÔ÷
ð ×
" 5¨$Ó
/€Cô    "Ø Ø× Ñ  Ó&Ø× Ñ  Ó)Ø ó        ñؘTÑ"ؘWÑ%ð 9Œ&Ñ
8xÐ
8Ð#7Ñ
8¸Ó
?€Cð'Ÿn™nÓ.÷ِa˜°!·&±&Ñ2Dˆˆ16‰6‰    ó€CÔð €Jùò_0÷2
ð
üó&sÁGÄ5GÆ*G*Æ?G*ÇG')rrcó$—eZdZdZe«Zd„Zy)Ú _AndValidatorz2
    Compose many validators to a single one.
    có:—|jD] }||||«Œyr/)Ú _validators)r rôr²rërcs     r!rÓz_AndValidator.__call__Í s#€Ø×!Ñ!ò    !ˆAÙ ˆdD˜%Õ  ñ    !r#N)r&r'r(r)rRrürÓrr#r!rúrúÅ s„ññ“(€Kó!r#rúcó˜—g}|D]0}|jt|t«r |jn|g«Œ2tt    |««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ÜrJrúrürL)Ú
validatorsr—r7s   r!rNrNÒ sO€ð €DØò
ˆ    Ø  ‰ ä˜)¤]Ô3ð × !Ò !àõ    
ð
ô œ˜t›Ó %Ð%r#c󺇗td„‰D««}|rˆfd„}nˆfd„}‰s*td«}|jj||dœ«n~t    ‰d«j «}|r||jd<‰d}t st|t«r |j}t    |«j«}|r||jd    <|rt|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
    c3ó<K—|]}t|t«–—Œy­wr/©rJrf)r±Úcs  r!r³zpipe.<locals>.<genexpr>ù sèø€ÒG°qœ* Q¬    ×2ÑGùs‚cóZ•—‰D]$}t|t«r
||||«n||«}Œ&|Sr/r)rÈrôr­rÚ
converterss    €r!Úpipe_converterzpipe.<locals>.pipe_converterý s9ø€Øò ä+5°a¼Ô+C‘Ac˜4 Ô'ÉÈ3Ëñð ð
ˆJr#có&•—‰D]
}||«}Œ |Sr/r)rÈrrs  €r!rzpipe.<locals>.pipe_converter s"ø€Øò Ù˜“f‘ð ðˆJr#ÚA)rÈr™rrÈr^r™TrÖ) r×r    r€r5rrßrrJrfrÓrà)rÚreturn_instancerrÚtÚlastrâs`      r!rMrMé sÓø€ô ÑG¸JÔGÓG€Oáõ    ô    ñ ä C‹LˆØ×&Ñ&×-Ñ-°aÀ1Ñ.EÕFô ! ¨A¡Ó /× DÑ DÓ FˆÙ Ø45ˆN× *Ñ *¨5Ñ 1à˜"‰~ˆÝ¤
¨4´Ô ;Ø—=‘=ˆDô" $Ó '× 7Ñ 7Ó 9ˆÙ Ø79ˆN× *Ñ *¨8Ñ 4áܘ°DÀdÔKÐKØ Ðr#)Nrz)
rWr„rXúdict[str, Any] | NonerYúMapping[str, object] | NonerZr„r™ršr/)
rWr„rZr„rXr rfr r™zdict[str, Any])rsr„rtz    list[str]r™r3)r™z'tuple[list[Attribute], dict[str, type]])r™rz)T)NNNNNNNFFTFFFFFNNFFNNNTNT)rŒr3r r„r™r„)
rŒr3r{r|r•rr–rr™útuple[str, dict])rŒr3r{r|)r{rKr™r )r™r )NN)r™útuple[str, dict, dict]rvrw)rwr„rër„rdrr™r„)r•rrrrr~)r{r|rrrrr‡rr[rrˆrr‰rrr~rörr_rr^rrŠr„r™r)r–r„r™r„)nÚ
__future__rrBrHr¨r*rrZrcrSrŸrír>Úcollections.abcrrÚ    functoolsrÚtypingrrr    rzr r r rrrrrrÚ
exceptionsrrrrÚobjectrérÂr„r‡rYr r¡rGrMr$r#r"rËrrÚintr-rRr\rkrxrzr‰rŽr¢r¤rÔrárìrïr—r÷rÙrErãr{rúrïrÝr›r'r¹rºrÃr=ryrJrñrPrUr¥rerjrlrnrxrXrÄr¼rQÚ_ar–r:rOr¾Ú_casrIÚ_frfrørúrN)r–rŸs00r!ú<module>rs†ðõ#ã
ÛÛ Û ÛÛÛÛ
Û ÛÛç-Ý%ß+Ñ+÷(Ñ'÷÷÷óð×!Ñ!€ Ø'ÐðÐð)Ðà2˜E×2Ñ2°2Ó6Ðñ ‹H€    à"g—l‘l 7§?¡?°G×4DÑ4DÓEÐôˆty‰yôð( ×
€ðô (˜ô (ð" ØØ     Ø Ø     Ø     Ø Ø     ØØ Ø Ø Ø
ØØ
ókðb)-Øð      Ø ð  à  ð  ð &ð  ðð      ð
 
ó  ð$+/ð     Ø ð àð ð !ð ð (ð     ð
ó  óF1ô.$*ô$ò 0ò"'ð#à,ó#òB%ð8uEðóuEòp1òhò"ò7÷tF    ñF    òRò8((ðX.2óð6Ø
Ø Ø     Ø Ø     Ø     Ø
Ø ØØ ØØ ØØ Ø Ø
ØØØØØØØØó3BðJ
€ðò /óðEØ     ðEØ%ðEØ/3ðEØAEðEàóEóP ò    ó"òJ5*ópó"6#ór ò+ò\&ò:.ò$/ðB&ðóB&óJ3ð]Øð]Ø"ð]Ø48ð]ØENð]àó]ó)ð
WØð
WØ"ð
WØ48ð
WØENð
Wàó
Wð,/Ø ð,/Øð,/Ø.=ó,/ð^EØ ðEàðEððEðð    Eð
ð Eð ð EððEð#ðEð ðEððEððEððEðóEóP÷KñKðx×#Ñ#öð     ñØ ØØØ Ø Ø ØØjÑ Ø ØÙ% dÓ+ö ò€ñ" ٠ِ) 2Ô&ØÖ6Q §¡¨+Ó 5ŠqÒ6ôðÖ
=˜AŸF›F q§v¡v°Ó'<Š1Ò
=ô  €    ÷QñQñh™     -Ó0Ó1€ ÷_
ñ_
ð`×$Ñ$öð     ñØ ØØØ Ø Ø ØØ Ø ØÙ% dÓ+ö ò€ñ"‘Y˜z°Ô6¸dÔ C€
÷$'ñ$'ðh×!Ñ!öð     ñØ ØØØ Ø Ø ØØ Ø Øö ò€ñ  ‘G™I g°RÔ8ÀÔCÈ2Ô
N€÷añaðb;öð     ñØ ØØØ Ø Ø ØØ Ø Øö ò€ñ  Ù ‰Ii rÔ *°"Ô5¸Rô €    ð y¨TódñVˆT˜tÔ$÷    !ð    !ó%ð    !ò&ó.9ùòSùò(7ùâ
=ùòz    ùòvùòns6È0#OÉ'OÉ<OÊ O
ÊO
Ê-O
Ë) O$Ì6O)Í:O.