§
    !¹Àjw+  ã                  ó  — d Z ddlm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mZmZmZmZ ddlZddlmZmZmZmZ ddlmZmZmZ  G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )uK  
Tier 1: Feature Coverage â€” Protobuf Schemas, Opcode Framing & 30Hz Reconciliation.
Covers Features 8, 9, 10, 11 from PROJECT.md Feature Inventory:
- Feature 8: Protobufjs ES Module Compilation & Schemas
- Feature 9: 2-Byte Opcode Network Framing
- Feature 10: WebSocket Bridge Port 8080
- Feature 11: 30Hz Server Reconciliation
é    )ÚannotationsN)ÚAnyÚDictÚListÚTuple)Úauth_pb2Ú
combat_pb2Úmap_zone_pb2Únetwork_pb2)ÚOPCODESÚdecode_opcode_frameÚencode_opcode_framec                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )ÚTestTier1ProtobufSchemasz)Feature 8: Protobuf Schemas & Wire Codec.ÚreturnÚNonec           
     ó‚
  — t          j        dddd¬¦  «        }d|j        _        d|j        _        d|j        _        d|j        _        d	|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        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}t          j        ¦   «         }|                     |¦  «         |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}
}t*          j        }	|j        }d}d} |	|||¬¦  «        }|�sddt          j        ¦   «         v st          j        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t!          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}}|j        }	|	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        |
¦  «        t          j        |¦  «        dœz  }d d!|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}	x}
x}}d S )"Née   gà-� æ?é*   )Ú	entity_idÚdir_xÚdir_yÚinput_sequenceg      4@ç      ð?g      %@gš™™™™™é?é   r   )ú>)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚlenÚbinary_data©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8©ú==©z1%(py2)s
{%(py2)s = %(py0)s.entity_id
} == %(py5)sÚdecoded©r    Úpy2Úpy5úassert %(py7)sÚpy7)z6%(py2)s
{%(py2)s = %(py0)s.input_sequence
} == %(py5)sç-Cëâ6?©Úabs_tolz€assert %(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py5)s
{%(py5)s = %(py3)s.dir_x
}, %(py7)s, abs_tol=%(py9)s)
}Úmath©r    r+   r"   r,   r.   Úpy9Úpy11)zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.biometrics
}.device_type
} == %(py7)s)r    r+   Úpy4r.   úassert %(py9)sr4   )r   ÚPlayerMoveInputÚ
biometricsÚmajor_radiusÚforceÚmicro_tremor_hzÚtrajectory_curvatureÚdevice_typeÚSerializeToStringr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚParseFromStringr   r   r2   Úiscloser   )ÚselfÚmsgr   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9r)   Ú@py_assert1Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert6Ú@py_assert8Ú@py_assert10Ú@py_format12Ú@py_format10s                     úHC:\Projects\FreeExile\tests\e2e_cocos\test_tier1_network_and_protocol.pyÚ*test_t1_f8_player_move_input_serializationzCTestTier1ProtobufSchemas.test_t1_f8_player_move_input_serialization#   s­  € ÝÔ)ØØØØð	
ñ 
ô 
ˆð '+ˆŒÔ#Ø"ˆŒÔØ)-ˆŒÔ&Ø.1ˆŒÔ+Ø%&ˆŒÔ"à×+Ò+Ñ-Ô-ˆÝ�;ÑÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�sÑ#Ô#Ð#Õ#Ô#�sÑ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�;Ñ#Ô#Ð#Õ#Ô#�;Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#õ Ô-Ñ/Ô/ˆØ×Ò Ñ,Ô,Ð,ØÔ Ð' CÐ'Ð  CÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð  CÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'Ð Ñ'Ô'Õ'Ô' CÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ÝŒ|Ð@˜GœMÐ@¨6Ð@¸4Ð@ˆ|ˆ|˜M¨6¸4Ð@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�tÑ@Ô@Ð@Õ@Ô@�tÑ@Ô@Ð@Ð@Õ@Ô@ˆ|Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@˜GÑ@Ô@Ð@Õ@Ô@˜GÑ@Ô@Ð@Ð@Õ@Ô@˜MÑ@Ô@Õ@Ô@¨6Ñ@Ô@Õ@Ô@¸4Ñ@Ô@Õ@Ô@Ð@Ñ@Ô@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ!Ð2Ð!Ô-Ð2°Ð2Ð-°Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð-°Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆwÑ2Ô2Ð2Õ2Ô2ˆwÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2Ð-Ñ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ó    c                ó¶  — t          j        ddddddddd¬	¦	  «	        }|                     ¦   «         }t          j        ¦   «         }|                     |¦  «         |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}}t          j        }|j        }d}	d}
 |||	|
¬¦  «        }|�sddt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |	¦  «        t          j
        |
