§
    c|£jPH  ã            
       ó$  — d Z ddlZddlmc mZ ddlZddlZ e	ej
        d¦  «        rej
                             d¬¦  «         ej                             dej                             ej                             ej                             e¦  «        d¦  «        ¦  «        ¦  «         ddlmZ ddlmZ dd	lmZ d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&e'dk    r£ e¦   «           e¦   «           e¦   «           e¦   «           e¦   «           e¦   «           e¦   «           e!¦   «           e"¦   «           e#¦   «           e$¦   «           e%¦   «           e¦   «           e ¦   «           e&¦   «           e(d¦  «         dS dS )z<
Unit Tests cho POE2 Realtime Trading Advisor & Overlay HUD
é    NÚreconfigureúutf-8©Úencodingz..)ÚGoldTracker)Ú
LogWatcher)ÚMarketAdvisorc            	      ó  — 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} ||¦  «        }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        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}}| 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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}}| j        }d} ||¦  «        }d}d}||z  }||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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}|                      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}}| j        }d}d}||z
  }||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}x}}|                      d¦  «         | j        }d}d}||z
  }d}||z   }||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        |¦  «        t          j        |¦  «        d œz  }
d!d"|
iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}t          d#¦  «         d S )$NiPÃ  ©ú==)z4%(py2)s
{%(py2)s = %(py0)s.current_gold
} == %(py5)sÚgt©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7ÚPINNACLE_KEYT©Úis)zT%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.can_afford_tax
}(%(py4)s)
} is %(py9)s)r   r   Úpy4Úpy6Úpy9zassert %(py11)sÚpy11iÂ  )zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_tax_for
}(%(py4)s)
} == %(py9)s)zi%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.max_trades_affordable
}(%(py4)s)
} == (%(py9)s // %(py11)s))r   r   r   r   r   r   zassert %(py14)sÚpy14©z%(py0)s is %(py3)sÚok©r   Úpy3úassert %(py5)sr   )z@%(py2)s
{%(py2)s = %(py0)s.current_gold
} == (%(py5)s - %(py7)s))r   r   r   r   zassert %(py10)sÚpy10i'  )zM%(py2)s
{%(py2)s = %(py0)s.current_gold
} == ((%(py5)s - %(py7)s) + %(py10)s))r   r   r   r   r!   zassert %(py13)sÚpy13z [PASS] test_gold_tracker passed.)r   Úcurrent_goldÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚcan_afford_taxÚget_tax_forÚmax_trades_affordableÚ
deduct_taxÚadd_goldÚprint)r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12Ú@py_assert10Ú@py_assert12Ú@py_format13Ú@py_format15r   Ú@py_assert2Ú@py_format4Ú@py_assert6Ú@py_format9Ú@py_format11Ú@py_assert9Ú@py_assert11Ú@py_format14s                           ú1C:\Projects\AutoPOE2\tests\test_assistant_tool.pyÚtest_gold_trackerrI      s¢  € Ý	�UÑ	Ô	€BØŒ?Ð#˜eÐ#ˆ?˜eÒ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ?˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ2Ñ#Ô#Ð#Õ#Ô#ˆ2Ñ#Ô#Ð#Ð#Õ#Ô#ˆ?Ñ#Ô#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔÐ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ˆ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Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØŒ>Ð0˜.Ð0ˆ>ˆ>˜.Ñ)Ô)Ð0¨SÐ0Ð)¨SÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ2Ñ0Ô0Ð0Õ0Ô0ˆ2Ñ0Ô0Ð0Ð0Õ0Ô0ˆ>Ñ0Ô0Õ0Ô0˜.Ñ0Ô0Õ0Ô0Ð)Ñ0Ô0Õ0Ô0¨SÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ#ÐC NÐCÐ#Ð# NÑ3Ô3ÐC°uÐCÀÐC°uÀ±|ÐCÐ3°|ÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ3°|ÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆ2ÑCÔCÐCÕCÔCˆ2ÑCÔCÐCÐCÕCÔCÐ#ÑCÔCÕCÔC NÑCÔCÕCÔCÐ3ÑCÔCÕCÔC°uÑ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ð 
�Š�~Ñ	&Ô	&€BØÐˆ2�ˆ:ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒ?Ð)˜eÐ) cÐ)˜e c™kÐ)ˆ?˜kÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ?˜kÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ2Ñ)Ô)Ð)Õ)Ô)ˆ2Ñ)Ô)Ð)Ð)Õ)Ô)ˆ?Ñ)Ô)Õ)Ô)˜eÑ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð ‡K‚K�ÑÔÐØŒ?Ð1˜eÐ1 cÐ1˜e c™kÐ1¨EÐ1˜k¨EÑ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ˆ2Ñ1Ô1Ð1Õ1Ô1ˆ2Ñ1Ô1Ð1Ð1Õ1Ô1ˆ?Ñ1Ô1Õ1Ô1˜eÑ1Ô1Õ1Ô1 cÑ1Ô1Õ1Ô1¨EÑ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Ý	Ð
,Ñ-Ô-Ð-Ð-Ð-ó    c                  ó\  — t          d¦  «        } t          | ¦  «        }|                     ¦   «         }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          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¦  «         |                     ¦   «         }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 S )Néè  é   ©ú>=©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlenÚtrades©r   Úpy1r   r   úassert %(py8)sÚpy8c              3   ó0   K  — | ]}|j         d k    ¯|V — ŒdS ©ÚTRADE_BULK_ORBSN©Úid©Ú.0Úts     rH   ú	<genexpr>z&test_market_advisor.<locals>.<genexpr>-   s/   è è € ÐEÐE˜A¨1¬4Ð3DÒ+DÐ+D�aÐ+DÐ+DÐ+DÐ+DÐEÐErJ   Fr   )z5%(py2)s
{%(py2)s = %(py0)s.is_affordable
} is %(py5)sÚ
bulk_trader   r   r   i † c              3   ó0   K  — | ]}|j         d k    ¯|V — ŒdS rX   rZ   r\   s     rH   r_   z&test_market_advisor.<locals>.<genexpr>3   s/   è è € ÐUÐU A¸1¼4ÐCTÒ;TÐ;T˜aÐ;TÐ;TÐ;TÐ;TÐUÐUrJ   TÚbulk_trade_updatedz"[PASS] test_market_advisor passed.)r   r	   Úget_market_opportunitiesrQ   r$   r%   r&   r'   r(   r)   r*   r+   ÚnextÚis_affordableÚset_goldr1   )r   ÚmarR   r@   r7   r3   Ú@py_format7rC   r`   r2   r4   r5   r6   Útrades_updatedrb   s                  rH   Útest_market_advisorrj   $   sƒ  € Ý	�TÑ	Ô	€BÝ	�rÑ	Ô	€Bð ×(Ò(Ñ*Ô*€FÝˆv‰;Œ;Ð˜!Ðˆ;˜!ÒÐÐÐÕÔÐÐÐÐˆ;˜!ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔˆ;ÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐõ ÐEÐE ÐEÑEÔEÑEÔE€JØÔ#Ð, uÐ,Ð# uÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð# uÐ,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ:Ñ,Ô,Ð,Õ,Ô,ˆ:Ñ,Ô,Ð,Ð,Õ,Ô,Ð#Ñ,Ô,Õ,Ô, uÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð ‡K‚K�ÑÔÐØ×0Ò0Ñ2Ô2€NÝÐUÐU¨ÐUÑUÔUÑUÔUÐØÔ+Ð3¨tÐ3Ð+¨tÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð+¨tÐ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¨tÑ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Ý	Ð
.Ñ/Ô/Ð/Ð/Ð/rJ   c            	      ó  — t          d¦  «        } 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}}|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        }|
|v }|sªt          j        d|fd|
|f¦  «        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}}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        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}
x}}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}}|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}|                      |¦  «        }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}}|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        }|
|v }|sªt          j        d|fd|
|f¦  «        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        }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}|                      |¦  «        }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}}|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$}|                      |¦  «        }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}}|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'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        |¦  «        d-t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        t          j        |¦  «        d.œz  }t          j        d/|› d0�¦  «        d1z   d2|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}}�ŒBt!          d3¦  «         d S )4Nz	dummy.txtz�2026/09/05 20:00:00 120469812 91c6cc1 [INFO Client 25032] @From Exile_Master: Hi, I'd like to buy your Sekhema Key for 4.6 divine in Standard©úis not©z%(py0)s is not %(py3)sÚevent1r   r    r   ÚWHISPER_TRADEr   ©z2%(py2)s
{%(py2)s = %(py0)s.event_type
} == %(py5)sr   r   r   ÚExile_Master©Úin)z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.sender
}©rT   r   r   z
4.6 divine)z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.message
}z~2026/09/05 19:56:52 120530718 3ef23348 [INFO Client 25032] $DeyyuS_Sekhema: WTS 4th Trial of the Sekhemas - AFK run - 2 DivineÚevent2Ú
TRADE_CHATÚDeyyuS_Sekhema)z.%(py2)s
{%(py2)s = %(py0)s.sender
} == %(py5)sz\2026/09/05 19:55:52 120470937 7fbd1225 [INFO Client 25032] [SCENE] Set Source [The Grelwood]Úevent3ÚZONE_CHANGEzThe Grelwood©z1%(py2)s
{%(py2)s = %(py0)s.area_name
} == %(py5)sz2026/09/10 18:29:57 547320703 2caa229f [DEBUG Client 36104] Generating level 77 area "ChayulaLeague_Tower" with seed 3565528473Ú	event_genÚAREA_GENERATEDÚChayulaLeague_Tower)z1%(py2)s
{%(py2)s = %(py0)s.area_code
} == %(py5)sz]2026/09/10 18:29:57 547321000 7fbd1225 [INFO Client 36104] [SCENE] Set Source [Hive Fortress]Ú
event_hiveúHive Fortress)zAct 1zAct 2zAct 3zAct 4ÚAtlasz(null)z	(unknown)zO2026/09/05 19:55:52 120470937 7fbd1225 [INFO Client 25032] [SCENE] Set Source [ú]r   )zP%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.parse_line
}(%(py3)s)
} is %(py8)sÚlwÚline_ignored©r   r   r   r   rV   zScene u    pháº£i bá»‹ bá»� qua!ú
>assert %(py10)sr!   z'[PASS] test_log_watcher_parsing passed.)r   Ú
parse_liner$   r%   r&   r'   r(   r)   r*   r+   Ú
event_typeÚsenderÚmessageÚ	area_nameÚ	area_codeÚ_format_assertmsgr1   )rƒ   Úline_whisperro   r@   r2   rA   r5   r3   r4   r6   Ú@py_assert0Ú
line_traderv   Ú	line_zonery   Úline_genr|   Ú	line_hiver   Úignoredr„   r9   rB   rC   rD   s                            rH   Útest_log_watcher_parsingr•   7   sr  € Ý	�KÑ	 Ô	 €Bð c€LØ�]Š]˜<Ñ(Ô(€FØÐˆ6˜ÐÐÐÐÕÔÐÐÐÐˆ6˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ6ÑÔÐÕÔˆ6ÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔÐ/ Ð/Ð Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ6Ñ/Ô/Ð/Õ/Ô/ˆ6Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Õ/Ô/ Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ*˜Vœ]Ð*ˆ>˜]Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ>˜]Ð*Ñ*Ô*Õ*Ô*ˆ>Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜VÑ*Ô*Ð*Õ*Ô*˜VÑ*Ô*Ð*Ð*Õ*Ô*˜]Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ)˜6œ>Ð)ˆ<˜>Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ<˜>Ð)Ñ)Ô)Õ)Ô)ˆ<Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜6Ñ)Ô)Ð)Õ)Ô)˜6Ñ)Ô)Ð)Ð)Õ)Ô)˜>Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð R€JØ�]Š]˜:Ñ&Ô&€FØÐˆ6˜ÐÐÐÐÕÔÐÐÐÐˆ6˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ6ÑÔÐÕÔˆ6ÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔÐ, Ð,Ð Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Ð,Õ,Ô,ÐÑ,Ô,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØŒ=Ð,Ð,Ð,ˆ=Ð,Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ=Ð,Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Ð,Õ,Ô,ˆ=Ñ,Ô,Õ,Ô,Ð,Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð o€IØ�]Š]˜9Ñ%Ô%€FØÐˆ6˜ÐÐÐÐÕÔÐÐÐÐˆ6˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ6ÑÔÐÕÔˆ6ÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔÐ- Ð-Ð Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Ð-Õ-Ô-ÐÑ-Ô-Õ-Ô- Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ+˜Vœ^Ð+ˆ>˜^Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ>˜^Ð+Ñ+Ô+Õ+Ô+ˆ>Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜VÑ+Ô+Ð+Õ+Ô+˜VÑ+Ô+Ð+Ð+Õ+Ô+˜^Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔÐ-˜~Ð-Ð˜~Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð˜~Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Ð-Õ-Ô-ÐÑ-Ô-Õ-Ô-˜~Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð Q€HØ—’˜hÑ'Ô'€IØ Ð ˆ9˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ9˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ9Ñ Ô Ð Õ Ô ˆ9Ñ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØÔÐ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ˆ9Ñ3Ô3Ð3Õ3Ô3ˆ9Ñ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ØÔÐ7Ð"7Ð7ÐÐ"7Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7ÐÐ"7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ9Ñ7Ô7Ð7Õ7Ô7ˆ9Ñ7Ô7Ð7Ð7Õ7Ô7ÐÑ7Ô7Õ7Ô7Ð"7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ào€IØ—’˜yÑ)Ô)€JØ!Ð!ˆ:˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ:˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ:Ñ!Ô!Ð!Õ!Ô!ˆ:Ñ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÔ Ð1 MÐ1Ð  MÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð  MÐ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 MÑ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ØÔÐ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Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð Xð ]ñ ]ˆØsÐipÐsÐsÐsˆØŒ}Ð\ˆ}ˆ}˜\Ñ*Ô*Ð\¨dÐ\Ð*¨dÐ2Ð\Ð\Ñ\Õ\Ô\Ð\Ð\Ð\Ð\Ð*¨dÐ\Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\ˆrÑ\Ô\Ð\Õ\Ô\ˆrÑ\Ô\Ð\Ð\Õ\Ô\ˆ}Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\˜\Ñ\Ô\Ð\Õ\Ô\˜\Ñ\Ô\Ð\Ð\Õ\Ô\Ð*Ñ\Ô\Õ\Ô\¨dÑ\Ô\Ð\Ð\Ñ\Ð\Õ\Ô\Ð4\¸WÐ4\Ð4\Ð4\Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ñ\å	Ð
3Ñ4Ô4Ð4Ð4Ð4rJ   c                  óø  — ddl } |                      ¦   «         5 }t          j                             |d¦  «        }t          |dd¬¦  «        5 }|                     d¦  «         |                     d¦  «         |                     d	¦  «         |                     d
¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         ddd¦  «         n# 1 swxY w Y   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}}|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dd¦  «         n# 1 swxY w Y   t'          d¦  «         dS )u\   Seed Ä‘uÃ´i Client.txt: overlay Act 2/(null) bá»‹ bá»�, Hive Fortress lÃ  zone hiá»‡n táº¡i.r   Nú
Client.txtÚwr   r   zV2026/09/10 18:20:23 546746515 7fbd1225 [INFO Client 36104] [SCENE] Set Source [Act 2]
zW2026/09/10 18:20:24 546747750 7fbd1225 [INFO Client 36104] [SCENE] Set Source [(null)]
zb2026/09/10 18:20:24 546747750 7fbd1225 [INFO Client 36104] [SCENE] Set Source [Shoreline Hideout]
z€2026/09/10 18:29:57 547320703 2caa229f [DEBUG Client 36104] Generating level 77 area "ChayulaLeague_Tower" with seed 3565528473
zW2026/09/10 18:29:57 547321000 7fbd1225 [INFO Client 36104] [SCENE] Set Source [(null)]
z^2026/09/10 18:29:57 547321000 7fbd1225 [INFO Client 36104] [SCENE] Set Source [Hive Fortress]
zw2026/09/10 18:29:59 547323234 4cba6a94 [INFO Client 36104] [LOADING SCREEN] (Hive Fortress) Duration = 2.65302 seconds
zV2026/09/10 18:45:00 338000000 7fbd1225 [INFO Client 36104] [SCENE] Set Source [Atlas]
rl   rn   Úseededr   r    r   rz   r   rq   r   r   r   r€   r{   z9[PASS] test_log_watcher_seed_latest_playable_zone passed.)ÚtempfileÚTemporaryDirectoryÚosÚpathÚjoinÚopenÚwriter   Úseed_latest_playable_zoner$   r%   r&   r'   r(   r)   r*   r+   rˆ   r‹   r1   )rš   Útmpr�   Úfrƒ   r™   r@   r2   rA   r5   r3   r4   r6   s                rH   Ú*test_log_watcher_seed_latest_playable_zoner¤   f   sf  € à€O€O€Oà	×	$Ò	$Ñ	&Ô	&ð 3¨#ÝŒw�|Š|˜C Ñ.Ô.ˆÝ�$˜ gÐ.Ñ.Ô.ð 	o°!Ø�GŠGÐmÑnÔnÐnØ�GŠGÐnÑoÔoÐoØ�GŠGÐyÑzÔzÐzØ�GŠGð  Xñ  Yô  Yð  YØ�GŠGÐnÑoÔoÐoØ�GŠGÐuÑvÔvÐvØ�GŠGð  Oñ  Pô  Pð  PØ�GŠGÐmÑnÔnÐnð	oð 	oð 	oñ 	oô 	oð 	oð 	oð 	oð 	oð 	oð 	oøøøð 	oð 	oð 	oð 	oõ ˜ÑÔˆØ×-Ò-Ñ/Ô/ˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÔ Ð1 MÐ1Ð  MÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð  MÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆvÑ1Ô1Ð1Õ1Ô1ˆvÑ1Ô1Ð1Ð1Õ1Ô1Ð Ñ1Ô1Õ1Ô1 MÑ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ØÔÐ2 ?Ð2Ð ?Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð ?Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆvÑ2Ô2Ð2Õ2Ô2ˆvÑ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ð!3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ" 
Ð
EÑFÔFÐFÐFÐFs7   ™3M ÁB)DÃ5M ÄD	ÄM ÄD	Ä	IM Í M$Í'M$c                  ó‚  — dd l } ddlm} t          |j        ¦  «        }	 |                      ¦   «         5 }t          j                             |d¦  «        }t          |dd¬¦  «        5 }| 
                    d¦  «         d d d ¦  «         n# 1 swxY w Y   |t          j                             |dd¦  «        g|_        |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dœz  }	dd|	iz  }
