ó
     ­œj?1  ã                  óN  • S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
  SSKrSSKr\" \5      R                  5       R                  rSS1r1 S	kr1 S
kr\" SS5       V s1 s H  n SU  3iM
     sn rSS jrSS jrSS jrSS jrSS jrSSS jjrSS jrSS jrSS S jjrgs  sn f )!aO  Visible D3D-001 Lab checker with deterministic fixture binding.

CHECK_RULES.json and shipped fixture files are the visible rule/evidence source.
The checker never chooses a learner decision and contains no hidden expected
verdict. It only checks evidence completeness, consistency, and exact binding
for evidence the learner submits.
é    )Úannotations)Údeepcopy)ÚPath)ÚAnyÚDictÚListNÚREADYÚTARGET_SPECIFIC>   ÚHOLDr	   ÚREWORK_REQUIREDr
   ÚMETHOD_UNSUITABLEÚPROVENANCE_UNKNOWNÚEVIDENCE_INCOMPLETE>   ÚstopÚpivotÚreviewÚ	migrationÚ
escalationé   é   ÚRc                ób   • [        U [        5      =(       a    [        U R                  5       5      $ ©N)Ú
isinstanceÚstrÚboolÚstrip©Úvs    Ú]/mnt/data/d3d001_l6_build/MAKNOW_LESSON_D3D-001_v1.0.0/lab/D3D-001-LAB1/learner/pack_rules.pyÚ_textr!      s   € Ü�aœÓ×0¤ a§g¡g£i£Ð0ó    c                ó   • XUS.$ )N©ÚcodeÚruleÚmessage© r$   s      r    Ú_errr)      s   € Ø¨gÑ6Ð6r"   c                óR   • U S L =(       d    U S:H  =(       d    U / :H  =(       d    U 0 :H  $ )NÚ r(   r   s    r    Ú_blankr,      s'   € Ø�ˆ9×/˜˜2™×/  B¡×/¨!¨R©%Ð/r"   c                óŽ  ^• UR                  S5      nU n[        U5       H¢  u  pV[        R                  " SU5      nU[	        U5      S-
  :H  nU(       aT  UR                  5       u  n	mXI   n
[        U4S jU
 5       S 5      nUc  [        U5      eU(       a  [        SU-   5      eUnMˆ  U(       a  [        U5      XF'   Mž  XF   nM¤     g )NÚ.z([^\[]+)\[([^\]]+)\]r   c              3  ó„   >#   • U  H5  n[        U[        5      (       d  M  UR                  S 5      T:X  d  M1  Uv •  M7     g7f)ÚobjectN©r   ÚdictÚget)Ú.0ÚxÚselectors     €r    Ú	<genexpr>Ú _apply_change.<locals>.<genexpr>(   s.   øé € ÐZ¢#˜Q¬°A´d×);“qÀÇÁÀhÃÐQYÑ@Y—q‘q¢#ùs   ƒA  A ·	A z&selector must be followed by a field: )	ÚsplitÚ	enumerateÚreÚ	fullmatchÚlenÚgroupsÚnextÚKeyErrorr   )ÚrootÚpathÚvalueÚpartsÚcurÚiÚpartÚmÚlastÚkeyÚarrÚitemr6   s               @r    Ú_apply_changerM      s³   ø€ Ø
�*‰*�S‹/€EØ€CÜ˜EÖ"‰ˆÜ
�,Š,Ð.¨tÓ
4ˆØ”�E“
˜1‘‰_ˆÞØŸ™›‰LˆC�Ø‘ˆCÜÔZ¡#ÓZÐ[_Ó`ˆDØ‰|¤8¨D£>Ð1ÞÜÐGÈÑLÓMÐMØˆCÙÞÜ˜u“oˆC‹Ià‘	ŠCò #r"   c                óÖ  • [        U[        5      (       a  UR                  S5      OS n[        U 5      (       a  [        U[        5      (       a  X;  a  g [        X    -  nUR                  5       (       d  g [        R                  " UR                  SS95      n[        U[        5      (       a¼  SU;   a¶  UR                  S5      n[        U[        5      (       a  UR                  U5      OS nU(       d  g [        R                  " [        U-  R                  SS95      nUR                  S0 5      R                  5        H  u  p‰[        XxU	5        M     UR                  S5      US'   U$ U$ )NÚfixture_sourceszutf-8)ÚencodingÚchanged_fieldsÚbase_fixtureÚmutation_idÚ_mutation_id)r   r2   r3   r!   ÚHEREÚis_fileÚjsonÚloadsÚ	read_textÚitemsrM   )
ÚrefÚvisible_rulesÚsourcesrB   ÚdataÚbase_idÚbase_relÚexpectedÚkr   s
             r    Ú_resolve_fixturerc   3   s  € Ü4>¸}ÌT×4RÑ4RˆM×ÑÐ/Ô0ÐX\€GÜ��:‰:œZ¨´×5Ñ5¸Ó9KØÜ	ˆg‰lÑ	€DØ�<‰<�>‰> $Ü	�Š�D—N‘N¨G�NÐ4Ó	5€DÜ�$”t×ÑÐ!1°TÓ!9Ø—‘˜Ó(ˆÜ)3°G¼D×)AÑ)A�—‘˜WÔ%ÀtˆÞ Ü—’œT (™]×5Ñ5¸wÐ5ÐGÓHˆØ—8‘8Ð,¨RÓ0×6Ñ6Ö8‰CˆA¼-ÈÐSTÖ:UÑ8Ø!%§¡¨-Ó!8ˆ�Ñ ØˆØ€Kr"   c           
     óÂ  • [        U 5      (       a  / $ [        U [        5      (       a�  [        U[        5      (       d  U=(       d    S/$ / nU R                  5        HW  u  pEXA;  a!  UR	                  U(       a  U SU 3OU5        M+  UR                  [        XQU   U(       a  U SU 3OU5      5        MY     U$ [        U [        5      (       a
  X:X  a  / $ U/$ X:X  a  / $ U/$ )zcCompare only evidence the learner actually supplies; missing evidence may remain typed non-success.z<root>r.   )r,   r   r2   rZ   ÚappendÚextendÚ_collect_mismatchesÚlist)Ú	submittedra   rB   Úoutrb   r   s         r    rg   rg   D   sÏ   € äˆi×Ñ ˜)Ü�)œD×!Ñ!Ü˜(¤4×(Ñ(°$×2B¸(Ð1CÐ*CØˆØ—?‘?Ö$‰CˆAØÓ  #§*¡*¾d°¨v°Q°q°c©]ÈÖ"JØ—*‘*Ô0°¸A±;ÖPTÀ$ÀÀqÈÈ¹}ÐZ[Ó\Ö]ñ %ð ˆ
Ü�)œD×!Ñ!ØÓ(ˆrÐ4¨t¨fÐ4ØÓ$ˆ2Ð0¨4¨&Ð0r"   c                ó~   • U nUR                  S5       H#  n[        U[        5      (       a  X2;  a    gX#   nM%     SU4$ )Nr.   )FNT)r9   r   r2   )rA   rB   rE   rG   s       r    Ú_path_valuerl   S   s?   € Ø€CØ—
‘
˜3–ˆÜ˜#œd×#Ñ# t£ÙØ‰IŠñ  ð �ˆ8€Or"   c                ó  • / SQn/ nU HU  n[        X5      u  pgU(       d  M  [        X5      u  p‰U(       a  [        U	5      (       d  X—:w  d  MD  UR                  U5        MW     U R                  S5      U:w  a  UR                  S5        U$ )N)ztarget.target_useztarget.target_constraint_scopeztarget.unit_systemútarget.reference_scaleztarget.manifold_requirementztarget.geometry_budget_policyúgeometry.object_transform_statezgeometry.topology_intentzgeometry.vertex_countzgeometry.triangle_countzgeometry.normal_statezgeometry.manifold_statezgeometry.origin_pivot_stateúgeometry.validation_viewúmodifiers.modifier_stackúmodifiers.destructive_step_logz%modifiers.unreviewed_destructive_stepÚnaming_contractÚ
provenanceÚknown_limitationsÚinteroperability_evidenceÚevidence_ref)rl   r,   re   r3   )
ri   ra   Úexpected_refÚrequired_pathsÚgapsrB   ÚeokÚevÚsokÚsvs
             r    Ú_positive_fixture_binding_gapsr   [   sw   € ò€Nð 
€DÛˆÜ˜8Ó)‰ˆÞÙÜ˜9Ó*‰ˆÞœ˜rŸ
™
 b¥fØ�K‰K˜Öñ ð ‡}�}�^Ó$ lÓ2Ø�‰�NÔ#Ø€Kr"   c                óV  • / n[        U[        5      (       a  UO0 nUR                  S/ 5       Vs1 s H+  n[        U[        5      (       d  M  UR                  S5      iM-     nn[        [        U-
  5      nU(       a.  UR                  [        SSSSR                  U5      -   5      5        [        UR                  S5      =(       d    [        5      n[        UR                  S5      =(       d    [        5      n[        U R                  S	5      [        5      (       a  U R                  S	5      O0 nUR                  S
5      n	X–;  a  UR                  [        SSS5      5        Sn
OX—;   n
U R                  S5      n[        X±5      nUc  UR                  [        SSS5      5        GOlSU-   n[        U R                  S5      5      (       a5  U R                  S5      U:w  a   UR                  [        SSSU S35      5        / SQn/ nU Hf  nUU ;   d  M  [        U R                  U5      5      (       a  M,  UR                  [        U R                  U5      UR                  U5      U5      5        Mh     U(       a@  UR                  [        SSSSR                  [        [        U5      5      5      -   5      5        U
(       aS  [!        XU5      nU(       a@  UR                  [        SSSSR                  [        [        U5      5      5      -   5      5        [        U R                  S5      [        5      (       a  U R                  S5      O0 n[        U R                  S5      [        5      (       a  U R                  S5      O0 n[        U R                  S5      [        5      (       a  U R                  S5      O0 n[        U R                  S5      [        5      (       a  U R                  S5      O0 n[        U R                  S5      [        5      (       a  U R                  S5      O0 n[        U R                  S 5      [        5      (       a  U R                  S 5      O0 nU
(       Gaù  / nS! H8  n[        UR                  U5      5      (       a  M$  UR                  S"U 35        M:     UR                  S#5      n[        U[        5      (       a  U(       d  UR                  S$5        S% H8  n[        UR                  U5      5      (       a  M$  UR                  S&U 35        M:     S' H=  n[        UR                  U5      ["        5      (       a  M)  UR                  S&U 35        M?     [        UR                  S(5      [$        5      (       a  UR                  S(5      (       d  UR                  S)5        [        UR                  S*5      [$        5      (       a  UR                  S*5      (       d  UR                  S+5        [        UR                  S,5      [$        5      (       a  UR                  S,5      (       d  UR                  S-5        S.U;  d$  [        UR                  S.5      [$        5      (       d  UR                  S/5        S0 H8  n[        UR                  U5      5      (       a  M$  UR                  S1U 35        M:     S2U ;  d$  [        U R                  S25      [$        5      (       d  UR                  S25        [        U R                  S5      5      (       d  UR                  S5        U(       a.  UR                  [        S3S4S5S6R                  U5      -   5      5        [        UR                  S(5      [$        5      (       a  UR                  S(5      O/ nU
(       a3  ['        S7 U 5       5      (       a  UR                  [        S8S9S:5      5        U
(       a1  UR                  S;5      S<:X  a  UR                  [        S=S>S?5      5        [        UR                  S@5      [        5      (       a  UR                  S@5      O0 nUR                  SA5      nUR                  SB5      nU
(       aS  [        U["        5      (       a>  [        U["        5      (       a)  UU:”  a#  UR                  [        SCSDSEU SFU S35      5        U
(       aF  UR                  SG5      SH:X  a1  UR                  SI5      SJ:w  a  UR                  [        SKSLSM5      5        U
(       aj  [        UR                  S,5      [$        5      (       a*  UR                  S,5      (       a  UR                  SN5      SOL a  UR                  [        SPSQSR5      5        U
(       Ga"  UR                  SS5      n[        UR                  ST5      5      (       aK  [        U[$        5      (       a6  ['        SU U 5       5      (       a  [        UR                  SV5      5      (       d  UR                  [        SWSXSY5      5        [        UR                  SZ5      5      (       aP  UR                  S[5      SOLd<  UR                  S\5      SOLd(  UR                  S]5      SLd  UR                  S^5      SLa  UR                  [        S_S`Sa5      5        UR                  Sb5      nU	Sc:X  a"  USd:w  a  UR                  [        SeSfSg5      5        U	Sh:X  a"  USi:w  a  UR                  [        SeSfSj5      5        [        UR                  Sk5      [        5      (       a  UR                  Sk5      O0 n U R)                  5        VV!s/ s H&  u  nn!U[*        ;  d  M  [        U!5      (       d  M$  UPM(     n"nn!U"(       a7  UR                  [        SlSmSnSR                  [        U"5      5      -   5      5        [*         Vs/ s H&  n[        U R                  U5      5      (       d  M$  UPM(     n#nX–;   a#  U#(       d  UR                  [        SoSmSp5      5        U$ s  snf s  sn!nf s  snf )qNÚrulesÚidÚE_VISIBLE_RULESET_INCOMPLETEÚRULE_SOURCEz7Visible CHECK_RULES.json is missing required rule IDs: z, Úallowed_statesÚpositive_statesÚdecisionÚfinal_stateÚE_DECISION_REQUIREDÚR11z?Choose one allowed final_state; the checker will not choose it.FÚfixture_refÚE_FIXTURE_REFÚR12zTfixture_ref must name one shipped visible fixture or mutation from CHECK_RULES.json.z
fixture://rw   ÚE_FIXTURE_BINDINGzevidence_ref must bind to r.   )Úasset_idÚtargetÚgeometryÚ	modifiersrs   rt   ru   rv   zCSubmitted evidence does not match the declared visible fixture at: zNPositive state is not completely bound to fixture-known required evidence at: r�   r‘   r’   rs   rt   rv   )Ú
target_useÚtarget_constraint_scopeÚunit_systemÚmanifold_requirementztarget.Úreference_scalern   )Útopology_intentÚnormal_stateÚmanifold_stateÚorigin_pivot_statez	geometry.)Úvertex_countÚtriangle_countÚobject_transform_statero   Úvalidation_viewrp   Úmodifier_stackrq   Údestructive_step_logrr   )Úsource_asset_refÚrights_provenance_refÚrights_statuszprovenance.ru   ÚE_MISSING_CRITICAL_POSITIVEÚR1z-Positive state is missing decisive evidence: z; c              3  óx   #   • U  H0  n[        U[        5      =(       a    UR                  S 5      S:H  v •  M2     g7f)Úscale_stateÚUNAPPLIED_NON_UNIFORMNr1   ©r4   r5   s     r    r7   Ú validate_pack.<locals>.<genexpr>³   s1   é € ÐqÒfpÐabœ
 1¤TÓ*×\¨q¯u©u°]Ó/CÐE\Ñ/\Ô\Òfpùs   ‚8:ÚE_NONUNIFORM_SCALEÚR2zUPositive state conflicts with unapplied non-uniform scale in this bounded lab target.r™   ÚINCONSISTENT_FLIPPEDÚE_NORMAL_STATEÚR3z;Positive state conflicts with flipped/inconsistent normals.Úgeometry_budget_policyÚmax_trianglesr�   ÚE_TRIANGLE_BUDGETÚR4ztriangle_count z  exceeds declared max_triangles r–   ÚREQUIREDrš   ÚPASS_MANIFOLD_CHECKÚ
E_MANIFOLDÚR5zHRequired manifold target needs PASS_MANIFOLD_CHECK for a positive state.Úunreviewed_destructive_stepTÚ	E_HISTORYÚR6z]Positive state requires visible modifier/history evidence and no unreviewed destructive step.Údecisive_object_namesÚconvention_refc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   )r!   rª   s     r    r7   r«   Á   s   é € Ð[tÒnsÐijÔ\aÐbc×\dÐ\dÒnsùs   ‚r›   ÚE_NAMINGÚR7zZPositive state requires naming contract, decisive object names, and origin/pivot evidence.Ú
target_refÚtransform_binding_checkedÚgeometry_contract_checkedÚexport_only_proofÚbeauty_render_onlyÚE_INTEROP_EVIDENCEÚR8z}Positive state requires target-specific transform/geometry binding checks and cannot rely on export/beauty-render-only proof.r”   r	   ÚSTANDARD_DECLARED_TARGETÚE_TARGET_SCOPEÚR9z(READY requires STANDARD_DECLARED_TARGET.r
   ÚCONSTRAINED_NAMED_TARGET_ONLYz7TARGET_SPECIFIC requires CONSTRAINED_NAMED_TARGET_ONLY.ÚtriggersÚE_DECISION_TRIGGER_TYPEÚR10zUnknown trigger categories: ÚE_DECISION_TRIGGERSzoDecision requires at least one applicable named future trigger condition; all five categories are not required.)r   r2   r3   ÚsortedÚREQUIRED_RULE_IDSre   r)   ÚjoinÚsetÚDEFAULT_ALLOWEDÚDEFAULT_POSITIVErc   r!   r,   rf   rg   r   Úintrh   ÚanyrZ   ÚALLOWED_TRIGGER_TYPES)$Úpackr\   ÚerrorsÚrÚrule_idsÚmissingÚallowedr†   r‡   ÚstateÚpositiver‹   ra   rx   ÚdecisiveÚ
mismatchesrJ   rz   r�   ÚgeomÚmodsÚnamingÚprovÚinteroprb   r[   Ú
transformsÚbudgetÚmax_triÚtriÚnamesÚscoperÌ   r   ÚunknownÚvalids$                                       r    Úvalidate_packrð   r   sõ
  € Ø€FÜ#-¨m¼D×#AÑ#A‘-Àr€MØ#0×#4Ñ#4°W¸RÔ#@ÓWÒ#@˜aÄJÈqÔQU×DV‹kˆa�e‰e�DŽkÑ#@€HÐWÜÔ$ XÑ-Ó.€GÞ�—‘œdÐ#AÀ-ð  QJð  KO÷  KTñ  KTð  U\ó  K]ñ  Q]ó  ^ô  _Ü�×!Ñ!Ð"2Ó3×F´ÓG€GÜ˜×)Ñ)Ð*;Ó<×PÔ@PÓQ€Oä%/°·±¸Ó0DÄT×%JÑ%JˆT�X‰X�jÔ!ÐPR€HØ
�,‰,�}Ó
%€EØÓØ�‰”dÐ0°Ð7xÓyÔzØ‰ØÑ+ˆ(ð —‘˜Ó'€KÜ˜kÓ8€HØÑØ�‰”d˜?¨5ð  2Hó  Iö  	Jà! +Ñ-ˆÜ�—‘˜.Ó)×*Ñ*¨t¯x©x¸Ó/GÈÓ/UØ�M‰Mœ$Ð2°5Ð;UÐVbÐUcÐcdÐ9eÓfÔgò MˆØˆ
ÛˆCØ�d�{¤6¨$¯(©(°3«-×#8Ó#8Ø×!Ñ!Ô"5°d·h±h¸s³mÀHÇLÁLÐQTÓDUÐVYÓ"ZÖ[ñ ö Ø�M‰Mœ$Ð2°5Ð9~ð  @D÷  @Iñ  @Iô  JPô  QTð  U_ó  Q`ó  Jaó  @bñ  :bó  cô  dÞÜ/°¸lÓKˆDÞØ—‘œdÐ#6°uð  >Nð  OS÷  OXñ  OXô  Y_ô  `cð  dhó  `ió  Yjó  Okñ  >kó  lô  mä!+¨D¯H©H°XÓ,>¼t×!DÑ!Dˆ4�8‰8�HÔÈ"€FÜ!+¨D¯H©H°ZÓ,@Ä×!FÑ!Fˆ�‰�*Ô	ÈB€DÜ",¨T¯X©X°kÓ-BÄ4×"HÑ"Hˆ�‰�+Ô	Èb€DÜ*4°T·X±XÐ>OÓ5PÔQU×*VÑ*Vˆ4�8‰8Ð%Ô&Ð\^€FÜ#-¨d¯h©h°|Ó.DÄT×#JÑ#Jˆ�‰�,Ô	ÐPR€DÜ5?ÀÇÁÐIdÓ@eÔfj×5kÑ5kˆD�H‰HÐ0Ô1Ðqs€GçØˆÛ^ˆAÜ˜Ÿ™ A›×'Ó'¨¯©¸'À!À¸Ö)Fñ _à�J‰JÐ(Ó)ˆÜ˜#œd×#Ñ#®3°·±Ð?WÔ0XÛYˆAÜ˜Ÿ™ !›×%Ó% w§~¡~¸	À!À°oÖ'Fñ Zã2ˆAÜ˜dŸh™h q›k¬#×.Ó.°·±ÀÈ1È#¸Ö0Oñ 3ä˜$Ÿ(™(Ð#;Ó<¼T×BÑBÈ$Ï(É(ÐSk×JlÑJlÐnu×n|Ñn|ð  ~_ô  o`Ü˜$Ÿ(™(Ð#4Ó5´d×;Ñ;À4Ç8Á8ÐL]×C^ÑC^Ð`g×`nÑ`nð  pJô  aKÜ˜$Ÿ(™(Ð#3Ó4´T×:Ñ:À$Ç(Á(ÐK[×B\ÑB\Ð^e×^lÑ^lð  nHô  _IØ!¨Ó-´ZÀÇÁÐI_Ó@`Ôae×5fÑ5fÐho×hvÑhvð  xXô  iYÛMˆAÜ˜Ÿ™ !›×%Ó% w§~¡~¸ÀAÀ3Ð6GÖ'Hñ Nà dÓ*´*¸T¿X¹XÐFYÓ=ZÔ[_×2`Ñ2`Ðbi×bpÑbpð  rEô  cFÜ�T—X‘X˜nÓ-×.Ñ.°·±¸~Ô0NÞ�F—M‘M¤$Ð'DÀTÐJyÐz~÷  {Dñ  {Dð  ELó  {Mñ  KMó  #Nô  Oä5?ÀÇÁÐIaÓ@bÔcg×5hÑ5hˆt�x‰xÐ0Ô1Ðnp€JÞ”CÑqÑfpÓq×qÑqØ�‰”dÐ/°ð  6Mó  Nô  	OÞ�D—H‘H˜^Ó,Ð.DÓDØ�‰”dÐ+¨DÐ1nÓoÔpÜ3=¸f¿j¹jÐIaÓ>bÔcg×3hÑ3hˆ6�:‰:Ð.Ô/Ðnp€FØ�J‰J�Ó'€G¨T¯X©XÐ6FÓ-G¨Þ”J˜w¤s×+Ñ+´
¸3¼s×0CÑ0CÈÈGËØ�‰”dÐ.¨t°oÀcÀUÐJjÐkrÐjsÐstÐ4uÓvÔwÞ�F—J‘JÐ5Ó6¸
ÓBÀtÇxÁxÐP`ÓGaÐcxÓGxØ�‰”d˜<¨Ð-wÓxÔyÞœ D§H¡HÐ-=Ó$>¼t×DÑDÈDÏHÉHÐUe×LfÑLfÐjn×jrÑjrð  tQó  kRð  VZò  kZØ�‰”d˜; tð  -Ló  Mô  	NßØ�j‰jÐ0Ó1ˆÜ�V—Z‘ZÐ 0Ó1×2Ñ2¼*ÀUÌ4×:PÑ:PÔX[Ñ[tÑnsÓ[t×XtÑXtô  }Bð  CG÷  CKñ  CKð  L`ó  Ca÷  }bñ  }bØ�M‰Mœ$˜z¨$ð  0Ló  Mô  NÜ�g—k‘k ,Ó/×0Ñ0°G·K±KÐ@[Ó4\ÐdhÒ4hÐls×lwÑlwð  yTó  mUð  ]aò  mað  el÷  epñ  epð  qDó  eEð  MRò  eRð  V]÷  Vañ  Vað  bvó  Vwð  Dò  VDØ�M‰Mœ$Ð3°Dð  :yó  zô  {Ø
�*‰*Ð.Ó
/€EØˆgƒ~˜%Ð!;Ó;¸V¿]¹]Ì4ÐP`Ðaeð  gQó  LRô  >SØÐÓ EÐ+JÓ$JÈFÏMÉMÔZ^Ð_oÐptð  voó  [pô  Mqä)3°H·L±LÀÓ4LÌT×)RÑ)RˆX�\‰\˜*Ô%ÐXZ€HØ"Ÿ.™.Ô*ÔZÒ*‘3�1�Q¨aÔ7LÑ.L‹QÔQVÐWX×QY�QÑ*€GÑZÞ�—‘œdÐ#<¸UÐCaÐbf×bkÑbkÔlrÐszÓl{Ób|ÑC|Ó}Ô~Ý+Ó
FÒ+�¬u°X·\±\À!³_×/E�1Ñ+€EÐ
FØÓ¦Ø�‰”dÐ0°ð  8ió  jô  	kØ€Mùòu Xùój [ùâ
Fs)   °pÁpíp í!p í3p ï#p&ï)p&)r   r   Úreturnr   )r%   r   r&   r   r'   r   rñ   zDict[str, str])rA   r   rB   r   rC   r   rñ   ÚNone)r[   r   r\   úDict[str, Any])r+   )ri   r   ra   r   rB   r   rñ   ú	List[str])rA   r   rB   r   )ri   ró   ra   ró   rx   r   rñ   rô   r   )rÙ   ró   r\   zDict[str, Any] | Nonerñ   zList[Dict[str, str]])Ú__doc__Ú
__future__r   Úcopyr   Úpathlibr   Útypingr   r   r   rW   r;   Ú__file__ÚresolveÚparentrU   rÕ   rÔ   rØ   ÚrangerÑ   r!   r)   r,   rM   rc   rg   rl   r   rð   )rF   s   0r    Ú<module>rþ      s¥   ðñõ #Ý Ý ß "Ñ "ß á	ˆ(ƒ^×ÑÓ×$Ñ$€ØÐ+Ð,Ð ò D€ÚHÐ Ù$)¨!¨B¤KÓ0¢K˜q�Q�q�c“7¡KÑ0Ð ô1ô7ô0ôô(ö"1ôô÷.]ùò 1s   ÁB"