§
    D¿j�)  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZ ej                             ej                             ej                             e¦  «        dd¦  «        ¦  «        Zd„ Zd„ Zd	„ Zd
„ ZdS )a  
Empirical Challenger Test Suite for Milestone 1: Game Design Matrix & Core Contracts.
Author: Challenger 2 (Empirical Challenger)
Validates Protobuf schemas (party, social, portal), SQLite foreign key integrity,
and database re-seeding idempotency under adversarial conditions.
é    )ÚannotationsN)ÚFileDescriptorSet)ÚGameDesignMatrixServicez..c            
     ó~  — t           j                             t          d¦  «        } t           j                             | d¦  «        t           j                             | d¦  «        t           j                             | d¦  «        g}|D ].}t           j                             |¦  «        sJ d|› �¦   «         ‚Œ/t          j        dd¬¦  «        5 }|j        }d	d	d	¦  «         n# 1 swxY w Y   	 t          j	        d
dd| › �d|› �g|z   }t          j        |dd¬¦  «        }|j        dk    sJ d|j        › �¦   «         ‚t          |d¦  «        5 }t          j        |                     ¦   «         ¦  «        }d	d	d	¦  «         n# 1 swxY w Y   t%          |j        ¦  «        dk    sJ dt%          |j        ¦  «        › �¦   «         ‚|j        D �]†}|j        dk    sJ |j        › d�¦   «         ‚|j        D ]»}	t%          |	j        ¦  «        dk    sJ d|	j        › d�¦   «         ‚|	j        d         }
|
j        dk    s#J d|	j        › d|
j        › d|
j        › d�¦   «         ‚d„ |	j        D ¦   «         }t%          |¦  «        t%          t1          |¦  «        ¦  «        k    sJ d|	j        › d|› �¦   «         ‚Œ¼|j        D ]›}d„ |j        D ¦   «         }t%          |¦  «        t%          t1          |¦  «        ¦  «        k    sJ d|j        › d |› �¦   «         ‚|D ]C}|d!k    sJ d|j        › d"|› d#�¦   «         ‚d$|cxk    rd%k    rn Œ.J d|j        › d&|› �¦   «         ‚ŒDŒœ�Œˆ	 t           j                             |¦  «        rt          j        |¦  «         d	S d	S # t           j                             |¦  «        rt          j        |¦  «         w w xY w)'zRCompiles proto/party.proto, proto/social.proto, and proto/portal.proto via protoc.Úprotoúparty.protoúsocial.protoúportal.protozProto file not found: z.descF)ÚsuffixÚdeleteNú-múgrpc_tools.protocú-Iz--descriptor_set_out=T©Úcapture_outputÚtextr   zprotoc failed: Úrbé   z!Expected 3 file descriptors, got Úproto3z is not proto3zEnum z has no valuesz first value 'z' has number z != 0c                ó   — g | ]	}|j         ‘Œ
S © ©Únumber)Ú.0Úvs     ú@C:\Projects\FreeExile\tests\unit\test_challenger_m1_contracts.pyú
<listcomp>z@test_protobuf_schemas_syntax_and_compilation.<locals>.<listcomp><   s   € Ð>Ð>Ð>¨˜AœHÐ>Ð>Ð>ó    z# contains duplicate value numbers: c                ó   — g | ]	}|j         ‘Œ
S r   r   )r   Úflds     r   r   z@test_protobuf_schemas_syntax_and_compilation.<locals>.<listcomp>C   s   € ÐAÐAÐA¨3˜CœJÐAÐAÐAr   zMessage z  contains duplicate field tags: é   z has invalid tag z < 1i8J  iN  z% uses reserved protobuf internal tag )ÚosÚpathÚjoinÚPROJECT_ROOTÚexistsÚtempfileÚNamedTemporaryFileÚnameÚsysÚ
executableÚ
subprocessÚrunÚ
returncodeÚstderrÚopenr   Ú
FromStringÚreadÚlenÚfileÚsyntaxÚ	enum_typeÚvaluer   ÚsetÚmessage_typeÚfieldÚremove)Ú	proto_dirÚproto_filesÚpÚfÚ	desc_pathÚcmdÚresÚfdsÚf_descr6   Ú	first_valÚval_numsÚmsg_typeÚtag_numsÚtags                  r   Ú,test_protobuf_schemas_syntax_and_compilationrJ      s´  € å”—’�\¨7Ñ3Ô3€Iå
Œ�Š�Y Ñ.Ô.Ý
Œ�Š�Y Ñ/Ô/Ý
Œ�Š�Y Ñ/Ô/ð€Kð
 ð ?ð ?ˆÝŒw�~Š~˜aÑ Ô Ð>Ð>Ð">¸1Ð">Ð">Ñ>Ô>Ð Ð>å	Ô	$¨G¸EÐ	BÑ	BÔ	Bð ÀaØ”Fˆ	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð*!åŒN˜DÐ"5Ø�ÐÐØ/ IÐ/Ð/ð