t%          t          j        |
¦  «        ¦  «        ‚d x}x}}t          j                             |d¦  «        }t          j        |d¬¦  «         t          j                             |d¦  «        }t          |dd¬¦  «        5 }| 
                    d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j                             |d¦  «        g|_        |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dœz  }	dd|	iz  }
t%          t          j        |
¦  «        ¦  «        ‚d x}x}}d d d ¦  «         n# 1 swxY w Y   ||_        n# ||_        w xY wt+          d¦  «         d S )Nr   )ÚConfigr—   r˜   r   r   ÚxÚmissingr   )zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.find_poe2_client_log
}()
} == %(py6)sr¦   Úclient)r   r   r   r   rU   rV   ÚotherT)Úexist_okzLatestClient.txtÚyÚlatestz([PASS] test_find_poe2_client_log passed.)rš   Úsrc.assistant_tool.configr¦   ÚlistÚDEFAULT_LOG_PATHSr›   rœ   r�   rž   rŸ   r    Úfind_poe2_client_logr$   r%   r&   r'   r(   r)   r*   r+   Úmakedirsr1   )rš   r¦   Úoriginalr¢   r©   r£   r2   r4   r7   rh   rC   Úmissing_dirr­   s                rH   Útest_find_poe2_client_logrµ   ~   s“  € Ø€O€O€OØ0Ð0Ð0Ð0Ð0Ð0å�FÔ,Ñ-Ô-€Hð,Ø×(Ò(Ñ*Ô*ð 	;¨cÝ”W—\’\ # |Ñ4Ô4ˆFÝ�f˜c¨GÐ4Ñ4Ô4ð ¸Ø—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à(.µ´·²¸SÀ)È\Ñ0ZÔ0ZÐ'[ˆFÔ$ØÔ.Ð:Ð.Ð.Ñ0Ô0Ð:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�6Ñ:Ô:Ð:Õ:Ô:�6Ñ:Ô:Ð:Ð:Õ:Ô:Ð.Ñ:Ô:Õ:Ô:Ð0Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:°FÑ:Ô:Ð:Õ:Ô:°FÑ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:åœ'Ÿ,š, s¨GÑ4Ô4ˆKÝŒK˜¨dÐ3Ñ3Ô3Ð3Ý”W—\’\ +Ð/AÑBÔBˆFÝ�f˜c¨GÐ4Ñ4Ô4ð ¸Ø—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å(*¬¯ª°[À,Ñ(OÔ(OÐ'PˆFÔ$ØÔ.Ð:Ð.Ð.Ñ0Ô0Ð:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�6Ñ:Ô:Ð:Õ:Ô:�6Ñ:Ô:Ð:Ð:Õ:Ô:Ð.Ñ:Ô:Õ:Ô:Ð0Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:°FÑ:Ô:Ð:Õ:Ô:°FÑ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð $,ˆÔ Ð ø 8ˆÔ Ð+Ð+Ð+Ð+Ý	Ð
4Ñ5Ô5Ð5Ð5Ð5sx    N$ ´3NÁ'B	Á=NÂ	B	ÂNÂB	ÂFNÈ+IÉNÉI	ÉNÉI	ÉD0NÎN$ ÎNÎN$ ÎNÎN$ Î$	N-c                  ó°
  — ddl m}  d}|                      |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}}|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        }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}
