§
    5Êjšz  ã                   ó‚  — d Z ddlZddlmc 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mZ ddlZddlZddlZddlmZ  ee¦  «                             ¦   «         j        j        Zej                             d eedz  ¦  «        ¦  «         ddlmZmZmZmZm Z  ddl!Z" ej#        d¬¦  «        d	„ ¦   «         Z$	 	 	 	 	 	 	 d&dede%de%de%de%dede&de%defd„Z' G d„ d¦  «        Z( G d„ d¦  «        Z) G d„ d¦  «        Z* G d „ d!¦  «        Z+ G d"„ d#¦  «        Z,e-d$k    r$ed%gZ. ej/         ej0        e.¦  «        ¦  «         dS dS )'uÅ  
=============================================================================
THáº¬P NGÅ¨ NIÃŠN (THE FIFTEEN SPRINGS) - CRITIC QUALITY GATE TEST SUITE
=============================================================================
Authoritative Test Suite for Milestone M1: 2-Tier Quality Gate & Classifier.
Tests:
1. VideoCriticVerdict & Sub-models Pydantic Schema Validation:
   - ShotEvaluation, SceneEvaluation, VideoCriticVerdict fields and constraints.
   - Threshold synchronization: approved == (overall_score >= 0.8) and actions.
   - Serialization & JSON roundtrip validation.
2. evaluate_shot_gate (Táº§ng 1 - Shot Gate):
   - Valid input evaluation (score >= 0.8, approved == True, suggested_action == 'APPROVE').
   - Defect detection: missing file, corrupted stream, black frames, frozen frames.
   - Character cross-contamination detection (ThÃºy Kiá»�u in Kim Trá»�ng shot).
3. evaluate_scene_gate (Táº§ng 2 - Scene Gate):
   - Smooth junction between sequential shots.
   - Color continuity and trigger_color_match when color delta exceeds threshold.
   - Pacing & static freeze detection (trigger_trim_static).
   - Missing/invalid input resilience.
4. Shot Take Classification & resolve_start_frame:
   - shot_num == 1 -> CINEMATIC_CUT (independent Start Frame, NEVER prev_tail).
   - Changing character_anchor -> CINEMATIC_CUT.
   - Identical character_anchor -> CONTINUOUS_TAKE (loads prev_tail).
   - resolve_start_frame_v2 returns (frame_path, take_type).
5. Character Invariant Safeguard:
   - Resolving Kim Trá»�ng shots NEVER returns ThÃºy Kiá»�u image paths under any condition,
     even with corrupted/adversarial prompt data.
=============================================================================
é    N)ÚPath)ÚValidationErrorÚ05_Production_Pipeline)ÚVideoCriticVerdictÚShotEvaluationÚSceneEvaluationÚevaluate_shot_gateÚevaluate_scene_gateÚsession©Úscopec              #   ó‚   K  — |                       d¦  «        }|V — t          j        t          |¦  «        d¬¦  «         dS )uC   Táº¡o thÆ° má»¥c táº¡m thá»�i Ä‘á»ƒ sinh cÃ¡c video thá»­ nghiá»‡m.Úcritic_test_mediaT)Úignore_errorsN)ÚmktempÚshutilÚrmtreeÚstr)Útmp_path_factoryÚtemp_dirs     ú/C:\Projects\KieuStory\tests\test_critic_gate.pyÚmedia_sandboxr   ;   sF   è è € ð  ×&Ò&Ð':Ñ;Ô;€HØ
€N€N€Nå
„M•#�h‘-”-¨tÐ4Ñ4Ô4Ð4Ð4Ð4ó    é0   é   é   éÐ  Úgradient©éd   é–   éÈ   Úoutput_pathÚ
num_framesÚfpsÚwidthÚheightÚmodeÚ
base_colorÚstart_frame_idxÚreturnc                 ót  — t          j        dŽ }t          j        t          | ¦  «        ||||f¦  «        }		 t	          |¦  «        D �]Â}
||
z   }|dk    r%t          j        ||dft
          j        ¬¦  «        }�nz|dk    r&t          j        ||df|t
          j        ¬¦  «        }�nN|dk    r&t          j        ||df|t
          j        ¬¦  «        }�n"|dk    rìt          j        ||dft
          j        ¬¦  «        }|\  }}}t          t          j
        |dz  ¦  «        d	z  ¦  «        }t          j        ||z   d
d¦  «        |dd…dd…d
f<   t          j        ||z   d
d¦  «        |dd…dd…df<   t          j        ||z   d
d¦  «        |dd…dd…df<   t          d|dz  dz  z   ¦  «        }t          j        ||dfddd¦  «         n0t
          j                             d
d||dft
          j        ¬¦  «        }|	                     |¦  «         �ŒÄ	 |	                     ¦   «          n# |	                     ¦   «          w xY w| S )uI   Sinh video MP4 há»£p lá»‡ vá»›i cÃ¡c Ä‘áº·c tÃ­nh thá»‹ giÃ¡c cá»¥ thá»ƒ.Úmp4vÚblacké   )ÚdtypeÚfrozenÚsolidr   g      8@é   r   éÿ   Né   é   r    r"   é(   )r4   r4   r4   éÿÿÿÿ)Úcv2ÚVideoWriter_fourccÚVideoWriterr   ÚrangeÚnpÚzerosÚuint8ÚfullÚintÚsinÚclipÚcircleÚrandomÚrandintÚwriteÚrelease)r#   r$   r%   r&   r'   r(   r)   r*   ÚfourccÚoutÚiÚ	frame_idxÚframeÚbÚgÚrÚoffsetÚcircle_xs                     r   Ú_create_synthetic_videorS   D   sI  € õ Ô# VÐ,€FÝ