ð ñ	ˆõ
 Œn˜S°¸DÐAÑAÔAˆØŒ~ Ò"Ð"Ð"Ð$B°c´jÐ$BÐ$BÑ"Ô"Ð"å�)˜TÑ"Ô"ð 	9 aÝ#Ô.¨q¯vªv©x¬xÑ8Ô8ˆCð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9õ �3”8‰}Œ} Ò!Ð!Ð!Ð#VÅsÈ3Ì8Á}Ä}Ð#VÐ#VÑ!Ô!Ð!à”hð 	ñ 	ˆFØ”= HÒ,Ð,Ð,°´Ð.LÐ.LÐ.LÑ,Ô,Ð,ð $Ô-ð 	ð 	�	Ý˜9œ?Ñ+Ô+¨aÒ/Ð/Ð/Ð1W¸¼Ð1WÐ1WÐ1WÑ/Ô/Ð/Ø%œO¨AÔ.�	Ø Ô'¨1Ò,Ð,Ð,Øn˜IœNÐnÐn¸)¼.ÐnÐnÐW`ÔWgÐnÐnÐnñ -Ô,Ð,ð ?Ð>¨i¬oÐ>Ñ>Ô>�Ý˜8‘}”}­­C°©M¬MÑ(:Ô(:Ò:Ð:Ð:ØY˜IœNÐYÐYÈxÐYÐYñ ;Ô:Ð:Ð:ð
 #Ô/ð 	ð 	�ØAÐA°(´.ÐAÑAÔA�Ý˜8‘}”}­­C°©M¬MÑ(:Ô(:Ò:Ð:Ð:ØX˜xœ}ÐXÐXÈhÐXÐXñ ;Ô:Ð:ð $ð ð �CØ !š8˜8˜8Ð%Y°´Ð%YÐ%YÐPSÐ%YÐ%YÐ%Y™8œ8˜8Ø %¨Ð 5Ð 5Ò 5Ð 5°Ò 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø\ 8¤=Ð\Ð\ÐWZÐ\Ð\ñ !6Ô 5Ð6Ð 5ðñ	ð!	õ6 Œ7�>Š>˜)Ñ$Ô$ð 	!ÝŒI�iÑ Ô Ð Ð Ð ð	!ð 	!ø�2Œ7�>Š>˜)Ñ$Ô$ð 	!ÝŒI�iÑ Ô Ð Ð ð	!øøøsD   ÃC Ã C$Ã'C$Ã,AN Å
'E=Å1N Å=FÆN ÆFÆG	N Î6N<c                 óp  — t           j                             t          d¦  «        } t	          j        ¦   «         5 }t          j        ddd| › �d|› �t           j                             | d¦  «        t           j                             | d¦  «        t           j                             | d¦  «        g}t          j	        |d	d	¬
¦  «        }|j
        dk    sJ d|j        › �¦   «         ‚t          j                             d|¦  «         	 ddl}ddl}ddl}|                     dd|j        j        d|                     ddddd¬¦  «        ¬¦  «        }|                     ¦   «         }|                     |                     ¦   «         ¦  «         |j        dk    sJ ‚|j        |j        j        k    sJ ‚|j        j        dk    sJ ‚|                     ddddd|j        j        |j        j        d¬¦  «        }	|                     ¦   «         }