|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        |¦  «        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#          d¦  «         d S )Nr   )ÚDiscordTradeParserz,WTS 5 Sekhema Keys 4.2 div each - fast tradezForbidden Rite)Úcurrent_leaguerl   rn   Úofferr   r    r   ÚWTSr   )z.%(py2)s
{%(py2)s = %(py0)s.action
} == %(py5)sr   r   r   zSekhema Key)z1%(py2)s
{%(py2)s = %(py0)s.item_name
} == %(py5)srM   )z0%(py2)s
{%(py2)s = %(py0)s.quantity
} == %(py5)sgÍÌÌÌÌÌ@)z2%(py2)s
{%(py2)s = %(py0)s.price_unit
} == %(py5)su	   KÃˆO Ráººrs   )z2%(py1)s in %(py5)s
{%(py5)s = %(py3)s.evaluation
}ru   )ú>)z:%(py2)s
{%(py2)s = %(py0)s.profit_estimate_div
} > %(py5)sz"[PASS] test_discord_parser passed.)Ú"src.assistant_tool.discord_monitorr·   Úparse_messager$   r%   r&   r'   r(   r)   r*   r+   ÚactionÚ	item_nameÚquantityÚ
price_unitÚ
evaluationÚprofit_estimate_divr1   )r·   Úmsgr¹   r@   r2   rA   r5   r3   r4   r6   r�   s              rH   Útest_discord_parserrÅ   –   sE  € ØEÐEÐEÐEÐEÐEð 9€CØ×,Ò,¨SÐAQÐ,ÑRÔR€EØÐˆ5˜ÐÐÐÐÕÔÐÐÐÐˆ5˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒ<Ð ˜5Ð ˆ<˜5Ò Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ<˜5Ð Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ5Ñ Ô Ð Õ Ô ˆ5Ñ Ô Ð Ð Õ Ô ˆ<Ñ Ô Õ Ô ˜5Ñ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØŒ?Ð+˜mÐ+ˆ?˜mÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ?˜mÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ5Ñ+Ô+Ð+Õ+Ô+ˆ5Ñ+Ô+Ð+Ð+Õ+Ô+ˆ?Ñ+Ô+Õ+Ô+˜mÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØŒ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ5Ñ"Ô"Ð"Õ"Ô"ˆ5Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐ*˜%Ô*Ð*ˆ;Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ;Ð*Ð*Ñ*Ô*Õ*Ô*ˆ;Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜%Ñ*Ô*Ð*Õ*Ô*˜%Ñ*Ô*Ð*Ð*Õ*Ô*Ð*Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ$Ð( qÐ(Ð$ qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð$ qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Ð(Õ(Ô(Ð$Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ý	Ð
.Ñ/Ô/Ð/Ð/Ð/rJ   c                  óº  ‡— ddl m}   | d¬¦  «        }g Š|                     ˆfd„¦  «         |                     d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}||k    }|slt          j        d
|fd||f¦  «        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
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}|                     ¦   «          t          d¦  «         d S )Nr   )ÚCoreShmBridgeg     €A@)Úlow_hp_thresholdc                 ó4   •— ‰                      | ||f¦  «        S ©N©Úappend)ÚcurÚmax_hpÚpctÚalertss      €rH   ú<lambda>z&test_core_shm_bridge.<locals>.<lambda>ª   s   ø€ ¸&¿-º-ÈÈfÐVYÐHZÑ:[Ô:[€ rJ   é   éd   ç      4@é   r   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)srQ   rÐ   rS   rU   rV   )rÒ   rÓ   rÔ   )z%(py1)s == %(py4)s)rT   r   zassert %(py6)sr   Tr   )zD%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.start
}()
} is %(py7)sÚbridge©r   r   r   r   úassert %(py9)sr   z#[PASS] test_core_shm_bridge passed.)Ú"src.assistant_tool.core_shm_bridgerÇ   Úregister_low_hp_alertÚ_notify_low_hprQ   r$   r%   r&   r'   r(   r)   r*   r+   ÚstartÚstopr1   )rÇ   r×   r@   r7   r3   rh   rC   r�   r4   Ú@py_format5r2   rB   r6   r:   rÐ   s                 @rH   Útest_core_shm_bridgerà   ¥   sD  ø€ Ø@Ð@Ð@Ð@Ð@Ð@àˆ]¨DÐ1Ñ1Ô1€FØ€FØ
× Ò Ð![Ð![Ð![Ð![Ñ\Ô\Ð\ð ×Ò˜"˜c 4Ñ(Ô(Ð(Ýˆv‰;Œ;Ð˜!Ðˆ;˜!ÒÐÐÐÕÔÐÐÐÐˆ;˜!ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔˆ;ÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�!Œ9Ð'˜Ð'ˆ9˜Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ9˜Ð'Ñ'Ô'Õ'Ô'ˆ9Ñ'Ô'Õ'Ô'˜Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð Œ<Ð!ˆ<ˆ<‰>Œ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ6Ñ!Ô!Ð!Õ!Ô!ˆ6Ñ!Ô!Ð!Ð!Õ!Ô!ˆ<Ñ!Ô!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø
‡K‚K�M„M€MÝ	Ð
/Ñ0Ô0Ð0Ð0Ð0rJ   c                  ó  — ddl m}   | d¦  «        }|                     d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}}|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¦  «         |                     d¦  «         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        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d 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        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d x}
x}}|                     d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}}|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#          d¦  «         d S )Nr   )Ú
GemManagerÚWARRIOR_MELEErÕ   F)Úuncut_gem_levelÚ
is_supportrl   rn   Úrecr   r    r   ÚCleaver   )z0%(py2)s
{%(py2)s = %(py0)s.gem_name
} == %(py5)sr   r   r   ÚMAIN_DPS)z,%(py2)s
{%(py2)s = %(py0)s.role
} == %(py5)srs   )z5%(py1)s in %(py5)s
{%(py5)s = %(py3)s.engraved_gems
}Úgmru   )z5%(py1)s in %(py5)s
{%(py5)s = %(py3)s.socketed_gems
}TÚrec_supzBrutality Supportz[PASS] test_gem_manager passed.)Úsrc.assistant_tool.gem_managerrâ   Úrecommend_engravingr$   r%   r&   r'   r(   r)   r*   r+   Úgem_nameÚroleÚrecord_engravedÚrecord_socketedÚengraved_gemsÚsocketed_gemsr1   )râ   ré   ræ   r@   r2   rA   r5   r3   r4   r6   r�   rê   s               rH   Útest_gem_managerró   ¶   sv  € Ø9Ð9Ð9Ð9Ð9Ð9à	ˆ�OÑ	$Ô	$€BØ
×
 Ò
 °¸uÐ
 Ñ