Œ/�#˜kÑ*Ô*¨F°C¸%À¸Ñ
IÔ
I€CðÝ�zÑ"Ô"ð 	ñ 	ˆAØ'¨!Ñ+ˆIØ�wŠˆÝœ &¨%°Ð!3½2¼8ÐDÑDÔD�‘Ø˜Ò!Ð!åœ ¨°Ð 2°JÅbÄhÐOÑOÔO�‘Ø˜’�Ýœ ¨°Ð 2°JÅbÄhÐOÑOÔO�‘Ø˜Ò#Ð#åœ &¨%°Ð!3½2¼8ÐDÑDÔD�Ø$‘��1�aÝ�RœV I°Ñ$4Ñ5Ô5¸Ñ9Ñ:Ô:�Ý!#¤¨¨V©°Q¸Ñ!<Ô!<��a�a�a˜˜˜˜A�g‘Ý!#¤¨¨V©°Q¸Ñ!<Ô!<��a�a�a˜˜˜˜A�g‘Ý!#¤¨¨V©°Q¸Ñ!<Ô!<��a�a�a˜˜˜˜A�g‘å˜s i°#¡o¸Ñ%:Ñ:Ñ;Ô;�Ý”
˜5 8¨S /°2°ÈÑKÔKÐKÐKåœ	×)Ò)¨!¨S°6¸5À!Ð2DÍBÌHÐ)ÑUÔU�à�IŠI�eÑÔÐÑð/	ð2 	�Š‰Œˆˆøˆ�Š‰ŒˆˆøøøØÐs   ¶GH ÈH5c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestVideoCriticVerdictSchemac                 ó�  — t          ddg ddd¬¦  «        }t          dd|dd¬¦  «        }|j        }d}||u }|sªt          j        d	|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}||u }	|	s½t          j        d	|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚dx}x}x}	}dS )uI   Kiá»ƒm tra schema VideoCriticVerdict vá»›i Ä‘iá»ƒm Ä‘áº¡t chuáº©n >= 0.8.Tgffffffî?Fgq=
×£pí?)Úcharacter_matchÚcharacter_confidenceÚvisual_defectsÚsquint_or_extra_limbsÚaudio_guard_okÚscoreÚAPPROVEu2   CÃº mÃ¡y Ä‘áº¡t chuáº©n Ä‘iá»‡n áº£nh hoÃ n háº£o.©Úoverall_scoreÚapprovedÚ	shot_evalÚsuggested_actionÚcritique_notes©Úis©z0%(py2)s
{%(py2)s = %(py0)s.approved
} is %(py5)sÚverdict©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7N©ú==©z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} == %(py5)s©z8%(py2)s
{%(py2)s = %(py0)s.suggested_action
} == %(py5)s©zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.shot_eval
}.character_match
} is %(py7)s©ri   rj   Úpy4rm   úassert %(py9)sÚpy9)r   r   r`   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr_   rb   ra   rW   )Úselfra   rg   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert6Ú@py_assert5Ú@py_format10s              r   Ú"test_schema_valid_approved_verdictz?TestVideoCriticVerdictSchema.test_schema_valid_approved_verdictt   s÷  € å"Ø Ø!%ØØ"'ØØð
ñ 
ô 
ˆ	õ %ØØØØ&ØOð
ñ 
ô 
ˆð ÔÐ' 4Ð'Ð 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ'Ð4¨9Ð4Ð'¨9Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð'¨9Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Ð4Õ4Ô4Ð'Ñ4Ô4Õ4Ô4¨9Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔ Ð8Ð Ô0Ð8°DÐ8Ð0°DÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð0°DÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð Ñ8Ô8Õ8Ô8Ð0Ñ8Ô8Õ8Ô8°DÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 óV  — t          dddgd¬¦  «        }t          dd|dd¬	¦  «        }|j        }d}||u }|sªt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}dS )u>   Ä�iá»ƒm dÆ°á»›i 0.8 báº¯t buá»™c pháº£i cÃ³ approved == False.Tgffffffæ?z
Micro-blurg      è?)rW   rX   rY   r\   FÚRETAKE_SHOTu#   Ä�iá»ƒm khÃ´ng Ä‘áº¡t ngÆ°á»¡ng 0.8r^   rd   rf   rg   rh   rl   rm   Nrn   rp   )r   r   r`   rw   rx   ry   rz   r{   r|   r}   r~   r_   )r   ra   rg   r€   r�   r‚   rƒ   r„   s           r   Ú*test_schema_rejected_score_below_thresholdzGTestVideoCriticVerdictSchema.test_schema_rejected_score_below_thresholdŠ   s  € å"Ø Ø!%Ø(˜>Øð	
ñ 
ô 
ˆ	õ %ØØØØ*Ø@ð
ñ 
ô 
ˆð ÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r   c                 óF  — t          dd¬¦  «        }|j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}t          dd¬¦  «        }|j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )u+   Kiá»ƒm tra chÃ­nh xÃ¡c ngÆ°á»¡ng biÃªn 0.8.çš™™™™™é?r]   )r_   rb   Trd   rf   Úv_80rh   rl   rm   NgÅ °rh‘é?FÚv_799©
r   r`   rw   rx   ry   rz   r{   r|   r}   r~   )r   rŽ   r€   r�   r‚   rƒ   r„   r�   s           r   Útest_schema_score_boundary_80z:TestVideoCriticVerdictSchema.test_schema_score_boundary_80œ   sæ  € å!°ÀyÐQÑQÔQˆØŒ}Ð$ Ð$ˆ} Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ} Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆtÑ$Ô$Ð$Õ$Ô$ˆtÑ$Ô$Ð$Ð$Õ$Ô$ˆ}Ñ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$å"°ÈÐSÑSÔSˆØŒ~Ð& Ð&ˆ~ Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ~ Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆuÑ&Ô&Ð&Õ&Ô&ˆuÑ&Ô&Ð&Ð&Õ&Ô&ˆ~Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r   c                 ó¨  — t          ddd¬¦  «        }|j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )u\   Náº¿u suggested_action lÃ  RETAKE_SHOT thÃ¬ approved luÃ´n lÃ  False ká»ƒ cáº£ score >= 0.8.gÍÌÌÌÌÌì?rŠ   u>   NhÃ¢n váº­t sai lá»‡ch nghiÃªm trá»�ng yÃªu cáº§u render láº¡i)r_   rb   rc   Frd   rf   rg   rh   rl   rm   Nr�   ©r   rg   r€   r�   r‚   rƒ   r„   s          r   Ú,test_schema_retake_action_overrides_approvalzITestVideoCriticVerdictSchema.test_schema_retake_action_overrides_approval¤   s  € å$ØØ*Ø[ð
ñ 
ô 
ˆð
 ÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c                 ó”  — t          j        t          ¦  «        5  t          dd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          dd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t	          dd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )uS   Kiá»ƒm tra rÃ ng buá»™c miá»�n giÃ¡ trá»‹ cá»§a ShotEvaluation vÃ  SceneEvaluation.g      ø?ç      à?)rX   r\   Ngš™™™™™¹¿g       @)Újunction_smoothnessr\   )ÚpytestÚraisesr   r   r   )r   s    r   Ú test_schema_submodel_constraintsz=TestVideoCriticVerdictSchema.test_schema_submodel_constraints­   s³  € åŒ]�?Ñ+Ô+ð 	@ð 	@Ý°¸3Ð?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ Œ]�?Ñ+Ô+ð 	Að 	AÝ°¸4Ð@Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Aõ Œ]�?Ñ+Ô+ð 	@ð 	@Ý°¸3Ð?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s0   š8¸<¿<ÁA:Á:A>ÂA>ÂB=Â=CÃCc           	      ó&  — t          ddt          dd¬¦  «        dd¬¦  «        }|                     ¦   «         }t          j        |¦  «        }|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }|j        }	|	j        }
||
k    }|�st          j        d|fd||
f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        t          j
        |¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |	¦  «        t          j
        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}	}
dS )u?   Kiá»ƒm tra kháº£ nÄƒng serialize/deserialize JSON trá»�n váº¹n.g)\�Âõ(ì?T)rW   r\   r]   zJSON serialization checkr^   rn   )zX%(py2)s
{%(py2)s = %(py0)s.overall_score
} == %(py6)s
{%(py6)s = %(py4)s.overall_score
}ÚrestoredÚoriginal)ri   rj   rt   Úpy6zassert %(py8)sÚpy8N)zN%(py2)s
{%(py2)s = %(py0)s.approved
} == %(py6)s
{%(py6)s = %(py4)s.approved
})zˆ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.shot_eval
}.score
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.shot_eval
}.score
})ri   rj   rt   rž   rŸ   Úpy10úassert %(py12)sÚpy12)r   r   Úmodel_dump_jsonÚmodel_validate_jsonr_   rw   rx   ry   rz   r{   r|   r}   r~   r`   ra   r\   )r   r�   Újson_strrœ   r€   r†   r‚   Ú@py_format7Ú@py_format9Ú@py_assert7Ú@py_assert9Ú@py_format11Ú@py_format13s                r   Útest_schema_json_roundtripz7TestVideoCriticVerdictSchema.test_schema_json_roundtrip¸   sú  € å%ØØÝ$°TÀÐFÑFÔFØ&Ø5ð
ñ 
ô 
ˆð ×+Ò+Ñ-Ô-ˆÝ%Ô9¸(ÑCÔCˆØÔ%Ð?¨Ô)?Ð?Ð%Ð)?Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð%Ð)?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?ˆxÑ?Ô?Ð?Õ?Ô?ˆxÑ?Ô?Ð?Ð?Õ?Ô?Ð%Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?¨Ñ?Ô?Ð?Õ?Ô?¨Ñ?Ô?Ð?Ð?Õ?Ô?Ð)?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÔ Ð5 HÔ$5Ð5Ð Ð$5Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Õ5Ô5ˆxÑ5Ô5Ð5Ð5Õ5Ô5Ð Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 HÑ5Ô5Ð5Õ5Ô5 HÑ5Ô5Ð5Ð5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÔ!ÐCÐ!Ô'ÐC¨8Ô+=ÐCÐ+=Ô+CÐCÐ'Ð+CÒCÐCÐCÑCÕCÔCÐCÐCÐCÐCÐ'Ð+CÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆxÑCÔCÐCÕCÔCˆxÑCÔCÐCÐCÕCÔCÐ!ÑCÔCÕCÔCÐ'ÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔC¨8ÑCÔCÐCÕCÔC¨8ÑCÔCÐCÐCÕCÔCÐ+=ÑCÔCÕCÔCÐ+CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCr   N)	Ú__name__Ú
__module__Ú__qualname__rˆ   r‹   r‘   r”   rš   r¬   © r   r   rU   rU   s   sv   € € € € € ð9ð 9ð 9ð,-ð -ð -ð$'ð 'ð 'ð)ð )ð )ð	@ð 	@ð 	@ðDð Dð Dð Dð Dr   rU   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestEvaluateShotGatec           	      óÂ
  — |dz  }t          |ddd¬¦  «         t          dt          |¦  «        ddd	¬
¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u}|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}	||	u }
|
s½t	          j        d|
fd||	f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |	¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}
}	|j        }|j        }t#          |¦  «        }	d}|	|k    }|�st	          j        d|fd |	|f¦  «        d!t          j        ¦   «         v st	          j        t"          ¦  «        rt	          j	        t"          ¦  «        nd!dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |	¦  «        t	          j	        |¦  «        d"œz  }d#d$|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	x}}dS )%uS   Tháº©m Ä‘á»‹nh video há»£p lá»‡, khÃ´ng dá»‹ táº­t: káº¿t quáº£ >= 0.8 vÃ  APPROVE.zvalid_shot_10s.mp4éx   r   )r´   é    r"   ©r$   r(   r)   Úep01_scene02_shot04Ú	vuong_ongu0   Trung cáº­n VÆ°Æ¡ng Ã”ng 55 tuá»•i Ä‘Ä©nh Ä‘áº¡cÚ	heuristic)Úshot_idÚ
video_pathÚexpected_characterÚpromptÚforce_enginer�   ©ú>=©z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} >= %(py5)srg   rh   rl   rm   NTrd   rf   r]   rn   rq   ©úis not)z5%(py2)s
{%(py2)s = %(py0)s.shot_eval
} is not %(py5)srr   rs   ru   rv   r   )zt%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.shot_eval
}.visual_defects
})
} == %(py10)sÚlen)ri   Úpy1Úpy3rk   rm   r    r¡   r¢   )rS   r	   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   ra   rW   rY   rÄ   )r   r   Úvid_pathrg   r€   r�   r‚   rƒ   r„   r…   r†   r‡   Ú@py_assert2r©   Ú@py_assert8rª   r«   s                    r   Ú#test_evaluate_shot_gate_valid_videoz8TestEvaluateShotGate.test_evaluate_shot_gate_valid_videoÍ   s5  € à Ð#7Ñ7ˆÝ °S¸zÐVeÐfÑfÔfÐfå$Ø)Ý˜8‘}”}Ø*ØEØ$ð
ñ 
ô 
ˆð Ô$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ' 4Ð'Ð 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ'Ð4¨9Ð4Ð'¨9Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð'¨9Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Ð4Õ4Ô4Ð'Ñ4Ô4Õ4Ô4¨9Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔ Ð,¨Ð,Ð ¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð ¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ Ð8Ð Ô0Ð8°DÐ8Ð0°DÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð0°DÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð Ñ8Ô8Õ8Ô8Ð0Ñ8Ô8Õ8Ô8°DÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ$Ð9Ð$Ô3Ð9�sÐ3Ñ4Ô4Ð9¸Ð9Ð4¸Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð4¸Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�sÑ9Ô9Ð9Õ9Ô9�sÑ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�7Ñ9Ô9Ð9Õ9Ô9�7Ñ9Ô9Ð9Ð9Õ9Ô9Ð$Ñ9Ô9Õ9Ô9Ð3Ñ9Ô9Õ9Ô9Ð4Ñ9Ô9Õ9Ô9¸Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r   c                 óÆ  — t          dddd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j
        }d}||u }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}d}|j        j        d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}}dS )uD   File khÃ´ng tá»“n táº¡i pháº£i tráº£ vá»� score 0.0 vÃ  RETAKE_SHOT.Úep01_scene02_shot99znonexistent_fake_video.mp4r¸   r¹   )rº   r»   r¼   r¾   ç        rn   rp   rg   rh   rl   rm   NFrd   rf   rŠ   rq   zdoes not existr   ©Úin)z%(py1)s in %(py4)s)rÅ   rt   zassert %(py6)srž   )r	   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   ra   rY   )r   rg   r€   r�   r‚   rƒ   r„   Ú@py_assert0rÈ   Ú@py_format5r¦   s              r   Ú$test_evaluate_shot_gate_missing_filez9TestEvaluateShotGate.test_evaluate_shot_gate_missing_fileà   s  € å$Ø)Ø3Ø*Ø$ð	