|
                     |	                     ¦   «         ¦  «         |
j        dk    sJ ‚|
j         dk    sJ ‚|
j!        |j        j        k    sJ ‚| "                    dddd d!d"d#d#d$d	¬%¦
  «
        }| "                    ¦   «         }|                     |                     ¦   «         ¦  «         |j#        d$k    sJ ‚|j$        d k    sJ ‚|j%        d	u sJ ‚	 t          j         &                    |¦  «         n$# t          j         &                    |¦  «         w xY w	 ddd¦  «         dS # 1 swxY w Y   dS )&zJGenerates Python stubs and validates binary serialization/deserialization.r   r   r   r   z--python_out=r   r	   r
   Tr   r   zPython stub generation failed: NÚpty_test_123Úusr_leader_01g      @r   g       @g      N@g      Y@)Ú
party_sizeÚnearby_members_countÚmonster_hp_multiplierÚexp_bonus_pctÚitem_quantity_bonus_pct)Úparty_idÚ	leader_idÚallocation_modeÚshort_allocation_timeout_secÚscaling_statsÚ	acc_alphaÚacc_betau   Chiáº¿n LangÚchar_feral_berserkeré-   u   Ä�á»“ng Ä‘á»™i farm map)Ú
account_idÚfriend_account_idÚfriend_nameÚfriend_classÚfriend_levelÚpresence_statusÚstatusÚfriend_noteÚportal_link_789Úzone_tang_kiem_nhaig      ^@g     Du@Úzone_player_hideoutg        é   )
Ú	portal_idÚowner_idÚwilderness_zone_idÚwilderness_xÚwilderness_yÚsanctuary_zone_idÚsanctuary_xÚsanctuary_yÚremaining_chargesÚis_open)'r"   r#   r$   r%   r'   ÚTemporaryDirectoryr*   r+   r,   r-   r.   r/   ÚinsertÚ	party_pb2Ú
social_pb2Ú
portal_pb2Ú	PartyInfoÚLootAllocationModeÚSHORTÚPartyScalingStatsÚParseFromStringÚSerializeToStringrS   rU   rW   rP   ÚFriendEntryÚOnlinePresenceStatusÚSTATUS_ONLINEÚFriendRelationStatusÚACCEPTEDr^   r`   ra   ÚTownPortalLinkrp   rk   rq   r;   )r<   ÚtmpdirrA   rB   rt   ru   rv   Úp_origÚ	p_decodedÚf_origÚ	f_decodedÚportal_origÚportal_decodeds                r   Ú%test_protobuf_serialization_roundtriprŠ   Q   sÚ  € å”—’�\¨7Ñ3Ô3€IÝ	Ô	$Ñ	&Ô	&ð J$¨&åŒN˜DÐ"5Ø�ÐÐØ$˜FÐ$Ð$ÝŒG�LŠL˜ MÑ2Ô2ÝŒG�LŠL˜ NÑ3Ô3ÝŒG�LŠL˜ NÑ3Ô3ð
ˆõ Œn˜S°¸DÐAÑAÔAˆØŒ~ Ò"Ð"Ð"Ð$RÀcÄjÐ$RÐ$RÑ"Ô"Ð"åŒ�Š˜˜6Ñ"Ô"Ð"ð=	$ØÐÐÐØÐÐÐØÐÐÐð ×(Ò(Ø'Ø)Ø )Ô <Ô BØ-0Ø'×9Ò9Ø Ø)*Ø*-Ø"&Ø,1ð :ñ ô ð )ñ ô ˆFð "×+Ò+Ñ-Ô-ˆIØ×%Ò% f×&>Ò&>Ñ&@Ô&@ÑAÔAÐAØÔ%¨Ò7Ð7Ð7Ð7ØÔ,°	Ô0LÔ0RÒRÐRÐRÐRØÔ*Ô@ÀCÒGÐGÐGÐGð  ×+Ò+Ø&Ø",Ø*Ø3ØØ *Ô ?Ô MØ!Ô6Ô?Ø5ð ,ñ 	ô 	ˆFð #×.Ò.Ñ0Ô0ˆIØ×%Ò% f×&>Ò&>Ñ&@Ô&@ÑAÔAÐAØÔ(¨NÒ:Ð:Ð:Ð:ØÔ)¨RÒ/Ð/Ð/Ð/ØÔ,°
Ô0OÔ0]Ò]Ð]Ð]Ð]ð %×3Ò3Ø+Ø$Ø#8Ø"Ø#Ø"7ØØØ"#Øð 4ñ ô ˆKð (×6Ò6Ñ8Ô8ˆNØ×*Ò*¨;×+HÒ+HÑ+JÔ+JÑKÔKÐKØ!Ô3°qÒ8Ð8Ð8Ð8Ø!Ô.°%Ò7Ð7Ð7Ð7Ø!Ô)¨TÐ1Ð1Ð1Ð1Ð1åŒH�OŠO˜FÑ#Ô#Ð#Ð#ø�CŒH�OŠO˜FÑ#Ô#Ð#Ð#øøøÐ#ðUJ$ð J$ð J$ñ J$ô J$ð J$ð J$ð J$ð J$ð J$ð J$ð J$øøøð J$ð J$ð J$ð J$ð J$ð J$s+   ¹C	L+ÄGK9Ë L+Ë9!LÌL+Ì+L/Ì2L/c                 óÄ  — t          ¦   «         } 	 t          d¦  «        D ]Ù}|                      d¬¦  «        }|d         dk    sJ ‚|d         dk    sJ ‚|d         d	k    sJ ‚|d
         d	k    sJ ‚|                      ¦   «         5 }|                     ¦   «                              d¦  «                             ¦   «         }t          |¦  «        dk    sJ d|› d|› �¦   «         ‚	 ddd¦  «         n# 1 swxY w Y   ŒÚ|                      ¦   «         }|j	        du sJ ‚t          |j
        ¦  «        dk    sJ ‚	 |                      ¦   «          dS # |                      ¦   «          w xY w)zIValidates PRAGMA foreign_key_check and successive re-seeding idempotency.é   T©ÚforceÚparty_scaling_matrixrg   Úloot_allocation_modesr   Úteleport_configsé   Úportal_quarantine_ruleszPRAGMA foreign_key_checkr   z
Iteration z failed FK check: N)r   ÚrangeÚseed_canonical_dataÚ_get_connectionÚcursorÚexecuteÚfetchallr3   Úvalidate_game_design_integrityÚis_validÚ
violationsÚclose)ÚserviceÚiÚstatsÚconnÚfk_violationsÚreports         r   Ú9test_sqlite_foreign_key_integrity_and_rebuild_idempotencyr¤   ¡   sÖ  € å%Ñ'Ô'€Gðå�q‘”ð 		bð 		bˆAØ×/Ò/°dÐ/Ñ;Ô;ˆEØÐ/Ô0°AÒ5Ð5Ð5Ð5ØÐ0Ô1°QÒ6Ð6Ð6Ð6ØÐ+Ô,°Ò1Ð1Ð1Ð1ØÐ2Ô3°qÒ8Ð8Ð8Ð8à×(Ò(Ñ*Ô*ð b¨dØ $§¢¡¤× 5Ò 5Ð6PÑ QÔ Q× ZÒ ZÑ \Ô \�Ý˜=Ñ)Ô)¨QÒ.Ð.Ð.Ð0a¸QÐ0aÐ0aÐR_Ð0aÐ0aÑ.Ô.Ð.Ð.ðbð bð bñ bô bð bð bð bð bð bð bøøøð bð bð bð bøð
 ×7Ò7Ñ9Ô9ˆØŒ $Ð&Ð&Ð&Ð&Ý�6Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*à�Š‰Œˆˆˆøˆ�Š‰Œˆˆøøøs1   �A3E	 ÂAC-Ã!E	 Ã-C1	Ã1E	 Ã4C1	Ã5=E	 Å	Ec                 ó¦  — t          d¬¦  «        } |                      d¬¦  «         |                      ¦   «         5 }|                     ¦   «         }dD ]O}t	          j        t          j        ¦  «        5  |                     d|f¦  «         ddd¦  «         n# 1 swxY w Y   ŒPt	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d	¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d
¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |  	                    ¦   «          dS )zNAdversarially attempts invalid insertions to test CHECK constraint boundaries.z:memory:)Údb_pathTr�   )r   é   éûÿÿÿzIINSERT INTO party_scaling_matrix VALUES (?, 1.0, 0, 0, 0, 0, 15.0, 'bad')NzLINSERT INTO party_scaling_matrix VALUES (1, 0.9, 0, 0, 0, 0, 15.0, 'bad hp')zOINSERT INTO party_scaling_matrix VALUES (1, 1.0, -10, 0, 0, 0, 15.0, 'bad exp')zOINSERT INTO party_scaling_matrix VALUES (1, 1.0, 0, 0, 0, 0, 0.0, 'bad radius')zDINSERT INTO loot_allocation_modes VALUES ('X', 'X', -1.0, 0, 'desc')zCINSERT INTO loot_allocation_modes VALUES ('X', 'X', 0.0, 2, 'desc')zCINSERT INTO teleport_configs VALUES ('X', -0.5, 10.0, 1, 1, 'desc')zBINSERT INTO teleport_configs VALUES ('X', 3.5, -1.0, 1, 1, 'desc')zBINSERT INTO teleport_configs VALUES ('X', 3.5, 10.0, 5, 1, 'desc')zIINSERT INTO portal_quarantine_rules VALUES ('X', 'WILD', 2, 1, 6, 'desc')zJINSERT INTO portal_quarantine_rules VALUES ('X', 'WILD', 1, 1, -1, 'desc')z°INSERT INTO zones (zone_id, act_id, name, zone_type, environment, min_level, max_level) VALUES ('z_phantom', 'ACT_NON_EXISTENT', 'Phantom Zone', 'WILDERNESS', 'OUTDOOR', 1, 10)z¡INSERT INTO npcs (npc_id, name, title, role, zone_id, x, y, dialogue_tree_id) VALUES ('npc_ghost', 'Ghost', 'Phantom', 'ROLE', 'ZONE_NON_EXISTENT', 0, 0, 'tree'))
r   r•   r–   r—   ÚpytestÚraisesÚsqlite3ÚIntegrityErrorr˜   r�   )rž   r¡   ÚcurÚbad_sizes       r   Ú/test_sqlite_table_check_constraints_adversarialr¯   ¹   sÓ  € å%¨jÐ9Ñ9Ô9€GØ×Ò dÐÑ+Ô+Ð+à	×	 Ò	 Ñ	"Ô	"ð / dØ�kŠk‰mŒmˆð #ð 	ð 	ˆHÝ”�wÔ5Ñ6Ô6ð ð Ø—’Ø_Ø�Kñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øõ
 Œ]�7Ô1Ñ2Ô2ð 	hð 	hØ�KŠKÐfÑgÔgÐgð	hð 	hð 	hñ 	hô 	hð 	hð 	hð 	hð 	hð 	hð 	høøøð 	hð 	hð 	hð 	håŒ]�7Ô1Ñ2Ô2ð 	kð 	kØ�KŠKÐiÑjÔjÐjð	kð 	kð 	kñ 	kô 	kð 	kð 	kð 	kð 	kð 	kð 	køøøð 	kð 	kð 	kð 	kåŒ]�7Ô1Ñ2Ô2ð 	kð 	kØ�KŠKÐiÑjÔjÐjð	kð 	kð 	kñ 	kô 	kð 	kð 	kð 	kð 	kð 	kð 	køøøð 	kð 	kð 	kð 	kõ Œ]�7Ô1Ñ2Ô2ð 	`ð 	`Ø�KŠKÐ^Ñ_Ô_Ð_ð	`ð 	`ð 	`ñ 	`ô 	`ð 	`ð 	`ð 	`ð 	`ð 	`ð 	`øøøð 	`ð 	`ð 	`ð 	`åŒ]�7Ô1Ñ2Ô2ð 	_ð 	_Ø�KŠKÐ]Ñ^Ô^Ð^ð	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_õ Œ]�7Ô1Ñ2Ô2ð 	_ð 	_Ø�KŠKÐ]Ñ^Ô^Ð^ð	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_åŒ]�7Ô1Ñ2Ô2ð 	^ð 	^Ø�KŠKÐ\Ñ]Ô]Ð]ð	^ð 	^ð 	^ñ 	^ô 	^ð 	^ð 	^ð 	^ð 	^ð 	^ð 	^øøøð 	^ð 	^ð 	^ð 	^åŒ]�7Ô1Ñ2Ô2ð 	^ð 	^Ø�KŠKÐ\Ñ]Ô]Ð]ð	^ð 	^ð 	^ñ 	^ô 	^ð 	^ð 	^ð 	^ð 	^ð 	^ð 	^øøøð 	^ð 	^ð 	^ð 	^õ Œ]�7Ô1Ñ2Ô2ð 	eð 	eØ�KŠKÐcÑdÔdÐdð	eð 	eð 	eñ 	eô 	eð 	eð 	eð 	eð 	eð 	eð 	eøøøð 	eð 	eð 	eð 	eåŒ]�7Ô1Ñ2Ô2ð 	fð 	fØ�KŠKÐdÑeÔeÐeð	fð 	fð 	fñ 	fô 	fð 	fð 	fð 	fð 	fð 	fð 	føøøð 	fð 	fð 	fð 	fõ Œ]�7Ô1Ñ2Ô2ð 	ð 	Ø�KŠKðkñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 Œ]�7Ô1Ñ2Ô2ð 	ð 	Ø�KŠKðfñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðW/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ðb ‡M‚M�O„O€O€O€Oså  »7P2Á2BÂ