¦  «        t          j
        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}	x}
}d S )Nr   g      )@gš™™™™AÀg      @ç        éd   r   r   )	r   Úpos_xÚpos_yÚ
velocity_xÚ
velocity_yÚ
current_hpÚmax_hpÚanimation_stateÚlast_processed_input_seqr&   )z@%(py2)s
{%(py2)s = %(py0)s.last_processed_input_seq
} == %(py5)sr)   r*   r-   r.   r/   r0   z€assert %(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py5)s
{%(py5)s = %(py3)s.pos_x
}, %(py7)s, abs_tol=%(py9)s)
}r2   r3   )r   ÚEntitySnapshotr?   rH   rg   r@   rA   rB   rC   rD   rE   rF   rG   r2   rI   r`   )rJ   ÚsnapÚbin_snapr)   rQ   rN   rR   rS   rT   rU   rV   rW   rX   s                rZ   Ú0test_t1_f8_entity_snapshot_reconciliation_fieldszITestTier1ProtobufSchemas.test_t1_f8_entity_snapshot_reconciliation_fields;   sˆ  € ÝÔ)ØØØØØØØØØ%'ð

ñ 

ô 

ˆð ×)Ò)Ñ+Ô+ˆÝÔ,Ñ.Ô.ˆØ×Ò Ñ)Ô)Ð)ØÔ/Ð5°2Ð5Ð/°2Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð/°2Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆwÑ5Ô5Ð5Õ5Ô5ˆwÑ5Ô5Ð5Ð5Õ5Ô5Ð/Ñ5Ô5Õ5Ô5°2Ñ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ÝŒ|Ð>˜GœMÐ>¨4Ð>¸Ð>ˆ|ˆ|˜M¨4¸Ð>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�tÑ>Ô>Ð>Õ>Ô>�tÑ>Ô>Ð>Ð>Õ>Ô>ˆ|Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>˜GÑ>Ô>Ð>Õ>Ô>˜GÑ>Ô>Ð>Ð>Õ>Ô>˜MÑ>Ô>Õ>Ô>¨4Ñ>Ô>Õ>Ô>¸Ñ>Ô>Õ>Ô>Ð>Ñ>Ô>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r\   c                óú  — t          j        d¬¦  «        }|j                             ddd¬¦  «        }|j                             ddd¬¦  «        }|                     ¦   «         }t          j        ¦   «         }|                     |¦  «         |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        }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        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Ni°  ©Úserver_tickr   r^   )r   r`   ra   é   ç      @r&   ©z3%(py2)s
{%(py2)s = %(py0)s.server_tick
} == %(py5)sr)   r*   r-   r.   )zN%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entities
})
} == %(py8)sr   ©r    r!   r"   r,   r%   úassert %(py10)sÚpy10)r   ÚWorldStateSyncÚentitiesÚaddr?   rH   rn   r@   rA   rB   rC   rD   rE   rF   rG   r   )rJ   Ú
world_syncÚe1Úe2Úbin_syncr)   rQ   rN   rR   rS   rT   rL   Ú@py_assert7rU   rP   Ú@py_format11s                   rZ   Ú*test_t1_f8_world_state_sync_30hz_broadcastzCTestTier1ProtobufSchemas.test_t1_f8_world_state_sync_30hz_broadcastM   s§  € Ý Ô/¸DÐAÑAÔAˆ
ØÔ ×$Ò$¨q¸À3Ð$ÑGÔGˆØÔ ×$Ò$¨q¸À3Ð$ÑGÔGˆØ×/Ò/Ñ1Ô1ˆÝÔ,Ñ.Ô.ˆØ×Ò Ñ)Ô)Ð)ØÔ"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Ð*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ#Ð)�sÐ#Ñ$Ô$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ñ)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�sÑ)Ô)Ð)Õ)Ô)�sÑ)Ô)Ð)Ð)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�7Ñ)Ô)Ð)Õ)Ô)�7Ñ)Ô)Ð)Ð)Õ)Ô)Ð#Ñ)Ô)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r\   c           	     ó¸  — t          j        ddddddd¬¦  «        }|                     ¦   «         }t          j        ¦   «         }|                     |¦  «         |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}}d S )Nr   ié  ç      .@ç      (@r   l   ‡O¥"IF)Úcaster_entity_idÚskill_idÚtarget_xÚtarget_yÚactive_weapon_setÚclient_timestamp_msÚauto_weapon_swappedr&   )z0%(py2)s
{%(py2)s = %(py0)s.skill_id
} == %(py5)sr)   r*   r-   r.   )z0%(py2)s
{%(py2)s = %(py0)s.target_x
} == %(py5)s)r	   ÚCastMartialSkillRequestr?   rH   rƒ   r@   rA   rB   rC   rD   rE   rF   rG   r„   )	rJ   Ú	skill_reqÚbin_datar)   rQ   rN   rR   rS   rT   s	            rZ   Ú%test_t1_f8_cast_martial_skill_requestz>TestTier1ProtobufSchemas.test_t1_f8_cast_martial_skill_requestW   s+  € ÝÔ6Ø ØØØØØ -Ø %ð
ñ 
ô 
ˆ	ð ×.Ò.Ñ0Ô0ˆÝÔ4Ñ6Ô6ˆØ×Ò Ñ)Ô)Ð)ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r\   c           	     ó2  — t          j        ddddddt           j        j        ¬¦  «        }|                     ¦   «         }t          j        ¦   «         }|                     |¦  «         |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        }t           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        t           ¦  «        rt          j        t           ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}	}
d S )Nr   éÊ   i^  i  TF)Úsource_entity_idÚtarget_entity_idÚ
raw_damageÚmitigated_damageÚis_criticalÚtarget_evadedÚelementr&   )z8%(py2)s
{%(py2)s = %(py0)s.mitigated_damage
} == %(py5)sr)   r*   r-   r.   ©Úis)z3%(py2)s
{%(py2)s = %(py0)s.is_critical
} is %(py5)s)z{%(py2)s
{%(py2)s = %(py0)s.element
} == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.FiveElementsType
}.ELEMENT_FIRE_HOA
}r	   )r    r+   r6   r#   r%   rs   rt   )r	   ÚCombatDamageEventÚFiveElementsTypeÚELEMENT_FIRE_HOAr?   rH   r’   r@   rA   rB   rC   rD   rE   rF   rG   r“   r•   )rJ   Ú	dmg_eventr‹   r)   rQ   rN   rR   rS   rT   rM   r|   rP   r}   s                rZ   Ú(test_t1_f8_combat_damage_event_broadcastzATestTier1ProtobufSchemas.test_t1_f8_combat_damage_event_broadcastg   sl  € ÝÔ0Ø Ø ØØ ØØÝÔ/Ô@ð
ñ 
ô 
ˆ	ð ×.Ò.Ñ0Ô0ˆÝÔ.Ñ0Ô0ˆØ×Ò Ñ)Ô)Ð)ØÔ'Ð.¨3Ð.Ð'¨3Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð'¨3Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆwÑ.Ô.Ð.Õ.Ô.ˆwÑ.Ô.Ð.Ð.Õ.Ô.Ð'Ñ.Ô.Õ.Ô.¨3Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ"Ð* dÐ*Ð" dÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Ð*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØŒÐ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ˆwÑNÔNÐNÕNÔNˆwÑ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ÐNr\   c                óê  — t          j        ddt           j        j        ddd¬¦  «        }|j                             dddd¬	¦  «        }|                     ¦   «         }t          j        ¦   «         }|                     |¦  «         |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        }
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        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}d S )NÚzone_tang_kiem_nhaiu   Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ngr   g      ™@)Úzone_idÚnameÚ	zone_typeÚ	min_levelÚbounds_widthÚbounds_heightÚwp_startr^   T)Úwaypoint_idÚxÚyÚis_unlockedr&   )z4%(py2)s
{%(py2)s = %(py0)s.bounds_width
} == %(py5)sr)   r*   r-   r.   )zO%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.waypoints
})
} == %(py8)sr   rr   rs   rt   )r
   ÚZoneInfoPayloadÚZoneTypeÚZONE_TYPE_OPEN_WORLDÚ	waypointsrw   r?   rH   r£   r@   rA   rB   rC   rD   rE   rF   rG   r   )rJ   ÚzoneÚwpr‹   r)   rQ   rN   rR   rS   rT   rL   r|   rU   rP   r}   s                  rZ   Ú#test_t1_f8_zone_info_payload_schemaz<TestTier1ProtobufSchemas.test_t1_f8_zone_info_payload_schemax   sª  € ÝÔ+Ø)Ø)Ý"Ô+Ô@ØØØ ð