ñ 
ô 
ˆð Ô$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÐF 7Ô#4Ô#CÀAÔ#FÐFÐÐ#FÐFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐÐ#FÐFÑFÔFÕFÔFÐÑFÔFÕFÔFÐ#FÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFr   c                 óú  — |dz  }|                      d¦  «         t          dt          |¦  «        d¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd	t	          j	        |¦  «        t	          j	        |¦  «        d
œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd	t	          j	        |¦  «        t	          j	        |¦  «        d
œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd	t	          j	        |¦  «        t	          j	        |¦  «        d
œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )uT   File rá»—ng hoáº·c bá»‹ há»�ng khÃ´ng Ä‘á»�c Ä‘Æ°á»£c pháº£i tráº£ vá»� RETAKE_SHOT.zcorrupted_shot.mp4s   THIS_IS_NOT_A_VALID_MP4_HEADERÚep01_scene02_shot05r¹   ©rº   r»   r¾   rÍ   rn   rp   rg   rh   rl   rm   NFrd   rf   rŠ   rq   )Úwrite_bytesr	   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   )	r   r   Úcorrupt_pathrg   r€   r�   r‚   rƒ   r„   s	            r   Ú$test_evaluate_shot_gate_corrupt_filez9TestEvaluateShotGate.test_evaluate_shot_gate_corrupt_fileí   sò  € à$Ð';Ñ;ˆØ× Ò Ð!BÑCÔCÐCå$Ø)Ý˜<Ñ(Ô(Ø$ð
ñ 
ô 
ˆð
 Ô$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ót  — |dz  }t          |dd¬¦  «         t          dt          |¦  «        d¬¦  «        }|j        }d}||k     }|sªt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}d„ |j        j        D ¦   «         }t          |¦  «        }|s•ddt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )uW   Video toÃ n mÃ u Ä‘en (black frames) pháº£i bá»‹ pháº¡t Ä‘iá»ƒm vÃ  phÃ¡t hiá»‡n lá»—i.zdefect_black.mp4r   r.   )r$   r(   Úep01_scene02_shot06r¹   rÕ   r�   )ú<)z4%(py2)s
{%(py2)s = %(py0)s.overall_score
} < %(py5)srg   rh   rl   rm   NFrd   rf   c              3   ó   K  — | ]}d |v V — Œ	dS )zBlack frameNr°   ©Ú.0Úds     r   ú	<genexpr>zRTestEvaluateShotGate.test_evaluate_shot_gate_black_frame_defect.<locals>.<genexpr>  s'   è è € ÐPÐP¨!�= AÐ%ÐPÐPÐPÐPÐPÐPr   ú,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany©ri   rj   rt   rŠ   rn   rq   )rS   r	   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   ra   rY   râ   rb   )
r   r   Ú
black_pathrg   r€   r�   r‚   rƒ   r„   rÑ   s
             r   Ú*test_evaluate_shot_gate_black_frame_defectz?TestEvaluateShotGate.test_evaluate_shot_gate_black_frame_defectû   s¬  € à"Ð%7Ñ7ˆ
Ý 
°rÀÐHÑHÔHÐHå$Ø)Ý˜:‘”Ø$ð
ñ 
ô 
ˆð
 Ô$Ð* sÐ*Ð$ sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð$ sÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Ð*Õ*Ô*Ð$Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØPÐP¨wÔ/@Ô/OÐPÑPÔPÐP�sÐPÑPÔPÐPÐPÐPÐPÐPÕPÔPÑPÔPÐPÐPÕPÔP�sÑPÔPÐPÕPÔP�sÑPÔPÐPÐPÕPÔPÐPÑPÔPÕPÔPÐPÑPÔPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 óv  — |dz  }t          |ddd¬¦  «         t          dt          |¦  «        d¬¦  «        }d	„ |j        j        D ¦   «         }t          |¦  «        }|s•d
dt          j        ¦   «         v st          j	        t
          ¦  «        rt          j
        t
          ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚dx}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}dS )ub   Video bá»‹ Ä‘Æ¡ cá»©ng (frozen frames, khÃ´ng cÃ³ chuyá»ƒn Ä‘á»™ng vi mÃ´) pháº£i bá»‹ ghi nháº­n.zdefect_frozen.mp4r   r1   ©r    r    r    r¶   Úep01_scene02_shot07r¹   rÕ   c              3   ó   K  — | ]}d |v V — Œ	dS )ÚFrozenNr°   rÝ   s     r   rà   zSTestEvaluateShotGate.test_evaluate_shot_gate_frozen_video_defect.<locals>.<genexpr>  s&   è è € ÐKÐK Q�8˜q�=ÐKÐKÐKÐKÐKÐKr   rá   râ   rã   NçÍÌÌÌÌÌä?©ú<=©z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} <= %(py5)srg   rh   rl   rm   Frd   rf   rŠ   rn   rq   )rS   r	   r   ra   rY   râ   ry   rz   rw   r{   r|   r}   r~   r_   rx   r`   rb   )
r   r   Úfrozen_pathrg   r€   r‚   rÑ   r�   rƒ   r„   s
             r   Ú+test_evaluate_shot_gate_frozen_video_defectz@TestEvaluateShotGate.test_evaluate_shot_gate_frozen_video_defect
  s²  € à#Ð&9Ñ9ˆÝ ¸ÀÐVeÐfÑfÔfÐfå$Ø)Ý˜;Ñ'Ô'Ø$ð
ñ 
ô 
ˆð
 LÐK¨'Ô*;Ô*JÐKÑKÔKÐK�sÐKÑKÔKÐKÐKÐKÐKÐKÕKÔKÑKÔKÐKÐKÕKÔK�sÑKÔKÐKÕKÔK�sÑKÔKÐKÐKÕKÔKÐKÑKÔKÕKÔKÐKÑKÔKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 óö  — |dz  }t          |ddd¬¦  «         t          dt          |¦  «        d¬¦  «        }|j        }d	}||k    }|sªt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )uU   Video bá»‹ Ä‘Æ¡ cá»©ng pháº£i bá»‹ tá»« chá»‘i vá»›i Ä‘iá»ƒm <= 0.65 vÃ  RETAKE_SHOT.zdefect_frozen_reject.mp4r   r1   rç   r¶   rè   r¹   ©r¾   rë   rì   rî   rg   rh   rl   rm   NFrd   rf   rŠ   rn   rq   )rS   r	   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   )	r   r   rï   rg   r€   r�   r‚   rƒ   r„   s	            r   Ú-test_evaluate_shot_gate_frozen_video_rejectedzBTestEvaluateShotGate.test_evaluate_shot_gate_frozen_video_rejected  sì  € à#Ð&@Ñ@ˆÝ ¸ÀÐVeÐfÑfÔfÐfÝ$Ð%:½CÀÑ<LÔ<LÐ[fÐgÑgÔgˆØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó.	  — t           dz  }t          j        t          |¦  «        ¦  «        }d}||u}|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}|d	z  }t          j        d
Ž }	t          j        t          |¦  «        |	d|j        d         |j        d         f¦  «        }
t          d¦  «        D ]}|
                     |¦  «         Œ|
                     ¦   «          t%          dt          |¦  «        dd¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}||u }|s½t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}|j        }d}||u }|sªt	          j        d|fd ||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d!}||k    }|sªt	          j        d"|fd#||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )$ut   Video ThÃºy Kiá»�u tháº©m Ä‘á»‹nh cho VÆ°Æ¡ng Ã”ng pháº£i bá»‹ phÃ¡t hiá»‡n cross-contamination vÃ  Ä‘iá»ƒm <= 0.50.ú^04_Assets/characters/01_Main_Protagonists/thuy_kieu_maiden_16yo/thuy_kieu_maiden_16yo_720p.pngNrÂ   ©z%(py0)s is not %(py3)sÚimg©ri   rÆ   úassert %(py5)srk   zcontam_kieu_vo.mp4r-   r   r5   r   r   Úshot_vor¸   r¹   ©r¼   r¾   r–   rì   rî   rg   rh   rl   rm   Frd   rr   rs   ru   rv   rf   rŠ   rn   rq   ©ÚPROJECT_ROOTr9   Úimreadr   rw   rx   ry   rz   r{   r|   r}   r~   r:   r;   Úshaper<   rG   rH   r	   r_   ra   rW   r`   rb   ©r   r   Útk_portraitr÷   rÈ   r€   Ú@py_format4rƒ   Úcontam_pathrI   rJ   Ú_rg   r�   r‚   r„   r…   r†   r‡   s                      r   Ú9test_evaluate_shot_gate_character_contamination_vuong_ongzNTestEvaluateShotGate.test_evaluate_shot_gate_character_contamination_vuong_ong"  ó-  € å"ð  &Fñ  FˆÝŒj�˜[Ñ)Ô)Ñ*Ô*ˆØÐˆs˜$ˆÐÐÐÕÔÐÐÐÐˆs˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ#Ð&:Ñ:ˆÝÔ'¨Ð0ˆÝŒo�c +Ñ.Ô.°¸¸S¼YÀq¼\È3Ì9ÐUVÌ<Ð<XÑYÔYˆÝ�r‘”ð 	ð 	ˆAØ�IŠI�c‰NŒNˆNˆNØ�Š‰ŒˆÝ$ Yµ°KÑ0@Ô0@ÐU`ÐozÐ{Ñ{Ô{ˆØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ Ð9Ð Ô0Ð9°EÐ9Ð0°EÐ9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð0°EÐ9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆwÑ9Ô9Ð9Õ9Ô9ˆwÑ9Ô9Ð9Ð9Õ9Ô9Ð Ñ9Ô9Õ9Ô9Ð0Ñ9Ô9Õ9Ô9°EÑ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó.	  — t           dz  }t          j        t          |¦  «        ¦  «        }d}||u}|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}|d	z  }t          j        d