P2ÂBÂP2ÂBÂ"P2Ã C"ÃP2Ã"C&	Ã&P2Ã)C&	Ã*!P2ÄD-Ä!P2Ä-D1	Ä1P2Ä4D1	Ä5!P2ÅE8Å,P2Å8E<	Å<P2Å?E<	Æ !P2Æ!GÆ7P2ÇG	ÇP2Ç
G	Ç!P2Ç,HÈP2ÈH	ÈP2ÈH	È!P2È7IÉP2ÉI	ÉP2É I	É!!P2ÊJ$ÊP2Ê$J(	Ê(P2Ê+J(	Ê,!P2ËK/Ë#P2Ë/K3	Ë3P2Ë6K3	Ë7!P2ÌL:Ì.P2Ì:L>	Ì>P2ÍL>	Í!P2Í#NÍ9P2ÎN		Î	P2ÎN		Î!P2Î.OÏP2ÏO	ÏP2ÏO	Ï!P2Ï9PÐP2ÐP	ÐP2Ð"P	Ð#P2Ð2P6Ð9P6)Ú__doc__Ú
__future__r   r"   r,   r*   r'   r«   r©   Úgoogle.protobuf.descriptor_pb2r   Ú'server.world.game_design_matrix_servicer   r#   Úabspathr$   ÚdirnameÚ__file__r%   rJ   rŠ   r¤   r¯   r   r   r   ú<module>r·      sþ   ððð ð #Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø €€€à <Ð <Ð <Ð <Ð <Ð <Ø KÐ KÐ KÐ KÐ KÐ KàŒw�Š˜rœwŸ|š|¨B¬G¯OªO¸HÑ,EÔ,EÀtÈTÑRÔRÑSÔS€ð8!ð 8!ð 8!ðvM$ð M$ð M$ð`ð ð ð06ð 6ð 6ð 6ð 6r   