EÔ
E€CØÐˆ3�dˆ?ÐÐÐÕÔÐÐÐÐˆ3�dÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒ<Ð#˜8Ð#ˆ<˜8Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ<˜8Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ3Ñ#Ô#Ð#Õ#Ô#ˆ3Ñ#Ô#Ð#Ð#Õ#Ô#ˆ<Ñ#Ô#Õ#Ô#˜8Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØŒ8Ð!�zÐ!ˆ8�zÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ8�zÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ8Ñ!Ô!Õ!Ô!�zÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!à×Ò�xÑ Ô Ð Ø×Ò�xÑ Ô Ð ØÐ'�rÔ'Ð'ˆ8Ð'Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ8Ð'Ð'Ñ'Ô'Õ'Ô'ˆ8Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�rÑ'Ô'Ð'Õ'Ô'�rÑ'Ô'Ð'Ð'Õ'Ô'Ð'Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÐ'�rÔ'Ð'ˆ8Ð'Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ8Ð'Ð'Ñ'Ô'Õ'Ô'ˆ8Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�rÑ'Ô'Ð'Õ'Ô'�rÑ'Ô'Ð'Ð'Õ'Ô'Ð'Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð ×$Ò$°QÀ4Ð$ÑHÔH€GØÐˆ7˜$ÐÐÐÐÕÔÐÐÐÐˆ7˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔÐ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ˆ7Ñ2Ô2Ð2Õ2Ô2ˆ7Ñ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Ý	Ð
+Ñ,Ô,Ð,Ð,Ð,rJ   c                  ó"  — ddl m}   | ¦   «         }|                     d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        |¦  «        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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}
}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!          d¦  «         d S ) Nr   )ÚAutoQuesterÚG1_1zThe Riverbankrl   rn   Úobj1r   r    r   rs   )z1%(py1)s in %(py5)s
{%(py5)s = %(py3)s.area_name
}ru   r   r   Ú
TRANSITIONr   )z3%(py2)s
{%(py2)s = %(py0)s.action_type
} == %(py5)sr   ÚUnaÚBOOK_OF_SKILL)ÚrewardrÕ   )z<%(py2)s
{%(py2)s = %(py0)s.skill_books_consumed
} == %(py5)sÚaqz	>> [QUEST)zP%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.get_status_banner
}()
})rT   r   r   r   rÙ   r   z [PASS] test_auto_quester passed.)Úsrc.assistant_tool.auto_questerrõ   Úget_current_objectiver$   r%   r&   r'   r(   r)   r*   r+   r‹   Úaction_typeÚrecord_objective_completedÚskill_books_consumedÚget_status_bannerr1   )rõ   rü   r÷   r@   r2   rA   r5   r�   r3   r6   r4   rB   r:   s                rH   Útest_auto_questerr  Ê   sÊ  € Ø;Ð;Ð;Ð;Ð;Ð;à	ˆ‰Œ€BØ×#Ò# F¨OÑ<Ô<€DØÐˆ4�tÐÐÐÐÕÔÐÐÐÐˆ4�tÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�tÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ,˜dœnÐ,ˆ?˜nÐ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ?˜nÐ,Ñ,Ô,Õ,Ô,ˆ?Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜dÑ,Ô,Ð,Õ,Ô,˜dÑ,Ô,Ð,Ð,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔÐ+˜|Ð+Ð˜|Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð˜|Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ4Ñ+Ô+Ð+Õ+Ô+ˆ4Ñ+Ô+Ð+Ð+Õ+Ô+ÐÑ+Ô+Õ+Ô+˜|Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð ×!Ò! %°Ð!Ñ@Ô@Ð@ØÔ"Ð' aÐ'Ð" aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ2Ñ'Ô'Ð'Õ'Ô'ˆ2Ñ'Ô'Ð'Ð'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÐ0˜"Ô.Ð0Ð.Ð.Ñ0Ô0Ð0ˆ;Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ;Ð0Ð0Ñ0Ô0Õ0Ô0ˆ;Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜"Ñ0Ô0Ð0Õ0Ô0˜"Ñ0Ô0Ð0Ð0Õ0Ô0Ð.Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ý	Ð
,Ñ-Ô-Ð-Ð-Ð-rJ   c                  ó@  — dd l } dd l}dd l}ddlm}m}m} |                     ddddddd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  }
t          j        dt          |¦  «        › �¦  «        dz   d|
iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}	}|                       dd¦  «        } |¦   «         }||_        t'          |                     ¦   «         dz  ¦  «        }|                     d||dddd|dd¦
  «
        |d 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  }t          j        d¦  «        dz   d|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}}|                     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!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}||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%d&¦  «        |d'd(…<   |                     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        |¦  «        t          j        | ¦  «        d-œz  }!t          j        d.¦  «        d/z   d0|!iz  }"t!          t          j        |"¦  «        ¦  «        ‚d x}x}x}} |j        } |¦   «         }d*} || u }|sÒt          j
        d|fd1|| f¦  «        d,t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        t          j        |¦  «        t          j        | ¦  «        d-œz  }!t          j        d2¦  «        d/z   d0|!iz  }"t!          t          j        |"¦  «        ¦  «        ‚d x}x}x}} |j        } |¦   «         }d*} || u }|sÒt          j
        d|fd3|| f¦  «        d,t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        t          j        |¦  «        t          j        | ¦  «        d-œz  }!t          j        d4¦  «        d/z   d0|!iz  }"t!          t          j        |"¦  «        ¦  «        ‚d x}x}x}} d |_        |                     ¦   «          t3          d5¦  «         d S )6Nr   ©ÚPROTOCOL_VERSIONÚSHARED_MEM_MAGICrÇ   z	<QIfffIIIiç  éc   g        é$   r   rÖ   rQ   Ú	cmd_dummyrS   z$CommandPacket must be 36 bytes, got ú
>assert %(py8)srV   éÿÿÿÿé  @ rL   ú
<QIIQQQQQQrÕ   é@   Tr   r   r   r   z5send_panic_stop should succeed when queue is not fullú
>assert %(py5)sr   )z%(py0)s == %(py3)sÚcmd_seqr    i  0 i$ 0 Úcmd_idÚop_codez<Qé   é   é    é(   F)zN%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.send_panic_stop
}()
} is %(py7)sr×   rØ   z4send_panic_stop must return False when queue is fullz
>assert %(py9)sr   )zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.send_recalibrate_xyz
}()
} is %(py7)sz9send_recalibrate_xyz must return False when queue is full)zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.send_trigger_auto_login
}()
} is %(py7)sz<send_trigger_auto_login must return False when queue is fullz.[PASS] test_task_opt_02_command_packet passed.)ÚmmapÚstructÚtimerÚ   r  r  rÇ   ÚpackrQ   r$   r%   r&   r'   r(   r)   r�   r*   r+   Ú_shmÚintÚsend_panic_stopÚunpackÚsend_recalibrate_xyzÚsend_trigger_auto_loginÚcloser1   )#r  r  r  r  r  rÇ   r
  r@   r7   r3   rh   rC   Úshmr×   Únow_msr   r2   rA   r5   Ú_r  Úcmd_readÚpktr  r  r§   r¬   ÚzÚ	entity_idÚprioÚtimeoutr4   rB   r6   r:   s#                                      rH   Útest_task_opt_02_command_packetr,  Ù   s@	  € Ø€K€K€KØ€M€M€MØ€K€K€KàdÐdÐdÐdÐdÐdÐdÐdÐdÐdð —’˜K¨¨b°#°s¸CÀÀAÀqÑIÔI€IÝˆy‰>Œ>ÐX˜RÐXˆ>˜RÒÐXÐXÑXÕXÔXÐXÐXÐXÐXˆ>˜RÐXÑXÔXÐXÕXÔXÑXÔXÐXÐXÕXÔX�3ÑXÔXÐXÕXÔX�3ÑXÔXÐXÐXÐXÕXÔXÑXÔXÐXÐXÕXÔXˆyÑXÔXÐXÕXÔXˆyÑXÔXÐXÐXÕXÔXˆ>ÑXÔXÕXÔX˜RÑXÔXÐXÐXÑXÐXÕXÔXÐ!XÍÈIÉÌÐ!XÐ!XÑXÔXÐXÑXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXð �)Š)�B˜Ñ