Ž }	t          j        t          |¦  «        |	d|j        d         |j        d         f¦  «        }
t          d¦  «        D ]}|
                     |¦  «         Œ|
                     ¦   «          t%          dt          |¦  «        dd¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}||u }|s½t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}|j        }d}||u }|sªt	          j        d|fd ||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d!}||k    }|sªt	          j        d"|fd#||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )$us   Video ThÃºy Kiá»�u tháº©m Ä‘á»‹nh cho Kim Trá»�ng pháº£i bá»‹ phÃ¡t hiá»‡n cross-contamination vÃ  Ä‘iá»ƒm <= 0.50.rõ   NrÂ   rö   r÷   rø   rù   rk   zcontam_kieu_kt.mp4r-   r   r5   r   r   Úshot_ktÚ	kim_trongr¹   rû   r–   rì   rî   rg   rh   rl   rm   Frd   rr   rs   ru   rv   rf   rŠ   rn   rq   rü   r   s                      r   Ú9test_evaluate_shot_gate_character_contamination_kim_trongzNTestEvaluateShotGate.test_evaluate_shot_gate_character_contamination_kim_trong3  r  r   N)r­   r®   r¯   rÊ   rÒ   rØ   rå   rð   ró   r  r
  r°   r   r   r²   r²   Ì   s�   € € € € € ð:ð :ð :ð&Gð Gð Gð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð"9ð 9ð 9ð 9ð 9r   r²   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestEvaluateSceneGatec                 ó|  — |dz  }|dz  }t          |dddd¬¦  «         t          |dddd¬¦  «         t          dt          |¦  «        t          |¦  «        gd	¬
¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||u}|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}
||
u }|s½t	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |
¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}
dS ) uV   ToÃ n cáº£nh cÃ³ mÃ u sáº¯c vÃ  Ä‘iá»ƒm tiáº¿p biÃªn mÆ°á»£t mÃ  pháº£i Ä‘áº¡t >= 0.8.zscene_shot_01.mp4zscene_shot_02.mp4r   r   )r´   r!   é´   r   )r$   r(   r)   r*   Úep01_scene02r¹   ©Úscene_idÚshot_video_pathsr¾   r�   r¿   rÁ   rg   rh   rl   rm   NTrd   rf   r]   rn   rq   rÂ   ©z6%(py2)s
{%(py2)s = %(py0)s.scene_eval
} is not %(py5)sF©z[%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.scene_eval
}.trigger_color_match
} is %(py7)srs   ru   rv   )rS   r
   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   Ú
scene_evalÚtrigger_color_match©r   r   Ús1Ús2rg   r€   r�   r‚   rƒ   r„   r…   r†   r‡   s                r   Ú$test_evaluate_scene_gate_smooth_flowz:TestEvaluateSceneGate.test_evaluate_scene_gate_smooth_flowJ  s  € àÐ0Ñ0ˆØÐ0Ñ0ˆÝ ¨r¸
ÈÐpqÐrÑrÔrÐrÝ ¨r¸
ÈÐprÐsÑsÔsÐså%Ø#Ý! "™gœg¥s¨2¡w¤wÐ/Ø$ð
ñ 
ô 
ˆð
 Ô$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ' 4Ð'Ð 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ'Ð4¨9Ð4Ð'¨9Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð'¨9Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Ð4Õ4Ô4Ð'Ñ4Ô4Õ4Ô4¨9Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔ!Ð-¨Ð-Ð!¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð!¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Ð-Õ-Ô-Ð!Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ!Ð>Ð!Ô5Ð>¸Ð>Ð5¸Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð5¸Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Ð>Õ>Ô>Ð!Ñ>Ô>Õ>Ô>Ð5Ñ>Ô>Õ>Ô>¸Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r   c                 óx  — |dz  }|dz  }t          |ddd¬¦  «         t          |ddd¬¦  «         t          dt          |¦  «        t          |¦  «        gd	¬
¦  «        }|j        }d}||u}|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}
||
u }|s½t	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |
¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}
|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}dS )uo   Ä�á»™ chÃªnh mÃ u Ä‘á»™t ngá»™t giá»¯a cÃ¡c shot pháº£i kÃ­ch hoáº¡t trigger_color_match vÃ  APPLY_COLOR_MATCH.zscene_color_green.mp4zscene_color_red.mp4r   r2   )é
   éÜ   é   r¶   )r"   r  r  r  r¹   r  NrÂ   r  rg   rh   rl   rm   Trd   r  rs   ru   rv   ÚAPPLY_COLOR_MATCHrn   rq   )rS   r
   r   r  rw   rx   ry   rz   r{   r|   r}   r~   r  rb   r  s                r   Ú9test_evaluate_scene_gate_color_shift_triggers_color_matchzOTestEvaluateSceneGate.test_evaluate_scene_gate_color_shift_triggers_color_match\  sA  € àÐ4Ñ4ˆØÐ2Ñ2ˆå ¨r¸ÈMÐZÑZÔZÐZå ¨r¸ÈMÐZÑZÔZÐZå%Ø#Ý! "™gœg¥s¨2¡w¤wÐ/Ø$ð
ñ 
ô 
ˆð
 Ô!Ð-¨Ð-Ð!¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð!¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Ð-Õ-Ô-Ð!Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ!Ð=Ð!Ô5Ð=¸Ð=Ð5¸Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð5¸Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆwÑ=Ô=Ð=Õ=Ô=ˆwÑ=Ô=Ð=Ð=Õ=Ô=Ð!Ñ=Ô=Õ=Ô=Ð5Ñ=Ô=Õ=Ô=¸Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ'Ð>Ð+>Ð>Ð'Ð+>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð'Ð+>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Ð>Õ>Ô>Ð'Ñ>Ô>Õ>Ô>Ð+>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r   c                 ó¬  — t          dg d¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j
        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )u@   Danh sÃ¡ch rá»—ng pháº£i tráº£ vá»� RETAKE_SHOT vá»›i score 0.0.r  r¹   r  rÍ   rn   rp   rg   rh   rl   rm   NFrd   rf   rŠ   rq   ©r
   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   r“   s          r   Ú$test_evaluate_scene_gate_empty_inputz:TestEvaluateSceneGate.test_evaluate_scene_gate_empty_inputn  sÊ  € å%Ø#ØØ$ð
ñ 
ô 
ˆð
 Ô$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó°  — t          dddgd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j
        }d}||u }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )u]   Scene Gate pháº£i tá»« chá»‘i cÃ¡c file khÃ´ng tá»“n táº¡i vá»›i Ä‘iá»ƒm 0.0 vÃ  RETAKE_SHOT.Úsc_fakeznonexistent_1.mp4znonexistent_2.mp4r¹   rò   rÍ   rn   rp   rg   rh   rl   rm   NFrd   rf   rŠ   rq   r"  r“   s          r   Ú1test_evaluate_scene_gate_missing_or_corrupt_fileszGTestEvaluateSceneGate.test_evaluate_scene_gate_missing_or_corrupt_filesy  sÇ  € å% iÐ2EÐGZÐ1[ÐjuÐvÑvÔvˆØÔ$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 óL  — |dz  }|dz  }|                      d¦  «         |                      d¦  «         t          dt          |¦  «        t          |¦  «        gd¬¦  «        }|j        }d}||k    }|sªt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d	|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}dS )u\   Scene Gate pháº£i tá»« chá»‘i file rá»—ng / garbage bytes vá»›i Ä‘iá»ƒm 0.0 vÃ  RETAKE_SHOT.zcorrupt_1.mp4zcorrupt_2.mp4s   NOT_A_VIDEOr   Ú