ñ 
ô 
ˆð Œ^×Ò¨J¸#ÀÐRVÐÑWÔWˆØ×)Ò)Ñ+Ô+ˆÝÔ.Ñ0Ô0ˆØ×Ò Ñ)Ô)Ð)ØÔ#Ð- vÐ-Ð# vÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Ð-Õ-Ô-Ð#Ñ-Ô-Õ-Ô- vÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ$Ð*�sÐ$Ñ%Ô%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ñ*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�sÑ*Ô*Ð*Õ*Ô*�sÑ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�7Ñ*Ô*Ð*Õ*Ô*�7Ñ*Ô*Ð*Ð*Õ*Ô*Ð$Ñ*Ô*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r\   N©r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r[   rk   r~   rŒ   rœ   r°   © r\   rZ   r   r       s–   € € € € € Ø3Ð3ð3ð 3ð 3ð 3ð0?ð ?ð ?ð ?ð$*ð *ð *ð *ð(ð (ð (ð (ð Oð Oð Oð Oð"+ð +ð +ð +ð +ð +r\   r   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )ÚTestTier1OpcodeFramingz)Feature 9: 2-Byte Opcode Network Framing.r   r   c                óÒ  — t          j        ddd¬¦  «        }|                     ¦   «         }t          t          d         |¦  «        }t          |¦  «        \  }}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}}t          j        ¦   «         }
|
                     |¦  «         |
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 )Nr   r   r^   )r   r   r   ÚPLAYER_MOVEé   r&   ©z%(py0)s == %(py3)sÚopcode©r    r"   úassert %(py5)sr,   r(   Údecoded_mover*   r-   r.   )r   r8   r?   r   r   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   )rJ   Úmove_msgÚbin_payloadÚframer½   ÚpayloadrL   rQ   Ú@py_format4rS   rÀ   rN   rR   rT   s                 rZ   Ú/test_t1_f9_encode_and_decode_player_move_opcodezFTestTier1OpcodeFraming.test_t1_f9_encode_and_decode_player_move_opcodeŒ   s  € ÝÔ.¸ÀCÈsÐSÑSÔSˆØ×0Ò0Ñ2Ô2ˆÝ#¥G¨MÔ$:¸KÑHÔHˆÝ-¨eÑ4Ô4‰ˆ�ØÐˆv˜ÒÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝ"Ô2Ñ4Ô4ˆØ×$Ò$ WÑ-Ô-Ð-ØÔ%Ð,¨Ð,Ð%¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð%¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ|Ñ,Ô,Ð,Õ,Ô,ˆ|Ñ,Ô,Ð,Ð,Õ,Ô,Ð%Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r\   c                óÊ  — t          j        d¬¦  «        }t          t          d         |                     ¦   «         ¦  «        }t          |¦  «        \  }}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}}t          j        ¦   «         }	|	                     |¦  «         |	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 )Niç  rm   Ú
WORLD_SYNCé   r&   r¼   r½   r¾   r¿   r,   rq   Údecoded_syncr*   r-   r.   )r   ru   r   r   r?   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   rn   )rJ   Úsync_msgrÃ   r½   rÄ   rL   rQ   rÅ   rS   rÊ   rN   rR   rT   s                rZ   Ú#test_t1_f9_encode_world_sync_opcodez:TestTier1OpcodeFraming.test_t1_f9_encode_world_sync_opcode–   s  € ÝÔ-¸#Ð>Ñ>Ô>ˆÝ#¥G¨LÔ$9¸8×;UÒ;UÑ;WÔ;WÑXÔXˆÝ-¨eÑ4Ô4‰ˆ�ØÐˆv˜ÒÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝ"Ô1Ñ3Ô3ˆØ×$Ò$ WÑ-Ô-Ð-ØÔ'Ð.¨3Ð.Ð'¨3Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð'¨3Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ|Ñ.Ô.Ð.Õ.Ô.ˆ|Ñ.Ô.Ð.Ð.Õ.Ô.Ð'Ñ.Ô.Õ.Ô.¨3Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r\   c                óp  — t          d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 )
Nr»   r\   s    r&   r¼   rÃ   r¾   r¿   r,   )	r   r@   rA   rB   rC   rD   rE   rF   rG   )rJ   rÃ   rL   rQ   rÅ   rS   s         rZ   Ú#test_t1_f9_big_endian_byte_orderingz:TestTier1OpcodeFraming.test_t1_f9_big_endian_byte_orderingŸ   sÙ   € å# F¨CÑ0Ô0ˆØ#Ð#ˆu˜Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆu˜Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆuÑ#Ô#Ð#Õ#Ô#ˆuÑ#Ô#Ð#Ð#Õ#Ô#˜Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r\   c                óô  — t          t          d         d¦  «        }t          |¦  «        \  }}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}||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 )NÚ
CAST_SKILLs   payloadé    r&   r¼   r½   r¾   r¿   r,   rÄ   ©r   r   r   r@   rA   rB   rC   rD   rE   rF   rG   ©rJ   rÃ   r½   rÄ   rL   rQ   rÅ   rS   s           rZ   Útest_t1_f9_combat_skill_opcodez5TestTier1OpcodeFraming.test_t1_f9_combat_skill_opcode¤   s±  € Ý#¥G¨LÔ$9¸:ÑFÔFˆÝ-¨eÑ4Ô4‰ˆ�ØÐˆv˜ÒÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ$Ð$ˆw˜*Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆw˜*Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆwÑ$Ô$Ð$Õ$Ô$ˆwÑ$Ô$Ð$Ð$Õ$Ô$˜*Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r\   c                óô  — t          t          d         d¦  «        }t          |¦  «        \  }}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}||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 )NÚCOMBAT_DAMAGEs   damage_dataé"   r&   r¼   r½   r¾   r¿   r,   rÄ   rÒ   rÓ   s           rZ   Útest_t1_f9_combat_damage_opcodez6TestTier1OpcodeFraming.test_t1_f9_combat_damage_opcodeª   s±  € Ý#¥G¨OÔ$<¸nÑMÔMˆÝ-¨eÑ4Ô4‰ˆ�ØÐˆv˜ÒÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ(Ð(ˆw˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆw˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r\   c                óô  — t          t          d         d¦  «        }t          |¦  «        \  }}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}||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 )NÚENTER_ZONE_REQs   zone_requesté0   r&   r¼   r½   r¾   r¿   r,   rÄ   rÒ   rÓ   s           rZ   Útest_t1_f9_zone_opcodez-TestTier1OpcodeFraming.test_t1_f9_zone_opcode°   s²  € Ý#¥GÐ,<Ô$=¸ÑOÔOˆÝ-¨eÑ4Ô4‰ˆ�ØÐˆv˜ÒÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ)Ð)ˆw˜/Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆw˜/Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Ð)Õ)Ô)˜/Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r\   Nr±   )
r²   r³   r´   rµ   rÆ   rÌ   rÎ   rÔ   rØ   rÜ   r¶   r\   rZ   r¸   r¸   ‰   s’   € € € € € Ø3Ð3ð-ð -ð -ð -ð/ð /ð /ð /ð$ð $ð $ð $ð
%ð %ð %ð %ð)ð )ð )ð )ð*ð *ð *ð *ð *ð *r\   r¸   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )Ú TestTier1WebSocketBridgePort8080z'Feature 10: WebSocket Bridge Port 8080.r   r   c                óš  — dt          j         ¦   «         dddœ}t          j        |¦  «        }t          j        |¦  «        }|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚwelcomeTz
2.0-Bridge)ÚtypeÚserver_timeÚauthoritativeÚversionrá   r&   ©z%(py1)s == %(py4)s©r!   r6   úassert %(py6)sr#   rã   r–   )z%(py1)s is %(py4)srä   )	ÚtimeÚjsonÚdumpsÚloadsr@   rA   rE   rF   rG   )	rJ   Úwelcome_jsonÚraw_msgÚparsedÚ@py_assert0rR   rL   Ú@py_format5rO   s	            rZ   Ú.test_t1_f10_handshake_welcome_packet_structurezOTestTier1WebSocketBridgePort8080.test_t1_f10_handshake_welcome_packet_structureº   s=  € àÝœ9™;œ;Ø!Ø#ð	
ð 
ˆõ ”*˜\Ñ*Ô*ˆÝ”˜GÑ$Ô$ˆØ�fŒ~Ð* Ð*ˆ~ Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ~ Ð*Ñ*Ô*Õ*Ô*ˆ~Ñ*Ô*Õ*Ô* Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�oÔ&Ð.¨$Ð.Ð&¨$Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð&¨$Ð.Ñ.Ô.Õ.Ô.Ð&Ñ.Ô.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø�iÔ Ð0 LÐ0Ð  LÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð  LÐ0Ñ0Ô0Õ0Ô0Ð Ñ0Ô0Õ0Ô0 LÑ0Ô0Ð0Ð0Ñ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\   c                ó¬  — d}d}||z
  }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
}||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 )Ng     @�@g     ´�@g      -@r&   r¼   Úrtt_msr¾   r¿   r,   r€   )ú<=)z%(py0)s <= %(py3)s©r@   rA   rB   rC   rD   rE   rF   rG   )rJ   Úsend_time_msÚreceive_time_msró   rL   rQ   rÅ   rS   s           rZ   Ú%test_t1_f10_ping_pong_rtt_calculationzFTestTier1WebSocketBridgePort8080.test_t1_f10_ping_pong_rtt_calculationÇ   sž  € ØˆØ ˆØ  <Ñ/ˆØÐˆv˜Š~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆv˜Š~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr\   c                ó   — d}d}|j         }d} ||¦  «        }|sžddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j         }d} ||¦  «        }| }|sžddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )	NÚDEV_SIMULATOR_TOKEN_LOCALÚRANDOM_UNAUTHORIZED_TOKENÚDEV_SIMULATOR_TOKENzLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}Úvalid_token)r    r+   r6   r#   zPassert not %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}Úinvalid_token)Ú
startswithrB   rC   r@   rD   rE   rF   rG   )	rJ   rý   rþ   rQ   rR   rM   rO   r|   rT   s	            rZ   Ú*test_t1_f10_simulator_token_authenticationzKTestTier1WebSocketBridgePort8080.test_t1_f10_simulator_token_authenticationÎ   sµ  € Ø1ˆØ3ˆØÔ%Ð<Ð&;Ð<Ð%Ð%Ð&;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ{Ñ<Ô<Ð<Õ<Ô<ˆ{Ñ<Ô<Ð<Ð<Õ<Ô<Ð%Ñ<Ô<Õ<Ô<Ð&;Ñ<Ô<Õ<Ô<Ð<Ñ<Ô<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø Ô+ÐBÐ,AÐBÐ+Ð+Ð,AÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÕBÔBÑBÔBÐBÐBÕBÔB�=ÑBÔBÐBÕBÔB�=ÑBÔBÐBÐBÕBÔBÐ+ÑBÔBÕBÔBÐ,AÑBÔBÕBÔBÐBÑBÔBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBr\   c                óÎ  — d}d}|d         }d}t          |¦  «        }||k    }|sÇt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|d         }d}t          |¦  «        }||k    }|sÇt          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Ns    {"type":"ping","client_ts":1234}s    er   Ú{r&   )z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}Úord)r!   r"   r,   r.   r7   r4   )ú!=)z0%(py1)s != %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
})	r  r@   rA   rE   rB   rC   rD   rF   rG   )	rJ   Ú
json_frameÚbinary_framerï   rN   rU   rL   rT   rY   s	            rZ   Ú'test_t1_f10_dual_mode_routing_detectionzHTestTier1WebSocketBridgePort8080.test_t1_f10_dual_mode_routing_detectionÔ   s  € Ø8ˆ
Ø*ˆà˜!Œ}Ð( CÐ(¥ C¡¤Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(¥Ñ(Ô(Ð(Õ(Ô(¥Ñ(Ô(Ð(Ð(Õ(Ô( CÑ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø˜AŒÐ* cÐ*¥# c¡(¤(Ð*ˆ (Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ (Ð*Ñ*Ô*Õ*Ô*ˆÑ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*¥#Ñ*Ô*Ð*Õ*Ô*¥#Ñ*Ô*Ð*Ð*Õ*Ô* cÑ*Ô*Õ*Ô* (Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r\   c                ó°  ‡	— dŠ	ˆ	fd„t          d¦  «        D ¦   «         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }|‰	k     }|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 S )Nç      $@c                ó<   •— g | ]}t          ‰d d|z  z  ¦  «        ‘ŒS )r   ç      ø?)Úmin)Ú.0ÚiÚ	max_delays     €rZ   ú
<listcomp>z_TestTier1WebSocketBridgePort8080.test_t1_f10_reconnection_backoff_algorithm.<locals>.<listcomp>Þ   s,   ø€ ÐEÐEÐE°q•#�i ¨¨q©Ñ!1Ñ2Ô2ÐEÐEÐEr\   é   r   r   r&   rå   ræ   rç   r#   r   r  ro   g      @é   ©ú<)z%(py1)s < %(py3)sr  )r!   r"   r¿   r,   )	Úranger@   rA   rE   rF   rG   rB   rC   rD   )
rJ   Údelaysrï   rR   rL   rð   rO   rÅ   rS   r  s
            @rZ   Ú*test_t1_f10_reconnection_backoff_algorithmzKTestTier1WebSocketBridgePort8080.test_t1_f10_reconnection_backoff_algorithmÛ   sâ  ø€ Øˆ	àEÐEÐEÐE½EÀ!¹H¼HÐEÑEÔEˆØ�aŒyÐ˜CÐˆy˜CÒÐÐÐÕÔÐÐÐÐˆy˜CÐÑÔÕÔˆyÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�aŒyÐ˜CÐˆy˜CÒÐÐÐÕÔÐÐÐÐˆy˜CÐÑÔÕÔˆyÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�aŒyÐ ˜DÐ ˆy˜DÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆy˜DÐ Ñ Ô Õ Ô ˆyÑ Ô Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø�aŒyÐ$ˆy˜9Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆy˜9Ð$Ñ$Ô$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜9Ñ$Ô$Ð$Õ$Ô$˜9Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r\   c                óˆ  — g d¢}|d         }|d         }|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 )N)ÚDISCONNECTEDÚ
CONNECTINGÚ	CONNECTEDÚAUTHENTICATEDr   ro   é   r  r&   r¼   Ú
curr_stater¾   r¿   r,   rõ   )rJ   Ústatesr  rL   rQ   rÅ   rS   s          rZ   Ú-test_t1_f10_clean_connection_lifecycle_stateszNTestTier1WebSocketBridgePort8080.test_t1_f10_clean_connection_lifecycle_statesä   sð   € ØMÐMÐMˆØ˜A”Yˆ
à˜A”Yˆ
à˜A”Yˆ
Ø,Ð,ˆz˜_Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆz˜_Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆzÑ,Ô,Ð,Õ,Ô,ˆzÑ,Ô,Ð,Ð,Õ,Ô,˜_Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r\   Nr±   )
r²   r³   r´   rµ   rñ   rø   r   r  r  r   r¶   r\   rZ   rÞ   rÞ   ·   s–   € € € € € Ø1Ð1ð1ð 1ð 1ð 1ðð ð ð ðCð Cð Cð Cð+ð +ð +ð +ð%ð %ð %ð %ð-ð -ð -ð -ð -ð -r\   rÞ   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )ÚTestTier1ServerReconciliationz'Feature 11: 30Hz Server Reconciliation.r   r   c                óŠ  ‡— ddddœddddœddddœddddœg}dŠˆfd„|D ¦   «         }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        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}	||	k    }|slt          j        d	|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}	d S )Nr   r   r^   )ÚseqÚdxÚdyro   r  r  c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS )r$  r¶   )r  ÚinpÚack_seqs     €rZ   r  zaTestTier1ServerReconciliation.test_t1_f11_input_sequence_tracking_and_discard.<locals>.<listcomp>ú   s'   ø€ ÐKÐKÐK˜S°c¸%´jÀ7Ò6JÐ6J�SÐ6JÐ6JÐ6Jr\   r&   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   Ú	remainingr   r$   r%   r   r$  rå   ræ   rç   r#   )	r   r@   rA   rB   rC   rD   rE   rF   rG   )rJ   Úpending_inputsr+  rL   rM   rN   rO   rP   rï   rR   rð   r)  s              @rZ   Ú/test_t1_f11_input_sequence_tracking_and_discardzMTestTier1ServerReconciliation.test_t1_f11_input_sequence_tracking_and_discardñ   s,  ø€ à˜S¨Ð,Ð,Ø˜S¨Ð,Ð,Ø˜S¨Ð,Ð,Ø˜S¨Ð,Ð,ð	
ˆð ˆàKÐKÐKÐK NÐKÑKÔKˆ	Ý�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Ð"Õ"Ô"�9Ñ"Ô"Ð"Ð"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø˜Œ|˜EÔ"Ð' aÐ'Ð" aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r\   c                óš  — d\  }}d\  }}t          j        ||z
  ||z
  ¦  «        }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 )
N)r	  rp   )g
×£p=
$@g…ëQ¸@gš™™™™™©?r  )z%(py0)s < %(py3)sÚ
error_distr¾   r¿   r,   )
r2   Úhypotr@   rA   rB   rC   rD   rE   rF   rG   )
rJ   Úpred_xÚpred_yÚauth_xÚauth_yr/  rL   rQ   rÅ   rS   s
             rZ   Ú.test_t1_f11_noise_tolerance_deadzone_below_5cmzLTestTier1ServerReconciliation.test_t1_f11_noise_tolerance_deadzone_below_5cmþ   sõ   € Ø"‰ˆ�Ø$‰ˆ�Ý”Z ¨¡°¸&±ÑAÔAˆ