(Ô
(€CØˆ]‰_Œ_€FØ€F„Kõ �—’‘”˜tÑ#Ñ$Ô$€FØ�{Š{˜<Ð)9Ð;KÈQÐPQÐSTÐVWÐY_ÐabÐdeÑfÔf€Cˆˆˆ�Hð 
×	Ò	Ñ	!Ô	!€BØÐNˆ2�ˆ:ÐNÐNÐNÕNÔNÐNÐNÐNÐNˆ2�ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNˆ2ÑNÔNÐNÕNÔNˆ2Ñ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à-3¯]ª]¸<ÈÈSÈbÈSÌÑ-RÔ-RÑ*€A€qˆ!ˆQ�˜ 1 a¨ØÐˆ7�aŠ<ÐÐÐÕÔÐÐÐÐˆ7�aÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔ�aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐà
ˆh�}Ð$Ô
%€CØ9?¿ºÀ{ÐTWÑ9XÔ9XÑ6€FˆG�Q˜˜1˜i¨¨wØÐˆ6�SŠ=ÐÐÐÕÔÐÐÐÐˆ6�SÐÑÔÐÕÔÑÔÐÐÕÔˆ6ÑÔÐÕÔˆ6ÑÔÐÐÕÔ�SÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ7�bŠ=ÐÐÐÕÔÐÐÐÐˆ7�bÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔ�bÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐð —’˜T 2Ñ&Ô&€Cˆˆ2ˆ�JØ—’˜T 1Ñ%Ô%€Cˆˆ2ˆ�JØÔ!ÐdÐ!Ð!Ñ#Ô#Ðd uÐdÐ# uÐ,ÐdÐdÐdÕdÔdÐdÐdÐdÐdÐ# uÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆ6ÑdÔdÐdÕdÔdˆ6ÑdÔdÐdÐdÕdÔdÐ!ÑdÔdÕdÔdÐ#ÑdÔdÕdÔd uÑdÔdÐdÐdÑdÐdÕdÔdÐ.dÑdÔdÐdÑdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÐdÐdÐdÐdØÔ&ÐnÐ&Ð&Ñ(Ô(Ðn¨EÐnÐ(¨EÐ1ÐnÐnÐnÕnÔnÐnÐnÐnÐnÐ(¨EÐnÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔnˆ6ÑnÔnÐnÕnÔnˆ6ÑnÔnÐnÐnÕnÔnÐ&ÑnÔnÕnÔnÐ(ÑnÔnÕnÔn¨EÑnÔnÐnÐnÑnÐnÕnÔnÐ3nÑ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ØÔ)ÐtÐ)Ð)Ñ+Ô+Ðt¨uÐtÐ+¨uÐ4ÐtÐtÐtÕtÔtÐtÐtÐtÐtÐ+¨uÐtÑtÔtÐtÕtÔtÑtÔtÐtÐtÕtÔtˆ6ÑtÔtÐtÕtÔtˆ6ÑtÔtÐtÐtÕtÔtÐ)ÑtÔtÕtÔtÐ+ÑtÔtÕtÔt¨uÑtÔtÐtÐtÑtÐtÕtÔtÐ6tÑtÔtÐtÑtÐtÐtÐtÑtÐtÕtÕtÔtÐtÑtÔtÑtÔtÐtÐtÐtÐtÐtÐtÐtÐtÐtà€F„KØ‡I‚I�K„K€KÝ	Ð
:Ñ;Ô;Ð;Ð;Ð;rJ   c                  ó,  ‡— dd l } dd l}dd l}ddlm}m}m} |                       dd¦  «        } |d¬¦  «        }||_        d}|                     dd	d
ddddddddddddddddddd¦  «        }	|	|||t          |	¦  «        z   …<   |                     dd¦  «        ||dz   |dz   …<   |                     dd¦  «        ||dz   dz   |dz   dz   …<   |                     dd¦  «        ||dz   dz   dz   |dz   dz   dz   …<   |                     d d!dd"d#d$¦  «        }
|
||d%z   |d%z   t          |
¦  «        z   …<   t          |                     ¦   «         d&z  ¦  «        }|                     d'||dddd|dd¦
  «
        |d d(…<   d|_        |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|_        g Š|                     ˆfd0„¦  «         |                     ¦   «          |                     d1¦  «         |                     ¦   «          t          ‰¦  «        }d}||k    }|�st          j        d2|fd3||f¦  «        d4t!          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd4d5t!          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        nd5t          j        |¦  «        t          j        |¦  «        d6œz  }t          j        d7¦  «        d8z   d9|iz  }t)          t          j        |¦  «        ¦  «        ‚d x}x}}‰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}||k    }|s½t          j        d@|fdA||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        }d}||k    }|s½t          j        d@|fdB||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        }d}||k    }|s½t          j        d@|fdC||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        }d}||k    }|s½t          j        d@|fdD||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dE||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dF||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dG||f¦  «        d,t!          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        t          j        |¦  «        d=œz  }t          j        dH¦  «        dIz   d?|iz  }t)          t          j        |¦  «        ¦  «        ‚d x}x}}| "                    ¦   «          tG          dJ¦  «         d S )KNr   r  r  r  g{®Gáz„?)Úpoll_intervali  z<QQQfffffIIIIIIIIIIIIQée   iŸ† l        g      (@g      A@g      L@g      ð?g       @é–   éÈ   éP   rÓ   é
   rM   rÒ   rÕ   z<Ié   éh   z<Hé   é   éX   z
<QII32s48si90  ix  s   The Riverbank s
   Riverbank éh˜  rL   r  r  Fr   )zT%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.last_snapshot
}.is_online
} is %(py7)sr×   rØ   rÙ   r   c                 ó.   •— ‰                      | ¦  «        S rÊ   rË   )ÚsnapÚreceiveds    €rH   rÑ   z1test_task_opt_03_seqlock_reader.<locals>.<lambda>,  s   ø€ ¨(¯/ª/¸$Ñ*?Ô*?€ rJ   g{®Gáz´?rN   rP   rQ   r<  rS   z4Should have received at least 1 snapshot via Seqlockr  rV   T)z1%(py2)s
{%(py2)s = %(py0)s.is_online
} is %(py5)sr;  r   r   r   r   )zO%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.player
}.player_addr
} == %(py7)s)zN%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.player
}.current_hp
} == %(py7)s)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.player
}.max_hp
} == %(py7)s)zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.player
}.active_weapon_set
} == %(py7)s©z6%(py2)s
{%(py2)s = %(py0)s.monsters_count
} == %(py5)s)z3%(py2)s
{%(py2)s = %(py0)s.items_count
} == %(py5)s)z1%(py2)s
{%(py2)s = %(py0)s._last_seq
} == %(py5)szLast seq should be updated to 1z
>assert %(py7)sz.[PASS] test_task_opt_03_seqlock_reader passed.)$r  r  r  rÚ   r  r  rÇ   r  r  rQ   r  Ú	_last_seqÚlast_snapshotÚ	is_onliner$   r%   r&   r'   r(   r)   r*   r+   Úregister_listenerrÝ   ÚsleeprÞ   r�   ÚplayerÚplayer_addrÚ
current_hprÎ   Úactive_weapon_setÚmonsters_countÚitems_countr"  r1   )r  r  r  r  r  rÇ   r#  r×   Ú	slot1_offÚplayer_dataÚ	area_datar$  r2   r4   rB   r7   r6   r:   r@   r3   rh   rC   r;  r5   r<  s                           @rH   Útest_task_opt_03_seqlock_readerrL    s`  ø€ Ø€K€K€KØ€M€M€MØ€K€K€KàdÐdÐdÐdÐdÐdÐdÐdÐdÐdà
�)Š)�B˜Ñ
(Ô
(€CØˆ]¨Ð.Ñ.Ô.€FØ€F„Kð €Ið —+’+Ð6¸¸UÀKÐQUÐW[Ð]aÐcfÐhkÐmpÐruÐwyÐ{~ð  ACð  EGð  IJð  LMð  OPð  RTð  VWð  YZð  \]ñ  ^ô  ^€KØ2=€Cˆ	�)�c +Ñ.Ô.Ñ.Ð.Ñ/ð ,2¯;ª;°t¸QÑ+?Ô+?€Cˆ	�C‰˜	 C™Ð'Ñ(à39·;²;¸tÀQÑ3GÔ3G€Cˆ	�C‰˜!Ñ˜I¨™O¨aÑ/Ð/Ñ0à=C¿[º[ÈÈqÑ=QÔ=Q€Cˆ	�C‰˜"Ñ˜qÑ  ¨S¡°2Ñ!5¸Ñ!9Ð9Ñ:ð —’˜L¨%°°SÐ:NÐP`ÑaÔa€IØ@I€Cˆ	�EÑ˜) eÑ+­c°)©n¬nÑ<Ð<Ñ=å�—’‘”˜tÑ#Ñ$Ô$€Fà�{Š{˜<Ð)9Ð;KÈQÐPQÐSTÐVWÐY_ÐabÐdeÑfÔf€Cˆˆˆ�Hð €FÔØÔÐ2ÐÔ)Ð2¨UÐ2Ð)¨UÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆ6Ñ2Ô2Ð2Õ2Ô2ˆ6Ñ2Ô2Ð2Ð2Õ2Ô2ÐÑ2Ô2Õ2Ô2Ð)Ñ2Ô2Õ2Ô2¨UÑ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ð €FÔØ€HØ
×ÒÐ?Ð?Ð?Ð?Ñ@Ô@Ð@à
‡L‚L�N„N€NØ‡J‚JˆtÑÔÐØ
‡K‚K�M„M€Måˆx‰=Œ=ÐU˜AÐUˆ=˜AÒÐUÐUÑUÕUÔUÐUÐUÐUÐUˆ=˜AÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU�3ÑUÔUÐUÕUÔU�3ÑUÔUÐUÐUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆxÑUÔUÐUÕUÔUˆxÑUÔUÐUÐUÕUÔUˆ=ÑUÔUÕUÔU˜AÑ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ÐUÐUÐUÐUÐUÐUÐUØ�BŒ<€DØŒ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ4Ñ!Ô!Ð!Õ!Ô!ˆ4Ñ!Ô!Ð!Ð!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒ;Ð1ˆ;Ô"Ð1 kÐ1Ð" kÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð" kÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ4Ñ1Ô1Ð1Õ1Ô1ˆ4Ñ1Ô1Ð1Ð1Õ1Ô1ˆ;Ñ1Ô1Õ1Ô1Ð"Ñ1Ô1Õ1Ô1 kÑ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ØŒ;Ð(ˆ;Ô!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØŒ;Ð$ˆ;ÔÐ$ Ð$Ð Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ4Ñ$Ô$Ð$Õ$Ô$ˆ4Ñ$Ô$Ð$Ð$Õ$Ô$ˆ;Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØŒ;Ð-ˆ;Ô(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ4Ñ-Ô-Ð-Õ-Ô-ˆ4Ñ-Ô-Ð-Ð-Õ-Ô-ˆ;Ñ-Ô-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ4Ñ#Ô#Ð#Õ#Ô#ˆ4Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔÐ ˜qÐ Ð˜qÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ4Ñ Ô Ð Õ Ô ˆ4Ñ Ô Ð Ð Õ Ô ÐÑ Ô Õ Ô ˜qÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØÔÐC˜qÐCÐ˜qÒ ÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ˜qÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆ6ÑCÔCÐCÕCÔCˆ6ÑCÔCÐCÐCÕCÔCÐÑCÔCÕCÔC˜qÑ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à‡I‚I�K„K€KÝ	Ð
:Ñ;Ô;Ð;Ð;Ð;rJ   c                  óL  — dd l } ddlm} |                      |j        ¦  «        }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  }t          j        d¦  «        d	z   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  }t          j        d¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}t          d¦  «         d S )Nr   )Ú
OverlayHUDzdself.gold_tracker.register_listener(lambda new_gold: self.after(0, self._on_gold_changed, new_gold))rs   )z%(py1)s in %(py3)sÚinit_src)rT   r   z=gold_tracker listener must be wrapped with self.after(0, ...)r  r   zVself.log_watcher.register_listener(lambda evt: self.after(0, self._on_log_event, evt))z<log_watcher listener must be wrapped with self.after(0, ...)z5[PASS] test_task_opt_08_overlay_thread_safety passed.)ÚinspectÚsrc.assistant_tool.overlay_guirN  Ú	getsourceÚ__init__r$   r%   r)   r&   r'   r(   r�   r*   r+   r1   )rP  rN  rO  r�   r@   rA   r5   s          rH   Ú&test_task_opt_08_overlay_thread_safetyrT  @  s€  € Ø€N€N€Nà9Ð9Ð9Ð9Ð9Ð9Ø× Ò  Ô!4Ñ5Ô5€HØqð  ÐqÐu}Ð}ð  ð  ð  õ  ô  ð  ð  ð  ð  ÐqÐu}ð  ñ  ô  õ  ô  Ðqñ  ô  ð  õ  ô  ñ  ô  ð  ð  õ  ô  Ðu}ñ  ô  ð  õ  ô  Ðu}ñ  ô  ð  ð  ð  ð  ñ  ð  õ  ô  ð  @ñ  ô  ð  ñ  ð  ð  ð  ñ  ð  õ  õ  ô  ð  ñ  ô  ñ  ô  ð  ð  ð  ð  ð  Øcð  pÐcÐgoÐoð  pð  pð  põ  pô  pð  pð  pð  pð  pÐcÐgoð  pñ  pô  põ  pô  pÐcñ  pô  pð  põ  pô  pñ  pô  pð  pð  põ  pô  pÐgoñ  pô  pð  põ  pô  pÐgoñ  pô  pð  pð  pð  pð  pñ  pð  põ  pô  pð  rpñ  pô  pð  pñ  pð  pð  pð  pñ  pð  põ  põ  pô  pð  pñ  pô  pñ  pô  pð  pð  pð  pð  pð  pÝ	Ð
AÑBÔBÐBÐBÐBrJ   c                  óö  — ddl m}   | d¬¦  «        }d}t          ||¦  «        }|sèt          j        d¦  «        dz   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  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}t          ||¦  «        }|sèt          j        d¦  «        dz   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  }t          t          j
        |¦  «        ¦  «        ‚d x}}g }d}t          ||¦  «        }|}|rd}t          ||¦  «        }	|	}|�såd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  }