sc_corruptr¹   rò   rÍ   rn   rp   rg   rh   rl   rm   NFrd   rf   rŠ   rq   )rÖ   r
   r   r_   rw   rx   ry   rz   r{   r|   r}   r~   r`   rb   )
r   r   Úc1Úc2rg   r€   r�   r‚   rƒ   r„   s
             r   Ú(test_evaluate_scene_gate_corrupted_filesz>TestEvaluateSceneGate.test_evaluate_scene_gate_corrupted_files€  s	  € à˜_Ñ,ˆØ˜_Ñ,ˆØ
�Š�~Ñ&Ô&Ð&Ø
�Š�sÑÔÐÝ% lµS¸±W´W½cÀ"¹g¼gÐ4FÐU`ÐaÑaÔaˆØÔ$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ'Ð8¨=Ð8Ð'¨=Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð'¨=Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Õ8Ô8ˆwÑ8Ô8Ð8Ð8Õ8Ô8Ð'Ñ8Ô8Õ8Ô8¨=Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   N)r­   r®   r¯   r  r   r#  r&  r+  r°   r   r   r  r  I  s_   € € € € € ð?ð ?ð ?ð$?ð ?ð ?ð$	9ð 	9ð 	9ð9ð 9ð 9ð	9ð 	9ð 	9ð 	9ð 	9r   r  c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestTakeClassifierAndStartFramec                 ó0  — t           j        }d} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}x}}t           j        }d
} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}x}}t           j        }d} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}x}}d	S )u7   Shot 01 luÃ´n lÃ  Cinematic Cut vÃ¬ má»Ÿ Ä‘áº§u cáº£nh.Úep01_scene01_shot01ÚCINEMATIC_CUTrn   )zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.classify_shot_take
}(%(py4)s)
} == %(py9)sÚpo)ri   rj   rt   rž   rv   zassert %(py11)sÚpy11NÚep01_scene02_shot01Úep01_scene07_shot01©
r1  Úclassify_shot_takerw   rx   ry   rz   r{   r|   r}   r~   )r   r€   r‚   r†   rÉ   r¨   r‡   Ú@py_format12s           r   Ú+test_classify_shot_take_scene_opener_is_cutzKTestTakeClassifierAndStartFrame.test_classify_shot_take_scene_opener_is_cut‘  sq  € åÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÝÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÝÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNr   c                 óx  — t          j        d¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d	S )
uZ   Chuyá»ƒn vai (VÆ°Æ¡ng Ã”ng sang VÆ°Æ¡ng Quan) báº¯t buá»™c phÃ¢n loáº¡i lÃ  Cinematic Cut.Úep01_scene02_shot08r0  rn   ©z%(py0)s == %(py3)sÚ	take_typerø   rù   rk   Nr5  ©r   r<  rÈ   r€   r  rƒ   s         r   Ú+test_classify_shot_take_actor_switch_is_cutzKTestTakeClassifierAndStartFrame.test_classify_shot_take_actor_switch_is_cut—  sÝ   € õ Ô)Ð*?Ñ@Ô@ˆ	Ø+Ð+ˆy˜OÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆy˜OÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+˜OÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r   c                 óx  — t          j        d¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d	S )
uZ   CÃ¹ng nhÃ¢n váº­t (Kim Trá»�ng tÆ°Æ¡ng tÆ° á»Ÿ Scene 07) phÃ¢n loáº¡i lÃ  Continuous Take.Úep01_scene07_shot02ÚCONTINUOUS_TAKErn   r;  r<  rø   rù   rk   Nr5  r=  s         r   Ú0test_classify_shot_take_same_actor_is_continuouszPTestTakeClassifierAndStartFrame.test_classify_shot_take_same_actor_is_continuous�  sà   € õ Ô)Ð*?Ñ@Ô@ˆ	Ø-Ð-ˆyÐ-Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆyÐ-Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆyÑ-Ô-Ð-Õ-Ô-ˆyÑ-Ô-Ð-Ð-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                 óx  — t          j        d¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d	S )
uO   Cáº£nh váº­t / chÃ©n trÃ  ('none') báº¯t buá»™c phÃ¢n loáº¡i lÃ  Cinematic Cut.Úep01_scene01_shot05r0  rn   r;  r<  rø   rù   rk   Nr5  r=  s         r   Ú&test_classify_shot_take_scenery_is_cutzFTestTakeClassifierAndStartFrame.test_classify_shot_take_scenery_is_cut£  sÛ   € åÔ)Ð*?Ñ@Ô@ˆ	Ø+Ð+ˆy˜OÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆy˜OÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+˜OÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r   c                 ó‚  — t          j        di ¦  «        }|�r&d}||v}|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d
}||v}|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d}|j
        } |¦   «         }||v }|s½t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d	x}x}x}}d	S d	S )uj   Cinematic Cut TUYá»†T Ä�á»�I KHÃ”NG tráº£ vá»� prev_tail ká»ƒ cáº£ khi thÆ° má»¥c keyframes cÃ³ frame cÅ©.r:  rè   ©únot in©z%(py1)s not in %(py3)sÚresolved©rÅ   rÆ   rù   rk   NÚclean_frame_239Ú
vuong_quanrÎ   ©zD%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lower
}()
}©rÅ   rÆ   rk   rm   ru   rv   )r1  Úresolve_start_framerw   rx   r|   ry   rz   r{   r}   r~   Úlower)
r   rJ  rÐ   rÈ   r  rƒ   r�   r…   r„   r‡   s
             r   Ú>test_resolve_start_frame_cinematic_cut_never_returns_prev_tailz^TestTakeClassifierAndStartFrame.test_resolve_start_frame_cinematic_cut_never_returns_prev_tail¨  s¸  € åÔ)Ð*?ÀÑDÔDˆàñ 	4Ø(Ð8Ð(°Ð8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(°Ð8Ñ8Ô8Õ8Ô8Ð(Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8°Ñ8Ô8Ð8Õ8Ô8°Ñ8Ô8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ø$Ð4Ð$¨HÐ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨HÐ4Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4¨HÑ4Ô4Ð4Õ4Ô4¨HÑ4Ô4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4àÐ3 8¤>Ð3 > >Ñ#3Ô#3Ð3�<Ð#3Ð3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3�<Ð#3Ð3Ñ3Ô3Õ3Ô3�<Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3 8Ñ3Ô3Ð3Õ3Ô3 8Ñ3Ô3Ð3Ð3Õ3Ô3 >Ñ3Ô3Õ3Ô3Ð#3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð		4ð 	4r   c                 ó€  — t          j        d¦  «        \  }}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d	}||u}|s—t          j        d
|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}}	d	S )u;   Giao diá»‡n v2 tráº£ vá»� tuple (resolved_path, take_type).r4  r0  rn   r;  r<  rø   rù   rk   NrÂ   rö   Ú
frame_pathr	  rÎ   rN  rO  ru   rv   )r1  Úresolve_start_frame_v2rw   rx   ry   rz   r{   r|   r}   r~   rQ  )r   rT  r<  rÈ   r€   r  rƒ   rÐ   r�   r…   r„   r‡   s               r   Ú$test_resolve_start_frame_v2_contractzDTestTakeClassifierAndStartFrame.test_resolve_start_frame_v2_contract²  s§  € å "Ô 9Ð:OÑ PÔ PÑˆ
�IØ+Ð+ˆy˜OÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆy˜OÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+˜OÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ø!%Ð%ˆz Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆz Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ØÐ0˜jÔ.Ð0Ð.Ð.Ñ0Ô0Ð0ˆ{Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{Ð0Ð0Ñ0Ô0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜jÑ0Ô0Ð0Õ0Ô0˜jÑ0Ô0Ð0Ð0Õ0Ô0Ð.Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r   N)	r­   r®   r¯   r8  r>  rB  rE  rR  rV  r°   r   r   r-  r-  �  sq   € € € € € ðOð Oð Oð,ð ,ð ,ð.ð .ð .ð,ð ,ð ,ð
4ð 4ð 4ð1ð 1ð 1ð 1ð 1r   r-  c                   ót   — e Zd ZdZ ej        d¬¦  «        ed„ ¦   «         ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
S )Ú#TestBilateralAndCharacterSafeguardsu[   Kiá»ƒm thá»­ xÃ¡c thá»±c nhÃ¢n váº­t vá»›i dá»¯ liá»‡u thá»±c táº¿ tá»« po.get_all_shots().Úclassr   c                 ó(   — t          j        ¦   «         S )N)r1  Úget_all_shots)Úclss    r   Ú	all_shotsz-TestBilateralAndCharacterSafeguards.all_shotsÁ  s   € õ ÔÑ!Ô!Ð!r   c                 óî  — d}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}d	}	|	|v}|s—t          j        d
|fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}	}d}	|	|v}|s—t          j        d
|fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}	}d}	|j        }
 |