à Ð ˆz˜DÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆz˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆzÑ Ô Ð Õ Ô ˆzÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð r\   c           	     ój  — d}d}||z
  }|d|z  z   }t           j        }d}d} ||||¬¦  «        }|sùddt          j        ¦   «         v st	          j        t           ¦  «        rt	          j        t           ¦  «        ndt	          j        |¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd	t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        d
œz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}}d S )Nr	  gÍÌÌÌÌÌ$@g      Ð?g333333$@r/   r0   úcassert %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py3)s, %(py5)s, abs_tol=%(py7)s)
}r2   Úcorrected_x©r    r+   r"   r,   r.   r4   ©	r2   rI   rB   rC   r@   rD   rE   rF   rG   )
rJ   r1  r3  Úerrorr8  rQ   rN   rU   rV   rY   s
             rZ   Ú5test_t1_f11_exponential_damping_correction_25_percentzSTestTier1ServerReconciliation.test_t1_f11_exponential_damping_correction_25_percent  sF  € ØˆØˆØ˜‘ˆà˜t e™|Ñ+ˆÝŒ|Ð=¨Ð=¸Ð=ˆ|ˆ|˜K¨¸Ð=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�tÑ=Ô=Ð=Õ=Ô=�tÑ=Ô=Ð=Ð=Õ=Ô=ˆ|Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=˜KÑ=Ô=Ð=Õ=Ô=˜KÑ=Ô=Ð=Ð=Õ=Ô=¨Ñ=Ô=Õ=Ô=¸Ñ=Ô=Õ=Ô=Ð=Ñ=Ô=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=r\   c                óÞ  — d}d}t          ||z
  ¦  «        }|dk    r|n|}||k    }|sÂt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d }d S )Nr	  g      *@g       @r&   )z%(py0)s == %(py2)sÚ	snapped_xr3  )r    r+   zassert %(py4)sr6   )	Úabsr@   rA   rB   rC   rD   rE   rF   rG   )rJ   r1  r3  r;  r>  rQ   Ú@py_format3rð   s           rZ   Ú.test_t1_f11_hard_rubberband_threshold_above_2mzLTestTier1ServerReconciliation.test_t1_f11_hard_rubberband_threshold_above_2m  s  € ØˆØˆÝ�F˜V‘OÑ$Ô$ˆà# cšk˜k�F�F¨vˆ	Ø˜FÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆy˜FÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆyÑ"Ô"Ð"Õ"Ô"ˆyÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"˜FÑ"Ô"Ð"Õ"Ô"˜FÑ"Ô"Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"r\   c           	     óŒ  — d\  }}d\  }}d}||z
  ||z
  z  }||||z
  z  z   }t           j        }d}	d}
 |||	|