|                     |
¦  «         |rÇd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  }|                     |¦  «         t          j        |d¦  «        i z  }t          j        d¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}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}} | d¬¦  «        5 }	 d d d ¦  «         n# 1 swxY w Y   |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 S )Nr   )ÚSyncMemorySnapshotManageriÿàõ)Úpidr"  z2SyncMemorySnapshotManager must have close() methodz7
>assert %(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
}ÚhasattrÚmgr)r   rT   r   r   Ú__del__z4SyncMemorySnapshotManager must have __del__() methodÚ	__enter__Ú__exit__z.%(py7)s
{%(py7)s = %(py2)s(%(py3)s, %(py5)s)
})r   r   r   r   z2%(py14)s
{%(py14)s = %(py9)s(%(py10)s, %(py12)s)
})r   r!   Úpy12r   z8SyncMemorySnapshotManager should support context managerz
>assert %(py17)sÚpy17r   )z1%(py2)s
{%(py2)s = %(py0)s.h_process
} is %(py5)sr   r   r   Úmz0[PASS] test_task_opt_10_snapshot_cleanup passed.)Ú'src.assistant_tool.sync_memory_snapshotrV  rX  r$   r�   r&   r'   r(   r)   r*   r+   rÌ   Ú_format_boolopr"  Ú	h_processr%   r1   )rV  rY  r@   r3   r5   r2   rB   r�   rF   Ú@py_assert13r6   r?   Ú@py_format16Ú@py_format18r4   r_  s                   rH   Ú!test_task_opt_10_snapshot_cleanuprf  I  sŠ  € ØQÐQÐQÐQÐQÐQØ
#Ð
#¨Ð
1Ñ
1Ô
1€CØÐV�7�3˜Ñ Ô ÐVÐ ÐVÕVÔVÐ"VÑVÔVÐVÑVÐVÕVÔVÑVÔVÐVÐVÕVÔV�7ÑVÔVÐVÕVÔV�7ÑVÔVÐVÐVÐVÕVÔVÑVÔVÐVÐVÕVÔV�3ÑVÔVÐVÕVÔV�3Ñ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Ø!ÐZ�7�3˜	Ñ"Ô"ÐZÐ"ÐZÕZÔZÐ$ZÑZÔZÐZÑZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�7ÑZÔZÐZÕZÔZ�7ÑZÔZÐZÐZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�3ÑZÔZÐZÕZÔZ�3Ñ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ÐZÐZØ}Ð}˜Ð}�7�3˜Ñ$Ô$Ð}Ð$Ð}Ð$Ð}°jÐ}­°°jÑ)AÔ)AÐ}Ð)AÐ}Ð}Ñ}Ð}Ð}Õ}Ô}Ñ}Ô}Ð}Ð}Õ}Ô}�7Ñ}Ô}Ð}Õ}Ô}�7Ñ}Ô}Ð}Ð}Ð}Õ}Ô}Ñ}Ô}Ð}Ð}Õ}Ô}�3Ñ}Ô}Ð}Õ}Ô}�3Ñ}Ô}Ð}Ð}Õ}Ô}˜Ñ}Ô}Õ}Ô}Ð$Ñ}Ô}Ð}Ð}Ñ}Ð}Ð}×}Ò}Ð}Ñ}Ô}Ð}Ð$Ð}Ð}Ð}Õ}Ô}Ñ}Ô}Ð}Ð}Õ}Ô}­Ñ}Ô}Ð}Õ}Ô}­Ñ}Ô}Ð}Ð}Ð}Õ}Ô}Ñ}Ô}Ð}Ð}Õ}Ô}°Ñ}Ô}Ð}Õ}Ô}°Ñ}Ô}Ð}Ð}Õ}Ô}°jÑ}Ô}Õ}Ô}Ð)AÑ}Ô}Ð}Ð}Ñ}Ð}Ð}×}Ò}Ð}Ñ}Ô}Ð}Õ}Ô}Ð}Ð}Ñ}Ô}Ð}Ñ}Ð}Õ}Ô}ÐC}Ñ}Ô}Ð}Ñ}Ð}Ð}Ð}Ñ}Ð}Õ}Õ}Ô}Ð}Ñ}Ô}Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ø‡I‚I�K„K€KØŒ=Ð ˜DÐ ˆ=˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ=˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ3Ñ Ô Ð Õ Ô ˆ3Ñ Ô Ð Ð Õ Ô ˆ=Ñ Ô Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ð 
#Ð	" xÐ	0Ñ	0Ô	0ð °AØðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àŒ;Ð˜$Ðˆ;˜$ÐÐÐÐÕÔÐÐÐÐˆ;˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ;ÑÔÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝ	Ð
<Ñ=Ô=Ð=Ð=Ð=s   ÔT Ô T$Ô'T$c                  óL9  — ddl } ddlm}m}m}m}m}m} | j        } ||¦  «        }d}	||	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        |¦  «        t          j        |	¦  «        d	œz  }t          j        d
|                      |¦  «        › d�¦  «        dz   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        |¦  «        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}
}	| j        } ||¦  «        }d}	||	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        |¦  «        t          j        |	¦  «        d	œz  }t          j        d|                      |¦  «        › d�¦  «        dz   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        |¦  «        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}
}	| j        } ||¦  «        }d}	||	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        |¦  «        t          j        |	¦  «        d	œz  }t          j        d|                      |¦  «        › d�¦  «        dz   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        |¦  «        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}
}	|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}}
|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}}
|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}}
|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}}
|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}}
|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}}
|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}}
|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}}
|j        }|j        }d/}
||
k    }|s½t          j
        d|fd0||
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        }d}
||
k    }|s½t          j
        d|fd1||
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        }d!}
||
k    }|s½t          j
        d|fd2||
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        }d#}
||
k    }|s½t          j
        d|fd3||
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        }d%}
||
k    }|s½t          j
        d|fd4||
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        }d5}
||
k    }|s½t          j
        d|fd6||
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        }d'}
||
k    }|s½t          j
        d|fd7||
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        }d8}
||
k    }|s½t          j
        d|fd9||
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        }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}}
|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}}
|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}}
|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}}
|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}}
|j(        }|j        }d@}
||
k    }|s½t          j
        d|fdA||
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        }dB}
||
k    }|s½t          j
        d|fdC||
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        }dD}
||
k    }|s½t          j
        d|fdE||
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}}
tW          dF¦  «         dS )GuK   Kiá»ƒm tra tÃ­nh nháº¥t quÃ¡n nhá»‹ phÃ¢n 100% cá»§a toÃ n bá»™ struct IPC.r   N)ÚAreaTelemetryDataÚCommandPacketÚEntityTelemetryDataÚPlayerTelemetryDataÚSharedMemoryHeaderÚTelemetryPacketr  r   )zL%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.sizeof
}(%(py3)s)
} == %(py8)sÚctypesrl  r…   z SharedMemoryHeader != 64 bytes (ú)r†   r!   éT   rk  z!PlayerTelemetryData != 84 bytes (r8  rj  z!EntityTelemetryData != 88 bytes (é`   rh  zAreaTelemetryData != 96 bytes (r	  ri  zCommandPacket != 36 bytes (iÈ˜  rm  z TelemetryPacket != 39112 bytes ()zI%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.magic
}.offset
} == %(py7)srØ   rÙ   r   é   )zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.protocolVersion
}.offset
} == %(py7)sé   )zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.isRunning
}.offset
} == %(py7)sr  )zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.telemetrySequence
}.offset
} == %(py7)sr  )zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.commandSequence
}.offset
} == %(py7)sr  )zT%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.commandReadIndex
}.offset
} == %(py7)sr  )zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lastCoreHeartbeat
}.offset
} == %(py7)sé0   )zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lastAgentHeartbeat
}.offset
} == %(py7)sé8   )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.reserved
}.offset
} == %(py7)s)zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.commandId
}.offset
} == %(py7)s)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.opCode
}.offset
} == %(py7)s)zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.targetX
}.offset
} == %(py7)s)zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.targetY
}.offset
} == %(py7)srÒ   )zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.targetZ
}.offset
} == %(py7)s)zR%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.targetEntityId
}.offset
} == %(py7)sé   )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.priority
}.offset
} == %(py7)s)zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.timeoutMs
}.offset
} == %(py7)s)zN%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.snapshotId
}.offset
} == %(py7)s)zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.timestamp
}.offset
} == %(py7)s)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.player
}.offset
} == %(py7)srÓ   )zO%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.entityCount
}.offset
} == %(py7)sr5  )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.entities
}.offset
} == %(py7)sihX  )zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.terrainWalkability
}.offset
} == %(py7)sr9  )zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.area
}.offset
} == %(py7)sz<[PASS] test_binary_ipc_contract_and_struct_alignment passed.),rn  Úscripts.test_ipc_bridgerh  ri  rj  rk  rl  rm  Úsizeofr$   r%   r&   r'   r(   r)   r�   r*   r+   ÚmagicÚoffsetÚprotocolVersionÚ	isRunningÚtelemetrySequenceÚcommandSequenceÚcommandReadIndexÚlastCoreHeartbeatÚlastAgentHeartbeatÚreservedÚ	commandIdÚopCodeÚtargetXÚtargetYÚtargetZÚtargetEntityIdÚpriorityÚ	timeoutMsÚ
snapshotIdÚ	timestamprC  ÚentityCountÚentitiesÚterrainWalkabilityÚarear1   )rn  rh  ri  rj  rk  rl  rm  r2   r3   r9   rB   rC   rD   r4   r7   r6   r:   s                    rH   Ú-test_binary_ipc_contract_and_struct_alignmentr‘  X  s÷   € à€M€M€Mðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Œ=Ð{ˆ=ˆ=Ð+Ñ,Ô,Ð{°Ð{Ð,°Ò2Ð{Ð{Ñ{Õ{Ô{Ð{Ð{Ð{Ð{Ð,°Ð{Ñ{Ô{Ð{Õ{Ô{Ñ{Ô{Ð{Ð{Õ{Ô{ˆ6Ñ{Ô{Ð{Õ{Ô{ˆ6Ñ{Ô{Ð{Ð{Õ{Ô{ˆ=Ñ{Ô{Ð{Õ{Ô{Ñ{Ô{Ð{Ð{Õ{Ô{Ð+Ñ{Ô{Ð{Õ{Ô{Ð+Ñ{Ô{Ð{Ð{Õ{Ô{Ð,Ñ{Ô{Õ{Ô{°Ñ{Ô{Ð{Ð{Ñ{Ð{Õ{Ô{Ð4{ÐW]×WdÒWdÐewÑWxÔWxÐ4{Ð4{Ð4{Ñ{Ô{Ð{Ñ{Ð{Ð{Ð{Ñ{Ð{Õ{Õ{Ô{Ð{Ñ{Ô{Ñ{Ô{Ð{Ð{Ð{Ð{Ð{Ð{Ð{Ð{Ð{ØŒ=Ð~ˆ=ˆ=Ð,Ñ-Ô-Ð~°Ð~Ð-°Ò3Ð~Ð~Ñ~Õ~Ô~Ð~Ð~Ð~Ð~Ð-°Ð~Ñ~Ô~Ð~Õ~Ô~Ñ~Ô~Ð~Ð~Õ~Ô~ˆ6Ñ~Ô~Ð~Õ~Ô~ˆ6Ñ~Ô~Ð~Ð~Õ~Ô~ˆ=Ñ~Ô~Ð~Õ~Ô~Ñ~Ô~Ð~Ð~Õ~Ô~Ð,Ñ~Ô~Ð~Õ~Ô~Ð,Ñ~Ô~Ð~Ð~Õ~Ô~Ð-Ñ~Ô~Õ~Ô~°Ñ~Ô~Ð~Ð~Ñ~Ð~Õ~Ô~Ð5~ÐY_×YfÒYfÐgzÑY{ÔY{Ð5~Ð5~Ð5~Ñ~Ô~Ð~Ñ~Ð~Ð~Ð~Ñ~Ð~Õ~Õ~Ô~Ð~Ñ~Ô~Ñ~Ô~Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~ØŒ=Ð~ˆ=ˆ=Ð,Ñ-Ô-Ð~°Ð~Ð-°Ò3Ð~Ð~Ñ~Õ~Ô~Ð~Ð~Ð~Ð~Ð-°Ð~Ñ~Ô~Ð~Õ~Ô~Ñ~Ô~Ð~Ð~Õ~Ô~ˆ6Ñ~Ô~Ð~Õ~Ô~ˆ6Ñ~Ô~Ð~Ð~Õ~Ô~ˆ=Ñ~Ô~Ð~Õ~Ô~Ñ~Ô~Ð~Ð~Õ~Ô~Ð,Ñ~Ô~Ð~Õ~Ô~Ð,Ñ~Ô~Ð~Ð~Õ~Ô~Ð-Ñ~Ô~Õ~Ô~°Ñ~Ô~Ð~Ð~Ñ~Ð~Õ~Ô~Ð5~ÐY_×YfÒYfÐgzÑY{ÔY{Ð5~Ð5~Ð5~Ñ~Ô~Ð~Ñ~Ð~Ð~Ð~Ñ~Ð~Õ~Õ~Ô~Ð~Ñ~Ô~Ñ~Ô~Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~ØŒ=Ðxˆ=ˆ=Ð*Ñ+Ô+Ðx¨rÐxÐ+¨rÒ1ÐxÐxÑxÕxÔxÐxÐxÐxÐxÐ+¨rÐxÑxÔxÐxÕxÔxÑxÔxÐxÐxÕxÔxˆ6ÑxÔxÐxÕxÔxˆ6ÑxÔxÐxÐxÕxÔxˆ=ÑxÔxÐxÕxÔxÑxÔxÐxÐxÕxÔxÐ*ÑxÔxÐxÕxÔxÐ*ÑxÔxÐxÐxÕxÔxÐ+ÑxÔxÕxÔx¨rÑxÔxÐxÐxÑxÐxÕxÔxÐ3xÐU[×UbÒUbÐctÑUuÔUuÐ3xÐ3xÐ3xÑxÔxÐxÑxÐxÐxÐxÑxÐxÕxÕxÔxÐxÑxÔxÑxÔxÐxÐxÐxÐxÐxÐxÐxÐxÐxØŒ=Ðlˆ=ˆ=˜Ñ'Ô'Ðl¨2ÐlÐ'¨2Ò-ÐlÐlÑlÕlÔlÐlÐlÐlÐlÐ'¨2ÐlÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔlˆ6ÑlÔlÐlÕlÔlˆ6ÑlÔlÐlÐlÕlÔlˆ=ÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔl˜ÑlÔlÐlÕlÔl˜ÑlÔlÐlÐlÕlÔlÐ'ÑlÔlÕlÔl¨2ÑlÔlÐlÐlÑlÐlÕlÔlÐ/lÈVÏ]Ê]Ð[hÑMiÔMiÐ/lÐ/lÐ/lÑlÔlÐlÑlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlÐlÐlØŒ=Ðxˆ=ˆ=˜Ñ)Ô)Ðx¨UÐxÐ)¨UÒ2ÐxÐxÑxÕxÔxÐxÐxÐxÐxÐ)¨UÐxÑxÔxÐxÕxÔxÑxÔxÐxÐxÕxÔxˆ6ÑxÔxÐxÕxÔxˆ6ÑxÔxÐxÐxÕxÔxˆ=ÑxÔxÐxÕxÔxÑxÔxÐxÐxÕxÔx˜ÑxÔxÐxÕxÔx˜ÑxÔxÐxÐxÕxÔxÐ)ÑxÔxÕxÔx¨UÑxÔxÐxÐxÑxÐxÕxÔxÐ4xÐW]×WdÒWdÐetÑWuÔWuÐ4xÐ4xÐ4xÑxÔxÐxÑxÐxÐxÐxÑxÐxÕxÕxÔxÐxÑxÔxÑxÔxÐxÐxÐxÐxÐxÐxÐxÐxÐxð Ô#Ð/Ð#Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Ð/Õ/Ô/ÐÑ/Ô/Ð/Ð/Õ/Ô/Ð#Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔ-Ð9Ð-Ô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ÐÑ9Ô9Ð9Õ9Ô9ÐÑ9Ô9Ð9Ð9Õ9Ô9Ð-Ñ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ØÔ'Ð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Õ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ØÔ/Ð<Ð/Ô6Ð<¸"Ð<Ð6¸"Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð6¸"Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ÐÑ<Ô<Ð<Õ<Ô<ÐÑ<Ô<Ð<Ð<Õ<Ô<Ð/Ñ<Ô<Õ<Ô<Ð6Ñ<Ô<Õ<Ô<¸"Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ-Ð:Ð-Ô4Ð:¸Ð:Ð4¸Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð4¸Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ÐÑ:Ô:Ð:Õ:Ô:ÐÑ:Ô:Ð:Ð:Õ:Ô:Ð-Ñ:Ô:Õ:Ô:Ð4Ñ:Ô:Õ:Ô:¸Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ.Ð;Ð.Ô5Ð;¸Ð;Ð5¸Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð5¸Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ÐÑ;Ô;Ð;Õ;Ô;ÐÑ;Ô;Ð;Ð;Õ;Ô;Ð.Ñ;Ô;Õ;Ô;Ð5Ñ;Ô;Õ;Ô;¸Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔ/Ð<Ð/Ô6Ð<¸"Ð<Ð6¸"Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð6¸"Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ÐÑ<Ô<Ð<Õ<Ô<ÐÑ<Ô<Ð<Ð<Õ<Ô<Ð/Ñ<Ô<Õ<Ô<Ð6Ñ<Ô<Õ<Ô<¸"Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ0Ð=Ð0Ô7Ð=¸2Ð=Ð7¸2Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð7¸2Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ÐÑ=Ô=Ð=Õ=Ô=ÐÑ=Ô=Ð=Ð=Õ=Ô=Ð0Ñ=Ô=Õ=Ô=Ð7Ñ=Ô=Õ=Ô=¸2Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ&Ð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Õ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ð Ô"Ð.Ð"Ô)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ=Ñ.Ô.Ð.Õ.Ô.ˆ=Ñ.Ô.Ð.Ð.Õ.Ô.Ð"Ñ.Ô.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔÐ+ÐÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ=Ñ+Ô+Ð+Õ+Ô+ˆ=Ñ+Ô+Ð+Ð+Õ+Ô+ÐÑ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ Ð-Ð Ô'Ð-¨2Ð-Ð'¨2Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð'¨2Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ=Ñ-Ô-Ð-Õ-Ô-ˆ=Ñ-Ô-Ð-Ð-Õ-Ô-Ð Ñ-Ô-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-¨2Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ Ð-Ð Ô'Ð-¨2Ð-Ð'¨2Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð'¨2Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ=Ñ-Ô-Ð-Õ-Ô-ˆ=Ñ-Ô-Ð-Ð-Õ-Ô-Ð Ñ-Ô-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-¨2Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ Ð-Ð Ô'Ð-¨2Ð-Ð'¨2Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð'¨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Õ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ØÔ!Ð.Ð!Ô(Ð.¨BÐ.Ð(¨BÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð(¨BÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ=Ñ.Ô.Ð.Õ.Ô.ˆ=Ñ.Ô.Ð.Ð.Õ.Ô.Ð!Ñ.Ô.Õ.Ô.Ð(Ñ.Ô.Õ.Ô.¨BÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ"Ð/Ð"Ô)Ð/¨RÐ/Ð)¨RÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð)¨RÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ=Ñ/Ô/Ð/Õ/Ô/ˆ=Ñ/Ô/Ð/Ð/Õ/Ô/Ð"Ñ/Ô/Õ/Ô/Ð)Ñ/Ô/Õ/Ô/¨RÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð Ô%Ð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Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ$Ð0Ð$Ô+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ?Ñ0Ô0Ð0Õ0Ô0ˆ?Ñ0Ô0Ð0Ð0Õ0Ô0Ð$Ñ0Ô0Õ0Ô0Ð+Ñ0Ô0Õ0Ô0¨qÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ!Ð.Ð!Ô(Ð.¨BÐ.Ð(¨BÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð(¨BÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ?Ñ.Ô.Ð.Õ.Ô.ˆ?Ñ.Ô.Ð.Ð.Õ.Ô.Ð!Ñ.Ô.Õ.Ô.Ð(Ñ.Ô.Õ.Ô.¨BÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ&Ð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Õ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ØÔ#Ð1Ð#Ô*Ð1¨cÐ1Ð*¨cÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð*¨cÐ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¨cÑ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ØÔ-Ð=Ð-Ô4Ð=¸Ð=Ð4¸Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð4¸Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ?Ñ=Ô=Ð=Õ=Ô=ˆ?Ñ=Ô=Ð=Ð=Õ=Ô=Ð-Ñ=Ô=Õ=Ô=Ð4Ñ=Ô=Õ=Ô=¸Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐ/ÐÔ&Ð/¨%Ð/Ð&¨%Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð&¨%Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ?Ñ/Ô/Ð/Õ/Ô/ˆ?Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Õ/Ô/Ð&Ñ/Ô/Õ/Ô/¨%Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/å	Ð
HÑIÔIÐIÐIÐIrJ   c                  óð  — ddl m} m}  | d |d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}||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          d¦  «         dS )uf   Kiá»ƒm tra cÃ¡c trÆ°á»�ng monsters_alive_total vÃ  entities_monster_count trÃªn CoreTelemetrySnapshot.r   )ÚCoreTelemetrySnapshotÚPlayerTelemetryTrÓ   )rE  rÎ   rr  é   )r@  rC  rG  Úmonsters_alive_totalÚentities_monster_countr   r=  r;  r   r   r   N)z<%(py2)s
{%(py2)s = %(py0)s.monsters_alive_total
} == %(py5)s)z>%(py2)s
{%(py2)s = %(py0)s.entities_monster_count
} == %(py5)sz5[PASS] test_telemetry_snapshot_monster_fields passed.)rÚ   r“  r”  rG  r$   r%   r&   r'   r(   r)   r*   r+   r–  r—  r1   )r“  r”  r;  r2   r3   r4   r5   r6   s           rH   Ú&test_telemetry_snapshot_monster_fieldsr˜  �  s	  € àYÐYÐYÐYÐYÐYÐYÐYà Ð ØØˆ¨#°cÐ:Ñ:Ô:ØØØ ðñ ô €Dð ÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ4Ñ#Ô#Ð#Õ#Ô#ˆ4Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔ$Ð*¨Ð*Ð$¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð$¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ4Ñ*Ô*Ð*Õ*Ô*ˆ4Ñ*Ô*Ð*Ð*Õ*Ô*Ð$Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ4Ñ+Ô+Ð+Õ+Ô+ˆ4Ñ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ý	Ð
AÑBÔBÐBÐBÐBrJ   Ú__main__u3   
âœ… Táº¤T Cáº¢ UNIT TESTS Ä�á»€U VÆ¯á»¢T QUA 100%!))Ú__doc__Úbuiltinsr&   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter$   rœ   ÚsysrX  Ústdoutr   r�   ÚinsertÚabspathrž   ÚdirnameÚ__file__Úsrc.assistant_tool.gold_trackerr   Úsrc.assistant_tool.log_watcherr   Ú!src.assistant_tool.market_advisorr	   rI   rj   r•   r¤   rµ   rÅ   rà   ró   r  r,  rL  rT  rf  r‘  r˜  Ú__name__r1   © rJ   rH   ú<module>rª     sä  ððð ð € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
à
€7ˆ3Œ:�}Ñ%Ô%ð -Ø„J×Ò GÐÑ,Ô,Ð,ð „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ4Ñ#PÔ#PÑQÔQÑ RÔ RÐ Rà 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ð.ð .ð .ð"0ð 0ð 0ð&,5ð ,5ð ,5ð^Gð Gð Gð06ð 6ð 6ð00ð 0ð 0ð1ð 1ð 1ð"-ð -ð -ð(.ð .ð .ð)<ð )<ð )<ðV:<ð :<ð :<ðxCð Cð Cð>ð >ð >ð3Jð 3Jð 3JðjCð Cð Cð  ˆzÒÐØÐÑÔÐØÐÑÔÐØÐÑÔÐØ.Ð.Ñ0Ô0Ð0ØÐÑÔÐØÐÑÔÐØÐÑÔÐØ#Ð#Ñ%Ô%Ð%Ø#Ð#Ñ%Ô%Ð%Ø*Ð*Ñ,Ô,Ð,Ø%Ð%Ñ'Ô'Ð'Ø1Ð1Ñ3Ô3Ð3ØÐÑÔÐØÐÑÔÐØ*Ð*Ñ,Ô,Ð,Ø	€EÐ
@ÑAÔAÐAÐAÐAð! ÐrJ   