¦   «         }|	|v }|s½t          j        d|fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}	x}x}
}dS )uq   Cinematic Cut vá»›i dá»¯ liá»‡u shot thá»±c táº¿ khÃ´ng Ä‘Æ°á»£c phÃ©p tráº£ vá»� tail frame cá»§a shot trÆ°á»›c.r:  NrÂ   rö   rJ  rø   rù   rk   rè   rG  rI  rK  rL  rM  rÎ   rN  rO  ru   rv   )Úgetr1  rP  rw   rx   ry   rz   r{   r|   r}   r~   rQ  ©r   r]  ÚsidÚsdatarJ  rÈ   r€   r  rƒ   rÐ   r�   r…   r„   r‡   s                 r   Ú9test_cinematic_cut_with_live_shot_data_never_returns_tailz]TestBilateralAndCharacterSafeguards.test_cinematic_cut_with_live_shot_data_never_returns_tailÆ  s  € à#ˆØ—’˜c 2Ñ&Ô&ˆÝÔ)¨#¨uÑ5Ô5ˆØ#Ð#ˆx˜tÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆx˜tÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Ð#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø$Ð4Ð$¨HÐ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨HÐ4Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4¨HÑ4Ô4Ð4Õ4Ô4¨HÑ4Ô4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ø Ð0Ð ¨Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð ¨Ð0Ñ0Ô0Õ0Ô0Ð Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨Ñ0Ô0Ð0Õ0Ô0¨Ñ0Ô0Ð0Ð0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0ØÐ/˜xœ~Ð/˜~˜~Ñ/Ô/Ð/ˆ|Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆ|Ð/Ð/Ñ/Ô/Õ/Ô/ˆ|Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/˜xÑ/Ô/Ð/Õ/Ô/˜xÑ/Ô/Ð/Ð/Õ/Ô/˜~Ñ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c                 óŽ  — g d¢}|D �]Ú}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v }|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v}|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}�ŒÜg d¢}|D �]Ú}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v }|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v}|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}�ŒÜdS )um   Scene 10: Kiá»�u Ä‘á»™c táº¥u tá»³ bÃ  pháº£i ra ThÃºy Kiá»�u; Kim Trá»�ng tÆ°Æ¡ng tÆ° pháº£i ra Kim Trá»�ng.)Úep01_scene10_shot03Úep01_scene10_shot06Úep01_scene10_shot11Úep01_scene10_shot12NrÂ   rö   rJ  rø   úShot õ%    pháº£i resolve Ä‘Æ°á»£c Start Frame!ú
>assert %(py5)srk   Ú	thuy_kieurÎ   rN  rO  u1    pháº£i ra chÃ¢n dung ThÃºy Kiá»�u, thá»±c táº¿: ú
>assert %(py9)srv   r	  rG  ©zH%(py1)s not in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lower
}()
}u0    (Kiá»�u) khÃ´ng Ä‘Æ°á»£c phÃ©p ra Kim Trá»�ng: )Úep01_scene10_shot04Úep01_scene10_shot05Úep01_scene10_shot13u0    pháº£i ra chÃ¢n dung Kim Trá»�ng, thá»±c táº¿: u6    (Kim Trá»�ng) khÃ´ng Ä‘Æ°á»£c phÃ©p ra ThÃºy Kiá»�u: ©r_  r1  rP  rw   rx   ry   rz   r{   r|   Ú_format_assertmsgr}   r~   rQ  )r   r]  Ú
kieu_shotsra  rb  rJ  rÈ   r€   r  rƒ   rÐ   r�   r…   r„   r‡   Ú	kim_shotss                   r   Ú-test_scene10_live_shots_resolve_authenticallyzQTestBilateralAndCharacterSafeguards.test_scene10_live_shots_resolve_authenticallyÐ  sÞ  € ð
ð 
ð 
ˆ
ð ð 	{ñ 	{ˆCØ—M’M # rÑ*Ô*ˆEÝÔ-¨c°5Ñ9Ô9ˆHØ#'Ð[�8 4Ð'Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[�8 4Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�8Ñ[Ô[Ð[Õ[Ô[�8Ñ[Ô[Ð[Ð[Õ[Ô[ 4Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð)[°Ð)[Ð)[Ð)[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[ØÐw (¤.Ðw . .Ñ"2Ô"2Ðw�;Ð"2Ð2ÐwÐwÐwÕwÔwÐwÐwÐwÐw�;Ð"2ÐwÑwÔwÕwÔw�;ÑwÔwÐwÕwÔwÑwÔwÐwÐwÕwÔw (ÑwÔwÐwÕwÔw (ÑwÔwÐwÐwÕwÔw .ÑwÔwÕwÔwÐ"2ÑwÔwÐwÐwÑwÐwÕwÔw°sÐ4wÐ4wÐmuÐ4wÐ4wÑwÔwÐwÑwÐwÐwÐwÑwÐwÕwÕwÔwÐwÑwÔwÑwÔwÐwÐwÐwÐwÐwÐwÐwÐwÐwØÐz h¤nÐz n nÑ&6Ô&6Ðz�;Ð&6Ð6ÐzÐzÐzÕzÔzÐzÐzÐzÐz�;Ð&6ÐzÑzÔzÕzÔz�;ÑzÔzÐzÕzÔzÑzÔzÐzÐzÕzÔz hÑzÔzÐzÕzÔz hÑzÔzÐzÐzÕzÔz nÑzÔzÕzÔzÐ&6ÑzÔzÐzÐzÑzÐzÕzÔz¸3Ð8zÐ8zÐpxÐ8zÐ8zÑzÔzÐzÑzÐzÐzÐzÑzÐzÕzÕzÔzÐzÑzÔzÑzÔzÐzÐzÐzÐzÐzÐzÐzÐzÐzÑzð
ð 
ð 
ˆ	ð
 ð 	Añ 	AˆCØ—M’M # rÑ*Ô*ˆEÝÔ-¨c°5Ñ9Ô9ˆHØ#'Ð[�8 4Ð'Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[�8 4Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�8Ñ[Ô[Ð[Õ[Ô[�8Ñ[Ô[Ð[Ð[Õ[Ô[ 4Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð)[°Ð)[Ð)[Ð)[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[ØÐv (¤.Ðv . .Ñ"2Ô"2Ðv�;Ð"2Ð2ÐvÐvÐvÕvÔvÐvÐvÐvÐv�;Ð"2ÐvÑvÔvÕvÔv�;ÑvÔvÐvÕvÔvÑvÔvÐvÐvÕvÔv (ÑvÔvÐvÕvÔv (ÑvÔvÐvÐvÕvÔv .ÑvÔvÕvÔvÐ"2ÑvÔvÐvÐvÑvÐvÕvÔv°sÐ4vÐ4vÐltÐ4vÐ4vÑvÔvÐvÑvÐvÐvÐvÑvÐvÕvÕvÔvÐvÑvÔvÑvÔvÐvÐvÐvÐvÐvÐvÐvÐvÐvØð  A h¤nð  A n nÑ&6Ô&6ð  A�;Ð&6Ð6ð  Að  Að  Aõ  Aô  Að  Að  Að  Að  A�;Ð&6ð  Añ  Aô  Aõ  Aô  A�;ñ  Aô  Að  Aõ  Aô  Añ  Aô  Að  Að  Aõ  Aô  A hñ  Aô  Að  Aõ  Aô  A hñ  Aô  Að  Að  Aõ  Aô  A nñ  Aô  Aõ  Aô  AÐ&6ñ  Aô  Að  Að  Añ  Að  Aõ  Aô  A¸3ð  9Að  9AÐv~ð  9Að  9Añ  Aô  Að  Añ  Að  Að  Að  Añ  Að  Aõ  Aõ  Aô  Að  Añ  Aô  Añ  Aô  Að  Að  Að  Að  Að  Að  Að  Að  Að  Añ  Að	Að 	Ar   c                 ó¸  — g d¢}|D �]Ô}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v }|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v}|sØt          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        d|› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v}|sØt          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        d|› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}�ŒÖ|                      di ¦  «        }t          j        d|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v }|s½t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}g d¢}|D �]É}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v }|s×t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}�ŒËdS ) uX   Scene 06: CÃ¡c cÃº mÃ¡y Kim Trá»�ng, ThÃºy Kiá»�u vÃ  VÆ°Æ¡ng Quan resolve chuáº©n xÃ¡c.)Úep01_scene06_shot03Úep01_scene06_shot04Úep01_scene06_shot06Úep01_scene06_shot10Úep01_scene06_shot12Úep01_scene06_shot14NrÂ   rö   rJ  rø   ri  rj  rk  rk   r	  rÎ   rN  rO  u     pháº£i ra Kim Trá»�ng, nháº­n: rm  rv   rl  rG  rn  u)   Leak ThÃºy Kiá»�u táº¡i Kim Trá»�ng shot ú: rM  u)   Leak VÆ°Æ¡ng Quan táº¡i Kim Trá»�ng shot Úep01_scene06_shot07Ús7_resrù   ru   )Úep01_scene06_shot08Úep01_scene06_shot09Úep01_scene06_shot11Úresu!    pháº£i ra ThÃºy Kiá»�u, nháº­n: rr  )r   r]  ru  ra  rb  rJ  rÈ   r€   r  rƒ   rÐ   r�   r…   r„   r‡   Ús7_datar€  rt  r„  s                      r   Ú-test_scene06_live_shots_resolve_authenticallyzQTestBilateralAndCharacterSafeguards.test_scene06_live_shots_resolve_authenticallyí  s¯  € ð
ð 
ð 
ˆ	ð ð 	wñ 	wˆCØ—M’M # rÑ*Ô*ˆEÝÔ-¨c°5Ñ9Ô9ˆHØ#'Ð[�8 4Ð'Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[�8 4Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�8Ñ[Ô[Ð[Õ[Ô[�8Ñ[Ô[Ð[Ð[Õ[Ô[ 4Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð)[°Ð)[Ð)[Ð)[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[ØÐf (¤.Ðf . .Ñ"2Ô"2Ðf�;Ð"2Ð2ÐfÐfÐfÕfÔfÐfÐfÐfÐf�;Ð"2ÐfÑfÔfÕfÔf�;ÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf (ÑfÔfÐfÕfÔf (ÑfÔfÐfÐfÕfÔf .ÑfÔfÕfÔfÐ"2ÑfÔfÐfÐfÑfÐfÕfÔf°sÐ4fÐ4fÐ\dÐ4fÐ4fÑfÔfÐfÑfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfÐfÐfØÐu h¤nÐu n nÑ&6Ô&6Ðu�;Ð&6Ð6ÐuÐuÐuÕuÔuÐuÐuÐuÐu�;Ð&6ÐuÑuÔuÕuÔu�;ÑuÔuÐuÕuÔuÑuÔuÐuÐuÕuÔu hÑuÔuÐuÕuÔu hÑuÔuÐuÐuÕuÔu nÑuÔuÕuÔuÐ&6ÑuÔuÐuÐuÑuÐuÕuÔuÐ8uÐdgÐ8uÐ8uÐksÐ8uÐ8uÑuÔuÐuÑuÐuÐuÐuÑuÐuÕuÕuÔuÐuÑuÔuÑuÔuÐuÐuÐuÐuÐuÐuÐuÐuÐuØÐv x¤~Ðv ~ ~Ñ'7Ô'7Ðv�<Ð'7Ð7ÐvÐvÐvÕvÔvÐvÐvÐvÐv�<Ð'7ÐvÑvÔvÕvÔv�<ÑvÔvÐvÕvÔvÑvÔvÐvÐvÕvÔv xÑvÔvÐvÕvÔv xÑvÔvÐvÐvÕvÔv ~ÑvÔvÕvÔvÐ'7ÑvÔvÐvÐvÑvÐvÕvÔvÐ9vÐehÐ9vÐ9vÐltÐ9vÐ9vÑvÔvÐvÑvÐvÐvÐvÑvÐvÕvÕvÔvÐvÑvÔvÑvÔvÐvÐvÐvÐvÐvÐvÐvÐvÐvÑvð —-’-Ð 5°rÑ:Ô:ˆÝÔ'Ð(=¸wÑGÔGˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ-˜vœ|Ð-˜|˜|™~œ~Ð-ˆ|˜~Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ|˜~Ð-Ñ-Ô-Õ-Ô-ˆ|Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-˜vÑ-Ô-Ð-Õ-Ô-˜vÑ-Ô-Ð-Ð-Õ-Ô-˜|Ñ-Ô-Õ-Ô-˜~Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð [ÐZÐZˆ
Øð 	^ñ 	^ˆCØ—M’M # rÑ*Ô*ˆEÝÔ(¨¨eÑ4Ô4ˆCØ"Ð"�3˜d�?Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"�3˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�3Ñ"Ô"Ð"Õ"Ô"�3Ñ"Ô"Ð"Ð"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ØÐ] #¤)Ð] ) )¡+¤+Ð]�; +Ð-Ð]Ð]Ð]Õ]Ô]Ð]Ð]Ð]Ð]�; +Ð]Ñ]Ô]Õ]Ô]�;Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô] #Ñ]Ô]Ð]Õ]Ô] #Ñ]Ô]Ð]Ð]Õ]Ô] )Ñ]Ô]Õ]Ô] +Ñ]Ô]Ð]Ð]Ñ]Ð]Õ]Ô]°#Ð/]Ð/]ÐX[Ð/]Ð/]Ñ]Ô]Ð]Ñ]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ñ]ð		^ð 	^r   c                 óÄ  — dD �]Û}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}	|j        }
 |
¦   «         }|	|v }|s×t          j        d|fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j	        |› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}x}
}d}	|j        }
 |