¬¦  «        }|sùddt          j        ¦   «         v st	          j        t           ¦  «        rt	          j        t           ¦  «        ndt	          j        |¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd	t	          j        |	¦  «        t	          j        |
¦  «        t	          j        |¦  «        d
œz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}	x}
}d S )N)r^   r	  )g±áé•²±?r�   g±áé•²¡?g      &@g{®Gáz„?r0   r7  r2   Ú
interp_posr9  r:  )rJ   Út1Úpos1Út2Úpos2Út_renderÚalpharC  rQ   rN   rU   rV   rY   s                rZ   Ú5test_t1_f11_remote_entity_snapshot_interpolation_lerpzSTestTier1ServerReconciliation.test_t1_f11_remote_entity_snapshot_interpolation_lerp  sa  € Ø‰ˆˆDØ‰ˆˆDØˆØ˜B‘ 2¨¡7Ñ+ˆØ˜E T¨D¡[Ñ1Ñ1ˆ
ÝŒ|Ð;¨Ð;°dÐ;ˆ|ˆ|˜J¨°dÐ;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�tÑ;Ô;Ð;Õ;Ô;�tÑ;Ô;Ð;Ð;Õ;Ô;ˆ|Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;˜JÑ;Ô;Ð;Õ;Ô;˜JÑ;Ô;Ð;Ð;Õ;Ô;¨Ñ;Ô;Õ;Ô;°dÑ;Ô;Õ;Ô;Ð;Ñ;Ô;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r\   c                óÖ  — d}g }t          d¦  «        D ]?}|                     |¦  «         t          |¦  «        |k    r|                     d¦  «         Œ@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	        |¦  «        dœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }	d}
|	|
k    }|slt	          j        d|fd|	|
f¦  «        t	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}	x}}
d S )Né   é2   r   r&   r*  r   Úsnap_bufferr   r$   r%   éÿÿÿÿé1   rå   ræ   rç   r#   )r  Úappendr   Úpopr@   rA   rB   rC   rD   rE   rF   rG   )rJ   Ú
buffer_caprN  r  rL   rM   rN   rO   rP   rï   rR   rð   s               rZ   Ú/test_t1_f11_remote_ring_buffer_30_snapshots_capzMTestTier1ServerReconciliation.test_t1_f11_remote_ring_buffer_30_snapshots_cap  s&  € Øˆ
ØˆÝ�r‘”ð 	#ð 	#ˆAØ×Ò˜qÑ!Ô!Ð!Ý�;ÑÔ *Ò,Ð,Ø—’ Ñ"Ô"Ð"øÝ�;ÑÔÐ% 2Ð%Ð 2Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð 2Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�sÑ%Ô%Ð%Õ%Ô%�sÑ%Ô%Ð%Ð%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�;Ñ%Ô%Ð%Õ%Ô%�;Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% 2Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø˜2ŒÐ$ "Ð$ˆ "Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ "Ð$Ñ$Ô$Õ$Ô$ˆÑ$Ô$Õ$Ô$ "Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r\   Nr±   )
r²   r³   r´   rµ   r-  r5  r<  rA  rJ  rT  r¶   r\   rZ   r"  r"  î   s’   € € € € € Ø1Ð1ð(ð (ð (ð (ð!ð !ð !ð !ð>ð >ð >ð >ð#ð #ð #ð #ð<ð <ð <ð <ð%ð %ð %ð %ð %ð %r\   r"  ) rµ   Ú
__future__r   ÚbuiltinsrB   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter@   ré   r2   Ústructrè   Útypingr   r   r   r   ÚpytestÚserver.protor   r	   r
   r   Útests.e2e_cocos.conftestr   r   r   r   r¸   rÞ   r"  r¶   r\   rZ   ú<module>r_     s±  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø €€€Ø €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ðf+ð f+ð f+ð f+ð f+ñ f+ô f+ð f+ðR+*ð +*ð +*ð +*ð +*ñ +*ô +*ð +*ð\4-ð 4-ð 4-ð 4-ð 4-ñ 4-ô 4-ð 4-ðn7%ð 7%ð 7%ð 7%ð 7%ñ 7%ô 7%ð 7%ð 7%ð 7%r\   