¦   «         }|	|v}|sØt          j        d|fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j	        d|› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}x}
}�ŒÝdS )uk   Scene 05: CÃ¡c cÃº mÃ¡y VÆ°Æ¡ng Quan thuáº­t chuyá»‡n vÃ  can ngÄƒn khÃ´ng bá»‹ biáº¿n thÃ nh ThÃºy Kiá»�u.)Úep01_scene05_shot13Úep01_scene05_shot16Úep01_scene05_shot24NrÂ   rö   rJ  rø   ri  rj  rk  rk   rM  rÎ   rN  rO  u!    pháº£i ra VÆ°Æ¡ng Quan, nháº­n: rm  rv   rl  rG  rn  u*   Leak ThÃºy Kiá»�u táº¡i VÆ°Æ¡ng Quan shot r~  rr  r`  s                 r   Ú8test_scene05_live_vuong_quan_shots_resolve_authenticallyz\TestBilateralAndCharacterSafeguards.test_scene05_live_vuong_quan_shots_resolve_authentically	  sl  € àXð 	wñ 	wˆCØ—M’M # rÑ*Ô*ˆEÝÔ-¨c°5Ñ9Ô9ˆHØ#'Ð[�8 4Ð'Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[�8 4Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�8Ñ[Ô[Ð[Õ[Ô[�8Ñ[Ô[Ð[Ð[Õ[Ô[ 4Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð)[°Ð)[Ð)[Ð)[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[ØÐh 8¤>Ðh > >Ñ#3Ô#3Ðh�<Ð#3Ð3ÐhÐhÐhÕhÔhÐhÐhÐhÐh�<Ð#3ÐhÑhÔhÕhÔh�<ÑhÔhÐhÕhÔhÑhÔhÐhÐhÕhÔh 8ÑhÔhÐhÕhÔh 8ÑhÔhÐhÐhÕhÔh >ÑhÔhÕhÔhÐ#3ÑhÔhÐhÐhÑhÐhÕhÔh¸Ð5hÐ5hÐ^fÐ5hÐ5hÑhÔhÐhÑhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhÐhØÐv h¤nÐv n nÑ&6Ô&6Ðv�;Ð&6Ð6ÐvÐvÐvÕvÔvÐvÐvÐvÐv�;Ð&6ÐvÑvÔvÕvÔv�;ÑvÔvÐvÕvÔvÑvÔvÐvÐvÕvÔv hÑvÔvÐvÕvÔv hÑvÔvÐvÐvÕvÔv nÑvÔvÕvÔvÐ&6ÑvÔvÐvÐvÑvÐvÕvÔvÐ8vÐehÐ8vÐ8vÐltÐ8vÐ8vÑvÔvÐvÑvÐvÐvÐvÑvÐvÕvÕvÔvÐvÑvÔvÑvÔvÐvÐvÐvÐvÐvÐvÐvÐvÐvÑvð	wð 	wr   c                 ó†,  — dddœ}t          j        d|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dddœ}t          j        d|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dddœ}t          j        d|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dddœ}t          j        d|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d }|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dd!d"d#œ}t          j        d$|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        d%t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d&}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d%t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d%t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dd!d"d'œ}t          j        d$|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        d(t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d&}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d(t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d(t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dd)d*d#œ}t          j        d+|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dd)d*d'œ}t          j        d+|¦  «        }d}||u}|s—t          j        d|fd||f¦  «        d-t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d-t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d-t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	t          j        d.i ¦  «        }d}||u}|s—t          j        d|fd||f¦  «        d/t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d0}|j
        } |¦   «         }	||	v }|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d/t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	d1}|j
        } |¦   «         }	||	v}|s½t          j        d|fd||	f¦  «        t          j        |¦  «        d/t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}	dS )2u„   Kiá»ƒm tra pháº£n á»©ng Ä‘á»‘i khÃ¡ng (Adversarial Robustness): GÃ¡n nháº§m asset Ä‘á»‘i nghá»‹ch pháº£i bá»‹ ghi Ä‘Ã¨ tá»± Ä‘á»™ng.zH04_Assets/characters/01_Main_Protagonists/thuy_kieu_maiden_16yo_720p.pngu&   Kim Trá»�ng tÆ°Æ¡ng tÆ° dÆ°á»›i trÄƒng)Úcharacter_asset_refÚscene_titler4  NrÂ   rö   Úres_ktrø   rù   rk   r	  rÎ   rN  rO  ru   rv   rl  rG  rn  zA04_Assets/characters/01_Main_Protagonists/kim_trong_18yo_720p.pngu8   Kiá»�u gáº£y Ä‘Ã n tá»³ bÃ  rÃ©o ráº¯t khÃºc tÆ°Æ¡ng tÆ°rg  Úres_tku"   Trung cáº­n VÆ°Æ¡ng Quan can ngÄƒnrŠ  Úres_vqrM  u$   VÆ°Æ¡ng Ã”ng Ä‘Ä©nh Ä‘áº¡c gia phongr·   Úres_vor¸   u$   ThÃºy VÃ¢n trang trá»�ng Ä‘oan trangu!   ThÃºy VÃ¢n má»‰m cÆ°á»�i ung dung)r�  rŽ  Úmotion_promptrD  Úres_tv_assetÚthuy_van)Úreference_start_framerŽ  r“  Ú
res_tv_refu'   Kim Trá»�ng viáº¿t lá»�i thá»� nguyá»�nu)   Kim Trá»�ng cáº§m bÃºt lÃ´ng viáº¿t chá»¯Úep01_scene10_shot07Úres_kt_compound_assetÚres_kt_compound_refÚep01_scene06_shot05Úres_tdÚ	tieu_dongÚ01_main_protagonists)r1  rP  rw   rx   ry   rz   r{   r|   r}   r~   rQ  )r   Úadv_ktr�  rÈ   r€   r  rƒ   rÐ   r�   r…   r„   r‡   Úadv_tkr�  Úadv_vqr‘  Úadv_vor’  Úadv_tv_assetr”  Ú
adv_tv_refr—  Úadv_kt_compound_assetr™  Úadv_kt_compound_refrš  rœ  s                              r   Ú.test_adversarial_bilateral_safeguards_overridezRTestBilateralAndCharacterSafeguards.test_adversarial_bilateral_safeguards_override  sh  € ð $nØCð
ð 
ˆõ Ô'Ð(=¸vÑFÔFˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ,˜fœlÐ,˜l˜l™nœnÐ,ˆ{˜nÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ{˜nÐ,Ñ,Ô,Õ,Ô,ˆ{Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜fÑ,Ô,Ð,Õ,Ô,˜fÑ,Ô,Ð,Ð,Õ,Ô,˜lÑ,Ô,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÐ0 &¤,Ð0 , ,¡.¤.Ð0ˆ{ .Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{ .Ð0Ñ0Ô0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 &Ñ0Ô0Ð0Õ0Ô0 &Ñ0Ô0Ð0Ð0Õ0Ô0 ,Ñ0Ô0Õ0Ô0 .Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð $gØUð
ð 
ˆõ Ô'Ð(=¸vÑFÔFˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ,˜fœlÐ,˜l˜l™nœnÐ,ˆ{˜nÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ{˜nÐ,Ñ,Ô,Õ,Ô,ˆ{Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜fÑ,Ô,Ð,Õ,Ô,˜fÑ,Ô,Ð,Ð,Õ,Ô,˜lÑ,Ô,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÐ0 &¤,Ð0 , ,¡.¤.Ð0ˆ{ .Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{ .Ð0Ñ0Ô0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 &Ñ0Ô0Ð0Õ0Ô0 &Ñ0Ô0Ð0Ð0Õ0Ô0 ,Ñ0Ô0Õ0Ô0 .Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð $nØ?ð
ð 
ˆõ Ô'Ð(=¸vÑFÔFˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ-˜vœ|Ð-˜|˜|™~œ~Ð-ˆ|˜~Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ|˜~Ð-Ñ-Ô-Õ-Ô-ˆ|Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-˜vÑ-Ô-Ð-Õ-Ô-˜vÑ-Ô-Ð-Ð-Õ-Ô-˜|Ñ-Ô-Õ-Ô-˜~Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ0 &¤,Ð0 , ,¡.¤.Ð0ˆ{ .Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{ .Ð0Ñ0Ô0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 &Ñ0Ô0Ð0Õ0Ô0 &Ñ0Ô0Ð0Ð0Õ0Ô0 ,Ñ0Ô0Õ0Ô0 .Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð $nØAð
ð 
ˆõ Ô'Ð(=¸vÑFÔFˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ,˜fœlÐ,˜l˜l™nœnÐ,ˆ{˜nÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ{˜nÐ,Ñ,Ô,Õ,Ô,ˆ{Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜fÑ,Ô,Ð,Õ,Ô,˜fÑ,Ô,Ð,Ð,Õ,Ô,˜lÑ,Ô,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÐ0 &¤,Ð0 , ,¡.¤.Ð0ˆ{ .Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{ .Ð0Ñ0Ô0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 &Ñ0Ô0Ð0Õ0Ô0 &Ñ0Ô0Ð0Ð0Õ0Ô0 ,Ñ0Ô0Õ0Ô0 .Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð $nØAØ@ð
ð 
ˆõ
 Ô-Ð.CÀ\ÑRÔRˆØ#'Ð'ˆ| 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ| 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ|Ñ'Ô'Ð'Õ'Ô'ˆ|Ñ'Ô'Ð'Ð'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'ØÐ1˜\Ô/Ð1Ð/Ð/Ñ1Ô1Ð1ˆzÐ1Ð1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1ˆzÐ1Ð1Ñ1Ô1Õ1Ô1ˆzÑ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1˜\Ñ1Ô1Ð1Õ1Ô1˜\Ñ1Ô1Ð1Ð1Õ1Ô1Ð/Ñ1Ô1Õ1Ô1Ð1Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÐ6 ,Ô"4Ð6Ð"4Ð"4Ñ"6Ô"6Ð6ˆ{Ð"6Ð6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ˆ{Ð"6Ð6Ñ6Ô6Õ6Ô6ˆ{Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6 ,Ñ6Ô6Ð6Õ6Ô6 ,Ñ6Ô6Ð6Ð6Õ6Ô6Ð"4Ñ6Ô6Õ6Ô6Ð"6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ð &pØAØ@ð
ð 
ˆ
õ
 Ô+Ð,AÀ:ÑNÔNˆ
Ø!%Ð%ˆz Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆz Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ØÐ/˜ZÔ-Ð/Ð-Ð-Ñ/Ô/Ð/ˆzÐ/Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆzÐ/Ð/Ñ/Ô/Õ/Ô/ˆzÑ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/˜ZÑ/Ô/Ð/Õ/Ô/˜ZÑ/Ô/Ð/Ð/Õ/Ô/Ð-Ñ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ4 *Ô"2Ð4Ð"2Ð"2Ñ"4Ô"4Ð4ˆ{Ð"4Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆ{Ð"4Ð4Ñ4Ô4Õ4Ô4ˆ{Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4 *Ñ4Ô4Ð4Õ4Ô4 *Ñ4Ô4Ð4Ð4Õ4Ô4Ð"2Ñ4Ô4Õ4Ô4Ð"4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð
 $nØDØHð!
ð !
Ðõ
 !#Ô 6Ð7LÐNcÑ dÔ dÐØ,0Ð0Ð$¨DÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð$¨DÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0Ð$Ñ0Ô0Ð0Õ0Ô0Ð$Ñ0Ô0Ð0Ð0Õ0Ô0¨DÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0ØÐ;Ð3Ô9Ð;Ð9Ð9Ñ;Ô;Ð;ˆ{Ð;Ð;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;ˆ{Ð;Ð;Ñ;Ô;Õ;Ô;ˆ{Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;Ð3Ñ;Ô;Ð;Õ;Ô;Ð3Ñ;Ô;Ð;Ð;Õ;Ô;Ð9Ñ;Ô;Õ;Ô;Ð;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÐ?Ð"7Ô"=Ð?Ð"=Ð"=Ñ"?Ô"?Ð?ˆ{Ð"?Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?ˆ{Ð"?Ð?Ñ?Ô?Õ?Ô?ˆ{Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?Ð"7Ñ?Ô?Ð?Õ?Ô?Ð"7Ñ?Ô?Ð?Ð?Õ?Ô?Ð"=Ñ?Ô?Õ?Ô?Ð"?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð &pØDØHð
ð 
Ðõ
 !Ô4Ð5JÐL_Ñ`Ô`ÐØ*.Ð.Ð"¨$Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð"¨$Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.Ð"Ñ.Ô.Ð.Õ.Ô.Ð"Ñ.Ô.Ð.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.ØÐ9Ð1Ô7Ð9Ð7Ð7Ñ9Ô9Ð9ˆ{Ð9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ˆ{Ð9Ð9Ñ9Ô9Õ9Ô9ˆ{Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9Ð1Ñ9Ô9Ð9Õ9Ô9Ð1Ñ9Ô9Ð9Ð9Õ9Ô9Ð7Ñ9Ô9Õ9Ô9Ð9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐ=Ð"5Ô";Ð=Ð";Ð";Ñ"=Ô"=Ð=ˆ{Ð"=Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=ˆ{Ð"=Ð=Ñ=Ô=Õ=Ô=ˆ{Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=Ð"5Ñ=Ô=Ð=Õ=Ô=Ð"5Ñ=Ô=Ð=Ð=Õ=Ô=Ð";Ñ=Ô=Õ=Ô=Ð"=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=õ Ô'Ð(=¸rÑBÔBˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ,˜fœlÐ,˜l˜l™nœnÐ,ˆ{˜nÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ{˜nÐ,Ñ,Ô,Õ,Ô,ˆ{Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜fÑ,Ô,Ð,Õ,Ô,˜fÑ,Ô,Ð,Ð,Õ,Ô,˜lÑ,Ô,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø%Ð;¨V¬\Ð;¨\¨\©^¬^Ð;Ð%¨^Ð;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð%¨^Ð;Ñ;Ô;Õ;Ô;Ð%Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;¨VÑ;Ô;Ð;Õ;Ô;¨VÑ;Ô;Ð;Ð;Õ;Ô;¨\Ñ;Ô;Õ;Ô;¨^Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r   N)r­   r®   r¯   Ú__doc__r˜   ÚfixtureÚclassmethodr]  rc  rv  r†  r‹  r§  r°   r   r   rX  rX  ¾  s¦   € € € € € ØeÐeà€V„^˜'Ð"Ñ"Ô"Øð"ð "ñ „[ñ #Ô"ð"ð0ð 0ð 0ðAð Að Að:^ð ^ð ^ð8wð wð wð\<ð \<ð \<ð \<ð \<r   rX  Ú__main__z-v)r   r   r   r   r   r   r   )1r¨  Úbuiltinsry   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterw   ÚosÚsysÚjsonÚtempfiler   Úpathlibr   r˜   Únumpyr=   r9   Úpydanticr   Ú__file__ÚresolveÚparentrý   ÚpathÚinsertr   Úantigravity_critic_gater   r   r   r	   r
   Úproduction_orchestratorr1  r©  r   rA   ÚtuplerS   rU   r²   r  r-  rX  r­   Úpytest_argsÚexitÚmainr°   r   r   ú<module>rÂ     s  ððð ð< € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5€Ø „‡‚��3�3�|Ð&>Ñ>Ñ?Ô?Ñ @Ô @Ð @ðð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $ð €„�iÐ Ñ Ô ð5ð 5ñ !Ô ð5ð ØØØØØ'Øð(ð (Øð(àð(ð 
ð(ð ð	(ð
 ð(ð ð(ð ð(ð ð(ð 
ð(ð (ð (ð (ð^RDð RDð RDð RDð RDñ RDô RDð RDðrv9ð v9ð v9ð v9ð v9ñ v9ô v9ð v9ðz@9ð @9ð @9ð @9ð @9ñ @9ô @9ð @9ðN'1ð '1ð '1ð '1ð '1ñ '1ô '1ð '1ð\p<ð p<ð p<ð p<ð p<ñ p<ô p<ð p<ðf ˆzÒÐØ˜TÐ"€KØ€C„Hˆ[ˆVŒ[˜Ñ%Ô%Ñ&Ô&Ð&Ð&Ð&ð Ðr   